基于OpenFlow实现MSRP环网保护系统的方法及装置与流程

文档序号:12133702阅读:720来源:国知局
基于OpenFlow实现MSRP环网保护系统的方法及装置与流程

本发明涉及一种MPLS-TP共享环保护(MSRP)技术,尤其是涉及一种基于OpenFlow实现MSRP环网保护系统的方法及装置。



背景技术:

环状拓扑是MPLS-TP网络中应用最广泛的拓扑形式,MPLS-TP环保护倒换(MRPS)要求在环网故障时业务恢复时间小于50ms。MRPS有两种机制:Wrapping(环回)方式;Steering(转向)方式。Wrapping方式类似于SDH中得到广泛应用的复用段环保护MS-SPRing,无故障时,用户业务跑在工作LSP上;故障发生时,故障区段的邻节点检测到故障后,通过APS协议把所有工作LSP上业务桥接到专业的保护隧道上,业务在保护隧道上沿着环传输到故障区段的对端邻节点后再桥接回工作工作LSP。

因此,传统的MPLS-TP已经支持了MPLS-TP共享环保护(MSRP)。参照图1所示,标签交换路径LSP1从E点上环,LSP2从A点上环,LSP3从B点上环,它们最后都要从D点下环。那么针对所有要从D点下环的报文,在环上的工作环隧道就是顺时针的D->E->F->A->B->C(记为RcW_D,),Protection环隧道就是逆时针的D->C->B->A->F->E(记为RaP_D)。其中RcW_D中R表示环(ring),c表示顺时针方向,W表示工作(Working),D表示下环点是D。正常情况下,报文不论从哪个节点上环,都会沿着RcW_D到达D点然后下环。如果环上出现了链路故障,就会切换到RaP_D,到达D点下环。其中,图中虚线------表示物理链路physical links,★★★代表工作环隧道RcW_D,###代表保护环隧道RaP_D。

以LSP2从A点上环为例,链路完好的时候,顺序是A->B->C->D。假设B-C之间链路断了,那么路线就变成A->B->A->F->E->D。等到B-C之间链路恢复,那么就又回到A->B->C->D。

但是,现有MPLS-TP实现的MSRP环网保护,存在以下几点缺陷:1、配置复杂,环上有多个节点,每个节点既要有去往其它节点的保护环,又要有上环和下环的MPLS标签配置,如果再考虑环上节点的增删,那就更麻烦了。2、不方便统一管理。环上多个节点需要各自配置,如果厂家不同,配置方法可能也不相同。

因此,需要提供一种新的方案来实现MPLS-TP网络中的MSRP环网保护,以便于进行统一配置和管理。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种基于OpenFlow实现MSRP环网保护系统的方法及装置,通过OpenFlow的语义以实现MPLS-TP网络中的MSRP环网保护的配置。

为实现上述目的,本发明提出如下技术方案:一种基于OpenFlow实现MSRP环网保护系统的方法,包括:

S1,拓扑发现:

控制器向所有被控制的交换机下发第一流表,获得MSRP环上节点的排列顺序和互连的端口号;

S2,配置上环和下环动作:

向MSRP环上除下环点外的其他环节点下发第一组表和与第一组表对应的第二流表,用于在每个环节点上配置到下环点的MPLS标签、工作环隧道MPLS标签及保护环隧道MPLS标签;并在下环点上配置第三流表,使其将接收到的MPLS报文弹掉工作环/保护环隧道MPLS标签并发给MSRP环外的下一跳;

S3,配置保护环:

向环上除下环点外的其他环节点下发第二组表及向环上除下环点及其顺时针方向的上游邻节点外的其他环节点下发与第二组表对应的第四流表,以使环上节点将从其第一出口收到报文优先不改变标签从其与第一出口相反方向的第二出口转发,当第二出口故障时将标签改为保护环隧道MPLS标签并从第一出口转发,当第二出口恢复后,仍沿第二方向转发;

向环上除下环点外的其他环节点下发第三组表及向环上除下环点即其顺时针方向的上游邻节点外的其他环节点下发与第三组表对应的第五流表,以使环上节点将从其第二出口收到报文优先不改变标签从其第一出口转发,当第一出口故障时,则将报文丢弃;

其中,当第一出口为逆时针出口时,第二出口则为顺时针出口,反之,当第一出口为顺时针出口时,第二出口则为逆时针出口。

