报文转发方法及装置与流程

文档序号:13882491阅读:272来源:国知局
报文转发方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种报文转发方法及装置。



背景技术:

最大冗余树(maximallyredundanttrees,简称为mrt)快速重路由(fastre-route,简称为frr)是一种较新的frr技术,该技术中使用两个最大限度不同的转发拓扑,对单点的链路或节点故障能提供100%的保护。mrt架构定义了两种转发机制,即标签分发协议(labeldistributionprotocol,简称为ldp)转发机制和网络协议-隧道(ip-tunnel)转发机制。ldp转发机制通过不同的标签来区分是默认拓扑转发行为还是mrt转发行为,使得转发平面不作任何升级即可支持mrt-frr。ip-tunnel转发机制则需要浪费专用的mrtloopback地址来支持转发,同样也使得转发平面不作任何升级即可支持mrt-frr。相比而言,ldp转发机制更加合理,所以mrt架构的默认最大冗余树配置文件defaultmrtprofile中采用的就是ldp转发机制,目前尚未定义其它mrtprofiles。

分段路由技术将使得一个节点可以为报文指定其转发路径,而不是按一般的最短路径转发,通过在报文中附加由段标识segmentid组成的段列表segmentlist相关的信息,不需要在中间节点上为维护每路径的状态信息。分段路由主要扩展igp以支持通告和学习segmentid。一般在部署了分段路由的网络中,就不再需要部署ldp与基于流量工程扩展的资源预留协议(resourcereservationprotocol-trafficextension,简称为rsvp-te)了。在分段路由网络中,已知的frr技术有拓扑无关的无环替换路径(topologyindependentloopfreealternate,简称为ti-lfa),但是ti-lfa定义的保护规则十分复杂并且还不成熟。

在分段路由网络中引入mrt功能将有重要的意义,但是,迄今为止尚未有文献讨论这方面的内容,因此,在相关技术中,无法实现分段路由网络与mtr功能结合。



技术实现要素:

本发明实施例提供了一种报文转发方法及装置,以至少解决相关技术中存在的无法实现分段路由网络与mtr功能结合的问题。

根据本发明的一个实施例,提供了一种报文转发方法,包括:第一节点接收待转发的报文,其中,所述报文的目的地址为第二节点;所述第一节点在预先生成的拓扑中查找与所述报文对应的目标拓扑,其中,所述预先生成的拓扑包括:根据最大冗余树mrt算法生成得到的第一拓扑和第二拓扑,根据最短路径优先spf算法得到的第三拓扑,所述第一拓扑和所述第二拓扑以及所述第三拓扑彼此各不相同;所述第一节点在所述目标拓扑中查找用于转发到所述第二节点的下一跳节点,并基于预定转发机制将所述报文转发到所述下一跳节点,其中,所述预定转发机制采用基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

可选地,所述方法还包括:所述第一节点按照所述mrt算法从所述第一拓扑中至所述目的地址的路由和所述第二拓扑中至所述目的地址的路由中确定用于保护所述第三拓扑中至所述目的地址的路由的保护路由,并确定所述保护路由对应的拓扑为保护拓扑;和/或,所述第一节点按照颜色标志信息从所述第一拓扑中至隧道终点的路由和所述第二拓扑中至隧道终点的路由中确定用于保护所述第三拓扑中至所述目的地址的路由的保护路由,并确定所述保护路由对应的拓扑为保护拓扑,其中,所述隧道终点为所述第一节点为保护目的地址而选择的一个远端节点,所述远端节点针对故障点是无回路loop-free的,当故障发生时所述第一节点使用至所述远端节点的mrt隧道封装报文。

可选地,所述第一节点在预先生成的拓扑中查找与所述报文对应的目标拓扑包括:所述第一节点判断所述第三拓扑中的用于到达所述第二节点的链路是否出现故障;在判断出没有出现故障的情况下,所述第一节点确定所述第三拓扑为所述目标拓扑;和/或,在判断出出现故障的情况下,所述第一节点确定所述保护拓扑为所述目标拓扑。

可选地,所述第一节点在接收待转发的所述报文之前,所述方法还包括:所述第一节点根据所述mrt算法生成得到所述第一拓扑和第二拓扑,以及根据所述spf算法生成得到所述第三拓扑。

可选地,所述第一节点根据所述mrt算法生成得到所述第一拓扑和第二拓扑,以及根据所述spf算法生成得到所述第三拓扑包括:所述第一节点确定所述第一节点所在的mrtisland,其中,所述mrtisland是通过在所述第一节点以及与所述第一节点处于同一域area或同一层次level的其他节点上的开放最短路径优先ospf或者中间系统到中间系统isis实例下使能分段路由sr以及最大冗余树配置文件mrtprofile后在所述第一节点所在的area或level内由所述第一节点和所述其他节点相互协商形成的;所述第一节点基于所述mrtisland运行所述mrt算法生成所述第一拓扑和所述第二拓扑,以及,基于所述area或level运行所述spf算法生成所述第三拓扑。

可选地,所述mrtprofile中指定采用所述预定转发机制。

可选地,所述方法还包括以下至少之一:所述第一节点为所述第一节点本地的节点级prefix针对所述第一拓扑分配第一prefix-sid,并将所述第一prefix-sid在所述mrtisland所在的域area或层次level内泛洪;所述第一节点为所述第一节点本地的节点级prefix针对所述第二拓扑分配第二prefix-sid,并将所述第二prefix-sid在所述mrtisland所在的域area或层次level内泛洪;所述第一节点为所述第一节点本地的节点级和非节点级prefix针对所述第三拓扑分配第三prefix-sid,并将所述第三prefix-sid在所述第一节点所在的所有域area或层次level内泛洪;所述第一节点接收其他节点上的所述预先生成的拓扑的prefix-sid,记录所述其他节点上的所述预先生成的拓扑的prefix-sid以及将所述其他节点上的所述预先生成的拓扑的prefix-sid继续通告给除所述其他节点之外的节点。

可选地,所述第一节点将所述报文转发到所述下一跳节点包括:所述第一节点确定与所述报文匹配的所述第一节点的出标签;所述第一节点将所述第一节点的出标签封装到所述报文上,并将封装后的报文发送到所述下一跳节点。

可选地,所述第一节点确定与所述报文匹配的所述第一节点的出标签包括:当所述目标拓扑为所述第三拓扑时,所述第一节点的对应所述目标拓扑的出标签由所述第一节点基于目的地址对应的目的前缀prefix的第三前缀索引prefix-sid与所述下一跳节点的srgb计算得到的。

