HCNA学习笔记-VLAN
1、VLAN的作用
广播域越大,网络安全问题和垃圾流量问题就会越严重。为此人们引入了VLAN技术:通过在交换机上部署VLAN,可以将一个规模较大的广播域在逻辑上划分为若干个不同的、规模较小的广播域,由此便可以有效地提升网络的安全性,同时减少了垃圾流量,节约了网络资源。
VLAN(Virtual Local Area Network,Virtual LAN)一词中,LAN是一个转意词,用来专门指代一个广播域,而不再强调它是一个地理覆盖范围较小的局域网。谈论VLAN技术时,我们通常把划分前的、规模较大的广播域成为LAN,而把划分后、规模较小的每一个广播域成为一个Virtual LAN或VLAN。
在一个广播域内,任何两台终端计算机之间都可以进行二层(数据链路层)通信。所谓二层通信,是指通信的双方是以直接交换帧的方式来传递信息的。也就是说,目的计算机所接收到的帧与源计算机发出的帧是一模一样的,帧的目的MAC地址、源MAC地址、类型值、载荷数据、CRC等内容都没有发生任何改变。二层通信方式中,信息源发送的帧可能会通过交换机进行二层转发,但一定不会经过路由器(或具有三层转发功能的交换机)进行三层转发。
源计算机在向目的计算机传递信息时,如果源计算机发出的帧经过了路由器(或三层交换机)的转发,目的计算机接收到的帧就一定不是源计算机发出的那个帧。至少,目的计算机接收到的帧的目的MAC地址和源MAC地址一定不是源计算机发出的帧的目的MAC地址和源MAC地址。这种情况下,源计算机与目的计算机之间的通信就不再是二层通信,而是三层通信。
一个VLAN就是一个广播域,所以在同一个VLAN内部,计算机之间的通信就是二层通信。如果计算机位于不同的VLAN中,那么它们之间是无法进行二层通信的,只能进行三层通信。
计算机本身是不能感知VLAN的,在计算机的“头脑”中完全没有VLAN的概念,在计算机上也不会进行任何有关VLAN的配置。
2、802.1Q帧的格式
IEEE802.1Q定义了关于支持VLAN特性的交换机的标准规范。交换机在识别一个帧是术语哪个VLAN的时候,可以根据这个帧是从哪个端口进入自己的来进行判定,也可能需要根据别的信息来进行判定。通常,交换机识别出某个帧是属于哪个VLAN后,会在这个帧的特定位置上添加上一个标签(Tag),这个Tag明确地表明了这个帧是属于哪个VLAN的。这样,别的交换机收到这个带Tag的帧后,就能根据Tag信息识别出这个帧是属于哪个VLAN的。
IEEE802.1Q定义了这种带Tag的帧的格式,满足这种格式的帧称为IEEE802.1Q帧。
802.1Q帧格式
6bytes | 6bytes | 4bytes | 2bytes | 46~1500bytes | 4bytes |
---|---|---|---|---|---|
目的MAC | 源MAC | 802.1Q Tag | 长度或类型 | 数据 | FCS |
802.1Q Tag
2bytes | 3bits | 1bit | 12bits |
---|---|---|---|
TPID | PRI | CFI | VID |
802.1Q Tag中各个字段的含义
字段 | 长度 | 名称 | 解释 |
---|---|---|---|
TPID | 2bytes | Tag Protecol ID,表示这个帧是否带有Tag | TPID取值为0x8100,表示该帧是带Tag的帧;否则表示该帧是传统的、不带Tag的帧。 |
PRI | 3bits | Priority,表示帧的优先级 | 取值范围为0~7,值越大优先级越高。用于当交换机阻塞时,先发送优先级较高的帧 |
CFI | 1bit | Canonical Format Indicator | |
VID | 12bits | VLAN Identifier,表示该帧所属的VLAN | VLAN ID取值范围是0~4095.由于0和4095是协议保留取值,因此VLAN ID的有效取值范围是1~4094 |
计算机的头脑中是没有任何关于VLAN的概念的,计算机不会产生并发送Tagged帧。如果计算机接收到了一个Tagged帧,由于它识别不出0x8100的含义,于是会直接将这个Tagged帧丢弃。
3、VLAN的类型
计算机发送的帧都是不带Tag的,对于一个支持VLAN特性的交换网络来说,当计算机发送的Untagged帧一旦进入交换机后,交换机必须通过某种划分原则把这个帧划分到某个特定的VLAN中去。根据划分原则的不同,VLAN便有了不同的类型:
(1)基于端口的VLAN(Port-based VLAN)
划分原则:将VLAN ID配置映射到交换机的物理端口上,从某一物理端口进入交换机的、由终端计算机发送的Untagged帧都被划分到该端口的VLAN ID所表明的那个VLAN。
基于端口的VLAN通常也称为物理层VLAN,或一层VLAN。
(2)基于MAC地址的VLAN(MAC-based VLAN)
划分原则:交换机内部建立并维护了一个MAC地址与VLAN ID的对应表,当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中。基于MAC地址的VLAN通常也称为二层VLAN。
(3)基于协议的VLAN(Protocol-based VLAN)
划分原则:交换机根据计算机发送的Untagged帧中的帧类型字段的值来决定帧的VLAN归属。例如,可以将类型值为0x0800的帧划分到一个VLAN,将类型值为0x86dd的帧划分到另一个VLAN。这实际上是将载荷数据为IPv4 Packet的帧和载荷数据为IPv6 Packet的帧分别划分到了不同的VLAN。基于协议的VLAN通常也称为三层VLAN。
4、链路类型和端口类型
每一个交换机的端口(无论是Access端口还是Trunk端口)都应该配置一个PVID(Port VLAN ID),到达这个端口的Untagged帧将一律被交换机划分到PVID所指代的VLAN。
链路上运动的帧,可能是Tagged帧,也可能是Untagged帧。但一台交换机内部不同端口之间运动的帧则一定是Tagged帧。
端口对于帧的处理和转发规则:
(1)Access端口
当Access端口从链路上收到一个Untagged帧后,交换机会在这个帧中添加上VID为PVID的Tag,然后对得到的Tagged帧进行转发操作(泛洪,点到点转发,丢弃)。
当Access端口从链路上收到一个Tagged帧后,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则对这个Tagged帧进行转发操作(泛洪,点到点转发,丢弃);如果不同,则直接丢弃这个Tagged帧。
当一个Tagged帧从本交换机的其他端口到达一个Access端口后,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则将这个Tagged帧的Tag进行剥离,然后得到的Untagged帧从链路上发送出去;如果不同,则直接丢弃这个Tagged帧。
(2)Trunk端口
对于每一个Trunk端口,除了要配置PVID 之外,还必须配置允许通过的VLAN ID列表。
当Trunk端口从链路上收到一个Untagged帧后,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在允许通过的VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作(泛洪、点到点转发,丢弃);如果不在,则直接丢弃。
当Trunk端口从链路上收到一个Tagged帧后,交换机会查看这个帧的Tag中的VID是否在允许通过的VLAN ID列表中。如果在,则对该Tagged帧进行转发操作(泛洪、点到点转发、丢弃);如果不在列表中,则直接丢弃该Tagged帧。
当一个Tagged帧从本交换机的其他端口到达一个Trunk端口后,如果这个帧的Tag中的VID不在允许通过的VLAN ID列表中,则该Tagged帧会被直接丢弃。如果这个帧的Tag中的VID在允许通过的VLAN ID列表中,且VID 与PVID相同,则交换机会对这个帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去。若VID与PVID不同,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它发送出去。
(3)Hybrid端口
Hybrid端口除了需要配置PVID外,还需要配置Untagged VLAN ID 列表和Tagged VLAN ID列表。这两个VLAN ID列表中的所有VLAN的帧都是允许通过这个Hybrid端口的。
当Hybrid端口从链路上收到一个Untagged帧后,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在Untagged列表或Tagged列表中。如果在,则转发(泛洪、点到点转发,丢弃);如果不在,则丢弃。
当Hybrid端口从链路上收到一个Tagged帧后,交换机会查看这个帧的Tag中的VID为是否在Untagged列表或Tagged列表中。如果在,则转发(泛洪、点到点转发,丢弃);如果不在,则丢弃。
当一个Tagged帧从本交换机的其他端口到达一个Hybrid端口后,如果这个帧的Tag中VID既不在Untagged列表,也不在Tagged列表中,则丢弃该Tagged帧。
当一个Tagged帧从本交换机的其他端口到达一个Hybrid端口后,如果这个帧的Tag中的VID在Untagged列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去。
当一个Tagged帧从本交换机的其他端口到达一个Hybrid端口后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,交换机会直接将它从链路发送出去,而不会对剥离这个帧的Tag。
Trunk端口和Access端口可以看成是Hybrid端口的特例。当Hybrid端口配置中的Untagged VLAN ID列表中有且只有PVID时,Hybrid端口就等效于一个Trunk端口;当Hybrid端口配置中的Untagged VLAN ID列表中有且只有PVID,并且Tagged VLAN ID列表为空时,Hybrid端口就等效于一个Access端口。