一、协议综述:

A、协议简述:

1、协议解释:

随着以太网技术在网络中的大量部署,利用802.1Q VLAN对用户进行隔离和标识受到很大限制。因为IEEE802.1Q中定义的VLAN Tag域只有12个比特,仅能表示4096个VLAN,无法满足以太网中标识大量用户的需求,于是QinQ技术应运而生。QinQ是通过在原有的802.1Q报文的基础上增加一层802.1Q标签来实现的,使得VLAN数量增加到4094×4094,扩展了VLAN空间。

所以 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协议。如下图所示用户报文在公网上传递时携带了两层Tag,内层是私网Tag,外层是公网Tag。

Untitled

随着以太网的发展以及精细化运作的要求,QinQ的双层标签又有了进一步的使用场景。它的内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ报文带着两层Tag穿越公网时,内层Tag透明传送,也是一种简单、实用的VPN技术。因此它又可以作为核心MPLS VPN在以太网VPN的延伸,最终形成端到端的VPN技术。

QinQ使整个网络最多可提供4094×4094个VLAN,从而满足了城域网对VLAN数量的需求。它具备以下优点:

  • 扩展VLAN,对用户进行隔离和标识不再受到限制。

  • QinQ内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务,更利于业务的部署。

  • QinQ封装、终结的方式很丰富,帮助运营商实现业务精细化运营。

  • 解决日益紧缺的公网VLAN ID 资源问题

  • 用户可以规划自己的私网VLNA ID

  • 提供一种较为简单的二层VPN解决方案

  • 使用户网络具有较高的独立性

2、报文封装结构

QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VLAN标签构成。

QinQ报文在公网传输时带有双层VLAN Tag,内层VLAN Tag为用户私网VLAN Tag,外层VLAN Tag为运营商分配给用户的VLAN Tag。

接口的MTU值默认为1500字节。当为报文加上外层VLAN Tag后,报文的长度会增加4个字节,建议用户适当增加运营商网络中各接口的MTU(最大传输单元)值,至少为1504字节

Untitled
Untitled
Untitled

设备可以根据TPID值来识别报文中是否携带对应的VLAN Tag:当端口收到报文时,根据配置的TPID值与报文中相应的字段进行比较,如果二者一致,则表示报文中携带相应的VLAN Tag。

不同厂商的设备可能将QinQ报文外层VLAN Tag的TPID字段设为不同的值。为了和这些设备兼容,用户可以自行配置该TPID的值,使得发送到公网中的QinQ报文携带的TPID值与其他厂商相同,就可以实现与其他厂商的设备互通。0x8100:Huawei路由器使用;0x88A8:802.1ad规定外层802.1Q Tag中的TPID为0x88a8

由于TPID字段在以太网报文中所处位置与不带VLAN Tag的报文中协议类型字段所处位置相同,为避免网络中报文转发和接收造成混乱,不允许用户将TPID值配置为表1中列举的常用协议类型值。

二、工作原理和实现方式:

Untitled

三、实现方式:

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

企业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标签。这样,来自不同企业网络的报文在公网中传输时被完全分开,即使这些企业网络各自的VLAN范围存在重叠,在公网中传输时也不会产生冲突。

当报文穿过公网,到达公网另一侧PE设备后,报文会被剥离公网为其添加的公网VLAN标签,然后再传送给用户网络的CE设备。

A、基本QinQ:

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

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

基本QinQ的报文处理过程如下:

  • SW1收到VLAN ID为10和20的报文,将该报文发给SW2。

  • SW2收到该报文后,在该报文原有Tag的外侧再添加一层VLAN ID 为100的外层Tag。

  • 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。

  • SW3收到VLAN100的报文后,剥离报文的外层Tag(VLAN ID 为100)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。

  • SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发。

Untitled

A、灵活QinQ:

  • 灵活QinQ(Selective QinQ)可根据流分类的结果选择是否打外层VLAN Tag,打上何种外层VLAN Tag。灵活QinQ可根据用户的VLAN标签、优先级、MAC地址、IP协议、IP源地址、IP目的地址、或应用程序的端口号进行流分类。

  • 基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。

  • 基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。

  • 基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务。

  • 灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:

    • 基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。

    • 灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致

