一种传输路径故障的处理方法、装置及系统转让专利

申请号 : CN201810703248.2

文献号 : CN110661706B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡志波姚俊达

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种传输路径故障的处理方法、装置及系统,用以解决现有技术中存在的节点所支持Context表的容量不足导致的转发数据报文失败的问题。本申请中第一网络设备接收到报文后,第一网络设备确定第三网络设备故障时,确定第一网络设备的段路由全局块SRGB初始值与第三网络设备的SRGB初始值的差值,根据差值以及备份转发表确定备份路径,第一网络设备根据备份发送第一报文。

权利要求 :

1.一种传输路径故障的处理方法,其特征在于,包括:

第一网络设备接收第二网络设备发送的第一报文,所述第二网络设备为主路径上所述第一网络设备的上一跳网络设备;

所述第一网络设备确定第三网络设备故障时,确定所述第一网络设备的段路由全局块SRGB初始值与所述第三网络设备的SRGB初始值的差值,所述第三网络设备为所述主路径上所述第一网络设备的下一跳网络设备;

所述第一网络设备从所述第一报文中获取第一标签,所述第一标签是基于第三网络设备的SRGB初始值以及第四网络设备的节点段标识确定的,所述第四网络设备为在所述主路径上所述第三网络设备的下一跳网络设备;

所述第一网络设备将所述第一标签以及所述差值的和值作为由所述第一网络设备到所述第四网络设备的备份路径的入标签,从备份转发表中确定由所述第一网络设备到所述第四网络设备的备份路径的出标签;

所述第一网络设备基于所述出标签向备份路径上所述第一网络设备的下一跳网络设备发送所述第一报文。

2.如权利要求1所述的方法,其特征在于,所述第一报文中包括用于指导所述第一报文在所述主路径上转发的标签栈列表;

所述确定所述第一网络设备的SRGB初始值与所述第三网络设备的SRGB初始值的差值,包括:所述第一网络设备从所述标签栈列表的栈顶获取第二标签,所述第二标签是基于所述第三网络设备的节点段标识与所述第一网络设备的SRGB初始值确定的;

所述第一网络设备在所述备份转发表确定所述第二标签对应的第一转发行为;

所述第一转发行为用于指示查找标签信息表;所述标签信息表中包括所述第二标签对应的所述差值;

所述第一网络设备从所述标签信息表中获取所述差值。

3.如权利要求2所述的方法,其特征在于,所述第一网络设备从所述第一报文中获取第一标签,包括:所述第一网络设备将所述标签栈列表栈顶的第二标签弹出后,从弹出所述第二标签的标签栈列表的栈顶获取所述第一标签;

所述第一网络设备基于所述出标签向备份路径上所述第一网络设备的下一跳网络设备发送所述第一报文,包括:所述第一网络设备将所述标签栈列表中的第一标签交换为所述出标签,并向所述备份路径上所述第一网络设备的下一跳网络设备发送更新后的所述第一报文。

4.如权利要求1-3任一项所述的方法,其特征在于,还包括:

所述第一网络设备在接收到所述第三网络设备在网络内泛洪的所述第三网络设备的节点段标识之后,向所述网络内的其它网络设备泛洪所述第三网络设备的节点段标识;

其中,所述第一标签是所述第二网络设备根据所述第一网络设备泛洪的所述第三网络设备的节点段标识和所述第一网络设备的SRGB初始值确定的。

5.如权利要求1-3任一项所述的方法,其特征在于,还包括:

所述第一网络设备接收所述第三网络设备在故障恢复后发送的指示信息,所述指示信息用于指示所述第三网络设备无法正确转发报文;

所述第一网络设备在接收到所述第二网络设备发送的第二报文时,基于所述确定的出标签发送所述第二报文。

6.一种传输路径故障的处理方法,其特征在于,包括:

第二网络设备在通过主路径发送报文的过程中,确定第三网络设备发生故障;

所述第二网络设备接收第一网络设备在网络内泛洪的第三网络设备的节点段标识;所述第三网络设备为所述第一网络设备的邻接网络设备;

其中,所述第一网络设备为所述主路径上所述第二网络设备的下一跳网络设备,所述第三网络设备为在所述主路径上所述第一网络设备的下一跳网络设备;

所述第二网络设备基于所述第一网络设备泛洪的所述第三网络设备的节点段标识,将所述报文通过备份路径发送给所述第一网络设备;

所述第一网络设备为所述备份路径上所述第二网络设备的下一跳网络设备。

7.一种传输路径故障的处理装置,其特征在于,所述装置应用于第一网络设备,包括:接收模块,用于接收第二网络设备发送的第一报文,所述第二网络设备为主路径上所述第一网络设备的上一跳网络设备;

处理模块,用于确定第三网络设备故障时,确定所述第一网络设备的段路由全局块SRGB初始值与所述第三网络设备的SRGB初始值的差值,所述第三网络设备为所述主路径上所述第一网络设备的下一跳网络设备;从所述第一报文中获取第一标签,所述第一标签是基于第三网络设备的SRGB初始值以及第四网络设备的节点段标识确定的,所述第四网络设备为在所述主路径上所述第三网络设备的下一跳网络设备;并将所述第一标签以及所述差值的和值作为由所述第一网络设备到所述第四网络设备的备份路径的入标签,从备份转发表中确定由所述第一网络设备到所述第四网络设备的备份路径的出标签;

发送模块,用于基于所述出标签向备份路径上所述第一网络设备的下一跳网络设备发送所述第一报文。

8.如权利要求7所述的装置,其特征在于,所述第一报文中包括用于指导所述第一报文在所述主路径上转发的标签栈列表;

所述处理模块,在确定所述第一网络设备的SRGB初始值与所述第三网络设备的SRGB初始值的差值,具体用于从所述标签栈列表的栈顶获取第二标签,所述第二标签是基于所述第三网络设备的节点段标识与所述第一网络设备的SRGB初始值确定的;在所述备份转发表确定所述第二标签对应的第一转发行为;所述第一转发行为用于指示查找标签信息表;所述标签信息表中包括所述第二标签对应的所述差值;从所述标签信息表中获取所述差值。

9.如权利要求8所述的装置,其特征在于,所述处理模块,在从所述第一报文中获取第一标签时,具体用于将所述标签栈列表栈顶的第二标签弹出后,从弹出所述第二标签的标签栈列表的栈顶获取所述第一标签;

所述处理模块,还用于将所述标签栈列表中的第一标签交换为所述出标签;

所述发送模块,具体用于向所述备份路径上所述第一网络设备的下一跳网络设备发送更新后的所述第一报文。

10.如权利要求7-9任一项所述的装置,其特征在于,所述发送模块,还用于在接收到所述第三网络设备在网络内泛洪的所述第三网络设备的节点段标识之后,向所述网络内的其它网络设备泛洪所述第三网络设备的节点段标识;

其中,所述第一标签是所述第二网络设备根据所述第一网络设备泛洪的所述第三网络设备的节点段标识和所述第一网络设备的SRGB初始值确定的。

11.如权利要求7-9任一项所述的装置,其特征在于,所述接收模块,还用于接收所述第三网络设备在故障恢复后发送的指示信息,所述指示信息用于指示所述第三网络设备无法正确转发报文;

所述发送模块,还用于在所述接收模块接收到所述第二网络设备发送的第二报文时,基于所述确定的出标签发送所述第二报文。

12.一种传输路径故障的处理装置,其特征在于,所述装置应用于第二网络设备,包括:处理模块,用于在通过主路径发送报文的过程中,确定第三网络设备发生故障;

