VLAN 在帧里加 4 个字节的标签,把一台物理交换机切成多台逻辑交换机。 它的第一价值不是安全,是「别把自己淹死」——广播域太大,终端处理不过来。
上一节讲「多条路」,这一节讲「分成几张网」。这是 L2 交换机最重要的一个功能。 这一节要算:可用 VLAN 数、标签带来的帧长变化、广播域大小的影响。
一、标签与可用编号
标签 4 个字节,插在源 MAC 后面,让帧从 1518 变成 1522。 VLAN ID 是 12 位,共 4096 个号。
0 表示「没打标签」、4095 保留,所以实际可用 4094 个。再加上 1002 到 1005 是历史保留, 常见设备只保证 1001 个可用。
二、Access 与 Trunk
Access 口:进去打标签、出来撕标签。接终端(终端不认识标签)。 Trunk 口:带标签透传多个 VLAN。接交换机。
这个「打/撕」的动作叫 PVID 处理,是理解 VLAN 的关键: 终端不知道自己属于哪个 VLAN,是端口替它决定的。
所以「把电脑插到错的端口,它就跑到别的网段了」——这是实践中最常见的一类「网络不通」, 而设备上一切正常。
三、广播域为什么必须划小
一个 /24 网段 254 台设备,每台每秒发 1 个 ARP,广播域里就是 254 个每秒。每台都要处理一遍。
4000 台在一个广播域里,每台每秒要处理 4000 个广播——CPU 光处理这个就没空了。
所以 VLAN 划小的第一目的是「性能」,安全是副产品。而且要注意: VLAN 之间隔离,同一 VLAN 内部照样是广播域。
四、动手 Demo:可用 VLAN 数与广播域大小的代价
这段先按「0 与 4095 不能用、1002 到 1005 保留」列出可用范围,再算 254、1000、 4000 台设备同在一个广播域时每台每秒要处理多少广播。
for a, b, c in ((u"0", u"不能", u"表示「没打标签」"),
(u"2~1001", u"能用", u"标准范围"),
(u"1002~1005", u"不能", u"令牌环与 FDDI 保留")):
T([a, b, c], [0, 0, 0])
实跑输出:
--------------------------------------------------------------------
VLAN,一个标签 4 个字节,把一台交换机切成几台
--------------------------------------------------------------------
**VLAN 的思路很直白:在帧里加一个小标签,交换机按标签决定「这帧属于哪一张网」。**
同一台物理交换机,逻辑上变成多台互不相通的交换机。
**标签长 4 个字节,插在源 MAC 后面。**它让帧从 1518 变成 1522 字节。
目的 MAC 6 + 源 MAC 6 + **标签 4** + 类型 2 + 数据 + FCS 4
**标签里的 VLAN ID 是 12 位,所以能编 4096 个号。**
VLAN ID 能不能用 为什么
---------------------------------------------------------------
0 不能 表示「没打标签」,优先级专用
1 能用(默认) 多数设备默认 VLAN
2~1001 能用 标准范围
1002~1005 不能 令牌环与 FDDI 保留
1006~4094 能用 扩展范围,部分老设备不认
4095 不能 保留
**所以实际可用是 4094 个**(4096 减 0 和 4095)。
加上 1002~1005 是保留的,常见设备只保证 1001 个可用。
**两种端口角色,一定要分清**:
角色 怎么处理帧 接什么
-------------------------------------------------------
Access 口 进去打标签、出来撕标签 终端设备
Trunk 口 带标签透传多个 VLAN 交换机之间
**这个「打标签/撕标签」的动作叫 PVID 处理**,是理解 VLAN 的关键:
终端不认识标签,所以 Access 口负责替它加上、替它去掉。**Trunk 口两边都认识标签,所以原样传。**
**算一下 VLAN 能省多少广播**:一个 /24 网段 254 台设备,每台每秒发 1 个 ARP,
广播域里就是 254 个每秒。
254 台在同一广播域:每秒 254 个广播,每台都要处理一遍。
1000 台在同一广播域:每秒 1000 个广播,每台都要处理一遍。
4000 台在同一广播域:每秒 4000 个广播,每台都要处理一遍。
**4000 台在一个广播域里,每台每秒要处理 4000 个广播**——CPU 光处理这个就没空了。
这就是「VLAN 划小广播域」的实际意义,**不是为了安全,首先是为了别把自己淹死。**
**但 VLAN 不隔离广播**这件事要说清:VLAN **之间**隔离,同一 VLAN 内部照样是广播域。
**要跨 VLAN 通信必须过路由器或三层交换机。**
「1002 到 1005 不能」这一行经常被人忽略:很多设备恰恰是在 1002 开始出问题, 而文档上只说「支持 4094 个」。
广播那一组数字要看清楚:254 台时每秒 254 个广播还算温和,4000 台时每秒 4000 个就非常重了。 每个广播都要打断 CPU 一次。
还要注意「同一 VLAN 内部照样是广播域」:划了 VLAN 不等于划了广播域,只是把广播域切小了。 要彻底消除广播得靠三层隔离。
30 秒实验
- 在交换机上看有几个 VLAN。
- 查一个端口的 PVID 是多少。
- 抓包看有没有 0x8100 的帧。
常见误区
- 以为 VLAN 能替代防火墙。它只隔离广播,不控流量。
- VLAN 划得越多越好。管理成本会上去。
- 以为 Access 口不带标签所以不属于任何 VLAN。它属于 PVID 那个。
自测三问(点开对答案)
1. VLAN 标签几个字节,ID 几位? —— 4 个字节,ID 12 位,共 4096 个号。 2. 实际可用的 VLAN 有多少个? —— 4094 个,去掉 0 与 4095;常见设备只保证 1001 个。 3. Access 口与 Trunk 口的区别? —— Access 口进出打/撕标签接终端,Trunk 口带标签透传接交换机。下一节:第六个功能是看流量——端口镜像。
- ☐ (本节完,下一节 02.08.06 端口镜像)