优选地,所述步骤S1包括:所述控制器采用拓扑发现机制向所有被控制的交换机发送用于匹配LLDP的所述第一流表,然后通过packet_out消息从各台交换机的接口发出LLDP,等到所述LLDP被其它交换机送上控制器,控制器就能得到整个MSRP环拓扑,即环上节点的排列顺序和互联的端口号。

优选地,所述方法还包括:

S4,MSRP环上减少一个或多个节点:

将去掉的节点上的配置全部删除,并将其顺时针方向的下一跳节点去掉所述第四流表的配置,并更新其逆时针方向的下一跳节点的MAC地址为其顺时针方向的下一跳节点的MAC;同时将其逆时针方向的下一跳节点去掉所述第五流表的配置,并更新其顺时针方向的下一跳节点的MAC地址为其逆时针方向的下一跳节点的MAC。

优选地,所述方法还包括:

S5,MSRP环上将减少的节点重新增加上:

将所述步骤S4中去掉的配置重新补回来,并把修改的再改回去。

优选地,所述第一、第二、第三组表的类型均为快速故障切换(Type-FF)。

本发明还提供了一种基于OpenFlow实现MSRP环网保护系统的装置,所述装置包括:

拓扑发现模块:用于向所有被控制的交换机下发第一流表,以使控制器获得MSRP环上节点的排列顺序和互连的端口号;

上环和下环动作配置模块:用于向MSRP环上除下环点外的其他环节点下发第一组表和与第一组表对应的第二流表,用于在每个环节点上配置到下环点的MPLS标签、工作环隧道MPLS标签及保护环隧道MPLS标签;并在下环点上配置第三流表,以使上环点将接收到的MPLS报文弹掉工作环/保护环隧道MPLS标签并发给MSRP环外的下一跳;

保护环配置模块:

用于向环上除下环点外的其他环节点下发第二组表及向环上除下环点及其顺时针方向的上游邻节点外的其他环节点下发与第二组表对应的第四流表,以使环上的上环点优先将报文加上工作环隧道MPLS标签从其第二出口发出,当第二出口故障时加上保护环隧道MPLS标签从第一出口发出,当第二出口恢复后,加上工作环隧道MPLS标签并从其第二出口发出;并使环上节点将从其第一出口收到报文优先不改变标签从其第二出口转发,当第二出口故障时将标签改为保护环隧道MPLS标签并从第一出口转发,当第二出口恢复后,仍沿第二方向转发;

并且,用于向环上除下环点外的其他环节点下发第三组表及向环上除下环点即其顺时针方向的上游邻节点外的其他环节点下发与第三组表对应的第五流表,以使环上节点将从其第二出口收到报文优先不改变标签从其第二出口转发,当第二出口故障时,则将报文丢弃;

其中,当第一出口为逆时针出口时,第二出口则为顺时针出口,反之,当第一出口为顺时针出口时,第二出口则为逆时针出口。

优选地,所述拓扑发现模块采用拓扑发现机制向所有被控制的交换机发送用于匹配LLDP的所述第一流表,然后通过packet_out消息从各台交换机的接口发出LLDP,等到所述LLDP被其它交换机送上控制器,控制器就能得到整个MSRP环拓扑,即环上节点的排列顺序和互联的端口号。

优选地,所述装置还包括:节点删除模块,用于删除MSRP环上的一个或多个节点,并将去掉的节点上的配置全部删除,并将其顺时针方向的下一跳节点去掉所述第二组表和第四流表的配置,并更新其逆时针方向的下一跳节点的MAC地址为其顺时针方向的下一跳节点的MAC;同时将其逆时针方向的下一跳节点去掉所述第五流表的配置,并更新其顺时针方向的下一跳节点的MAC地址为其逆时针方向的下一跳节点的MAC。

优选地,所述装置还包括:节点增加模块,用于将去掉的节点重新增加上,并将节点删除模块去掉的配置重新补回来,把修改的再改回去。

与现有技术相比,本发明基于OpenFlow的语义实现MPLS-TP网络中的MSRP环网保护的配置,采用快速故障切换组表实现环网保护切换,便于统一配置和管理。

附图说明

图1是传统的MPLS-TP共享环保护的拓扑示意图;

图2是本发明基于OpenFlow实现MSRP环网保护系统的方法的流程示意图。

