概述
为了使设备能够识别不同VLAN的报文,IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag(又称VLAN Tag,简称Tag)。帧格式如图1-1所示。在Tag中有一个VID(VLAN ID)字段,用于表示帧所在的VLAN。并非所有设备都能识别携带Tag的802.1Q帧,因此在VLAN网络中以太网帧有Tagged和Untagged两种形式,分别表示携带和不携带802.1Q Tag。
● Type:2字节,0x8100代表802.1Q帧;不支持802.1Q的设备收到此类帧时将其丢弃。
● PRI:3bit,表示二层优先级;取值范围为0~7,对应QoS的CoS优先级,值越大优先级越高。
● CFI:1bit,用于区分以太网帧、FDDI帧和令牌环网帧;0表示以太网帧。
● VID:12bit,表示VLAN ID,即报文所属VLAN;VLAN ID的有效取值范围为1~4094,0和4095是预留值,不能使用。
1、VLAN Tag的处理原则
支持VLAN的交换设备根据接口类型和链路类型,对收发的以太网数据帧进行添加或剥除VLAN Tag的处理。下面先介绍接口类型和链路类型,以便了解VLAN Tag的处理机制。
接口类型
接口可分为二层接口和三层接口,只有二层接口可以加入VLAN。锐捷网络支持4种二层接口类型:Access、Trunk、Hybrid以及Uplink。四种接口类型具备不同的接口连接对象以及数据帧处理方式,以满足不同的组网环境需求。通过配置一个接口的二层接口类型,可确定此接口许可通过的VLAN,此接口转发报文是否携带Tag。
Access
一个Access口可以属于且仅属于一个VLAN,只许可此VLAN的帧通过,此VLAN称为Access VLAN
Access VLAN同时具有Native VLAN和许可VLAN的属性
Access口发出的帧都不携带Tag,若Access口收到对端设备发送的Untagged帧,则判断该帧属于Access VLAN,并在内部强制加上Access VLAN ID
Trunk
一个Trunk口可以有一个Native VLAN和若干个许可VLAN,Trunk口转发Native VLAN的帧不携带Tag,转发许可VLAN的帧携带Tag
注意,连接链路两端的Trunk口必须配置相同的Native VLAN
Uplink
一个Uplink口可以有一个Native VLAN和若干个许可VLAN,Uplink口发出的帧都携带Tag
Hybrid
一个Hybrid口可以有一个Native VLAN和若干个许可VLAN,许可VLAN分为Tagged VLAN和Untagged VLAN,Hybrid口转发Tagged VLAN的帧携带Tag,转发Untagged VLAN的帧不携带Tag,因为Hybrid口转发Native VLAN的帧不能携带Tag,所以Native VLAN只能属于Untagged VLAN列表
链路类型
VLAN链路包括接入链路和干道链路两种。
● 接入链路是连接用户终端和交换设备接口之间的链路。虽然有的终端可以识别携带VLAN Tag的帧,但是通常情况下,终端硬件不能识别携带VLAN Tag的帧。因此一般情况下,在接入链路上传输Untagged帧,以便兼容不同终端。
● 干道链路可以承载多个不同VLAN的数据,必须保证数据帧在干道链路传输时干道链路两端的设备能够识别数据帧的所属VLAN。根据接口类型的不同,可以传输Untagged帧或Tagged帧。比如Trunk口之间用Untagged帧传输Native VLAN的帧,用Tagged帧传输Native VLAN以外的许可VLAN的帧。干道链路两端的Trunk口需要确保其Native VLAN配置相同。
Access口只能连接接入链路。Hybrid口既能连接接入链路,也能连接干道链路。Trunk口和Uplink口只能连接干道链路。
2、VLAN Tag的处理机制
支持VLAN的交换设备,报文在设备内部转发过程中都是带VLAN Tag的。在发送给交换芯片处理之前,或者交换芯片发送给接口时会根据接口的设置添加或去掉VLAN Tag。
收帧机制
接口收到Untagged帧时,认为帧属于本接口的Native VLAN,若Native VLAN属于许可VLAN则允许报文进入,并标识为Native VLAN的帧;若Native VLAN不属于许可VLAN则丢弃报文。
接口收到Tagged帧时,如果接口许可Tag标识的VLAN报文通过则接收,不许可则丢弃。
发帧机制
报文在交换设备内部已完成了转发,只需要根据许可VLAN的类型(Untagged VLAN或Tagged VLAN),决定发帧时是否携带Tag。
3、举例
作为VLAN通信的技术要点之一,VLAN Tag的添加和剥除涉及了较复杂的处理原则与机制,下面以一个VLAN的典型应用场景简述各层设备对VLAN Tag的实际处理行为。
终端设备
工作在应用层的终端设备,如大部分的PC,不支持在报文中添加VLAN Tag,例如上图中处于不同VLAN下的Host 2、Host 13设备,向上级的交换设备Device A发送的都是Untagged数据帧。
交换设备
(1)下联口
交换设备Device A将下联终端设备的接口(即上图中的G0/2-12、G0/13-24口)设置为Access口,并分别加入VLAN10、VLAN20,一个Access口可以属于且仅属于一个VLAN,只许可此VLAN的帧通过,此VLAN称为Access VLAN。交换设备接收下联终端设备的Untagged数据帧,发送往下联终端设备的数据帧也是剥除了VLAN Tag的Untagged数据帧。
(2)上联口
将交换设备Device A与其上联交换设备Device D的连接口(即上图中Device A的G0/1口和Device D的G0/2口)都设置为Trunk口,并设置许可VLAN都为VLAN10、VLAN20。Device B、C与其上联接口的配置与Device A类似。
终端设备Host 13与其他同处于VLAN 20下的设备通信时,首先向上级的交换设备Device A发送Untagged数据帧,Device A往报文中添加其所属的VLAN 20的Tag,而后发往许可VLAN匹配的接口G0/1口。Device D的G0/2口在接收到该Tagged数据帧后,继续发往许可VLAN匹配的接口(如Device D的G0/3口、G0/4口),到达交换设备Device B、Device C后,剥除VLAN Tag发送给其下联终端设备。
3、总结
支持VLAN的交换设备通过对VLAN Tag的识别,判断要进行通信的设备是否处于同一VLAN内,让物理位置不同的设备可以处于同一个逻辑网段内进行通信。从另一方面来看,支持VLAN的交换设备通过对VLAN Tag的识别,也可以将同一VLAN下的数据帧限制在该逻辑网段内进行传播,避免对其他网段造成干扰。