可选地,所述第一节点确定与所述报文匹配的所述第一节点的出标签包括:当所述目标拓扑为所述第一拓扑或所述第二拓扑时:若所述第二节点为所述mrtisland内的节点并且所述目的地址对应的目的前缀prefix为所述第二节点的节点级前缀prefix时,所述第一节点通过如下方式确定所述第一节点的对应所述目标拓扑的出标签:所述第一节点的对应所述目标拓扑的出标签由所述第一节点基于所述第二节点的节点级前缀prefix的对应所述目标拓扑的前缀索引prefix-sid与所述下一跳节点的srgb计算得到;若所述第二节点不为所述mrtisland内的节点或者所述目的地址对应的目的前缀prefix为所述第二节点的非节点级前缀prefix时,所述第一节点判断所述下一跳节点是否为所述mrtisland外的节点;在判断结果为否时,所述第一节点通过如下方式确定所述第一节点的对应所述目标拓扑的出标签:所述第一节点的对应所述目标拓扑的出标签为标签栈,外层标签为所述第一节点至隧道终点的标签,内层标签为所述隧道终点至所述目的前缀prefix的标签;其中,所述外层标签由所述第一节点基于所述隧道终点的节点级前缀prefix的对应所述目标拓扑的前缀索引prefix-sid与所述目标拓扑内至所述隧道终点的下一跳节点的srgb计算得到,所述内层标签由所述第一节点基于所述目的前缀prefix的对应所述第三拓扑的前缀索引prefix-sid与所述隧道终点的srgb计算得到;在判断结果为是时,所述第一节点通过如下方式确定所述第一节点的对应所述目标拓扑的出标签:所述第一节点的对应所述目标拓扑的出标签由所述第一节点基于所述目的前缀prefix的对应所述第三拓扑的前缀索引prefix-sid与所述下一跳节点的srgb计算得到的。

可选地,所述第一节点将所述第一节点的出标签封装到所述报文上包括以下至少之一:当所述报文的报文类型为互联网协议ip报文时,在所述ip报文的ip头上压上所述第一节点的出标签;当所述报文的报文类型为分段路由sr标签报文时,将所述sr标签报文的标签栈的栈顶标签替换成所述第一节点的出标签。

可选地,所述第一节点确定所述第一节点的出标签包括:当所述第一节点和所述第二节点为同一节点时,则所述第一节点基于所述目标拓扑确定的所述下一跳节点为所述第一节点,所述第一节点没有出标签。

可选地,所述方法还包括:当所述第一节点和所述第二节点为同一节点时,包括:当所述报文的报文类型为互联网协议ip报文时,所述第一节点将所述报文上送至所述第一节点的控制平面;和/或,当所述报文的报文类型为分段路由sr标签报文时,所述第一节点将所述sr标签报文的标签栈的栈顶标签弹出,并继续基于所述报文的标签栈的下层标签或ip头查表转发。

根据本发明的另一个实施例,还提供了一种报文转发装置,所述装置应用于第一节点中,包括:接收模块,用于接收待转发的报文,其中,所述报文的目的地址为第二节点;查找模块,用于在预先生成的拓扑中查找与所述报文对应的目标拓扑,其中,所述预先生成的拓扑包括:根据最大冗余树mrt算法生成得到的第一拓扑和第二拓扑,根据最短路径优先spf算法得到的第三拓扑,所述第一拓扑和所述第二拓扑以及所述第三拓扑彼此各不相同;转发模块,用于在所述目标拓扑中查找用于转发到所述第二节点的下一跳节点,并基于预定转发机制将所述报文转发到所述下一跳节点,其中,所述预定转发机制采用基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

可选地,所述装置还包括:确定模块,用于按照所述mrt算法从所述第一拓扑中至所述目的地址的路由和所述第二拓扑中至所述目的地址的路由中确定用于保护所述第三拓扑中至所述目的地址的路由的保护路由,并确定所述保护路由对应的拓扑为保护拓扑;和/或,按照颜色标志信息从所述第一拓扑中至隧道终点的路由和所述第二拓扑中至隧道终点的路由中确定用于保护所述第三拓扑中至所述目的地址的路由的保护路由,并确定所述保护路由对应的拓扑为保护拓扑,其中,所述隧道终点为所述第一节点为保护目的地址而选择的一个远端节点,所述远端节点针对故障点是无回路loop-free的,当故障发生时所述第一节点使用至所述远端节点的mrt隧道封装报文。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行上述步骤的程序代码。

通过本发明,在分段路由网络中引入mrt功能,从而实现了分段路由网络与mtr功能结合的目的。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的报文转发方法的流程图;

图2是根据本发明具体实施方式的mrtprofile示意图;

图3是根据本发明具体实施例一的网络拓扑图;

图4是根据本发明具体实施例二的网络拓扑图;

图5是根据本发明具体实施例三的网络拓扑图;

图6是根据本发明实施例的报文转发装置的结构框图;

图7是根据本发明实施例的报文转发装置的优选结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种报文转发方法,图1是根据本发明实施例的报文转发方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,第一节点接收待转发的报文,其中,该报文的目的地址为第二节点;

步骤s104,上述第一节点在预先生成的拓扑中查找与上述报文对应的目标拓扑,其中,该预先生成的拓扑包括:根据最大冗余树mrt算法生成得到的第一拓扑和第二拓扑,根据最短路径优先(shortestpathfirst,简称为spf)算法得到的第三拓扑,该第一拓扑和第二拓扑以及第三拓扑彼此各不相同;

步骤s106,上述第一节点在上述目标拓扑中查找用于转发到上述第二节点的下一跳节点,并基于预定转发机制将报文转发到上述下一跳节点,其中,该预定转发机制采用基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

其中,上述的第一节点可以是mrtisland内的任何节点,上述第二节点可以是srdomain内的任何节点,该第二节点可能处于所述mrtisland内或mrtisland外。上述的第一拓扑和第二拓扑可以一个是mrt-red拓扑,一个是mrt-blue拓扑;上述的第三拓扑可以是mt-default拓扑。

在上述实施例中,第一节点在将报文转发到下一跳节点时,可以基于预定转发机制进行转发,该预定转发机制为基于每拓扑每分段路由全局块srgb的隧道嵌套方式的分段路由转发机制。

通过上述步骤,在分段路由网络中引入mrt功能,从而实现了分段路由网络与mtr功能结合的目的。

在一个可选的实施例中,上述方法还包括(可以在接收待转发的报文之前执行本实施例中的步骤):上述第一节点按照mrt算法从第一拓扑中至目的地址的路由和第二拓扑中至目的地址的路由中确定用于保护上述第三拓扑中至目的地址的路由的保护路由,并确定上述保护路由对应的拓扑为保护拓扑;和/或,上述第一节点按照颜色标志信息从第一拓扑中至隧道终点的路由和第二拓扑中至隧道终点的路由中确定用于保护第三拓扑中至目的地址的路由的保护路由,并确定上述保护路由对应的拓扑为保护拓扑,其中,该隧道终点为第一节点为保护目的地址而选择的一个远端节点,远端节点针对故障点是无回路loop-free的,当故障发生时上述第一节点使用至远端节点的mrt隧道封装报文。在本实施例中,在确定保护拓扑时,可以确定第一拓扑为保护拓扑,也可以确定第二拓扑为保护拓扑,具体选择哪个拓扑作为保护拓扑需要根据实际情况进行确定。

在一个可选的实施例中,上述第一节点在预先生成的拓扑中查找与上述报文对应的目标拓扑包括:上述第一节点判断第三拓扑中的用于到达第二节点的链路是否出现故障;在判断出没有出现故障的情况下,第一节点确定上述第三拓扑为目标拓扑;和/或,在判断出出现故障的情况下,上述第一节点确定保护拓扑为目标拓扑。在本实施例中,当链路没有故障时,可以继续按照默认的拓扑进行报文转发,当链路出现故障后,需要使用保护拓扑进行报文转发。

