CN112187647A - 报文转发方法、设备及计算机可读存储介质 - Google Patents
报文转发方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112187647A CN112187647A CN201910606586.9A CN201910606586A CN112187647A CN 112187647 A CN112187647 A CN 112187647A CN 201910606586 A CN201910606586 A CN 201910606586A CN 112187647 A CN112187647 A CN 112187647A
- Authority
- CN
- China
- Prior art keywords
- forwarding
- forwarding table
- node device
- network topology
- path
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 230000015654 memory Effects 0.000 claims description 39
- 230000008859 change Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 27
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000005538 encapsulation Methods 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000006424 Flood reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- HRULVFRXEOZUMJ-UHFFFAOYSA-K potassium;disodium;2-(4-chloro-2-methylphenoxy)propanoate;methyl-dioxido-oxo-$l^{5}-arsane Chemical compound [Na+].[Na+].[K+].C[As]([O-])([O-])=O.[O-]C(=O)C(C)OC1=CC=C(Cl)C=C1C HRULVFRXEOZUMJ-UHFFFAOYSA-K 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L12/2823—Reporting information sensed by appliance or service execution status of appliance services in a home automation network
-
- 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/02—Topology update or discovery
-
- 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/02—Topology update or discovery
- H04L45/021—Ensuring consistency of routing table updates, e.g. by using epoch numbers
-
- 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/12—Shortest path evaluation
-
- 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/18—Loop-free operations
-
- 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/48—Routing tree calculation
-
- 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/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- 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/16—Multipoint routing
-
- 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
-
- 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/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Automation & Control Theory (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种报文转发方法、设备及计算机可读存储介质,属于通信技术领域。该方法用于转发BIER报文,包括:目标节点设备确定网络拓扑发生变化时,目标节点设备启动计时器;在计时器计时结束之前,目标节点设备采用旧的转发表转发BIER报文和建立新的转发表,旧的转发表为网络拓扑发生变化前目标节点设备使用的转发表,新的转发表为目标节点设备基于变化后的网络拓扑建立的转发表,计时器指示新的转发表在计时器计时结束之前被建立完成;在计时器计时结束之后,目标节点设备将旧的转发表切换到新的转发表,按照新的转发表转发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的报文,所述方法包括:目标节点设备确定网络拓扑发生变化时,所述目标节点设备启动计时器;在所述计时器计时结束之前,所述目标节点设备采用旧的转发表转发所述BIER报文和建立新的转发表,所述旧的转发表为网络拓扑发生变化前所述目标节点设备使用的转发表,所述新的转发表为所述目标节点设备基于变化后的网络拓扑建立的转发表,所述计时器指示所述新的转发表在所述计时器计时结束之前被建立完成;在所述计时器计时结束之后,所述目标节点设备将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
当网络拓扑发生变化时,通过在计时器计时结束之前采用旧的转发表转发BIER报文和建立新的转发表,在计时器计时结束之后再将旧的转发表切换到新的转发表,采用新的转发表转发BIER报文,从而避免或减少丢包及多包情况的发生。
作为一种示例性实施例,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;启动所述计时器之前,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路。
在基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路时,再启动计时器,从而避免在存在环路的情况下再去计时而导致链路拥塞。
作为一种示例性实施例,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述目标节点设备不启动计时器,所述目标节点设备建立新的转发表,在所述新的转发表建立完成后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,不启动计时,直接建立新的转发表,在新的转发表建立完成后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文,从而避免链路拥塞。
作为一种示例性实施例,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述目标节点设备不启动计时器,所述目标节点设备基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发所述BIER报文。
当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,不启动计时器,直接对旧的转发表进行刷新,按照刷新后的转发表转发BIER报文,从而避免链路拥塞。
作为一种示例性实施例,所述报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,所述第一路径为所述目标节点设备到所述旧的转发表中所述目标节点设备的每个邻居的路径,所述第二路径以所述旧的转发表中所述目标节点设备的每个邻居为起点,且以所述目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,所述存在环路是指所述第二路径经过所述目标节点设备。
作为一种示例性实施例,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路,包括:对于所述旧的转发表中所述目标节点设备的任一邻居,所述目标节点设备确定所述任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过所述目标节点设备;当任一边缘节点设备在变化后的网络拓扑下的路径会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
作为一种示例性实施例,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路,包括:所述目标节点设备以所述旧的转发表中所述目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;遍历所述最短路径树上经过所述目标节点设备到达的各个边缘节点设备的标识,得到比特串;将所述比特串与所述目标节点设备的邻居的转发位掩码进行与操作;当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
作为一种示例性实施例,所述在所述计时器计时结束之前,所述目标节点设备采用旧的转发表转发所述BIER报文和建立新的转发表,包括:在所述计时器计时结束之前,所述目标节点设备采用旧的负载分担转发的多表项转发所述BIER报文,按照负载分担的路径数量建立新的负载分担转发的多表项;所述在所述计时器计时结束之后,所述目标节点设备将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文,包括:在所述计时器计时结束之后,所述目标节点设备将所述旧的负载分担转发的多表项转发表切换到所述新的负载分担转发的多表项,按照所述新的负载分担转发的多表项转发所述BIER报文。
本申请实施例还提供了一种报文转发节点设备,所述报文转发节点设备用于转发BIER报文,所述报文转发节点设备包括:启动模块,用于确定网络拓扑发生变化时,启动计时器;转发模块,用于在所述计时器计时结束之前,采用旧的转发表转发所述BIER报文,所述旧的转发表为网络拓扑发生变化前所述报文转发节点设备使用的转发表;建立模块,用于在所述计时器计时结束之前,建立新的转发表,所述新的转发表为所述报文转发节点设备基于变化后的网络拓扑建立的转发表,所述计时器指示所述新的转发表在所述计时器计时结束之前被建立完成;所述转发模块,还用于在所述计时器计时结束之后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
作为一种示例性实施例,所述报文转发节点设备还包括:确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;所述启动模块启动所述计时器之前,所述确定模块基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路。
作为一种示例性实施例,所述报文转发节点设备还包括:确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述启动模块不启动计时器,所述建立模块建立新的转发表,所述转发模块在所述新的转发表建立完成后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
作为一种示例性实施例,所述报文转发节点设备还包括:确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述启动模块不启动计时器,所述转发模块,用于基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发所述BIER报文。
作为一种示例性实施例,所述报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,所述第一路径为所述目标节点设备到所述旧的转发表中所述目标节点设备的每个邻居的路径,所述第二路径以所述旧的转发表中所述目标节点设备的每个邻居为起点,且以所述目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,所述存在环路是指所述第二路径经过所述目标节点设备。
作为一种示例性实施例,所述确定模块,用于对于所述旧的转发表中所述目标节点设备的任一邻居,确定所述任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过所述目标节点设备;当任一边缘节点设备在变化后的网络拓扑下的路径会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
作为一种示例性实施例,所述确定模块,用于以所述旧的转发表中所述目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;遍历所述最短路径树上经过所述目标节点设备到达的各个边缘节点设备的标识,得到比特串;将所述比特串与所述目标节点设备的邻居的转发位掩码进行与操作;当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
作为一种示例性实施例,所述转发模块,用于在所述计时器计时结束之前,采用旧的负载分担转发的多表项转发所述BIER报文;所述建立模块,用于按照负载分担的路径数量建立新的负载分担转发的多表项;所述转发模块,用于在所述计时器计时结束之后,将所述旧的负载分担转发的多表项转发表切换到所述新的负载分担转发的多表项,按照所述新的负载分担转发的多表项转发所述BIER报文。
还提供一种报文转发节点设备,所述报文转发节点设备包括:存储器及处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现上述任一所述的报文转发方法。
还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上任一所述的报文转发方法。
提供了另一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行第一方面或第一方面的任一种可能的实施方式中的方法。
作为一种示例性实施例,所述处理器为一个或多个,所述存储器为一个或多个。
作为一种示例性实施例,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
提供了一种计算机程序(产品),所述计算机程序(产品)包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行上述各方面中的方法。
提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述各方面中的方法。
附图说明
图1为本申请实施例提供的网络拓扑结构示意图;
图2为本申请实施例提供的BIER头结构示意图;
图3为本申请实施例提供的BIER-MPLS封装转发示意图;
图4为本申请实施例提供的网络拓扑结构示意图;
图5为本申请实施例提供的报文转发方法流程图;
图6为本申请实施例提供的网络拓扑结构示意图;
图7为本申请实施例提供的网络拓扑结构示意图;
图8为本申请实施例提供的网络拓扑结构示意图;
图9为本申请实施例提供的报文转发节点设备的结构示意图;
图10为本申请实施例提供的报文转发节点设备的结构示意图;
图11为本申请实施例提供的报文转发节点设备的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
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 table identifer,BIFT-ID)值,其中前20bit为标签值或BIFT-ID值,后12bit为标签的其它信息,包括通信流类别(traffic class,TC)、S位及生存时间(time to live,TTL)。BIER头还包括64bit(8个字节)的其它字段,包括区分符(Nibble)、版本(Ver)、比特串长度(bits length,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的报文就可能产生多包。
针对该图4中的网络拓扑在新增链路的情况下出现丢包或多包的问题,本申请实施例提供了一种报文转发方法。该方法在将转发路径切换到新的转发表对应的路径之前,先维持在旧的转发路径上转发BIER报文,建立新的转发表后,再切换到新的转发表,然后删除旧的转发表。也就是说,本申请实施例采用先建后删(make before break,MBB)的方式,避免或减轻报文的丢失或者重复。参见图5,本申请实施例提供的方法包括如下几个步骤:
步骤501:目标节点设备确定网络拓扑发生变化时,目标节点设备启动计时器。
网络拓扑发生变化包括新增链路的情况,本申请实施例不对新增链路的情况加以限定。示例性地,该新增的链路可以是之前因故障而断开,后又被修复从而能够连接的链路。仍以图4所示的网络拓扑为例,原来节点1和节点3之间的链路是存在的,但由于故障,节点1和节点3之间的链路断开了。之后,节点1和节点3之间的链路故障被修复,则网络拓扑发生变化,因节点1和节点3之间的链路故障被修复而增加节点1与节点3之间的链路。
除上述因之前故障的链路修复而增加链路的情况之外,网络拓扑中新增的链路也可以是新增一个路由器连到网络中,从而增加了新的链路。例如,仍以图4所示的网络拓扑为例,如果新增加了节点4,且节点4与节点1建立连接,则节点1与节点4之间的链路为新增链路。
本申请实施例中,可以对网络中的节点配置BIER MBB使能,也就是说,该方法中的目标节点设备可以是新增链路之后,发生变化后的网络拓扑中配置了BIER MBB的任意节点。示例性地,目标节点设备具有BIER协议、BIER转发能力及BIER的具体封装下的转发能力,如MPLS封装、以太(Ethernet)封装、互联网协议第6版(internet protocol version 6,IPv6)封装等。本申请实施例不对BIER转发的具体封装类型加以限制。此外,本申请实施例中的该目标节点设备可以是路由器或交换机。
在本申请实施例提供的方法中,网络管理员配置目标节点设备的BIER MBB使能,使目标节点设备具备BIER MBB功能。此外,该计时器指示新的转发表在计时器计时结束之前被建立完成。示例性地,网络管理员除了配置目标节点设备的BIER MBB使能,还可以配置计时器的计时时长。计时器的计时时长的配置可以基于目标节点设备的自身能力来定,如基于目标节点设备的中央处理器(central processing unit,CPU)负荷来定,也可以基于经验来设置。不同目标节点设备配置的计时器的计时时长可以相同,也可以不同,本申请实施例对此不加以限定,只要能够确保新的转发表建立完成即可。
步骤502:在计时器计时结束之前,目标节点设备采用旧的转发表转发BIER报文和建立新的转发表。
旧的转发表为网络拓扑发生变化前,目标节点设备使用的转发表;新的转发表为目标节点设备基于变化后的网络拓扑建立的转发表。网络拓扑发生变化后,目标节点设备在计时器的计时结束之前,如果收到BIER报文,则采用旧的转发表转发该BIER报文,且建立新的转发表。
需要说明的是,当网络拓扑发生变化时,可以在启动计时器之前建立新的转发表,也可以在启动计时器之后建立新的转发表,还可以启动计时器的同时,建立新的转发表。由于计时器指示新的转发表在计时器计时结束之前被建立完成,针对在启动计时器之前建立新的转发表的情况,计时器的计时时长小于新的转发表的建立时长。针对在启动计时器之后建立新的转发表的情况,计时器的计时时长大于新的转发表的建立时长。针对启动计时器的同时,建立新的转发表的情况,计时器的计时时长可以等于新的转发表的建立时长。其中,新的转发表的建立时长为开始建立新的转发表的时刻到新的转发表建立完成的时刻之间的时间长度。
由于增加了一个链路,因而有可能会导致目标节点设备按照原转发路径发给目的节点的BIER报文又被发回给了目标节点设备。也就是说,维持在旧的转发表转发BIER报文,有可能因报文转发路径存在环路,而导致出现链路拥塞等问题。因此,维持在旧的转发表上进行BIER报文转发需要判断报文转发路径是否会存在环路。作为一种示例性实施例,当网络拓扑发生变化时,该方法还包括:基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;本实施例中,启动计时器之前,目标节点设备基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路,从而在计时器的计时结束之前,采用旧的转发表转发BIER报文和建立新的转发表。通过在确定网络拓扑发生变化后的报文转发路径不存在环路的情况下,在计时器的计时结束之前,采用旧的转发表转发BIER报文和建立新的转发表,由此可以防止采用旧的转发表转发BIER报文时,出现环路,导致链路拥塞等问题。
关于基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路的方式,包括但不限于如下两种方式:
方式一:对于旧的转发表中目标节点设备的任一邻居,目标节点设备确定任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过目标节点设备;当任一边缘节点设备在变化后的网络拓扑下的路径会经过目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
其中,报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,第一路径为目标节点设备到旧的转发表中目标节点设备的每个邻居的路径,第二路径以旧的转发表中目标节点设备的每个邻居为起点,且以目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,存在环路是指第二路径经过目标节点设备。
仍以图4所示的网络拓扑中的节点1为目标节点设备为例,因为增加节点1到节点3之间的链路,节点1感知到网络拓扑发生变化,则节点1判断当前的BIER转发表所对应的报文转发路径是否会因为本次拓扑的变化而存在环路,即判断转发表中节点1的每个邻居的FBM所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过节点1。其中,旧的转发表中,节点1的邻居包括节点2,则节点1到节点2的路径为第一路径。第二路径以节点2为起点,以节点2的转发位掩码所代表的边缘节点设备为终点。如果判断转发表中节点1的每个邻居的FBM所代表的每个边缘节点设备在变化后的网络拓扑下的路径不会经过节点1,则执行MBB的过程,即:保持现有的BIER转发表(bit indexed forwarding table,BIFT)1不变,新增一个BIER转发表BIFT 2,然后将报文转发路径设置为使用新的转发表,将旧的转发表切换到新的转发表,再删除旧的转发表。
其中,由于新增一个BIFT转发表后,可能会等待一定的时间才会设置转发路径为新的转发表,因为在路由器这样的系统中,下发转发表的过程也需要时间,下发过程可能是一个异步的过程,即下发程序不感知下发是否已经完成。以计时器的计时时长为500毫秒为例,当计时器计时结束时再设置转发路径为新的转发表;该计时器的计时时长配置之后,可以是从感知网络拓扑发生变化即开始启动计时器计时。
示例性地,Node1当前的转发表BIFT 1如下:
{(Nbr=Node1(Self),FBM=0001),
(Nbr=Node2,FBM=0110)}
Node1节点对Node1的每个Nbr节点(不含自身)的FBM所代表的BFER节点,确定在变化后的网络拓扑下的报文转发路径是否会经过节点1,即从该邻居走回到节点1。
例如,可以通过公式Distance(2_X)<Distance(2_1)+Distance(1_X),或者D(2_X)<D(2_1)+D(1_X)进行判断。其中,D(X_Y)代表从节点X到节点Y的路径开销。
由于Node1的邻居节点为Node2,则对Nbr<Node2>的FBM<0110>所代表的是Node2和Node3,分别用上面的公式判断:
D(2_2)<D(2_1)+D(1_2)
D(2_3)<D(2_1)+D(1_3)
如果图4所示的链路之间的开销(cost)相同,则对于图4所示的网络拓扑,上述公式都满足,则当前的转发表BIFT 1不会因为拓扑变化而存在环路,因此,Node1可以执行MBB操作。
方式二:以旧的转发表中目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;遍历最短路径树上经过目标节点设备到达的各个边缘节点设备的标识,得到比特串;将比特串与邻居的转发位掩码进行与操作;当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
例如,以Node1的旧的转发表中Node1的每个邻居(例如2)为根,在发生变化后的网络拓扑下建立SPT树,遍历该SPT树上经过Node1能到达的各个节点的BFR-id并构成BitString(BitStringx),然后再与该邻居的FBM(FBMx)进行AND操作,即(BSx AND FBMx),如果结果为非0则表示存在环路。
对于图4的网络拓扑,Node1的转发表只有一个邻居2,其FBMx=110,在发生变化后的网络拓扑下,SPT树经过Node1的节点只有Node1,对应的BitStringx=001,BitStringxAND FBMx=0,因此对该邻居来说在发生变化后的网络拓扑下是不存在环路的。
步骤503:在计时器计时结束之后,目标节点设备将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
当计时器计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文,该过程可以采用原子操作或单表项操作。
仍以图4所示的网络拓扑为例,针对接收到的BIER报文,Node1收到BIER报文后将向Node2和Node3转发,Node1会在基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路时,启动计时器,保持在旧的转发表上一段时间,即在计时器计时结束之后,再切换到新的转发表上,之后还可将旧的转发表进行删除。网络中可能Node1/Node2/Node3都配置了BIER MBB使能,则在此过程中,每个节点设备均按照上述Node1的操作进行判断和处理。对于Node3也会按上述流程进行判断和处理,对于Node1按照旧的转发表转发报文和按照新的转发表转发报文的情况分别如下:
(1)Node1按照旧的转发表,即按照老的转发路径1->2->3进行BIER报文转发,按照上述报文转发过程中各个节点设备的操作,Node3收到BIER报文时只有BitString(0100)了,无论Node3是在其旧的转发路径或其新的转发路径转发BIER报文,BIER报文的转发结果都没有影响,即Node3接收从Node1发来的BIER报文不会出现丢包的情况。
(2)Node1按照新的转发表,即按照新的转发路径1->2/3进行BIER报文转发,Node3收到BIER报文时也只有BitString(0100)了,无论Node3是在其旧的转发路径或其新的转发路径转发BIER报文,BIER报文转发结果都没有影响,即Node3接收从Node1发来的BIER报文不会出现丢包的情况。
本申请实施例提供的方法,在网络拓扑发生变化时,启动计时器,通过在计时器计时结束之前,采用旧的转发表转发BIER报文和建立新的转发表,在计时器计时结束之后再将旧的转发表切换到新的转发表,采用新的转发表转发BIER报文,从而避免或减少丢包或多包情况的发生。此外,基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路时再启动计时器,避免存在环路时产生链路拥塞,提高了报文转发的可靠性,进一步减少丢包或多包的情况发生概率。
需要说明的是,以上仅以网络拓扑发生变化时,目标节点设备基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路的情况进行说明,针对存在环路的情况,本申请实施例提供的方法包括但不限于如下两种处理方式:
处理方式一:当网络拓扑发生变化时,该方法还包括:当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,目标节点设备不启动计时器,目标节点设备建立新的转发表,在新的转发表建立完成后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
该种方式下,采用上述基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路的方式,在基于旧的转发表确定网络拓扑发生变化后的路径转发路径存在环路时,不启动计时器,直接建立新的转发表,在新的转发表建立完成后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
处理方式二:当网络拓扑发生变化时,该方法还包括:当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,目标节点设备不启动计时器,目标节点设备基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发BIER报文。
该种方式下,采用上述基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路的方式,当基于旧的转发表确定报文转发路径在网络拓扑发生变化后存在环路时,不启动计时器,也不建立新的转发表,而是基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发报文。
上述处理方式一和处理方式二中,报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,第一路径为目标节点设备到旧的转发表中目标节点设备的每个邻居的路径,第二路径以旧的转发表中目标节点设备的每个邻居为起点,且以目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,存在环路是指第二路径经过目标节点设备。
由于存在环路会导致链路拥塞等问题,因而当确定存在环路时,不启动计时器,避免或降低链路拥塞的情况发生。
为了便于理解上述本申请实施例提供的方法,接下来将以上述图4所示的场景之外的其他几种不同的场景来举例说明。
场景一:四台设备组网,新增链路之后的拓扑结构图及各链路的开销如图6中的(1)所示。该场景下有多种新增链路的情况,针对每种新增链路时的报文转发过程如下:
(1)新增节点1与节点2之间的链路
如图6中的(2)所示,Node1基于旧的转发表按照如下判断方式确定网络拓扑发生变化后的报文转发路径不存在环路,延迟收敛,即在计时器的计时结束之前,继续节点1to节点3<1110>转发BIER报文,当计时器的计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
判断方式一,邻居节点3到邻居节点3的FBM<1110>所有节点不会走节点1。
判断方式二,为邻居节点3计算出新SPT树,FBM各节点满足公式D(3_X)<D(3_1)+D(1_X)。
以流量从节点1接收后往节点2/3/4发送为例,节点2的收敛对报文转发结果无影响,因为节点2的收敛只对BFER=1有影响,而BIER报文从达到节点2时其BitString并没有包含BFER=1。
(2)新增节点2与节点4之间的链路
如图6中的(3)所示,节点2基于旧的转发表按照如下判断方式确定网络拓扑发生变化后的报文转发路径不存在环路,延迟收敛,即在计时器的计时结束之前,继续节点2to节点1<1101>)转发BIER报文,当计时器的计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
判断方式一,邻居节点1到邻居节点1的FBM<1101>所有节点不会走节点2。
判断方式二,为邻居节点1计算出新SPT树,FBM<1101>各节点满足公式D(1_X)<D(1_2)+D(2_X)。
示例性地,以流量从节点2接收后往节点1/3/4发送为例,节点3的收敛对报文转发结果无影响,因为节点3的收敛只对BFER=2有影响,而报文从达到节点3时其BitString并没有包含BFER=2;同理,节点4的收敛对报文转发结果无影响,因为节点4的收敛只对BFER=2有影响,而报文从达到节点4时其BitString并没有包含BFER=2。
示例性地,以流量从节点4接收后往节点1/2/3发送为例,由于发<0010>给节点3的报文会被发回来,节点4基于旧的转发表按照如下的判断方式确定网络拓扑发生变化后的报文转发路径存在环路,因而不延迟收敛。
判断方式一,邻居节点3到邻居节点3的FBM<0111>所有节点中,由于BFR-id=2的报文会走节点4,因而不满足邻居节点3到邻居节点3的FBM<0111>所有节点都不会走节点4的条件。
判断方式二,为邻居节点3计算出新SPT树,BFR-id=2不满足公式D(3_2)<D(3_4)+D(4_2)。
需要说明的是,虽然对于<0111>的BIER报文不能延迟收敛,但对于流量为<0101>的BIER报文不受影响,只有流量包含BFR-id=2的BIER报文才会受到影响。
(3)新增节点3与节点4之间的链路
如图6中的(4)所示,节点3基于旧的转发表按照如下判断方式确定网络拓扑发生变化后的报文转发路径存在环路,由于发<1000>给节点1的BIER报文会被发回来,因而不延迟收敛。
判断方式一,邻居节点1到邻居节点1的FBM<1011>所有节点中,由于BFR-id=4的报文会走节点3,因而不满足邻居节点1到邻居节点1的FBM<1011>所有节点不会走节点3的条件。
判断方式二,为邻居节点1计算出新SPT树,BFR-id=4不满足公式D(1_4)<D(1_3)+D(3_4)。
以流量从节点3收到为例,节点3基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路,从而不启动计时器,而是在新的转发表建立完成之后,立即回切到新的转发表,或者刷新旧的转发表,那么本申请实施例中所配置的MBB无效。
场景二:六台设备组网,新增链路之后的拓扑结构图及各链路的开销如图7中的(1)所示。该场景下有多种新增链路的情况,针对每种新增链路时的报文转发过程如下:
(1)新增节点1与节点2之间的链路
如图7中的(2)所示,节点2基于旧的转发表按照如下判断方式确定网络拓扑发生变化后的报文转发路径不存在环路,延迟收敛,即在计时器的计时结束之前,继续节点2to节点4<111101>转发BIER报文,当计时器的计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
判断方式一,邻居节点4到邻居节点4的FBM<111101>所有节点不会走节点2。
判断方式二,为邻居节点1计算出新SPT树,FBM<111101>各节点满足公式D(4_X)<D(4_2)+D(2_X)。
其中,节点1的收敛对于BFER=2对报文转发结果无影响,以流量从节点2收到为例,往节点1/3/4/5/6发送(BitString=111101),可以做到不丢包。
(2)新增节点2与节点4之间的链路
如图7中的(3)所示,节点2基于旧的转发表按照如下判断方式确定网络拓扑发生变化后的报文转发路径不存在环路,延迟收敛,即在计时器的计时结束之前,继续节点2to节点1<111101>转发BIER报文,当计时器的计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
判断方式一,邻居节点1到邻居节点1的FBM<111101>所有节点不会走节点2。
判断方式二,为邻居节点1计算出新SPT树,FBM<111101>各节点满足公式D(1_X)<D(1_2)+D(2_X)。
其中,节点4的收敛对于BFER=2对报文转发结果无影响。因为BFER=2的节点会走节点4,节点4基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路。
以流量从节点2收到为例,因为节点4的收敛只对BFER=2有影响,而BIER报文从达到节点4时其BitString并没有包含BFER=2。按照本申请实施例提供的方法可以做到报文不丢包。
(3)新增节点3与节点4之间的链路
如图7中的(4)所示,以流量从节点2收到为例,转发路径包括2->1->3;2->4->6->5;当增加节点3与节点4之间的链路时:
对于节点2的处理,原来的邻居节点1承接1/3,邻居节点4承接2/4/6/5,邻居节点1到邻居节点1的FBM<000101>所有节点不会走节点2;邻居节点4到邻居节点4的FBM<111000>所有节点不会走节点2,因而网络拓扑发生变化后的报文转发路径不存在环路,可以延迟收敛。
对于节点3的处理,由2个邻居变为3个邻居,由于BFER=4的节点会走节点3,因而报文转发路径会存在环路,但节点3的收敛过程不影响从节点2发出来到达节点3的BIER报文。
对于节点4的处理,由2个邻居变为3个邻居,由于BFER=3的节点会走节点4,因而报文转发路径会存在环路,但节点4的收敛过程不影响从节点2发出来到达节点4的BIER报文。
(4)新增节点4与节点6之间的链路
如图7中的(5)所示,以流量从节点2收到为例,转发路径包括2->1;2->4->3->5->6;增加节点4与节点6之间的链路时:
对节点2的处理,原来的邻居节点1承接1,邻居节点4承接3/4/5/6,由于邻居节点1到邻居节点1的FBM<000001>所有节点不会走节点2;邻居节点4到邻居节点4的FBM<111101>所有节点不会走节点2;因而报文转发路径不存在环路(两个邻居的FBM都没有变化),可以延迟收敛。
对节点4的处理,由2个邻居变为3个邻居,报文转发路径不会存在环路,可以延迟收敛。
对节点6的处理,由1个邻居变为2个邻居,因为BFER=4导致存在环路,不延迟收敛;但收敛过程不影响从节点2发出来到达节点6的BIER报文。
以流量从节点1收到为例,转发路径包括1->2;1->3->4/5;5->6;增加节点4与节点6之间的链路时:
对于节点1的处理,原来的邻居节点2承接2;邻居节点3承接3/4/5/6;两个邻居的FBM都没有变化,报文转发路径不会存在环路,可以延迟收敛。
通过上述过程,最终整个从节点1发送到节点2/3/4/5/6的流量可以做到不丢包。
(5)新增节点5与节点6之间的链路
如图7中的(6)所示,以流量从节点2收到为例,转发路径包括2->1;2->4->3/6;3->5;增加节点5与节点6之间的链路时:
对于节点5的处理,由1个邻居变为2个邻居,由于BFER=6导致报文转发路径会存在环路,不延迟收敛。
对于节点6的处理,由1个邻居变为2个邻居,由于BFER=5导致报文转发路径会存在环路,因而不延迟收敛,但收敛过程不影响无丢包。
对于节点2的处理,原来的邻居节点1承接1,邻居节点4承接3/4/5/6,由于邻居节点1到邻居节点1的FBM<000001>所有节点不会走节点2,邻居节点4到邻居节点4的FBM<111101>所有节点不会走节点2,因而两个邻居的FBM都没有变化,报文转发路径不会存在环路,可以延迟收敛。
通过上述过程,此场景下可以做到增加链路时不丢包。
此外,除上述几种场景外,针对负载分担转发的场景,本实施例提供的方法同样适用。在负载分担转发的场景下,在计时器计时结束之前,目标节点设备采用旧的转发表转发BIER报文和建立新的转发表,包括:在计时器计时结束之前,采用旧的负载分担转发的多表项转发BIER报文,按照负载分担的路径数量建立新的负载分担转发的多表项。
相应的,在计时器计时结束之后,目标节点设备将旧的转发表切换到新的转发表,按照新的转发表转发报文,包括:在计时器计时结束之后,目标节点设备将旧的负载分担转发的多表项转发表切换到新的负载分担转发的多表项,按照新的负载分担转发的多表项转发报文。
上述多转发表的情况,报文转发过程与上述图5所示的方法流程原理一致,此处不再一一赘述。为了便于理解,接下来,以如下场景三所示的负载分担转发的场景为例,对报文转发过程进行举例说明。
场景三:有负载分担链路情况的组网,新增链路之后的拓扑结构图如图8所示。该拓扑结构图中各链路的开销相同,1、2、5、6、7、8是BFER节点,BFR-id分别是1、2、5、6、7、8。没有故障的情况下,节点1到所有其它BFER节点都有4条路径,分别是通过邻居B所经过的路径、通过邻居R所经过的路径、通过邻居G所经过的路径、通过邻居P所经过的路径。以节点1与节点B之间的链路故障后又恢复,节点1到各BFER的路径从3条变为4条为例。
本实施例中节点1配置使用BIER的多表项进行负载分担(RFC8279),配置了4路负载分担,即负载分担的路径数量为4,负载分担的表如下,其中邻居为自己的表项省略:
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)}
以当前有400条组播流,每个BIFT表有100条组播流,其中经过邻居R的有200条组播流、经过邻居G的有100条组播流、经过邻居P的有100条组播流为例,则增加一个链路后,上面的表项可能会变为如下:
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)}
可以看出,这里每一个BIFT表都发生了变化,BIFT 1从Nbr=R变为Nbr=B;BIFT 2从Nbr=G变为Nbr=R;BIFT 3从Nbr=P变为Nbr=G;BIFT 4从Nbr=R变为Nbr=P。
该种情况下,会存在增加链路可能会导致丢包或多包的问题。例如,如果链路故障以后直接刷新BIFT表,对上面的BIFT 1而言,可能是新删除Nbr=R的表项再添加Nbr=B的表项,那么会出现断流;如果先添加Nbr=B的表项再添加Nbr=R的表项,那么会出现多包。针对该问题一,例如针对上面的BIFT1的转发情况,先建立一个BIFT 1’的新表项,一定的时间后,即计时器的计时结束之后,将转发表项更改为BIFT 1’,实现不丢包。
为了解决上述问题,本申请实施例提供的方法中,为各节点配置BIER MBB使能,以及配置一个计时器的计时时长。如图8所示,新增链路(节点1-节点B)时,以流量从节点1收到为例,节点1判断是否存在环路,判断方式如下:
对于当前的BIFT 1表项,邻居节点R到邻居节点R的FBM<11110010>所有节点都不会走到节点1;对于当前的BIFT 2表项,邻居节点G到邻居节点G的FBM<11110010>所有节点都不会走到节点1;对于当前的BIFT 3表项,邻居节点P到邻居节点P的FBM<11110010>所有节点都不会走到节点1;对于当前的BIFT 4表项,邻居节点R到邻居节点R的FBM<11110010>所有节点都不会走到节点1。
由于上述所有条件都满足,说明原负载分担的4个表项都可以继续在原路径上转发,因此,可以启动计时器。
示例性地,在计时器计时结束之前,生成新的负载分担转发的多表项,例如,初始的情况下,使用如下的多表负载分担转发索引,即多BIER转发表索引(multiple BIFTindex,MBI),例如MBI1;
多表负载分担转发索引:MBI1={BIFT 1,BIFT 2,BIFT 3,BIFT4}
BIER转发表如下:
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)}
计时器计时过程中,新增加一个多表负载分担转发索引表,及对应的转发表:
MBI2={BIFT 21,BIFT 22,BIFT 23,BIFT24}
BIFT 21:{(Nbr=B,FBM=1111 0010)}
BIFT 22:{(Nbr=R,FBM=1111 0010)}
BIFT 23:{(Nbr=G,FBM=1111 0010)}
BIFT 24:{(Nbr=P,FBM=1111 0010)}
然后再在计时器计时结束后更改转发表为:多表负载分担转发索引=MBI2;
这种方法下,需要以此判断BIFT 1、2、3、4的转发表在发生变化后的网络拓扑下报文转发路径是否会存在环路,确定不存在环路后再切换新的负载分担转发的多表项。
综上所述,本申请实施例提供的方法,在新增链路时,通过在计时器计时结束之前,采用旧的负载分担转发的多表项转发BIER报文,按照负载分担的路径数量建立新的负载分担转发的多表项,当计时器计时结束之后,再将旧的负载分担转发的多表项切换到新的负载分担转发的多表项,采用新的负载分担转发的多表项转发BIER报文,从而避免或减少丢包或多包情况的发生。
本申请实施例提供了一种报文转发节点设备,该报文转发节点设备用于转发BIER报文,参见图9,该报文转发节点设备包括:
启动模块901,用于确定网络拓扑发生变化时,启动计时器;
转发模块902,用于在计时器计时结束之前,采用旧的转发表转发BIER报文,旧的转发表为网络拓扑发生变化前报文转发节点设备使用的转发表;
建立模块903,用于在计时器计时结束之前,建立新的转发表,新的转发表为报文转发节点设备基于变化后的网络拓扑建立的转发表,计时器指示新的转发表在计时器计时结束之前被建立完成;
转发模块902,还用于在计时器计时结束之后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
作为一种示例性实施例,参见图10,该报文转发节点设备还包括:
确定模块904,用于当网络拓扑发生变化时,基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
启动模块901启动计时器之前,确定模块904基于旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路。
作为一种示例性实施例,参见图10,该报文转发节点设备还包括:
确定模块904,用于当网络拓扑发生变化时,基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,启动模块901不启动计时器,建立模块903建立新的转发表,转发模块902在新的转发表建立完成后,将旧的转发表切换到新的转发表,按照新的转发表转发BIER报文。
作为一种示例性实施例,参见图10,该报文转发节点设备还包括:
确定模块904,用于当网络拓扑发生变化时,基于旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,启动模块901不启动计时器,转发模块902,用于基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发BIER报文。
作为一种示例性实施例,报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,第一路径为目标节点设备到旧的转发表中目标节点设备的每个邻居的路径,第二路径以旧的转发表中目标节点设备的每个邻居为起点,且以目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,存在环路是指第二路径经过目标节点设备。
作为一种示例性实施例,确定模块904,用于对于旧的转发表中目标节点设备的任一邻居,确定任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过目标节点设备;当任一边缘节点设备在变化后的网络拓扑下的路径会经过目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
作为一种示例性实施例,确定模块904,用于以旧的转发表中目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;遍历最短路径树上经过目标节点设备到达的各个边缘节点设备的标识,得到比特串;将比特串与目标节点设备的邻居的转发位掩码进行与操作;当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
作为一种示例性实施例,转发模块902,用于在计时器计时结束之前,采用旧的负载分担转发的多表项转发BIER报文;
建立模块903,用于按照负载分担的路径数量建立新的负载分担转发的多表项;
转发模块902,用于在计时器计时结束之后,将旧的负载分担转发的多表项转发表切换到新的负载分担转发的多表项,按照新的负载分担转发的多表项转发BIER报文。
应理解的是,上述图9或图10提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11为本申请实施例的报文转发节点设备1100的硬件结构示意图。图11所示的报文转发节点设备1100可以执行上述实施例的方法中报文转发节点设备执行的相应步骤。
如图11所示,所述报文转发节点设备1100包括处理器1101、存储器1102、接口1103和总线1104。其中接口1103可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器1101、存储器1102和接口1103通过总线1104连接。
所述接口1103具体可以包括发送器和接收器,用于报文转发节点设备与上述实施例中的其他节点设备之间收发信息。例如,所述接口1103用于支持接收邻居节点设备发送的BIER报文。所述处理器1101用于执行上述实施例中由报文转发节点设备进行的处理。例如,所述处理器1101用于确定网络拓扑发生变化时,启动计时器;在所述计时器计时结束之前,采用旧的转发表转发所述BIER报文和建立新的转发表,所述旧的转发表为网络拓扑发生变化前所述目标节点设备使用的转发表,所述新的转发表为所述目标节点设备基于变化后的网络拓扑建立的转发表,所述计时器指示所述新的转发表在所述计时器计时结束之前被建立完成;在所述计时器计时结束之后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。所述处理器1101和/或用于本文所描述的技术的其他过程。作为举例,所述处理器1101用于支持图5中的步骤501至步骤503。存储器1102包括操作系统11021和应用程序11022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及报文转发节点设备的处理过程。可选的,所述存储器1102可以包括只读存储器(英文:Read-only Memory,缩写:ROM)和随机存取存储器(英文:Random Access Memory,缩写:RAM)。其中,所述ROM包括基本输入/输出系统(英文:Basic Input/Output System,缩写:BIOS)或嵌入式系统;所述RAM包括应用程序和操作系统。当需要运行报文转发节点设备1100时,通过固化在ROM中的BIOS或者嵌入式系统中的bootloader引导系统进行启动,引导报文转发节点设备1100进入正常运行状态。在报文转发节点设备1100进入正常运行状态后,运行在RAM中的应用程序和操作系统,从而,完成方法实施例中涉及报文转发节点设备的处理过程。
可以理解的是,图11仅仅示出了报文转发节点设备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 (18)
1.一种报文转发方法,其特征在于,所述方法用于转发基于比特索引的显式复制BIER报文,所述方法包括:
目标节点设备确定网络拓扑发生变化时,所述目标节点设备启动计时器;
在所述计时器计时结束之前,所述目标节点设备采用旧的转发表转发所述BIER报文和建立新的转发表,所述旧的转发表为网络拓扑发生变化前所述目标节点设备使用的转发表,所述新的转发表为所述目标节点设备基于变化后的网络拓扑建立的转发表,所述计时器指示所述新的转发表在所述计时器计时结束之前被建立完成;
在所述计时器计时结束之后,所述目标节点设备将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
2.根据权利要求1所述的方法,其特征在于,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:
所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
启动所述计时器之前,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路。
3.根据权利要求1所述的方法,其特征在于,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:
所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述目标节点设备不启动计时器,所述目标节点设备建立新的转发表,在所述新的转发表建立完成后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
4.根据权利要求1所述的方法,其特征在于,当所述目标节点设备确定网络拓扑发生变化时,所述方法还包括:
所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述目标节点设备不启动计时器,所述目标节点设备基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发所述BIER报文。
5.根据权利要求2-4任一所述的方法,其特征在于,所述报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,所述第一路径为所述目标节点设备到所述旧的转发表中所述目标节点设备的每个邻居的路径,所述第二路径以所述旧的转发表中所述目标节点设备的每个邻居为起点,且以所述目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,所述存在环路是指所述第二路径经过所述目标节点设备。
6.根据权利要求2-5任一所述的方法,其特征在于,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路,包括:
对于所述旧的转发表中所述目标节点设备的任一邻居,所述目标节点设备确定所述任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过所述目标节点设备;
当任一边缘节点设备在变化后的网络拓扑下的路径会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;
当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
7.根据权利要求2-5任一所述的方法,其特征在于,所述目标节点设备基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路,包括:
所述目标节点设备以所述旧的转发表中所述目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;
遍历所述最短路径树上经过所述目标节点设备到达的各个边缘节点设备的标识,得到比特串;
将所述比特串与所述目标节点设备的邻居的转发位掩码进行与操作;
当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;
当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
8.根据权利要求1-7任一所述的方法,其特征在于,所述在所述计时器计时结束之前,所述目标节点设备采用旧的转发表转发所述BIER报文和建立新的转发表,包括:
在所述计时器计时结束之前,所述目标节点设备采用旧的负载分担转发的多表项转发所述BIER报文,按照负载分担的路径数量建立新的负载分担转发的多表项;
所述在所述计时器计时结束之后,所述目标节点设备将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文,包括:
在所述计时器计时结束之后,所述目标节点设备将所述旧的负载分担转发的多表项转发表切换到所述新的负载分担转发的多表项,按照所述新的负载分担转发的多表项转发所述BIER报文。
9.一种报文转发节点设备,其特征在于,所述报文转发节点设备用于转发基于比特索引的显式复制BIER报文,所述报文转发节点设备包括:
启动模块,用于确定网络拓扑发生变化时,启动计时器;
转发模块,用于在所述计时器计时结束之前,采用旧的转发表转发所述BIER报文,所述旧的转发表为网络拓扑发生变化前所述报文转发节点设备使用的转发表;
建立模块,用于在所述计时器计时结束之前,建立新的转发表,所述新的转发表为所述报文转发节点设备基于变化后的网络拓扑建立的转发表,所述计时器指示所述新的转发表在所述计时器计时结束之前被建立完成;
所述转发模块,还用于在所述计时器计时结束之后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
10.根据权利要求9所述的报文转发节点设备,其特征在于,所述报文转发节点设备还包括:
确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
所述启动模块启动所述计时器之前,所述确定模块基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径不存在环路。
11.根据权利要求9所述的报文转发节点设备,其特征在于,所述报文转发节点设备还包括:
确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述启动模块不启动计时器,所述建立模块建立新的转发表,所述转发模块在所述新的转发表建立完成后,将所述旧的转发表切换到所述新的转发表,按照所述新的转发表转发所述BIER报文。
12.根据权利要求9所述的报文转发节点设备,其特征在于,所述报文转发节点设备还包括:
确定模块,用于当网络拓扑发生变化时,基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径是否存在环路;
当基于所述旧的转发表确定网络拓扑发生变化后的报文转发路径存在环路时,所述启动模块不启动计时器,所述转发模块,用于基于变化后的网络拓扑对旧的转发表进行刷新,按照刷新后的转发表转发所述BIER报文。
13.根据权利要求10-12任一所述的报文转发节点设备,其特征在于,所述报文转发路径包括第一路径和在变化后的网络拓扑下计算出来的第二路径,所述第一路径为所述目标节点设备到所述旧的转发表中所述目标节点设备的每个邻居的路径,所述第二路径以所述旧的转发表中所述目标节点设备的每个邻居为起点,且以所述目标节点设备的每个邻居的转发位掩码所代表的边缘节点设备为终点,所述存在环路是指所述第二路径经过所述目标节点设备。
14.根据权利要求10-13任一所述的报文转发节点设备,其特征在于,所述确定模块,用于对于所述旧的转发表中所述目标节点设备的任一邻居,确定所述任一邻居的转发位掩码所代表的每个边缘节点设备在变化后的网络拓扑下的路径是否会经过所述目标节点设备;当任一边缘节点设备在变化后的网络拓扑下的路径会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径存在环路;当每个边缘节点设备在变化后的网络拓扑下的路径均不会经过所述目标节点设备时,确定网络拓扑发生变化后的报文转发路径不存在环路。
15.根据权利要求10-13任一所述的报文转发节点设备,其特征在于,所述确定模块,用于以所述旧的转发表中所述目标节点设备的每个邻居为根,在发生变化后的网络拓扑下建立最短路径树;遍历所述最短路径树上经过所述目标节点设备到达的各个边缘节点设备的标识,得到比特串;将所述比特串与所述目标节点设备的邻居的转发位掩码进行与操作;当结果为0时,确定网络拓扑发生变化后的报文转发路径不存在环路;当结果为非0时,确定网络拓扑发生变化后的报文转发路径存在环路。
16.根据权利要求9-15任一所述的报文转发节点设备,其特征在于,所述转发模块,用于在所述计时器计时结束之前,采用旧的负载分担转发的多表项转发所述BIER报文;
所述建立模块,用于按照负载分担的路径数量建立新的负载分担转发的多表项;
所述转发模块,用于在所述计时器计时结束之后,将所述旧的负载分担转发的多表项转发表切换到所述新的负载分担转发的多表项,按照所述新的负载分担转发的多表项转发所述BIER报文。
17.一种报文转发节点设备,其特征在于,所述报文转发节点设备包括:
存储器及处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1-8中任一所述的报文转发方法。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1-8中任一所述的报文转发方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910606586.9A CN112187647B (zh) | 2019-07-05 | 2019-07-05 | 报文转发方法、设备及计算机可读存储介质 |
PCT/CN2020/090726 WO2021004156A1 (zh) | 2019-07-05 | 2020-05-17 | 报文转发方法、设备及计算机可读存储介质 |
JP2021574996A JP7322193B2 (ja) | 2019-07-05 | 2020-05-17 | パケット転送方法およびデバイス、およびコンピュータ可読記憶媒体 |
EP20836741.7A EP3979576A4 (en) | 2019-07-05 | 2020-05-17 | METHOD FOR TRANSFERRING PACKET, DEVICE, AND COMPUTER READABLE STORAGE MEDIA |
KR1020227001349A KR20220018065A (ko) | 2019-07-05 | 2020-05-17 | 패킷 포워딩 방법 및 디바이스, 그리고 컴퓨터가 판독 가능한 저장 매체 |
US17/646,963 US20220131808A1 (en) | 2019-07-05 | 2022-01-04 | Packet Forwarding Method and Device, And Computer-Readable Storage Medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910606586.9A CN112187647B (zh) | 2019-07-05 | 2019-07-05 | 报文转发方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112187647A true CN112187647A (zh) | 2021-01-05 |
CN112187647B CN112187647B (zh) | 2021-12-14 |
Family
ID=73919681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910606586.9A Active CN112187647B (zh) | 2019-07-05 | 2019-07-05 | 报文转发方法、设备及计算机可读存储介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220131808A1 (zh) |
EP (1) | EP3979576A4 (zh) |
JP (1) | JP7322193B2 (zh) |
KR (1) | KR20220018065A (zh) |
CN (1) | CN112187647B (zh) |
WO (1) | WO2021004156A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114915589A (zh) * | 2021-02-10 | 2022-08-16 | 华为技术有限公司 | 报文传输方法及装置 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
WO2024082617A1 (zh) * | 2022-10-17 | 2024-04-25 | 中兴通讯股份有限公司 | 转发表索引的通告方法、节点及存储介质 |
CN114915589B (zh) * | 2021-02-10 | 2024-06-04 | 华为技术有限公司 | 报文传输方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI733560B (zh) * | 2020-08-13 | 2021-07-11 | 瑞昱半導體股份有限公司 | 網路交換器及其網路交換器系統 |
CN113347099A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 一种分布式网络流量转发方法、装置、设备及存储介质 |
US11881935B2 (en) * | 2022-03-02 | 2024-01-23 | Arista Networks, Inc. | Reducing a network device upgrade outage using a reduced hardware resource scaling |
US11736385B1 (en) * | 2022-08-17 | 2023-08-22 | Juniper Networks, Inc. | Distributed flooding technique |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001010097A2 (en) * | 1999-07-30 | 2001-02-08 | Cabletron Systems, Inc. | Method and system for managing forwarding tables |
CN107294859A (zh) * | 2016-04-13 | 2017-10-24 | 中兴通讯股份有限公司 | 一种信息传递方法、装置及系统 |
CN107968750A (zh) * | 2016-10-20 | 2018-04-27 | 中兴通讯股份有限公司 | 报文传输方法、装置及节点 |
WO2018152019A1 (en) * | 2017-02-17 | 2018-08-23 | Cisco Technology, Inc. | System and method to facilitate content delivery to multiple recipients in a network environment |
CN108632678A (zh) * | 2017-03-22 | 2018-10-09 | 中兴通讯股份有限公司 | 一种数据传输方法、装置及系统 |
CN108696438A (zh) * | 2017-04-05 | 2018-10-23 | 中兴通讯股份有限公司 | Bier报文的转发方法及装置 |
US20190058606A1 (en) * | 2013-09-17 | 2019-02-21 | Cisco Technology, Inc. | Bit indexed explicit replication using multiprotocol label switching |
CN109660460A (zh) * | 2017-10-10 | 2019-04-19 | 中兴通讯股份有限公司 | Bier-te信息的处理方法、服务器及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456752C (zh) * | 2005-04-04 | 2009-01-28 | 华为技术有限公司 | 一种在快速生成树环网下实现组播的方法 |
US7835312B2 (en) * | 2005-07-20 | 2010-11-16 | Cisco Technology, Inc. | Method and apparatus for updating label-switched paths |
CN101064687B (zh) * | 2007-02-07 | 2011-09-21 | 中兴通讯股份有限公司 | 路由收敛的方法 |
CN100583827C (zh) * | 2007-05-17 | 2010-01-20 | 华为技术有限公司 | 一种多协议标签交换网络流量切换的方法及设备 |
CN104811387B (zh) * | 2014-01-24 | 2018-06-01 | 思科技术公司 | 具有位索引显式复制的等价多路径 |
US9832031B2 (en) * | 2014-10-24 | 2017-11-28 | Futurewei Technologies, Inc. | Bit index explicit replication forwarding using replication cache |
CN106572017B (zh) * | 2015-10-09 | 2021-06-15 | 中兴通讯股份有限公司 | Bier信息的发送方法、接收方法及装置 |
US10447496B2 (en) * | 2017-03-30 | 2019-10-15 | Cisco Technology, Inc. | Multicast traffic steering using tree identity in bit indexed explicit replication (BIER) |
-
2019
- 2019-07-05 CN CN201910606586.9A patent/CN112187647B/zh active Active
-
2020
- 2020-05-17 JP JP2021574996A patent/JP7322193B2/ja active Active
- 2020-05-17 EP EP20836741.7A patent/EP3979576A4/en active Pending
- 2020-05-17 KR KR1020227001349A patent/KR20220018065A/ko not_active Application Discontinuation
- 2020-05-17 WO PCT/CN2020/090726 patent/WO2021004156A1/zh unknown
-
2022
- 2022-01-04 US US17/646,963 patent/US20220131808A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001010097A2 (en) * | 1999-07-30 | 2001-02-08 | Cabletron Systems, Inc. | Method and system for managing forwarding tables |
US20190058606A1 (en) * | 2013-09-17 | 2019-02-21 | Cisco Technology, Inc. | Bit indexed explicit replication using multiprotocol label switching |
CN107294859A (zh) * | 2016-04-13 | 2017-10-24 | 中兴通讯股份有限公司 | 一种信息传递方法、装置及系统 |
CN107968750A (zh) * | 2016-10-20 | 2018-04-27 | 中兴通讯股份有限公司 | 报文传输方法、装置及节点 |
WO2018152019A1 (en) * | 2017-02-17 | 2018-08-23 | Cisco Technology, Inc. | System and method to facilitate content delivery to multiple recipients in a network environment |
CN108632678A (zh) * | 2017-03-22 | 2018-10-09 | 中兴通讯股份有限公司 | 一种数据传输方法、装置及系统 |
CN108696438A (zh) * | 2017-04-05 | 2018-10-23 | 中兴通讯股份有限公司 | Bier报文的转发方法及装置 |
CN109660460A (zh) * | 2017-10-10 | 2019-04-19 | 中兴通讯股份有限公司 | Bier-te信息的处理方法、服务器及存储介质 |
Non-Patent Citations (2)
Title |
---|
WOLFGANG BRAUN; MANUEL ALBERT; TOERLESS ECKERT等: "Performance comparison of resilience mechanisms for stateless multicast using BIER", 《2017 IFIP/IEEE SYMPOSIUM ON INTEGRATED NETWORK AND SERVICE MANAGEMENT (IM)》 * |
李丹,秦华: "SDN 网络 IPv6 组播机制研究", 《通信技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114915589A (zh) * | 2021-02-10 | 2022-08-16 | 华为技术有限公司 | 报文传输方法及装置 |
CN114915589B (zh) * | 2021-02-10 | 2024-06-04 | 华为技术有限公司 | 报文传输方法及装置 |
WO2024082617A1 (zh) * | 2022-10-17 | 2024-04-25 | 中兴通讯股份有限公司 | 转发表索引的通告方法、节点及存储介质 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
CN117255055B (zh) * | 2023-11-15 | 2024-02-23 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220131808A1 (en) | 2022-04-28 |
KR20220018065A (ko) | 2022-02-14 |
WO2021004156A1 (zh) | 2021-01-14 |
EP3979576A4 (en) | 2022-08-10 |
EP3979576A1 (en) | 2022-04-06 |
CN112187647B (zh) | 2021-12-14 |
JP7322193B2 (ja) | 2023-08-07 |
JP2022538809A (ja) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112187647B (zh) | 报文转发方法、设备及计算机可读存储介质 | |
US11533249B2 (en) | Route processing method and apparatus, and data transmission method and apparatus | |
US11310079B2 (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 | |
CN112929274A (zh) | 一种处理路由的方法、设备及系统 | |
US11477114B2 (en) | Packet forwarding method and apparatus | |
CN112737954B (zh) | 报文处理方法、装置、系统、设备及存储介质 | |
JP7053901B2 (ja) | ループ回避通信方法、ループ回避通信デバイスおよびループ回避通信システム | |
JP7124206B2 (ja) | パケット処理方法およびゲートウェイ・デバイス | |
US20220263760A1 (en) | Method, apparatus, and device for load balancing in bit index explicit replication network | |
WO2011055837A1 (ja) | ノード及びそれに用いる監視管理方法並びにそれを用いる転送システム、入力回路、出力回路 | |
WO2022083563A1 (zh) | 链路检测方法、链路检测装置、终端设备和存储介质 | |
US20220124033A1 (en) | Method for Controlling Traffic Forwarding, Device, and System | |
US11356372B2 (en) | Data traffic processing method, device, and system | |
EP4044523A1 (en) | Packet forwarding method, first network device, and first device group | |
US11799769B2 (en) | Packet processing method, apparatus, system, and device, and storage medium | |
WO2012159461A1 (zh) | 一种二层路径最大传输单元发现方法和节点 | |
WO2021244262A1 (zh) | 一种报文处理方法、设备及系统 | |
CN113132222B (zh) | 报文转发方法、设备及计算机可读存储介质 | |
WO2022222884A1 (zh) | 转发路径的故障感知方法、装置及系统 | |
US20240039829A1 (en) | Route refresh method, apparatus, and system | |
CN112491701B (zh) | 转发报文方法和装置 | |
JP2023535199A (ja) | P2mpツリー接続性検出方法、デバイス、およびシステム |
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 |