CN113132222B - 报文转发方法、设备及计算机可读存储介质 - Google Patents
报文转发方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113132222B CN113132222B CN201911422705.1A CN201911422705A CN113132222B CN 113132222 B CN113132222 B CN 113132222B CN 201911422705 A CN201911422705 A CN 201911422705A CN 113132222 B CN113132222 B CN 113132222B
- Authority
- CN
- China
- Prior art keywords
- node
- forwarding
- forwarding table
- next hop
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了报文转发方法、设备及计算机可读存储介质,用于转发BIER报文。第一节点获取第一节点到第二节点的ECMP的多个转发表,该ECMP包括多条等价路径,每条等价路径与多个转发表一一对应;响应于第一节点的第一下一跳节点与第一节点之间的第一链路发生故障,第一节点根据第二下一跳节点刷新第一转发表,阻止刷新多个转发表中除第一转发表之外的转发表。基于刷新后的第一转发表及多个转发表中除第一转发表之外的转发表转发BIER报文,第二下一跳节点为上述多个下一跳节点中与第一节点之间的链路未发生故障的下一跳节点。本申请有效降低对组播流量的影响,减少丢包或多包。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种报文转发方法、设备及计算机可读存储介质。
背景技术
基于Bit索引的显式复制(bit indexed explicit replication,BIER)技术是一种组播技术,在BIER技术中,对网络中的每个边缘节点设备配置一个BIER转发路由器标识(BIER Forwarding Router id,BFR-id),将边缘节点设备的配置信息通过内部网关协议(Interior Gateway Protocol,IGP)泛洪的方式在网络中泛洪,使得网络中各节点能够确定每个BFR-id标识的是哪台设备。此外,网络中的各节点通过控制面IGP泛洪的信息建立转发表,各节点可在转发面利用转发表来转发BIER的报文。
发明内容
本申请实施例提供了一种报文转发方法、设备及计算机可读存储介质,以解决相关技术提供的问题,技术方案如下:
一方面,提供了一种报文转发方法,该方法用于转发BIER报文,包括:第一节点获取第一节点到第二节点的ECMP的多个转发表,该ECMP包括多条等价路径,每条等价路径与多个转发表一一对应,该多个转发表中的每个转发表包括对应等价路径上的、第一节点的下一跳节点的标识。响应于第一节点的第一下一跳节点与第一节点之间的第一链路发生故障,第一节点确定第一节点的第二下一跳节点,其中,该第二下一跳节点与第一节点之间的链路未发生故障,第一链路是第一等价路径的一部分链路,第二链路时第二等价路径的一部分链路,多条等价路径包括第一等价路径和第二等价路径。第一节点根据该第二下一跳节点刷新第一转发表,以及阻止刷新多个转发表中除第一转发表以外的转发表,第一转发表对应第一等价路径,刷新后的第一转发表包括第二下一跳节点的标识。之后,第一节点基于刷新后的第一转发表及多个转发表中除第一转发表以外的转发表转发BIER报文。
本申请对于BIER ECMP的情况,在第一节点的第一下一跳节点与第一节点之间的第一链路发生故障的情况下,刷新该第一链路所在的第一等价路径对应的第一转发表,而阻止刷新多个转发表中除该第一转发表以外的转发表,从而有效降低对组播流量的影响,减少丢包或多包。
在示例性实施例中,第二下一跳节点为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少的下一跳节点。通过选择使用次数最少的第二下一跳节点刷新第一转发表,使得负载更加均衡。
在示例性实施例中,针对第一节点的下一跳节点中,除第一下一跳节点以外,存在多个使用次数最少的下一跳节点的情况,该第二下一跳节点为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
在示例性实施例中,第一节点根据该第二下一跳节点刷新第一转发表之后,还包括:启动第一计时器计时;在所述第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,所述旧转发表为所述第一节点在所述第一链路恢复之前所使用的转发表,所述新转发表为所述第一链路恢复之后所建立的转发表,所述第一计时器指示所述新转发表在所述第一计时器计时结束之前被建立完成;在所述第一计时器计时结束之后,将所述旧转发表切换到所述新转发表,按照所述新转发表转发BIER报文。
在示例性实施例中,所述启动第一计时器计时,包括:启动第二计时器计时;在所述第二计时器计时结束之后,启动所述第一计时器计时。第二计时器可以用于对旧转发表使用的时间进行计时,即进行定时重优化,为了避免负载不均衡,在第二计时器的计时结束后,启动第一计时器,以建立新转发表。
在示例性实施例中,所述将所述旧转发表切换到所述新转发表之后,所述方法还包括:删除所述旧转发表。通过对旧转发表进行删除,以节省存储空间。
还提供了一种报文转发装置,该装置用于转发BIER报文,该装置包括:
获取模块,用于获取第一节点到第二节点的等价多路径ECMP的多个转发表,所述ECMP包括多条等价路径,所述多条等价路径与所述多个转发表一一对应,所述多个转发表中的每个转发表包括对应等价路径上的、所述第一节点的下一跳节点的标识;
确定模块,用于响应于所述第一节点的第一下一跳节点与所述第一节点之间的第一链路发生故障,确定所述第一节点的第二下一跳节点,其中,所述第一节点的所述第二下一跳节点与所述第一节点之间的第二链路未发生故障,所述第一链路是第一等价路径的一部分链路,所述第二链路是第二等价路径的一部分链路,所述多条等价路径包括所述第一等价路径和所述第二等价路径;
刷新模块,用于根据所述第二下一跳节点刷新第一转发表,以及所述第一节点阻止刷新所述多个转发表中除所述第一转发表以外的转发表,所述第一转发表对应所述第一等价路径,所述刷新后的第一转发表包括所述第二下一跳节点的标识;
转发模块,用于基于刷新后的第一转发表及所述多个转发表中除所述第一转发表以外的转发表转发BIER报文。
在示例性实施例中,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少的下一跳节点。
在示例性实施例中,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
在示例性实施例中,该装置,还包括:
计时模块,用于启动第一计时器计时;
处理模块,用于在所述第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,所述旧转发表为所述第一节点在所述第一链路恢复之前所使用的转发表,所述新转发表为所述第一链路恢复之后所建立的转发表,所述第一计时器指示所述新转发表在所述第一计时器计时结束之前被建立完成;在所述第一计时器计时结束之后,将所述旧转发表切换到所述新转发表;
所述转发模块,还用于按照所述新转发表转发BIER报文。
在示例性实施例中,所述计时模块,用于启动第二计时器计时;在所述第二计时器计时结束之后,启动所述第一计时器计时。
在示例性实施例中,所述处理模块,还用于删除所述旧转发表。
还提供一种报文转发设备,所述报文转发设备包括:存储器及处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现上述任一所述的报文转发方法。
还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上任一所述的报文转发方法。
提供了另一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一方面或第一方面的任一种可能的实施方式中的方法。
作为一种示例性实施例,所述处理器为一个或多个,所述存储器为一个或多个。
作为一种示例性实施例,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
提供了一种计算机程序(产品),所述计算机程序(产品)包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行上述各方面中的方法。
提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述各方面中的方法。
附图说明
图1为本申请实施例提供的网络拓扑结构示意图;
图2为本申请实施例提供的BIER头结构示意图;
图3为本申请实施例提供的BIER-MPLS封装转发示意图;
图4为本申请实施例提供的网络拓扑结构示意图;
图5为本申请实施例提供的网络拓扑结构示意图;
图6为本申请实施例提供的网络拓扑结构示意图;
图7为本申请实施例提供的报文转发方法流程图;
图8为本申请实施例提供的计时过程示意图;
图9为本申请实施例提供的报文转发方法流程图;
图10为本申请实施例提供的报文转发装置的结构示意图;
图11为本申请实施例提供的报文转发装置的结构示意图;
图12为本申请实施例提供的报文转发设备的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的实施例进行解释,而非旨在限定本申请。
BIER技术是一种组播技术,在BIER技术中,对网络中的每个边缘节点设备配置一个BFR-id,例如配置1~256之间的一个值。网络中的每个边缘节点设备的配置信息会通过IGP泛洪的方式在网络中泛洪,这种随IGP泛洪的信息称为BIER信息。通过泛洪的方式,使得网络中各节点都能够确定每个BFR-id标识的是哪台设备。
图1是IGP泛洪BIER信息的网络示意图,该网络中的边缘节点设备包括A、D、E和F。如图1所示,边缘节点设备A、D、E和F被配置的BFR-id值分别为4、1、2和3。每个边缘节点设备的BFR-id值会通过IGP泛洪。示例性地,每个边缘节点设备均向网络中的其他节点设备发送控制面报文,该控制面报文中包括泛洪信息,泛洪信息中包括边缘节点设备的BFR-id,还包括互联网协议(internet protocol,IP)地址、封装信息。其中,封装信息包括封装类型。例如,边缘节点设备A的泛洪信息中会携带边缘节点设备A的BFR-id、IP地址、封装类型为多协议标签交换(multi-protocol label switching,MPLS)以及相应的边缘节点设备A上分配的MPLS标签。节点B和C作为中间节点,不需要配置BFR-id,因此,节点B和C发送的控制面报文的泛洪信息中的BFR-id相应填0。该节点B和C的控制面报文的泛洪信息中还包括其它信息如节点的IP地址、封装信息。
此外,网络中的各节点通过控制面IGP泛洪的信息建立转发表,各节点可在转发面利用转发表来转发BIER报文,该BIER报文包括BIER封装的组播数据报文。BIER封装格式可参见请求评论(request for comment,RFC)8296中关于BIER头格式的说明,BIER的头格式是在转发面(芯片)上实现BIER的关键。如图2所示,BIER头包含有一个32bit(4个字节)的BIER-Label(标签)或BIER转发表标识(bit indexed forwarding tableidentifer,BIFT-ID)值,其中前20bit为标签值或BIFT-ID值,后12bit为标签的其它信息,包括通信流类别(traffic class,TC)、S位及生存时间(time to live,TTL)。BIER头还包括64bit(8个字节)的其它字段,包括区分符(Nibble)、版本(Ver)、比特串长度(bitslength,BSL)、熵值(Entropy)、检测(OAM)、保留(Rsv)、差异化服务字段代码(differentiated servicesfield codepoints,DSCP)、协议(Proto)、BIER转发头节点路由器标识(BIER forwardingingress router,BFIR-id)等,还包括比特串(BitString)。BitString的长度可以是64bit/128bit/256bit/…等长度。BIER-Label或BFR-ID值可用来确定BitString的长度。
其中,字段BitString中的每个Bit用来标识某个BIER转发边缘节点路由器(BIERforwarding edge router,BFER),例如BitString的低位(最右)的一个Bit用来标识下一跳节点是BFR-id=1对应的节点。BitString中从右往左第2个Bit用来标识BFR-id=2对应的节点。转发面转发所依据的转发表项则是根据BIER报文中的BitString决定该BIER报文要往哪几个下一跳节点发送。多个Bit对应同一个下一跳节点的情况,只会向该下一跳节点发送一份BIER报文。
以图1所示的各节点建立BIER转发表为例,转发表中的邻居可以是网络拓扑中直连的邻居,也可以是非直连的邻居,例如根据RFC8279的6.9节计算出来的非直连邻居。对于边缘节点设备A,该边缘节点设备A的邻居包括节点B。在图1所示的网络拓扑中,由于BFR-id=1/2/3的BFER节点的下一跳节点均为节点B,因此建立边缘节点设备A的邻居表项:
邻居(Nbr)=B,转发位掩码(forwarding bit mask,FBM)=0111。
其中,FBM中的每个比特位代表一个边缘节点设备。如果边缘节点设备比较多,那么可将边缘节点设备划分成不同的Set(集合)。针对多个Set,FBM由多个Set的比特串组成。例如,网络拓扑中有512台边缘节点设备,将512台边缘节点设备划分为Set=0和Set=1的2个Set,一个Set采用256bit的比特串,那么邻居的FBM可以是由2个256bit的比特串组成,分别是对应Set=0的比特串和Set=1的比特串。
对于边缘节点设备A的邻居表项,当BIER报文中的BitString从右往左第1/2/3个bit位为1时,会将该BIER报文向邻居节点B发送。当BIER报文中的BitString从右往左第4个bit位为1时(例如从节点B发给节点A的BIER报文),该表项指示将BIER报文向节点A发送。其中,在图1中使用*A*标识将该BIER报文发送给节点A自己。
对于节点B,该节点B的邻居包括边缘节点设备A、节点C和边缘节点设备E。由于BFR-id=1/2的BFER节点的下一跳节点均为节点C、BFR-id=3的BFER节点为边缘节点设备E、BFR-id=4的BFER节点为边缘节点设备A,因此,建立节点B的邻居表项:
Nbr=C,FBM=0011。
Nbr=E,FBM=0100。
Nbr=A,FBM=1000。
对于节点C,该节点C的邻居节点包括节点B、边缘节点设备E、边缘节点设备F和边缘节点设备D。由于BFR-id=1的BFER节点为边缘节点设备D、BFR-id=2的BFER节点为边缘节点设备F、BFR-id=3的BFER节点为边缘节点设备E、BFR-id=4的BFER节点的下一跳节点为节点B,因此,建立节点C的邻居表项:
Nbr=D,FBM=0001。
Nbr=F,FBM=0010。
Nbr=E,FBM=0100。
Nbr=B,FBM=1000。
对于边缘节点设备D,该边缘节点设备D的邻居节点包括节点C。由于BFR-id=2/3/4的BFER节点的下一跳节点为节点C,因此,建立边缘节点设备D的邻居表项:
Nbr=C,FBM=1110。
对于边缘节点设备E,该边缘节点设备E的邻居节点包括节点B和节点C。由于BFR-id=1/2的BFER节点的下一跳节点为节点C、BFR-id=4的BFER节点的下一跳节点为节点B,因此,建立边缘节点设备E的邻居表项:
Nbr=B,FBM=1000。
Nbr=C,FBM=0011。
对于边缘节点设备F,该边缘节点设备F的邻居节点包括节点C。由于BFR-id=1/3/4的BFER节点的下一跳节点为节点C,因此,建立边缘节点设备F的邻居表项:
Nbr=C,FBM=1101。
在图1所示的网络中,接收到BIER报文的节点会剥掉BIER头,按照原始组播报文进行转发,报文转发过程如下:
节点A收到组播互联网协议(internet protocol,IP)报文后,封装BIER头。例如,图1中,节点A封装BIER头的BitString为0111。然后节点A会按照BIER转发表Nbr=B,FBM=0111转发。根据转发表,此BIER报文被发送给邻居节点B。节点B收到此BIER报文,根据BitString=0111确定BIER报文需要往节点C和节点E两个邻居分别发送。往节点C发送的时候,节点B会将BIER报文里的BitString与转发表里Nbr=C的表项的FBM字段做与(AND)操作。如图1所示,节点B接收到的BIER报文里的BitString=0111,节点B的转发表里Nbr=C的表项的FBM字段=0011,则AND的结果是0011,节点B将BIER报文里的BitString改为0011后发送至节点C。同理,节点B发送BIER报文给节点E时,会将BIER报文里的BitString改为0100后发送。节点E收到BIER报文后,根据BIER报文BitString=0100确定该BIER报文要往节点E(自己)发送,因此会解封装BIER头,然后根据内层IP报文进行转发,例如可能发给图1中的节点E的组播接收者(multicast receiver,RCV)。节点C接收到节点B发送的BIER报文后,根据BitString=0011确定BIER报文需要发送给节点D和节点F。节点C将BIER报文里的BitString改为0001后发送给节点D,节点D解封装BIER头,然后根据内层IP报文进行转发。例如节点D将BIER报文发送给图1中的节点D的RCV。节点C将BIER报文里的BitString改为0010后发送给节点F,节点F解封装BIER头,然后根据内层IP报文进行转发。例如将BIER报文发送给节点F的RSV。
然而,上述建立转发表,根据转发表转发BIER报文的过程,针对网络中增加链路,网络拓扑发生变化的情况,BIER报文在转发过程中会出现丢包或多包的问题。以在图4所示的网络拓扑中增加节点1与节点3之间的链路为例。在增加节点1与节点3之间的链路前的状态下,节点1的BIER转发表如下:
{(Nbr=Node 1(Self),FBM=0001),
(Nbr=Node 2,FBM=0110)}
在增加节点1与节点3的链路之后的最终状态下,节点1的BIER转发表如下:
{(Nbr=Node 1(Self),FBM=0001),
(Nbr=Node 2,FBM=0010),
(Nbr=Node 3,FBM=0100)}
由于上面的Node3的路径发生变化,从原来的Nbr=Node2切换到Nbr=Node3,需要刷新Nbr=Node 2和Nbr=Node 3这两个表项的FBM,这两个表项的刷新不是原子操作而是有先有后。例如,到达最终状态的过程中,可能是先对Nbr=Node2的表项刷新FBM=0010、再增加Nbr=Node3的表项,那么发送给Node3的报文在Nbr=Node3的表项还未增加时就可能产生丢包。或者,到达最终状态的过程中,可能是先增加Nbr=Node3的表项,再对Nbr=Node2的表项刷新FBM=0010,那么发送给Node3的报文就可能产生多包。
而在BIER ECMP的情况下,不仅链路恢复或增加链路会导致丢包,链路故障也会导致丢包或多包。如图5所示的BIER ECMP场景下,节点1到节点2/5/6/7/8有B/R/G/P四条等价路径,邻居B、R、G、P这四个节点分别是等价路径上的、节点1的下一跳节点。正常情况下ECMP的多个转发表,即负载分担的4个转发表如下所示:
BIFT 1:{(Nbr=B,FBM=1111 0010)}
BIFT 2:{(Nbr=R,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
例如,有400条组播流从节点1接收到,节点1封装BIER头并发送给节点2/5/6/7/8时,节点1可以为每个组播流生成一个熵值并填写在BIER头的Entropy字段中,生成熵值的过程可以是通过对组播流的源地址、目的地址进行哈希(Hash)得到。封装后的BIER报文在转发时,节点1会根据BIER头中的熵值、负载分担的多表项的表项个数(本例中表项个数为4),确定报文要根据哪个BIFT表进行转发。例如,可以根据组播流的熵值除以表项个数取余加1得到BIFT表,则以最终的结果如下所示:
第一组100个组播流的熵值除以表项个数4之后,取余结果为0,取余结果加1之后的值为1,则该第一组100个组播流按照BIFT 1表(即通过邻居B)转发。
第二组100个组播流的熵值除以表项个数4之后,取余结果为1,取余结果加1之后的值为2,则该第二组100个组播流按照BIFT 2表(即通过邻居R)转发。
第三组100个组播流的熵值除以表项个数4之后,取余结果为2,取余结果加1之后的值为3,则该第三组100个组播流按照BIFT 3表(即通过邻居G)转发。
第四组100个组播流的熵值除以表项个数4之后,取余结果为3,取余结果加1之后的值为4,则该第四组100个组播流按照BIFT 4表(即通过邻居P)转发。
当节点1和邻居B之间的链路故障,那么BIER转发的4个BIFT表项变成如下所示:
BIFT 1:{(Nbr=R,FBM=1111 0010)}
BIFT 2:{(Nbr=G,FBM=1111 0010)}
BIFT 3:{(Nbr=P,FBM=1111 0010)}
BIFT 4:{(Nbr=R,FBM=1111 0010)}
可以看出,这里每一个BIFT表都发生了变化,相应的组播流的转发情况如下:
对于第一组100个组播流,取余结果为0,取余结果加1之后的值为1,则该第一组100个组播流按照BIFT 1表转发,也即原来从邻居B转发,但现在从邻居R转发。
对于第二组100个组播流,取余结果为1,取余结果加1之后的值为2,则该第二组100个组播流按照BIFT 2表转发,也即原来从邻居R转发,但现在从邻居G转发。
对于第三组100个组播流取余结果为2,取余结果加1之后的值为3,则该第三组100个组播流按照BIFT 3表转发,也即原来从邻居G转发,但现在从邻居P转发。
对于第四组100个组播流,取余结果为3,取余结果加1之后的值为4,则该第四组100个组播流按照BIFT 4表转发,也即原来从邻居P转发,但现在从邻居R转发。
从上述转发情况不难看出,因为邻居B与节点1之间的链路发生了故障,该邻居B与节点1之间的链路是B等价路径的一部分链路。BIFT 1上,邻居B刷新为邻居R,第一组100个组播流产生丢包是不可避免的。但在BIFT 2上,BFR-id=2/5/6/7/8的转发表从邻居R刷新为邻居G的过程,不是一个原子操作,因此会产生丢包,那么意味着原来从邻居R转发的第二组100个组播流会产生丢包或多包。同理,原来从邻居G转发的第三组100个组播流、原来从邻居P转发的第四组100个组播流也会产生丢包或多包。
图5所示的BIER ECMP场景下,每条ECMP等价路径上,节点1的下一跳节点是不同的下一跳节点设备,该下一跳节点设备是第一节点的一个邻居节点;实际应用中,每条ECMP等价路径上,节点1的下一跳节点还可以是同一个节点设备的不同接口。如图6所示,节点1到节点2由M、N、X、Y四条不同的链路作为每条等价路径的一部分,该M、N、X、Y四条不同的链路为节点1与邻居节点21的不同接口之间的链路。正常情况下,ECMP的多个转发表,即负载分担的4个转发表如下所示:
BIFT 1:{(Nbr=21(link M),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
除了图5所示的节点1的多个下一跳节点包括多个节点设备的情况,以及图6所示的节点1的多个下一跳节点包括一个节点设备的多个接口的情况外,本申请实施例提供的方法中,节点1的多个下一跳节点还可以既包括不同的节点设备,也包括同一个节点设备的不同接口。也就是说,本申请实施例提供的方法中,节点1的多个下一跳节点包括多个节点设备或一个节点设备的多个接口,该多个节点设备中的每个节点设备包括一个接口或多个接口。无论节点1的下一跳节点是哪种情况,本申请实施例提供的方法对节点1的这几种下一跳节点的情况均适用。
在本申请实施例提供的报文转发方法中,采用稳定优先的负载分担方式,针对一个第一下一跳节点与第一节点之间的链路发生故障的情况,仅刷新该第一下一跳节点对应的转发表,其余与第一节点之间的链路未发生故障的下一跳节点对应的转发表不变,从而使非故障链路的组播流不受故障链路的影响。参见图7,本申请实施例提供的方法包括如下几个步骤:
701:第一节点获取第一节点到第二节点的ECMP的多个转发表,ECMP包括多条等价路径,多条等价路径与多个转发表一一对应,多个转发表中的每个转发表包括对应等价路径上的、第一节点的下一跳节点的标识。
本申请实施例中,第一节点可以是路由器或交换机。示例性地,第一节点具有BIER协议、BIER转发能力及BIER的具体封装下的转发能力,如MPLS封装、以太(Ethernet)封装、互联网协议第6版(internet protocol version 6,IPv6)封装等。本申请实施例不对BIER转发的封装类型加以限制。在实施本申请实施例提供的方法之前,先对网络中的第一节点配置BIER ECMP的负载分担使能,也就是说,该方法中的第一节点可以是在第一节点的下一跳节点与第一节点之间的链路发生故障前,配置了BIER ECMP的负载分担使能的任意节点。
其中,第一节点的下一跳节点可以是多个节点设备,该多个节点设备可以均包括一个与第一节点通信的接口,也可以均包括多个与第一节点通信的接口,还可以是多个节点设备中的一部分节点设备包括一个与第一节点通信的接口,一部分节点设备包括多个与第一节点通信的接口。以图5所示的拓扑结构为例,该第一节点可以为节点1,ECMP等价路径上,节点1的下一跳节点可以为邻居节点B/R/G/P,邻居节点B/R/G/P与节点1之间均包括一条链路,邻居节点B与节点1之间的链路称为链路B,该链路B是B等价路径上的一部分链路。邻居节点R与节点1之间的链路称为链路R,该链路R是R等价路径上的一部分链路。邻居节点G与节点1之间的链路称为链路G,该链路G是G等价路径上的一部分链路。邻居节点P与节点1之间的链路称为链路P,该链路P是P等价路径上的一部分链路。则节点1到节点2/5/6/7/8有B/R/G/P四条等价路径。针对节点1配置的BIER ECMP的负载分担可以如下所示:
从上述配置中可以看出,在sub-domain 0、bfr-id 1、bfr-prefix 1.1.1.1的条件下,通过max-load-balance 4stable-preferred grp4的配置使用稳定优先的负载分担。在sub-domain 1、bfr-id 1、bfr-prefix 1.1.1.1的条件下,通过max-load-balance3stable-preferred grp3的配置使用稳定优先的负载分担。
另外,next-interface和next-hop是两种对下一跳节点的配置方式,采用哪种方式配置下一跳节点,本申请实施例对此不进行限定。例如,同样是配置上述BIER ECMP的负载分担使能,以均采用next-interface进行下一跳节点的配置为例,则配置信息还可以如下所示:
又例如,同样是配置上述BIER ECMP的负载分担使能,以均采用next-hop进行下一跳节点的配置为例,则配置信息还可以如下所示:
可选地,该第一节点的下一跳节点还可以是一个节点设备的多个接口,第一节点与每个接口之间形成一条链路。以如图6所示的拓扑结构为例,该第一节点可以为节点1,邻居节点21包括4个接口,每个接口可以作为节点1的一个下一跳节点,则节点1与邻居节点21之间,包括M、N、X、Y四条链路。节点1到邻居节点21之间的M、N、X、Y四条不同的链路分别作为对应等价路径的一部分链路。针对节点1配置的BIER ECMP的负载分担可以如下所示:
针对已经确定ECMP,已知第一节点的下一跳节点的情况下,获取ECMP的多个转发表,由于ECMP包括多条等价路径,多条等价路径与多个转发表一一对应。多个转发表中的每个转发表包括对应等价路径上的、第一节点的下一跳节点的标识,还包括FBM。由于是ECMP,因而针对第一节点的下一跳节点是多个节点设备的情况,该多个转发表中,第一节点的下一跳节点不同,但FBM相同。仍以如图5所示的拓扑结构为例,节点1到节点2/5/6/7/8有B/R/G/P四条等价路径,正常情况下负载分担的4个转发表如下所示:
BIFT 1:{(Nbr=B,FBM=1111 0010)}
BIFT 2:{(Nbr=R,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
其中,上述4个转发表中,BIFT1与B等价路径对应,该BIFT1包括对应B等价路径上的、第一节点的下一跳节点为邻居B的标识及FBM。BIFT2与R等价路径对应,该BIFT2包括对应R等价路径上的、第一节点的下一跳节点为邻居R的标识及FBM。BIFT3与G等价路径对应,该BIFT3包括对应G等价路径上的、第一节点的下一跳节点为邻居G的标识及FBM。BIFT4与P等价路径对应,该BIFT4包括对应P等价路径上的、第一节点的下一跳节点为邻居P的标识及FBM。
又例如,针对第一节点的下一跳节点是一个节点设备的多个接口,第一节点与每个接口形成一条链路的情况,多个转发表中,第一节点的下一跳节点相同,链路不同,但FBM相同。仍以如图6所示的拓扑结构为例,节点1到节点2有M、N、X、Y四条等价路径,正常情况下负载分担的4个转发表如下所示:
BIFT 1:{(Nbr=21(link M),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
其中,上述4个转发表中,BIFT1与M等价路径对应,该BIFT1包括对应M等价路径上的、第一节点的下一跳节点为邻居21的link M的标识及FBM。BIFT2与N等价路径对应,该BIFT2包括对应N等价路径上的、第一节点的下一跳节点为邻居21的link N的标识及FBM。BIFT3与X等价路径对应,该BIFT3包括对应X等价路径上的、第一节点的下一跳节点为邻居21的link X的标识及FBM。BIFT4与Y等价路径对应,该BIFT4包括对应Y等价路径上的、第一节点的下一跳节点为邻居21的link Y的标识及FBM。
702:响应于第一节点的第一下一跳节点与第一节点之间的第一链路发生故障,第一节点确定第二下一跳节点,该第二下一跳节点与第一节点之间的第二链路未发生故障,第一链路时第一等价路径的一部分链路,第二链路时第二等价路径的一部分链路,多条等价路径包括该第一等价路径和第二等价路径。
在示例性实施例中,当第一节点的多个下一跳节点中的第一下一跳节点与第一节点之间的链路发生故障后,为了不影响该故障的链路上的组播流,从非故障的链路中选择一条链路再继续传输组播流。因此,第一节点确定第二下一跳节点。其中,第二下一跳节点为第一节点的多个下一跳节点中,与第一节点之间的链路未发生故障的下一跳节点,也就是说,第二下一跳节点与第一节点之间的第二链路未发生故障。关于确定第二下一跳节点的方式,本申请实施例不进行限定,该第二下一跳节点包括但不限于为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少的下一跳节点。例如,第一节点从等价路径上的、第一节点的下一跳节点中,选择使用次数最少的下一跳节点作为第二下一跳节点。由于该第二下一跳节点的使用次数最少,因而该第二下一跳节点能够比其他使用次数多的下一跳节点有更多资源来转发组播流。
针对第一节点的下一跳节点中,除第一下一跳节点以外,存在两个以上使用次数最少的下一跳节点的情况,例如,以除第一下一跳节点以外,存在4个下一跳节点为例,这4个下一跳节点的使用次数分别为2、2、5、6,由于使用次数2为最少使用次数,而使用次数为2的下一跳节点有两个,即有两个使用次数最少的下一跳节点,则需要在这两个使用次数最少的下一跳节点中选择一个下一跳节点作为第二下一跳节点。
本申请实施例不对选择使用次数最少的下一跳节点作为第二下一跳节点的方式进行限定,例如,对于第一节点的多个下一跳节点,可以随机从除第一下一跳节点以外的多个使用次数最少的下一跳节点中选择一个下一跳节点作为第二下一跳节点。除了随机选择的方式,还可以采用其他选择方式。示例性地,从除第一下一跳节点以外的多个使用次数最少的下一跳节点中选择一个下一跳节点作为第二下一跳节点包括:响应于等价路径上的、第一节点的下一跳节点中存在除第一下一跳节点以外、两个以上使用次数最少的下一跳节点,确定每个下一跳节点的标识,基于每个下一跳节点的标识,从两个以上使用次数最少的下一跳节点中选择一个下一跳节点作为第二下一跳节点。
在示例性实施例中,下一跳节点的标识为下一跳节点的序号,下一跳节点的序号用于指示下一跳节点在第一节点的多个下一跳节点中的顺序;基于每个下一跳节点的标识,从两个以上使用次数最少的下一跳节点中选择一个下一跳节点作为第二下一跳节点,包括:从两个以上使用次数最少的下一跳节点中选择序号最大或最小的下一跳节点作为第二下一跳节点。也就是说,该第二下一跳节点为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
其中,第一节点的下一跳节点的序号可以提前配置。例如,本申请实施例提供的方法按照顺序配置等价多路径中第一节点的每个下一跳节点的序号,通过序号来指示每个下一跳节点的顺序。后续可以按照顺序选择使用哪个下一跳节点。
703:第一节点根据第二下一跳节点刷新第一转发表,以及阻止刷新多个转发表中除第一转发表以外的转发表,该第一转发表对应第一等价路径,刷新后的第一转发表包括第二下一跳节点的标识。
仍以图5所示的网络拓扑为例,第一节点为节点1,多条等价路径上的、节点1的下一跳节点分别为邻居B、邻居R、邻居G和邻居P。针对邻居B与节点1之间的链路发生故障的情况,在通过上述702从节点1的下一跳节点中确定第二下一跳节点后,以该第二下一跳节点为邻居R为例,即节点1和邻居B之间的链路发生故障,那么根据邻居R刷新邻居B对应的第一转发表,而阻止刷新其余非故障链路的邻居R、邻居G和邻居P对应的第二转发表刷新,即其余非故障链路的邻居R、邻居G和邻居P对应的第二转发表不变,该第二转发表即为多个转发表中除第一转发表之外的转发表,则ECMP的多个转发表刷新如下:
BIFT 1:{(Nbr=R,FBM=1111 0010)}
BIFT 2:{(Nbr=R,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
进一步的,响应于节点1和邻居R之间的链路又发生了故障,则节点1确定的第二下一跳节点分别为邻居G和邻居P,那么ECMP的多个转发表项刷新如下:
BIFT 1:{(Nbr=G,FBM=1111 0010)}
BIFT 2:{(Nbr=P,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
仍以图6所示的网络拓扑为例,第一节点为节点1,多条等价路径包括节点1到邻居节点21之间的link M、link N、link X和link Y。针对link M发生故障的情况,在通过上述702确定第二下一跳节点后,以确定的第二下一跳节点为link N对应的接口为例,即节点1和节点21之间的linkM发生故障,那么根据link M刷新link M对应的第一转发表,而阻止刷新其余非故障的链路所在等价路径对应的转发表。即其余非故障的link N、link X和linkY对应的第二转发表不变,该第二转发表即为多个转发表中除第一转发表以外的转发表。则ECMP的多个转发表刷新如下:
BIFT 1:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
进一步的,响应于节点1和邻居21之间的link N又发生了故障,则确定的第二下一跳节点分别为link X和link Y对应的接口,那么ECMP的多个转发表项刷新如下:
BIFT 1:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link Y),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
704:第一节点基于刷新后的第一转发表及多个转发表中除第一转发表以外的转发表转发BIER报文。
仍然以图5所示的拓扑结构为例,在邻居B与节点1之间的链路发生故障之后,采用上述方法仅刷新邻居B所在等价路径对应的转发表,阻止对其余非故障链路所在等价路径对应的转发表刷新,从而能够使非故障链路的丢包或多包的情况减少。
对于邻居B与节点1之间的链路由故障恢复之后,如果这个过程中,没有特别的处理,那么每个BIFT表上的组播流也会产生丢包或多包。对此,本申请实施例提供的方法在邻居B与节点1之间的链路由故障恢复后,各转发表项可以保持不变,即采用不可逆(Non-revertive)的方式。例如,仍以图5所示的拓扑结构为例,节点1和邻居B之间的链路恢复、节点1和邻居R之间的链路恢复,那么转发表项仍然如下:
BIFT 1:{(Nbr=G,FBM=1111 0010)}
BIFT 2:{(Nbr=P,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
经过一段时间的链路故障、链路恢复以后,可能产生负载分担不均的情况,例如上面的状况下,4个BIFT表只用到了2条链路。这是为了在链路故障、链路恢复时保持稳定,但该种方式也导致了负载分担的不均。对此,本申请实施例提供的方法中,提供一种先建后删的机制,以对使用的转发表进行优化。示例性地,第一节点在根据第二下一跳节点刷新第一转发表之后,还包括:
启动第一计时器计时;在第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,旧转发表为第一节点在第一链路恢复之前所使用的转发表,新转发表为第一节点在第一链路恢复之后建立的转发表,第一计时器指示新转发表在第一计时器计时结束之前被建立完成;在第一计时器计时结束之后,将旧转发表切换到新转发表,按照新转发表转发BIER报文。
需要说明的是,可以在启动第一计时器之前建立新转发表,也可以在启动第一计时器之后建立新转发表,还可以启动第一计时器的同时,建立新转发表。由于第一计时器指示新转发表在第一计时器计时结束之前被建立完成,针对在启动第一计时器之前建立新转发表的情况,第一计时器的计时时长小于新转发表的建立时长。针对在启动第一计时器之后建立新转发表的情况,第一计时器的计时时长大于新转发表的建立时长。针对第一启动计时器的同时,建立新转发表的情况,第一计时器的计时时长可以等于新转发表的建立时长。其中,新转发表的建立时长为开始建立新转发表的时刻到新转发表建立完成的时刻之间的时间长度。
仍以上述图5所示的网络拓扑为例,旧转发表可以如下:
BIFT 1:{(Nbr=G,FBM=1111 0010)}
BIFT 2:{(Nbr=P,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
由于旧转发表中,邻居P和邻居G所在的链路使用较多,负载较重,为了负载均衡,建立的新转发表可以如下所示:
BIFT 1:{(Nbr=B,FBM=1111 0010)}
BIFT 2:{(Nbr=R,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
以上述图6所示的网络拓扑为例,旧转发表可以如下:
BIFT 1:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link Y),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
由于旧转发表中,link X和link Y使用较多,负载较重,为了负载均衡,建立的新转发表可以如下所示:
BIFT 1:{(Nbr=21(link M),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
通过采用第一计时器指示新转发表在第一计时器计时结束之前被建立完成,从而在新转发表建立完成之后再进行旧转发表到新转发表的切换,能够进一步减少因转发表切换而导致的丢包或多包。
其中,本申请实施例不对启动第一计时器的时机进行限定,可以在根据第二下一跳节点刷新第一转发表之后启动第一计时器。也可以在根据第二下一跳节点刷新第一转发表,且故障的链路恢复后启动第一计时器。在示例性实施例中,本申请实施例提供的方法还可以对旧转发表使用的时间进行计时,提供了一种自动重优化(Re-optimization)机制,以避免一直使用旧转发表而造成链路的负载不均衡问题。对此,本申请实施例提出了采用第二计时器,在第二计时器的计时结束后,启动第一计时器,以建立新转发表。也就是说,启动第一计时器计时,包括:启动第二计时器计时;在第二计时器计时结束之后,启动第一计时器计时。
通过该第二计时器对负载分担进行“重新优化”,保障负载分担的均匀。当该第二计时器计时超时时,采用第一计时器计时,以建立新转发表,当第一计时器计时结束后,再从旧转发表切换到新转发表。从而实现了在自动重新优化的过程中,采用先建后删,使得重优化过程不丢包,进而使得本申请实施例提供的方法形成完整闭环。
需要说明的是,本申请实施例不对第二计时器启动的时机进行限定。例如,可以在根据第二下一跳节点刷新第一转发表之后启动第二计时器。也可以在根据第二下一跳节点刷新第一转发表,且故障的链路恢复后启动第二计时器。
采用第一计时器和第二计时器的过程可如图8所示,第一计时器计时结束,从旧转发表切换到新转发表后,以图5所示的网络结构为例,转发表项恢复为如下的状态:
BIFT 1:{(Nbr=B,FBM=1111 0010)}
BIFT 2:{(Nbr=R,FBM=1111 0010)}
BIFT 3:{(Nbr=G,FBM=1111 0010)}
BIFT 4:{(Nbr=P,FBM=1111 0010)}
以图6所示的网络结构为例,转发表项恢复为如下的状态:
BIFT 1:{(Nbr=21(link M),FBM=1111 0010)}
BIFT 2:{(Nbr=21(link N),FBM=1111 0010)}
BIFT 3:{(Nbr=21(link X),FBM=1111 0010)}
BIFT 4:{(Nbr=21(link Y),FBM=1111 0010)}
在示例性实施例中,将旧转发表切换到新转发表之后,旧转发表和新转发表都存在于第一节点,由于第一链路已经恢复了,因而该方法还包括:删除旧转发表。通过对旧转发表进行删除,以节省存储空间。
在本申请实施例提供的方法中,针对采用第一计时器和第二计时器的情况,网络管理员除了配置第一节点的BIER ECMP的负载分担使能,使第一节点具备BIER ECMP的负载分担功能之外,在示例性实施例中,网络管理员还可以配置第一计时器的计时时长和第二计时器的计时时长。第一计时器和第二计时器的计时时长的配置可以基于第一节点的自身能力来定,如基于第一节点的中央处理器(central processing unit,CPU)负荷来定,也可以基于经验来设置。不同节点配置的第一计时器和第二计时器的计时时长可以相同,也可以不同,本申请实施例对此不加以限定,只要能够确保新转发表建立完成即可。例如,配置如下:
需要说明的是,除了采用上述配置计时器的方式,还可以手动触发重优化,本申请实施例对重优化的方式不进行限定。另外,本申请实施例中所述的链路故障,可以是第一节点的下一跳节点发生了故障,导致该第一节点的下一跳节点与第一节点之间的链路发生了故障。如果该第一节点的下一跳节点为节点设备,则该第一节点的下一跳节点故障,可以是该节点设备故障,或者该节点设备中与第一节点通信的接口发生了故障。总之,本申请实施例不对链路故障的原因进行限定。针对任意链路故障的情况,本申请实施例提供的方法均能够适用。
综上所述,本申请实施例提供的上述各个过程可如图9所示,在转发BIER报文时,当负载分担的下一跳节点发生变化,例如从可达变为不可达,或者从不可达变为可达,则该发生变化的下一跳节点所在链路可以认为是故障的链路。之后,确定是否配置了稳定优先负载分担。如果配置了稳定优先负载分担,则可以根据负载分担的变化情况,确定是否使用本申请实施例提供的方法。针对配置了稳定优先负载分担,且为负载分担的下一跳节点从可达变为不可达的情况,遍历BIFT表,如果BIFT表使用了该故障链路,则从可用的下一跳节点即非故障链路包括的下一跳节点中确定一个使用次数最少的下一跳节点。如果使用次数最少的下一跳节点有多个,再根据下一跳节点的标识选择一个下一跳节点来刷新该故障链路所在等价路径对应的转发表。针对配置了稳定优先负载分担,且为负载分担的下一跳节点从不可达变为可达的情况,则不刷新各BIFT表,也不需要遍历各BIFT表。针对未配置稳定优先负载分担的情况,遍历BIFT表,从可用的下一跳节点中依次选择各下一跳节点刷新BIFT表。
当节点1和B邻居之间的链路发生故障时,本申请实施例提供的方法确保原来走R邻居、G邻居、P邻居的各100个组播流量保持按照原来的转发表转发,从而将链路故障带来的影响降到最低。也就是说,本申请实施例提供的方法,对于BIER ECMP的情况,在链路故障的情况下,刷新故障链路所在等价路径对应的第一转发表,阻止刷新非故障链路所在等价路径对应的转发表。也就是说,在第一节点的第一下一跳节点与第一节点之间的第一链路发生故障的情况下,刷新该第一链路所在的第一等价路径对应的第一转发表,而阻止刷新多个转发表中除该第一转发表以外的转发表,有效降低对组播流量的影响,减少丢包或多包。
本申请实施例提供了一种报文转发装置,该报文转发装置用于转发BIER报文,参见图10,该报文转发装置包括:
获取模块1001,用于获取第一节点到第二节点的等价多路径ECMP的多个转发表,ECMP包括多条等价路径,多条等价路径与多个转发表一一对应,多个转发表中的每个转发表包括对应等价路径上的、第一节点的下一跳节点的标识;
确定模块1002,用于响应于第一节点的第一下一跳节点与第一节点之间的第一链路发生故障,确定第一节点的第二下一跳节点,其中,第一节点的第二下一跳节点与第一节点之间的第二链路未发生故障,第一链路是第一等价路径的一部分链路,第二链路是第二等价路径的一部分链路,多条等价路径包括第一等价路径和第二等价路径;
刷新模块1003,用于根据第二下一跳节点刷新第一转发表,以及第一节点阻止刷新多个转发表中除第一转发表以外的转发表,第一转发表对应第一等价路径,刷新后的第一转发表包括第二下一跳节点的标识;
转发模块1004,用于基于刷新后的第一转发表及多个转发表中除第一转发表以外的转发表转发BIER报文。
在示例性实施例中,第二下一跳节点为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少的下一跳节点。
在示例性实施例中,第二下一跳节点为第一节点的下一跳节点中,除第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
在示例性实施例中,参见图11,该装置,还包括:
计时模块1005,用于启动第一计时器计时;
处理模块1006,用于在第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,旧转发表为第一节点在第一计时器计时结束之前所使用的转发表,第一计时器指示新转发表在第一计时器计时结束之前被建立完成;在第一计时器计时结束之后,将旧转发表切换到新转发表;
转发模块1004,还用于按照新转发表转发BIER报文。
在示例性实施例中,计时模块1005,用于启动第二计时器计时;在第二计时器计时结束之后,启动第一计时器计时。
在示例性实施例中,处理模块1006,还用于删除旧转发表。
本申请实施例提供的装置,在第一节点的第一下一跳节点与第一节点之间的第一链路发生故障的情况下,刷新该第一链路所在的第一等价路径对应的第一转发表,而阻止刷新多个转发表中除该第一转发表以外的转发表,从而有效降低对组播流量的影响,减少丢包或多包。
此外,通过选择使用次数最少的第二下一跳节点刷新第一转发表,使得负载更加均衡。
应理解的是,上述图10或图11提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图12为本申请实施例的报文转发设备1100的硬件结构示意图。图12所示的报文转发设备1100可以执行上述实施例的方法中第一节点执行的相应步骤。
如图12所示,所述报文转发设备1100包括处理器1101、存储器1102、接口1103和总线1104。其中接口1103可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器1101、存储器1102和接口1103通过总线1104连接。
接口1103可以包括发送器和接收器,用于报文转发设备1100与上述实施例中的第二节点之间收发信息。例如,接口1103用于支持接收邻居节点发送的BIER报文。处理器1101用于执行上述实施例中由报文转发设备1100进行的处理。例如,处理器1101用于获取第一节点到第二节点的ECMP的多个转发表,该ECMP包括多条等价路径,每条等价路径与多个转发表一一对应,该多个转发表中的每个转发表包括对应等价路径上的、第一节点的下一跳节点的标识。响应于第一节点的第一下一跳节点与第一节点之间的第一链路发生故障,该处理器1101确定第一节点的第二下一跳节点,其中,该第二下一跳节点与第一节点之间的链路未发生故障,第一链路是第一等价路径的一部分链路,第二链路时第二等价路径的一部分链路,多条等价路径包括第一等价路径和第二等价路径。该处理器1101根据该第二下一跳节点刷新第一转发表,以及阻止刷新多个转发表中除第一转发表以外的转发表,第一转发表对应第一等价路径,刷新后的第一转发表包括第二下一跳节点的标识。之后,该处理器1101基于刷新后的第一转发表及多个转发表中除第一转发表以外的转发表转发BIER报文。
所述处理器1101和/或用于本文所描述的技术的其他过程。作为举例,所述处理器1101用于支持图7中的步骤701至步骤704。存储器1102包括操作***11021和应用程序11022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及报文转发设备的处理过程。可选的,所述存储器1102可以包括只读存储器(英文:Read-only Memory,缩写:ROM)和随机存取存储器(英文:Random AccessMemory,缩写:RAM)。其中,所述ROM包括基本输入/输出***(英文:Basic Input/OutputSystem,缩写:BIOS)或嵌入式***;所述RAM包括应用程序和操作***。当需要运行报文转发节点设备1100时,通过固化在ROM中的BIOS或者嵌入式***中的bootloader引导***进行启动,引导报文转发节点设备1100进入正常运行状态。在报文转发节点设备1100进入正常运行状态后,运行在RAM中的应用程序和操作***,从而,完成方法实施例中涉及报文转发设备的处理过程。
可以理解的是,图12仅仅示出了报文转发设备1100的简化设计。在实际应用中,报文转发节点设备可以包含任意数量的接口,处理器或者存储器。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data dateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现如上任一所述的报文转发方法。
本申请提供了一种计算机程序,当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个步骤和/或流程。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
以上所述仅为本申请的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种报文转发方法,其特征在于,所述方法用于转发基于比特索引的显式复制BIER报文,所述方法包括:
第一节点获取所述第一节点到第二节点的等价多路径ECMP的多个转发表,所述ECMP包括多条等价路径,所述多条等价路径与所述多个转发表一一对应,所述多个转发表中的每个转发表为位索引转发表BIFT且包括对应等价路径上的、所述第一节点的下一跳节点的标识和转发位掩码FBM;
响应于所述第一节点的第一下一跳节点与所述第一节点之间的第一链路发生故障,所述第一节点确定所述第一节点的第二下一跳节点,其中,所述第一节点的所述第二下一跳节点与所述第一节点之间的第二链路未发生故障,所述第一链路是第一等价路径的一部分链路,所述第二链路是第二等价路径的一部分链路,所述多条等价路径包括所述第一等价路径和所述第二等价路径;
所述第一节点根据所述第二下一跳节点刷新第一转发表,以及所述第一节点阻止刷新所述多个转发表中除所述第一转发表以外的转发表,所述第一转发表对应所述第一等价路径,所述刷新后的第一转发表包括所述第二下一跳节点的标识;
所述第一节点基于刷新后的第一转发表及所述多个转发表中除所述第一转发表以外的转发表转发BIER报文。
2.根据权利要求1所述的方法,其特征在于,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少的下一跳节点。
3.根据权利要求2所述的方法,其特征在于,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
4.根据权利要求1-3任一所述的方法,其特征在于,所述第一节点根据所述第二下一跳节点刷新第一转发表之后,还包括:
启动第一计时器计时;
在所述第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,所述旧转发表为所述第一节点在所述第一链路恢复之前所使用的转发表,所述新转发表为所述第一链路恢复之后所建立的转发表,所述第一计时器指示所述新转发表在所述第一计时器计时结束之前被建立完成;
在所述第一计时器计时结束之后,将所述旧转发表切换到所述新转发表,按照所述新转发表转发BIER报文。
5.根据权利要求4所述的方法,其特征在于,所述启动第一计时器计时,包括:
启动第二计时器计时;
在所述第二计时器计时结束之后,启动所述第一计时器计时。
6.根据权利要求4所述的方法,其特征在于,所述将所述旧转发表切换到所述新转发表之后,所述方法还包括:删除所述旧转发表。
7.根据权利要求5所述的方法,其特征在于,所述将所述旧转发表切换到所述新转发表之后,所述方法还包括:删除所述旧转发表。
8.一种报文转发装置,其特征在于,所述装置用于转发基于比特索引的显式复制BIER报文,所述装置包括:
获取模块,用于获取第一节点到第二节点的等价多路径ECMP的多个转发表,所述ECMP包括多条等价路径,所述多条等价路径与所述多个转发表一一对应,所述多个转发表中的每个转发表为位索引转发表BIFT且包括对应等价路径上的、所述第一节点的下一跳节点的标识和转发位掩码FBM;
确定模块,用于响应于所述第一节点的第一下一跳节点与所述第一节点之间的第一链路发生故障,确定所述第一节点的第二下一跳节点,其中,所述第一节点的所述第二下一跳节点与所述第一节点之间的第二链路未发生故障,所述第一链路是第一等价路径的一部分链路,所述第二链路是第二等价路径的一部分链路,所述多条等价路径包括所述第一等价路径和所述第二等价路径;
刷新模块,用于根据所述第二下一跳节点刷新第一转发表,以及所述第一节点阻止刷新所述多个转发表中除所述第一转发表以外的转发表,所述第一转发表对应所述第一等价路径,所述刷新后的第一转发表包括所述第二下一跳节点的标识;
转发模块,用于基于刷新后的第一转发表及所述多个转发表中除所述第一转发表以外的转发表转发BIER报文。
9.根据权利要求8所述的装置,其特征在于,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少的下一跳节点。
10.根据权利要求9所述的装置,其特征在于,所述第二下一跳节点为所述第一节点的下一跳节点中,除所述第一下一跳节点以外,使用次数最少且序号最大或最小的下一跳节点。
11.根据权利要求8-10任一所述的装置,其特征在于,所述装置,还包括:
计时模块,用于启动第一计时器计时;
处理模块,用于在所述第一计时器计时结束之前,采用旧转发表转发BIER报文和建立新转发表,所述旧转发表为所述第一节点在所述第一链路恢复之前所使用的转发表,所述新转发表为所述第一链路恢复之后所建立的转发表,所述第一计时器指示所述新转发表在所述第一计时器计时结束之前被建立完成;在所述第一计时器计时结束之后,将所述旧转发表切换到所述新转发表;
所述转发模块,还用于按照所述新转发表转发BIER报文。
12.根据权利要求11所述的装置,其特征在于,所述计时模块,用于启动第二计时器计时;在所述第二计时器计时结束之后,启动所述第一计时器计时。
13.根据权利要求11所述的装置,其特征在于,所述处理模块,还用于删除所述旧转发表。
14.根据权利要求12所述的装置,其特征在于,所述处理模块,还用于删除所述旧转发表。
15.一种报文转发设备,其特征在于,所述报文转发设备包括:
存储器及处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1-7中任一所述的报文转发方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1-7中任一所述的报文转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911422705.1A CN113132222B (zh) | 2019-12-31 | 2019-12-31 | 报文转发方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911422705.1A CN113132222B (zh) | 2019-12-31 | 2019-12-31 | 报文转发方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113132222A CN113132222A (zh) | 2021-07-16 |
CN113132222B true CN113132222B (zh) | 2023-04-18 |
Family
ID=76769633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911422705.1A Active CN113132222B (zh) | 2019-12-31 | 2019-12-31 | 报文转发方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113132222B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209629A (zh) * | 2014-11-06 | 2016-12-07 | 瞻博网络公司 | 确定性的且优化的比特索引显式复制(bier)转发 |
CN110417674A (zh) * | 2019-07-26 | 2019-11-05 | 新华三技术有限公司合肥分公司 | 一种数据流量分担方法及装置 |
CN110535761A (zh) * | 2019-09-30 | 2019-12-03 | 北京华三通信技术有限公司 | 报文转发方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9544230B2 (en) * | 2013-09-17 | 2017-01-10 | Cisco Technology, Inc. | Migration support for bit indexed explicit replication |
US9774504B2 (en) * | 2015-09-30 | 2017-09-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Route refresh mechanism for border gateway protocol link state |
-
2019
- 2019-12-31 CN CN201911422705.1A patent/CN113132222B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209629A (zh) * | 2014-11-06 | 2016-12-07 | 瞻博网络公司 | 确定性的且优化的比特索引显式复制(bier)转发 |
CN110417674A (zh) * | 2019-07-26 | 2019-11-05 | 新华三技术有限公司合肥分公司 | 一种数据流量分担方法及装置 |
CN110535761A (zh) * | 2019-09-30 | 2019-12-03 | 北京华三通信技术有限公司 | 报文转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113132222A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11533249B2 (en) | Route processing method and apparatus, and data transmission method and apparatus | |
US11677587B2 (en) | EVPN packet processing method, device, and system for mac learning via MAC/IP advertisement route | |
US11394644B2 (en) | EVPN packet processing method, device, and system | |
CN112187647B (zh) | 报文转发方法、设备及计算机可读存储介质 | |
US8599685B2 (en) | Snooping of on-path IP reservation protocols for layer 2 nodes | |
TW201134151A (en) | RSVP-TE graceful restart under fast re-route conditions | |
JPWO2006092915A1 (ja) | パケットリングネットワークシステム、パケットリング間の接続方法、およびリング間接続ノード | |
JP7053901B2 (ja) | ループ回避通信方法、ループ回避通信デバイスおよびループ回避通信システム | |
JP7124206B2 (ja) | パケット処理方法およびゲートウェイ・デバイス | |
WO2021088561A1 (zh) | 位索引显式复制网络中负载分担的方法、装置及设备 | |
JP7483924B2 (ja) | 接続ステータス検出方法、関連デバイス、コンピュータ記憶媒体、およびコンピュータプログラム | |
WO2019062249A1 (zh) | Sr-be内层隧道标签的配置方法、设备及通信*** | |
US11356372B2 (en) | Data traffic processing method, device, and system | |
CN112737954B (zh) | 报文处理方法、装置、***、设备及存储介质 | |
KR20220093155A (ko) | 패킷 전달 방법, 제1 네트워크 디바이스 및 제1 디바이스 그룹 | |
WO2021073357A1 (zh) | 报文处理方法、装置、***、设备及存储介质 | |
WO2023045793A1 (zh) | 一种环路的检测方法和装置 | |
CN113132222B (zh) | 报文转发方法、设备及计算机可读存储介质 | |
WO2022017225A1 (zh) | 报文发送方法、设备及*** | |
US9742670B2 (en) | Non-eligible distance vector protocol paths as backup paths | |
WO2021077972A1 (zh) | 转发报文的方法、装置及存储介质 | |
WO2022116615A1 (zh) | 报文传输的方法、获取对应关系的方法、装置及*** | |
WO2022222884A1 (zh) | 转发路径的故障感知方法、装置及*** | |
KR20230093015A (ko) | 정보 처리 방법, 노드 및 컴퓨터 판독 가능한 저장 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |