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在帧中。

https://www.ciscomadesimple.be/

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?