背景技术
STP(Spanning Tree Protocol,生成树协议)是根据IEEE协会制定的802.1D标准建立的,用于在局域网中消除数据链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择地对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文造成的报文处理能力下降的问题发生。
MSTP(Multiple Spanning Tree Protocol,多生成树协议)由IEEE制定的802.1s标准定义,它可以弥补STP和RSTP的缺陷,既可以快速收敛,又能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。MSTP的主要特点如下:
1)MSTP设置VLAN映射表(即:VLAN与生成树的对应关系表),将VLAN和生成树联系起来。通过增加“实例”(将多个VLAN整合到一个集合中)这个概念,可以将多个VLAN捆绑到一个实例中,以节省通信开销和资源占用率。
2)MSTP将一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
3)MSTP将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载分担。
目前,MSTP广泛运用于二层网络中,用于检测并阻塞二层网络中可能出现的物理环路,防止广播报文在二层网络中无限循环。然而,现有的MSTP仅仅运用于二层交换网络中,对于VPLS或PBB等虚拟二层网络却无法支持。这里,VPLS(Virtual Private LAN Service,虚拟专用局域网)是在公用网络中提供的一种点到多点的层2VPN业务;PBB(Provider backbone bridge,运营商骨干桥)是独立于电信自身的IP MAN,目前主要采用MAC in MAC技术来提供点对点专线业务。
在一些比较常见的VPLS和VPLS/PBB双栈组网应用中,只能依靠组网方式和增加限制来避免环路。
例如:在图1所示VPLS分层组网应用中,UPE1(UPE:User-facing Provider Edge,靠近用户侧的PE设备)分别与NPE1(NPE:Network Provider Edge,网络核心PE设备)、NPE2建立主备PW(Pseudo Wire,虚链路)连接,为了避免出现环路,NPE1与NPE2之间不能建立PW连接。正常情况下流量将在UPE1与NPE1之间或者UPE1与NPE2之间转发,NPE1/NPE2只能将来自UPE1流量转发到远端NPE或者将远端NPE的流量转发到本地UPE。倘若NPE1与NPE2之间建立了PW连接,将会产生UPE1-NPE1-NPE2-UPE1这样的环路流量。当然,可以在UPE1上将来自NPE2的流量丢弃,但是NPE2发送到UPE1的流量势必会影响UPE1的正常报文转发;并且,在UPE1设备发生主备PW切换或者回切时,可能导致瞬间环路或者丢包,影响VPLS流量转发质量。因此,为了避免这种情况,一般通过组网方式进行规避,即NPE1与NPE2之间不建立PW连接,这导致NPE1与NPE2下不能挂接CE(Customer Edge,用户网络边缘设备)。
再例如,在VPLS/PBB双栈组网应用中,所有VPLS域到PBB域的流量都必须经过中心双栈设备转接。倘若只有一台中心双栈设备,那么一旦中心双栈设备发生故障,VPLS域与PBB域之间的流量就无法转发;但是当存在多台中心双栈设备时,必然会在整个VPLS/PBB域内产生环路,如图2所示。
图2中,PE(Provider Edge,服务提供商网络上的边缘设备)为VPLS域内的边缘设备,PE2/BEB2和PE3/BEB3为两台双栈设备,BEB1为PBB域内的边缘设备,PE1发出的广播报文将沿PE1-PE2-BEB1-BEB3-PE1路径形成环路。为了避免形成环路,双栈组网目前还是仅限于只有一个中心双栈设备的组网,而这种组网方式本身存在很大安全隐患。
发明内容
本发明提供了一种在虚拟二层网络中避免环路的方法,以在虚拟二层网络的公网PW环形连接之间形成有效的环路检测,并修剪多余的连接去除环路,从而扩展VPLS/PBB等虚拟二层网络的组网运用。
本发明提供的一种在虚拟二层网络中避免环路的方法,包括:
A、在虚拟二层网络的网络设备的虚拟交换实例VSI中使能多生成树协议MSTP,并将VSI实例与一个MSTP实例绑定;
B、所述MSTP实例发送桥接协议数据单元BPDU报文进行环路检测。
较佳地,所述BPDU报文的目的媒体接入控制MAC地址为预先设置的特定地址,源MAC地址为发送所述BPDU报文的设备的MAC地址。
较佳地,所述预先设置的特定地址为01-80-C2-VSI实例的标识。
较佳地,所述虚拟二层网络包括:虚拟专用局域网VPLS分层网络和VPLS/运营商骨干桥PBB双栈组网网络;
所述VSI实例包括:VPLS实例和PBB实例。
较佳地,所述虚拟二层网络的网络设备为:服务提供商网络上的边缘设备PE;
该方法在MSTP实例发送BPDU报文进行环路检测之前,进一步包括:如果第一PE与第二PE建立了主虚链路PW连接,与第三PE建立了备PW连接,并且第二PE与第三PE之间存在PW连接,则:
将第一PE设置为根桥,在第一PE上将MSTP优先级设置为最高;在第二PE设备上,将第二PE与第一PE之间的PW连接设置为根PW连接,并将第二PE与第三PE之间的PW连接作为指定PW连接;在第三PE上,将第三PE与第二PE之间的PW连接作为指定PW连接,并将第三PE与第一PE之间的PW连接作为阻断PW连接。
较佳地,所述虚拟二层网络的网络设备为:骨干边缘桥BEB;
该方法在MSTP实例发送BPDU报文进行环路检测之前,进一步包括:如果第一BEB分别与第二BEB和第三BEB建立了PW连接,并且第二BEB与第三BEB之间存在PW连接,则:
将第一BEB设置为根桥,在第一BEB上将MSTP优先级设置为最高;在第二BEB设备上,将第二BEB与第一BEB之间的PW连接设置为根PW连接,并将第二BEB与第三BEB之间的PW连接作为指定PW连接;在第三BEB上,将第三BEB与第二BEB之间的PW连接作为指定PW连接,并将第三BEB与第一BEB之间的PW连接作为阻断PW连接。
在所述A之后可以进一步包括:
在VSI实例内为所述网络设备指定发送BPDU报文的对端;
在接收到BPDU报文时,网络设备将目的MAC为预先设置的特定地址的BPDU报文交由控制层处理;
在接收到来自本地用户设备侧的BPDU报文时,当作普通数据报文处理;
在接收到来自远端网络设备侧的BPDU报文时,当作普通数据报文处理。
在所述A之后可以进一步包括:进行如下映射:
将VSI实例虚链路PW的路径开销对应于MSTP实例的端口路径开销;
将VSI所在网络设备的标识作为扩展MSTP域内的桥标识;
将VSI实例的PW所在PW设备的出接口对应于MSTP域内的普通端口。
由上述技术方案可见,本发明提供的在虚拟二层网络中避免环路的方法通过在虚拟二层网络的网络设备的VSI实例中使能MSTP,并将VSI实例与一个MSTP实例绑定,从而,MSTP实例可以在虚拟二层网络中发送BPDU报文进行环路检测,并修剪多余的连接去除环路。将本发明方法应用与VPLS分层网络或VPLS/PBB双栈组网网络,可以在公网PW环形连接之间形成有效的环路检测,从而扩展VPLS/PBB的组网运用。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明的主要思想是:通过在虚拟二层网络的网络设备的VSI实例中使能MSTP,并将VSI实例与一个MSTP实例绑定,从而,MSTP实例可以在虚拟二层网络中发送桥接协议数据单元(BPDU,Bridge Protocol Data Unit)报文进行环路检测,并修剪多余的连接去除环路,从而扩展VPLS/PBB的组网运用。
本发明中,VSI实例包括VPLS实例和PBB实例,以VPLS分层组网和VPLS/PBB双栈组网为例,其中,VPLS内部CE双归属的情形与VPLS分层类似,以分层VPLS为例进行说明即可,如图3所示。
PE1分别与PE2和PE3建立了主备PW连接,PE2和PE3之间建立VPLS连接,BEB4与PE2、PE3之间建立了MAC IN MAC连接。上述组网中有两个可能出现的环路,分别是PE1-PE2-PE3-PE1和BEB4-PE2-PE3-BEB4。为了避免这两个环路,可以在PE设备的VSI实例中使能MSTP,并将VSI实例与MSTP的一个实例绑定,由MSTP发送特定的桥接协议数据单元(BPDU,Bridge Protocol Data Unit)进行环路检测。
为了与现有用户网络中MSTP BPDU报文相区分,需要对VSI的BPDU报文进行扩展,使之能够携带VSI信息并能够被各个PE/BEB设备接收。通常情况下,BPDU的目的MAC为01-80-C2-00-00-00和01-80-C2-00-00-08,扩展后的BPUD报文其目的MAC为01-80-C2-VSI ID,如VSI ID为1,则对应其BPDU报文目的MAC为01-80-C2-01-00-00,PE/BEB设备识别该目的MAC地址。BPDU报文的源MAC为发送端设备的MAC,也就是发送该BPDU报文的设备的MAC地址。
在PE1设备的VSI实例内使能MSTP的方法如下:
vsi vsi1 static//创建vsi1实例
vsi vsi1-id 1 //vsi 1实例的ID
peer 2.2.2.2enable mstp//创建到PE2的PW连接并使能MSTP
peer 3.3.3.3enable mstp//创建到PE2的PW连接并使能MSTP
在BEB4设备的VSI实例内使能MSTP的方法如下:
vsi vsi1 i-sid 1//创建vsi1实例
peer 2-2-2enable mstp//创建到PE2的PW连接并使能MSTP
peer 3-3-3enable mstp//创建到PE3的PW连接并使能MSTP
PE2和PE3上的VSI实例是VPLS/PBB双栈实例,因此,需要包含VPLS对端和PBB对端的MSTP配置,PE2设备上使能MSTP方法如下:
vsi vsi1 i-sid 1
vsi vsi1-id 1
peer 1.1.1.1 enable mstp
peer 3.3.3.3enable mstp
peer 4-4-4enable mstp
PE3设备上使能MSTP方法如下:
vsi vsi 1i-sid 1
vsi vsi1-id 1
peer 1.1.1.1enable mstp
peer 2.2.2.2enable mstp
peer 4-4-4enable mstp
经过上述处理后,在分层VPLS域内的各个PE设备的VPLS实例内使能了MSTP,PE设备之间将通过定时发送扩展的BPDU协议报文进行MSTP环路检测。与普通的MSTP BPDU报文相比,扩展后的BPDU报文其目的MAC为00-80-C2-VSI ID,其源MAC为发送端设备的MAC,且外层封装VPLS隧道头部。
为了在VSI域内实现正确的MSTP检测,需要进行以下设置:
1)在VSI实例内为PE设备指定发送BPDU报文的对端,PE设备发送BPDU报文时只向指定的VSI实例内的Peer发送,而不能向没有指定的Peer对端和本地CE侧发送该协议报文。
2)在接收BPDU报文时,接收到的报文是一个携带VPLS标签的二层报文,PE设备识别扩展的BPDU的目的MAC属性,转发芯片将报文Trap上CPU,交由PE设备的控制层处理。
3)对于本地CE侧进入的MSTP BPDU协议报文,当作普通数据报文处理。
4)对于远端PE侧进入的MSTP BPDU协议报文,当作普通数据报文处理。
扩展后的BPDU报文格式如表1所示:
MAC |
VPLS标签 |
MAC(00-80-C2-VSI ID) |
发送端MAC |
BPDU Load |
表1
表1中,外层MAC为PE设备与其它Peer对端连接所使用的出接口MAC,VPLS标签为PE之间的PW连接标签,内层MAC的目的MAC为00-80-C2-VSI ID,按照这种扩展方式可以支持16M个VSI实例,远远满足现有VPLS规格要求。
为了在VSI域内实现MSTP检测,必须将VSI内的基本属性与普通的MSTP域进行映射,具体包括以下几个方面:
(1)VSI实例与MSTP绑定,对应于普通MSTP域内的VLAN,多个VSI实例可以和一个MSTP实例绑定,就象多个VLAN与一个MSTP实例绑定一样;
(2)VSI PW的路径开销对应于MSTP内的端口路径开销;
(3)VSI所在PE设备的ID作为扩展MSTP域内的桥ID;
(4)VSI PW所在PW设备的出接口对应于MSTP域内的普通端口。
仍然以图3中的分层双栈组网为例,为了满足分层双栈组网的环路检测要求,可以分别在VPLS域内和PBB域内进行MSTP检测,VPLS域和PBB域分属于不同的MSTP实例,在两个实例内分别阻断目的PW连接。在VPLS域内进行如下设置:
(1)PE1为根桥,因此在PE1设备上将STP优先级配置成最高(优先级高的设备作为根桥);
(2)PE2设备上,PE2和PE1之间的PW连接作为根PW,PE2与PE3之间的PW作为指定PW;
(3)PE3设备上,PE3与PE2之间的PW作为指定PW,PE3与PE1之间的PW作为阻断PW。
之后,VPLS域内将在PE1-PE2-PE3的PW连接上生成基于MSTP的PW状态。正常情况下,PE3-PE1之间的PW被阻断(Block),PE1-PE2-PE3之间形成正常的转发路径,只有当PE1-PE2-PE3之间的PW连接出现中断时,才会让PE3-PE1之间的PW状态变成Forward。
同样的,在PBB域内也可以进行MSTP检测,在PBB域内进行如下设置:
(1)BEB3为根桥,因此在BEB3设备上将STP优先级配置成最高;
(2)BEB2设备上,BEB2和BEB3之间的PW连接作为根PW,BEB2与BEB4之间的PW作为指定PW;
(3)BEB4设备上,BEB4与BEB3之间的PW作为指定PW,BEB4与BEB4之间的PW作为阻断PW。
正常情况下,值得注意的是BEB2和BEB3之间的PW连接为VPLS PW连接,在双栈组网环境下VPLS PW和PBB PW是等同的转发路径。PBB域内只有BEB4-BEB2-BEB3连接构成正常转发路径,而BEB4-BEB3之间的PW被阻断,只有当前面的BEB4-BEB2-BEB3之间的连接中断时其状态才会变成Forward。
在分层VPLS和双栈网络中,经过MSTP运算后,在PE3设备上,PE3-PE1的PW连接被Block,BEB4设备上,BEB4设备到BEB3之间的PW连接被Block,如图4所示。
对于VPLS域内的PE1设备而言,本地私网侧上来的未知单播和广播流量经过VPLS主PW连接被广播到PE2,PE2接收该报文,并广播到PE3和BEB4,由二者分别转发给本端的CE设备。此时,对于PE3设备,由于PE3到PE1之间的PW被Block,因此流量不会被重复广播回PE1;与此同时,由于BEB4到达PE3的PW连接被Block,因此,到达BEB4的广播流量也会被丢弃。
对于PBB内的BEB4而言,本地私网侧上来的未知单播和广播流量,经过PBB转发,由于PBB目前没有主备PW之分,不能预先选择转发路径,因此会在PBB实例内广播,同时由于BEB4和BEB3之间的PW被Block,因此报文只会被转发到BEB2,BEB2接收到报文后转发到PE1和PE3,PE1接收公网的VPLS报文后转发被本地CE设备,由于水平分割的影响不会再次转发到PE3的公网侧;PE3设备从PE2接收到VPLS报文后,会转发给本地CE设备,同时向PE1设备转发,由于PE3-PE1之间的PW被Block,因此报文不会再次转发到PE1。
因此,本发明在分层双栈的环境下,通过在VSI域内引入MSTP,能够根据组网需要对VSI PW连接进行正确的阻断和转发,保障了网络的拓扑状态,同时也提高了网络的可靠性。
由上述技术方案可见,本发明提供的在虚拟二层网络中避免环路的方法通过在虚拟二层网络的网络设备的VSI实例中使能MSTP,并将VSI实例与一个MSTP实例绑定,从而,MSTP实例可以在虚拟二层网络中发送BPDU报文进行环路检测,并修剪多余的连接去除环路。将本发明方法应用与VPLS分层网络或VPLS/PBB双栈组网网络,可以在公网PW环形连接之间形成有效的环路检测,从而扩展VPLS/PBB的组网运用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。