灵活QinQ的报文处理过程:

  • SW1收到VLAN ID为10和20的报文,将该报文转发给SW2。

  • SW2收到VLAN ID为10的报文后,添加一层VLAN ID 为100 的外层Tag;SW2收到VLAN ID为20的报文后,添加一层VLAN ID为200的外层Tag。

  • 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。

  • SW3收到报文后,剥离报文的外层Tag(VLAN ID 为100或200)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。

  • SW4收到报文,根据VLAN ID和目的MAC地址进行相应的转发。

Untitled

四、其他相关:

A、VLAN 透传:

端口上使能了QinQ功能后,从该端口收到的报文就会被打上本端口缺省VLAN的Tag。而VLAN透传功能则可使端口在收到带有指定VLAN Tag的报文后,不为其添加外层VLAN Tag而直接在运营商网络中传输。例如,当某VLAN为企业专线VLAN或网管VLAN时,就可以使用VLAN透传功能

配置VLAN透传功能时,需要注意:

  • 同时配置了QinQ功能和VLAN透传功能的接口不支持进行三层转发。

  • 建议在配置用户侧端口的VLAN透传功能前,配置该端口的链路为Trunk/Hybrid类型,并允许透传VLAN通过。

  • 配置VLAN透传功能时,还需在报文传输路径的所有端口上都配置允许透传VLAN通过。

  • 配置了用户侧端口对指定VLAN的报文进行透传后,请勿在该端口上对这些VLAN再进行修改报文VLAN Tag的相关配置。

  • 同一接口上同时配置VLAN透传和VLAN映射时:

    • 透传VLAN不能为1:1 VLAN映射、1:2 VLAN映射和N:1 VLAN映射的原始VLAN和转换后VLAN。

    • 透传VLAN不能为2:2 VLAN映射的原始外层VLAN和转换后外层VLAN。

Untitled

B、BPDU 透传:

在实际组网中,用户经常利用运营商提供的专线来构建自己的二层网络,这使同一用户的私网通常都分布在运营商公网的两侧。如图 1所示,用户A拥有属于相同VLAN的两台设备CE 1和CE 2,该用户的网络分为网络1和网络2,二者通过运营商网络相连接。

为避免环路,用户需要在私网中启用STP功能,当一侧私网发生拓扑变化时,会发送BPDU报文给另一侧私网,否则将无法完成在整个用户私网内的生成树计算。但由于BPDU报文是二层组播报文,所有开启STP功能的设备都会接收并处理该报文,因此若用户私网和运营商网络的生成树一起计算将导致每个网络都无法生成正确的生成树。

BPDU Tunnel功能可以解决上述问题,它可使运行STP功能的用户私网和运营商网络拥有各自的生成树,互不干扰,它具有下列作用:

  • 对BPDU报文进行透明传输。可以使同一个用户网络的BPDU报文在运营商网络内指定的VLAN中进行广播,使得在不同地域的同一个用户网络可以跨越运营商网络进行统一的生成树计算。

  • 同时,由于不同用户网络的BPDU报文在运营商网络的不同VLAN中进行广播,所以不同用户网络的BPDU报文相互隔离,可以独立进行生成树计算。

图 2中,上部为运营商网络,下部为用户网络,用户网络分为网络A和网络B两个部分。通过在运营商网络两端的边缘设备上配置BPDU Tunnel功能,可以实现用户网络的BPDU报文在运营商网络中的透明传输,且不同用户网络的生成树通过独立计算后生成。

Untitled

利用BPDU Tunnel功能,可以在运营商网络中透传用户网络的二层协议报文:

  • 在运营商网络的输入端,PE 1将来自网络1的BPDU报文的目的MAC地址0x0180-C200-0000修改为特殊的组播MAC地址(假设为缺省的0x010F-E200-0003)。在运营商网络中,修改后的BPDU报文(即BPDU Tunnel报文)被当作数据报文在用户所属的VLAN中进行转发。

  • 在运营商网络的输出端,PE 2将目的MAC地址为0x010F-E200-0003的报文识别出来,将其目的MAC地址还原为0x0180-C200-0000,然后将还原后的BPDU报文转发到网络2中。

对BPDU报文进行透明传输。可以使同一个用户网络的BPDU报文在运营商网络内指定的VLAN中进行广播,使得在不同地域的同一个用户网络可以跨越运营商网络进行统一的生成树计算。

同时,由于不同用户网络的BPDU报文在运营商网络的不同VLAN中进行广播,所以不同用户网络的BPDU报文相互隔离,可以独立进行生成树计算。