在一个可选的实施例中,上述第一节点在接收待转发的所述报文之前,上述方法还包括:第一节点根据mrt算法生成得到第一拓扑和第二拓扑,以及根据spf算法生成得到第三拓扑。

在一个可选的实施例中,上述第一节点根据上述mrt算法生成得到第一拓扑和第二拓扑,以及根据spf算法生成得到第三拓扑包括:第一节点确定上述第一节点所在的mrtisland,其中,该mrtisland是通过在第一节点以及与第一节点处于同一域area或同一层次level的其他节点上的开放最短路径优先(openshortestpathfirst,简称为ospf)或者中间系统到中间系统(intermediatesystemtointermediatesystem,简称为isis)实例下使能分段路由sr以及最大冗余树配置文件mrtprofile后在第一节点所在的area或level内由第一节点和其他节点相互协商形成的;该第一节点基于上述mrtisland运行mrt算法生成第一拓扑和第二拓扑,以及,基于上述area或level运行spf算法生成第三拓扑。

在一个可选的实施例中,上述mrtprofile中指定采用上述预定转发机制。即,采用上述的基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

在一个可选的实施例中,上述方法还包括以下至少之一:上述第一节点为第一节点本地的节点级prefix针对第一拓扑分配第一prefix-sid,并将该第一prefix-sid在mrtisland所在的域area或层次level内泛洪;上述第一节点为第一节点本地的节点级prefix针对第二拓扑分配第二prefix-sid,并将该第二prefix-sid在mrtisland所在的域area或层次level内泛洪;上述第一节点为第一节点本地的节点级和非节点级prefix针对第三拓扑分配第三prefix-sid,并将该第三prefix-sid在第一节点所在的所有域area或层次level内泛洪;上述第一节点接收其他节点上的上述预先生成的拓扑的prefix-sid,记录该其他节点上的上述预先生成的拓扑的prefix-sid以及将该其他节点上的预先生成的拓扑的prefix-sid继续通告给除其他节点之外的节点。在本实施例中,上述第一prefix-sid、第二prefix-sid、第三prefix-sid彼此是相互独立的。

在一个可选的实施例中,上述第一节点将报文转发到上述下一跳节点包括:第一节点确定与上述报文匹配的第一节点的出标签;该第一节点将上述第一节点的出标签封装到上述报文上,并将封装后的报文发送到下一跳节点。在本实施例中,针对不同类型的报文,标签的封装方式是不同的。

在一个可选的实施例中,上述第一节点确定与报文匹配的第一节点的出标签包括:当上述目标拓扑为第三拓扑时,上述第一节点的对应目标拓扑的出标签由第一节点基于目的地址对应的目的前缀prefix的第三前缀索引prefix-sid与下一跳节点的srgb计算得到的。

在一个可选的实施例中,上述第一节点确定与上述报文匹配的第一节点的出标签包括:当上述目标拓扑为第一拓扑或第二拓扑时:若上述第二节点为mrtisland内的节点并且该目的地址对应的目的前缀prefix为第二节点的节点级前缀prefix时,上述第一节点通过如下方式确定第一节点的对应上述目标拓扑的出标签:上述第一节点的对应目标拓扑的出标签由第一节点基于上述第二节点的节点级前缀prefix的对应目标拓扑的前缀索引prefix-sid与下一跳节点的srgb计算得到;若上述第二节点不为mrtisland内的节点或者目的地址对应的目的前缀prefix为第二节点的非节点级前缀prefix时,上述第一节点判断下一跳节点是否为mrtisland外的节点;在判断结果为否时,第一节点通过如下方式确定第一节点的对应上述目标拓扑的出标签:第一节点的对应上述目标拓扑的出标签为标签栈,外层标签为上述第一节点至隧道终点的标签,内层标签为上述隧道终点至目的前缀prefix的标签;其中,该外层标签由第一节点基于上述隧道终点的节点级前缀prefix的对应目标拓扑的前缀索引prefix-sid与目标拓扑内至上述隧道终点的下一跳节点的srgb计算得到,该内层标签由第一节点基于目的前缀prefix的对应第三拓扑的前缀索引prefix-sid与隧道终点的srgb计算得到;在判断结果为是时,上述第一节点通过如下方式确定第一节点的对应目标拓扑的出标签:上述第一节点的对应目标拓扑的出标签由第一节点基于上述目的前缀prefix的对应第三拓扑的前缀索引prefix-sid与下一跳节点的srgb计算得到的。

在一个可选的实施例中,上述第一节点将上述第一节点的出标签封装到报文上包括以下至少之一:当上述报文的报文类型为互联网协议ip报文时,在上述ip报文的ip头上压上第一节点的出标签;当上述报文的报文类型为分段路由sr标签报文时,将上述sr标签报文的标签栈的栈顶标签替换成第一节点的出标签。

在一个可选的实施例中,上述第一节点确定第一节点的出标签包括:当上述第一节点和第二节点为同一节点时,则上述第一节点基于目标拓扑确定的下一跳节点为上述第一节点,该第一节点没有出标签。

在一个可选的实施例中,上述方法还包括:当上述第一节点和第二节点为同一节点时,包括:当上述报文的报文类型为互联网协议ip报文时,上述第一节点将报文上送至第一节点的控制平面;和/或,当上述报文的报文类型为分段路由sr标签报文时,上述第一节点将sr标签报文的标签栈的栈顶标签弹出,并继续基于上述报文的标签栈的下层标签或ip头查表转发。

下面结合具体实施例对本发明进行说明:

在本发明实施例中,将分段路由与mrt技术结合,提供一种基于分段路由转发机制的mrt-frr方法。在本实施例中,为mrt架构新增一种mrtprofile,使用分段路由转发机制,通过分段路由转发机制来区分默认拓扑转发行为和mrt拓扑转发行为。

本发明实施例中的基于分段路由转发机制的mrt-frr方法包括以下步骤:

第一步,定义新的mrt配置文件mrtprofile,与默认的defaultmrtprofile相比,差异主要体现在使用sr-lspbasedonmulti-prefix-sidtunneling转发机制。其中,sr-lsp是指基于prefix-sid生成的分段路由(segmentrouting,简称为sr)类型的lsp,与ldplsp是类似的。sr-lsptunneling转发机制是指mrt拓扑内的srlsp是以mrtegress节点为目的节点建立的,即发生mrtfrr切换后,在mrtingress节点上,默认拓扑内的srlsp是隧道嵌套于mrt拓扑的srlsp中。sr-lsptunneling转发机制时,mrtingress节点需要感知mrtegress节点为目的prefix分配的默认拓扑对应的sr标签。multi-prefix-sid是指每拓扑每prefix-sid,即默认拓扑与mrt-red拓扑以及mrt-blue拓扑中的prefix-sid是不同的。

第二步,在igparea/level内各节点(可以是仅部分节点)上相应igp实例下使能mrt并且支持上述新的mrtprofile,针对上述新的mrtprofile生成相应的mrtisland。基于该mrtisland运行mrt算法生成相应的mrt-red拓扑与mrt-blue拓扑,相应的mt-id分别记为mt-red和mt-blue。另外可以将基于spf算法生成的默认拓扑对应的mt-id记为mt-default。

