「VLAN」- QinQ(802.1Q in 802.1Q)

问题描述

随着以太网技术在网络中的大量部署,利用VLAN对用户进行隔离和标识受到很大限制。因为在 IEEE802.1Q 中定义的 VLAN Tag 域只有 12-bit,仅能表示4096个VLAN,无法满足城域以太网中标识大量用户的需求。

解决方案

于是 QinQ(802.1Q in 802.1Q)技术应运而生,它是一项扩展VLAN空间的技术,通过在 802.1Q 标签报文的基础上再增加一层 802.1Q 的 Tag 来达到扩展VLAN空间的功能。

原理简述

如下图所示,用户报文在公网上传递时携带两层 Tag:内层是私网 Tag;外层是公网 Tag;

交互过程

在公网的传输过程中,设备只根据 Outer VLAN Tag 转发报文,并根据报文的 Outer VLAN Tag 进行 MAC 地址学习,而用户的私网 Inner VLAN Tag 将被当作报文的数据部分进行传输。即使私网 VLAN Tag 相同,也能通过公网 VLAN Tag 区分不同用户。

1)企业A和企业B的私网VLAN分别为VLAN 1~10和VLAN 1~20。公网为企业A和企业B分配的公网VLAN分别为VLAN 3和VLAN 4。
2)当企业A和企业B中带VLAN Tag的报文进入公网时,报文外面就会被分别封装上VLAN 3和VLAN 4的VLAN标签。这样,来自不同企业网络的报文在公网中传输时被完全分开,即使这些企业网络各自的VLAN范围存在重叠,在公网中传输时也不会产生冲突。
3)当报文穿过公网,到达公网另一侧PE设备后,报文会被剥离公网为其添加的公网VLAN标签,然后再传送给用户网络的CE设备。

报文结构

QinQ 封装报文是在无标签的以太网数据帧的 SMAC-Address 字段后面加上 2 个 VLAN Tag 构成:

TPID(Tag Protocol Identifier,标签协议标识)表示帧类型:
取值为0x8100时表示 802.1Q Tag 帧。如果不支持 802.1Q 的设备收到这样的帧,会将其丢弃。

对于内层的 802.1Q Tag,该值设置为 0x8100;对于外层的 802.1Q Tag,不同厂商所使用的值可能不相同:
1)0x8100:Huawei 路由器使用
2)0x88A8:802.1ad 规定外层 802.1Q Tag 中的 TPID=0x88a8;

在华为设备上,外层 802.1Q Tag 缺省情况下值为 0x8100,可以通过命令行调整该值([Interface] qinq protocol 9100):

特性说明

WIP

应用场景

在运营商网络中

能够实现 Layer VPN 技术(还有其他更好的技术方案);

在园区网中

需求:
1)单个终端用户可溯源。
2)每个终端一个独立的二层广播域,最大限度地限制 BUM 流量对网络造成的影响。
3)终端用户到 BRAS 设备之间二层互通,匹配 PPPoE 等认证需求。

BRAS(Broadband Remote Access Server,宽带远程接入服务器)提供宽带接入服务、实现多种业务的汇聚与转发,能满足不同用户对传输容量和带宽利用率的要求,因此 RRAS 是宽带用户接入的核心设备。
BUM(Broadcast、Unknown Unicast、Multicast,广播,未知单播、组播),交换机以泛洪的方式处理以上类型的数据帧。

实现方式

Basic QinQ

Basic QinQ 是基于端口方式实现的。开启端口的 Basic QinQ 功能后,当该端口接收到报文,设备会为该报文打上本端口 Default VLAN 相同的 VLAN Tag。如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文;如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省 VLAN Tag 的报文。

基于端口的 QinQ 的缺点是 Outer VLAN Tag 封装方式固定,不能根据业务种类选择 Outer VLAN Tag 封装的方式,从而很难有效支持多业务的灵活运营。

Basic QinQ 的报文处理过程:
1)SW1收到VLAN ID为10和20的报文,将该报文发给SW2。
2)SW2收到该报文后,在该报文原有Tag的外侧再添加一层 VLAN ID 为 100 的外层 Tag;
3)带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。
4)SW3收到VLAN100的报文后,剥离报文的外层Tag(VLAN ID 为100)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。
5)SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发。

Selective QinQ

Selective QinQ(灵活 QinQ)可根据流分类的结果选择是否打外层 VLAN Tag,打上何种外层 VLAN Tag。

灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:
1)基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。
2)灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致

灵活QinQ可根据用户的VLAN标签、优先级、MAC Address、IP Protocol、IP SRC-Address、IP DST-Address、或应用程序的端口号进行流分类:
1)基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
2)基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。
3)基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务。

灵活QinQ的报文处理过程:
1)SW1收到VLAN ID为10和20的报文,将该报文转发给SW2。
2)SW2收到VLAN ID为10的报文后,添加一层VLAN ID 为100 的外层Tag;SW2收到VLAN ID为20的报文后,添加一层VLAN ID为200的外层Tag。
3)带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。
4)SW3收到报文后,剥离报文的外层Tag(VLAN ID 为100或200)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 10 或 20)。
5)SW4收到报文,根据VLAN ID和目的MAC地址进行相应的转发。

配置应用

Basic QinQ

按照图示标准进行配置即可(这里不再介绍具体的配置信息):

这里修改 QinQ Protocol 字段的报文,如下所示,字段 Type 发生变化:

Frame 454: 82 bytes on wire (656 bits), 82 bytes captured (656 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_dc:4c:28 (54:89:98:dc:4c:28), Dst: HuaweiTe_54:25:80 (54:89:98:54:25:80)
    Destination: HuaweiTe_54:25:80 (54:89:98:54:25:80)
    Source: HuaweiTe_dc:4c:28 (54:89:98:dc:4c:28)
    Type: QinQ: old non-standard 802.1ad (0x9100)
802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 100
802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 10
Internet Protocol Version 4, Src: 192.168.10.4, Dst: 192.168.10.1
Internet Control Message Protocol

Selective QinQ

按照图示标准进行配置即可(这里不再介绍具体的配置信息):

通过抓包能够看到针对不同 VLAN 使用不同的 Outer VLAN Tag;