CN113746753A - BIERv6报文转发的方法、设备以及系统 - Google Patents
BIERv6报文转发的方法、设备以及系统 Download PDFInfo
- Publication number
- CN113746753A CN113746753A CN202010841652.3A CN202010841652A CN113746753A CN 113746753 A CN113746753 A CN 113746753A CN 202010841652 A CN202010841652 A CN 202010841652A CN 113746753 A CN113746753 A CN 113746753A
- Authority
- CN
- China
- Prior art keywords
- message
- bierv6
- network device
- forwarding
- bier
- 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.)
- Pending
Links
Images
Classifications
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种BIERv6报文转发的方法、设备以及系统,该方法包括:第一网络设备接收BIERv6报文,第一网络设备为位转发路由器BFR或位转发出口路由器BFER;第一网络设备确定BIERv6报文中hop limit字段的取值是否小于或等于第一网络设备上的预设阈值,其中,预设阈值为大于或等于2的数,是根据与第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,第二网络设备为不支持BIER转发的设备;当BIERv6报文中hop limit字段的取值小于或等于预设阈值时,第一网络设备避免转发BIERv6报文。本申请提供的技术方案可以避免大量的ICMPv6错误报文所造成的网络带宽的浪费及被攻击设备的带宽浪费,提升BIERv6报文转发的安全性。
Description
本申请要求于2020年5月30日提交中国专利局、申请号为CN 202010480456.8、发明名称为“一种组播报文转发方法、设备及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及网络通信领域,并且更具体地,涉及一种基于第六版互联网协议的位索引显式复制BIERv6报文转发的方法、第一网络设备以及系统。
背景技术
互联网协议第6版(internet protocol version 6,IPv6)报文在转发的过程中,如果Ipv6报文的外层IPv6头中hop limit字段的取值小于或等于1时,Ipv6报文不会往下游设备转发,而是向外层IPv6头的源地址发送互联网控制信息协议第6版本(internetcontrol managemet protocol version 6,ICMPv6)错误报文。
基于第六版互联网协议的位索引的显式复制(bit indexed explicitreplication internet protocol version 6,BIERv6)报文是BIER技术和IPv6的结合是一对多的发送过程,且BIERv6可以是单播报文。因此,如果攻击者伪造BIERv6报文使得其在一对多的发送过程中在多个节点上收到hop limit字段的取值小于或等于1的BIERv6报文,那么外层IPv6头的源地址将会收到多个甚至大量的ICMPv6错误报文。
因此,BIERv6的场景中,如何避免转发网络设备产生多个甚至大量的ICMPv6错误报文,提升BIERv6报文转发的安全性成为当前亟需要解决的问题。
发明内容
本申请提供一种BIERv6报文转发的方法、设备以及系统,可以避免大量的ICMPv6错误报文所造成的网络带宽的浪费及被攻击设备的带宽浪费,提升BIERv6报文转发的安全性。
第一方面,提供了一种BIERv6报文转发的方法,包括:第一网络设备接收基于第六版互联网协议的位索引的显式复制BIERv6报文,其中,所述BIERv6报文中包括跳数限制hoplimit字段,所述第一网络设备为位转发路由器BFR或位转发出口路由器BFER;所述第一网络设备确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值,其中,所述预设阈值为大于或等于2的数,所述预设阈值是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备;当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
应理解,第一网络设备避免转发所述BIERv6报文可以被认为是第一网络设备阻止所述BIERv6报文被发送到下一跳设备,或者,也可以被认为是第一网络设备跳过对所述BIERv6报文的转发。也就是说,第一网络设备不向所述第一网络设备的下一跳设备发送所述BIERv6报文。
上述技术方案中,可以在支持BIERv6转发的设备(第一网络设备)上配置一个大于或等于2的阈值,支持BIERv6转发的设备在对BIERv6报文进行BIER转发前检查报文的hoplimit小于或等于阈值时避免转发该BIERv6报文。这样,可以降低BIERv6报文发送给非BIERv6转发的设备时,由于BIERv6报文hop limit值为1或0而在其上产生ICMPv6错误报文的概率,从而可以提升BIERv6报文转发的安全性,避免大量的ICMPv6错误报文所造成的网络带宽的浪费及被攻击设备的带宽浪费。
在一种可能的实现方式中,所述方法还包括:所述第一网络设备丢弃所述BIERv6报文。
上述技术方案中,为了避免占用存储资源,第一网络设备还可以丢弃所述BIERv6报文。
在另一种可能的实现方式中,所述方法还包括:如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值且所述BIERv6报文的内层不是BIER OAM报文,所述第一网络设备丢弃所述BIERv6报文。
在另一种可能的实现方式中,所述方法还包括:当所述BIERv6报文中所述hoplimit字段的取值等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
在另一种可能的实现方式中,所述方法还包括:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
在另一种可能的实现方式中,所述BIERv6报文中包括比特串BitString,所述方法还包括:当所述第一网络设备确定所述BitString中的一个比特位有效,且所述比特位代表所述第一网络设备时,所述第一网络设备确定自己为所述BFER;或当所述第一网络设备确定所述BitString中的一个比特位有效,且所述比特位代表除所述第一网络设备之外的其他设备时,所述第一网络设备确定自己为所述BFR。
应理解,对于某个报文,BFER和BFR可以为不同的网络设备,或者也可以是相同的网络设备,本申请对此不做具体限定。也就是说,第一网络设备也可能同时作为某个报文的BFER和BFR。
在另一种可能的实现方式中,所述方法还包括:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,所述第一网络设备将所述BIERv6报文发送至所述第一网络设备的下一跳设备;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,所述第一网络设备对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
在另一种可能的实现方式中,所述第一网络设备为BIER域中的BFR或BFER。
第二方面,提供了一种第一网络设备,所述第一网络设备为位转发路由器BFR或位转发出口路由器BFER,所述第一网络设备包括:
接收模块,用于接收基于第六版互联网协议的位索引的显式复制BIERv6报文,其中,所述BIERv6报文中包括跳数限制hop limit字段;
处理模块,用于确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值,其中,所述预设阈值为大于或等于2的数,所述预设阈值是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备;
所述处理模块,还用于当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,避免转发所述BIERv6报文。
在一种可能的实现方式中,所述处理模块还用于:丢弃所述BIERv6报文。
在另一种可能的实现方式中,所述处理模块还用于:当所述BIERv6报文中所述hoplimit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文。
在另一种可能的实现方式中,所述处理模块还用于:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文。
在另一种可能的实现方式中,所述BIERv6报文中包括比特串BitString,所述处理模块还用于:当所述BitString中的一个比特位有效,且所述比特位代表所述第一网络设备时,确定自己为所述BFER;或当所述BitString中的一个比特位有效,且所述比特位代表除所述第一网络设备之外的其他设备时,确定自己为所述BFR。
在另一种可能的实现方式中,所述处理模块还用于:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,将所述BIERv6报文发送至所述第一网络设备的下一跳设备;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
在另一种可能的实现方式中,所述第一网络设备为BIER域中的BFR或BFER。
第二方面和第二方面的任意一个可能的实现方式的有益效果和第一方面以及第一方面的任意一个可能的实现方式的有益效果是对应的,对此,不再赘述。
第三方面,提供了一种第一网络设备,所述第一网络设备具有实现上述方法中第一网络设备行为的功能。所述功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,第一网络设备的结构中包括处理器和接口,所述处理器被配置为支持第一网络设备执行上述方法中相应的功能。所述接口用于支持第一网络设备接收BIERv6报文。
所述第一网络设备还可以包括存储器,所述存储器用于与处理器耦合,其保存第一网络设备必要的程序指令和数据。
在另一个可能的设计中,所述第一网络设备包括:处理器、发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行第一网络设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备进入正常运行状态。在第一网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供一种第一网络设备,所述第一网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述第一网络设备用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,所述第一网络设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的模块。
第五方面,提供一种第一网络设备,所述第一网络设备包括控制模块和第一转发子设备。所述第一转发子设备包括:接口板,进一步,还可以包括交换网板。所述第一转发子设备用于执行第四方面中的接口板的功能,进一步,还可以执行第四方面中交换网板的功能。所述控制模块中包括接收器、处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接接收器、发送器、随机存取存储器以及只读存储器。其中,当需要运行控制模块时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导控制模块进入正常运行状态。在控制模块进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第六方面中主控板的功能。
可以理解的是,在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。
第六方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种可能执行的方法。
第七方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种可能执行的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
第八方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过该数据接口读取存储器上存储的指令,以执行第一方面或第一方面任意一种可能的实现方式中的方法。在具体实现过程中,该芯片可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signal processing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。
第九方面,提供了一种系统,该系统包括上述第一网络设备。
附图说明
图1是本申请实施例提供的一种BIER技术的示意性组网图。
图2是本申请实施例提供的一种可能的BIER头格式的示意图。
图3是另一种可能的BIER头格式的示意性框图。
图4是一种基于BIER技术建立BIER转发表以及进行BIER报文转发的过程。
图5是本申请实施例提供的一种可能的BIERv6封装的报文格式示意图。
图6是本申请实施例提供的一种BIERv6转发的场景示意图。
图7是本申请实施例提供的另一种BIERv6转发的场景示意图。
图8是本申请实施例提供的一种BIERv6报文转发的方法的示意性流程图。
图9是本申请实施例提供的另一种BIERv6报文转发的方法的示意性流程图。
图10是本申请实施例提供的另一种BIERv6报文转发的方法的示意性流程图。
图11是本申请实施例提供的一种第一网络设备1100的示意性结构图。
图12是本申请实施例的第一网络设备2000的硬件结构示意图。
图13为本申请实施例的另一种第一网络设备2100的硬件结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
组播(multicast)是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于传输控制协议(transmission control protocol,TCP)/互联网协议(internetprotocol,IP)网络上的多个接收者的数据传输方式。组播源经由网络中的链路向组播组中的组播组成员发送组播流,该组播组中的组播组成员均可以接收到该组播流。组播传输方式实现了组播源和组播组成员之间的点对多点的数据连接。由于组播流在每条网络链路上只需传递一次,且只有在链路出现支路时,该组播才会被复制。因此,组播传输方式提高了数据传输效率和减少了骨干网络出现拥塞的可能性。
互联网协议(internet protocol,IP)组播技术实现了IP网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。因此,在实时数据传送、多媒体会议、数据拷贝、交互式网络电视(internet protocol television,IPTV)、游戏和仿真等诸多方面都有广泛的应用。该组播技术使用组播协议构建控制平面组播树,然后利用组播树将网络平面逻辑树状,以实现组播点到多点的数据转发。这种以构建分发树为核心的中间设备都需要维护复杂的组播转发信息状态。在网络规模越来越大,组播数据流量与日俱增的情况下,这种组播技术面临越来越大的成本和运维方面的挑战。
为此,业界提出了一种新的用于构建组播数据转发路径的技术,称为位索引的显式复制(bit index explicit replication,BIER)技术,该技术提出了一种不需要构建组播分发树的组播技术架构。如图1所示,支持BIER技术的路由器称为位转发路由器(Bit-forwarding router,BFR)。对用户组播数据报文进行BIER封装的BFR称为位转发入口路由器(bit forwarding ingress router,BFIR)。对从BIER报文中解封装出用户组播数据报文的BFR称为位转发出口路由器(bit forwarding egress router,BFER)。由上述一个或多个BFIR、一个或多个BFR以及一个或多个BFER组成的一个组播转发域称为BIER域(BIERdomain),其中,BFIR位于BIER域的入口位置,作为BIER报文转发的头节点负责对BIER报文进行封装;BFR位于BIER域的中间位置,作为BIER报文的中间转发节点负责对BIER报文进行转发;BFER位于BIER域的出口位置,作为BIER报文转发的尾节点负责对BIER报文进行解封装。
应理解,BIER域中的BFIR和BFER也可以称为BIER域中的边缘BFR。
可选的,在BIER域的中间位置,也可以包括不支持BIER报文转发的设备。不支持BIER报文转发的设备可以理解为该设备无法识别和解析BIER报文的BIER头部分,只是将BIER报文作为普通的报文进行转发。
为了便于理解,下面结合图2-图5,先对BIER的相关技术进行详细描述。
在BIER域中,可以对上述的边缘BFR配置一个在整个BIER子域(sub-domain,SD)中全局唯一的比特位置(bit position)标识。作为一个示例,为每一个边缘BFR配置一个值作为BFR标识(BFR identifier,BFR ID),例如,BFR ID可以是一个1-256之间的数值。BIER域中所有的BFR ID组成一个位串(bit string)。
本申请实施例中,需要用户组播数据报文在BIER域中传输时需要额外封装一个特定的BIER头。BIER头中通过bit string标注了该用户组播数据报文的所有目的设备。BIER域中的BFR可以根据位索引转发表(bit index forwarding table,BIFT)以及BIER头中携带的bit string进行转发,保证用户组播数据报文能够发送到所有的目的地址。
应理解,BIER头后面的用户组播数据报文可以是互联网协议第6版(internetprotocol version 6,IPv6)报文,或者可以是互联网协议第4版(internet protocolversion 4,IPv4)报文,或者还可以是BIER操作维护管理(operation administration andmaintenance,OAM)报文,本申请不做具体限定。
BIER封装的类型可以有多种,本申请不做具体限定。作为一个示例,可以通过多协议标签交换(multi-protocol label switching,MPLS)对BIER报文进行的封装,这种封装可以称为BIER-MPLS封装。作为另一个示例,可以基于互联网协议第6版(internetprotocol version 6,IPv6)对BIER报文进行的封装,这种封装可以称为BIERv6封装。
下面结合图2-图4,对BIER-MPLS封装的相关技术进行详细描述。
本申请实施例对上述BIER头的格式不做具体限定,只要BIER头中包含比特串(bitstring)字段即可。
为了便于理解,下面先结合图2-图3,对BIER头的格式进行详细描述。
图2是一种可能的BIER头格式的示意性框图。如图2所示,BIER头中可以包含但不限于:位索引转发表标识(bit index forwarding table identifier,BIFT ID)、比特串长度(bit string length,BSL)、其他字段。该其他字段可以包括但不限于:BIER头后面的用户组播数据报文的流量类型(traffic class,TC)、栈(stack,S)、生存时间(time to live,TTL)字段、熵(entropy)字段、版本号(version,Ver)字段、半字节(nibble)字段、协议(protocol,proto)字段、操作维护管理(operation administration and maintenance,OAM)字段、保留(reserve,Rsv)字段、差分服务代码点(differential service codepoints,DSCP)字段等。
下面对BIER头中的部分字段进行详细描述。
(1)BIFT ID字段
BIFT ID字段可以包括子域(sub-domain,SD)/比特串长度(bit string length,BSL)/集合标识(set identifier,SI)的一个组合,不同的BIFT ID可以对应于不同的SD/BSL/SI组合。
应理解,不同的BIFT ID可以映射出不同的SD/BSL/SI组合。在图2所示的BIER头格式中不直接包含SD/BSL/SI字段,SD/BSL/SI为三个隐式字段,需要根据BIFT ID字段映射出SD/BSL/SI取值。
1、子域(sub-domain,SD)
一个BIER域可以根据实际的业务场景的需求划分和配置为不同的子域SD,以支持内部网关协议(interior gateway protocol,IGP)多拓扑等特性。每个子域SD可以由子域标识(sub-domain identifier,SD-ID)来表示。例如,SD-ID的取值为[0-255],长度为8bit。
2、比特串长度(bit string length,BSL)
BSL为BIER头中包括的bit string的长度。BSL可以有多种,本申请实施例对此不做具体限定。最小的BSL为64位,BSL还依次可以有128位,256位,512位,1024位,2048位,最大的BSL为4096位。具体的,在报文中通过4bit来标识,例如,当BSL为64位时,报文中用0001标识,当BSL为128位时,报文中用0010标识,当BSL为512位时,报文中用0100标识,当BSL为1024位时,报文中用0101标识,依次类推。
3、集合标识(set identifier,SI)
如果网络中BFER设备的数量大于256,为了适应这种情况,BIER封装中不仅包含一个BitString,还会包含有一个集合标识(set identifier,SI)。SI的作用在于将BIER设备的编号划分为多个不同的区间,从而支持更大规模的网络编址。
SI可以理解为网络中的多个边缘BFR或配置的BFR ID组成的集合。作为一个示例,BSL为256bit,但是网络中有超过256个边缘BFR,或者配置的BFR ID有超过256个,则需要将这些边缘BFR或BFR ID划分为不同的集合。例如,BFR ID为1至256的256个边缘BFR为集合0(set index0,或SI=0),BFR ID为257至512的256个边缘BFR为集合1(set index 1,或者SI=1)。
BIER域中的BFR在接收到了BIER报文之后,可以根据BIER头中的BIFT ID确定该BIER报文属于哪个SD,使用的BSL以及报文属于该BSL的哪个SI组成的集合。
需要说明的是,BIFT ID字段值和和一个<SD,BSL,SI>的三元组对应。通过BIFT-id字段,可以获得唯一的<SD,BSL,SI>信息。它有如下作用:通过BSL获取BIER报文头的BitString的长度,从而知道整个BIER报文头的长度;通过BSL及SI信息可知BitString代表的是BFR-ID是1~256还是257~512等;通过SD信息即可找到对应的转发表。
(2)比特串(bit string)字段
bit string中的每个bit用来标识边缘BFR,例如bit string的低位(最右)的一个bit用来标识BFR-ID=1的BFER。bit string中从右往左第2个Bit用来标识BFR-ID=2的BFER。转发面转发所依据的转发表项则是根据报文中的bit string决定该报文要往哪几个BFER发送。当BIER域中的BFR在接收到了包含有BIER的报文头时,根据BIER头中携带的bitstring以及BIFT ID转发BIER报文。
需要说明的是,bit位的值为1表示报文要往该BFR-ID所代表的BFER设备发送,bit位的值为0则表示报文不需要往该BFR-ID所代表的BFER设备发送。
以BIFT ID=2为例,BFR在接收到了BIER报文之后,可以根据该BIER头中的BIFTID获取该BIER报文属于SD 0,BIER头中使用的BSL为256bit,属于集合1(包括BFR ID为257至512的256个边缘BFR的集合)。
(3)协议(protocol,proto)字段
用来标识或区分BIER报文头后面的负载(payload)。作为示例,proto字段可以区分BIER报文头后面的payload是互联网协议第6版(internet protocol version 6,IPv6)组播报文,或者还是互联网协议第4版(internet protocol version 4,IPv4)组播报文,或者还是BIER OAM报文。
一种可能的实现方式中,可以通过BIER头中proto字段的取值来区分payload的报文类型。例如,proto字段的取值为5(proto=5)表示BIER报文头后面是BIER OAM报文,而proto字段的取值不等于5(proto!=5)则表示BIER报文头后面是IPv4/Ipv6报文。
图3是另一种可能的BIER头格式的示意性框图。相比较图2所示的BIER头格式而言,图3所示的BIER头格式中不包含BIFT-ID字段,而显示包含SD/BSL/SI三个字段。也就是说,图3所示的BIER头格式中直接包含SD/BSL/SI三个字段,而无需由BIFT ID字段映射出SD/BSL/SI取值。
下面以图4为例,对基于BIER技术建立BIER转发表以及进行BIER报文转发的过程进行详细描述。
如图4所示的BIER域中可以包括设备A至设备F,其中,设备A、设备D、设备E、设备F属于BIER域内的边缘BFR,设备B、设备C属于BIER中间转发设备。具体的,设备A位于BIER域的入口,负责对用户组播数据报文进行BIER封装,对应于图1中的BFIR。设备D、设备E、设备F位于BIER域的出口,负责从BIER报文中解封装出用户组播数据报文,对应于图1中的BFER。
本申请实施例中可以为每一个BIER域内的边缘BFR分配一个唯一的BFR-ID,例如,在图4中,为设备A、设备D、设备E、设备F配置的BFR-ID分别为4、1、3、2。中间转发的BFR,例如,设备B、设备C不分配BFR-ID。
需要说明的是,本申请实施例中,“ID”和“id”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。其中,本申请中的BFR-ID可以指图4中的id。
数据流量的BIER头中封装的bit string标注了该流量的所有目的设备。例如,对于BFR-ID为1的设备D对应的bit string为0001,BFR-ID为2的设备F对应的bit string为0010,BFR-ID为3的设备E对应的bit string为0100,BFR-ID为4的设备A对应的bit string为1000。
应理解,为每一个BIER域内的边缘BFR分配的BFR-ID值可以通过路由协议向BIER域内的其他BFR进行泛洪,泛洪的BIER信息中还包括边缘BFR的IP地址、封装信息。例如设备A的泛洪的BIER信息会携带设备A的IP地址以及BIFT-id。BIER域内的BFR(例如,图4中的设备F)可以根据泛洪的BIER信息建立BIFT表项,以便于图4中的设备F接收到BIER报文之后,根据建立的BIFT表项来完成BIER报文到目的设备的转发。
对于设备A而言,如果需要将BIER报文发送至BFR-ID分别为1、2、3的BFER,该BIER报文需要先发送至设备A的邻居(设备B),BFR-ID为4的边缘BFR为其自己,因此,设备A建立的BIFT表项如下所示:
转发表项1:邻居(neighbor,Nbr)=B,转发位掩码(forwarding bit mask,FBM)=0111;
转发表项2:Nbr*=A,FBM=1000。
其中,转发表项1用于表示当有BIER报文的bit string从右往左第1个bit位、第2个bit位、第3个bit位任意一个为1时,该BIER报文会往设备A的邻居(设备B)发送,Nbr=B表示设备A的邻居为设备B。
转发表项2用于表示当有BIER报文的bit string从右往左第4个bit位为1时,该BIER报文会往设备A发送。由于设备A是自己,因此,设备A会剥掉BIER头,按照用户组播数据报文中的信息进行转发。需要说明的是,上述转发表项2中使用*标识该Nbr为自己,例如,对于设备A而言,Nbr*=A表示设备A的邻居设备为自己。同样地,图4中的其他设备也可以根据其自己的邻居设备建立BIFT表项。其他设备建立的BIFT表项请参见图4,此处不再赘述。
当设备A作为BIER域入口的BFIR收到用户组播数据报文后,在用户组播数据报文前封装BIER头。应理解,为了便于描述,下文中简称为入口设备A。作为一个示例,入口设备A可以在接收到用户组播数据报文后,根据边界网关协议BGP消息发布的用户组播源组信息和BFR-id的对应关系信息获知该用户组播数据报文的目的设备。例如,用户组播数据报文的接收者为BFR-ID为3的目的设备为E、BFR-ID为2的目的设备为F、BFR-ID为1的目的设备为D。入口设备A封装BIER头的bit string为0111,并根据上述转发表项1将封装之后的BIER报文转发到邻居设备B。设备B收到该BIER报文后,根据bit string为0111以及BIFT表项确定需要将该BIER报文分别发送至设备C和设备E。设备B将该BIER报文往设备C发送时,可以将BIER头的bit string(0111)以及BIFT表项里Nbr=C对应的FBM字段做AND操作,本申请实施例中AND的结果是0011,因此,设备B可以将BIER头的bit string修改为0011,并发送至设备C。同样地,设备B将该BIER报文往设备E发送时,可以将BIER头的bit string修改为0100。设备E收到该BIER报文后,根据bit string为0100确定该BIER报文要往邻居设备E发送。由于设备E根据转发表中的标识*确定邻居设备E为自己,因此设备E作为BIER域出口的BFER,可以从BIER报文中解封装出用户组播数据报文,并根据内层的用户组播数据报文中的信息进行转发。
下面结合图5,对BIERv6封装的相关技术进行详细描述。
图5是一种可能的BIERv6封装的示意性框图。参见图5,封装的IPv6报文的格式可以是:IPv6头+IPv6扩展头(包含BIER头)+用户组播数据报文。在这种封装下,IPv6头和包含BIER头的IPv6扩展头共同构成了IPv6报文的外层报文头,本申请实施例中也可以称之为BIERv6头。
本申请实施例对包含BIER头的IPv6扩展头不做具体限定。例如,该IPv6扩展头可以是目的选项头(destination option header,DOH),又如,该IPv6扩展头还可以是路由头(routing header,RH)。
下面对外层IPv6头中包含的部分字段进行详细描述。
跳数限制(hop limit,HL)字段:表示报文可以有效转发的次数。报文每经过一个路由器,跳数值就减1。当此字段的取值小于或等于1时,路由器将不会往下游设备转发报文。
源地址(source address,SA)字段:标识发送报文的源节点地址。
目的地址(destination address,DA)字段:标识接收报文的目的节点地址。
其中,DA字段将不断的更新为下一跳的IP地址。以图4所示的BIER域为例。设备A作为Ipv6网络的头节点(ingress设备),收到用户组播数据报文后,将报文封装在BIERv6头后,即由一个外层Ipv6头和包含BIER头的Ipv6扩展头之后,得到封装后的BIERv6报文。
其中,Ipv6扩展头中包含的BIER报文头携带表示目的设备集合的bit string。设备A根据BIER报文头及其bit string信息,将封装后的BIERv6报文发送给B,发送时IPv6头中的目的地址字段中可以使用B的单播地址(例如,B::100)。设备B根据BIER报文头及其bitstring信息,将报文发送给C和E,发送时IPv6头中的目的地址字段中可以使用C的单播地址(例如,C::100)以及E的单播地址(例如,E::100)。同样的,设备C根据BIER报文头及其bitstring信息,将报文发送给D和F,发送时IPv6头中的目的地址字段中可以使用D的单播地址(例如,D::100)以及F的单播地址(例如,D::100)。
对于Ipv6报文而言,BIER域的中间设备(路由器或具有路由器功能的交换机)在进行Ipv6报文转发的过程中,如果Ipv6报文的外层IPv6头中hop limit字段的取值小于或等于1时,Ipv6报文不会往下游设备转发,上述中间设备会向外层IPv6头的源地址发送互联网控制信息协议第6版本(internet control managemet protocol version 6,ICMPv6)错误报文。
IPv6的报文转发面临的一个安全威胁是,攻击者可能会伪造一个IPv6报文,将IPv6源地址填写为被攻击者(例如一台计算机主机或者一个路由器)的IPv6地址,将IPv6头的hop limit字段填写为一个较小的值。这样,当IPv6报文被转发到中间设备时,这些中间设备因为hop limit的值小于或等于1而向被攻击者(主机或路由器)发送ICMPv6错误报文。
BIERv6报文是BIER技术和IPv6的结合,是一对多的发送过程,且BIERv6可以是单播报文。因此,伪造一个BIERv6报文可造成多个中间设备都向被攻击者发送ICMPv6错误报文,这样会形成放大的攻击效果。如果网络中存在不支持BIERv6转发的普通IPv6设备,且该设备在控制面和转发面均无法识别和解析BIERv6报文的BIER头,也就无法区分接收到的报文是普通的IPv6报文和BIERv6报文。该设备在报文的hop limit取值小于或等于1时均会发送ICMPv6错误报文。多个不支持BIERv6转发的普通IPv6设备的存在还会进一步的放大攻击效果。
以图6所示的场景为例。该场景的中间设备可以包括不支持BIERv6转发的设备。也就是说,中间设备包括支持BIERv6转发的设备(例如,BFR2、BFR3、BFR4)以及不支持BIERv6转发的设备(例如,R5)。
应理解,支持BIERv6转发的设备(BFR)是指该设备可以识别和解析BIERv6报文的外层IPv6头中的BIER头。支持BIERv6转发的设备(BFR)会实际参与BIERv6报文的转发,其参与BIERv6报文转发时收到的报文目的地址是设备自己。
还应理解,不支持BIERv6转发的设备可以是不支持BIERv6转发的普通IPv6设备(Non-BFR),该设备不可以识别和解析BIERv6报文的外层IPv6头中的BIER头。
需要说明的是,不支持BIERv6转发的设备(Non-BFR)不会实际参与BIERv6报文的转发,其收到的报文目的地址不是设备自己。另外还存在一种情况就是把支持BIERv6转发的设备当做Non-BFR设备使用,例如通过静态配置BIER的路由和转发的下一跳经过或穿越通过某一个设备。本申请所述的Non-BFR或不支持BIERv6转发的设备也包含这种设备,其特征是,虽然设备有能力识别BIER头、但设备收到的报文目的地址不是自己因此并不会使用BIER头进行显式复制、其在收到hop-limit小于或等于0的报文时可能也会发送ICMPv6错误报文。
BFR1接收到BIERv6报文,这个BIERv6报文可能是攻击者构造出的BIERv6报文(例如将报文外层Ipv6头中的源地址填写为被攻击者的地址),也可能是正常的路由器如BFIR因为错误配置或错误实现而发出的(报文外层Ipv6头中的源地址为BFIR的地址),本申请对此不做具体限定。
假如BFR1收到的BIERv6报文目的地址为单播地址且外层Ipv6头中的hop limit=3,BIERv6报文中的BitString包含了BFER6和BFER7所对应的有效Bit位。一个示例,报文沿着BFR1->BFR2->BFR4路径到达BFR4时,其外层Ipv6头中的hop limit为1。对于BFR4而言,其收到的BIERv6报文是单播报文,按照对于单播报文转发的要求,BFR4不再转发此报文,同时BFR4还会发送ICMPv6错误报文,该ICMPv6错误报文会被发送给报文源地址(被攻击者或者BFIR)。另一个示例,报文沿着BFR1->BFR3路径到达BFR3时,其外层Ipv6头中的hop limit为2,BFR3会沿着BFR3->R5->BFER7发送。其中,报文目的地址为BFER7但会经过R5,R5无法区分接收到的报文是普通的IPv6报文和BIERv6报文,均会被当做单播报文,根据单播报文转发的要求,R5不会再转发此报文,同时还会发送ICMPv6错误报文,该ICMPv6错误报文会被发送给报文源地址(被攻击者或者BFIR)。
因此,在BIERv6的场景中,如何避免转发BIERv6报文的网络设备产生大量的ICMPv6错误报文,提升报文转发的安全性成为当前亟需要解决的问题。
一种相关的技术方案中,在BIERv6的场景中,为了避免产生大量的ICMPv6错误报文,要求各BFR设备实现对ICMPv6错误报文的限速,丢弃超过速率限制的报文,从而减小多个中间设备向同一个头节点(ingress设备)发送大量的ICMPv6错误报文。
在上述相关的技术方案中,如果攻击者通过构造特定的hop limit值的BIERv6报文,可能造成中间节点收到hop limit值为1或0的报文而发送ICMPv6错误报文发送给被攻击者,而被攻击者还可以是一个没有实现ICMPv6限速的设备,从而被攻击。即使被攻击者是一个做了ICMPv6限速的设备,这种ICMPv6错误报文仍然会造成网络带宽及被攻击设备的带宽浪费。
有鉴于此,本申请实施例提供了一种BIERv6报文转发的方法,可以在支持BIERv6转发的设备上配置一个大于或等于2的阈值,支持BIERv6转发的设备在对BIERv6报文进行BIER转发前检查报文的hop limit小于或等于阈值时避免转发该BIERv6报文。这样,可以降低BIERv6报文发送给非BIERv6转发的设备时,由于BIERv6报文hop limit值为1或0而在其上产生ICMPv6错误报文的概率,从而可以提升BIERv6报文转发的安全性,避免大量的ICMPv6错误报文所造成的网络带宽的浪费及被攻击设备的带宽浪费。
应理解,本申请中避免转发所述BIERv6报文可以被认为是阻止所述BIERv6报文被发送到下一跳设备,或者,也可以被认为是跳过对所述BIERv6报文的转发。也就是说,避免转发所述BIERv6报文可以被理解为不向下一跳设备发送所述BIERv6报文。
需要说明的是,可以在网络中的一个或多个甚至全部的BIERv6路由器上分别配置hop limit的阈值,作为示例,网络管理员可以在一个或多个甚至全部的BIERv6路由器上分别配置hop limit的阈值。这些阈值可以相同或者不同,本申请实施例对此不做具体限定。
下面结合图8,对本申请实施例提供的一种BIERv6报文转发的方法进行详细描述。
图8是本申请实施例提供的一种BIERv6报文转发的方法的示意性流程图。如图8所示,该方法可以包括步骤810-830,下面分别对步骤810-830进行详细描述。
步骤810:第一网络设备接收BIERv6报文。
本申请实施例中的第一网络设备可以是图1所示的BFR或BFER。作为示例,可以是BIER域中的BFR或BFER。具体的有关BIER域以及BFR、BFER的描述,请参考上文图1中的说明,此处不再赘述。
步骤820:第一网络设备确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值。
第一网络设备上配置的预设阈值为大于或等于2的数,该预设阈值可以是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备。应理解,预设阈值也可以称为hop limit阈值。
作为示例,可以在连接有不支持BIER转发的第一网络设备上配置hop limit阈值,其阈值的取值不小于连续的不支持BIER转发的设备个数加1。下面对确定第一网络设备上配置的预设阈值的具体实现方法进行详细描述。
以图6所示的场景为例,R5为不支持BIER转发的设备。BFR3和BFER7都和不支持BIER转发的设备(R5)有连接,且BFR3和BFER7上连接的不支持BIER转发的设备数量为1,因此,可以将BFR3和BFER7上的预设阈值设置为不小于2的数。
以图7所示的场景为例,R5、R6、R7均为不支持BIER转发的设备。BFR3和BFER7都和都和不支持BIER转发的设备(R5、R6、R7)有连接,且BFR3和BFER7上连接的不支持BIER转发的设备数量为3,因此,可以将BFR3和BFER7上的预设阈值设置为不小于4的数。
步骤830:当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
应理解,第一网络设备避免转发所述BIERv6报文可以被认为是第一网络设备阻止所述BIERv6报文被发送到下一跳设备,或者,也可以被认为是第一网络设备跳过对所述BIERv6报文的转发。也就是说,第一网络设备不向所述第一网络设备的下一跳设备发送所述BIERv6报文。
上述技术方案中,可以在支持BIERv6转发的设备(第一网络设备)上配置一个大于或等于2的阈值,支持BIERv6转发的设备在对BIERv6报文进行BIER转发前检查报文的hoplimit小于或等于阈值时避免转发该BIERv6报文。这样,可以降低BIERv6报文发送给非BIERv6转发的设备时,由于BIERv6报文hop limit值为1或0而在其上产生ICMPv6错误报文的概率,从而可以提升BIERv6报文转发的安全性,避免大量的ICMPv6错误报文所造成的网络带宽的浪费及被攻击设备的带宽浪费。
可选地,在一些实施例中,在第一网络设备避免转发所述BIERv6报文后,第一网络设备还可以丢弃所述BIERv6报文。
可选地,在一些实施例中,第一网络设备确定所述BIERv6报文中hop limit字段的取值不小于第一网络设备上的预设阈值,下面对这种情况下第一网络设备对BIERv6报文的处理过程进行详细描述。
一种示例,BIERv6报文中hop limit字段的取值等于所述预设阈值。一种可能的实现方式中,无论第一网络设备为BFR还是BFER,第一网络设备避免转发所述BIERv6报文。另一种可能的实现方式中,当第一网络设备确定自己为BFR时,第一网络设备避免转发所述BIERv6报文;或者,当第一网络设备确定自己为BFER,第一网络设备对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
另一种示例,BIERv6报文中hop limit字段的取值大于所述预设阈值。例如,第一网络设备为BFR,第一网络设备将所述BIERv6报文发送至所述第一网络设备的下一跳设备。又如,第一网络设备为BFER,第一网络设备对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
下面以图6所示的场景为例,结合图9,对本申请实施例中的设备进行BIERv6报文转发的另一种具体实现过程进行详细描述。
应理解,图9的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图9的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图9是本申请实施例提供的另一种BIERv6报文转发的方法的示意性流程图。如图9所示,该方法可以包括步骤910-970,下面分别对步骤910-970进行详细描述。
步骤910:网络中的设备接收BFIR发送的BIERv6报文。
BFIR可以对接收到的用户组播数据报文进行BIERv6封装,得到BIERv6报文,并将BIERv6报文发送给网络中的设备。BIERv6报文可以是携带外层IPv6头、Ipv6扩展头(扩展头中携带BIER头)以及Payload,其中,Payload可以是一个内层IPv4/IPv6组播数据报文或者BIER OAM报文。
IPv4/IPv6组播数据报文或者BIER OAM报文可以通过BIER头中proto字段的取值来区分,例如,proto字段的取值为5(proto=5)表示BIER报文头后面是BIER OAM报文,而proto字段的取值不等于5(proto!=5)则表示BIER报文头后面是IPv4/Ipv6报文。具体的请参见图2中的描述,此处不再赘述。
需要说明的是,上述网络中的设备为BIERv6路由器。作为示例,该设备可以是BIER域中的BFR(例如,图6中的BFR2、BFR3、BFR4),或者也可以是BFER(例如,图6中的BFER6、BFER7),本申请对此不做具体限定。
步骤920:上述设备确定接收到的报文是BIERv6报文,且报文中的目的地址为本机地址。
上述设备在接收到报文后,可以对收到的报文目的地址进行转发信息库(forwardinformation database,FIB)查表,获知报文目的地址为本机地址。
上述设备确定接收到的报文是BIERv6报文的实现方式有多种。一种可能的实现方式中,该设备获知报文目的地址为本机地址,而且可以获知目的地址是一个位索引的显式复制的端点(endpoint for bit index explicit replication,End.BIER)地址的指示信息,因此,可以确定接收到的报文是BIERv6报文。另一种可能的实现方式中,也可以根据这个指示信息进一步确定IPv6扩展头中是否包含BIER头,如果IPv6扩展头中包含BIER头,可以确定接收到的报文是BIERv6报文。另一种可能的实现方式中,也可不根据这个指示信息而直接检查IPv6扩展头里是否包含BIER头,如果IPv6扩展头中包含BIER头,可以确定接收到的报文是BIERv6报文。
步骤930:上述设备检查外层Ipv6头中的hop limit是否小于预设阈值。
如果外层Ipv6头中的hop limit小于预设阈值,可以执行步骤940。
如果外层Ipv6头中的hop limit大于或等于预设阈值,可以执行步骤950。
应理解,本申请实施例中,各个设备上设置的预设阈值可以相同,也可以不同。预设阈值可以通过配置或者,也可以默认。作为示例,在BFR设备上,可以默认预设阈值为2,在BFER设备上,可以默认预设阈值1。
步骤940:上述设备丢弃接收到的报文,并结束处理。
步骤950:上述设备确定报文的BIER头中的TTL字段的取值是否小于1。
如果BIER头中的TTL字段的取值小于1,例如,TTL字段的取为0,执行步骤960。
如果BIER头中的TTL字段的取值大于或等于1,执行步骤970。
步骤960:上述设备将报文上送至控制面进行处理。
应理解,在路由器或交换机中,通常有“转发面”和“控制面”。转发面过程是报文从一个路由器的接口收到、往一个或多个接口发送的过程。通常由转发专用芯片或芯片组合完成。“控制面”则包括“通用中央处理器(central processing unit,CPU)”芯片或芯片组。当转发面发现报文的TTL字段的取值小于1,可以将该报文上送至控制面进行处理。
作为示例,控制面可以判断报文的类型并进行不同的处理,例如可通过BIER头的proto字段进行判断报文的类型,并根据报文的类型进行相应的处理。下面对几种可能的实现方式进行详细描述。
一种可能的实现方式中,如果报文不是BIER OAM报文,或者如果判断报文是组播数据报文,则丢弃报文,结束处理。
另一种可能的实现方式中,如果报文是BIER OAM报文,报文后续由控制面进行处理,其处理方式可以是根据BIER OAM的协议进行处理。例如,检查BIER OAM报文为EchoRequest类型文、相应发送BIER OAM的Echo Reply给报文的外层Ipv6头的源地址。
步骤970:上述设备遍历BIERv6报文的BIER头中的BitString。
应理解,本实施例中,对于hop limit大于或等于预设阈值,或者TTL字段的取值大于或等于1的情况,还需要进一步确定该设备是BFR还是BFER。
具体的,作为一个示例,设备可以遍历BIERv6报文的BIER头中的BitString,当遍历到BIER头的BitString某一个Bit有效(例如,该Bit的值为1),且该Bit代表本节点时,该设备可以确定自己是BFER。
作为另一个示例,如果遍历到BIER头的BitString某一个Bit有效(例如,该Bit的值为1),且该Bit为代表非本节点的其他节点时,该设备可以确定自己是BFR。
下面以上述设备为BFER为例说明详细描述。
对于外层Ipv6头中的hop limit大于或等于预设阈值的BIERv6报文,或者BIER头中TTL字段的取值大于或等于1的BIERv6报文,可以进一步判断BIERv6报文内层的数据报文的类型。作为示例,该设备可以在数据面确定报文的类型,例如可通过BIER头的proto字段进行判断报文的类型,具体的判断请参考上文中的描述,此处不再赘述。
一种可能的实现方式中,如果报文不是BIER OAM报文,则弹出外层Ipv6头及Ipv6扩展头,并根据内层组播数据报文进行后续的转发。应理解,这种对于hop limit等于阈值的BIERv6报文进行转发的情况,BFER可以工作在一种“Pipe”模式。在这种“Pipe”模式下,外层IPv6头中的hop limit值不会被拷贝到内层IPv6用户组播报文的hop limit字段或内层IPv4组播报文的TTL字段中并进一步减一。
另一种可能的实现方式中,如果报文不是BIER OAM报文且外层Ipv6头中的hoplimit大于预设阈值时则弹出外层Ipv6头及Ipv6;如果报文不是BIER OAM报文且外层Ipv6头中的hop limit等于预设阈值时则丢弃接收到的报文,并结束处理。这种对于hop limit等于阈值的BIERv6报文进行丢弃的情况,可以是BFER节点工作在一种“Uniform”模式下的情况。在这种“Uniform”模式下,外层IPv6头中的hop limit值会被拷贝到内层IPv6用户组播报文的hop limit字段或内层IPv4组播报文的TTL字段中并进一步减一。
另一种可能的实现方式中,如果报文是BIER OAM报文,报文后续由控制面进行处理,其处理方式可以是根据BIER OAM的协议进行处理。例如,检查BIER OAM报文为EchoRequest类型文、相应发送BIER OAM的Echo Reply给报文的外层Ipv6头的源地址。
下面以上述设备为BFR为例说明详细描述。
当设备为BFR,其可以获取到达其他节点的下一跳信息,比如出接口、下一跳的MAC地址等。对于hop limit大于预设阈值的或者TTL字段的取值大于1的BIERv6报文,该设备可以将BIERv6报文复制一份,将复制的BIERv6报文外层Ipv6头的hop limit值减1、BIER头的TTL值减1,并根据获取的到达其他节点的下一跳信息,将复制的BIERv6报文往下一跳进行发送。
对于hop limit等于预设阈值的BIERv6报文,该设备可以丢弃,结束处理。
对于TTL字段的取值等于1的BIERv6报文,可以判断报文的类型并进行不同的处理,例如可通过BIER头的proto字段进行判断报文的类型,并根据报文的类型进行相应的处理。一种可能的实现方式中,如果报文不是BIER OAM报文,或者如果判断报文是组播数据报文,则丢弃报文,结束处理。另一种可能的实现方式中,如果报文是BIER OAM报文,报文后续由控制面进行处理,其处理方式可以是根据BIER OAM的协议进行处理。例如,检查BIER OAM报文为Echo Request类型文、相应发送BIER OAM的Echo Reply给报文的外层Ipv6头的源地址。
下面以图6所示的场景为例,对BIERv6报文的内层数据报文为IPv4/Ipv6报文为例,对网络中的BIERv6路由器(例如,BFR或BFER)根据图9所示的方法对报文的处理情况进行说明。应理解,在下述实施例中,假设BFR上的hop limit阈值为2,BFER上的hop limit阈值为1。
一个示例,当BFR3收到BIERv6报文封装的组播数据报文,外层Ipv6头中的hoplimit值为2,BIER头中的TTL值为1,BitString包含BFER7节点。处理结果:BFR3丢弃报文。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,外层Ipv6头中的hop limit值为3,BIER头中的TTL值为1,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文外层Ipv6头中的目的地址为BFER7的IP地址、外层Ipv6头中的hop limit为2、BIER头中的TTL为0;R5收到BIERv6报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为1、TTL为0;BFER7收到该BIERv6报文后,根据上述报文转发的方法丢弃报文,结束处理。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,hop limit值为3,TTL值为2,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为2、TTL为1;R5收到报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为1、TTL为1;BFER7收到该BIERv6报文后,根据上述报文转发的方法,会解封装BIERv6头部并按照内层组播数据报文进行转发。
因此,对于正常的使用较大的hop limit值和TTL值,数据报文可以正常转发到尾节点(例如,BFER7)并进行转发。但如果使用了较小的hop limit值则可能在BFR3上丢弃报文、从而避免报文被发送给R5产生hop limit=1的情况,从而产生ICMPv6错误报文而造成攻击风险。当然不合理的TTL值也会造成报文无法到达最终的BFER或在BFER上无法进行正常转发。
所以,对于正常的组播数据报文通过BIERv6进行封装发送时,可以选取合适的hoplimit值和TTL值。例如在图6所示的网络拓扑下,可以选择使用hop limit和TTL都为32,使得数据报文可以正常转发到BFER并进行转发。但对于图6中网络攻击者所特意构造的hoplimit=3,TTL=3的BIERv6报文,通过本方法就可以在BIERv6报文到达R5之前将其丢弃,从而避免报文被发送给R5时在R5上产生ICMPv6错误报文而产生攻击。
下面以图6所示的场景为例,对BIERv6报文的内层数据报文为BIER OAM报文为例,对网络中的BIERv6路由器(例如,BFR或BFER)根据图9所示的方法对报文的处理情况进行说明。应理解,在下述实施例中,假设BFR上的hop limit阈值为2,BFER上的hop limit阈值为1。
一种可能的实现方式中,以BIER的Trace检测为例,设从BFIR依次发送BIER TTL=1/2/3的报文,各报文均使用hop limit=127,有如下的处理过程。
一个示例,对第1个OAM报文,BFIR发出时报文携带TTL=1、hop limit=127。BFR1收到后上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第2个OAM报文,BFIR发出时报文携带TTL=2、hop limit=127。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=1、hop limit=126。BFR3收到报文时上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第3个OAM报文,BFIR发出时报文携带TTL=3、hop limit=127。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=2、hop limi=126。BFR3收到报文后发送给R5,R5接收到的报文的TTL=1、hop limit=125。R5收到报文后发送给BFER7,BFER7接收到的报文的TTL=1、hop limit=124),BFER7将报文上送控制面并由控制面发送EchoReply的OAM报文。
BIER Trace检测用于对网络中的各个设备进行逐跳检测,可见,在BIER Trace检测过程中使用了较大的hop limit值,每个BFR/BFER都可以被探测到。
另一种可能的实现方式中,以BIER的Trace检测为例,设从BFIR依次发送BIER TTL=1/2/3的报文,各报文均使用hop limit=3,有如下的处理过程。
一个示例,对第1个OAM报文,BFIR发出时报文携带TTL=1、hop limit=3。BFR1收到后上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第2个OAM报文,BFIR发出时报文携带TTL=2、hop limit=3。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=1、hop limit=2。BFR3收到报文时会丢弃报文、不发送Echo Reply报文。
另一个示例,对第3个OAM报文,BFIR发出时报文携带TTL=3、hop limit=3。BFR1BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=2、hop limit=2。BFR3收到报文时会丢弃报文、不发送Echo Reply报文。
可见,在BIER Trace检测过程中使用了较小的hop limit值,部分BFR/BFER无法被探测到。
因此,在BIER Trace检测过程中可以选取合适的hop limit值,使得每个BFR/BFER都可以被探测到。
在一些实施例中,以hop limit阈值为2作为示例,对于hop limit值等于阈值,或者TTL字段的取值等于1的情况,BFER和BFR的处理方式不同,因此,在接收到BIERv6报文时判断一次hop limit值或TTL字段的取值,在遍历BitString后,还需要再判断一次hoplimit值或TTL字段的取值。为了避免上述情况,不在BitString的遍历中对hop limit和TTL进行重复判断(用以区分BFR的处理和BFER的处理),而是在开始BitString遍历之前统一判断。下面结合图10,对这种实现方式进行详细描述。
图10是本申请实施例提供的另一种BIERv6报文转发的方法的示意性流程图。如图10所示,该方法可以包括步骤1010-1070,下面分别对步骤1010-1070进行详细描述。
步骤1010:网络中的设备接收BFIR发送的BIERv6报文。
与步骤910对应,具体的请参见步骤910中的描述,此处不再赘述。
步骤1020:上述设备确定接收到的报文是BIERv6报文,且报文中的目的地址为本机地址。
与步骤920对应,具体的请参见步骤920中的描述,此处不再赘述。
步骤1030:上述设备检查外层Ipv6头中的hop limit是否小于或等于预设阈值。
如果外层Ipv6头中的hop limit小于或等于预设阈值,可以执行步骤1040。
如果外层Ipv6头中的hop limit大于预设阈值,可以执行步骤1050。
步骤1040:上述设备丢弃接收到的报文,并结束处理。
应理解,步骤1040中是在区分设备为BFR或BFER之前,丢弃接收到的报文,并结束处理。也就是说,步骤1040中是提前丢弃接收到的报文。而在步骤970中是确定设备为BFER后,如果报文不是BIER OAM报文且外层Ipv6头中的hop limit等于预设阈值时则丢弃接收到的报文,并结束处理。
步骤1050:上述设备确定报文的BIER头中的TTL字段的取值是否小于或等于1。
如果BIER头中的TTL字段的取值小于或等于1,执行步骤1060。
如果BIER头中的TTL字段的取值大于1,执行步骤1070。
步骤1060:上述设备将报文上送至控制面进行处理。
与步骤960对应,具体的请参见步骤960中的描述,此处不再赘述。
步骤1070:上述设备遍历BIERv6报文的BIER头中的BitString。
作为一个示例,如果遍历到BIER头的BitString某一个Bit有效(例如,该Bit的值为1),且该Bit代表本节点时,可以进一步判断BIERv6报文内层的数据报文的类型。如果报文不是BIER OAM报文,则弹出外层Ipv6头及Ipv6扩展头,并根据内层组播数据报文进行后续的转发。如果报文是BIER OAM报文,报文后续由控制面进行处理,其处理方式可以是根据BIER OAM的协议进行处理。例如,检查BIER OAM报文为Echo Request类型文、相应发送BIEROAM的Echo Reply给报文的外层Ipv6头的源地址。
作为另一个示例,如果遍历到BIER头的BitString某一个Bit有效(例如,该Bit的值为1),且该Bit为代表非本节点的其他节点时,可以获取到达其他节点的下一跳信息,比如出接口、下一跳的MAC地址等。将BIERv6报文复制一份,将复制的BIERv6报文外层Ipv6头的hop limit值减1、BIER头的TTL值减1,并根据获取的到达其他节点的下一跳信息,将复制的BIERv6报文往下一跳进行发送。
需要说明的是,在步骤1070中,不需要再对hop limit和TTL的取值进行判断。
下面以图6所示的场景为例,对BIERv6报文的内层数据报文为IPv4/Ipv6报文为例,对网络中的BIERv6路由器(例如,BFR或BFER)根据图10所示的方法对报文的处理情况进行说明。应理解,在下述实施例中,假设BFR上的hop limit阈值为2,BFER上的hop limit阈值为1。
一个示例,当BFR3收到BIERv6报文封装的组播数据报文,外层Ipv6头中的hoplimit值为2,BIER头中的TTL值为1,BitString包含BFER7节点。处理结果:BFR3丢弃报文。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,hop limit值为3,TTL值为1,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文外层Ipv6头中的目的地址为BFER7的IP地址、外层Ipv6头中的hop limit为2、BIER头中的TTL为0。R5收到BIERv6报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为1、TTL为0。BFER7收到该BIERv6报文后,根据上述报文转发的方法丢弃报文,并结束处理。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,hop limit值为3,TTL值为2,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为2、TTL为1;R5收到报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为1、TTL为1;BFER7收到该BIERv6报文后丢弃,并结束处理。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,hop limit值为3,TTL值为3,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为2、TTL为2;R5收到报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为1、TTL为2;BFER7收到该BIERv6报文后丢弃,并结束处理。
另一个示例,当BFR3收到的是一个BIERv6封装的组播数据报文,hop limit值为4,TTL值为3,BitString包含BFER7节点。处理结果:BFR3将BIERv6报文转发给R5,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为3、TTL为2;R5收到报文后转发给BFER7,该BIERv6报文的目的地址为BFER7的IP地址、hop limit为2、TTL为2;BFER7收到该BIERv6报文后,根据上述报文转发的方法,会解封装BIERv6头部并按照内层组播数据报文进行转发。
下面以图6所示的场景为例,对BIERv6报文的内层数据报文为BIER OAM报文为例,对网络中的BIERv6路由器(例如,BFR或BFER)根据图10所示的方法对报文的处理情况进行说明。应理解,在下述实施例中,假设BFR上的hop limit阈值为2,BFER上的hop limit阈值为1。
一种可能的实现方式中,以BIER的Trace检测为例,设从BFIR依次发送BIER TTL=1/2/3的报文,各报文均使用hop limit=127,有如下的处理过程。
一个示例,对第1个OAM报文,BFIR发出时报文携带TTL=1、hop limit=127。BFR1收到后上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第2个OAM报文,BFIR发出时报文携带TTL=2、hop limit=127。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=1、hop limit=126。BFR3收到报文时上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第3个OAM报文,BFIR发出时报文携带TTL=3、hop limit=127。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=2、hop limi=126。BFR3收到报文后发送给R5,R5接收到的报文的TTL=1、hop limit=125。R5收到报文后发送给BFER7,BFER7接收到的报文的TTL=1、hop limit=124),BFER7将报文上送控制面并由控制面发送EchoReply的OAM报文。
另一种可能的实现方式中,以BIER的Trace检测为例,设从BFIR依次发送BIER TTL=1/2/3的报文,各报文均使用hop limit=3,有如下的处理过程。
一个示例,对第1个OAM报文,BFIR发出时报文携带TTL=1、hop limit=3。BFR1收到后上送控制面并由控制面发送Echo Reply的OAM报文。
另一个示例,对第2个OAM报文,BFIR发出时报文携带TTL=2、hop limit=3。BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=1、hop limit=2。BFR3收到报文时会丢弃报文、不发送Echo Reply报文。
另一个示例,对第3个OAM报文,BFIR发出时报文携带TTL=3、hop limit=3。BFR1BFR1收到后转发给BFR3,BFR3接收到的报文的TTL=2、hop limit=2。BFR3收到报文时会丢弃报文、不发送Echo Reply报文。
上文结合图1至图10,详细描述了本申请实施例提供的一种BIER报文转发的方法,下面将结合图11至图13,详细描述本申请的装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图11是本申请实施例提供的一种第一网络设备1100的示意性结构图。图11所示的该第一网络设备1100为位转发路由器BFR或位转发出口路由器BFER,可以执行上述实施例的方法中第一网络设备执行的相应步骤。如图11所示,所述第一网络设备1100包括:接收模块1110,处理模块1120,
接收模块1110,用于接收基于第六版互联网协议的位索引的显式复制BIERv6报文,其中,所述BIERv6报文中包括跳数限制hop limit字段;
处理模块1120,用于确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值,其中,所述预设阈值为大于或等于2的数,所述预设阈值是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备;
所述处理模块1120,还用于当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,避免转发所述BIERv6报文。
可选地,所述处理模块1120还用于:丢弃所述BIERv6报文。
可选地,所述处理模块1120还用于:当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文。
可选地,所述处理模块1120还用于:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
可选地,所述BIERv6报文中包括比特串BitString,所述处理模块1120还用于:当所述BitString中的一个比特位有效,且所述比特位代表所述第一网络设备时,确定自己为所述BFER;或当所述BitString中的一个比特位有效,且所述比特位代表除所述第一网络设备之外的其他设备时,确定自己为所述BFR。
可选地,所述处理模块1120还用于:如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,将所述BIERv6报文发送至所述第一网络设备的下一跳设备;或如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
可选地,所述第一网络设备为BIER域中的BFR或BFER。
图12是本申请实施例的第一网络设备2000的硬件结构示意图。图12所示第一网络设备2000可以执行上述实施例的方法中第一网络设备执行的相应步骤。
如图12所示,所述第一网络设备2000包括处理器2001、存储器2002、接口2003和总线2004。其中接口2003可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器2001、存储器2002和接口2003通过总线2004连接。
所述接口2003具体可以包括发送器和接收器,用于第一网络设备实现上述收发。例如,所述接口2003用于接收基于第六版互联网协议的位索引的显式复制BIERv6报文。
所述处理器2001用于执行上述实施例中由第一网络设备进行的处理。例如,用于用于确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值;还用于当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,避免转发所述BIERv6报文;和/或用于本文所描述的技术的其他过程。存储器2002包括操作系统20021和应用程序20022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及第一网络设备的处理过程。可选的,所述存储器2002可以包括只读存储器(read-only memory,ROM)和随机存取存储器(random accessmemory,RAM)。其中,所述ROM包括基本输入/输出系统(basic input/output system,BIOS)或嵌入式系统;所述RAM包括应用程序和操作系统。当需要运行第一网络设备2000时,通过固化在ROM中的BIOS或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备2000进入正常运行状态。在第一网络设备2000进入正常运行状态后,运行在RAM中的应用程序和操作系统,从而,完成方法实施例中涉及第一网络设备2000的处理过程。
可以理解的是,图12仅仅示出了第一网络设备2000的简化设计。在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。
图13为本申请实施例的另一种第一网络设备2100的硬件结构示意图。图13所示的第一网络设备2100可以执行上述实施例的方法中第一网络设备执行的相应步骤。
如图13所述,第一网络设备2100包括:主控板2110、接口板2130、交换网板2120和接口板2140。主控板2110、接口板2130和2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。其中,主控板2110用于完成系统管理、设备维护、协议处理等功能。交换网板2120用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板2130和2140用于提供各种业务接口(例如,POS接口、GE接口、ATM接口等),并实现数据包的转发。
接口板2130可以包括中央处理器2131、转发表项存储器2134、物理接口卡2133和网络处理器2132。其中,中央处理器2131用于对接口板进行控制管理并与主控板上的中央处理器进行通信。转发表项存储器2134用于保存表项,例如,上文中的BIFT。物理接口卡2133用于完成流量的接收和发送。
应理解,本申请实施例中接口板2140上的操作与所述接口板2130的操作一致,为了简洁,不再赘述。
应理解,本实施例的第一网络设备2100可对应于上述方法实施例所具有的功能和/或所实施的各种步骤,在此不再赘述。
此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,第一网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,第一网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,第一网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的第一网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一网络设备执行的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-onlymemory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
本申请实施例还提供了一种芯片系统,应用于第一网络设备中,该芯片系统包括:至少一个处理器、至少一个存储器和接口电路,所述接口电路负责所述芯片系统与外界的信息交互,所述至少一个存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述至少一个处理器执行,以进行上述各个方面的所述的方法中所述第一网络设备的操作。
在具体实现过程中,该芯片可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signal processing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。
本申请实施例还提供了一种计算机程序产品,应用于第一网络设备中,所述计算机程序产品包括一系列指令,当所述指令被运行时,以进行上述各个方面的所述的方法中所述第一网络设备的操作。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种基于第六版互联网协议的位索引显式复制BIERv6报文转发的方法,其特征在于,所述方法包括:
第一网络设备接收基于第六版互联网协议的位索引的显式复制BIERv6报文,其中,所述BIERv6报文中包括跳数限制hop limit字段,所述第一网络设备为位转发路由器BFR或位转发出口路由器BFER;
所述第一网络设备确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值,其中,所述预设阈值为大于或等于2的数,所述预设阈值是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备;
当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一网络设备丢弃所述BIERv6报文。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值且所述BIERv6报文的内层不是位索引显式复制操作维护管理BIER OAM报文,所述第一网络设备丢弃所述BIERv6报文。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文;或
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,所述第一网络设备避免转发所述BIERv6报文。
5.根据权利要求4所述的方法,其特征在于,所述BIERv6报文中包括比特串BitString,所述方法还包括:
当所述第一网络设备确定所述BitString中的一个比特位有效,且所述比特位代表所述第一网络设备时,所述第一网络设备确定自己为所述BFER;或
当所述第一网络设备确定所述BitString中的一个比特位有效,且所述比特位代表除所述第一网络设备之外的其他设备时,所述第一网络设备确定自己为所述BFR。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,所述第一网络设备将所述BIERv6报文发送至所述第一网络设备的下一跳设备;或
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,所述第一网络设备对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述第一网络设备为BIER域中的BFR或BFER。
8.一种第一网络设备,其特征在于,所述第一网络设备为位转发路由器BFR或位转发出口路由器BFER,所述第一网络设备包括:
接收模块,用于接收基于第六版互联网协议的位索引的显式复制BIERv6报文,其中,所述BIERv6报文中包括跳数限制hop limit字段;
处理模块,用于确定所述BIERv6报文中hop limit字段的取值是否小于或等于所述第一网络设备上的预设阈值,其中,所述预设阈值为大于或等于2的数,所述预设阈值是根据与所述第一网络设备相连的一个或多个连续的第二网络设备的数量确定的,所述第二网络设备为不支持BIER转发的设备;
所述处理模块,还用于当所述BIERv6报文中hop limit字段的取值小于或等于所述预设阈值时,避免转发所述BIERv6报文。
9.根据权利要求8所述的第一网络设备,其特征在于,所述处理模块还用于:
丢弃所述BIERv6报文。
10.根据权利要求8所述的第一网络设备,其特征在于,所述处理模块还用于:
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值且所述BIERv6报文的内层不是位索引显式复制操作维护管理BIER OAM报文,丢弃所述BIERv6报文。
11.根据权利要求8至10中任一项所述的第一网络设备,其特征在于,所述处理模块还用于:
如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文;或
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值等于所述预设阈值时,避免转发所述BIERv6报文。
12.根据权利要求11所述的第一网络设备,其特征在于,所述BIERv6报文中包括比特串BitString,所述处理模块还用于:
当所述BitString中的一个比特位有效,且所述比特位代表所述第一网络设备时,确定自己为所述BFER;或
当所述BitString中的一个比特位有效,且所述比特位代表除所述第一网络设备之外的其他设备时,确定自己为所述BFR。
13.根据权利要求8至12中任一项所述的第一网络设备,其特征在于,所述处理模块还用于:
如果所述第一网络设备为所述BFR,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,将所述BIERv6报文发送至所述第一网络设备的下一跳设备;或
如果所述第一网络设备为所述BFER,当所述BIERv6报文中所述hop limit字段的取值大于所述预设阈值时,对所述BIERv6报文解封装,并对解封装后的内层报文进行转发。
14.根据权利要求8至13中任一项所述的第一网络设备,其特征在于,所述第一网络设备为BIER域中的BFR或BFER。
15.一种第一网络设备,其特征在于,包括:处理器和存储器,所述存储器用于存储程序,所述处理器用于从存储器中调用并运行所述程序以执行权利要求1至7中任一项所述的方法。
16.一种位索引显式复制BIER报文转发的系统,包括如权利要求8至14中任一项所述的第一网络设备。
17.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行权利要求1至7中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21172470.3A EP3917093B1 (en) | 2020-05-30 | 2021-05-06 | Bierv6 packet forwarding method and device |
US17/319,379 US11831547B2 (en) | 2020-05-30 | 2021-05-13 | BIERV6 packet forwarding method, device, and system |
JP2021085353A JP7119170B2 (ja) | 2020-05-30 | 2021-05-20 | Bierv6パケット転送方法、デバイス、およびシステム |
KR1020210068918A KR102568754B1 (ko) | 2020-05-30 | 2021-05-28 | Bierv6 패킷 전달 방법, 장치 및 시스템 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020104804568 | 2020-05-30 | ||
CN202010480456 | 2020-05-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113746753A true CN113746753A (zh) | 2021-12-03 |
Family
ID=78728024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010841652.3A Pending CN113746753A (zh) | 2020-05-30 | 2020-08-20 | BIERv6报文转发的方法、设备以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746753A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615186A (zh) * | 2022-03-25 | 2022-06-10 | 中国电信股份有限公司 | 组播标签分发方法、装置、系统和组播路由器 |
CN114978632A (zh) * | 2022-05-11 | 2022-08-30 | 中国电信股份有限公司 | 报文传输检测方法、装置、设备及介质 |
CN117896333A (zh) * | 2024-03-18 | 2024-04-16 | 深圳深蕾科技股份有限公司 | 报文转发方法、系统、装置和存储介质 |
-
2020
- 2020-08-20 CN CN202010841652.3A patent/CN113746753A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615186A (zh) * | 2022-03-25 | 2022-06-10 | 中国电信股份有限公司 | 组播标签分发方法、装置、系统和组播路由器 |
CN114978632A (zh) * | 2022-05-11 | 2022-08-30 | 中国电信股份有限公司 | 报文传输检测方法、装置、设备及介质 |
CN114978632B (zh) * | 2022-05-11 | 2023-12-15 | 中国电信股份有限公司 | 报文传输检测方法、装置、设备及介质 |
CN117896333A (zh) * | 2024-03-18 | 2024-04-16 | 深圳深蕾科技股份有限公司 | 报文转发方法、系统、装置和存储介质 |
CN117896333B (zh) * | 2024-03-18 | 2024-06-25 | 深圳深蕾科技股份有限公司 | 报文转发方法、系统、装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110784411B (zh) | 建立bier转发表项的方法、装置和系统 | |
US20230283554A1 (en) | BIER Packet Forwarding Method, Device, and System | |
CN113746753A (zh) | BIERv6报文转发的方法、设备以及系统 | |
CN113114576B (zh) | 报文发送的方法、设备和系统 | |
CN112532563B (zh) | 报文的发送方法和装置 | |
JP7322088B2 (ja) | パケット検出方法および第1のネットワーク機器 | |
US11855888B2 (en) | Packet verification method, device, and system | |
WO2021244108A1 (zh) | Bier组播流量的统计方法、设备以及系统 | |
CN114465946A (zh) | 获取转发表项的方法、装置以及系统 | |
CN112737954A (zh) | 报文处理方法、装置、系统、设备及存储介质 | |
CN114598644A (zh) | Bier报文转发的方法、设备以及系统 | |
CN114690680A (zh) | 数据处理的方法、控制器以及第一网络设备 | |
EP3917093B1 (en) | Bierv6 packet forwarding method and device | |
US12120023B2 (en) | BIER OAM detection method, device, and system | |
CN113285878A (zh) | 负载分担的方法、第一网络设备 | |
WO2021129023A1 (zh) | 报文发送的方法、设备和系统 | |
CN114520762A (zh) | BIERv6报文的发送方法以及第一网络设备 | |
WO2022027978A1 (zh) | IPv6报文发送的方法、设备以及系统 | |
CN114071375A (zh) | IPv6报文发送的方法、设备以及系统 |
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 |