第三步,使能了分段路由的各个节点上的igp实例,如果还使能了mrt并且支持上述新的mrtprofile,则不仅为mt-default分配节点级的mt-defaultprefix-sid即mt-defaultnode-sid(一般是某个loopback路由对应的prefix-sid,下同),还为mt-red分配节点级的mt-redprefix-sid即mt-rednode-sid,以及为mt-blue分配节点级的mt-blueprefix-sid即mt-bluenode-sid。这三个node-sid分别随(mt-default,prefix)、(mt-red,prefix)以及(mt-blue,prefix)可达通告消息泛洪,其中(mt-default,prefix)可在area间泛洪,但是(mt-red,prefix)与(mt-blue,prefix)仅在area内泛洪。

需要说明的是,仅上述mrtisland内的节点才需要必须额外为其节点级prefix分配mt-rednode-sid与mt-bluenode-sid。mrtisland内的非节点级prefix也可以分配相应的mt-redprefix-sid与mt-blueprefix-sid,但不是必须的,一般不建议分配,如果分配了,其相应的表项建立过程与节点级prefix的表项建立过程是完全类似的;mrtisland外的节点级与非节点级prefix,都不需要分配相应的mt-redprefix-sid与mt-blueprefix-sid,因为在这些prefix的原始通告节点上,是感知不到mrt的,无从谈起分配mrt相关的mt-redprefix-sid与mt-blueprefix-sid。

第四步,mrtisland内的源节点s为island内的其它目的节点d的节点级prefix(记为d-loopback0)计算spf主下一跳以及mrt-blue/red下一跳,即(mt-default,d-loopback0)中将包含spf主下一跳,(mt-blue,d-loopback0)中将包含mrt-blue下一跳,(mt-red,d-loopback0)中将包含mrt-red下一跳。并且通过mrt算法确定到底是上述mrt-blue下一跳还是mrt-red下一跳保护上述spf主下一跳。

上述spf主下一跳中的mt-defaultsr出标签基于(mt-default,d-loopback0)相应的prefix-sid在下一跳节点的srgb中偏移计算得到;上述mrt-red下一跳中的mrt-redsr出标签基于(mt-red,d-loopback0)相应的prefix-sid在下一跳节点的srgb中偏移计算得到;上述mrt-blue下一跳中的mrt-bluesr出标签基于(mt-blue,d-loopback0)相应的prefix-sid在下一跳节点的srgb中偏移计算得到。

根据(mt-default,d-loopback0)将生成相应的ftn表项,主nhlfe包含上述spf主下一跳及相应的mt-defaultsr出标签,mrt-frr备nhlfe包含上述选中用于保护spf主下一跳的mrt-red下一跳或mrt-blue下一跳及相应的mrt-redsr出标签或mrt-bluesr出标签。根据(mt-default,d-loopback0)也生成相应的ilm表项,其mt-defaultsr入标签基于(mt-default,prefix)相应的prefix-sid在s节点的srgb中偏移计算得到,nhlfe与上述ftn表项相同。

s节点另外还可以为(mt-red,d-loopback0)生成相应的入标签映射(incominglabelmap,简称为ilm)表项,其mt-redsr入标签基于(mt-red,d-loopback0)相应的prefix-sid在s节点的srgb中偏移计算得到,nhlfe包含mrt-red下一跳及相应的mt-redsr出标签。亦为(mt-blue,d-loopback0)生成相应的ilm表项,其mt-bluesr入标签基于(mt-blue,d-loopback0)相应的prefix-sid在s节点的srgb中偏移计算得到,nhlfe包含mrt-blue下一跳及相应的mt-bluesr出标签。

第五步,mrtisland内的源节点s还为island内或island外的其它prefix(即除了s所处mrtisland内的节点级prefix以外的网络中所有其它prefix)计算spf主下一跳以及mrt-frr备份下一跳,mrt-frr备份下一跳表示为相应的mrtegress节点(记为e,相应的节点级prefix记为e-loopback0)以及颜色标志信息提示是选择至e节点的mrt-red路径还是mrt-blue路径来保护上述spf主下一跳。

上述spf主下一跳中的mt-defaultsr出标签基于(mt-default,prefix)相应的prefix-sid在下一跳节点的srgb中偏移计算得到;上述mrt-frr备份下一跳将对应一个入标签栈:底层标签为e节点为目的prefix分配的mt-defaultsr标签,即基于(mt-default,prefix)相应的prefix-sid在e节点的srgb中偏移计算得到;上层标签为s至e的mrt-blue或mrt-red路径(根据颜色标志信息选择到底是mrt-blue或mrt-red路径)对应的sr入标签,即基于(mt-red,e-loopback0)或(mt-blue,e-loopback0)相应的prefix-sid在s节点的srgb中偏移计算得到。用于实际转发前需将顶层sr入标签查找相应的srilm表项换成出标签与直连下一跳,即将上述入标签栈转换成出标签栈。

根据(mt-default,prefix)将生成相应的ftn表项,主nhlfe包含上述spf主下一跳及相应的mt-defaultsr出标签,备nhlfe包含基于上述mrtegress节点e及其相应颜色标志信息计算得到的入标签栈(用于实际转发前需换成出标签栈)。根据(mt-default,prefix)也生成相应的ilm表项,其mt-defaultsr入标签基于(mt-default,prefix)相应的prefix-sid在s节点的srgb中偏移计算得到,nhlfe与上述ftn表项相同。如果prefix为s节点本地或直连prefix,则没有nhlfe信息。

第六步,故障发生时,按照如下方法沿mrt路径转发ip或sr标签单播流量:mrtingress节点基于(mt-default,prefix)相应的ftn表项指导ip报文,或ilm表项指导sr标签报文转发。具体分成两种情况:

1)如果流量匹配的是mrtisland内的某个节点级(mt-default,prefix)对应的ftn或ilm表项,则会将sr标签报文的顶层标签mt-defaultsr入标签交换成mrt-red或mrt-bluesr出标签后发往mrt-red或mrt-blue下一跳;或会将ip报文直接压上mrt-red或mrt-bluesr出标签后发往mrt-red或mrt-blue下一跳。

2)如果流量匹配的是其它(mt-default,prefix)对应的ftn或ilm表项,则会将sr标签报文的顶层标签mt-defaultsr入标签交换成mrtegress节点为该prefix分配的mt-defaultsr标签,再压上至mrtegress节点的mrt-red或mrt-bluesr出标签后发往至mrtegress节点的mrt-red或mrt-blue下一跳;或会将ip报文直接压上至mrtegress节点的mr-red或mrt-bluesr出标签后发往至mrtegress节点的mrt-red或mrt-blue下一跳。

mrttransit节点基于至mrtegress的节点级(mt-red,prefix)或(mt-blue,prefix)相应的srilm表项指导报文转发,继续将mrt-red或mrt-bluesr入标签交换成mrt-red或mrt-bluesr出标签后发往mrt-red或mrt-blue下一跳。

mrtegress节点弹掉至它自身的mrt-red或mrt-bluesr入标签后,基于下层(mt-default,prefix)对应的mt-defaultsr标签查找相应的ilm表项指导报文转发,或者ip报文头露出后直接基于目的ip转发。

下面结合附图对本发明实施例中的技术方案作进一步的详细描述:

本具体实施方式中,首先对本发明实施例中的mrtprofile进行说明:

图2是根据本发明具体实施方式的mrtprofile示意图,如图2所示的mrtprofile,其与rfc7812中定义的defaultmrtprofile基本相同,区别是mrtforwardingmechanism选项为sr-lspbasedonmulti-prefix-sidtunnelingoption。

具体实施例一

本实施例将描述目的prefix处于mrtisland内的mrt路径转发流程,图3是根据本发明具体实施例一的网络拓扑图,如图3所示,网络中运行ospf,所有节点均处于同一area内,均在相应的ospf实例下使能分段路由功能以及使能本发明上述实施例中所定义的mrtprofile。s作为源节点建立至目的节点d的prefix的mrt路径,然后基于此mrt路径保护spf主路径。包括如下步骤:

步骤s301,s、a、b、d各节点上的ospf实例下使能sr以及本发明实施例中所定义的mrtprofile,则它们在area内形成一个mrtisland。并且由于mrtprofile中指定使用mrtsr-lspbasedonmulti-prefix-sidtunnelingoption作为转发机制,则mrtisland内的各节点除了分配mt-defaultprefix-sid以外,还额外分配mt-redprefix-sid与mt-blueprefix-sid,比如在s节点上可以将为节点级prefixs-loopback0分配的三种prefix-sid分别记为:(mt-default,s-loopback0)node-sid,(mt-red,s-loopback0)node-sid,(mt-blue,s-loopback0)node-sid。另外,可以记s节点的srgb为srgb_s,其它节点类似。

mrtisland内各节点上将基于spf算法得到area内的mt-default拓扑,以及基于mrt算法得到mt-red和mt-blue拓扑。比如s节点上,至目的节点d的mt-default路径为s-d,mt-red路径也为s-d,而mt-blue路径为s-a-b-d。

各节点上基于拓扑生成相应的prefix表项,比如s节点上,mt-default拓扑内至目的节点d的节点级prefixd-loopback0的mt-default下一跳为d,并且选中mt-blue拓扑中给出的mt-blue路径来保护mt-default下一跳d,那么相应的mrt-frr下一跳将拷贝为上述mt-blue中的下一跳即a,称之为mrt-blue下一跳。假设(mt-default,d-loopback0)node-sid为default_sid0_d,(mt-red,d-loopback0)node-sid为red_sid0_d,(mt-blue,d-loopback0)node-sid为blue_sid0_d,则上述mt-default下一跳d对应的出标签为srgb_d[default_sid0_d],上述mrt-blue下一跳a对应的出标签为srgb_a[blue_sid0_d]。下面对部分节点上的表项进行举例说明:

s节点:

ftnfor(mt-default,d-loopback0)

主nhlfe:下一跳为d,出标签为srgb_d[default_sid0_d]

备nhlfe:下一跳为a,出标签为srgb_a[blue_sid0_d]ilmfor(mt-default,d-loopback0)

入标签为srgb_s[default_sid0_d]

主nhlfe:下一跳为d,出标签为srgb_d[default_sid0_d]

备nhlfe:下一跳为a,出标签为srgb_a[blue_sid0_d]

a节点:

ilmfor(mt-blue,d-loopback0)

入标签为srgb_a[blue_sid0_d]

nhlfe:下一跳为b,出标签为srgb_b[blue_sid0_d]

b节点:

ilmfor(mt-blue,d-loopback0)

入标签为srgb_b[blue_sid0_d]

nhlfe:下一跳为d,出标签为srgb_d[blue_sid0_d]

d节点:

ilmfor(mt-blue,d-loopback0)

入标签为srgb_d[blue_sid0_d]

nhlfe:无。表示sr-lsp已经终结。

步骤s302,对于发往目的地d-loopback0的报文,当链路s-d出现故障时,s节点将作为mrtingress节点将流量切换至事先准备好的mrt-blue下一跳a,即开始将报文沿mt-blue路径s-a-b-d转发。

如果s收到的是mt-defaultsr标签报文,则它基于ilmfor(mt-default,d-loopback0)表项转发,将入标签srgb_s[default_sid0_d]交换成出标签srgb_a[blue_sid0_d];如果s收到的是ip报文,则它基于ftnfor(mt-default,d-loopback0)表项转发,直接在ip头上压上出标签srgb_a[blue_sid0_d]。

步骤s303,a节点收到报文后,根据报文的顶层标签为srgb_a[blue_sid0_d],匹配到ilmfor(mt-blue,d-loopback0)表项,继续将报文的顶层标签srgb_a[blue_sid0_d]交换成srgb_b[blue_sid0_d]后发给b。

步骤s304,b节点收到报文后,根据报文的顶层标签为srgb_b[blue_sid0_d],匹配到ilmfor(mt-blue,d-loopback0)表项,继续将报文的顶层标签srgb_b[blue_sid0_d]交换成srgb_d[blue_sid0_d]后发给d。

步骤s305,d节点收到报文后,根据报文的顶层标签为srgb_d[blue_sid0_d],匹配到ilmfor(mt-blue,d-loopback0)表项,本地终结sr-lsp,剥掉标签后基于ip头继续转发,由于ip头为d-loopback0,则报文上送控制平面。

步骤s306,对于d节点上的非节点级prefix,比如d-loopback1,也可以为之分配相应的三种prefix-sid,如:(mt-default,d-loopback1)prefix-sid,(mt-red,d-loopback1)prefix-sid,(mt-blue,d-loopback1)prefix-sid。并且mrtisland内各节点类似步骤s301建立至d-loopback1的表项,以及转发行为类似步骤s302~305,不再赘述。

优选地,在本发明实施例中的优化方法可以是仅为mrtisland内的节点级prefix额外分配相应的mt-rednode-sid与mt-bluenode-sid。下面对在这种优化方法下各节点如何为d-loopback1建立相应的表项进行说明。其它实施例中也将按照此优化方法描述,并且假设各节点的loopback0prefix为节点级prefix,其它prefix为非节点级prefix。

需要说明的是,基于上述优化方法的一种判断条件为:如果prefix是area内的节点级prefix且其通告节点是mrtisland内的节点,则按照步骤s301为该prefix建立表项,否则按照如下步骤s307建立表项。

步骤s307,s节点上,mt-default拓扑内至d-loopback1的mt-default下一跳为d,并且选中mt-blue拓扑中给出的mt-blue路径(s-a-b-d)来保护mt-default下一跳d,则mrt-frr备份下一跳为mrtegress节点d以及颜色标志信息为mrt-blue。假设(mt-default,d-loopback1)prefix-sid为default_sid1_d。下面对部分节点上的表项进行举例说明:

s节点:

ftnfor(mt-default,d-loopback1)

主nhlfe:下一跳为d,出标签为srgb_d[default_sid1_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_d]

底层出标签为srgb_d[default_sid1_d]

ilmfor(mt-default,d-loopback1)

入标签为srgb_s[default_sid1_d]

主nhlfe:下一跳为d,出标签为srgb_d[default_sid1_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_d]

底层出标签为srgb_d[default_sid1_d]

ilmfor(mt-blue,d-loopback0)

入标签为srgb_s[blue_sid0_d]

nhlfe:下一跳为a,出标签为srgb_a[blue_sid0_d]

d节点:

ilmfor(mt-default,d-loopback1)

入标签为srgb_d[default_sid1_d]

nhlfe:无。表示sr-lsp已经终结。