接收模块,用于接收第一网络设备在网络内泛洪的第三网络设备的节点段标识;所述第三网络设备为所述第一网络设备的邻接网络设备;

其中,所述第一网络设备为所述主路径上所述第二网络设备的下一跳网络设备,所述第三网络设备为在所述主路径上所述第一网络设备的下一跳网络设备;

发送模块,用于基于所述第一网络设备泛洪的所述第三网络设备的节点段标识,将所述报文通过备份路径发送给所述第一网络设备;

所述第一网络设备为所述备份路径上所述第二网络设备的下一跳网络设备。

13.一种网络设备,其特征在于,包括:

通信接口、处理器和存储器;

所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发消息,并实现权利要求1至5任一项所述的方法。

14.一种网络设备,其特征在于,包括:

通信接口、处理器和存储器;

所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发消息,并实现权利要求6所述的方法。

15.一种网络系统,其特征在于,包括如权利要求7至11任一所述的装置和如权利要求

12所述的装置;或者,所述系统包括如权利要求13所述的网络设备和如权利要求14所述的网络设备。

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储软件程序,所述软件程序在被一个或多个处理器读取并执行时可实现权利要求1至6任一项所述的方法。

说明书 :

一种传输路径故障的处理方法、装置及系统

技术领域

[0001] 本申请涉及通信技术领域,尤其涉及一种传输路径故障的处理方法、装置及系统。

背景技术

[0002] 段路由流量工程(segment routing-traffic engineering,SR-TE)是使用内部网关协议(interior gateway protocol,IGP)或者边界网关协议(border gateway protocol,BGP)协议作为控制信令的一种新型的多协议标签交换(multiprotocol label switching,MPLS)TE隧道技术。控制器负责计算隧道的转发路径,并将与路径严格对应的标签栈下发给转发器。在SR-TE隧道的首端节点上,转发器根据标签栈,即可控制报文在网络中的传输路径。
[0003] 当主路径某一个节点发生故障时,目前基于快速重路由(fast reroute,FRR)技术使用备份路径来转发报文。
[0004] 比如,主路径中节点A故障时,在主路径中节点A的上一跳节点B感知到节点A故障后,上一跳节点B根据预先为节点A生成的标签信息表(又称为Context表)以及主备转发表将数据报文切换到备份路径上发送。Context表中包含了全网所有节点对应的节点(前缀)标签信息以及节点A发布的邻接标签。
[0005] 由于Context表是预先生成的,SR-TE FRR的方案是节点B为该节点A的每个邻居都生成Context表,因此Context表的规格为全网的节点数+邻居节点的邻居数,所以每个节点需要生成邻居数*(全网节点数+邻居节点的邻居数)这样规模的Context表。
[0006] 当网络包括节点数较多,且有些节点所支持的Context表的容量达不到邻居数*(全网节点数+邻居节点的邻居数)时,会导致这些节点生成的Context表中内容不全或者生成失败,在网络中出现故障节点的情况,可能会导致无法根据Context表切换到正确的备份路径来转发数据报文。

发明内容

