定义
QinQ(802.1Q-in-802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能,可以使私网VLAN透传公网。由于在骨干网中传递的报文有两层802.1Q Tag(一层公网Tag,一层私网Tag),即802.1Q-in-802.1Q,所以称之为QinQ协议。
如下图所示用户报文在公网上传递时携带了两层Tag,内层是私网Tag,外层是公网Tag。
目的
随着以太网技术在网络中的大量部署,利用802.1Q VLAN对用户进行隔离和标识受到很大限制。因为IEEE802.1Q中定义的VLAN Tag域只有12个比特,仅能表示4096个VLAN,无法满足以太网中标识大量用户的需求,于是QinQ技术应运而生。
QinQ是通过在原有的802.1Q报文的基础上增加一层802.1Q标签来实现的,使得VLAN数量增加到4094×4094,扩展了VLAN空间。
随着以太网的发展以及精细化运作的要求,QinQ的双层标签又有了进一步的使用场景。它的内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ报文带着两层Tag穿越公网时,内层Tag透明传送,也是一种简单、实用的VPN技术。因此它又可以作为核心MPLS VPN在以太网VPN的延伸,最终形成端到端的VPN技术。
优点
- 扩展VLAN,对用户进行隔离和标识不再受到限制。
- QinQ内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务,更利于业务的部署。
- QinQ封装、终结的方式很丰富,帮助运营商实现业务精细化运营。
- 解决日益紧缺的公网VLAN ID 资源问题
- 用户可以规划自己的私网VLNA ID
- 提供一种较为简单的二层VPN解决方案
- 使用户网络具有较高的独立性
QinQ封装结构
QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VLAN标签构成。
字段解释
QinQ抓包示例
QinQ工作原理
在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。即使私网VLAN Tag相同,也能通过公网VLAN Tag区分不同用户。
企业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标签。这样,来自不同企业网络的报文在公网中传输时被完全分开,即使这些企业网络各自的VLAN范围存在重叠,在公网中传输时也不会产生冲突。当报文穿过公网,到达公网另一侧PE设备后,报文会被剥离公网为其添加的公网VLAN标签,然后再传送给用户网络的CE设备。
1.QinQ封装
QinQ封装是指如何把单层Q报文转换成双层Q报文。根据不同的封装数据,QinQ可以分为几种不同类型,包括基本QinQ和灵活QinQ两大类。其中基本QinQ是指基于接口的QinQ,灵活QinQ包括基于VLAN ID的QinQ和基于802.1p优先级的QinQ,具体如下:
(1) 基于接口的QinQ封装
基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作基本QinQ。
(2) 基于VLAN ID的QinQ封装(灵活QinQ)
基于VLAN ID的QinQ封装可以对不同的数据流选择是否封装外层Tag、封装何种外层Tag,因此这种封装方式也称作灵活QinQ。
例如:当同一用户的不同业务使用不同的VLAN ID时,可以根据VLAN ID区间进行分流。假设PC上网的VLAN ID范围是101~200;IPTV的VLAN ID范围是201~300;VoIP的VLAN ID范围是301~400。根据VLAN ID范围,对PC上网业务封装上外层Tag 100,对IPTV封装上外层Tag 300,对VoIP封装上外层Tag 500。
(3) 基于802.1p优先级的QinQ封装(基于流的灵活QinQ)
基于802.1p优先级的QinQ封装可以对不同优先级的数据流选择是否封装外层Tag、封装何种外层Tag,因此这种封装方式也称作灵活QinQ。
例如:当同一用户的不同业务使用不同的优先级,如语音、视频、数据等。可以根据优先级为这些业务建立不同的数据传输通道,方便对业务进行区分。
2.TPID(Tag Protocol Identifier)
标签协议标识TPID(Tag Protocol Identifier)是VLAN Tag中的一个字段,表示VLAN Tag的协议类型,IEEE 802.1Q协议规定该字段的取值为0x8100。
IEEE802.1Q协议定义的以太网帧的VLAN Tag。802.1Q Tag位于SA(Source Address)和Length/Type之间。通过检查对应的TPID值,设备可确定收到的帧承载的是运营商VLAN标记还是用户VLAN标记。接收到帧之后,设备将配置的TPID值与帧中TPID字段的值进行比较。如果二者匹配,则该帧承载的是对应的VLAN标记。例如,如果帧承载TPID值为0x8100的VLAN标记,而用户网络VLAN标记的TPID值配置为0x8200,设备将认为该帧没有用户VLAN标记。也就是说,设备认为该帧是Untagged报文。
另外,不同运营商的系统可能将QinQ帧外层VLAN标记的TPID设置为不同值。为实现与这些系统的兼容性,可以修改TPID值,使QinQ帧发送到公网时,承载与特定运营商相同的TPID值,从而实现与该运营商设备之间的互操作性。以太网帧的TPID与不带VLAN标记的帧的协议类型字段位置相同。为避免在网络中转发和处理数据包时出现问题,不可将TPID值设置为下表中的任意值:
**QinQ实现方式 **
1.基本QinQ
基本QinQ是基于端口方式实现的。开启端口的基本QinQ功能后,当该端口接收到报文,设备会为该报文打上本端口缺省VLAN 的VLAN Tag。如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文;如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省VLAN Tag的报文。
基于端口的QinQ的缺点是外层VLAN Tag封装方式固定,不能根据业务种类选择外层VLAN Tag封装的方式,从而很难有效支持多业务的灵活运营。
基本QinQ的报文处理过程:
- SW1收到VLAN ID为10和20的报文,将该报文发给SW2。
- SW2收到该报文后,在该报文原有Tag的外侧再添加一层VLAN ID 为100的外层Tag。
- 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。
- SW3收到VLAN100的报文后,剥离报文的外层Tag(VLAN ID 为100)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。
- SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发。
基本QinQ的报文处理过程
2.灵活QinQ
灵活QinQ(Selective QinQ)可根据流分类的结果选择是否打外层VLAN Tag,打上何种外层VLAN Tag。灵活QinQ可根据用户的VLAN标签、优先级、MAC地址、IP协议、IP源地址、IP目的地址、或应用程序的端口号进行流分类。
- 基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
- 基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。
- 基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务。
灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:
- 基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。
- 灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致
QinQ配置命令介绍
(1) 配置接口类型为dot1q-tunnel
[Huawei-GigabitEthernet0/0/1] port link-type dot1q-tunnel
(2) 配置接口类型为dot1q-tunnel,该接口可以是物理接口,也可以是Eth-Trunk接口。
使能接口VLAN转换功能;
Huawei-GigabitEthernet0/0/1] qinq vlan-translation enable
(3) 配置配置灵活QinQ
[Huawei-GigabitEthernet0/0/1] port vlan-stacking vlan vlan-id1 [ to vlan-id2 ] stack-vlan vlan-id3 [ remark-8021p 8021p-value ]
配置不同的内层VLAN叠加不同的外层VLAN,缺省情况下,外层VLAN优先级与内层VLAN优先级保持一致。
QinQ配置举例
1.基本QinQ
实验要求:
- 企业1与企业2接入同一个ISP网络,并使用了重叠的VLAN空间。
- ISP通过QinQ技术,实现同一个企业的不同站点之间的数据交互。
- 为企业1规划的VLAN ID为100,为企业2规划的VLAN ID为200。
SW1配置如下:
[SW1] vlan batch 100 200
[SW1] interface GigabitEthernet 0/0/1
#配置GE0/0/1外层TAG为100
[SW1-GigabitEthernet0/0/1] port link-type dot1q-tunnel
[SW1 -GigabitEthernet0/0/1] port default vlan 100
[SW1] interface GigabitEthernet 0/0/2
#配置GE0/0/2外层TAG为200
[SW1-GigabitEthernet0/0/2] port link-type dot1q-tunnel
[SW1-GigabitEthernet0/0/2] port default vlan 200
[SW1] interface GigabitEthernet 0/0/3
[SW1-GigabitEthernet0/0/3] port link-type trunk
[SW1-GigabitEthernet0/0/3] port trunk allow-pass vlan 100 200
#配置外层VLAN tag的TPID值
[SW1-GigabitEthernet0/0/3] qinq protocol 9100
SW2配置与SW1类似,此处省略
2.灵活QinQ
灵活QinQ拓扑
实验要求:
- 上网用户和VoIP用户通过SW1和SW2接入ISP网络,通过ISP的网络互相通信;企业为PC分配的内部VLAN为100,为VoIP电话分配的内部VLAN为300。
- 上网用户和VoIP用户分别以VLAN2和VLAN3通过ISP网络。
SW1配置如下:
[SW1] vlan batch 2 3
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type hybrid
[SW1-GigabitEthernet0/0/1] port hybrid untagged vlan 2 3
[SW1-GigabitEthernet0/0/1] qinq vlan-translation enable
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 100 stack-vlan 2
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 300 stack-vlan 3
[SW1-GigabitEthernet0/0/1] quit
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type trunk
[SW1-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 3
[SW1-GigabitEthernet0/0/2] quit
SW2配置与SW1类似,此处省略。