步骤s308,对于发往目的地d-loopback1的报文,当链路s-d出现故障时,s节点将作为mrtingress节点将流量切换至事先准备好的至远端mrtegress节点d的mrt-blue路径,即开始将报文沿mt-blue路径s-a-b-d转发。

如果s收到的是mt-defaultsr标签报文,则它基于ilmfor(mt-default,d-loopback1)表项转发,将入标签srgb_s[default_sid1_d]交换成出标签srgb_d[default_sid1_d]后,再压上srgb_a[blue_sid0_d],发给下一跳a;如果s收到的是ip报文,则它基于ftnfor(mt-default,d-loopback1)表项转发,直接在ip头上压上出标签srgb_d[default_sid1_d]后,再压上srgb_a[blue_sid0_d],发给下一跳a。

步骤s309,a节点收到报文的处理与步骤s303相同。

步骤s310,b节点收到报文的处理与步骤s304相同。

步骤s311,d节点收到报文后,连续弹掉标签srgb_d[blue_sid0_d]与srgb_d[default_sid1_d],基于ip头继续转发,由于ip头为d-loopback0,则报文上送控制平面。

根据上述实施例,可知报文沿mrt路径转发时,在mrtisland内实际上是沿相应mrt拓扑内的sr-lsp转发,其中mrtisland内节点级的prefix实际上是将mt-defaultsr-lsp与mt-blue或mt-redsr-lsp粘连,而其它prefix实际上是将其mt-defaultsr-lsp承载于至mrtegress节点的mt-blue或mt-redsr-lsp之上。

具体实施例二

本实施例将描述目的prefix处于mrtisland外的mrt路径转发流程,图4是根据本发明具体实施例二的网络拓扑图,如图4所示,网络中运行ospf,包含两个area,所有节点均在相应的ospf实例下使能分段路由功能,其中area1中的s、a、b、c使能本发明实施例中所定义的mrtprofile。s作为源节点建立至目的节点d的prefix的mrt路径,然后基于此mrt路径保护spf主路径。包括如下步骤:

步骤s401,area1与area2内所有节点的ospf实例下均使能sr。各节点分配srgb。

步骤s402,area1内的s、a、b、c各节点上的ospf实例下使能本发明实施例中所定义的mrtprofile,则它们在area1内形成一个mrtisland。并且由于mrtprofile中指定使用mrtsr-lspbasedonmulti-prefix-sidtunnelingoption作为转发机制,则mrtisland内的各节点除了分配mt-defaultprefix-sid以外,还额外分配mt-redprefix-sid与mt-blueprefix-sid,比如在b节点上可以将为节点级prefixb-loopback0分配的三种prefix-sid分别记为:(mt-default,b-loopback0)node-sid,(mt-red,b-loopback0)node-sid,(mt-blue,b-loopback0)node-sid。

各节点上将基于spf算法得到area内的mt-default拓扑,以及基于mrt算法得到mt-red和mt-blue拓扑。比如s节点上,至目的节点a的mt-default路径为s-a,mt-blue路径也为s-a,而mt-red路径为s-c-b-a。

mrtisland内各节点针对mrtisland内各节点级prefix建立的表项与实施例一的步骤s301中针对prefixd-loopback0建立的表项是完全类似的,并且目的ip匹配mrtisland内相应节点级prefix的流量的转发行为也与步骤s302~305是完全类似的,不再赘述。

步骤s403,s节点上,mt-default拓扑内至prefixd-loopback0的mt-default下一跳为c(假设在area1内abr1作为prefixd-loopback0的通告节点,则使用至目的节点abr1的mt-default路径来确定下一跳)。对于prefixd-loopback0,可以假设使用tunnelendpointselection方法(参考rfc7812)选择的远端节点为a,假设mrtisland中s作为gadagroot,且s<<a<<b<<c<<s,则至节点a的mrt-blue路径为s-a,它可用来保护上述mt-default下一跳c。假设(mt-default,d-loopback0)prefix-sid为default_sid0_d。下面对部分节点上的表项进行举例说明:

s节点:

ftnfor(mt-default,d-loopback0)

主nhlfe:下一跳为c,出标签为srgb_c[default_sid0_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_a]

底层出标签为srgb_a[default_sid0_d]

ilmfor(mt-default,d-loopback0)

入标签为srgb_s[default_sid0_d]

主nhlfe:下一跳为c,出标签为srgb_c[default_sid0_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_a]

底层出标签为srgb_a[default_sid0_d]

ilmfor(mt-blue,a-loopback0)

入标签为srgb_s[blue_sid0_a]

nhlfe:下一跳为a,出标签为srgb_a[blue_sid0_a]

a节点:

ilmfor(mt-blue,a-loopback0)

入标签为srgb_a[blue_sid0_a]

nhlfe:无。表示sr-lsp已经终结。

ilmfor(mt-default,d-loopback0)

入标签为srgb_a[default_sid0_d]

nhlfe:下一跳为abr3,出标签为srgb_abr3[default_sid0_d]

abr3节点:

ilmfor(mt-default,d-loopback0)

入标签为srgb_abr3[default_sid0_d]

nhlfe:下一跳为abr2,出标签为srgb_abr2[default_sid0_d]

abr2节点:

ilmfor(mt-default,d-loopback0)

入标签为srgb_abr2[default_sid0_d]

nhlfe:下一跳为d,出标签为srgb_d[default_sid0_d]

d节点:

ilmfor(mt-default,d-loopback0)

入标签为srgb_d[default_sid0_d]

nhlfe:无。表示sr-lsp已经终结。

步骤s404,对于发往目的地d-loopback0的报文,当链路s-c出现故障时,s节点将作为mrtingress节点将流量切换至事先准备好的至远端mrtegress节点a的mrt-blue路径,即开始将报文沿mt-blue路径s-a转发。

如果s收到的是mt-defaultsr标签报文,则它基于ilmfor(mt-default,d-loopback0)表项转发,将入标签srgb_s[default_sid0_d]交换成出标签srgb_a[default_sid0_d]后,再压上srgb_a[blue_sid0_a],发给下一跳a;如果s收到的是ip报文,则它基于ftnfor(mt-default,d-loopback0)表项转发,直接在ip头上压上出标签srgb_a[default_sid0_d]后,再压上srgb_a[blue_sid0_a],发给下一跳a。

步骤s405,a节点收到报文后,弹掉标签srgb_a[blue_sid0_a],将下层标签srgb_a[default_sid0_d]交换成srgb_abr3[default_sid0_d]后发给下一跳abr3。

步骤s406,abr3节点收到报文后,将标签srgb_abr3[default_sid0_d]交换成srgb_abr2[default_sid0_d]后发给下一跳abr2。

步骤s407,abr2节点收到报文后,将标签srgb_abr2[default_sid0_d]交换成srgb_d[default_sid0_d]后发给下一跳d。

步骤s408,d节点收到报文后,弹掉标签srgb_d[default_sid0_d],基于ip头继续转发,由于ip头为d-loopback0,则报文上送控制平面。

根据上述实施例,可知报文沿mrt路径转发时,在mrtisland内实际上是沿相应mrt拓扑内的sr-lsp转发,离开mrtisland后,将沿默认拓扑内的sr-lsp转发。符合fec7812定义的转发规则。