[0007] 本申请提供一种传输路径故障的处理方法、装置及系统,用以解决现有技术中存在的节点所支持Context表的容量不足导致的转发数据报文失败的问题。
[0008] 第一方面,本申请实施例提供了一种传输路径故障的处理方法,包括:第一网络设备接收第二网络设备发送的第一报文,所述第二网络设备为主路径上所述第一网络设备的上一跳网络设备;所述第一网络设备确定所述第三网络设备故障时,确定所述第一网络设备的段路由全局块SRGB初始值与所述第三网络设备的SRGB初始值的差值,所述第三网络设备为所述主路径上所述第一网络设备的下一跳网络设备;所述第一网络设备从所述第一报文中获取第一标签,所述第一标签是基于第三网络设备的SRGB初始值以及第四网络设备的节点段标识确定的,所述第四网络设备为在所述主路径上所述第三网络设备的下一跳网络设备;所述第一网络设备将所述第一标签以及所述差值的和值作为由所述第一网络设备到所述第四网络设备的备份路径的入标签,从备份转发表中确定由所述第一网络设备到所述第四网络设备的备份路径的出标签;所述第一网络设备基于所述出标签向备份路径上所述第一网络设备的下一跳网络设备发送所述第一报文。
[0009] 通过上述方案,采用SRGB差值以及备份转发表来确定备份路径,从而能够克服节点所支持Context表的容量不足而导致的转发数据报文失败的问题。
[0010] 在一种可能的设计中,所述第一报文中包括用于指导所述第一报文在所述主路径上转发的标签栈列表;所述确定所述第一网络设备的SRGB初始值与所述第三网络设备的SRGB初始值的差值,包括:所述第一网络设备从所述标签栈列表的栈顶获取第二标签,所述第二标签是基于所述第三网络设备的节点段标识与所述第一网络设备的SRGB初始值确定的;
[0011] 所述第一网络设备在所述备份转发表确定所述第二标签对应的第一转发行为;所述第一转发行为用于指示查找标签信息表;所述标签信息表中包括所述第二标签对应的所述差值;所述第一网络设备从所述标签信息表中获取所述差值。
[0012] 通过上述设计,提前将相邻两个节点的SRGB初始值存储在标签信息表中,从而在确定所述第一网络设备的SRGB初始值与所述第三网络设备的SRGB初始值的差值时,直接从存储的标签信息表中获取即可,节省处理资源,另外标签信息表中仅包括差值,以及第三网络设备邻接的网络设备的节点段标识相关信息即可,不再需要在Context表存储全网中所有节点的节点段标识,节省存储资源,也能够克服节点所支持Context表的容量不足而导致的转发数据报文失败的问题。
[0013] 在一种可能的设计中,所述第一网络设备从所述第一报文中获取第一标签,包括:所述第一网络设备将所述标签栈列表栈顶的第二标签弹出后,从弹出所述第二标签的标签栈列表的栈顶获取所述第一标签;所述第一网络设备基于所述出标签向备份路径上所述第一网络设备的下一跳网络设备发送所述第一报文,包括:所述第一网络设备将所述标签栈列表中的第一标签交换为所述出标签,并向所述备份路径上所述第一网络设备的下一跳网络设备发送更新后的所述第一报文。
[0014] 在一种可能的设计中,所述第一网络设备在接收到所述第三网络设备在网络内泛洪的所述第三网络设备的节点段标识之后,向所述网络内的其它网络设备泛洪所述第三网络设备的节点段标识;其中,所述第一标签是所述第二网络设备根据所述第一网络设备泛洪的所述第三网络设备的节点段标识和所述第一网络设备的SRGB初始值确定的。
[0015] 由于,在转发路径中存在松散路径的情况下,当松散路径段的目的节点发生故障时,该节点的故障信息泛洪到整个网络后,全网所有的节点都会删除到该故障节点的对应的主备转发表。在松散路径的情况下,主路径和备份路径中,从首节点到尾节点,都需要通过松散路径段且需要从故障节点的上一跳节点绕过故障节点到达尾节点,由于该路径段的源节点在删除到故障节点的主备转发表后,无法将数据报文转发到故障节点的上一跳节点,会导致转发报文失败。因此,通过上述设计,在松散路径段的目的节点的上一跳节点收到松散路径段的目的节点的节点段标识后,将该目的节点的节点段标识在全网泛洪,从而松散路径段的源节点能够根据目的节点的节点段标识来确定转发路径,转发数据报文。
[0016] 在一种可能的设计中,第一网络设备可以在确定第三网络设备发生故障时,将第三网络设备的节点段标识在全网泛洪。
[0017] 在一种可能的设计中,所述方法还包括:所述第一网络设备接收所述第三网络设备在故障恢复后发送的指示信息,所述指示信息用于指示所述第三网络设备无法正确转发报文;
[0018] 所述第一网络设备在接收到所述第二网络设备发送的第二报文时,基于所述确定的出标签发送所述第二报文。
[0019] 在主路径上的转发节点发生故障时,上一跳节点切换到备份路径上转发报文。当故障节点恢复后重启完成时,故障恢复节点会将自身的节点(前缀)标签、邻接标签等信息重新泛洪给网络中的其它节点。上一跳节点接收到故障恢复节点泛洪的信息后,将数据报文重新切回到主路径,即重新通过故障恢复节点传输报文。但是由于故障恢复节点刚刚重启,本地数据库可能不完整,比如还没有学习到其它节点,比如主路径该故障恢复节点的下一跳节点的节点标签、邻接标签等信息,在该情况下,RT3接收到报文后,无法转发报文到下一跳节点,导致数据报文丢失。基于此,通过上述设计,故障节点恢复后优先发送指示信息来指示其上一跳网络设备,该恢复后的故障节点还无法正确定转发报文,从而上一跳网络设备依然通过备份路径来转发数据报文。
[0020] 第二方面,本申请实施例提供了一种传输路径故障的处理方法,包括:所述第二网络设备在通过主路径发送报文的过程中,确定所述第三网络设备发生故障;第二网络设备接收第一网络设备在网络内泛洪的第三网络设备的节点段标识;所述第三网络设备为所述第一网络设备的邻接网络设备;其中,所述第一网络设备为所述主路径上所述第二网络设备的下一跳网络设备,所述第三网络设备为在所述主路径上所述第一网络设备的下一跳网络设备;所述第二网络设备基于所述第一网络设备泛洪的所述第三网络设备的节点段标识,将所述报文通过备份路径发送给所述第一网络设备;所述第一网络设备为所述备份路径上所述第二网络设备的下一跳网络设备。
[0021] 由于,在转发路径中存在松散路径的情况下,当松散路径段的目的节点发生故障时,该节点的故障信息泛洪到整个网络后,全网所有的节点都会删除到该故障节点的对应的主备转发表。在松散路径的情况下,主路径和备份路径中,从首节点到尾节点,都需要通过松散路径段且需要从故障节点的上一跳节点绕过故障节点到达尾节点,由于该路径段的源节点在删除到故障节点的主备转发表后,无法将数据报文转发到故障节点的上一跳节点,会导致转发报文失败。因此,通过上述设计,在松散路径段的目的节点的上一跳节点收到松散路径段的目的节点的节点段标识后,将该目的节点的节点段标识在全网泛洪,从而松散路径段的源节点能够根据目的节点的节点段标识来确定转发路径,转发数据报文。
[0022] 第三方面,基于与第一方面的方法实施例同样的发明构思,本申请实施例提供了一种传输路径故障的处理装置,所述装置应用于第一方面所述的第一网络设备,即该装置可以是第一网络设备,也可以是能够应用于第一网络设备的芯片。该装置具有实现上述第一方面的各实施例的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
[0023] 第四方面,基于与第二方面提供的方法实施例同样的发明构思,本申请实施例提供了一种传输路径故障的处理装置,所述装置应用于第二方面所述的网络设备,即该装置可以是网络设备,也可以是能够应用于网络设备的芯片。该装置具有实现上述第二方面的各实施例的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
[0024] 第五方面,本申请实施例提供一种传输路径故障的处理装置,包括:处理器和存储器;该存储器用于存储指令,当该装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第一方面或第一方面的任一实现方法中的传输路径故障的处理方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线耦接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。当需要运行该装置时,通过固化在只读存储器中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导装置进入正常运行状态。在装置进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现设计中的方法。
[0025] 第六方面,本申请实施例提供一种传输路径故障的处理装置,包括:处理器和存储器;该存储器用于存储指令,当该装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第二方面或第二方面的任一实现方法中的传输路径故障的处理方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线耦接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。当需要运行该装置时,通过固化在只读存储器中的基本输入输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导装置进入正常运行状态。在装置进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第二方面或第二方面的任意可能的实现设计中的方法。
[0026] 第七方面,本申请实施例还提供了一种系统,包括第三方面或第五方面所述的装置,以及第四方面或第六方面所述的装置。在一个可能的设计中,该系统还可以包括本申请实施例提供的方案中与该两种网络设备进行交互的其他网络设备,例如传输路径上的其它网络设备。
[0027] 第八方面,本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述各方面的任意的传输路径故障的处理方法被执行。
[0028] 第九方面,本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面中的任意的传输路径故障的处理方法。
[0029] 另外,第三方面至第九方面中任一种设计方式所带来的技术效果可参见第一方面至第二方面中不同实现方式所带来的技术效果,此处不再赘述。

附图说明

[0030] 图1A为本申请实施例提供的一种网络系统架构示意图;
[0031] 图1B为本申请实施例提供的另一种网络系统架构示意图;
[0032] 图2为本申请实施例提供的传输路径故障的处理方法流程图;
[0033] 图3为本申请实施例提供的又一种网络系统架构示意图;
[0034] 图4为本申请实施例提供的传输路径故障处理方法示意图;
[0035] 图5为本申请实施例提供的一种TLV格式示意图;
[0036] 图6为本申请实施例提供的Flags格式示意图;
[0037] 图7为本申请实施例提供的装置700的结构示意图;
[0038] 图8为本申请实施例提供的网络设备800的结构示意图。

具体实施方式

