IEEE 802.1Q标准(以下简称dot1q)规定了一种基于端口的VLAN划分方法,规定了报文中携带VLAN信息的方法,规定了交换机等支持VLAN的设备对报文的处理过程。

下面对dot1q标准规定的携带VLAN信息的报文格式进行说明。如下图所示,dot1q标准在传统的以太数据帧(在此只介绍以太局域网)的SA MAC地址)和Type/Length字段之间插入了一个TAG字段。

DA(6Bytes) SA(6Bytes) TAG(4Bytes) T/L(2Bytes) DATA CRC(4Bytes)

TAG 字段由4个字节组成,前两个字节为TPIDTAG Protocol Identifier),其值固定为0x8100,表示是dot1q标准的TAG。后两个字节为TCITAG Control Information),它又分为三个部分,图示如下:

1user_priority:用户优先级,占3个比特,可以表示8种不同的优先级,不同优先级的报文可以得到不同级别的服务;

2CFI:规范格式指示符(Canonical Format Indicator),占一个比特,它通常设置为0,表示报文中的MAC地址格式为规范格式(遵循IEEE 802标准,即字节中的比特位顺序与标准一致),如果该位设置为1,则根据网络类型的不同具有不同的意义,具体可以参考dot1q标准文档。

3VID:即VLAN的标志符,占12个比特,表示一个无符号整数,范围从04095,其中0表示报文没有指定的VIDpriority tagged),4095按规定是保留的,不能使用,交换机收到这样的报文不会进行转发,因此可用的VID范围为14094,这其中VID 1又规定为默认VLAN,在用户没有配置的情况下,设备的出厂配置是所有端口属于VLAN 1,端口的默认VID也是VLAN 1



IEEE 802.1q协议也就是“Virtual Bridged Local Area Networks”(虚拟桥接局域网,简称“虚拟局域网”)协议,主要规定了VLAN的实现方法。IEEE 802.1q协议为标识带有VLAN成员信息的以太帧建立了一种标准方法。IEEE802.1q标准定义了VLAN网桥操作,从而允许在桥接局域网结构中实现定义、运行以及管理VLAN拓朴结构等操作。IEEE 802.1q标准主要用来解决如何将大型网络划分为多个小网络,如此广播和组播流量就不会占据更多带宽的问题。此外IEEE 802.1q标准还提供更高的网络段间安全性。IEEE802.1q完成这些功能的关键在于标签。支持IEEE 802.1q的交换端口可被配置来传输标签帧或无标签帧。一个包含VLAN信息的标签字段可以插入到以太帧中。如果端口有支持IEEE 802.1q的设备(如另一个交换机)相连,那么这些标签帧可以在交换机之间传送VLAN成员信息,这样VLAN就可以跨越多台交换机。但是,对于没有支持IEEE 802.1q设备相连的端口我们必须确保它们用于传输无标签帧,这一点非常重要。很多PC和打印机的NIC并不支持IEEE 802.1q,一旦它们收到一个标签帧,它们会因为读不懂标签而丢弃该帧。
Tag为IEEE802.1Q协议定义的VLAN的标记在数据帧中的标示;ACCESS端口,TRUNK端口是厂家对某一种端口的叫法,并非IEEE802.1Q协议的标准定义;以下是IEEE802.1Q协议对TAG的处理过程:
IEEE802.1Q协议对TAG的处理表
1 、所谓的Untagged Port和tagged Port不是讲述物理端口的状态,而是物理端口所拥有的某一个VID的状态,所以一个物理端口可以在某一个VID上是Untagged Port,在另一个VID上是tagged Port;
2 、一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID的TAG等同的VID,而且在这个VID上,这个物理端口必定是Untagged Port;
3 、PVID的作用只是在交换机从外部接受到可以接受Untagged 数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用;
4、拥有和TAG标记一致的VID的物理端口,不论是否在这个VID上是Untagged Port或者tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的tagged数据帧;
5、拥有和TAG标记一致的VID的物理端口,只有在这个VID上是tagged Port,才可以接受来自交换机外部的标记了这个TAG标记的tagged数据帧;