基本原理
QinQ是指在802.1Q VLAN的基础上增加一层802.1Q VLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。
如图6-1所示,用户网络A和B的私网VLAN分别为VLAN 1~10和VLAN 1~20。运营商为用户网络A和B分配的公网VLAN分别为VLAN 3和VLAN 4。当用户网络A和B中带VLAN Tag的报文进入运营商网络时,报文外面就会被分别封装上VLAN 3和VLAN 4的VLAN Tag。这样,来自不同用户网络的报文在运营商网络中传输时被完全分开,即使这些用户网络各自的VLAN范围存在重叠,在运营商网络中传输时也不会产生冲突。当报文穿过运营商网络,到达运营商网络另一侧PE设备后,报文会被剥离运营商网络为其添加的公网VLAN Tag,然后再传送给用户网络的CE设备。
QinQ报文封装格式
QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签,即QinQ可以多层叠加。
QinQ报文比802.1Q报文多四个字节,因此建议用户在组网时适当增加运营商网络中各接口的最大帧长(至少为1504 字节)。目前交换机缺省支持的最大帧长超过1504字节,不需要手动配置。有关接口最大帧长的相关配置,请参见“配置接口允许通过的超大帧长度”。
QinQ的实现方式
QinQ的实现方式可分为以下两种:
- 基本QinQ基本QinQ是基于端口方式实现的。当端口上配置了基本QinQ功能后,不论从该端口收到报文是否带有VLAN Tag,设备都会为该报文打上本端口缺省VLAN的Tag。
- 如果收到的是带有VLAN Tag的报文,该报文就成为带双Tag的报文。
- 如果收到的是不带VLAN Tag的报文,该报文就成为带有本端口缺省VLAN Tag的报文。
- 灵活QinQ灵活QinQ是基于端口与VLAN相结合的方式实现的,即端口对接收的报文,可以通过单层VLAN tag转发,也可以通过双层VLAN tag转发。另外对于从同一个端口收到的报文,还可以根据VLAN的不同进行不同的操作,包括:
- 为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
- 根据报文内层VLAN的802.1p优先级标记外层VLAN的802.1p优先级和添加不同的外层VLAN Tag。
通过使用灵活QinQ技术,在能够隔离运营商网络和用户网络的同时,又能够提供丰富的业务特性和更加灵活的组网能力。
QinQ封装
QinQ封装是指如何把单层Q报文转换成双层Q报文。
根据不同的封装数据,QinQ可以分为几种不同类型,包括基本QinQ和灵活QinQ两大类。其中基本QinQ是指基于接口的QinQ,灵活QinQ是指基于VLAN ID的灵活QinQ,具体如下:
基于接口的QinQ封装
基于接口的QinQ封装是指进入一个接口的所有以太网帧全部封装一个相同的外层VLAN Tag,这种封装方式也称作QinQ二层隧道。
基于VLAN ID的QinQ封装
基于VLAN ID的QinQ封装可以给用户报文打上相应的外层Tag,以达到区分不同用户的目的,因此这种封装方式也称作灵活QinQ。
基于MQC的QinQ封装
基于MQC的QinQ封装对数据首先进行流分类,然后对于符合条件的数据流进行外层封装,因此这种封装方式也称作灵活QinQ。