QinQ技术诞生的背景
QinQ最初主要是为扩展VLAN ID空间而产生的,但随着城域以太网的发展以及运营商精细化运作的要求,QinQ的双层标签又有了进一步的使用场景。它的内、外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ数据帧带着两层标签穿越运营商网络,内层标签透明传送,也可以看作是一种简单、实用的VPN技术。因此它又可以作为核心MPLS VPN在城域以太网VPN的延伸,最终形成端到端的VPN技术。由于QinQ方便易用的特点,现在已经在各运营商中得到了广泛的应用,如QinQ技术在城域以太网解决方案中和多种业务相结合。特别是灵活QinQ(Selective QinQ/VLAN Stacking)的出现,使得QinQ业务更加受到了运营商的推崇和青睐。
QinQ封装和终结
QinQ是在传统802.1Q VLAN标签头基础上再增加一层新的802.1Q VLAN标签头,如图所示。由此可知,QinQ帧比传统的802.1Q帧多了四个字节,即新增的802.1Q VLAN标签。
QinQ帧封装的过程就是把单层802.1Q标签的数据帧转换成双层802.1Q标签的数据帧。封装过程主要发生在城域网侧连接用户的交换机端口上进行的。根据不同的VLAN标签封装依据,QinQ可以分为“基本QinQ”和“灵活QinQ”两种类型。具体说明如下。
01
基本QinQ封装
“基本QinQ封装”是将进入一个端口的所有流量全部封装一个相同的外层VLAN标签,是一种基于端口的QinQ封装方式,也称“QinQ二层隧道”。开启端口的基本QinQ功能后,当该端口接收到已经带有VLAN标签的数据帧时,则该数据帧就将封装成双层标签的帧;如果接收到的是不带VLAN标签的数据帧,则该数据帧将封装成为带有端口缺省VLAN的一层标签的帧。
02
灵活QinQ封装
“灵活QinQ”是对QinQ的一种更灵活的实现,是基于端口封装与基于VLAN封装的结合方式。除了能实现所有基本QinQ的功能外,灵活QinQ对于同一个端口接收的数据帧还可以根据不同的内层VLAN标签执行不同的外层标签封装。它又可分为以下三个子类:
基于VLAN ID的灵活QinQ:
它是基于数据帧中不同的内层标签的VLAN ID来添加不同的外层标签。即具有相同内层标签的帧添加相同的外层VLAN标签,具有不同内层标签的帧添加不同的外层VLAN标签。这就要求不同用户的内层VLAN ID或VLAN ID范围绝对不能重叠或交叉。华为S系列交换机中的S2700、S3700、S5700、S6700仅支持基于VLAN ID的灵活QinQ功能。
基于802.1p优先级的灵活QinQ:
它是基于数据帧中不同的内层标签的802.1p优先级来添加不同的外层标签。即具有相同内层VLAN 802.1p优先级的帧添加相同的外层标签,具有不同内层VLAN 802.1p优先级的帧添加不同的外层标签。这就要求不同用户的内层VLAN的802.1p优先级或802.1p优先级范围绝对不能重叠或交叉。基于802.1p优先级的灵活QinQ在华为S系列交换机中仅S7700、S9300和S9700系列支持。
基于流策略的灵活QinQ:
它是根据所定义的QoS策略为不同的数据帧添加不同的外层标签。基于流策略的灵活QinQ是基于端口与VLAN相结合的方式实现的,能够针对业务类型提供差别服务。基于流策略的灵活QinQ在华为S系列交换机中仅S7700、S9300和S9700系列支持。
03
QinQ/Dot1q终结子接口
QinQ/Dot1q终结是指设备对数据帧的双层或者单层VLAN标签进行识别,根据后续的转发行为对帧中的双层或者单层VLAN标签进行剥离,然后继续传送。
也就是这些VLAN标签仅在此之前生效,后面的数据传输和处理不再依据帧中的这些VLAN标签。
【经验之谈】VLAN终结的实质包括两个方面:
- 对接口收到的VLAN报文,去除VLAN标签后进行三层转发或其他处理。从设备其它接口转发出去的报文是否带有VLAN标签由对应的端口类型及其数据发送规则决定。
- 对接口发送的报文,又将相应的VLAN标签信息添加到报文中后再发送。
终结一般在路由子接口上执行,即终结子接口,如我们在单臂路由中就要配置路由子接口的802.1Q的VLAN终结。如果路由子接口是对数据帧的单层VLAN标签终结,那么该子接口称为Dot1q 终结子接口;如果路由子接口是对数据帧的双层VLAN标签终结,那么该子接口称为QinQ终结子接口。QinQ终结子接口根据终结的用户VLAN标签的类型,通常分为两种子接口:
- 明确的QinQ终结子接口:两层VLAN标签为固定的值。
- 模糊的QinQ终结子接口:两层VLAN标签为范围值,即:终结的内、外层标签都为一个VLAN ID范围值。
实验
基本QinQ和灵活QinQ结合实验
拓扑:
实验步骤:
1.配置4台PC的IP地址,子网掩码。
2.在交换机sw5上创建VLAN 1000和VLAN 2000分别加入到GE0/0/1和GE0/0/2中,GE0/0/3配置为Trunk端口并放行对应的vlan
system-viewsysname sw5Vlan batch 1000 2000interface GigabitEthernet0/0/1 port link-type access port default vlan 1000interface GigabitEthernet0/0/2 port link-type access port default vlan 2000interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 1000 2000
3.在交换机sw6上创建VLAN 1000和VLAN 2000分别加入到GE0/0/1和GE0/0/2中,GE0/0/3配置为Trunk端口并放行对应的vlan
system-viewsysname sw6Vlan batch 1000 2000interface GigabitEthernet0/0/1 port link-type access port default vlan 2000interface GigabitEthernet0/0/2 port link-type access port default vlan 1000interface GigabitEthernet0/0/3 port link-type trunkport trunk allow-pass vlan 1000 2000
4.在交换机sw3上,创建VLAN 100、200,将GE0/0/2配置为Trunk端口并允许VLAN 100、200的流量通过,将G0/0/3设置为灵活QinQ
system-viewsysname sw3Vlan batch 100 200interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 100 200interface GigabitEthernet0/0/3 qinq vlan-translation enableport hybrid untagged vlan 100 200 port vlan-stacking vlan 1000 stack-vlan 100 port vlan-stacking vlan 2000 stack-vlan 200
5.在交换机sw4上,创建VLAN 100、200,将GE0/0/2配置为Trunk端口并允许VLAN 100、200的流量通过,将G0/0/3设置为灵活QinQ
system-viewsysname sw4Vlan batch 100 200interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 100 200interface GigabitEthernet0/0/3 qinq vlan-translation enable port hybrid untagged vlan 100 200 port vlan-stacking vlan 1000 stack-vlan 100 port vlan-stacking vlan 2000 stack-vlan 200
6.在交换机sw1上,创建VLAN 500,将GE0/0/1配置为Trunk端口并允许VLAN 500的流量通过,将G0/0/2设置为接口QinQ
system-viewsysname sw1Vlan 500interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 500interface GigabitEthernet0/0/2 port link-type dot1q-tunnelport default vlan 500
7.在交换机sw2上,创建VLAN 500,将GE0/0/1配置为Trunk端口并允许VLAN 500的流量通过,将G0/0/2设置为接口QinQ
system-viewsysname sw2Vlan 500interface GigabitEthernet0/0/1port link-type trunk port trunk allow-pass vlan 500interface GigabitEthernet0/0/2 port link-type dot1q-tunnelport default vlan 500
实验结果:
要求同一VLAN内的PC可以互相通信
PC1 ping PC4 通,反之也可以。
PC2 ping PC3 通,反之也可以。
p1 ping不同PC2、3
p2 ping不同PC1、4
,