QinQ简介
定义
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协议。
目的
随着以太网技术在运营商网络中的大量部署(即城域以太网),利用802.1Q VLAN对用户进行隔离和标识受到很大限制。因为IEEE802.1Q中定义的VLAN Tag域只有12个比特,仅能表示4096个VLAN,无法满足城域以太网中标识大量用户的需求,于是QinQ技术应运而生。
QinQ最初主要是为拓展VLAN的数量空间而产生的。它是通过在原有的802.1Q报文的基础上增加一层802.1Q标签来实现的,使得VLAN数量增加到4094×4094。
随着城域以太网的发展以及运营商精细化运作的要求,QinQ的双层标签又有了进一步的使用场景。它的内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ报文带着两层Tag穿越运营商网络,内层Tag透明传送,也是一种简单、实用的VPN技术。因此它又可以作为核心MPLS VPN在城域以太网VPN的延伸,最终形成端到端的VPN技术。
由于QinQ方便易用的特点,现在已经在各运营商中得到了广泛的应用,如QinQ技术在城域以太网解决方案中和多种业务相结合。特别是灵活QinQ(Selective QinQ/VLAN Stacking)的出现,使得QinQ业务更加受到了运营商的推崇和青睐,它具有不同用户之间的VLAN与公网VLAN有效分离、最大限度节省运营商网络的VLAN资源等特点。随着城域以太网的大力发展,各个设备提供商都提出了各自的城域以太网的解决方案。QinQ因为其自身简单灵活的特点,在各解决方案中扮演着重要的角色。
组网需求
如图1所示,网络中有两个企业,企业1有两个分支,企业2有两个分支。这两个企业的各办公地的企业网都分别和运营商网络中的SwitchA和SwitchB相连,且公网中存在其它厂商设备,其外层VLAN Tag的TPID值为0x9100。
现需要实现:
- 企业1和企业2独立划分VLAN,两者互不影响。
- 各企业两分支之间流量通过公网透明传输,相同业务之间互通,不同业务之间互相隔离。
可通过配置QinQ来实现以上需求。利用公网提供的VLAN100使企业1互通,利用公网提供的VLAN200使企业2互通,不同企业之间互相隔离。并通过在连接其它厂商设备的接口上配置修改QinQ外层VLAN Tag的TPID值,来实现与其它厂商设备的互通。
配置思路
采用如下的思路配置QinQ:
-
在SwitchA和SwitchB上均创建VLAN100和VLAN200,配置连接业务的接口为QinQ类型,并分别加入VLAN。实现不同业务添加不同的外层VLAN Tag。
-
配置SwitchA和SwitchB上连接公网的接口加入相应VLAN,实现允许VLAN100和200的报文通过。
-
在SwitchA和SwitchB连接公网的接口上配置外层VLAN tag的TPID值,实现与其它厂商设备的互通。
操作步骤
- 创建VLAN
# 在SwitchA上创建VLAN100和VLAN200。
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan batch 100 200
# 在SwitchB上创建VLAN100和VLAN200。
<Huawei>system-view
[Huawei]sysname SwitchB
[SwitchB]vlan batch 100 200
- 配置接口类型为QinQ
# 在SwitchA上配置接口GE0/0/1、GE0/0/2的类型为QinQ,GE0/0/1的外层tag为VLAN100,GE0/0/2的外层tag为VLAN200。SwitchB的配置与SwitchA类似,不再赘述。
[SwitchA]interface GigabitEthernet 0/0/1
[SwitchA-GigabitEthernet0/0/1]port link-type dot1q-tunnel
[SwitchA-GigabitEthernet0/0/1]port default vlan 100
[SwitchA-GigabitEthernet0/0/1]quit
[SwitchA]interface GigabitEthernet 0/0/2
[SwitchA-GigabitEthernet0/0/2]port link-type dot1q-tunnel
[SwitchA-GigabitEthernet0/0/2]port default vlan 200
[SwitchA-GigabitEthernet0/0/2]quit
- 配置Switch连接公网侧的接口
# 在SwitchA上配置接口GE0/0/3加入VLAN100和VLAN200。SwitchB的配置与SwitchA类似,不再赘述。
[SwitchA]interface GigabitEthernet 0/0/3
[SwitchA-GigabitEthernet0/0/3]port link-type trunk
[SwitchA-GigabitEthernet0/0/3]port trunk allow-pass vlan 100 200
[SwitchA-GigabitEthernet0/0/3]quit
- 配置外层VLAN tag的TPID值
# 在SwitchA上配置外层VLAN tag的TPID值为0x9100。
[SwitchA]interface GigabitEthernet 0/0/3
[SwitchA-GigabitEthernet0/0/3]qinq protocol 9100
# 在SwitchB上配置外层VLAN tag的TPID值为0x9100。
[SwitchB]interface GigabitEthernet 0/0/3
[SwitchB-GigabitEthernet0/0/3]qinq protocol 9100
- 验证配置结果
从企业1一处分支内任意VLAN的一台PC ping企业1另外一处分支同一VLAN内的PC,如果可以ping通则表示企业1内部可以互相通信。
从企业2一处分支内任意VLAN的一台PC ping企业2另外一处分支同一VLAN内的PC,如果可以ping通则表示企业2内部可以互相通信。
从企业1一处分支内任意VLAN的一台PC ping企业2任意一处分支同一VLAN内的PC,如果不能ping通则表示企业1和企业2之间相互隔离。
配置文件
-
SwitchA的配置文件
#
sysname SwitchA
#
vlan batch 100 200
#
interface GigabitEthernet0/0/1
port link-type dot1q-tunnel
port default vlan 100
#
interface GigabitEthernet0/0/2
port link-type dot1q-tunnel
port default vlan 200
#
interface GigabitEthernet0/0/3
qinq protocol 9100
port link-type trunk
port trunk allow-pass vlan 100 200
#
return
-
SwitchB的配置文件
#
sysname SwitchB
#
vlan batch 100 200
#
interface GigabitEthernet0/0/1
port link-type dot1q-tunnel
port default vlan 100
#
interface GigabitEthernet0/0/2
port link-type dot1q-tunnel
port default vlan 200
#
interface GigabitEthernet0/0/3
qinq protocol 9100
port link-type trunk
port trunk allow-pass vlan 100 200
#
return