[0039] 本申请应用于支持SR-TE的节点。在本申请实施例中,节点也可以称为网络设备,网络设备是在网络中提供路由转发功能的设备,例如,可以是路由器、交换机、转发器或者标签交换路由器(label switching router,LSR)等,不作限定。在后续描述过程中,以节点为例进行说明。
[0040] 在SR-TE技术中,控制平面采用基于链路状态的IGP协议,或者边界网关协议(border gateway protocol,BGP),来分发节点的MPLS标签,数据平面基于该控制平面分发的标签进行MPLS报文转发。
[0041] SR-TE(Segment Routing-Traffic Engineering)是使用内部网关协议(interior gateway protocol,IGP)或者边界网关协议(border gateway protocol,BGP)协议作为控制信令的一种新型的TE隧道技术。控制器负责计算隧道的转发路径,并将与路径严格对应的标签栈列表下发给转发器。在SR-TE隧道的入节点上,转发器根据标签栈列表,即可控制报文在网络中的传输路径。
[0042] 下面先对申请实施例中涉及到的术语进行解释说明。
[0043] 1)、段路由全局块(Segment Routing Global Block,SRGB):用户指定的为段(segment)预留的标签集合。
[0044] 2)、段(segment),通过段标签(Segment ID,SID)来标识。本申请实施例中的段标签可以称为段标识。SID,在转发层面,可以映射为MPLS标签。
[0045] 段包括三类,分别为前缀段(Prefix Segment)、邻接段(Adjacency Segment)和节点段(Node Segment)。
[0046] 前缀段,用于标识SR网络中的某个目的地址前缀(Prefix)。Prefix Segment可以通过IGP协议扩散到其他网元,全局可见,全局有效。Prefix Segment通过前缀段标识(Prefix Segment ID,Prefix SID)来标记。本申请实施例中将前缀段标签简称为前缀标签。Prefix SID是目的节点发布的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签。
[0047] 邻接段(Adjacency Segment)用于标识网络中的某两个邻接节点的路由链路。Adjacency Segment通过IGP协议扩散到其他网元,全局可见,本地有效。Adjacency Segment通过邻接段标签(Adjacency Segment ID,Adjacency SID)。本申请实施例中将邻接段标签简称为邻接标签。
[0048] 邻接标签具有一定的方向性,用于指导报文转发,比如,邻接标签9003对应链路PE1->P3。Adjacency SID为SRGB范围外的本地SID。
[0049] 节点段(Node Segment)是特殊的Prefix Segment,用于标识特定的节点(Node)。在节点的本地环回(Loopback)接口下配置IP地址作为前缀,这个节点的Prefix SID实际就是节点段标签(Node SID)。本申请实施例中将节点段标签简称为节点标签。
[0050] 简单来说,Prefix Segment代表目的地址,Adjacency Segment代表数据包的外发链路,可以分别类似于传统IP转发中的目的IP地址和出接口。在IGP区域内,节点使用扩展IGP协议将自身的Node SID以及Adjacency SID进行泛洪,这样任意一个节点都可以获得其他节点的信息。
[0051] 通过前缀(节点)SID和邻接SID的排序组合,可以构建出网络内的任何路径。网络中的一条路径可以通过多个路由段构成。构建出来的路径通过标签栈列表来表示。标签栈列表包括了转发路径上每个路由段对应的段标签(Segment ID)。
[0052] 目的节点通过IGP协议自己的节点(前缀)SID,转发节点解析节点SID,并根据自己的SRGB计算标签值。此后各节点使用IGP协议收集的拓扑信息,根据最短路径算法计算标签转发路径,并将计算的下一跳及出标签(OuterLabel)信息下发转发表,指导数据报文转发。
[0053] 另外,需要说明的是,本申请实施例中的多个指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。节点1或者节点2等也仅用于区分描述的节点,而不能理解为指示或者暗示相对重要性,也不能理解为指示或者暗示顺序。
[0054] 另外,本申请实施例中涉及到的转发表,一般可以是只包括主转发表,或者可以包括主转发表和备份转发表。本申请实施例中涉及到的主备转发表一般包括主转发表和备转发表。
[0055] 以图1A为例对前缀段的段路径的创建以及数据报文的转发进行说明。
[0056] 比如待建立的前缀段路径为RT1、RT2、RT3、RT4、RT5。RT1为该前缀段的首节点,RT5为该前缀段的目的节点。
[0057] 在RT5上配置SRGB=[5000-5999],在RT5的Loopback接口配置Prefix(node)SID为5,RT5基于SRGB和Prefix(node)SID生成转发表并下发。之后RT5将SRGB和Prefix SID封装到控制报文,并将该控制报文通过IGP向全网扩散。网络中其他网络设备接收到控制报文后,解析RT5发布的Prefix SID,根据自己的SRGB计算入标签值,同时根据下一跳节点发布的SRGB计算出标签值(OuterLabel),使用IGP拓扑计算标签转发路径,然后生成转发表。
[0058] RT4解析RT5发布的Prefix SID,根据自己的SRGB=[4000-4999]计算标签值,计算公式是:入标签inLabel=SRGB起始值+Prefix SID值,所以inLabel=4000+5=4005。使用IS-IS拓扑计算出标签(OuterLabel),计算公式是:OuterLabel=下一跳设备发布的SRGB的起始值+Prefix SID值(即该前缀段或者节点段上目的节点的节点标签),如图1A所示,RT4的下一跳设备为RT5,RT5发布的SRGB范围是[5000-5999],所以OuterLabel=5000+5=5005。
[0059] RT3计算过程与RT4类似,inLabel=3000+5=3005,OuterLabel=4000+5=4005。RT2计算过程与RT4类似,inLabel=2000+5=2005,OuterLabel=3000+5=3005。RT1计算过程与RT4类似,inLabel=1000+5=1005,OuterLabel=2000+5=2005。
[0060] 在建立RT1-RT5的段路径后,RT1节点在收到数据报文,添加标签值2005并转发。RT2节点收到携带该标签的数据报文,进行标签交换,将标签2005弹出,换成出标签3005。
RT3节点收到该标签报文,进行标签交换,将标签3005弹出,换成标签4004。RT4节点在收到该数据报文后,将标签4005弹出,换成标签5005。RT5节点在收到该数据报文后,将标签5005弹出,继续查路由转发。
[0061] 下面以图1B为例对严格的段路径(不允许跨节点)的创建以及数据报文的转发进行说明。
[0062] 转发器基于IGP协议分配邻接标签,并将分配的邻接标签上报给控制器,从而控制器基于邻接标签生成标签栈列表。
[0063] 邻接标签通过IGP协议泛洪到整个网络中。如图1B所示,以RT1节点为例,IGP协议分配邻接标签的具体过程如下:
[0064] RT1通过IGP协议为其所有链路申请本地动态标签(例如:RT1为链路RT1->RT2分配邻接标签1031)。RT1通过IGP协议发布邻接标签,泛洪到整个网络。网络中的其它设备通过IGP协议学习到RT1发布的邻接标签。具体的,其它节点按照RT1的方式分配和发布邻接标签,并泛洪给网络中的其它设备。
[0065] 控制器基于SR-TE的隧道约束属性进行路径计算,计算出来的路径根据拓扑和邻接标签,将整条路径的邻接标签整合在一起,生成一个标签栈列表。比如参见图1B所示,控制器计算出SR-TE隧道路径为RT1->RT2->RT3->RT4->RT5,对应的标签栈列表为{1031,1032,1034,1035},控制器通过计算出的标签栈列表下发给转发器入节点RT1。从而转发器根据控制器下发的标签栈列表获得SR-TE隧道。本申请此处也可以使用节点标签来构成标签栈列表,即标签栈列表为{1002,2003,3004,4005}。
[0066] 转发器上根据SR-TE隧道对应的标签栈列表,对报文进行标签操作,并根据栈顶标签逐跳查找转发出接口,指导数据报文转发到隧道目的地址。
[0067] 当报文进入SR-TE隧道时,入节点在报文中插入一个标签栈列表;当报文在SR-TE隧道中转发时,根据栈顶的标签查找转发出接口之后,将栈顶的标签剥掉。比如,参见图1B所示,入节点PE1为数据报文添加标签栈列表{1031,1032,1034,1035},然后根据栈顶的标签1031匹配链路,找到对应的转发出接口为RT1->RT2链路,之后将标签1031弹出。报文携带标签栈{1032,1034,1035},通过RT1->RT2链路向下一跳节点RT2转发。中间节点RT2收到报文后,根据栈顶的标签1032匹配链路,找到对应的转发出接口为RT2->RT3链路,之后将标签1032弹出,以此类推,节点RT3收到报文后,以与中间节点RT3相同的方式继续转发。直到节点RT4弹出最后一个标签1035,数据报文转发至节点RT5。出节点RT5收到的报文不带标签,通过查找路由表继续转发。
[0068] 严格的段路径方式,在存在等价路径的情况下,也无法进行负载分担。再该情况下可以根据节点标签,或者节点标签和邻接标签构成的混合标签栈,可指定跨节点的节点标签,控制器将标签栈发给转发器的首节点,转发器基于该标签栈,逐跳查找出接口弹出标签,指导数据报文进行转发到隧道目的地址。比如,如图1B所示,RT1-RT5的路径,指定需要跨的节点为:RT3、RT4,此时RT1-RT3之间构成了松散路径,可以通过RT2转发,也可以通过RT6转发。在此情况下,RT1上用于转发报文的标签栈列表为{2003,3004,4005}。
[0069] 在SR-TE转发报文的过程中,可能发生链路故障或者节点故障。目前,可以通过FRR机制来对路径进行恢复。比如节点R2节点为故障节点。
[0070] 节点R2未发生故障时,SR-TE的标签栈标识的转发路径为:RT1->RT2->RT3->RT4->RT5。当节点RT2故障时,节点RT2的邻居节点RT1替代节点RT2做标签弹出(POP)动作,并使用到下一层标签作为目的地址,且绕过故障节点RT2的路径作为备份路径进行数据报文的转发。备份路径为:RT1->RT6->RT3->RT4->RT5。
[0071] 比如RT1进行数据报文发送的标签栈列表为{1002,2003,3004,4005},RT1可以通过检查标签栈的栈顶标签1002,确定RT2节点是故障节点,然后通过检查标签栈的栈顶标签1002和第二个标签2003,确定故障节点后面路径所需要到达的节点为RT3。RT1计算出绕过故障节点RT2到达第二个标签2003所标识的节点(即RT3)的路径,作为对下一跳节点RT2的SR-TE FRR的节点保护路径。
[0072] 在存在故障节点切换到SR-TE FRR路径的场景中存在如下三个问题:
[0073] 问题一:标签信息表容量有限的问题,例如,容量可以指存储容量。
[0074] 问题二:松散路径导致的报文转发失败的问题。
[0075] 问题三:回切表项不全导致的报文转发失败的问题。
[0076] 下面针对上述三个问题,以及问题对应的解决方案进行详细说明。
[0077] 针对问题一:
[0078] 在RT2节点故障前,每一个节点通过IGP提前计算好备份转发表和标签信息表(Context表)。每一个节点都为其邻居节点生成Context表,其中,每一个节点的邻居节点数量等于每一个节点上生成的Context表的数量。Context表包括了全网络所有节点的节点(前缀)标签和邻居节点发布的所有的邻接标签。
[0079] 比如,节点RT1为其邻居节点RT2生成Context表,Context表中包含了全网所有节点对应的节点(前缀)标签信息以及RT2发布的邻接标签。全网所有节点中每个节点对应的节点(前缀)标签信息是该节点的节点标签与RT2节点的SRGB的初始值的和。
[0080] 由于Context表是预先生成的,SR-TE FRR的方案是节点为该节点的每个邻居都生成Context表,因此Context表的规格为全网的节点数+邻居节点的邻居数,所以每个节点需要生成邻居数*(全网节点数+邻居节点的邻居数)这样规模的Context表。
[0081] 当网络包括节点数较多,且有些节点所支持的Context表的规格不足以支持全网节点数+邻居节点的邻居数这样的规格时,会导致这些节点生成的Context表中内容不全,在网络中出现故障节点,可能会导致无法切换到正确的备份路径来转发报文。
[0082] 需要说明的是,主路径中某个节点,或者某个节点到下一跳的路径发生故障时,在主路径中该节点的上一跳节点感知到故障后,上一跳节点的会将该节点的故障信息泛洪到网络中其它节点。
[0083] 基于此,本申请实施例提供了一种传输路径故障的处理方法,参见图2所示。
[0084] S201,第一节点接收第二节点发送的第一报文。
[0085] 其中,所述第二节点为主路径上所述第一节点的上一跳节点。
[0086] S202,所述第一节点在确定所述第三节点故障时,确定所述第一节点的段路由全局块SRGB初始值与所述第三节点的SRGB初始值的差值。
[0087] 其中,所述第三节点为所述主路径上所述第一节点的下一跳节点。
[0088] S203,所述第一节点从所述第一报文中获取第一标签,所述第一标签是基于第三节点的SRGB初始值以及第四节点的节点段标识确定的。
[0089] 其中,所述第四节点为在所述主路径上所述第三节点的下一跳节点。
[0090] S204,所述第一节点将所述第一标签以及所述差值的和值作为由所述第一节点到所述第四节点的备份路径的入标签,从备份转发表中确定由所述第一节点到所述第四节点的备份路径的出标签。
[0091] S205,所述第一节点基于所述出标签向备份路径上所述第一节点的下一跳节点发送所述第一报文。
[0092] 通过上述方案,采用SRGB差值以及备份转发表来确定备份路径,从而能够克服节点所支持Context表的容量不足而导致的转发数据报文失败的问题。
[0093] 在一种可能的实现方式中,所述第一报文中包括用于指导所述第一报文在所述主路径上转发的标签栈列表;所述确定所述第一节点的SRGB初始值与所述第三节点的SRGB初始值的差值,包括:所述第一节点从所述标签栈列表的栈顶获取第二标签,所述第二标签是基于所述第三节点的节点段标识与所述第一节点的SRGB初始值确定的;所述第一节点在所述备份转发表确定所述第二标签对应的第一转发行为;所述第一转发行为用于指示查找标签信息表;所述标签信息表中包括所述第二标签对应的所述差值;所述第一节点从所述标签信息表中获取所述差值。
[0094] 现有在主路径中某个节点出现故障的情况下,该故障节点的上一跳节点通过为该故障节点生成Context表以及主备转发表由主路径切换到备份路径上时,通过根据标签栈中的栈顶标签查找备转发表,确定备转发表中栈顶标签对应转发表项中的转发行为是查找Context表后,根据Context表来确定备份路径上需要转发报文的下一跳节点,也就是现有仅查询一次备转发表,确定备份路径是Context表来实现的,而本申请实施例提供的方案中,通过给转发面节点下发SRGB的差值的情况,仅需要使用Context表确定故障节点的下一跳节点的节点标签,而确定备份路径的转发报文的下一跳节点时,是根据故障节点的下一跳节点的节点标签再查询一次备转发表,因此Context表中不需要包括所有节点对应的节点标签,仅需要包括邻居节点其邻接的节点对应的标签信息即可,从而避免表项容量不足导致的转发报文失败,并且可以节省存储资源。
[0095] 在一种可能的实施方式中,所述第一节点在接收到所述第三节点在网络内泛洪的所述第三节点的节点段标识之后,向所述网络内的其它节点泛洪所述第三节点的节点段标识;其中,所述第一标签是所述第二节点根据所述第一节点泛洪的所述第三节点的节点段标识和所述第一节点的SRGB初始值确定的。
[0096] 基于此,第二节点接收第一节点在网络内泛洪的第三节点的节点段标识;所述第三节点为所述第一节点的邻接节点,所述第一节点泛洪的所述第三节点的节点段标识的优先级低于所述第三节点泛洪的第三节点的节点段标识;所述第二节点在通过主路径发送报文的过程中,确定所述第三节点发生故障;其中,所述第一节点为所述主路径上所述第二节点的下一跳节点,所述第三节点为在所述主路径上所述第一节点的下一跳节点;所述第二节点基于所述第一节点泛洪的所述第三节点的节点段标识,将所述报文通过备份路径发送给所述第一节点;所述第一节点为所述备份路径上所述第二节点的下一跳节点。
[0097] 通过该方式,能够解决问题二,具体如何实现的可以参见后续针对问题二部分的详细描述。
[0098] 在一种可能的实施方式中,所述第一网络设备接收所述第三网络设备在故障恢复后发送的指示信息,所述指示信息用于指示所述第三网络设备无法正确转发报文;所述第一网络设备在接收到所述第二网络设备发送的第二报文时,基于所述确定的出标签发送所述第二报文。通过该方式,能够解决问题三,具体如何实现的可以参见后续针对问题三部分的详细描述。
[0099] 下面结合具体场景,对本申请实施例提供的传输路径故障的处理方法做更详细的描述。需要说明的是,如下所述的方法流程是比较全面的介绍,其中某些步骤或介绍为可能的实现方式,该方法流程中的任意两个或任意两个以上步骤,均可以组成一个本申请实施例需要保护的方案,即在一些步骤为可选的情况下,其余步骤仍然可以组成本申请实施例需要保护的方案,可选步骤还可以有其它可能的实现方式。
[0100] 本申请实施例中提出一种配置Context表的方式。当节点通过IGP获取到邻居节点发布的邻接标签以及邻居节点其邻接的节点的节点标签,并在学习到邻居节点的SRGB后,生成Context表。Context表中包括邻居节点发布的邻接标签,以及邻居节点其邻接的节点的节点标签信息,以及本节点的SRGB初始值与邻居节点的SRGB初始值的差值,此处节点标签信息是邻居节点的SRGB初始值与所述邻居节点其邻接的节点的节点标签的和。
[0101] 以图3所示为例,RT2生成的Context表的部分内容如表1所示,表1示出Context表中为邻居节点RT3生成的表项的部分内容。其中,RT2的SRGB初始值为2000,RT2的邻居节点RT3的SRGB初始值为3000,因此,RT2的SRGB初始值与RT3的SRGB初始值的差值为-1000。
[0102] 表1
[0103]
[0104] Inlabel,表示入标签,为本节点的SRGB初始值+邻居节点的节点Sid,即RT2的SRGB初始值2000+RT3的节点标签3=2003。入标签作为Context表查表的关键(KEY)值字段。
[0105] SRGB差:为本节点的SRGB初始值–邻居节点的SRGB初始值。
[0106] Adj Sid,表示邻居节点发布的邻接标签,RT3发布的邻接标签分别为RT3与RT4之间链路的邻接标签1034,RT3与RT7之间链路的邻接标签1037,以及RT3与RT6之间链路的邻接标签1036。
[0107] Adj节点Sid,表示邻居节点发布的邻接标签对应的目的节点,使用本节点的SRGB初始值+该目的节点发布的节点Sid。比如,RT3与RT4之间链路的邻接标签1034,目的节点是RT4,则1034对应的Adj节点Sid为RT2的SRGB初始值+RT4的节点标签=2004。
[0108] 下面以图3所示为例,对数据报文的转发过程进行详细描述。
[0109] 以图3所示,RT1-RT5的路径,指定需要跨的节点为:RT3、RT4,此时RT1-RT3之间构成了松散路径,可以通过RT2转发,也可以通过RT6转发,本申请实施例中RT1经过路径计算,确定的主路径为RT1->RT2->RT3->RT4->RT5。在此情况下,RT1上用于转发报文的标签栈列表为{2003,3004,4005}。比如,在RT3故障的情况下备份路径为RT1->RT2->RT7->RT4->RT5。同时,RT2会生成全网的节点Sid的主备转发表。主备转发表的部分内容可以参见表2所示。
图2仅示出了入标签为2003和2004的两条表项的部分内容。
[0110] 表2
[0111]
[0112] 在RT3未发生故障时,如图3所示,RT1向RT2发送数据报文,数据报文中的标签栈为{2003,3004,4005},根据标签栈中的栈顶标签查找主转发表,比如,查找表2,栈顶标签为2003,将2003作为inlabel,查找该入标签为2003对应的这条转发表项,该条转发表项中指示的转发行为转发到RT3,从而RT2将栈顶标签交换为3003,即将栈顶标签交换为基于下一跳节点的SRGB初始值(RT3的SRGB初始值)以及目的节点的节点标签(RT3的节点标签)确定的标签值,然后转发更新后的数据报文到RT3。RT3接收到RT2发送的数据报文后,数据报文中的标签栈为{3003,3004,4005},确定栈顶标签至少接收节点为自身,因此,将栈顶标签弹出后,根据栈顶标签3004确定下一跳节点为RT4,将栈顶标签3004交换为4004,并将更新后数据报文转发到RT4,同理RT4接收到RT3发送的数据报文后,数据报文的标签栈为{3004,
4005},确定栈顶标签指示接收节点为自身,因此将栈顶标签弹出,根据栈顶标签4005确定下一跳节点为RT5,因此将栈顶标签交换为5005,并将更新后的数据报文转发到RT5。RT5接收到RT4发送的数据报文后,数据报文的标签栈为{5005},确定栈顶标签指示接收节点为自身,因此将栈顶标签弹出,继续查找转发表继续转发。
[0113] 则RT2在接收到RT1的数据报文后,根据数据报文的标签栈的栈顶标签2003,确定栈顶标签指示的下一跳节点RT3故障时,RT2是要找到绕过RT3到RT3的下一跳节点RT4的转发路径。从而查找备份转发表(表2),查找到的转发行为是弹出栈顶标签2003,并查找RT2为邻居节点RT3生成的Context表。根据表1的Context表获取到SRGB差为-1000,将栈顶标签2003弹出,此时的标签栈为{3004,4005},RT2获取从RT3到下一跳节点RT4的标签,即栈顶标签3004,并使用栈顶标签与SRGB差作和,即次外层标签(3004)+SRGB差(-1000)=2004,即获取以RT2为入节点到以RT4出节点的路由段,在RT2上的入标签。使用2004作为入标签查找主转发表,查找到的下一跳节点为RT3,由于到RT3的接口故障,于是切换到备份路径,查找备份转发表,将2004作为入标签查找到的转发行为是转发到RT7,出标签为7004,从而RT2节点将栈顶标签交换为查找到的出标签,即将栈顶标签3004弹出,并交换为7004,此处的标签栈为{7004,4005},将更新后的数据报文转发给RT7。
[0114] RT7接收到数据报文后,根据栈顶标签7004确定下一跳节点为RT4,从而将栈顶标签7004交换为4004,并将更新后的数据报文转发给RT4,同理RT4接收到数据报文后,确定栈顶标签指示的目的节点为自身,将栈顶标签弹出,确定更新后的标签栈的栈顶标签4005指示的下一跳节点为RT5,从将栈顶标签4005交换为5005,并将更新后的数据报文发送给RT5。
[0115] 现有在主路径中某个节点出现故障的情况下,该故障节点的上一跳节点通过为该故障节点生成Context表以及主备转发表由主路径切换到备份路径上时,通过根据标签栈中的栈顶标签查找备转发表,确定备转发表中该栈顶标签对应的转发表项中的转发行为是查找Context表后,根据Context表来确定备份路径上需要转发报文的下一跳节点,也就是现有仅查询一次备转发表,确定备份路径是Context表来实现的,而本申请实施例提供的方案中,通过给转发面节点下发SRGB的差值的情况,仅需要使用Context表确定故障节点的下一跳节点的节点标签,而确定备份路径的转发报文的下一跳节点时,是通过故障节点的下一跳节点的节点标签再查询一次备转发表,因此Context表中不需要包括所有节点对应的节点标签,仅需要包括邻居节点其邻接的节点对应的标签信息即可,从而避免表项容量不足导致的转发报文失败,并且可以节省存储资源。
[0116] 针对问题二:
[0117] 在转发路径中存在松散路径的情况下,当松散路径段的目的节点发生故障时,该节点的故障信息泛洪到整个网络后,全网所有的节点都会删除到该故障节点的对应的主备转发表。在松散路径的情况下,主路径和备份路径中,从首节点到尾节点,都需要通过松散路径段且需要从故障节点的上一跳节点绕过故障节点到达尾节点,由于该路径段的源节点在删除到故障节点的主备转发表后,无法将数据报文转发到故障节点的上一跳节点,会导致转发报文失败。
[0118] 以图3所示为例,RT1指定的SR-TE路径经过的节点为RT3,RT4,RT5,当RT3故障的时候,RT2感知到RT3故障时,通过IGP泛洪(Flooding)该RT3故障的故障信息,并触发SR-TE FRR切换,切换到备份路径RT7,RT4,RT5,绕过故障点RT3,当RT3故障信息泛洪到全网的节点后,RT1开始收敛,会删除到RT3的主备转发表,从而RT1无法转发数据报文到RT2。
[0119] 基于此,本申请实施例提供了一种传输路径故障的处理方法,故障节点的上一跳节点采用IGP协议向全网的所有节点泛洪该故障节点的前缀(节点)标签。一种方式是:故障节点的上一跳节点感知到该故障节点发生故障时,采用IGP协议向全网泛洪该故障节点的前缀(节点)标签。示例性地,可以设置该由上一跳节点泛洪的故障节点的前缀标签的优先级低于由故障节点在发生故障前,获取到自身的前缀标签时泛洪的自身的前缀标签的优先级。另一种方式是:故障节点发生故障前,获取到自身的前缀标签时泛洪自身的前缀标签,故障节点的上一跳节点在接收到该故障节点发生故障前泛洪的前缀标签时,在全网泛洪该故障节点的前缀标签。示例性地,可以设置该由上一跳节点泛洪的故障节点的前缀标签的优先级低于由故障节点在发生故障前,获取到自身的前缀标签时泛洪的自身的前缀标签的优先级。
[0120] 上一跳节点在泛洪该故障节点的前缀标签时,可以将故障节点的前缀标签携带在Mapping TLV(Type-Length-Value)。
[0121] 需要说明的是,本申请实施例中有关Mapping TLV的细节,请参考国际互联网工程任务组(Internet Engineering Task Force,IETF)发布的文稿draft-ietf-isis-segment-routing-extensions,该文档与此相关部分的内容好像整体复制一般以引入的方式并入本文本中,此处为了简洁,不再赘述。
[0122] 在TLV的定义中,包括三个域,分别为:标签域(Tag),长度域(Length),内容域(Value)。在Value的内容中包含了标签。Mapping TLV也可以称为标签绑定TLV(SID/Label Binding TLV)。示例性地,以图5所示为Mapping TLV格式为例。其中,Type表示该TLV的类型,Length表示控制报文的长度,Flags表示标志位,RESERVED表示预留位,当前未用到。Range字段提供了指定一个地址段和地址段关联的Prefix SID段的能力,Prefix length表示前缀的长度,prefix在通告路径的尾节点表示转发等价类,SubTLV表示发布Prefix-SID的sub-TLV。
[0123] 示例性地,本申请实施例中,上一跳节点可以在Flags中增加一个R字段,用于表示重发布标志位,即针对故障节点的前缀标签由该上一跳节点重新发布给全网其它节点。
[0124] Flags的格式可以参见图6所示。其中,F表示地址族标志。如果未置位,代表IPv4前缀;如果置位,代表IPv6前缀。M表示镜像环境标记。如果通告的SID关联一个镜像环境则设置该标记,S表示SID/Label Binding TLV是否可在整个路由域内泛洪。如果置位,表示在整个路由域内泛洪;如果未置位,SID/Label Binding TLV一定不能在level间渗透。D表示当SID/Label Binding TLV从level-2向level-1渗透时,必须设置该标记。否则该标记必须被清除。A表示附属标记。其中,Level是中间系统到中间系统(Intermediate System-to-Intermediate System,IS-IS)路由协议中对网络分层的概念。普通区域称为Level-1,骨干区称为Level-2。
[0125] 以图3所示的网络架构为例,RT2在确定RT3故障时,向全网泛洪RT3的节点标签,RT2泛洪的RT3的节点标签的优先级可以低于RT3泛洪的RT3的节点标签的优先级。RT1在收到RT2泛洪的RT3的节点标签后,根据RT3的节点标签确定向RT2节点发送数据报文的出标签,即RT2的SRGB初始值+RT3的节点标签=2000+3=2003。从而RT2在接收到报文后切换到备份路径上继续转发。RT2切换备份路径转发报文的方式可以采用现有context表的形式,当然还可以采用上述配置context表的方式,此处对此不作限定。具体的发送过程可以参见针对问题一的实施例描述的转发方式,此处不再赘述。
[0126] 针对问题三:
[0127] 在主路径上的转发节点发生故障时,上一跳节点切换到备份路径上转发报文。当故障节点恢复后重启完成时,故障恢复节点会将自身的节点(前缀)标签、邻接标签等信息重新泛洪给网络中的其它节点。上一跳节点接收到故障恢复节点泛洪的信息后,将数据报文重新切回到主路径,即重新通过故障恢复节点传输报文。但是由于故障恢复节点刚刚重启,本地数据库可能不完整,比如还没有学习到其它节点,比如主路径该故障恢复节点的下一跳节点的节点标签、邻接标签等信息,在该情况下,RT3接收到报文后,无法转发报文到下一跳节点,导致数据报文丢失。
[0128] 以图3所示,RT1指定的SR-TE路径为RT3,RT4,RT5,当RT3故障的时候,RT2通过感知到RT3故障后,触发SR-TE FRR切换,切换到备份路径RT7,RT4,RT5,因此绕过故障节点RT3。但当RT3故障恢复,并且重启完成时,RT3将Node Sid重新发布到全网,RT2将数据报文重新切回到RT3。但是由于RT3刚刚重启完成,它本地数据库可能还不全,比如还没有学到RT4和RT5的node Sid,这样就导致数据报文在RT3无法转发到下一跳节点RT4,丢弃报文。
[0129] 基于此,本申请实施例提供了一种传输路径故障的处理方法。在故障节点恢复,且重启完成时,为防止恢复的故障节点的上一跳节点在感知到故障节点恢复时,恢复的故障节点学习到其它节点的前缀SID,导致数据报文丢失。在故障节点恢复后首先在全网发布指示信息,指示信息用于指示恢复的故障节点无法正确转发报文;因此上一跳节点在接收到待发送给恢复的故障节点的数据报文时,依然从备份路径转发数据报文。
[0130] 示例性地,指示信息可以携带在Overload bit。Overload bit是IS-IS路由协议中规定的。如果一个节点不能完成全部的连接状态数据(LSDB),即本地存储用于存储全网所有节点的拓扑信息,它将在自己发布的链路状态数据包的头部用一个bit来标识其未完成LSDB,无法正确转发报文,这一个bit的标识位叫做Overload(OL)bit。通过该节点发布的链路状态数据包中的Overload bit,其他节点得知该节点可能无法做出正确的路由决定,即无法正确转发数据报文,因为它的LSDB没有完成。其他节点在计算最短路径时不会通过这个节点来转发数据报文。
[0131] 以图3所示的网络架构为例,故障节点RT3在故障恢复,且重启完成后,为防止RT2首先感知到RT3故障恢复,且此时RT3还未学习到RT4和RT5的前缀Sid,导致数据报文丢失。RT3在故障重启完成后在发布链路状态数据包的头部添加Overload bit标识位。
[0132] 节点RT2收到RT3发布链路状态数据包中的Overload bit,感知到其下一跳节点RT3处于Overload状态。因此,节点RT2继续走故障恢复前的SR-TE FRR转发路径,RT2采用备份路径转发数据报文的方式可以采用现有context表的形式,当然还可以采用上述配置context表的方式,此处对此不作限定。具体的发送过程可以参见图4对应的实施例的转发方式,此处不再赘述。
[0133] 故障节点完成LSDB的时间,即Overload时间,一般比较长,比如是60s。因此在该时长内RT2可以采用查Context表按着SR-TE FRR路径(备份路径)转发数据报文。示例性地,可以给配置Overload时长,RT2在该时长内采用备份路径转发数据报文。当然,RT3在完成LSDB时,可以再次在全网发布链路状态数据包,且头部不再包括overload bit标志位。RT2在收到该不包括overload bit标志位的链路状态数据包后,再切回到该RT3转发数据报文。
[0134] 基于与方法实施例同样的发明构思,本申请实施例还提供了一种装置,参见图7所示,该装置700应用于网络设备。该装置700可以包括接收模块701、处理模块702、发送模块703。该装置700具体可以是网络设备中的处理器,或者芯片或者芯片系统,或者是一个功能模块等。处理模块702用于对装置700的动作进行控制管理,接收模块701用于接收信息或者报文,发送模块703用于发送信息或者发送报文,处理模块702用于对接收模块701接收到的信息或者报文进行处理。处理模块702还可以用于指示上述任意实施例中涉及网络设备(比如第一节点或者RT2)的处理过程和/或本申请所描述的技术方案的其他过程。该装置还可以包括存储模块(图7中未示出),存储模块用于存储Context表与主备转发表。在一种可能的实施方式中,该装置700可以应用于故障节点的上一跳节点,比如图2对应的实施例中的第一节点或者图3、图4对应的实施例中的RT2。
[0135] 以该装置180应用于第一节点为例,接收模块701,用于接收第二节点发送的第一报文,所述第二节点为主路径上所述第一节点的上一跳节点;处理模块702,用于确定所述第三节点故障时,确定所述第一节点的段路由全局块SRGB初始值与所述第三节点的SRGB初始值的差值,所述第三节点为所述主路径上所述第一节点的下一跳节点;从所述第一报文中获取第一标签,所述第一标签是基于第三节点的SRGB初始值以及第四节点的节点段标识确定的,所述第四节点为在所述主路径上所述第三节点的下一跳节点;并将所述第一标签以及所述差值的和值作为由所述第一节点到所述第四节点的备份路径的入标签,从备份转发表中确定由所述第一节点到所述第四节点的备份路径的出标签;发送模块703,用于基于所述出标签向备份路径上所述第一节点的下一跳节点发送所述第一报文。
[0136] 在一种可能的实施方式中,所述第一报文中包括用于指导所述第一报文在所述主路径上转发的标签栈列表;
[0137] 所述处理模块702,在确定所述第一节点的SRGB初始值与所述第三节点的SRGB初始值的差值,具体用于从所述标签栈列表的栈顶获取第二标签,所述第二标签是基于所述第三节点的节点段标识与所述第一节点的SRGB初始值确定的;在所述备份转发表确定所述第二标签对应的第一转发行为;所述第一转发行为用于指示查找标签信息表;所述标签信息表中包括所述第二标签对应的所述差值;从所述标签信息表中获取所述差值。
[0138] 在一种可能的实施方式中,所述处理模块702,在从所述第一报文中获取第一标签时,具体用于将所述标签栈列表栈顶的第二标签弹出后,从弹出所述第二标签的标签栈列表的栈顶获取所述第一标签;所述处理模块702,还用于将所述标签栈列表中的第一标签交换为所述出标签;所述发送模块703,具体用于向所述备份路径上所述第一节点的下一跳节点发送更新后的所述第一报文。
[0139] 在一种可能的实施方式中,所述发送模块703,还用于在所述接收模块701接收所述第二节点发送的第一报文之前,以及在接收到所述第三节点在网络内泛洪的所述第三节点的节点段标识之后,向所述网络内的其它节点泛洪所述第三节点的节点段标识,所述第一节点泛洪的所述第三节点的节点段标识的优先级小于所述第三节点泛洪的所述第三节点的节点段标识;
[0140] 其中,所述第一标签是所述第二节点根据所述第一节点泛洪的所述第三节点的节点段标识和所述第一节点的SRGB初始值确定的。
[0141] 在一种可能的实施方式中,所述接收模块,还用于接收所述第三网络设备在故障恢复后发送的指示信息,所述指示信息用于指示所述第三网络设备无法正确转发报文;所述发送模块,还用于在所述接收模块接收到所述第二网络设备发送的第二报文时,基于所述确定的出标签发送所述第二报文。
[0142] 在一种可能的实施方式中,该装置700可以应用于松散路径段的源节点,比如图2所示的第二节点,或者图3、图4对应的实施例中的RT1。
[0143] 以应用到第二节点为例,接收模块701,用于接收第一网络设备在网络内泛洪的第三网络设备的节点段标识;所述第三网络设备为所述第一网络设备的邻接网络设备,所述第一网络设备泛洪的所述第三网络设备的节点段标识的优先级低于所述第三网络设备泛洪的第三网络设备的节点段标识;处理模块702,用于在通过主路径发送报文的过程中,确定所述第三网络设备发生故障;其中,所述第一网络设备为所述主路径上所述第二网络设备的下一跳网络设备,所述第三网络设备为在所述主路径上所述第一网络设备的下一跳网络设备;发送模块703,用于基于所述第一网络设备泛洪的所述第三网络设备的节点段标识,将所述报文通过备份路径发送给所述第一网络设备;所述第一网络设备为所述备份路径上所述第二网络设备的下一跳网络设备。
[0144] 本申请实施例还提供一种网络设备的结构,如图8所示,网络设备800中可以包括通信接口810、处理器820。可选的,网络设备800中还可以包括存储器830。其中,存储器830可以设置于网络设备内部,还可以设置于网络设备外部。上述图7中所示的、处理模块702均可以由处理器820实现。接收模块701、发送模块703可以由通信接口810实现。
[0145] 在一种可能的实施方式中,处理器820通过通信接口810收发报文或者消息,并用于实现图2~图4中所述的节点(第一节点或者RT2)所执行的任一方法。在实现过程中,处理流程的各步骤可以通过处理器820中的硬件的集成逻辑电路或者软件形式的指令完成图2~图4中所述的第一节点或者RT2所执行的方法。为了简洁,在此不再赘述。处理器820用于实现上述方法所执行的程序代码可以存储在存储器830中。存储器830和处理器820耦合。
[0146] 在一种可能的实施方式中,处理器820可以通过通信接口810收发报文或者消息,并用于实现图2~图4中所述的节点(第二节点或者RT1)所执行的任一方法。在实现过程中,处理流程的各步骤可以通过处理器820中的硬件的集成逻辑电路或者软件形式的指令完成图2~图4中所述的第二节点或者RT1所执行的方法。为了简洁,在此不再赘述。处理器820用于实现上述方法所执行的程序代码可以存储在存储器830中。存储器830和处理器820耦合。
[0147] 本申请实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如网络设备800中的通信接口810,示例性地,该其它装置可以是与该网络设备800相连的设备,比如,该其它装置可以是该网络设备800的上一跳节点或者下一跳节点等。
[0148] 本申请实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0149] 本申请实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。
[0150] 处理器820可能和存储器830协同操作。存储器830可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器830是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
[0151] 本申请实施例中不限定上述通信接口810、处理器820以及存储器830之间的具体连接介质。本申请实施例在图8中以存储器830、处理器820以及通信接口810之间通过总线连接,总线在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0152] 基于以上实施例,本申请实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的方法。所述计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0153] 基于以上实施例,本申请实施例还提供了一种芯片,该芯片包括处理器,用于实现上述任意一个或多个实施例所涉及的功能,例如用于实现图2-图4中第一节点或者RT2所执行的方法,或者用于实现图2-图4中第二节点或者RT1所执行的方法。可选地,所述芯片还包括存储器,所述存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
[0154] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0155] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0156] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0157] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0158] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。