
Vlanの原理
前置:
以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。在这种情况下出现了VLAN (Virtual Local Area Network)技术解决以上问题。
什么是VLAN?
要想知道什么是VLAN,那我们要从我们为什么需要VLAN看起。这是一个典型的交换网络,网络中只有终端计算机和交换机。
广播帧的泛洪:
在这样的网络中,如果某一台计算机发送了一个广播帧,由于交换机对广播帧执行泛洪操作,结果所有其他的计算机都会收到这个广播帧
我们把广播帧所能到达的整个访问范围称为二层广播域,简称广播域 (Broadcast Domain)。显然,一个交换网络其实就是一个广播域
网络安全问题和垃圾流量问题:
如图:如果PC1向PC2发送了一个单播帧。此时SW1、SW3、SW7的MAC地址表中存在关于PC2的MAC地址表项,但SW2和SW5不存在关于PC2的MAC地址表项。那么,SW1和SW3将对该单播帧执行点对点的转发操作,SW7将对该单播帧执行丢弃操作,SW2和SW5将对该单播帧执行泛洪操作。最后的结果是,PC2虽然收到了该单播帧,但网络中的很多其他非目的主机,同样收到了不该接收的数据帧
如此看来,广播域越大,网络安全问题和垃圾流量问题就越严重。此时就需要引入VLAN (Virtual Local Area Network),即虚拟局域网技术。
VLAN的工作原理:
想要知道VLAN是怎么工作的,我们要从VLAN的数据帧入手。这是一张原始以太网数据帧(untagged帧)和802.1q帧(tagged帧)的对比图
从图上看,两者之间有一个Tag的差距,这个Tag由TPID、PRI、CFI、VLAN ID构成
TPID:2字节,Tag Protocol Identifier(标签协议标识符),表示数据帧类型。取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃,各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时,为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致比如说:TPID是0x8100,就像在信封上写了“这是一个重要的文件”,告诉交换机需要特别处理这封信
PRI:3 bit,Priority,表示数据帧的优先级,用于QoS。取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧,比如说:如果你把不同的重要性文件放在不同的优先级信封里,PRI就是这标记系统的一部分。比如,优先级为7的信封会被更快处理,而优先级为0的信封处理得更慢
CFI:1 bit,Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网,CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装,在以太网中,CFI的值为0(因为以太网标准已经是符合规范的格式),比如说:CFI就像在信封上打的一个小标记,告诉收件方这个信封的格式是否是标准的。如果标记为0,表示这个信封完全符合标准;如果标记为1,表示它有一些不符合标准的地方
补充:计算机无法识别Tagged数据帧,因此计算机处理和发出的都是Untagged数据帧;为了提高处理效率,交换机内部处理的数据帧一律都是Tagged帧
VLAN的划分方法:
- 基于接口划分
- 基于MAC地址划分
- 基于IP子网划分
- 基于协议划分
- 基于策略划分
基于接口划分:
- 划分原则:将VLAN ID配置到交换机的物理接口上,从某一个物理接口进入交换机的、由终端计算机发送的Untagged数据帧都被划分到该接口的VLAN ID所表明的那个VLAN。
- 特点:这种划分原则简单而直观,实现容易,是目前实际的网络应用中最为广泛的划分VLAN的方式。当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属可能会发生变化。
缺省VLAN,PVID (Port VLAN ID):每个交换机的接口都应该配置一个PVID,到达这个端口的Untagged帧将一律被交换机划分到PVID所指代的VLAN。默认情况下,PVID的值为1
拿S5700的GE0/0/1为例
1 | [Huawei]vlan batch x #创建VLAN x(1-4094) |
基于MAC地址划分:
划分原则:
- 交换机内部建立并维护了一个MAC地址与VLAN ID的对应表。当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中。
- 特点:这种划分实现稍微复杂,但灵活性得到了提高。当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属不会发生变化(因为计算机的MAC地址没有变)。但这种类型的VLAN划分安全性不是很高,因为恶意计算机很容易伪造MAC地址。
以太网二层接口类型:
- Access 接口
- Trunk 接口
- Hybrid 接口
Access 接口:
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。仅允许VLAN ID与接口PVID相同的数据帧通过
Access接口接收数据帧过程
- 当Access接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后对得到的Tagged帧进行转发操作(泛洪、转发、丢弃)。
- 当Access接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则对这个Tagged帧进行转发操作;如果不同,则直接丢弃这个Tagged帧
Access接口发送数据帧:
- 当一个Tagged帧从本交换机的其他接口到达一个Access接口后,交换机会检查这个帧的Tag中的VID是否与PVID相同
如果相同,则将这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
如果不同,则直接丢弃这个Tagged帧
Trunk 接口:
对于Trunk接口,除了要配置PVID外,还必须配置允许通过的VLAN ID列表,其中VLAN 1是默认存在的。
Trunk接口特点:
- Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过。
- Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
Trunk接口接收数据帧:
当Trunk接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在允许通过的
VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧。
当Trunk接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在允许通过的VLAN ID列表中。如果在,则对
这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧。
Trunk接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID不在允许通过的VLAN ID列表中,则该
Tagged帧会被直接丢弃。
当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID在允许通过的VLAN ID列表中,则会比较该Tag中的VID是否与接口的PVID相同:
如果相同,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
如果不同,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去
Hybrid 接口:
对于Hybrid接口,除了要配置PVID外,还存在两个允许通过的VLAN ID列表,一个是Untagged VLAN ID列表,另一个是Tagged VLAN ID列表,其中VLAN 1默认在Untagged VLAN列表中。这两个允许通过列表中的所有VLAN的帧都是允许通过这个Hybrid接口的
Hybrid接口特点:
- Hybrid接口仅允许VLAN ID在允许通过列表中的数据帧通过
- Hybrid接口可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag、某些VLAN的帧不带Tag。
- 与Trunk最主要的区别就是,能够支持多个VLAN的数据帧,不带标签通过
Hybrid接口接收数据帧:
当Hybrid接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在Untagged或Tagged VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧
当Hybrid接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在Untagged或Tagged VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧
Hybrid接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID既不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去
总结:

各类接口添加或剥除VLAN标签的处理过程总结如下:
当接收数据帧时:
当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收
当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收
当发送数据帧时:
Access接口直接剥离数据帧中的VLAN标签
Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签
Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签
因此,Access接口发出的数据帧肯定不带Tag;Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签;Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag
后记:
这篇从什么是VLAN到VLAN的工作原理的笔记,作者写的非常难受,因为太理论了,想要写得通俗易懂得非常耗功夫,而且随着上的课越来越多,想要写的Note也越来越多,一直在咕,所以理论的东西我直接在我上课的笔记里COPY出来了。正常来说应该有个配套示例,最近事多又累,等什么时候想起来了补一下。