一、简介 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因为其自身简单灵活的特点,在各解决方案中扮演着重要的角色。 QinQ通过增加一层802.1Q的标签头实现了扩展VLAN空间的功能,具有以下价值: 1、扩展VLAN,对用户进行隔离和标识不再受到限制。 2、QinQ内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务,更利于业务的部署。 3、QinQ封装、终结的方式很丰富,帮助运营商实现业务精细化运营。
二、基本原理 QinQ是指在802.1Q VLAN的基础上增加一层802.1Q VLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。
图1 QinQ典型应用组网图 如上图1所示,用户网络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 Tag。 这样,来自不同用户网络的报文在运营商网络中传输时被完全分开,即使这些用户网络各自的VLAN范围存在重叠,在运营商网络中传输时也不会产生冲突。当报文穿过运营商网络,到达运营商网络另一侧PE设备后,报文会被剥离运营商网络为其添加的公网VLAN Tag,然后再传送给用户网络的CE设备。
1、QinQ报文封装格式 QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签,QinQ报文比802.1Q报文多四个字节。 QinQ报文比802.1Q报文多四个字节,因此建议用户在组网时适当增加运营商网络中各接口的最大帧长(至少为1504 字节)。目前交换机缺省支持的最大帧长超过1504字节,不需要手动配置。
图2 802.1Q封装
2、QinQ的实现方式 QinQ的实现方式可分为以下两种: 1、基本QinQ=dot1q-tunnel 基本QinQ是基于端口方式实现的。当端口上配置了基本QinQ功能后,不论从该端口收到报文是否带有VLAN Tag,设备都会为该报文打上本端口缺省VLAN的Tag。 如果收到的是带有VLAN Tag的报文,该报文就成为带双Tag的报文。 如果收到的是不带VLAN Tag的报文,该报文就成为带有本端口缺省VLAN Tag的报文。 2、灵活QinQ 灵活QinQ是基于端口与VLAN相结合的方式实现的,即端口对接收的报文,可以通过单层VLAN tag转发,也可以通过双层VLAN tag转发。 另外对于从同一个端口收到的报文,还可以根据VLAN的不同进行不同的操作,包括: 2.1、为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。 即相同的内层标签添加相同的vlan外层标签,不同的内层标签添加不同的外层标签。这要求内层vlan ID或vlan ID范围不能重叠或交叉。 2.2根据报文内层VLAN的802.1p优先级标记外层VLAN的802.1p优先级和添加不同的外层VLAN Tag。 即基于数据帧中不同的内层标签的802.1P优先级来标记外层VLAN的802.1p优先级和添加不同的外层vlan标签。 2.3、根据流策略来添加不同的外层vlan标签 根据定义的QoS策略为不同的数据帧添加不用的外层标签
3、QinQ的封装方式 QinQ封装是指如何把单层Q报文转换成双层Q报文,封装主要发生在城域网面向用户的UPE接口上进行。 根据不同的封装数据,QinQ可以分为几种不同类型,包括基于接口的QinQ和基于流的QinQ两大类,另外,还可以在路由子接口上进行特殊的QinQ封装,具体如下: 1、基于接口的QinQ封装 基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作QinQ二层隧道。 2、基于流的QinQ封装 基于流的QinQ封装可以对进入接口的数据首先进行流分类,然后对于不同的数据流选择是否封装外层Tag、封装何种外层Tag,因此这种封装方式也称作二层灵活QinQ。 例如:当同一用户的不同业务使用不同的VLAN ID时,可以根据VLAN ID区间进行分流。假设PC上网的VLAN ID范围是101~200;IPTV的VLAN ID范围是201~300;大客户的VLAN ID范围是301~400。面向用户的UPE收到业务数据后,根据VLAN ID范围,对PC上网业务封装上外层Tag 100,对IPTV封装上外层Tag 300,对大客户封装上外层Tag 500。 3、在路由子接口上进行QinQ封装 QinQ封装一般在二层接口上进行,但有一种特殊情况,QinQ也可以在路由子接口上进行封装。 当MPLS/IP核心网采用PWE3/VLL/VPLS透传业务数据时,NPE上的路由子接口可以根据用户VLAN ID封装外层VLAN ID,通过外层VLAN ID接入VLL/PWE3。此种方法可以通过一个子接口来透传多个标识用户的VLAN ID,这种子接口也叫QinQ Stacking子接口。 这种封装方式也是基于流的QinQ封装方式,但QinQ Stacking子接口只能和L2VPN(PWE3/VLL/VPLS)业务结合起来才有意义,不支持三层转发功能。
4、QinQ/Dot1q终结子接口 终结主要是指设备对报文的单层或者双层Tag进行识别,然后根据后续的转发行为对单层或者双层Tag进行剥离或继续传送。 QinQ技术在和MPLS/IP核心网连接时,根据不同的情况,会用到不同的终结方法。 终结一般在路由子接口上执行,即:终结子接口。 如果路由子接口是对报文的单层Tag终结,那么该子接口称为Dot1q终结子接口。 如果路由子接口是对报文的双层Tag终结,那么该子接口称为QinQ终结子接口。 QinQ终结子接口根据终结的用户VLAN Tag的类型,通常分为两种子接口: 明确的QinQ终结子接口: 两层VLAN Tag为固定的值。 模糊的QinQ终结子接口: 两层VLAN Tag为范围值,即:终结的内、外层Tag都为范围值。 QinQ终结子接口具体的实现方法、功能和具体的应用场景有一定关系
|