背景技术
MPLS L3VPN中的双归属组网为报文的转发提供了主备两条路径,在正常情况下,报文从主路径进行转发,如果主路径故障,则报文会从备路径进行转发,从而能够避免业务中断。
参见图1,图1是MPLS L3VPN中双归属组网示意图,包括用户边缘设备(Custom Edge,CE):CE1、CE2、服务提供商边缘设备(Provider Edge,PE):PE1、PE2、PE3,CE1双归属到PE1和PE2,并经由PE1到PE3的公网隧道1(图1中的粗实线代表公网隧道)、以及经由PE2到PE3的公网隧道2连接到PE3,并最终接入到CE2,其中,PE1到PE3可能有很多路径,公网隧道1承载在其中的最优路径所在的链路上,PE2到PE3可能有很多路径,公网隧道2承载在其中的最优路径所在的链路上。
如图1所示,CE1和CE2之间存在路径1:CE1-PE1-公网隧道1-PE3-CE2、以及路径2:CE1-PE2-公网隧道2-PE3-CE2,路径1为主路径,路径2为备路径,在正常情况下,报文从路径1转发。当CE1和PE1之间的物理链路发生故障后,CE1会检测到该故障并将报文切换到路径2;当PE1和PE3之间的路径1所在的链路发生故障时,CE1设备无法感知到该故障,仍然将报文从路径1转发,然而,由于此时路径1所在的链路故障,PE1到PE3之间的最优路径变化,PE1会将报文从变化后的PE1到PE3的最优路径转发,而 PE2到PE3的承载公网隧道2的最优路径可能优于变化后的PE1到PE3的最优路径,从而导致CE1不能将报文沿最优路径转发,下面结合图2进行说明。
参见图2,图2是MPLS L3VPN双归属组网中承载公网隧道的链路故障时的报文转发示意图,图2基于图1,并将图1中的公网隧道用具体的设备代替,如图2所示,图1中承载公网隧道1的链路即图2中PE1到PE3的直连链路:PE1-PE3,图1中承载公网隧道2的链路即图2中的PE2到PE3的链路:PE2-P3-PE3;此外,图2中还画出了PE1到PE3的另外一条可能路径:PE1-P1-P2-PE3。
在图2中,如果PE1到PE3的直连链路故障,CE1无法及时感知到该故障,因此仍将报文发往PE1,PE1会将该报文沿PE1到PE3之间的次优路径所在的链路:PE1-P1-P2-PE3转发。显然,链路PE2-P3-PE3实际上是优于链路PE1-P1-P2-PE3的,但是,CE1却不能切换报文的路径,从而无法将报文沿CE1到CE2的最优路径转发。
发明内容
有鉴于此,本发明的目的在于提供一种基于MPLS L3VPN的双归属组网中的报文转发方法,该方法能够在转发报文的最优路径所在链路故障后选择当前的最优路径转发报文。
为了达到上述目的,本发明提供的技术方案为:
一种基于MPLS L3VPN的双归属组网中的报文转发方法,应用于互为双归属的两个PE设备中的任一PE设备,所述两个PE设备双归接入到本地CE,并分别与接入到远端CE的对端PE设备建立有公网隧道;其特征在于,所述两个PE设备之间建立有物理链路,该方法包括:
检测到承载本PE设备与对端PE设备之间的公网隧道的链路故障时,计算本PE设备到达对端PE设备的最优路由以及所述另一PE设备到达对端PE设备的最优路由;
判断本PE设备到达对端PE设备的最优路由是否优于所述另一PE设备 到达对端PE的最优路由,当所述另一PE设备到达对端PE的最优路由优于本PE设备到达对端PE设备的最优路由时,通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障,用以使本地CE设备将报文从所述另一PE设备转发。
本发明还提供了一种基于MPLS L3VPN的双归属组网中的报文转发设备,该设备可应用为互为双归属的两个PE设备中的任一PE设备,所述两个PE设备双归接入到本地CE,并分别与接入到远端CE的对端PE设备建立有公网隧道;所述两个PE设备之间建立有物理链路,该报文转发设备包括:故障检测单元、路由计算单元、故障通知单元;当本设备应用为所述任一PE设备时,
所述故障检测单元,用于检测承载本PE设备与对端PE设备之间的公网隧道的链路是否发生故障;
所述路由计算单元,用于在故障检测单元检测到承载本PE设备与对端PE设备之间的公网隧道的链路故障时,计算本PE设备到达对端PE设备的最优路由以及所述另一PE设备到达对端PE设备的最优路由;
所述故障通知单元,用于判断故障检测单元计算的本PE设备到达对端PE设备的最优路由是否优于所述另一PE设备到达对端PE的最优路由,当所述另一PE设备到达对端PE的最优路由优于本PE设备到达对端PE设备的最优路由时,通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障,用以使本地CE设备将报文从另一PE设备转发。
综上所述,本发明中,检测到承载本PE设备到对端PE设备之间的公网隧道的链路故障时,计算本PE设备到达对端PE设备的最优路由以及与本PE设备互为多归属的另一PE设备到达对端PE设备的最优路由,如果所述另一PE设备到达对端PE设备的最优路由优于本PE设备到达对端PE设备的最优路由,则对本地CE设备进行故障通知,以使本地CE设备将报文沿经所述另一PE设备到达远端CE设备的路径转发。本发明能够能够沿最优路径转发报文。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
参见图3,图3是本发明实施例基于MPLS L3VPN的双归属组网中的报文转发方法的流程示意图,本实施例应用于互为双归属的两个PE设备中的任一PE设备,所述两个PE设备双归接入到本地CE,并分别与接入到远端CE设备的对端PE设备建立有公网隧道;本实施例包括以下步骤:
步骤301、检测到承载本PE设备与对端PE设备之间的公网隧道的链路故障时,计算本PE设备到达对端PE设备的最优路由以及所述另一PE设备到达对端PE设备的最优路由。
在实际应用中,本PE设备和对端PE设备之间,除了承载本PE设备和对端PE设备之间的公网隧道的链路外,还可能存在一条或多条其它链路,而承载本PE设备和对端PE设备之间的公网隧道的链路是本PE设备到达对端PE设备的最优路径。
当承载本PE设备和对端PE设备之间的公网隧道的链路故障时,为了使报文能够沿本地CE设备到达远端CE设备的最优路径转发,需要首先确定本地 CE设备到达远端CE设备最优路径。由于本地CE设备到达本PE设备与本地CE设备到达与本PE设备互为多归属的另一PE设备的跳数相同,且对端PE设备到达远端CE设备只存在一条路径,因此,只需要比较本PE设备到达对端PE设备的路径和与本PE设备互为多归属的另一PE设备到达对端PE设备的路径的优劣,即可确定本地CE设备到达远端CE设备的最优路径。
为此,可以在检测到承载本PE设备和对端PE设备之间的公网隧道的链路故障后,计算本PE设备到达对端PE设备的最优路由(可以从本PE设备当前学习到的路由中计算得到最优路由)、以及与本PE设备互为多归属的另一PE设备到达对端PE设备的最优路由。
为了能够计算得到与本PE设备互为多归属的另一PE设备到达对端PE设备的最优路由,本PE设备需要建立与所述另一PE设备之间的物理链路,通过该物理链路,本PE设备可以从所述另一PE设备学习到对端PE设备的路由,可以根据从所述另一PE设备学习到路由得到所述另一PE设备到达对端PE设备的最优路由。计算所述另一PE设备到达对端PE设备的最优路由的方法具体可以为:计算本PE设备经由与所述另一PE设备之间的物理链路到达所述另一PE设备的最优路由以及本PE设备经由与所述另一PE设备之间的物理链路到达所述对端PE的最优路由,根据本PE设备经由与所述另一PE设备之间的物理链路到达所述另一PE设备的最优路由和本PE设备经由与所述另一PE设备之间的物理链路到达所述对端PE的最优路由计算所述另一PE设备到达对端PE设备的最优路由(也即是:将本PE设备经由与所述另一PE设备之间的物理链路到达所述另一PE设备的最优路由的代价(cost)从本PE设备经由与所述另一PE设备之间的物理链路到达所述对端PE的最优路由的cost中扣除,得到的结果即是所述另一PE设备到达对端PE设备的最优路由的cost)。
步骤302、判断本PE设备到达对端PE设备的最优路由是否优于所述另一PE设备到达对端PE的最优路由,当所述另一PE设备到达对端PE的最优路由优于本PE设备到达对端PE设备的最优路由时,通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障,用以使本地CE设备将报文从所 述另一PE设备转发。
当所述另一PE设备到达对端PE的最优路由不比本PE设备到达对端PE设备的最优路由更优时,只需要按照现有技术的方法在当前本PE设备到达对端PE设备的最优路径上建立公网隧道,如果报文原来是沿本地CE设备-本PE设备-对端PE设备-远端CE设备转发,则报文仍沿该路径转发,不同之处在于:报文从本PE设备到达对端PE设备的具体路径改变;如果报文原来是沿本地CE设备-所述另一PE设备-对端PE设备-远端CE设备转发,则报文仍沿原来的路径转发。
这里,本PE设备通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障后,如果报文原来是沿本地CE设备-本PE设备-对端PE设备-远端CE设备转发,则本地CE设备会将报文从所述另一PE设备转发,报文的转发路径转变为:本地CE设备-所述另一PE设备-对端PE设备-远端CE设备;如果报文原来是沿本地CE设备-所述另一PE设备-对端PE设备-远端CE设备转发,则报文仍沿原来的路径转发。
图3所示本发明实施例中,本PE设备通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障方法可以有多种,例如:
本PE设备还可以建立与本地CE设备的BFD检测会话,利用BFD检测会话进行故障通知。这种情况下,所述通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障方法为:通过本设备与本地CE设备之间建立的BFD会话通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障,包括:在双向转发检测(Bidirectional Forwarding Detection,BFD)时间内停止向本地CE发送BFD回声(BFD Echo)报文。这样,在BFD检测时间内本地CE设备不会接收到本PE设备的BFD Echo报文,由此确定本地CE设备与本PE设备之间的链路故障,进而将报文从所述另一PE设备转发,报文的转发路径完成切换。
也可以定义一种故障通知报文,通过向本地CE设备发送故障通知报文的方式来通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故 障。
下面结合图2对图3所示本发明实施例进行举例说明:
初始时,PE1到PE3的直连链路正常,报文沿链路CE1-PE1-PE3-CE2转发;
当PE1到PE3的直连链路故障时,PE1计算PE1到达PE3的最优路由以及PE2到达PE3的最优路由(根据PE1经由PE1到PE2的物理链路到达PE2的路由,以及PE1经由PE1到PE2的物理链路到达PE3的最优路由确定),最终确定PE1到达PE3的最优路由为3跳,PE2到达PE3的最优路由为2跳,后者较优,因此PE1停止向CE1发送BFD Echo报文;
接着,CE1在BFD检测时间内接收不到PE1的BFD Echo报文,确定PE1到PE3的链路故障,切换报文转发路径,将报文沿CE1-PE2-P3-PE3-CE2转发,切换后的报文转发路径如图4所示。
以上对本发明实施例基于MPLS L3VPN的双归属组网中的报文转发方法进行了详细说明,本发明还提供了一种基于MPLS L3VPN的双归属组网中的报文转发设备,下面结合图5进行说明。
图5是本发明实施例基于MPLS L3VPN的双归属组网中的报文转发设备的结构示意图,该设备可应用为互为双归属的两个PE设备中的任一PE设备,所述两个PE设备双归接入到本地CE,并分别与接入到远端CE的对端PE设备建立有公网隧道;所述两个PE设备之间建立有物理链路,该设备包括:故障检测单元501、路由计算单元502、故障通知单元503;当该设备应用为互为双归属的两个PE设备中的任一PE设备时,
故障检测单元501,用于检测承载本PE设备与对端PE设备之间的公网隧道的链路是否发生故障;
路由计算单元502,用于在故障检测单元501检测到承载本PE设备与对端PE设备之间的公网隧道的链路故障时,计算本PE设备到达对端PE设备的最优路由以及所述另一PE设备到达对端PE设备的最优路由;
故障通知单元503,用于判断故障检测单元502计算的本PE设备到达对端PE设备的最优路由是否优于所述另一PE设备到达对端PE的最优路由,当所述 另一PE设备到达对端PE的最优路由优于本PE设备到达对端PE设备的最优路由时,通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障,用以使本地CE设备将报文从另一PE设备转发。
所述路由计算单元502在计算所述另一PE设备到达对端PE设备的最优路由时,用于:计算本PE设备经由与所述另一PE设备之间的物理链路到达所述另一PE设备的最优路由以及本PE设备经由与所述另一PE设备之间的物理链路到达所述对端PE的最优路由,根据本PE设备经由与所述另一PE设备之间的物理链路到达所述另一PE设备的最优路由和本PE设备经由与所述另一PE设备之间的物理链路到达所述对端PE的最优路由计算所述另一PE设备到达对端PE设备的最优路由。
所述故障通知单元503在通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障时,用于:通过本PE设备与本地CE设备之间建立的BFD会话通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障。
所述故障通知单元503在通过本PE设备与本地CE设备之间建立的BFD会话通知本地CE设备承载本PE设备与对端PE设备之间的公网隧道的链路故障时,用于:在BFD检测时间内停止向本地CE设备发送BFD Echo报文。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。