具体实施例三

本实施例将描述目的prefix处于mrtisland外的mrt路径转发流程,特别是如何基于sr-lsp实现rfc7812定义的跨域转发规则。图5是根据本发明具体实施例三的网络拓扑图,如图5所示,网络中运行ospf,包含两个area,所有节点均在相应的ospf实例下使能分段路由功能,其中area1中的s、a、b、c使能本发明实施例中所定义的mrtprofile,area2中的b、e、d、f也同样使能本发明实施例中所定义的mrtprofile。s作为源节点建立至目的节点d的prefix的mrt路径,然后基于此mrt路径保护spf主路径。包括如下步骤:

步骤s501,area1与area2内所有节点的ospf实例下均使能sr。各节点分配srgb。

步骤s502,area1内的s、a、b、c各节点上的ospf实例下使能本发明实施例中所定义的mrtprofile,则它们在area1内形成一个mrtisland。并且由于mrtprofile中指定使用mrtsr-lspbasedonmulti-prefix-sidtunnelingoption作为转发机制,则mrtisland内的各节点除了分配mt-defaultprefix-sid以外,还额外分配mt-redprefix-sid与mt-blueprefix-sid,比如在b节点上可以将为节点级prefixb-loopback0分配的三种prefix-sid分别记为:(mt-default,b-loopback0)node-sid,(mt-red,b-loopback0)node-sid,(mt-blue,b-loopback0)node-sid。

各节点上将基于spf算法得到area内的mt-default拓扑,以及基于mrt算法得到mt-red和mt-blue拓扑。比如s节点上,至目的节点b的mt-default路径为s-c-b,mt-red路径也为s-c-b,而mt-blue路径为s-a-b。

area1中的mrtisland内各节点针对mrtisland内各节点级prefix建立的表项与具体实施例一的步骤s301中针对prefixd-loopback0建立的表项是完全类似的,并且目的ip匹配mrtisland内相应节点级prefix的流量的转发行为也与步骤s302~305是完全类似的。不再赘述。

步骤s503,area2中的b、e、d、f各节点上的ospf实例下也使能本发明实施例中所定义的mrtprofile,则它们在area2内也形成一个mrtisland,在area2内生成相应的mt-default拓扑,以及mt-red和mt-blue拓扑。假设b至d在默认拓扑内的最短路径下一跳为f。

area2中的mrtisland内各节点针对mrtisland内各节点级prefix建立的表项与实施例一的步骤s301中针对prefixd-loopback0建立的表项是完全类似的,并且目的ip匹配mrtisland内相应节点级prefix的流量的转发行为也与步骤s302~305是完全类似的。不再赘述。

步骤s504,s节点上,mt-default拓扑内至prefixd-loopback0的mt-default下一跳为c(假设在area1内abr1作为prefixd-loopback0的通告节点,则使用至目的节点abr1的mt-default路径来确定下一跳)。对于prefixd-loopback0,假设使用tunnelendpointselection方法(参考rfc7812)选择的远端节点为b,假设mrtisland中s作为gadagroot,且s<<a<<b<<c<<s,则至节点b的mrt-blue路径为s-a-b,它可用来保护上述mt-default下一跳c。假设(mt-default,d-loopback0)prefix-sid为default_sid0_d。下面对部分节点上的表项进行举例说明:

s节点:

ftnfor(mt-default,d-loopback0)

主nhlfe:下一跳为c,出标签为srgb_c[default_sid0_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_b]

底层出标签为srgb_b[default_sid0_d]

ilmfor(mt-default,d-loopback0)

入标签为srgb_s[default_sid0_d]

主nhlfe:下一跳为c,出标签为srgb_c[default_sid0_d]

备nhlfe:顶层入标签为srgb_s[blue_sid0_b]

底层出标签为srgb_b[default_sid0_d]

ilmfor(mt-blue,b-loopback0)

入标签为srgb_s[blue_sid0_b]

nhlfe:下一跳为a,出标签为srgb_a[blue_sid0_b]

a节点:

ilmfor(mt-blue,b-loopback0)

入标签为srgb_a[blue_sid0_b]

nhlfe:下一跳为b,出标签为srgb_b[blue_sid0_b]

b节点:

ilmfor(mt-blue,b-loopback0)

入标签为srgb_b[blue_sid0_b]

nhlfe:无。表示sr-lsp已经终结。

ilmfor(mt-default,d-loopback0)

入标签为srgb_b[default_sid0_d]

nhlfe:下一跳为f,出标签为srgb_f[default_sid0_d]

f节点:

ilmfor(mt-default,d-loopback0)

入标签为srgb_f[default_sid0_d]

nhlfe:下一跳为d,出标签为srgb_d[default_sid0_d]

d节点:

ilmfor(mt-default,d-loopback0)

入标签为srgb_d[default_sid0_d]

nhlfe:无。表示sr-lsp已经终结。

步骤s505,对于发往目的地d-loopback0的报文,当链路s-c出现故障时,s节点将作为mrtingress节点将流量切换至事先准备好的至远端mrtegress节点b的mrt-blue路径,即开始将报文沿mt-blue路径s-a-b转发。

如果s收到的是mt-defaultsr标签报文,则它基于ilmfor(mt-default,d-loopback0)表项转发,将入标签srgb_s[default_sid0_d]交换成出标签srgb_b[default_sid0_d]后,再压上srgb_a[blue_sid0_b],发给下一跳a;如果s收到的是ip报文,则它基于ftnfor(mt-default,d-loopback0)表项转发,直接在ip头上压上出标签srgb_b[default_sid0_d]后,再压上srgb_a[blue_sid0_b],发给下一跳a。

步骤s506,a节点收到报文后,将标签srgb_a[blue_sid0_b]交换成srgb_b[blue_sid0_b]后发给下一跳b。

步骤s507,b节点收到报文后,弹掉标签srgb_b[blue_sid0_b],将标签srgb_b[default_sid0_d]交换成srgb_f[default_sid0_d]后发给下一跳f。

步骤s508,f节点收到报文后,将标签srgb_f[default_sid0_d]交换成srgb_d[default_sid0_d]后发给下一跳d。

步骤s509,d节点收到报文后,弹掉标签srgb_d[default_sid0_d],基于ip头继续转发,由于ip头为d-loopback0,则报文上送控制平面。

根据上述实施例,可知报文沿mrt路径转发时,在area1中的mrtisland内实际上是沿相应mrt拓扑内的sr-lsp转发,而离开area1进入area2后,将沿默认拓扑内的sr-lsp转发。符合fec7812定义的转发规则。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种报文转发装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是根据本发明实施例的报文转发装置的结构框图,该装置可以应用于第一节点中,如图6所示,该装置包括接收模块62、查找模块64和转发模块66,下面对该装置进行说明:

接收模块62,用于接收待转发的报文,其中,该报文的目的地址为第二节点;查找模块64,连接至上述接收模块62,用于在预先生成的拓扑中查找与上述报文对应的目标拓扑,其中,该预先生成的拓扑包括:根据最大冗余树mrt算法生成得到的第一拓扑和第二拓扑,根据最短路径优先spf算法得到的第三拓扑,该第一拓扑和第二拓扑以及第三拓扑彼此各不相同;转发模块66,连接至上述查找模块64,用于在上述目标拓扑中查找用于转发到第二节点的下一跳节点,并基于预定转发机制将上述报文转发到下一跳节点,其中,该预定转发机制采用基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

