S6500启用灵活QinQ时,在某些业务应用场景时可能存在流量在端口间广播复制的情况说明
在灵活QinQ的实现中,QinQ报文在转发过程中是经过外层Tag修改的,这样就造成报文上下行所依据的vlan不对称,所以灵活QinQ的报文转发不是传统的方式,而是一种通道式的处理,是根据PVID和报文外层VID决定的虚拟通道来转发。上行流量根据PVID,下行流量根据报文外层VID。如果下行端口配置相同的PVID,会导致上行流量扩散到其他下行端口上;如果不同端口上的灵活QinQ实例配置了相同的外层VID,则会导致下行流量在多个下行端口上复制。
1.1 灵活QinQ的典型应用场景:直接从S6500分别上行至SR或BRAS
需求描述:
在通常的组网中,S6500只有一个上行口连接至BRAS时,是无需启用灵活QinQ的,只需配置QinQ即可满足要求。
但在有些业务场景中,S6500有两个上行口,一个上行口连接到BRAS,终结PPPoE流量(双TAG),;另一个上行口连接到SR,终结企业专线用户(因现网中SR大多不支持处理QinQ报文,故为单TAG);下行口上来的PPPoE流量需要做内外层VLAN映射,而且不同的下行口映射到不同的外层VLAN TAG;下行口上来的企业专线用户不需要打外层VLAN TAG(处理方式是先在下行口打上PVID形成双层TAG,再在连SR的上行口剥离外层TAG转成单TAG发送);
在这种业务场景中,必须确保各个下行口的pvid不重复,且端口下各企业专线用户使用的vlan不重复,否则就会产生流量复制的问题。
组网:
图1
配置描述:
全局视图下:
vlan 2001
Vlan 2002
Vlan 2101
Vlan 2102
Vlan 3001
Vlan 3002
/*创建端口 pvid、vid所属 vlan,以及企业专线 vlan*/
PortA(上行口to SR)端口视图下:
port link-type hybrid
port hybrid vlan 2001 untagged
port hybrid vlan 2002 untagged
/*企业专线业务的上行流量去掉外层 tag上行至SR*/
port hybrid vlan 3001 tagged
port hybrid vlan 3002 tagged
/*配置允许企业专线业务的回程流量进入交换机*/
PortB(上行口to BRAS)端口视图下:
port link-type hybrid
port hybrid vlan 2101 tagged
port hybrid vlan 2102 tagged
/*PPPOE拨号业务的上行流量带双 tag上行至 BRAS,
并允许带双 tag的PPPOE回程流量进入交换机*/
Port1(下行口)端口视图下:
port link-type hybrid
port hybrid pvid vlan 2001
/*设置端口 pvid为2001,企业专线业务被打上 vlan 2001的外层 tag上行*/
port hybrid vlan 3001 tagged
/*配置把企业专线业务Vlan 3001的回程流量带一层 tag下送至Dslam */
port hybrid vlan 2001 2101 untagged
/*配置把PPPOE拨号业务的回程流量去掉外层 tag后下送至Dslam*/
vlan-vpn vid 2101 uplink PortB
raw-vlan-id inbound 1001 to 1999
/*配置 vlan 1001到 1999的PPPOE拨号业务进入交换机后打上 vlan 2101的外层 tag,(根据报文内层标签打上外层标签)并从上行口 PortB带 tag上行*/
undo ntdp enable
vlan-vpn enable
/*使能端口的 vlan-vpn功能*/
Port2(下行口)端口视图下:
port link-type hybrid
port hybrid pvid vlan 2002
/*设置端口 pvid为2002,企业专线业务被打上 vlan 2002的外层 tag上行*/
port hybrid vlan 3002 tagged
/*配置把企业专线业务Vlan 3002的回程流量带一层 tag下送至Dslam*/
port hybrid vlan 2002 2102 untagged
/*配置把PPPOE拨号业务的回程流量去掉外层 tag后下送至Dslam*/
vlan-vpn vid 2102 uplink PortB
raw-vlan-id inbound 1001 to 1999
/*配置 vlan 1001到 1999的PPPOE拨号业务进入交换机后打上 vlan 2102的外层 tag,
并从上行口 PortB带 tag上行*/
undo ntdp enable
vlan-vpn enable
/*使能端口的 vlan-vpn功能*/
报文转发流程:
上行流程
1、 某企业用户的主机mac为A,接入vlan 为3001。其报文上送至port1时,根据端口配置会加上pvid的外层vlan,形成QinQ报文(外层tag为2001,内层tag为3001)。同时,mac A会被学习在vlan 2001的mac表中,对应端口port1。
2、QinQ的外层tag为2001,报文转发时,在vlan 2001中查找目的mac,如查不到则会选择在vlan 2001中广播,如上配置中vlan 2001只包含port A,故仅通过port A上行。根据端口配置,会剥离vlan 2001,还原成单层tag继续上行。
下行流程
1、 报文下行过程中,从端口port A进入,根据端口配置,对单层tag为3001的报文直接透传。
2、 报文在vlan 3001中查找目的mac(下行报文的目的mac为上行报文的源mac A),而mac A是被学习在vlan 2001中的,在vlan 3001查找不到。所以下行流量就会在vlan 3001中广播,如上配置中vlan 3001只包含一个下行端口port 1,则流量只通过port 1下行。如果有port 2也配置允许vlan 3001通过,则下行流量会在port 2中也复制一份。
必须提到的是,在现网应用中,往往因为数据规划的问题,无法使每个端口下接入的企业用户都使用不同的vlan上行,所以无法避免在转发中存在的流量复制问题。当多个下行端口都允许同一个企业用户vlan通过时,这种流量复制的情况将会比较严重,对带宽造成浪费。
1.2 针对以上的问题,华为公司给出的建议是:
1、 尽可能地通过数据规划,避免多个下行端口允许同一企业用户通过的情况;无法完全避免时,也尽量使同一个vlan包含尽量少的下行vlan;
2、 流量复制的根本原因,是在QinQ转发过程中,下行报文在vlan 3001中无法找到目的mac,可以通过在vlan 3001手工配置静态mac的方式来解决此问题,避免流量的广播。但由于大量的手工添加静态mac工作量非常大,故建议只选择一些收发流量特别大的mac进行添加。
3、 选用支持QinQ功能的SR设备,彻底规避上述的业务应用场景。目前,市场上还是有许多支持QinQ功能的SR设备可选的,华为的NE40E即是其中之一。
评论
我自己的DSLAM设备还是要管理的
所以, 无法避免的使用单层vlan + QinQ 功能
而本身, 启用QinQ的下行口, 学到的mac不应该在打了pvid以后的外层吧? 这个设计...