Skip to main content

QinQ帧格式

QinQ是对802.1Q(VLAN)的扩展,其核心思想是将用户私网VLAN tag封装到公网VLAN tag中,报文带着两层tag穿越服务商的骨干网络,从而为用户提供一种较为简单的二层VPN隧道。QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签,QinQ报文比802.1Q(VLAN)报文多4字节。

QinQ帧格式
        +-----------+-----------+-----------+-----------+-------------+------------------+----------+
        |   DMAC    |   SMAC    |   ETPE    |    TAG    |  LEN/ETYPE  |       Data       |   FCS    |
        |  6 Bytes  |  6 Bytes  |  2 Bytes  |  2 Bytes  |   2 Bytes   |  Variable length | 4 Bytes  |
        +-----------+-----------+-----------+-----------+-------------+------------------+----------+
                                |                       |
                              |     |                      |
                           |            |                      |
                        |                   |                       |
                        |                       |                       |
+-----------+-----------+-----------+-----------+-----------+-----------+-------------+------------------+----------+
|   DMAC    |   SMAC    |   ETPE    |    TAG    |   ETPE    |    TAG    |  LEN/ETYPE  |       Data       |   FCS    |
|  6 Bytes  |  6 Bytes  |  2 Bytes  |  2 Bytes  |  2 Bytes  |  2 Bytes  |   2 Bytes   |  Variable length | 4 Bytes  |
+-----------+-----------+-----------+-----------+-----------+-----------+-------------+------------------+----------+
                        |           |           |
                     |           |                    |
                  |           |                            |
               |           |                                       |
               +-----------+--------------+---------+--------------+
               |   0x8100  |   Priority   |   CFI   |  VLAN ID     |
               +-----------+--------------+---------+--------------+
QinQ帧字段
字段 长度 含义
DMAC 6字节 目的MAC地址,该字段标识帧的接收者。
SMAC 6字节 源MAC地址,该字段标识帧的发送者。
TPID 2字节 TPID(Tag Protocol Identifier,标签协议标识)表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。对于内层的802.1Q Tag,该值设置为0x8100;对于外层的802.1Q Tag,不同厂商所使用的值可能不相同:0x8100:Huawei路由器使用0x88A8:802.1ad规定外层802.1Q Tag中的TPID为0x88a80x9100:Juniper路由器使用0x9200:Several路由器使用在使用VRP®(Versatile Routing Platform)软件的华为设备上,外层802.1Q Tag缺省情况下值为0x8100,可以通过命令行调整该值。
PRI 3比特 Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。当网络拥塞时,优先级高的数据包优先发送。
CFI/DEI 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(LAN ID),长度为12比特,表示该帧所属的VLAN。在使用VRP®(Versatile Routing Platform)软件的华为设备上,可配置的VLAN ID取值范围为1~4094。协议规定0和4095为保留的VLAN ID。
Length/Type 2字节 该字段有两种含义:Length:如果该字段值小于或等于二进制1500(或十六进制0x05DC)时,该字段指后续数据的字节长度,但不包括FCS字段。Type:如果该字段值大于或等于二进制1536(或十六进制0x0600)时,该字段指链路直接封装的上层协议类型。
Data 42~1500字节 QinQ帧的负载(可能包含填充位)。QinQ帧的长度必须为整数字节,因此帧的负载长度不足整数字节,需插入填充字段以保证数据帧的长度为整数字节。说明:IEEE 802.1Q和IEEE 802.1ad标准中并没有定义QinQ帧的最小长度和最大长度。
CRC 4字节 帧校验序列FCS(Frame Check Sequence)是为接收网卡提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。

参考标准

标准 描述
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