C、VLAN Mapping(vlan映射):

1、原理概述:

VLAN映射(VLAN Mapping)也叫做VLAN转换(VLAN Translation),它可以修改报文携带的VLAN Tag或为报文添加VLAN Tag,实现不同VLAN ID之间的相互转换。目前设备提供下面几种映射关系:

  • 将来自某一特定VLAN的报文所携带的VLAN Tag替换为新的VLAN Tag。

  • 为携带有一层VLAN Tag的报文添加外层VLAN Tag,使报文携带两层VLAN Tag。

  • 为没有携带VLAN Tag的报文添加两层VLAN Tag。

  • 将携带有两层VLAN Tag的报文的内、外层VLAN Tag都替换为新的VLAN Tag。

  • 为携带两层VLAN Tag的报文添加外层VLAN Tag,使报文携带三层VLAN Tag。

在某些场景中,两个VLAN相同的二层用户网络通过骨干网络互联,为了实现用户之间的二层互通,以及二层协议(例如MSTP等)的统一部署,需要实现两个用户网络的无缝连接,此时就需要骨干网可以传输来自用户网络的带有VLAN Tag的二层报文。而在通常情况下,骨干网的VLAN规划和用户网络的VLAN规划是不一致的,所以在骨干网中无法直接传输用户网络的带有VLAN Tag的二层报文。

解决这个问题的方法有两个,其中一个是通过QinQ或者VPLS等二层隧道技术,将用户带有VLAN Tag的二层报文封装在骨干网报文中进行传输,可以实现用户带有VLAN Tag的二层报文的透传。但是这种方法一方面需要增加额外的报文开销(增加一层封装),另外一方面,二层隧道技术可能会对某些二层协议报文的透传支持不是非常完善。另外一种方法就是通过VLAN Mapping技术,一侧用户网络的带有VLAN Tag的二层报文进入骨干网后,骨干网边缘设备将用户网络的VLAN(C-VLAN)修改为骨干网中可以识别和承载的VLAN(S-VLAN),传输到另一侧之后,边缘设备再将S-VLAN修改为C-VLAN。这样就可以很好的实现两个用户网络二层无缝连接。

在另一种场景中,如果由于规划的差异,导致两个直接相连的二层网络中部署的VLAN ID不一致。但是用户又希望可以把两个网络作为单个二层网络进行统一管理,例如用户二层互通和二层协议的统一部署。此时也可以在连接两个网络的交换机上部署VLAN Mapping功能,实现两个网络之间不同VLAN ID的映射,达到二层互通和统一管理的目的。

**原理描述:**路由器收到带Tag的数据报文后,根据配置的VLAN Mapping方式,决定替换外层Tag中的VLAN ID或优先级;然后进入MAC地址学习阶段,根据源MAC地址+映射后的VLAN ID刷新MAC地址表项;根据目的MAC+映射后VLAN ID查找MAC地址表项,如果没有找到,则在VLAN ID对应的VLAN内广播,否则从表项对应的接口转发。

2、实现方式:

设备支持基于VLAN ID和802.1p优先级实现VLAN Mapping。

  • 基于VLAN ID

    当部署VLAN Mapping功能设备上的接口收到带有单层VLAN Tag的报文时,将单层报文所携带的VLAN ID替换为新的VLAN ID。

    当部署VLAN Mapping功能设备上的接口收到带有两层VLAN Tag的报文时,将两层报文携带的外层Tag替换为新的VLAN Tag,内层Tag作为数据透传。

  • 基于802.1p优先级

    当部署VLAN Mapping功能设备上的接口收到带有单层VLAN Tag的报文时,将单层报文所携带的802.1p优先级替换为新的802.1p优先级。

    当部署VLAN Mapping功能设备上的接口收到带有两层VLAN Tag的报文时,将两层报文所携带的外层802.1p优先级替换为新的802.1p优先级。

QinQ是什么?和VLAN什么关系?【VLAN专题】-腾讯云开发者社区-腾讯云

QinQ概述_0x88a8-CSDN博客

QinQ基础知识

H3C S10500系列交换机 配置指导-R757X-6W100_二层技术-以太网交换配置指导_QinQ配置-新华三集团-H3C

BPDU Tunnel技术介绍-新华三集团-H3C

VLAN-Mapping