本申请是向中国知识产权局提交的申请日为2018年4月13日、申请号为201810333853.5、发明名称为“转发报文方法和装置”的申请的分案申请。
本申请涉及通信技术领域,特别涉及一种转发报文的方法和装置。
背景技术:
段路由(segmentrouting,sr)是基于源路由的隧道转发机制,在进行报文转发时,可以预先在源节点中封装目的节点的段标识(segmentidentifier,sid),也可以在源节点中封装经过节点的sid和/或链路标识,当报文经过某个节点时,该节点可以根据报文中的sid和/或链路标识对报文进行转发处理。
相关技术中,由于使用任播(anycast)方式进行组网的方案的可靠性,在组网时,会将两台完全一样的节点(a和b)配置相同的ip地址和sid,节点a和节点b形成一对具有任播路由的节点,在后续使用过程中,在节点a至下一跳节点的链路发生故障后,可以使用节点b,将报文发送至下一跳节点,进行报文转发。
这样,节点a向节点b发送报文时,节点a会在报文中封装节点b的地址,节点a可以将封装后的报文发送至直连的节点c,该节点c可以基于报文中封装的节点b的地址,计算到节点b的最小路径开销,进而确定出端口,由于节点a与节点b的地址一样,所以在该节点c到节点a路径开销更小的情况下,会将报文转发至节点a,报文的转发就会形成环路,导致报文发送失败。
技术实现要素:
为了解决报文转发失败的问题,本发明实施例提供了一种转发报文的方法和装置。所述技术方案如下:
第一方面,提供了一种转发报文的方法,所述方法包括:
第一节点确定所述第一节点至第二节点的无环路径信息,其中,所述第一节点与所述第二节点为一对具有任播路由的节点;当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,则所述第一节点根据所述无环路径信息,将所述报文转发至所述第二节点,经所述第二节点将所述报文转发至所述第三节点。
本发明实施例所示的方案,在第一节点与第二节点为一对具有任播路由的节点时,第一节点可以确定出至第一节点至第二节点的无环路径信息,在第一节点有报文往第三节点发送时,第一节点与第三节点之间的链路故障,第一节点可以基于无环路径信息,将报文发送至第二节点,第二节点可以将报文发送至第三节点。这样,报文可以发送至第三节点,且不会形成环路。
在一种可能的方式中,所述第一节点确定所述无环路径信息为所述第一节点至所述第二节点的主路由信息。
本发明实施例所示的方案,不管第一节点与第二节点之间是否存在直连链路,第一节点都可以将第一节点至第二节点的无环路径信息,确定为第一节点至第二节点的主路由信息,这样,不管第一节点与第二节点之间的链路状态如何,都可以将第一节点想要发往第二节点的报文,发往第二节点,且不会出现环路,提高了报文发送的成功率。
在一种可能的方式中,如果所述第一节点与所述第二节点之间有直连链路,则所述第一节点确定所述无环路径信息为所述第一节点至所述第二节点的备路由信息;
当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,且所述第一节点与所述第二节点之间的直连链路故障,则所述第一节点根据所述无环路径信息,将所述报文转发至所述第二节点。
本发明实施例所示的方案,在第一节点与第二节点之间有直连链路时,第一节点可以将第一节点至第二节点的无环路径信息,确定为第一节点至第二节点的备路由信息,这样,在第一节点与第二节点之间的直连链路没有故障时,由于第一节点至第二节点的路径开销更小,所以第一节点可以将报文通过第一节点发送至第二节点。在第一节点与第二节点之间的直连链路故障后,可以使用第一节点至第二节点的无环路径信息,将报文发送往第二节点,这样,可以将第一节点想要发往第二节点的报文,发往第二节点,且不会出现环路,提高了报文发送的成功率。
在一种可能的方式中,第一节点在网络拓扑信息中添加虚拟节点,并分别设置所述虚拟节点与所述第一节点、第二节点之间的虚拟链路,其中,所述虚拟节点的地址与所述第一节点的地址相同;所述第一节点根据所述第一节点、所述虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定所述第一节点至所述第二节点的无环路径信息。
本发明实施例所示的方案,第一节点可以在自身存储的网络拓扑信息中添加虚拟节点,并且构建虚拟节点至第一节点的虚拟链路,第一节点至虚拟节点的虚拟链路,并且构建虚拟节点至第二节点的虚拟链路、第二节点至虚拟节点的虚拟链路。然后将第一节点作为起始节点、虚拟节点作为目的节点,使用添加虚拟节点的网络拓扑信息中,确定出第一节点至虚拟节点的无环路径信息。这样,由于虚拟节点不能用于传输报文,所以报文不会发送至虚拟节点,第一节点至虚拟节点的无环路径信息,即为第一节点至第二节点的无环路径信息。这样,基于虚拟节点可以快速的确定出第一节点至第二节点的无环路径信息。
在一种可能的方式中,所述第一节点的地址包括第一sid和第二sid,所述第二节点的地址包括所述第一sid和所述第二sid,所述第一sid对应的第一路径开销差值与所述第二sid对应的第二路径开销差值相等,所述第一路径开销差值为在所述第一sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值,所述第二路径开销差值为在所述第二sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值。
本发明实施例所示的方案,在组网时,第二节点会向第一节点发送路由发布信息,在路由发布信息中携带第二节点的第一sid和第二sid,并且携带在第一sid下预先配置的路径开销、在第二sid下预先配置的路径开销。第一节点接收到第二节点发送的路由发布信息后,第一节点可以获取自身的sid,如果自身的sid也是第一sid和第二sid,则获取自身在第一sid下预先配置的路径开销,并且获取自身在第二sid下预先配置的路径开销。然后计算在第一sid下,第一节点对应的预先配置的路径开销和第二节点对应的预先配置的路径开销的差值,得到第一路径开销差值,并计算在第二sid下,第一节点对应的预先配置的路径开销和第二节点对应的预先配置的路径开销的差值,得到第二路径开销差值。如果第一路径开销差值等于第二路径开销差值,则可以对应第一节点和第二节点设置一个虚拟节点。然后可以将第一节点至虚拟节点的路径开销,设置为在第一sid下第一节点对应的预先配置的路径开销,并且可以将第二节点至虚拟节点的路径开销,设置为在第一sid下第二节点对应的预先配置的路径开销。或者,将第一节点至虚拟节点的路径开销,设置为在第二sid下第一节点对应的预先配置的路径开销,并且可以将第二节点至虚拟节点的路径开销,设置为在第二sid下第二节点对应的预先配置的路径开销。这样,可以满足第一sid对应的第一路径开销差值与第二sid对应的第二路径开销差值相等,第一路径开销差值为在第一sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值,第二路径开销差值为在第二sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值。这样,在计算路径开销时,使用第一sid和使用第二sid时,两边同时增加相等的数值,对根据路径开销,进行选取最优路径没有影响。
在一种可能的方式中,所述虚拟节点至所述第一节点的路径开销及所述虚拟节点至所述第二节点的路径开销为大于预设阈值的预设数值。
本发明实施例所示的方案,第一节点构造虚拟节点至第一节点的虚拟链路后,第一节点可以获取预先存储的预设数值,然后在网络拓扑信息中,将虚拟节点至第一节点的路径开销设置为预设数值,并且第一节点构造虚拟节点至第二节点的虚拟链路后,第一节点可以获取预先存储的预设数值,然后在网络拓扑信息中,将虚拟节点至第二节点的路径开销设置为预设数值。这样,由于预设数值是一个最大的数值,在计算路径时,选取的路径中不会选取到虚拟节点至第一节点或虚拟节点至第二节点的路径,可以防止将报文发送至虚拟节点。
在一种可能的方式中,所述第一节点接收所述第二节点发送的路由发布信息,其中,所述路由发布信息中携带所述第二节点的段标识sid;如果所述第一节点的sid与所述第二节点的sid相同,则所述第一节点确定所述第一节点至第二节点的无环路径信息。
本发明实施例所示的方案,第一节点接收第二节点发送的路由发布信息,在该路由发布信息中,携带第二节点的sid,如果第一节点的sid与第二节点的sid相同,说明第一节点与第二节点为一对具有任播路由的节点,第一节点可以确定第一节点至第二节点的无环路径信息。这样,在第一节点与第二节点的sid相同的情况下,第一节点可以确定第一节点至第二节点的无环路径信息。
在一种可能的方式中,所述第一节点接收所述第三节点发送的路由发布消息,其中,所述路由发布消息中携带有所述第三节点的ip地址;所述第一节点接收所述第二节点发送的路由发布消息,其中,所述路由发布消息中携带有所述第二节点学习到的至少一个节点的ip地址;如果所述至少一个节点的ip地址中包括所述第三节点的ip地址,则所述第一节点确定所述第一节点至第二节点的无环路径信息。
本发明实施例所示的方案,在组网时,第三节点可以向第一节点和第二节点发送路由发布消息,第一节点接收到第三节点的路由发布消息后,第一节点可以获取第三节点的ip地址,并且第二节点也可以获取第三节点的ip地址,然后第二节点可以将第三节点的ip地址通过路由发布消息发送至第一节点,第一节点确定第二节点发送的ip地址中包括第三节点的ip地址,第一节点可以确定第一节点至第二节点的无环路径信息。这样,在第一节点与第二节点学习到相同ip地址的情况下,第一节点确定自身至第二节点的无环路径信息。
在一种可能的方式中,所述第一节点在所述报文的报头中封装所述无环路径信息;所述第一节点将封装所述无环路径信息后的报文转发至所述第二节点。
本发明实施例所示的方案,第一节点可以在报文的报文头中封装无环路径信息,然后第一节点可以将封装后的报文发送至第二节点,第二节点确定报头中有自己的地址,可以获取报文的目的地址(第三节点的地址),将报文发送至第三节点。这样,第一节点可以准确的将报文发送至第二节点。
第二方面,提供了一种第一节点,该第一节点包括处理器、发送器存储器和接收器,所述处理器通过执行指令来实现上述第一方面所提供的进行转发报文的方法。
第三方面,提供了一种转发报文的装置,该装置包括一个或多个模块,该一个或多个模块通过执行指令来实现上述第一方面所提供的进行转发报文的方法。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有指令,当计算机可读存储介质在第一节点上运行时,使得第一节点执行上述第一方面所提供的转发报文的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在第一节点上运行时,使得第一节点执行上述第一方面所提供的转发报文的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,在第一节点与第二节点为一对具有任播路由的节点时,可以通过第一节点至第二节点的无环路径信息,使第一节点能够将报文发送至第二节点,从而在具有任播路由的节点之间发送报文,不会形成环路,提高了报文发送的成功率。
附图说明
图1是本发明实施例提供的一种报文转发示意图;
图2是本发明实施例提供的一种转发报文的网络结构示意图;
图3是本发明实施例提供的一种转发报文的网络结构示意图;
图4a是本发明实施例提供的一种私网路由表的示意图;
图4b是本发明实施例提供的一种私网路由表的示意图;
图4c是本发明实施例提供的一种私网路由表的示意图;
图4d是本发明实施例提供的一种私网路由表的示意图;
图5是本发明实施例提供的一种转发报文的方法的流程示意图;
图6是本发明实施例提供的一种虚拟节点的示意图;
图7是本发明实施例提供的私网路由表的示意图;
图8是本发明实施例提供的转发报文的示意图;
图9a是本发明实施例提供的一种转发报文的网络结构示意图;
图9b是本发明实施例提供的一种转发报文的方法的流程示意图;
图10是本发明实施例提供的一种虚拟节点的示意图;
图11是本发明实施例提供的一种建立虚拟节点的示意图;
图12是本发明实施例提供的一种第一节点的结构示意图;
图13是本发明实施例提供的一种转发报文的装置的结构示意图;
图14是本发明实施例提供的一种转发报文的装置的结构示意图;
图15是本发明实施例提供的一种转发报文的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本发明实施例的理解,下面首先介绍相关技术中的处理过程,本发明实施例涉及的系统架构、应用场景、以及所涉及到名词的概念。
相关技术中,在如图1所示的网络中,节点r6和节点r7被配置为一对具有任播路由的节点,当报文从r1传输至r8时,报文的转发路径为r1-r2-r4-r6-r8。当r6检测到至r8的路径中断时,由于r6与r7为一对anycast节点,所以r6在报文中封装r7的地址,将封装后的报文通过r6与r7的直连链路转发至r7,r7接收到报文后发现地址是自身的,可以查看目的地址,将报文转发至r8。
在如图1所示的网络中,如果r6与r7之间的直连链路中断,则会查找路由表,通过查找路由表确定通过r4能将报文转发至r7,会将封装r7地址的报文转发至r4,r4会使用r7的地址确定下一跳。由于r6与r7的地址相同,在r4至r6的路径开销更小的情况下,r4确定出的下一跳为r6,所以会将报文转发至r6。这样,报文的转发就会形成环路,导致报文发送失败。
本发明实施例可以适用于使用段路由(segmentrouting,sr)协议的网络中,如图2所示,该网络中包括四个区域,第一区域、第二区域、第三区域和第四区域,第一区域和第二区域相邻,第二区域和第三区域相邻,第三区域和第四区域相邻,第一区域和第四区域是边界网关协议(bordergatewayprotocol,bgp)区域,第三区域和第四区域为内部网关协议(interiorgatewayprotocol,igp)区域。在第一区域中,包括一个ce1(customerequipment,客户端设备),ce1与csg1之间有链路。在第二区域中,主要的节点有两个基站侧网关(cellsitegateway,csg),即csg1、cgg2,可以认为是igp区域的边界节点,两个区域边界路由器(areaborderrouter,abr),即abr1和abr2,abr1和abr2是一对任播(anycast)节点,用于冗余保护,csg1与abr1之间有链路,csg1与csg2之间有链路,csg2与abr2之间有链路,abr1与abr2之间有链路。在第三区域中,主要节点有两个自治系统边界路由器(autonomoussystemborderrouter,asbr),即asbr1和asbr2,两个汇聚网关(aggregationsitegateway,asg),即asg1和asg2,abr1与asg1之间有链路,abr2与asg2之间有链路,asbr1与asg1之间有链路,asbr2与asg2之间有链路,asg1与asg2之间有链路。在第四区域中,包括一个ce2,ce2与asbr1之间有链路,ce2与asbr2之间有链路。
另外,如图3所示,第二区域和第三区域还分别对应一个路由反射器(routingreflector,rr)。
虚拟节点,是网络拓扑中虚拟的仅用于计算无环路径信息时使用,且不用于传输报文的节点。
第一节点、第二节点和第三节点,指执行路由转发功能的网络设备,例如,路由器、交换机等设备。
本发明实施例以第一节点是abr1,第二节点是abr2,第三节点是csg1为例进行方案的详细说明,在进行实施前,首先介绍一下,在csg1、abr1、abr2、asbr1建立私网路由表的处理过程:ce1将自己的地址发送往csg1,csg1接收到后,可以为ce1分配一个私网标签,并且记录接收到ce1报文的端口对应的私网路由表,如图4a所示,私网路由表中包括ce1的地址、下一跳(ce1的地址)和私网标签。然后将该私网标签、ce1的地址和自己的地址发送至第一区域的路由反射器,路由反射器可以将私网标签、ce1的地址和csg1的地址发送至abr1和abr2,abr1和abr2可以记录私网路由表,如图4b所示,该私网路由表中包括ce1的地址、下一跳(csg1的地址)和私网标签。然后abr1和abr2可以将私网标签、ce1的地址和自己的地址发送至第二区域的路由反射器,该路由反射器可以将私网标签、ce1的地址和abr1的地址发送至asbr1,asbr1可以记录私网路由表,如图4c所示,该私网路由表中包括ce1的地址、下一跳(abr1的地址或abr2的地址)和私网标签。并且abr2可以通过第一区域的路由反射器向abr1发送自己的地址、ce1的地址和私网标签,abr1接收到后,也记录私网路由表,如图4d所示,该私网路由表中包括ce1的地址、下一跳(abr2的地址)和私网标签。综上可知,abr1中对应一个私网标签存储有两个下一跳。同理abr2也对应同一个私网标签存储有两个下一跳,原理与前面相同。需要说明的是,上述ce1的地址是携带在ip报文头中的目的ip地址,上述发送的私网标签、地址等信息可以携带在路由发布消息中。
另外,第一区域中的节点还可以建立自己区域的公网路由表,公网路由表中,包括了第一区域中所有节点的路由信息。同理第二区域中的节点还可以建立自己区域的公网路由表。建立公网路由表的方法与现有技术的过程相同此处不再赘述。
如图5所示,第一节点是abr1,第二节点是abr2,第三节点是csg1,执行主体为第一节点时,转发报文的方法的处理流程可以如下:
步骤501,第一节点确定第一节点至第二节点的无环路径信息。
其中,第一节点与第二节点是一对具有任播路由的节点,无环路径信息是指第一节点在使用无环路径信息转发报文至第二节点时,转发报文的路径不会是环路。
在实施中,在上述网络组网的时候,第一节点可以使用自身存储的网络拓扑信息,确定第一节点至第二节点的无环路径信息。或者,使用以下虚拟节点的方式确定第一节点至第二节点的无环路径信息,相应的步骤501的处理可以如下:
第一节点在网络拓扑信息中添加虚拟节点,并分别设置虚拟节点与第一节点、第二节点之间的虚拟链路,其中,虚拟节点的地址与第一节点的地址相同;第一节点根据第一节点、虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定第一节点至第二节点的无环路径信息。
在实施中,在网络中各区域的每个节点都对应存储有自己区域的网络拓扑信息,这样,对于边界节点或边缘节点存储的是自己所属的两个区域的网络拓扑信息。例如,abr1中存储有第二区域和第三区域的网络拓扑信息,abr2中也存储有第二区域和第三区域的网络拓扑信息。
第一节点可以在自己存储的网络拓扑信息中添加一个虚拟节点,虚拟节点的地址与第一节点、第二节点的地址相同,并且第一节点可以设置虚拟节点与第一节点、第二节点之间的虚拟链路,虚拟节点与第一节点之间有两条虚拟链路,一条虚拟链路是第一节点至虚拟节点的链路,另一条虚拟链路是虚拟节点至第一节点的链路,同理,虚拟节点与第二节点之间也有两条虚拟链路,一条虚拟链路是第二节点至虚拟节点的链路,另一条虚拟链路是虚拟节点至第二节点的链路。例如,如图6所示,p为虚拟节点,虚线为虚拟链路,图中仅示出了一条虚拟链路。
第一节点在自己的网络拓扑信息中添加虚拟节点后,相当于将第一节点和第二节点虚拟成一个虚拟节点,只有虚拟节点发布了第一节点与第二节点的地址。第一节点可以将虚拟节点作为目的节点、第一节点作为起始节点、存储的网络拓扑信息输入到预设的无环路径计算算法中,会输出第一节点至虚拟节点的无环路径信息,由于虚拟节点不会实际用于传输报文,也就是说第二节点不会将报文发送至虚拟节点,所以确定出的无环路径信息,实际上也就是第一节点至第二节点的无环路径信息。然后将第一节点至虚拟节点的无环路径信息存储为第一节点至第二节点的无环路径信息。
例如,第一节点是abr1,第二节点是abr2,第三节点是csg1,虚拟节点是p,确定出的备份无环路径信息可以是:asg1的sid——asg2的sid——abr2sid,或者asg1的sid——asg1至asg2的链路标签——abr2的sid。
需要说明的是,无环路径计算算法可以是与拓扑无关的无环路备份(topologyindependentloop-freealtermates,ti-lfa)算法。在存储的用于计算无环路径信息的网络拓扑信息中,将第一节点和第二节点虚拟成一个虚拟节点,相当于仅有一个节点发布了第一节点的地址。例如,第一节点和第二节点的地址为1.1.1.1,在该网络拓扑信息中,仅虚拟节点的地址为1.1.1.1。
可选的,第一节点在确定至第二节点的无环路径信息之后,可以将无环路径信息确定为第一节点至第二节点的主路由信息。
在实施中,不管第一节点与第二节点之间是否存在直连链路(直连链路指第一节点与第二节点之间的链路上不存储在其它节点),第一节点都可以将该无环路径信息存储为第一节点至第二节点的主路由信息,这样,只要第一节点有报文转发往第二节点,都可以使用该无环路径信息进行转发。
另外,可以将该无环路径信息,存储为图4d中第一节点存储的私网路由表中的下一跳,也就是将abr2的地址替换为该无环路径信息。
可选的,第一节点在确定至第二节点的无环路径信息之后,可以将无环路径信息确定为第一节点至第二节点的备路由信息,相应的处理可以如下:
如果第一节点与第二节点之间有直连链路,则第一节点确定无环路径信息为第一节点至第二节点的备路由信息。
在实施中,第一节点在确定至第二节点的无环路径信息之后,如果第一节点与第二节点之间有直连链路,可以将该无环路径信息存储为第一节点至第二节点的备路由信息。这样,第一节点有报文转发往第二节点,由于第一节点与第二节点之间的直连链路的路径开销更小,首先可以使用第一节点至第二节点的直连链路进行转发,在第一节点与第二节点之间的直连链路故障后,可以使用该无环路径信息进行转发。
另外,在图4d中,可以将abr2地址的下一跳作为主路由信息,可以将无环路径信息的下一跳作为备路由信息,见图7。
可选的,在第一节点和第二节点的sid为多个的情况下,虚拟节点的路径开销需要满足以下条件:
第一节点的地址包括第一sid和第二sid,第二节点的地址包括第一sid和第二sid,第一sid对应的第一路径开销差值与第二sid对应的第二路径开销差值相等,第一路径开销差值为在第一sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值,第二路径开销差值为在第二sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值。
在实施中,由于第一节点是igp区域中的节点,所以会有ip地址和sid,第一节点的地址中可以包括第一sid和第二sid,第二节点的地址也可以包括第一sid和第二sid。在组网时,第二节点会向第一节点发送路由发布信息,在路由发布信息中携带第二节点的第一sid和第二sid,并且携带在第一sid下预先配置的路径开销、在第二sid下预先配置的路径开销。第一节点接收到第二节点发送的路由发布信息后,第一节点可以获取自身的sid,如果自身的sid也是第一sid和第二sid,则获取自身在第一sid下预先配置的路径开销,并且获取自身在第二sid下预先配置的路径开销。然后计算在第一sid下,第一节点对应的预先配置的路径开销和第二节点对应的预先配置的路径开销的差值,得到第一路径开销差值,并计算在第二sid下,第一节点对应的预先配置的路径开销和第二节点对应的预先配置的路径开销的差值,得到第二路径开销差值。如果第一路径开销差值等于第二路径开销差值,则可以对应第一节点和第二节点设置一个虚拟节点。
然后可以将第一节点至虚拟节点的路径开销,设置为在第一sid下第一节点对应的预先配置的路径开销,并且可以将第二节点至虚拟节点的路径开销,设置为在第一sid下第二节点对应的预先配置的路径开销。或者,将第一节点至虚拟节点的路径开销,设置为在第二sid下第一节点对应的预先配置的路径开销,并且可以将第二节点至虚拟节点的路径开销,设置为在第二sid下第二节点对应的预先配置的路径开销。这样,可以满足第一sid对应的第一路径开销差值与第二sid对应的第二路径开销差值相等,第一路径开销差值为在第一sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值,第二路径开销差值为在第二sid下第一节点至虚拟节点的路径开销和第二节点至虚拟节点的路径开销的差值。
例如,第一节点和第二节点的第一sid为68,第二sid为78,在第一sid下,第一节点对应的预先配置的路径开销是5,第二节点对应的预先配置的路径开销是10,得到的第一路径开销差值为-5,在第二sid下,第一节点对应的预先配置的路径开销是15,第二节点对应的预先配置的路径开销是20,得到的第二路径开销差值为-5,这样,第一节点和第二节点可以虚拟成一个虚拟节点。
再例如,如果第一节点和第二节点的第一sid为68,第二sid为78,第三节点的sid为68和88,这样,第一节点、第二节点和第三节点不能虚拟成一个虚拟节点。再例如,在第一sid下,第一节点对应的预先配置的路径开销是5,第二节点对应的预先配置的路径开销是10,第一路径开销差值为-5,在第二sid下,第一节点对应的预先配置的路径开销是10,第二节点对应的预先配置的路径开销是20,第二路径开销差值为-10,第一路径开销差值与第二路径开销差值不相同,不能虚拟成成一个虚拟节点。
需要说明的是,在满足第一路径开销差值和第二路径开销差值相等的条件时,才可以将第一节点和第二节点虚拟成一个虚拟节点,这是由于在计算路径开销时,使用第一sid和使用第二sid时,两边同时增加相等的数值,对根据路径开销,进行选取最优路径没有影响。
可选的,为了使虚拟节点不影响路径计算,可以将虚拟节点至第一节点和第二节点的路径开销设置的比较大一点,相应的描述可以如下:
虚拟节点至第一节点的路径开销及虚拟节点至第二节点的路径开销为大于预设阈值的预设数值。
其中,预设数值可以由技术人员预设,并且存储至第一节点中,预设数值大于预设阈值,预设数值一个最大的数值。
在实施中,第一节点构造虚拟节点至第一节点的虚拟链路后,第一节点可以获取预先存储的预设数值,然后在网络拓扑信息中,将虚拟节点至第一节点的路径开销设置为预设数值,并且第一节点构造虚拟节点至第二节点的虚拟链路后,第一节点可以获取预先存储的预设数值,然后在网络拓扑信息中,将虚拟节点至第二节点的路径开销设置为预设数值。
这样,由于预设数值是一个最大的数值,在计算路径时,选取的路径中不会选取到虚拟节点至第一节点或虚拟节点至第二节点的路径,可以防止将报文发送至虚拟节点。
可选的,在第二节点发布的sid与自己的sid相等时,第一节点可以确定自己至第二节点的无环路径信息,相应的处理可以如下:
第一节点接收第二节点发送的路由发布信息,其中,路由发布信息中携带第二节点的段标识sid;如果第一节点的sid与第二节点的sid相同,则第一节点确定第一节点至第二节点的无环路径信息。
在实施中,在组网的时候,第二节点会通过路由反射器向第一节点发送路由发布信息,并在其中携带自己的sid,第一节点接收到第二节点的路由发布信息后,可以从中解析得到第二节点的sid。然后判断自己的sid是否与第二节点的sid相同,如果相同,则可以确定第一节点至第二节点的无环路径信息。
可选的,在第一节点的唯一sid与第二节点的唯一sid相同的情况下,可以将第一节点和第二节点虚拟成一个虚拟节点,并且将第一节点的唯一sid对应的预先配置的路径开销设置为第一节点至虚拟节点的路径开销,并且将第二节点的唯一sid对应的预先配置的路径开销设置为第二节点至虚拟节点的路径开销。
步骤502,当第一节点在接收到发往第三节点的报文时,如果第一节点至第三节点的链路故障,则第一节点根据无环路径信息,将报文转发至第二节点,经第二节点将报文转发至第三节点。
在实施中,从ce2发往ce1的报文(数据报文),ce2会在报文中封装ce1的ip地址(作为目的ip地址),ce2首先将报文发送至asbr1,asbr1会基于接收到ce2的报文的端口,查找到ce1的私网路由表,然后在该私网路由表中,查找ce1的ip地址对应的私网标签,确定出下一跳abr1,然后在报文中封装私网标签,再封装下一跳的地址,经过第三区域中的其他节点发送至abr1(第一节点),第一节点接收到报文后,发现报文封装有自己的地址,会删除自己的地址,获取报文中封装的私网标签,然后获取报文中的私网标签和报文中的目的ip地址(ce1的地址)对应的下一跳csg1(第三节点),将下一跳的地址封装在删除自己地址的报文中,然后发送至第三节点,第三节点发现报文中封装有自己的地址,会获取报文中的私网标签和目标ip地址,然后基于该私网标签和目标ip地址,查找到下一跳(ce1),然后查找到与ce1连接的第三节点的出端口,将报文发送至ce1。如果第一节点与第三节点之间的链路故障,第一节点可以使用私网标签,查找另一个下一跳,即获取预先存储的第一节点至第二节点的无环路径信息,然后使用该无环路径信息,将报文发送至第二节点,第二节点可以查看报文中封装的私网标签,查找私网标签对应的下一跳(第三节点),在封装有私网标签的报文上封装第三节点的sid,将报文先发送至csg2,csg2可以查找公网路由表,将报文发送至第三节点,第三节点确定报文的sid是自己的,可以获取其中封装的私网标签和目标ip地址,并且删除私网标签,查找私网路由表中的下一跳(ce1),然后确认与ce1连接的第三节点的出端口,通过该出端口将报文发送至ce1。这样,就将报文先发送至第三节点,然后再发送至ce1。
另外,第一节点在确定至第三节点的链路故障,第一节点可以将下一跳为第三节点的私网路由表删除。
可选的,第一节点可以将无环路径信息封装在报文中,进行转发,相应的处理可以如下:
第一节点在报文的报头中封装无环路径信息;第一节点将封装无环路径信息后的报文转发至第二节点。
在实施中,abr1可以在封装有私网标签的报文的报头中封装无环路径信息,然后第一节点可以将封装无环路径信息的报文转发至第二节点,例如,如图8所示,无环路径信息是:asg1的sid——asg2的sid——abr2sid,asg1的sid为78,asg2的sid为88,abr2的sid为68,发送过程为:abr1将封装有78、88、68的报文发送至asg1,asg1确定报文中有自己的sid,会将自己的sid删除,然后将封装有88、68的报文发送至asg2,asg2确定报文中有自己的sid,会将自己的sid删除,然后将封装有68的报文发送至abr2,这样,就可以将报文发送至abr2。
可选的,第一节点至第二节点的无环路径信息为备路由信息时,相应的步骤502的处理可以如下:
当第一节点在接收到发往第三节点的报文时,如果第一节点至第三节点的链路故障,且第一节点与第二节点之间的直连链路故障,则第一节点根据无环路径信息,将报文转发至第二节点。
在实施中,由前面描述可知,由ce2发往ce1的报文,会经过第一节点(abr1),第一节点查找到报文中私网标签对应的下一跳是第三节点(csg1),可以将封装有私网标签的报文发送第三节点,由第三节点发送至ce1,但是第一节点确定至第三节点的链路故障,所以第一节点可以使用私网标签,查找另一个下一跳为第二节点的地址,但是第一节点与第二节点之间的直连链路故障,第一节点可以获取存储的另一个下一跳的备路由信息,即获取预先存储的无环路径信息,然后使用该无环路径信息,将报文发送至第二节点,第二节点可以查看报文中封装的私网标签和目的地址,查找私网标签和目的地址对应的下一跳第三节点,在封装有私网标签的报文上封装第三节点的sid,将报文先发送至csg2,csg2可以查找公网路由表,将报文发送至第三节点,第三节点查看报文的sid是自己的,可以获取其中的私网标签和目的地址,并删除私网标签,然后根据私网标签和目的地址,将报文发送至ce1。这样,就将报文先发送至第三节点,然后再发送至ce1。
需要说明的是,本发明实施例中提到的sid例如可以为前缀段标识(prefixsid)。
通过上述描述,在第二节点有报文发送至第一节点时,第二节点也可以确定出从第二节点到第一节点的无环路径信息,通过该无环路径信息将报文发送至第一节点,处理过程与前面类似。
本发明实施例中,在第一节点与第二节点为一对具有任播路由的节点时,可以通过第一节点至第二节点的无环路径信息,使第一节点能够将报文发送至第二节点,从而在具有任播路由的节点之间发送报文,不会形成环路,提高了报文发送的成功率。
本发明另一实施例,如图9a所示,该网络中包括两个区域,第一区域和第二区域,第一区域和第二区域相邻,第一区域是igp区域,第二区域是bgp区域,第一区域和第二区域均是公网区域。在第一区域中,包括两个csg和两个asbr,即csg1、cgg2、asbr1和asbr2,csg1分别与csg2、asbr1之间有链路,csg2与asbr2之间有链路,asbr1与asbr2之间有链路,在第二区域中,包括一个asbr,即asbr3,asbr3分别与asbr1、asbr2之间有链路。
在本发明实施例中,以第一节点是asbr1,第二节点是asbr2,第三节点是asbr3为例进行方案的详细说明,在该实施例中,第一节点和第二节点在组网时,可以不是一对anycast节点。在发布路由发布信息时,由于都连接第三节点,都可以学习到第三节点的ip地址,说明报文都可以转发至第三节点,所以可以将第一节点和第二节点认为是一对具有任播路由的节点。
在进行实施前,首先介绍一下,在非静态配置路由信息的情况下,在csg1、asbr1、asbr2中建立路由表的处理过程:asbr3将自己的ip地址通过bgp发送往asbr1和asbr2,asbr1和asbr2接收到后,可以存储公网路由表,在该公网路由表中包括asbr3的ip地址和出端口,并且asbr2可以通过igp将asbr3的ip地址发送至asbr1,asbr1可以记录公网路由表,该公网路由表中包括asbr3的ip地址和出端口,asbr1可以通过igp将asbr3的ip地址发送至asbr2,asbr1可以记录公网路由表,该公网路由表中包括asbr3的ip地址和出端口。然后asbr1可以通过igp将asbr3的ip地址引入到第一区域,第一区域中的csg1可以记录公网路由表,该公网路由表中包括asbr3的ip地址和出端口。
如图9b所示,转发报文的方法的处理流程可以如下:
步骤901,第一节点接收第三节点发送的路由发布消息。
在实施中,在进行组网时,第一节点可以接收第三节点通过bgp发布的路由发布信息,从中解析到第三节点的ip地址,第一节点可以为记录公网路由表,在该公网路由表中目的地址为第三节点的地址,下一跳为第三节点。这样,第三节点的路由信息就被引入到第一节点所在的igp区域。然后第一节点可以通过igp在第一区域中发布路由发布信息,以使第一区域中的节点学习第三节点的路由信息。
另外,在进行组网时,第二节点可以接收第三节点通过bgp发布的路由发布信息,从中解析到第三节点的ip地址,第二节点可以为记录公网路由表,在该公网路由表中目的地址为第三节点的地址,下一跳为第三节点。第二节点可以将自己学习到的第三节点的ip地址和其它学习到的ip地址发送至第一节点。
步骤902,第一节点接收第二节点发送的路由发布消息。
在实施中,第一节点可以接收第二节点的路由发布消息,第一节点可以从中解析得到第二节点学习到的至少一个ip地址。
步骤903,如果至少一个节点的ip地址中包括第三节点的ip地址,则第一节点确定第一节点至第二节点的无环路径信息。
在实施中,第一节点可以判断至少一个节点的ip地址中是否包括第三节点的地址,如果至少一个节点的ip地址中包括第三节点的ip地址,第一节点可以将自己和第二节点学习到的第三节点的地址组成一对具有任播路由的地址,也就是第一节点和第二节点成为一对具有任播路由的节点。然后第一节点可以在自己存储的第一区域的网络拓扑信息中添加一个虚拟节点,该虚拟节点的地址为第一节点和第二节点学习到的第三节点的地址,并且在网络拓扑信息中构造虚拟节点至第一节点的虚拟链路,第一节点至虚拟节点的虚拟链路,并且在网络拓扑信息中构造虚拟节点至第二节点的虚拟链路,第二节点至虚拟节点的虚拟链路。如图10所示,p为虚拟节点,第一节点为asbr1,第二节点为asbr2,p为虚拟节点,asbr1与p之间的链路为虚拟链路,用虚线表示,asbr2与p之间的链路为虚拟链路,也用虚线表示,其它节点间为实际的链路,使用实线表示。
然后第一节点可以将第一节点作为起始节点、第二节点作为目的节点和添加虚拟节点的网络拓扑信息输入lt-lfa算法中,得到第一节点至第二节点的无环路径信息。
需要说明的是,第一节点在igp网络拓扑信息中将第一节点和第二节点学习自第三节点的地址,设置成虚拟节点的地址,这样相当于在igp网络拓扑信息中,只有虚拟节点发布了第三节点的地址。
另外,第一节点可以将自身接收到的第三节点发布ip地址对应的预先配置的路径开销,设置为第一节点至虚拟节点的路径开销,并且第一节点可以将第二节点发布的第三节点发布ip地址对应的预先配置的路径开销,设置为第二节点至虚拟节点的路径开销。并且可以将虚拟节点至第一节点的路径开销设置为大于预设阈值的预设数值,将虚拟节点至第二节点的路径开销设置为大于预设阈值的预设数值。
步骤904,当第一节点在接收到发往第三节点的报文时,如果第一节点至第三节点的链路故障,则第一节点根据无环路径信息,将报文转发至第二节点,经第二节点将报文转发至第三节点。
在实施中,由csg1发往第三节点(asbr3)的报文,csg1可以基于第三节点的地址,查找公网路由表,得到出端口,然后经过第一区域中的节点,将报文转发至第一节点,第一节点接收到报文后,可以解封装,获取到目的地址(第三节点的地址),然后基于第三节点的地址查找公网路由表,得到出端口,但是第一节点至第三节点的链路故障,所以第一节点会获取第一节点至第二节点的无环路径信息。然后将该无环路径信息封装到报文中,将报文转发至第二节点,第二节点确定报文中有自己的地址,可以获取报文的目标地址,然后查找公网路由表,得到出端口,经过该出端口将报文发送至第三节点。
另外,如图11所示,在本发明实施例中,为了更方便理解,还提供了信令流程图:
步骤1101,第三节点(例如asbr3)通过bgp分别向第一节点(例如,asrr1)和第二节点(例如,asbr2)发布路由发布信息(例如,asbr3的ip地址或ip前缀)。
步骤1102,第二节点通过igp向第一节点发布路由发布信息,其中携带学习到的至少一个节点的ip地址(例如,包括asbr3的ip地址或ip前缀通告出去)。
步骤1103,第一节点(例如,asrr1)接收(学习)第二节点(例如,asbr2)通过igp发布的路由发布信息(例如,asbr3的ip地址或ip前缀)。
步骤1104,如果至少一个节点的地址中包括第三节点的ip地址(例如,asbr3的ip地址或ip前缀),则第一节点(例如,asrr1)在第一区域的网络拓扑信息中添加地址为第一节点学习到的地址(例如asbr3的ip地址或ip前缀)的虚拟节点,并设置虚拟节点与第一节点、第二节点之间的虚拟链路。
步骤1105,第一节点(例如,asrr1)通过igp发布路由发布信息给csg1,以使csg1学习第三节点的地址。例如,asrr1通过igp路由引入功能,将从bgp学到的asbr3的ip地址或ip前缀发布到第一区域,从而使csg1学习到了asbr3的ip地址或ip前缀。
上述两个实施例中,第一节点至第三节点链路故障,第一节点存储第一节点至第二节点的备份无环路径信息,同样第二节点至csg2的链路故障时,第二节点也可以存储第二节点至第一节点的备份无环路径信息。
另外,在该实施例中,第一节点也可以不接收第一节点和第二节点的路由信息,技术人员可以在第一节点中静态配置第三节点的路由信息,并且将第二节点配置为与自身组成一对具有任播路由的节点。
本发明实施例中,在第一节点与第二节点为一对具有任播路由的节点时,可以通过第一节点至第二节点的无环路径信息,使第一节点能够将报文发送至第二节点,从而在任播路由的节点之间发送报文,不会形成环路,提高了报文发送的成功率。
图12是本发明实施例提供的第一节点的结构框图,该第一节点至少可以包括接收器1201、处理器1202、存储器1203和发送器1204。
接收器1201可以用于实现数据的接收,本发明实施中,具体可以用于执行以下内容:接收所述第二节点发送的路由发布信息,接收所述第三节点发送的路由发布消息等。
发送器1204可以用于数据的发送,本发明实施中,具体可以用于报文的发送、路由发布信息的发送,详细内容为:当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,则根据所述无环路径信息,将所述报文转发至所述第二节点,经所述第二节点将所述报文转发至所述第三节点。当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,且所述第一节点与所述第二节点之间的直连链路故障,则根据所述无环路径信息,将所述报文转发至所述第二节点。在所述报文的报头中封装所述无环路径信息;将封装所述无环路径信息后的报文转发至所述第二节点。
存储器1203可以用于存储软件程序以及模块,处理器1202可以通过运行存储在存储器1203中的软件程序以及模块,从而执行各种功能应用以及数据处理,本发明实施例中具体可以用于建立路由表、查找路由表、在网络拓扑信息中添加虚拟节点、以及确定无环路径信息等。详细内容为:确定所述第一节点至第二节点的无环路径信息,其中,所述第一节点与所述第二节点为一对具有任播路由的节点,确定所述无环路径信息为所述第一节点至所述第二节点的主路由信息,如果所述第一节点与所述第二节点之间有直连链路,则确定所述无环路径信息为所述第一节点至所述第二节点的备路由信息,网络拓扑信息中添加虚拟节点,并分别设置所述虚拟节点与所述第一节点、第二节点之间的虚拟链路,其中,所述虚拟节点的地址与所述第一节点的地址相同;根据所述第一节点、所述虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定所述第一节点至所述第二节点的无环路径信息,如果所述第一节点的sid与所述第二节点的sid相同,则确定所述第一节点至第二节点的无环路径信息,如果所述至少一个节点的ip地址中包括所述第三节点的ip地址,则确定所述第一节点至第二节点的无环路径信息
存储器1203可主要包括存储程序区和存储数据区,在本发明实施例中,具体可以用于存储路由表等。其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(如干扰收集程序)等;存储数据区可存储根据第一节点的使用所创建的数据等。此外,存储器1203可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1203还可以包括存储器控制器,以提供处理器1202、接收器1201和发送器1204对存储器1203的访问。处理器1202是第一节点的控制中心,利用各种接口和线路连接整个第一节点的各个部分,通过运行或执行存储在存储器1203内的软件程序和/或模块,以及调用存储在存储器1203内的数据,执行第一节点的各种功能和处理数据,从而对第一节点进行整体监控。
可选的,处理器1202可包括一个或多个处理核心;优选的,处理器1202可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1202中。
图13是本发明实施例提供的转发报文的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为终端中的部分或者全部。本发明实施例提供的终端可以实现本发明实施例图5和图9所述的流程,该装置包括:确定模块1310和发送模块1320,其中:
确定模块1310,用于确定所述第一节点至第二节点的无环路径信息,其中,所述第一节点与所述第二节点为一对具有任播路由的节点;具体可以实现上述步骤501中的确定功能,以及其它隐含步骤;
发送模块1320,用于当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,则根据所述无环路径信息,将所述报文转发至所述第二节点,经所述第二节点将所述报文转发至所述第三节点。具体可以实现上述步骤502中的发送功能,以及其它隐含步骤;
可选的,所述确定模块1310,还用于:
确定所述无环路径信息为所述第一节点至所述第二节点的主路由信息。
可选的,所述确定模块1310,还用于:
如果所述第一节点与所述第二节点之间有直连链路,则确定所述无环路径信息为所述第一节点至所述第二节点的备路由信息;
所述发送模块1320,用于:
当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,且所述第一节点与所述第二节点之间的直连链路故障,则根据所述无环路径信息,将所述报文转发至所述第二节点。
可选的,所述确定模块1310,用于:
在网络拓扑信息中添加虚拟节点,并分别设置所述虚拟节点与所述第一节点、第二节点之间的虚拟链路,其中,所述虚拟节点的地址与所述第一节点的地址相同;
根据所述第一节点、所述虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定所述第一节点至所述第二节点的无环路径信息。
可选的,所述第一节点的地址包括第一sid和第二sid,所述第二节点的地址包括所述第一sid和所述第二sid,所述第一sid对应的第一路径开销差值与所述第二sid对应的第二路径开销差值相等,所述第一路径开销差值为在所述第一sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值,所述第二路径开销差值为在所述第二sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值。
可选的,所述虚拟节点至所述第一节点的路径开销及所述虚拟节点至所述第二节点的路径开销为大于预设阈值的预设数值。
可选的,如图14所示,所述装置还包括:
第一接收模块1330,用于接收所述第二节点发送的路由发布信息,其中,所述路由发布信息中携带所述第二节点的段标识sid;
所述确定模块1310,用于:
如果所述第一节点的sid与所述第二节点的sid相同,则确定所述第一节点至第二节点的无环路径信息。
可选的,如图15所示,所述装置还包括:
第二接收模块1340,用于:
接收所述第三节点发送的路由发布消息,其中,所述路由发布消息中携带有所述第三节点的ip地址;
接收所述第二节点发送的路由发布消息,其中,所述路由发布消息中携带有所述第二节点学习到的至少一个节点的ip地址;
所述确定模块1310,用于:
如果所述至少一个节点的ip地址中包括所述第三节点的ip地址,则确定所述第一节点至第二节点的无环路径信息。
可选的,所述发送模块1320,用于:
在所述报文的报头中封装所述无环路径信息;
将封装所述无环路径信息后的报文转发至所述第二节点。
本发明实施例中,在第一节点与第二节点为一对具有任播路由的节点时,可以通过第一节点至第二节点的无环路径信息,使第一节点能够将报文发送至第二节点,从而在具有任播路由的节点之间发送报文,不会造成环路,提高了报文发送的成功率。
需要说明的是:上述实施例提供的转发报文的装置在转发报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的转发报文的装置与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在装置上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是装置能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digitalvideodisk,dvd)等),或者半导体介质(如固态硬盘等)。
以上所述仅为本申请的一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
1.一种转发报文的方法,其特征在于,所述方法包括:
第一节点确定所述第一节点至第二节点的无环路径信息,其中,所述第一节点与所述第二节点具有相同的任播地址;
当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,则所述第一节点根据所述无环路径信息,将所述报文转发至所述第二节点,经所述第二节点将所述报文转发至所述第三节点。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一节点至第二节点的无环路径信息,包括:
所述第一节点根据所述任播地址确定所述无环路径信息。
3.根据权利要求1所述的方法,其特征在于,所述确定所述第一节点至第二节点的无环路径信息,包括:
所述第一节点将所述任播地址作为目的节点,确定所述无环路径信息。
4.根据权利要求1所述的方法,其特征在于,所述确定所述第一节点至第二节点的无环路径信息,包括:
第一节点在网络拓扑信息中添加虚拟节点,并分别设置所述虚拟节点与所述第一节点、第二节点之间的虚拟链路,其中,所述虚拟节点的地址与所述第一节点的地址相同;
所述第一节点根据所述第一节点、所述虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定所述第一节点至所述第二节点的无环路径信息。
5.根据权利要求4所述的方法,其特征在于,所述第一节点的地址包括第一sid和第二sid,所述第二节点的地址包括所述第一sid和所述第二sid,所述第一sid对应的第一路径开销差值与所述第二sid对应的第二路径开销差值相等,所述第一路径开销差值为在所述第一sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值,所述第二路径开销差值为在所述第二sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值。
6.根据权利要求4或5所述的方法,其特征在于,所述虚拟节点至所述第一节点的路径开销及所述虚拟节点至所述第二节点的路径开销为大于预设阈值的预设数值。
7.一种转发报文的装置,其特征在于,所述装置应用于第一节点,所述装置包括:
确定模块,用于确定所述第一节点至第二节点的无环路径信息,其中,所述第一节点与所述第二节点具有相同的任播地址;发送模块,用于当所述第一节点在接收到发往第三节点的报文时,如果所述第一节点至所述第三节点的链路故障,则根据所述无环路径信息,将所述报文转发至所述第二节点,经所述第二节点将所述报文转发至所述第三节点。
8.根据权利要求7所述的装置,其特征在于,所述确定模块,还用于:
根据所述任播地址确定所述无环路径信息。
9.根据权利要求7所述的装置,其特征在于,所述确定模块,还用于:
将所述任播地址作为目的节点,确定所述无环路径信息。
10.根据权利要求7所述的装置,其特征在于,所述确定模块,用于:
在网络拓扑信息中添加虚拟节点,并分别设置所述虚拟节点与所述第一节点、第二节点之间的虚拟链路,其中,所述虚拟节点的地址与所述第一节点的地址相同;
根据所述第一节点、所述虚拟节点和添加虚拟节点及虚拟链路后的网络拓扑信息,确定所述第一节点至所述第二节点的无环路径信息。
11.根据权利要求10所述的装置,其特征在于,所述第一节点的地址包括第一sid和第二sid,所述第二节点的地址包括所述第一sid和所述第二sid,所述第一sid对应的第一路径开销差值与所述第二sid对应的第二路径开销差值相等,所述第一路径开销差值为在所述第一sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值,所述第二路径开销差值为在所述第二sid下所述第一节点至所述虚拟节点的路径开销和所述第二节点至所述虚拟节点的路径开销的差值。
12.根据权利要求10或11所述的装置,其特征在于,所述虚拟节点至所述第一节点的路径开销及所述虚拟节点至所述第二节点的路径开销为大于预设阈值的预设数值。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述计算机可读存储介质在第一节点上运行时,使得所述第一节点执行所述权利要求1-6中任一权利要求所述的方法。
技术总结