VLAN和Trunk
之前提到过LAN,那么接下来要讲的是LAN与VLAN (Virtual LAN)的对比,还有在VLAN中用到的Trunk技术。
一个switch能划分一个LAN,同样地一个switch能划分若干个VLAN。
1.LAN
以用户单位来分组,假设我们1, 2, 3三栋大楼和教师,学生,管理员三个角色,那么LAN可以这样划分:

每栋楼分别有三个LAN: Students, Teachers 和 Admins, 同时三个骨干Switch(backbone)分别连着三个LAN,总共需要9个switch+3个骨干switch来完成三栋楼之间的数据传输。
2.VLAN
那么如果划分VLAN的话,情况会是如何呢?
一般划分VLAN有三种形式:
1) 通过switch的端口划分 (Port based VLAN)
2) 通过MAC地址划分 (Mac based VLAN)
3) 通过IP地址划分 (IP-based VLAN)
大部分VLAN使用第一种形式。假设一个switch有8个端口,默认情况下所有端口属于同个VLAN, 默认VLAN的名称叫做VLAN 1。
这时我们新建两个VLAN, VLAN 10是Teachers组,VLAN 20是Students组。

Port 1, 3, 4 分到VLAN10,
Port 2, 5, 6分到VLAN20,
Port 7, 8 先不动。
现在我们有两栋楼,如果要相互通信,有两种办法:
1) 双线连接这两个switch,那么用到了Port 7, 8

这样做的缺点是:每个switch会浪费两个端口(Port 7, 8)来让2个switch中的2个VLAN相互通信,如果有10个VLAN和10个switch, 那么在每个switch上会浪费10个端口。
2)使用802.1q
802.1q标准:加入一个包含VLAN信息的tag在帧中。

Note: 1 byte = 8 bits
802.1Q标签头包含了:
a) TPID: 2bytes 的802.1q 标签协议标识
b) TCI: 2bytes 的标签控制信息,其中包含:
-3bits 的用户优先级(User Priority 或 Priority Code Point),
-1bit 的规范格式指示符(CFI)
-12bits 的VLAN 识别符(VLAN ID)。
下面,让我们看看Trunk链路在802.1q标准下的帧是怎样传输的:

假设现在A向B发送数据,则发送帧的格式为:

绿色部分就是上文提到过的tag 802.1q ,其中
a) 0x8100 : tag 802.1q的ID
b) PCP : 用户帧的优先级,相当于QoS, 比如语音帧的优先级一般大于数据帧。
c) CFI : 规范格式指示符
d) 10 : 因为A的端口属于VLAN10, 所以A所在的switch添加了“10”。
除了Port 8 为trunk端口外, 所有默认端口均为access端口, 那么有以下一般规则:
a) 从Access端口进入,然后从Access端口发出;则进入是带上vlan tag,发出时去掉vlan tag;
b) 从Access端口进入,然后从Trunk端口发出;则进入时带上vlan tag,发出时保留vlan tag;
c) 从Trunk端口进入,然后从Trunk端口发出;则vlan tag无变化,进来什么样出去还是什么样;
d) 从Trunk端口进入,然后从Access端口发出;则进入时无变化,出去时去掉vlan tag;
Last updated
Was this helpful?