Skip to main content

VLAN帧格式

IEEE 802.1Q标准对以太帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag。802.1Q Tag也称为VLAN Tag,带有VLAN Tag的以太帧称为VLAN帧。

VLAN帧格式
          +-----------+----------+--------+-----------+
          |   TPID    |   PRI    |  CFI   |    VID    |
          |  2 Bytes  |  3 Bits  | 1 Bits |  12 Bits  |
          +-----------+----------+--------+-----------+
          |                                           |
               |                                   |
                   |                          |
                        |              |
+-----------+-----------+--------------+---------------+------+-----------+----------+
|   DMAC    |   SMAC    |  802.1Q Tag  |  Length/Type  |       Data       |   FCS    |
|  6 Bytes  |  6 Bytes  |   4 Bytes    |    2 Bytes    |  Variable length | 4 Bytes  |
+-----------+-----------+--------------+---------------+------+-----------+----------+
|                                                                                    |
             |                                                                     |
                              |                                                 |
                                                    |                      |
+--------------------+-----------------+-------------+---------------------+
|        帧间隙      |      前同步码   |帧开始定界符 |    Ethernet Frame   |
|    至少12Bytes     |    7 Bytes      |   1 Byte    |  Variable length    |
+--------------------+-----------------+-------------+---------------------+
VLAN帧的链路层各字段含义
字段 长度 含义
DMAC 6字节 目的MAC地址,该字段标识帧的接收者。
SMAC 6字节 源MAC地址,该字段标识帧的发送者。
TPID 2字节 TPID(Tag Protocol Identifier,标签协议标识)表示帧类型。说明:根据IEEE 802.1Q标准的定义,取值为0x8100时表示802.1Q Tag(VLAN)帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。根据IEEE 802.1ad的定义,8021.Q Tag可分为S-Tag和C-Tag两种,S-Tag用于标识业务,C-Tag用于标识用户。区分这两种Tag的是TPID,S-Tag的TPID是0x88a8,C-Tag的TPID是0x8100。MEF 26.1(ENNI Specification)标准中规定出ENNI端口的VLAN帧的Tag可以是S-Tag。可见,VLAN帧的TPID值可以是非0x8100。
PRI 3比特 PRI(Priority)表示帧的QoS优先级,取值范围为0~7,值越大优先级越高,该优先级主要为QoS差分服务提供参考依据。当阻塞时,优先发送优先级高的数据包。如果设置用户优先级,但是没有VID(VLAN ID),则VLAN ID必须设置为0x000。
CFI 1比特 CFI (Canonical Format Indicator,标准格式指示),长度为1比特,表示MAC地址是否是标准格式。CFI为0说明是标准格式(以太网帧的MAC地址采用低字节在前),CFI为1表示为非标准格式(以太网帧的MAC地址采用高字节在前)。CFI可用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。DEI(Drop Eligible Indicator,丢弃优先级指示),配合PRI字段使用,共同指示帧的丢弃优先级,也就是系统发生了拥塞时,这些报文会被优先丢弃。说明:IEEE 802.1Q定义了CFI字段,而IEEE 802.1ad标准重新定义了CFI字段,规定S-Tag里面的是DEI,C-Tag里面的是CFI。实际应用中,可以根据需要将此比特位用作CFI或者用作DEI。
VID 12比特 VID(VLAN ID),长度为12比特,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。协议规定0和4095为保留的VLAN ID。有三种VID类型:Untagged帧:VID不计Priority-tagged帧:VID为0x000VLAN-tagged帧:VID范围0~4095三个特殊的VID:0x000:设置优先级但无VID0x001:缺省VID0xFFF:预留VID
Length/Type 2字节 该字段有两种含义:Length:如果该字段值小于或等于二进制1500(或十六进制0x05DC)时,该字段指后续数据的字节长度,但不包括FCS字段。Type:如果该字段值大于或等于二进制1536(或十六进制0x0600)时,该字段指链路直接封装的上层协议类型。
Data 42~1500字节 负载(可能包含填充位)。VLAN帧的长度必须为整数字节,因此帧的负载长度不足整数字节,需插入填充字段以保证数据帧的长度为整数字节。说明:IEEE 802.1Q和IEEE 802.1ad标准中并没有定义VLAN帧的最小长度和最大长度。
FCS 4字节 帧校验序列FCS(Frame Check Sequence)是为接收网卡提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。
 
VLAN帧的物理层各字段含义
字段 长度 含义
帧间隙 至少12字节 每个以太帧之间都要有帧间隙(Inter Frame Gap),即每发完一个帧后要等待一段时间才能再发另外一个帧,以便让帧接收者对接收的帧作必要的处理(如调整缓存的指针、更新计数、通知对报文进行处理等等)。在以太网标准中规定最小帧间隙是12个字节,其数据为全1。对于个别的接口,可减少到64(GE)或40比特(10GE),其他的接口都不应该小于12字节。
前同步码 7字节 以太网标准中规定前导码为10101010 10101010 10101010 10101010 10101010 10101010 10101010(二进制),共7字节。
帧开始定界符 1字节 以太网标准中规定帧开始定界符为10101011(二进制),共1字节。

参考标准

标准 描述
RFC 3069 VLAN Aggregation for Efficient IP Address Allocation
IEEE 802.1Q IEEE Standards for Local and Metropolitan Area Networks : Virtual Bridged Local Area Networks
IEEE 802.1ad IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Networks- Amendment 4