华为交换机VLAN基础知识(五)
华为交换机VLAN基础知识(四):https://www.wlgly.net/post-169.html
19、QinQ(dot1q-tunnel)(双VLAN标签)
添加外层VLAN标签是封装;去掉剥离外层VLAN标签是终结;转换、替换VLAN是映射。启用了QinQ= dot1q-tunnel的交换机端口具有添加和剥离外层VLAN标签的功能.
1、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因为其自身简单灵活的特点,在各解决方案中扮演着重要的角色。
QinQ通过增加一层802.1Q的标签头实现了扩展VLAN空间的功能,具有以下价值:
扩展VLAN,对用户进行隔离和标识不再受到限制;QinQ内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务,更利于业务的部署;QinQ封装、终结的方式很丰富,帮助运营商实现业务精细化运营。
2、QinQ基本原理
QinQ是指在802.1Q VLAN的基础上增加一层802.1Q VLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。
图23 QinQ典型应用组网图
如上图23所示,用户网络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设备。
图24 802.1Q封装
QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签,QinQ报文比802.1Q报文多四个字节。
QinQ报文比802.1Q报文多四个字节,因此建议用户在组网时适当增加运营商网络中各接口的最大帧长(至少为1504 字节)。目前交换机缺省支持的最大帧长超过1504字节,不需要手动配置。
4、QinQ的实现方式
QinQ的实现方式可分为以下两种:
4.1、基本QinQ=dot1q-tunnel
基本QinQ是基于端口方式实现的。当端口上配置了基本QinQ功能后,不论从该端口收到报文是否带有VLAN Tag,设备都会为该报文打上本端口缺省VLAN的Tag。
如果收到的是带有VLAN Tag的报文,该报文就成为带双Tag的报文。如果收到的是不带VLAN Tag的报文,该报文就成为带有本端口缺省VLAN Tag的报文。
4.2、灵活QinQ
灵活QinQ是基于端口与VLAN相结合的方式实现的,即端口对接收的报文,可以通过单层VLAN tag转发,也可以通过双层VLAN tag转发。
另外对于从同一个端口收到的报文,还可以根据VLAN的不同进行不同的操作,包括:
4.2.1、为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
即相同的内层标签添加相同的VLAN外层标签,不同的内层标签添加不同的外层标签。这要求内层VLAN ID或VLAN ID范围不能重叠或交叉。
4.2.2根据报文内层VLAN的802.1p优先级标记外层VLAN的802.1p优先级和添加不同的外层VLAN Tag。即基于数据帧中不同的内层标签的802.1P优先级来标记外层VLAN的802.1p优先级和添加不同的外层VLAN标签。
4.2.3、根据流策略来添加不同的外层VLAN标签。
根据定义的QoS策略为不同的数据帧添加不用的外层标签。
5、QinQ的封装方式
QinQ封装是指如何把单层Q报文转换成双层Q报文,封装主要发生在城域网面向用户的UPE接口上进行。根据不同的封装数据,QinQ可以分为几种不同类型,包括基于接口的QinQ和基于流的QinQ两大类,另外,还可以在路由子接口上进行特殊的QinQ封装,具体如下:
5.1、基于接口的QinQ封装
基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作QinQ二层隧道。
5.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。
6、在路由子接口上进行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)业务结合起来才有意义,不支持三层转发功能。
7、QinQ/Dot1q终结子接口
终结主要是指设备对报文的单层或者双层Tag进行识别,然后根据后续的转发行为对单层或者双层Tag进行剥离或继续传送。
QinQ技术在和MPLS/IP核心网连接时,根据不同的情况,会用到不同的终结方法。终结一般在路由子接口上执行,即:终结子接口。
如果路由子接口是对报文的单层Tag终结,那么该子接口称为Dot1q终结子接口;如果路由子接口是对报文的双层Tag终结,那么该子接口称为QinQ终结子接口。
QinQ终结子接口根据终结的用户VLAN Tag的类型,通常分为两种子接口:
明确的QinQ终结子接口:两层VLAN Tag为固定的值。
模糊的QinQ终结子接口:两层VLAN Tag为范围值,即:终结的内、外层Tag都为范围值。
QinQ终结子接口具体的实现方法、功能和具体的应用场景有一定关系,下文根据不同的场景进行说明。
8、基本QinQ
基本QinQ又称为QinQ二层隧道,是基于接口方式实现的。
开启接口的基本QinQ功能后,当该接口接收到报文,设备会为该报文打上本接口缺省VLAN的VLAN Tag。如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文;如果接收到的是不带VLAN Tag的报文,该报文就成为带有接口缺省VLAN Tag的报文。
当需要较多的VLAN时,可以配置基本QinQ功能。通过对VLAN增加外层Tag,使得VLAN的可用数目范围变大,解决VLAN数目资源紧缺的问题。
图25 配置QinQ二层隧道典型组网图
如上图25所示的网络中,企业部门1有两个办公地,部门2有三个办公地,两个部门的各办公地分别和网络中的PE1、PE2相连,部门1和部门2可以任意规划自己的VLAN。
在PE1和PE2上通过如下思路配置QinQ二层隧道功能,使得每个部门的各个办公地网络可以互通,但两个部门之间不能互通。
在PE1上,对于进入接口Port1和Port2的用户报文都封装外层VLAN 10,对于进入接口Port3中用户报文都封装外层VLAN 20。
在PE2上,对于进入接口Port1和Port2的用户报文都封装外层VLAN 20。
PE1上的接口Port4和PE2上的接口Port3允许VLAN 20的报文通过。
9、灵活QinQ
灵活QinQ是对QinQ的一种更灵活的实现,又叫VLAN Stacking(堆叠)或QinQ Stacking。它是基于接口与VLAN相结合的方式实现的。除了能实现所有基本QinQ的功能外,对于同一个接口接收的报文还可以根据不同的VLAN做不同的动作,可以实现以下功能:
9.1、基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
9.2、基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。
9.3、基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。
基于流策略的灵活QinQ能够针对业务类型提供差别服务。灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:
基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。
灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致。
图26 配置二层灵活QinQ典型组网图
如上图26所示的网络中,企业的部门1有多个办公地,部门2也有多个办公地。
部门1的网络中使用VLAN 2~VLAN 500,部门2的网络中使用VLAN 500~VLAN 4094,PE1的Port1接口同时收到两个部门不同VLAN的报文。
在PE1和PE2上通过如下思路配置二层灵活QinQ功能,使得每个部门的各个办公地网络可以互通,但两个部门之间不能互通。
对于进入PE1和PE2不同接口的报文的外层VLAN规划如下表所示:
PE1和PE2的接口Port3允许VLAN 20的报文通过。
10、TPID
标签协议标识TPID(Tag Protocol Identifier)是VLAN Tag中的一个字段,表示VLAN Tag的协议类型,IEEE 802.1Q协议规定该字段的取值为0x8100。
IEEE802.1Q协议定义的以太网帧的VLAN Tag结构如下图27所示。
图27 802.1Q封装
802.1Q Tag位于SA(Source Address)和Length/Type之间。通过检查对应的TPID值,设备可确定收到的帧承载的是运营商VLAN标记还是用户VLAN标记。接收到帧之后,设备将配置的TPID值与帧中TPID字段的值进行比较。如果二者匹配,则该帧承载的是对应的VLAN标记。
例如,如果帧分别承载TPID值为0x9100和0x8100的VLAN标记,同时运营商VLAN标记的TPID值配置为0x9100,用户网络VLAN标记的TPID值配置为0x8200,设备将认为该帧仅承载了运营商VLAN标记,但没有用户VLAN标记。
另外,不同运营商的系统可能将QinQ帧外层VLAN标记的TPID设置为不同值。为实现与这些系统的兼容性,可以修改TPID值,使QinQ帧发送到公网时,承载与特定运营商相同的TPID值,从而实现与该运营商设备之间的互操作性。
以太网帧的TPID与不带VLAN标记的帧的协议类型字段位置相同。为避免在网络中转发和处理数据包时出现问题,不可将TPID值设置为下表1中的任意值:
11、QinQ Mapping
QinQ Mapping发生在报文从入接口接收进来之后,从出接口转发出去之前,子接口在向外发送本地VLAN的帧时,将帧中的VLAN Tag替换成外部VLAN的VLAN Tag,在接收外部VLAN的帧时,将帧中的VLAN Tag替换成本地VLAN的VLAN Tag。
在实际组网中,QinQ Mapping功能可以将用户的VLAN Tag映射为运营商的VLAN Tag,从而起到屏蔽不同用户VLAN Tag的作用。
QinQ Mapping功能一般部署在ME边缘设备上,对用户侧上送的报文进行映射操作。将用户报文携带的Tag映射用户指定的Tag后再接入公网。QinQ Mapping功能常应用于但不局限于以下场景:
1、新局点和老局点部署的VLAN ID冲突,但是新局点需要与老局点互通。
2、接入公网的各个局点规划不一致,导致VLAN ID冲突,但是各个局点之间不需要互通。
3、公网两端的VLAN ID规划不对称。
目前,设备支持以下几种映射方式:
1、1 to 1的映射方式:
当部署QinQ Mapping功能设备上的子接口收到带有一层Tag的报文时,将报文中携带的一层Tag映射为用户指定的一层Tag。
2、2 to 1的映射方式
当部署QinQ Mapping功能的子接口收到带有两层Tag的报文后,将报文中携带的外层Tag映射为用户指定的一层Tag,内层VLAN不变。
图28 QinQ Mapping功能示意图
如上图28所示,当在Device2和Device3的子接口GE1/0/1.1上配置了2 to 1的映射后,以PC1向PC2发送帧为例:
Device2上的接口GE1/0/2向外发送的帧中携带的Tag是运营商的VLAN Tag 50,即将VLAN20映射(替换)为VLAN50。
ISP网络透传Device2发送的帧。
Device3上的接口GE1/0/1.1收到Device2发送过来的数据帧后,将帧中的单层Tag映射为外层Tag为40、内层Tag为30。
PC2向PC1发送帧的流程同理。
由此实现了PC1和PC2的互通。
QinQ Mapping与VLAN Mapping的区别
QinQ Mapping与VLAN映射类似,QinQ Mapping只能在子接口应用,VLAN映射在物理端口上应用。QinQ Mapping与VLAN Mapping的比较表如下所示。
12、VLAN Mapping
VLAN Mapping主要部署在公网上的边缘节点设备,实现私网与公网的VLAN分离,节省公网的VLAN资源。
VLAN Mapping通过修改报文携带的VLAN Tag来实现不同VLAN的相互映射。
在某些场景中,两个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的映射,达到二层互通和统一管理的目的。
1、VLAN Mapping基本原理
交换机收到数据报文后,根据是否带有Tag做以下两种处理:
1、数据报文带Tag,根据配置的VLAN Mapping方式,决定替换单层、双层或双层中的外层Tag;然后进入MAC地址学习阶段,根据源MAC地址+映射后的VLAN ID刷新MAC地址表项;根据目的MAC+映射后VLAN ID查找MAC地址表项,如果没有找到,则在VLAN ID对应的VLAN内广播,否则从表项对应的接口转发。
2、数据报文不带Tag,根据配置的VLAN划分方式决定是否添加VLAN Tag,对于不能加入VLAN的数据报文上送CPU或丢弃,否则添加Tag;然后进入MAC地址学习阶段,按照二层转发流程进行转发。
如下图1所示,当在接口Port1上配置了VLAN2和VLAN3映射后,接口在向外发送VLAN2的帧时,将帧中的VLAN Tag替换成VLAN3的VLAN Tag;在接收VLAN3的帧时,将帧中的VLAN Tag替换成VLAN2的VLAN Tag,然后按照二层转发流程进行数据转发,这样VLAN2和VLAN3就能实现互相通信。
图29 VLAN Mapping功能示意图
此外,要想借助VLAN Mapping实现两个VLAN内设备互相通信,这两个VLAN内设备的IP地址还必须处于同一网段。如果两个VLAN内设备的IP地址不在同一网段,那么设备间的互通需要依赖三层路由实现,这样就失去了VLAN Mapping的意义。
2、VLAN Mapping方式
设备支持基于VLAN、802.1优先级和MQC(流策略)方式实现VLAN Mapping,其中基于VLAN的VLAN Mapping包括以下映射方式:
1、1 to 1的映射方式
当部署VLAN Mapping功能设备上的主接口收到带有单层VLAN Tag的报文时,将报文中携带的单层VLAN Tag映射为公网的VLAN Tag。包括1:1和N:1两种方式,其中1:1的方式是将指定的一个用户侧VLAN Tag标签映射到一个网络侧VLAN Tag标签,N:1的方式是将指定范围的多个用户侧VLAN Tag标签映射到一个网络侧VLAN Tag标签。
2、2 to 1的映射方式
当部署VLAN Mapping功能设备上的主接口收到带有双层VLAN Tag的报文时,将报文中携带的外层Tag映射为公网的Tag,内层Tag作为数据透传。
3、2 to 2的映射方式
当部署VLAN Mapping功能设备上的主接口收到带有双层VLAN Tag的报文时,将报文中携带的双层VLAN Tag映射为公网的双层VLAN Tag。
基于MQC实现VLAN Mapping指的是通过MQC可以对分类后的报文实现VLAN Mapping。
用户可以根据多种匹配规则对报文进行流分类,然后将流分类与VLAN Mapping的动作相关联,对匹配规则的报文重标记报文的VLAN ID值。基于MQC的VLAN Mapping能够针对业务类型提供差别服务。
由于设备所有的接口都默认加入VLAN1,因此当网络中存在VLAN1的未知单播、组播或者广播报文时,可能会引起广播风暴。对于不需要加入VLAN1的接口及时退出VLAN1,避免环路。
VLAN1不能配置为管理VLAN。
当设备的网络侧接口发生环路时,接口如果配置为Block或Shutdown动作,会导致设备上的业务全部中断。因此不建议在网络侧接口部署Loop Detection功能。
发表评论