具体实施方式

下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。

本发明所揭示的一种基于OpenFlow实现MSRP环网保护系统的方法及装置,基于OpenFlow语义,通过控制器向交换机下发流表,对环上节点统一分配标签和下发配置,用于MPLS-TP网络中的MSRP环网保护的实现。

本发明实施例参照图1所示的MSRP环来描述,以D点为下环点为例,非常容易推广到其它节点作为下环点的情况。假设每个节点的上下环接口是portl,在环上顺时针出口是port2,逆时针出口是port3。另外因每个节点的MAC地址都不一样,为了描述方便,假设该节点自身的MAC为Xs_MAC(X=A,B,C...),顺时针方向的节点的MAC为Xc_MAC,逆时针方向的节点的MAC为Xa_MAC。另外对于环上配置环保护所用的MPLS标签(label),可以认为是独立的label空间,可以单独考虑,即便和上环报文带的label或是下环报文改的label重合也没有问题。

具体地,结合图1和图2所示,本发明所揭示的一种基于OpenFlow实现MSRP环网保护系统的方法,包括以下步骤:

步骤1,拓扑(topo)发现:

具体地,采用常用的控制器topo发现机制,向被控制器控制的所有交换机下发第一流表:

Priority=40000,dl_type=0x88cc,actions=CONTROLLER:65535

即该流表中定义了优先级、匹配的链路层发现协议(LLDP),若匹配0x88cc(该值为LLDP对应的以太网类型字段值)的条件,便执行发送给控制器的动作指令(actions)。

然后控制器通过packet_out消息从各台交换机的接口发出LLDP(链路层发现协议),等到LLDP被其它交换机接收并匹配第一流表通过packet_in消息送上控制器(controller),控制器就能得到整个topo,就是环上节点的排列顺序和互联的端口号。这里packet_out消息用于控制器指定从交换机的特定端口发送数据包,或者用于转发通过Packet-in消息接收到的数据包。

步骤2,配置上环和下环动作:

配置上环动作:

当报文到了上环节点的时候,必须有统一的规则,让上环节点知道这个报文要被送到下环点D,一般这个对应的就是同一个的MPLS label,设为label_to_D。另外还要分配顺时针方向到工作环隧道的MPLS label,记为label_RcW_D和逆时针方向到保护环隧道的MPLS label,记为label_RaP_D。那么在环上除了节点D外,都要下发第一组表group:D_1和与第一组表对应的第二流表。

其中,定义的第一组表具体为:

group_id=D_1,type=ff,bucket=watch_port:2,set_field:$Xs_MAC->eth_src,set_field:$Xc_MAC->eth_dst,push_mpls:0x8847,set_field:$label_RcW_D->mpls_label,output:2,bucket=watch_port:3,set_field:$Xs_MAC->eth_src,set_field:$Xa_MAC->eth_dst,push_mpls:0x8847,set_field:$label_RaP_D->mpls_label,output:3

对应的第二流表具体为:

mpls,in_port=1,mpls_label=$label_to_D,actions=group:D_1

这样,当上环点的顺时针链路可用的时候,匹配第二流表的报文会按照group:D_1中第一个bucket所述加上label_RcW_D,并从其顺时针出口port2发给顺时针的下一跳;如果上环点的顺时针链路故障(down掉),那么报文会按照group:D_1的第二个bucket所述加上label_RaP_D并从其逆时针出口port3发给逆时针的下一跳。

如以A点为上环点为例,当节点A、B之间的链路可用(up)时,报文在A点上会被加上label_RcW_D,并从其顺时针出口port2发给节点B;节点A、B之间的链路down掉,那么报文会被加上label_RaP_D并从其逆时针出口port3发给节点F。

配置下环动作:

本实施例中,节点D为下环点,在节点D上,无论收到的MPLS报文是包含label_RcW_D标签还是label_RaP_D标签,都需要将这个mpls label弹出(pop)掉,然后发给环外的下一跳(假设不需要改变label_to_D,环外下一跳的MAC是Xn_MAC),那么需要配置下面两条流表:

mpls,in_port=2,mpls_label=label_RaP_D,actions=set_field:Xs_MAC->eth_src,set_field:Xn_MAC->eth_dst,pop_mpls:0x8847,output:1

即节点D将收到的MPLS报文中的label_RaP_D标签pop掉,从其下环接口port1发给环外的下一跳。