图7是根据本发明实施例的报文转发装置的优选结构框图,如图7所示(图7仅是一种示例),该装置除包括图6所示的所有模块外,还包括确定模块72,下面对该装置进行说明:

确定模块72,连接至上述接收模块62,用于按照上述mrt算法从第一拓扑中至目的地址的路由和第二拓扑中至目的地址的路由中确定用于保护上述第三拓扑中至目的地址的路由的保护路由,并确定该保护路由对应的拓扑为保护拓扑;和/或,按照颜色标志信息从上述第一拓扑中至隧道终点的路由和第二拓扑中至隧道终点的路由中确定用于保护上述第三拓扑中至目的地址的路由的保护路由,并确定该保护路由对应的拓扑为保护拓扑,其中,该隧道终点为第一节点为保护目的地址而选择的一个远端节点,该远端节点针对故障点是无回路loop-free的,当故障发生时第一节点使用至远端节点的mrt隧道封装报文。

在一个可选的实施例中,上述查找模块64可以通过如下方式在预先生成的拓扑中查找与上述报文对应的目标拓扑:判断第三拓扑中的用于到达第二节点的链路是否出现故障;在判断出没有出现故障的情况下,确定上述第三拓扑为目标拓扑;和/或,在判断出出现故障的情况下,确定保护拓扑为目标拓扑。在本实施例中,当链路没有故障时,可以继续按照默认的拓扑进行报文转发,当链路出现故障后,需要使用保护拓扑进行报文转发。

在一个可选的实施例中,上述装置还包括第一处理模块,用于在接收待转发的所述报文之前,根据mrt算法生成得到第一拓扑和第二拓扑,以及根据spf算法生成得到第三拓扑。

在一个可选的实施例中,上述第一处理模块可以通过如下方式根据上述mrt算法生成得到第一拓扑和第二拓扑,以及根据spf算法生成得到第三拓扑:确定上述第一节点所在的mrtisland,其中,该mrtisland是通过在第一节点以及与第一节点处于同一域area或同一层次level的其他节点上的ospf或者isis实例下使能分段路由sr以及最大冗余树配置文件mrtprofile后在第一节点所在的area或level内由第一节点和其他节点相互协商形成的;基于上述mrtisland运行mrt算法生成第一拓扑和第二拓扑,以及,基于上述area或level运行spf算法生成第三拓扑。

在一个可选的实施例中,上述mrtprofile中指定采用上述预定转发机制。即,采用上述的基于每拓扑每前缀索引prefix-sid的隧道嵌套方式的分段路由转发机制。

在一个可选的实施例中,上述装置还包括第二处理模块,用于执行以下操作至少之一:为第一节点本地的节点级prefix针对第一拓扑分配第一prefix-sid,并将该第一prefix-sid在mrtisland所在的域area或层次level内泛洪;为第一节点本地的节点级prefix针对第二拓扑分配第二prefix-sid,并将该第二prefix-sid在mrtisland所在的域area或层次level内泛洪;为第一节点本地的节点级和非节点级prefix针对第三拓扑分配第三prefix-sid,并将该第三prefix-sid在第一节点所在的所有域area或层次level内泛洪;接收其他节点上的上述预先生成的拓扑的prefix-sid,记录该其他节点上的上述预先生成的拓扑的prefix-sid以及将该其他节点上的预先生成的拓扑的prefix-sid继续通告给除其他节点之外的节点。在本实施例中,上述第一prefix-sid、第二prefix-sid、第三prefix-sid彼此是相互独立的。

在一个可选的实施例中,上述转发模块66可以通过如下方式将报文转发到上述下一跳节点:确定与上述报文匹配的第一节点的出标签;将上述第一节点的出标签封装到上述报文上,并将封装后的报文发送到下一跳节点。在本实施例中,针对不同类型的报文,标签的封装方式是不同的。

在一个可选的实施例中,上述转发模块66可以通过如下方式确定与报文匹配的第一节点的出标签:当上述目标拓扑为第三拓扑时,上述第一节点的对应目标拓扑的出标签由第一节点基于目的地址对应的目的前缀prefix的第三前缀索引prefix-sid与下一跳节点的srgb计算得到的。

在一个可选的实施例中,上述转发模块66可以通过如下方式确定与上述报文匹配的第一节点的出标签:当上述目标拓扑为第一拓扑或第二拓扑时:若上述第二节点为mrtisland内的节点并且该目的地址对应的目的前缀prefix为第二节点的节点级前缀prefix时,上述第一节点通过如下方式确定第一节点的对应上述目标拓扑的出标签:上述第一节点的对应目标拓扑的出标签由第一节点基于上述第二节点的节点级前缀prefix的对应目标拓扑的前缀索引prefix-sid与下一跳节点的srgb计算得到;若上述第二节点不为mrtisland内的节点或者目的地址对应的目的前缀prefix为第二节点的非节点级前缀prefix时,上述第一节点判断下一跳节点是否为mrtisland外的节点;在判断结果为否时,第一节点通过如下方式确定第一节点的对应上述目标拓扑的出标签:第一节点的对应上述目标拓扑的出标签为标签栈,外层标签为上述第一节点至隧道终点的标签,内层标签为上述隧道终点至目的前缀prefix的标签;其中,该外层标签由第一节点基于上述隧道终点的节点级前缀prefix的对应目标拓扑的前缀索引prefix-sid与目标拓扑内至上述隧道终点的下一跳节点的srgb计算得到,该内层标签由第一节点基于目的前缀prefix的对应第三拓扑的前缀索引prefix-sid与隧道终点的srgb计算得到;在判断结果为是时,上述第一节点通过如下方式确定第一节点的对应目标拓扑的出标签:上述第一节点的对应目标拓扑的出标签由第一节点基于上述目的前缀prefix的对应第三拓扑的前缀索引prefix-sid与下一跳节点的srgb计算得到的。

在一个可选的实施例中,上述转发模块66可以通过如下方式至少之一将上述第一节点的出标签封装到报文上:当上述报文的报文类型为互联网协议ip报文时,在上述ip报文的ip头上压上第一节点的出标签;当上述报文的报文类型为分段路由sr标签报文时,将上述sr标签报文的标签栈的栈顶标签替换成第一节点的出标签。

在一个可选的实施例中,上述转发模块66可以通过如下方式确定第一节点的出标签:当上述第一节点和第二节点为同一节点时,则上述第一节点基于目标拓扑确定的下一跳节点为上述第一节点,该第一节点没有出标签。

在一个可选的实施例中,上述装置还包括第三处理模块,用于当上述第一节点和第二节点为同一节点时,执行以下操作:当上述报文的报文类型为互联网协议ip报文时,上述第一节点将报文上送至第一节点的控制平面;和/或,当上述报文的报文类型为分段路由sr标签报文时,上述第一节点将sr标签报文的标签栈的栈顶标签弹出,并继续基于上述报文的标签栈的下层标签或ip头查表转发。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行上述步骤的程序代码。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述各步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

通过本发明实施例中的方法,能够填补相关技术中的分段路由与mrt技术结合的缺口,为未来网络的演进提供了有价值的探索。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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