【转】QinQ的产生背景、原理及应用场景

科技   2025-01-10 16:31   河北  

1.什么是QinQ?

QinQ(802.1Q-in-802.1Q),也叫做 VLAN Stacking 或 Double VLAN,由 IEEE 802.1ad 标准定义,是一项扩展 VLAN 空间的技术,通过在 802.1Q 标签报文的基础上再增加一层 802.1Q 的 Tag 来达到扩展 VLAN 空间的目的。一般应用在骨干网中,通过将用户私网 VLAN Tag 封装在公网 VLAN Tag 中,使报文带着两层 VLAN Tag 穿越运营商的骨干网络(公网),扩充 VLAN 数量,实现对用户的精细化管理。

2.为什么需要QinQ?

IEEE 802.1Q 中定义的 VLAN ID 只有 12个比特,仅能表示4096个 VLAN 域,随着网络规模的扩大,4096个 VLAN 域已无法满足网络扩容的需求,为此,IEEE 802.1ad 中在原有的 802.1Q 报文的基础上增加一层 802.1Q Tag (也叫做 VLAN Tag 或标签),使 VLAN 数量增加到 4094×4094 ,这种双层 Tag 的报文就叫做 QinQ 报文。

随着以太网的进一步发展以及运营商精细化运作的要求,QinQ 的双层 Tag 又有了新的应用场景。它的内外层 Tag 可以代表不同的信息,如内层 Tag 代表用户,外层 Tag 代表业务。另外,QinQ 报文带着两层 Tag 穿越运营商网络,内层 Tag 透明传送,也是一种简单、实用的 VPN 技术。

所以,QinQ 产生的两大背景是:

  • 一是解决日益紧缺的VLAN ID资源问题;

  • 二是满足业务精细化管理的需求。

3.QinQ应用场景

在企业网中,可以不同的业务封装不同 VLAN Tag,使不同的业务按需获取不同的资源。如下图所示,PC、VOIP、IPTV 由于应用场景和需求不同,在企业内部属于不同的 VLAN,访问公网时,针对不同的内层 VLAN Tag 添加不同的外层 VLAN Tag。

  • PC:内层 VLAN Tag 对应的 VLAN ID 是101,外层 VLAN Tag 对应的 VLAN ID是1001
  • VOIP:内层 VLAN Tag 对应的 VLAN ID 是301,外层 VLAN Tag 对应的 VLAN ID是2001
  • IPTV:内层 VLAN Tag 对应的 VLAN ID 是501,外层 VLAN Tag 对应的VLAN ID是3001

在运营商网络中,为节省运营商公网 VLAN ID 资源,用户在使用运营商网络传输报文时,内层使用不同的 VLAN ID 区分不同部门,外层使用相同的 VLAN ID。如下图所示,不同区域部门的用户需要跨越运营商网络相互通信,为节省运营商 VLAN ID,用户报文在运营商网络中转发时,统一都添加一层 VLAN ID 为3的 Tag。

4.QinQ报文格式

QinQ 报文有固定的格式,就是在 802.1Q 的标签之上再打一层 802.1Q 标签,QinQ 报文比 802.1Q 报文多四个字节。这四个字节用作外层标签,即运营商网络的公网 VLAN Tag。原 802.1Q 的 Tag 用作内层标签,即私网 VLAN Tag 。QinQ 报文封装格式如下图所示。

如下图所示,通过对 802.1Q 封装和 QinQ 封装的报文抓包,可以明显看出 QinQ 报文比 802.1Q 多了一层 802.1Q 标签。

5.QinQ有哪些实现方式?

根据识别报文的方式和添加外层标签的位置,QinQ 的实现方式可以分为下面两种。

1)基于接口的QinQ封装

也叫做基本QinQ或QinQ隧道(QinQ Tunnel),就是对接口收到的所有报文都添加一层 VLAN ID 相同的外层 Tag。

2)基于流的QinQ封装

也叫做灵活 QinQ,首先对进入接口的报文根据指定规则分类,然后对于不同类型的报文选择封装何种外层 Tag。

例如:当同一企业的不同业务使用不同的 VLAN ID 时,可以根据 VLAN ID 进行对报文进行分类。假设 PC 上网的 VLAN ID 范围是101~200;IPTV 的 VLAN ID 范围是 201~300;大客户的 VLAN ID 范围是 301~400。设备收到业务报文后,可以根据 VLAN ID 范围对不同的业务添加不同的外层 Tag。对 PC 上网业务封装上外层 Tag 100,对IPTV封装上外层 Tag 300,对大客户封装上外层 Tag 500。

常见的对报文分类的方式包括如下几种:

  • 根据报文原有的 VLAN ID 进行分类,即根据报文原有内层 VLAN ID 添加不同的外层 VLAN Tag。
  • 根据报文原有的 VLAN Tag 中的 802.1p 优先级进行分类,即根据报文原有内层 VLAN的802.1p 优先级添加不同的外层 VLAN Tag。
  • 根据流策略进行精细分类,即根据 QoS 策略添加不同的外层 VLAN Tag。该方式能够针对业务类型提供差别服务。

6.QinQ是如何工作的?

在 QinQ 典型组网中,有两个重要的设备角色:CE(Customer Edge)设备和PE(Provider Edge )设备。CE设备与用户相连,对用户报文封装第一层 VLAN Tag,即内层VLAN Tag;PE 设备是 CE 设备的下游设备,对 CE 设备转发过来的报文封装第二层 VLAN Tag,即外层 VLAN Tag。

如下图所示,部门A和部门B分布在不同的办公点,部门A和部门B通过运营商网络相互通信,部门A和部门B分别使用 VLAN 10 和VLAN 20 进行通信,该企业仅申请到一个公网 VLAN 3。当 CE1 和 CE3 对应的部门A的用户相互通信时,CE1 用户发送到 CE3 用户的报文,VLAN Tag 的添加和剥离流程如下。

1)CE1收到用户报文时,对用户报文封装第一层 VLAN Tag,对应的 VLAN ID 是10。

2)PE1收到 CE1 转发的用户报文时,对用户报文再封装一层 VLAN Tag,对应的 VLAN ID是3。

3)报文携带两层 VLAN Tag(内层VLAN Tag的VLAN ID是10,外层VLAN Tag的VLAN ID是3),从 PE1 设备传输到PE2设备。

4)PE2收到报文从对应出接口转发报文时,会剥离掉外层 VLAN ID 是3的 VLAN Tag。

5)CE3收到报文时,报文仅携带一层 VLAN ID 为10的 VLAN Tag。CE3 设备转发报文时,会剥离掉这层 VLAN ID 为10的 VLAN Tag。

CE3 用户发送到CE用户的报文,VLAN Tag 的添加和剥离流程正好与上面流程相反。


Python运维实践
Python运维实践,专注于互联网技术的总结与交流,内容涉及Python自动化运维、Django框架、园区网络技术、linux云计算、系统架构及网络空间安全等知识的实践与分享。
 最新文章