mpls,in_port=3,mpls_label=label_RcW_D,actions=set_field:Xs_MAC->eth_src,set_field:Xn_MAC->eth_dst,pop_mpls:0x8847,output:1

即节点D将收到的MPLS报文中的label_RcW_D标签pop掉,从其下环接口port1发给环外的下一跳。

步骤3,配置保护环

在环上除了D点外,下发第二组表group:D_2,在除了节点D和它顺时针的邻居节点E之外,剩下节点配第四流表。

具体地,定义的第二组表为:

group_id=D_2,type=ff,bucket=watch_port:2,set_field:$Xs_MAC->eth_src,set_field:$Xc_MAC->eth_dst,output:2,bucket=watch_port:3,set_field:$Xs_MAC->eth_src,set_field:$Xa_MAC->eth_dst,set_field:$label_RaP_D->mpls_label,output:3。

定义的与第二组表对应的第四流表为:

mpls,in_port=3,mpls_label=$label_RcW_D,actions=group:D_2。

这样,环上节点

(1)当从其逆时针出口port3收到报文时,带的最外层的label一定是label_RcW_D,如果port2出口链路是up的,则优先不改变标签从其顺时针出口port2转发出去,只做修改mac的动作。

(2)当从其逆时针出口port3收到报文时,若port2出口链路是down的,则从port3转发回去,除了修改mac的动作外,还要将最外层的label改为label_RaP_D,当port2恢复后,仍沿顺时针方向转发。

在环上除了D点外,下发第三组表group:D_3,并在除了节点D和它逆时针的邻居节点C之外,剩下节点配第五流表。

具体地,定义的第三组表为:

group_id=D_3,type=ff,bucket=watch_port:3,set_field:$Xs_MAC->eth_src,set_field:$Xc_MAC->eth_dst,output:3,bucket=watch_port:2,drop。

定义的与第三组表对应的第五流表为:

mpls,in_port=2,mpls_label=$label_RaP_D,actions=group:D_3。

这样,环上节点

(3)从port2收到报文,带的最外层的label一定是label_RaP_D,如果port3出口链路是up的,则将报文从优先不改变标签从其port3转发出去,只做修改mac的动作

(4)从port2收到报文,当port3出口链路是down的,那么说明环上有两处以上的链路或是节点断掉了,这个报文只能丢弃,否则如果把mplslabel改成label_RcW_D发回port2,会导致报文会在两个断点之间反复震荡。

因此,通过上述步骤2和步骤3中,上下环动作、保护环的配置,本发明的MSRP保护机制实现了上环点的保护和环上的保护。

通过步骤2的配置,实现的上环点的保护具体为:

对于环上的上环点来说,优选加上label_RcW_D标签并从port2发出。当port2 down的时候,会加上label_RaP_D标签并从port3发出。当port2恢复后,又会加上label_RcW_D并从port2发出。

通过步骤3的配置,实现的环上的保护具体为:

环上节点从port3收到的报文,会优选不改变label从port2沿着顺时针方向转发,如果port2 down掉,会将label改为label_RaP_D标签并从port3发出。当port2恢复后,又会沿着顺时针方向转发。

环上节点如果从port2收到报文,说明已经有节点发生保护切换了,要是port3 down了,说明出现了第二个故障点,此时无法提供保护,报文丢弃。

优选地,上述第一组表group:D_1、第二组表group:D_2和第三组表group:D_2类型均为快速故障切换。

上面都是以D点为下环点描述的,实际上环上每个点都可能是下环点,那么就都对应上述步骤S2和步骤S3的一套label的分配和flow/group的配置,这里便不再赘述。

本发明所揭示的一种基于OpenFlow实现MSRP环网保护系统的方法,还可包括:

步骤4,在MSRP环上减少一个或多个节点。

将以去掉的节点为下环点的整套配置需要全部删除,并将其顺时针方向的下一跳节点去掉所述第二组表和第四流表的配置,并更新其逆时针方向的下一跳节点的MAC地址为其顺时针方向的下一跳节点的MAC;同时将其逆时针方向的下一跳节点去掉所述第五流表的配置,并更新其顺时针方向的下一跳节点的MAC地址为其逆时针方向的下一跳节点的MAC。

以环上去掉节点E为例,则需要:

将以节点E为下环点的整套配置需要全部删除,且对于D为下环点的那套配置来说,它的顺时针下一跳变成了节点F,那么需要在节点F上去掉第四流表的配置,即mpls,in_port=3,mpls_label=$label_RcW_D,actions=group:D_2,并且更新节点D的MAC地址Dc_MAC为节点F的MAC地址。

对于以节点F为下环点的那套配置来说,它的逆时针下一跳变成了节点D,那么需要在节点D上去掉第五流表,即mpls,in_port=2,mpls_label=$label_RaP_D,actions=group:D_3,并且更新节点F的MAC地址Fa_MAC为节点D的MAC。

其他节点的配置去除原理与节点E的相同,可参照上述对节点E配置去除过程的表述,这里便不再赘述。

与步骤4相反,本发明所揭示的一种基于OpenFlow实现MSRP环网保护系统的方法,还可包括:

步骤5,MSRP环上节点的增加。

具体是将步骤S4中去掉的配置重新补回来,并把修改的再改回去。

如在步骤4去掉节点E后,又把节点E加回,那么只需要将步骤S4中去掉的补回来,修改的再改回去即可。

当然也可拓展到在原MSRP环上新增一个或多个节点,只需增加节点对应的配置,并且将与增加的节点相邻的逆时针/顺时针方向的下一个节点的相应配置进行修改,其过程即为上述减少节点的逆过程,这里不再赘述。

本发明还揭示了一种基于OpenFlow实现MSRP环网保护系统的装置,包括:

拓扑发现模块:用于采用拓扑发现机制向所有被控制的交换机下发用于匹配LLDP第一流表,然后通过packet_out消息从各台交换机的接口发出LLDP,等LLDP被其它交换机送上控制器,使控制器获得整个MSRP环拓扑,即MSRP环上节点的排列顺序和互连的端口号。

上环和下环动作配置模块:用于向MSRP环上除下环点外的其他环节点下发第一组表和与第一组表对应的第二流表,用于在每个环节点上配置到下环点的MPLS标签、工作环隧道MPLS标签及保护环隧道MPLS标签;并在下环点上配置第三流表,以使上环点将接收到的MPLS报文弹掉工作环/保护环隧道MPLS标签并发给MSRP环外的下一跳;

保护环配置模块:

用于向环上除下环点外的其他环节点下发第二组表及向环上除下环点及其顺时针方向的上游邻节点外的其他环节点下发与第二组表对应的第四流表,以使环上的上环点优先将报文加上工作环隧道MPLS标签从其顺时针出口发出,当顺时针出口故障时加上保护环隧道MPLS标签从逆时针出口发出,当顺时针出口恢复后,加上工作环隧道MPLS标签并从其顺时针出口发出;并使环上节点将从其逆时针出口收到报文优先不改变标签从其顺时针出口转发,当顺时针出口故障时将标签改为保护环隧道MPLS标签并从逆时针出口转发,当顺时针出口恢复后,仍沿顺时针方向转发;

并且,用于向环上除下环点外的其他环节点下发第三组表及向环上除下环点即其顺时针方向的上游邻节点外的其他环节点下发与第三组表对应的第五流表,以使环上节点将从其顺时针出口收到报文优先不改变标签从其逆时针出口转发,当逆时针出口故障时,则将报文丢弃。

所述装置还可包括:节点删除模块,用于删除MSRP环上的一个或多个节点,并将去掉的节点上的配置全部删除,并将其顺时针方向的下一跳节点去掉所述第二组表和第四流表的配置,并更新其逆时针方向的下一跳节点的MAC地址为其顺时针方向的下一跳节点的MAC;同时将其逆时针方向的下一跳节点去掉所述第五流表的配置,并更新其顺时针方向的下一跳节点的MAC地址为其逆时针方向的下一跳节点的MAC。

所述装置还可包括:节点增加模块,用于将去掉的节点重新增加上,并将节点删除模块去掉的配置重新补回来,把修改的再改回去。

本发明通过控制器向交换机下发流表,统一分配标签和下发配置,使控制器收集到环上节点的连接顺序,并维护节点的MAC信息,还有一个独立的MPLS label池来分配mpls label;并利用type为ff的组表,执行保护,优先使用工作环隧道,从而基于OpenFlow的语义实现了MPLS-TP网络中的MSRP环网保护,便于统一配置和管理。

本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1