CN115733790A - 报文转发方法、装置、设备及存储介质 - Google Patents
报文转发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115733790A CN115733790A CN202111266438.0A CN202111266438A CN115733790A CN 115733790 A CN115733790 A CN 115733790A CN 202111266438 A CN202111266438 A CN 202111266438A CN 115733790 A CN115733790 A CN 115733790A
- Authority
- CN
- China
- Prior art keywords
- host
- header
- message
- ipv6
- routing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 186
- 238000012545 processing Methods 0.000 claims abstract description 72
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 20
- 239000012634 fragment Substances 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 238000013467 fragmentation Methods 0.000 description 9
- 238000006062 fragmentation reaction Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 6
- 230000006855 networking Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000010076 replication Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 208000033748 Device issues Diseases 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 101100297538 Caenorhabditis elegans php-3 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 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
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/34—Source 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/52—Multiprotocol routers
-
- 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
- H04L45/741—Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/325—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文转发方法、装置、设备及存储介质,属于通信技术领域。本申请实施例在BIER域中包含主机以及和主机具有邻居关系的路由设备,主机通过路由设备复制转发报文到其他主机的场景下,由路由设备在接收到包含BIER选项的报文时,从报文中弹出包含BIER选项所在的IPv6扩展头后发往主机,从而避免主机接收到的报文包含BIER选项所在的IPv6扩展头,因此降低了主机处理报文的难度,减少了主机处理报文的开销。
Description
本申请要求于2021年09月02日提交的申请号为202111026417.1、发明名称为“一种报文复制和接收的方法和系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及一种报文转发方法、装置、设备及存储介质。
背景技术
基于比特位的显式复制(bit indexed explicit replication,BIER)技术作为通信领域中用于构建组播报文转发路径的技术,由于无需构建组播分发树,因而得到了广泛的应用。
相关技术中,在包含主机和网络设备的BIER网络中,转发BIER报文的基本流程是:源主机生成BIER互联网协议第6版(internet protocol version 6,IPv6)报文,向网络设备发送BIER IPv6报文。网络设备接收到BIER IPv6报文后,网络设备将BIER IPv6报文复制并转发至目的主机。目的主机接收BIER IPv6报文,目的主机对BIER IPv6报文进行处理。
采用上述方法时,目的主机接收报文后处理报文的难度过高,开销过大。
发明内容
本申请实施例提供了一种报文转发方法、装置、设备及存储介质,能够降低目的主机处理报文的难度和开销。所述技术方案如下。
第一方面,提供了一种报文转发方法。以第一路由设备执行该方法为例,该方法包括:第一路由设备接收第一报文;所述第一路由设备基于所述第一报文获得第二报文;所述第一路由设备向作为BIER邻居的第一主机发送所述第二报文。
第一报文例如是基于IPv6数据面的BIER(bit indexed explicit replicationover IPv6 data plane,BIERv6)报文。所述第一报文包括第一互联网协议第6版(internetprotocol version 6,IPv6)头、第一IPv6扩展头、上层头和上层载荷。所述第一IPv6扩展头包括基于比特位的显式复制(bit indexed explicit replication,BIER)选项。
第二报文相当于从第一报文中弹出包含BIER选项的IPv6扩展头所得到的报文。所述第二报文包括所述上层头、所述上层载荷和基于所述第一IPv6头获得的第二IPv6头。
第一主机是第一路由设备的BIER邻居。例如,第一路由设备上的比特索引转发表(bit index forwarding table,BIFT)中的BFR邻居包括第一主机。
第一路由设备通过执行上述方法,将第一报文转换为第二报文,再将第二报文发给作为邻居的目的主机,从而避免目的主机接收到包含BIER选项所在的IPv6扩展头,也就解决了由于目的主机接收到BIER选项所在的IPv6扩展头导致难度过高、开销过大的问题,因此降低了目的主机处理报文的难度,减少了目的主机处理报文的开销。
可选地,上述第一报文中的BIER选项包括比特串,第一路由设备获得上述第二报文的过程具体包括:所述第一路由设备根据所述比特串,获得指示信息,所述指示信息用于指示弹出包含所述BIER选项的所述第一IPv6扩展头;所述第一路由设备基于所述指示信息和所述第一报文,获得所述第二报文。
通过上述可选方式,由于将比特串与指示弹出动作的信息关联起来,路由设备在按照标准的BIERv6转发流程转发报文的过程中,能够在基于报文中的比特串确定下一跳是第一主机的同时,在比特串关联的指示信息的指示下执行弹出动作,从而充分利用BIER技术中在报文中携带比特串指示目的主机的特点,降低实现复杂度,减少配置的工作量。
可选地,所述第一路由设备根据所述比特串,获得指示信息,包括:所述第一路由设备根据所述比特串,获得所述第一主机的标识;所述第一路由设备根据对应关系和所述第一主机的标识,获得所述指示信息,所述对应关系包括所述指示信息和所述第一主机的标识。
可选地,所述上层头为用户数据报协议(user datagram protocol,UDP)头,所述上层载荷为UDP载荷。
可选地,所述UDP载荷中不包括IP头。
可选地,第一报文和第二报文中UDP头中校验和字段的值均为0。
通过上述实现方式,第一路由设备在转发报文的过程中,无需重新计算UDP头中的校验和,而是保持UDP头中校验和字段的值为0即可,从而节省了计算校验和带来的开销。
可选地,所述第一报文还包括至少一个第二IPv6扩展头,所述第一报文包括的所述至少一个第二IPv6扩展头封装于所述第一IPv6头和所述上层头之间,所述第二报文还包括所述至少一个第二IPv6扩展头,所述第二报文包括的所述至少一个第二IPv6扩展头封装于所述第二IPv6头和所述上层头之间。
所述至少一个第二IPv6扩展头不包括所述BIER选项。例如,第二IPv6扩展头包括而不限于分片头(fragment header)、封装安全载荷头(encapsulating securitypayload,ESP)、认证头、路由头、逐跳选项头、目的选项头等等。
通过上述实现方式,能够兼容利用其他IPv6扩展头实现特性的机制,适用更多的业务场景。例如,在IPv6报文的分片重组的场景下,上述第二IPv6扩展头例如是分片头,该分片头通过第一路由设备转发至第一主机,以便第一主机基于携带分片头的报文片段进行重组。
可选地,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位。所述第一路由设备接收第一报文之前,所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识。
通过上述实现方式,第一路由设备充当了代理节点的角色,代理第一主机来发布第一主机的标识。一方面,能够在第一主机不支持BIER转发行为的情况下,将第一主机的标识扩散至其他路由设备上,以便其他路由设备生成到达第一主机的路由信息,另一方面,无需在BIER域中每个路由设备上分别配置第一主机的标识,从而降低了配置工作量,有助于大规模部署。
可选地,所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识,包括:
所述第一路由设备生成路由协议报文。所述路由协议报文包括所述第一主机的标识。所述第一路由设备在所述BIER域的路由设备之间发布所述路由协议报文。
所述路由协议报文例如为中间系统到中间系统(intermediate system tointermediate system,IS-IS)报文、(open shortest path first,OSPF)报文或者边界网关协议(border gateway protocol,BGP)报文。
通过上述实现方式,能够复用已有的路由协议,部署和管理较为简单。
第二方面,提供了一种报文转发方法。以第一路由设备执行该方法为例,该方法包括:第一路由设备接收第一报文;所述第一路由设备基于所述第一报文获得第二报文;所述第一路由设备向作为BIER邻居的第一主机发送所述第二报文。
第一报文例如是BIERv6报文。所述第一报文包括第一IPv6头、第一IPv6扩展头、上层头和上层载荷。所述第一IPv6扩展头包括BIER选项。
第二报文相当于从第一报文中弹出包含BIER选项的IPv6扩展头并将IPv6头转换为IPv4头所得到的报文。所述第二报文包括所述上层头、所述上层载荷和基于所述IPv6头所获得的IPv4头。
第一路由设备通过执行上述方法,将第一报文转换为第二报文,再将第二报文发给作为邻居的目的主机,从而避免目的主机接收到包含BIER选项所在的IPv6扩展头,也就解决了由于目的主机接收到BIER选项所在的IPv6扩展头导致难度过高、开销过大的问题,因此降低了目的主机处理报文的难度,减少了目的主机处理报文的开销。
进一步地,在第一主机不支持IPv6而支持IPv4,或者第一路由设备和第一主机之间的网络不支持IPv6而支持IPv4的情况下,也能满足第一主机的通信需求,有助于兼容IPv4网络。
可选地,所述BIER选项包括比特串,所述第一路由设备基于所述第一报文获得第二报文,包括:
所述第一路由设备根据所述比特串,获得指示信息和所述第一主机的IPv4地址,所述指示信息用于指示包含所述BIER选项的所述第一IPv6扩展头并将所述IPv6头替换为所述IPv4头;
所述第一路由设备基于所述指示信息、所述第一主机的IPv4地址和所述第一报文,获得所述第二报文,所述第二报文的所述IPv4头中的目的地址为所述第一主机的IPv4地址。
可选地,所述第一路由设备根据所述比特串,获得指示信息和所述第一主机的IPv4地址,包括:
所述第一路由设备根据所述比特串,获得所述第一主机的标识;
所述第一路由设备根据第一对应关系和所述第一主机的标识,获得所述指示信息和所述第一主机的IPv4地址,所述第一对应关系包括所述指示信息、所述第一主机的标识和所述第一主机的IPv4地址。
可选地,所述上层头为UDP头,所述上层载荷为UDP载荷。
可选地,所述UDP载荷中不包括IP头。
可选地,所述UDP头中校验和字段的值为0。
可选地,,所述第一报文还包括至少一个第二IPv6扩展头,所述第一报文中所述至少一个第二IPv6扩展头封装于所述IPv6头和所述上层头之间。
可选地,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位,所述第一路由设备接收第一报文之前,所述方法还包括:所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识。
通过上述实现方式,第一路由设备充当了代理节点的角色,代理第一主机来发布第一主机的标识。一方面,能够在第一主机不支持BIER转发行为的情况下,将第一主机的标识扩散至其他路由设备上,以便其他路由设备生成到达第一主机的路由信息,另一方面,无需在BIER域中每个路由设备上分别配置第一主机的标识,从而降低了配置工作量,有助于大规模部署。
可选地,所述方法还包括:所述第一路由设备在BIER域的路由设备之间发布所述第一主机的IPv6地址与所述第一主机的IPv4地址之间的对应关系。
通过上述实现方式,能够将第一主机的IPv6地址与IPv4地址之间的对应关系扩散到BIER域的其他路由设备上,有助于满足第一主机基于BIERv6转发技术与IPv4主机的通信需求。例如,当第一主机发送BIERv6报文后,目标IPv4主机的邻居路由设备能够基于第一主机的IPv6地址与IPv4地址之间的对应关系,将第一主机发送的报文的IPv6头转换为IPv4头后转发给目标IPv4主机,以便目标IPv4主机基于IPv4接收报文。
可选地,所述第一报文的IPv6头中的源地址为第二主机的IPv6地址,所述第一路由设备基于所述第一报文获得第二报文,包括:
所述第一路由设备根据所述第二主机的IPv6地址以及第二对应关系,获得第二主机的IPv4地址,所述第二对应关系包括所述第二主机的IPv6地址以及所述第二主机的IPv4地址;
所述第一路由设备基于所述第二主机的IPv4地址和所述第一报文,获得所述第二报文,所述第二报文的所述IPv4头中的源地址为所述第二主机的IPv4地址。
可选地,所述第一路由设备接收第一报文之前,所述方法还包括:
所述第一路由设备接收第二路由设备发布的所述第二对应关系。
第三方面,提供了一种报文转发装置,该报文转发装置设于第一方面或第一方面任一种可选方式中的第一路由设备上。该报文转发装置包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面任一种可选方式所提供的方法。在一些实施例中,第三方面提供的报文转发装置中的单元通过软件实现,报文转发装置中的单元是程序模块。在另一些实施例中,第三方面提供的报文转发装置中的单元通过硬件或固件实现。第三方面提供的报文转发装置的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第四方面,提供了一种报文转发装置,该报文转发装置设于第二方面或第二方面任一种可选方式中的第一路由设备上。该报文转发装置包括至少一个单元,至少一个单元用于实现上述第二方面或第二方面任一种可选方式所提供的方法。在一些实施例中,第四方面提供的报文转发装置中的单元通过软件实现,报文转发装置中的单元是程序模块。在另一些实施例中,第四方面提供的报文转发装置中的单元通过硬件或固件实现。第四方面提供的报文转发装置的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
第五方面,提供了一种路由设备,该路由设备包括处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条计算机程序指令,所述至少一条计算机程序指令由所述处理器加载并执行,以使所述路由设备实现上述第一方面或第一方面任一种可选方式所提供的方法。第五方面提供的路由设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第六方面,提供了一种路由设备,该路由设备包括处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条计算机程序指令,所述至少一条计算机程序指令由所述处理器加载并执行,以使所述路由设备实现上述第二方面或第二方面任一种可选方式所提供的方法。第六方面提供的路由设备的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
第七方面,提供了一种路由设备,该路由设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。
第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:接收第一报文,所述第一报文包括第一互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述第一IPv6头获得的第二IPv6头;向作为BIER邻居的第一主机发送所述第二报文。。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:在BIER域的路由设备之间发布所述第一主机的标识。
在一种可能的实现方式中,主控板和接口板之间建立进程间通信协议(inter-process communication,IPC)通道,主控板和接口板之间通过IPC通道进行通信。
第八方面,提供了一种路由设备,所述路由设备包括:主控板和接口板,进一步,还可以包括交换网板。所述路由设备用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,所述路由设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的单元。
第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:接收第一报文,所述第一报文包括互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述IPv6头所获得的IPv4头;向作为BIER邻居的第一主机发送所述第二报文。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:在BIER域的路由设备之间发布所述第一主机的标识。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:在BIER域的路由设备之间发布所述第一主机的IPv6地址与所述第一主机的IPv4地址之间的对应关系。
在一种可能的实现方式中,主控板和接口板之间建立IPC通道,主控板和接口板之间通过IPC通道进行通信。
第九方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第十方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十一方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第十二方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十三方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中的方法。
第十四方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十五方面,提供了一种网络系统,该网络系统包括第一主机以及上述第三方面至第六方面中任一项所述的路由设备。
附图说明
图1是本申请实施例提供的一种RTC场景的示意图;
图2是本申请实施例提供的一种网络系统架构示意图;
图3是本申请实施例提供的一种网络系统架构示意图;
图4是本申请实施例提供的一种报文转发方法的流程图;
图5是本申请实施例提供的一种第一报文的格式示意图;
图6是本申请实施例提供的一种第一报文和第二报文的对比示意图;
图7是本申请实施例提供的一种第一报文和第二报文的对比示意图;
图8是本申请实施例提供的一种报文转发方法的场景示意图;
图9是本申请实施例提供的一种报文转发方法的场景示意图;
图10是本申请实施例提供的一种报文转发方法的场景示意图;
图11是本申请实施例提供的一种报文转发方法的场景示意图;
图12是本申请实施例提供的一种报文转发方法的场景示意图;
图13是本申请实施例提供的一种报文转发装置600的结构示意图;
图14是本申请实施例提供的一种路由设备700的结构示意图;
图15是本申请实施例提供的一种路由设备800的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面对本申请实施例涉及的一些术语概念做解释说明。
(1)互联网协议(internet protocol,IP)节点(IP node)
IP节点是指基于IP协议通信的设备(a device that implements IP)。从IP协议版本的角度来看,IP节点包括互联网协议第4版(internet protocol version 4,IPv4)节点和联网协议第4版(internet protocol version 4,IPv6)节点。从设备角色的角度来看,IP节点包括路由设备和主机。
(2)路由设备(router)
路由设备是指向自身之外的其他IP节点转发IP报文的IP节点(a node thatforwards IP packets not explicitly addressed to itself)。路由设备包括而不限于路由器、三层交换机、防火墙等。本申请的一些实施例中,用“R+数字”的形式来简化表示具体的路由设备,如R1、R2和R3表示三台具体的路由设备。
(3)主机(host)
主机是指非路由设备的任意IP节点(any IP node that is not a router)。主机包括而不限于网关、服务器、用户设备或者负载均衡设备(load balance,LB)等。用户设备包括而不限于个人计算机、移动电话、笔记本电脑、IP电话、摄像头、平板电脑、可穿戴设备等。本申请的一些实施例中,用“H+数字”的形式来简化表示具体的主机,如H1、H2和H3表示三台具体的主机。
(4)基于比特位的显式复制(bit indexed explicit replication,BIER)
BIER是一种转发组播数据报文的新技术。BIER技术的典型特点为,将组播数据报文的目的节点集合以比特串的方式封装在报文头部进行发送,从而使网络中间节点无需为每一个组播流建立组播树及保存组播流状态,从而减少对资源的占用。基于BIER技术转发的基本流程为,当组播数据报文进入BIER域时,比特转发入口路由器(bit forwardingingress router,BFIR,BIER域中的入口节点)确定报文需要发往的比特转发出口路由器(bit forwarding engress router,BFER,BIER域中的出口节点)集合。BFIR向报文封装BIER选项(也称BIER头)。BIER选项包含比特串。
在本申请的一些实施例中,BIER泛指根据比特串封装和转发报文的方法,即,发送端向报文封装比特串,路由设备接收到包含比特串的报文后根据比特串将报文复制发送给目的节点。本申请的一些实施例中,BIER报文复用原有的BIER报文格式。
(5)比特串(bitstring)
比特串用于表示BIER域中的一组BFER,比特串中每一个比特对应于一个BFER。比特串中置位的比特为报文的目的BRER节点的标识的集合。当BFIR需要将报文通过中间节点转发至指定的一组BFER时,BFIR会将BIER选项中与该指定的一组BFER对应的比特位均置位,以便中间节点根据比特串的置位情况进行复制和转发。例如,BIER域中包含4个边缘节点,这4个边缘节点的标识例如分别是1、2、3、4,当BFIR需要将报文转发至BFR ID为1的边缘节点以及BFR ID为2的边缘节点时,BFIR可以在BIER选项中携带比特串0011。
(6)BIER转发路由器(BIER forwarding router、BFR)
BFR是指支持BIER转发的节点。BFR包括BFIR、BFER和transit BFR。BFIR和BFER统称为BIER域的边缘节点。transit BFR是BIER域的中间转发节点。
(7)BIER转发路由器标识符(BIER forwarding router Identifier,BFR-ID)
BFR ID是BFER节点的标识。BFR ID用一个1到65535范围内的整数表示。例如,一个网络中拥有256个边缘节点,每个边缘节点需要配置一个1~256的唯一值,目的节点集合则使用一个256比特(或32字节)的比特串来表示,比特串的每个比特所在的位置或索引表示一个边缘节点。
(8)主机的标识(identifier,ID)
主机的标识的作用相当于BIER架构中的BFR ID。主机ID和报文中的比特串的比特位对应,主机的标识和转发表中的转发位掩码(forwarding bit mask,FBM)的比特位对应。相区别的是,BFR ID标识的节点通常是路由设备,而主机的标识对应的节点不是路由设备,而是主机。
(9)基于互联网协议第6版(internet protocol version 6,IPv6)数据面的位索引显示复制(Bit Index Explicit Replication over Ipv6 data plane,BIERv6)
传统的BIER基于多协议标签交换(multi-protocol label switching,MPLS)实现。BIERv6与传统的BIER的最大不同之处在于:BIERv6摆脱了MPLS标签,是基于原生IPv6(native IPv6)的组播方案。BIERv6继承了BIER的核心设计理念,它使用比特串将组播报文复制给指定的接收者,中间节点无需建立组播转发树,实现无状态转发。在此基础上,BIERv6技术利用IPv6扩展头携带BIER转发所需的信息,从而摆脱了MPLS标签转发机制。利用IPv6扩展头的机制也方便后续新特性的演进和叠加,例如IPv6报文的分片重组、组播的网络切片、随流检测等。由于业务只部署在头节点和尾节点,组播业务变化时,中间节点不感知。因此,网络拓扑变化时,无需对大量组播树执行撤销和重建操作,大大地简化了运维工作。
(10)IPv6报文
按照RFC 8200描述,IPv6报文主要包括IPv6头、IPv6扩展头以及上层协议数据单元这3部分。
IPv6头也称IPv6基本报文头。IPv6头有8个字段,固定大小为40字节,每一个IPv6报文都需要包含IPv6头。IPv6头提供报文转发的基本信息,会被转发路径上的所有IPv6设备解析。
上层协议数据单元主要包含上层头(upper-layer header,ULH)和上层载荷。上层协议数据单元例如是一个基于IPv6的Internet控制报文协议(internet control messageprotocol for the IPv6,ICMPv6)报文、一个传输控制协议(transmission controlprotocol,TCP)报文或一个用户数据报协议(user datagram protocol,UDP)报文。
IPv6扩展头被置于IPv6基本报文头和上层协议数据单元之间。一个IPv6报文可以包含0个、1个或多个扩展报文头。当使用多个IPv6扩展头时,前一个IPv6扩展头的下一个头(next header)字段指明下一个IPv6扩展头的类型,这样就形成了链状的报文头列表。具体地,IPv6头中的next header字段指明了第一个IPv6扩展头的类型,而第一个IPv6扩展头中的next header字段指明了下一个IPv6扩展头的类型(如果不存在,则指明上层协议的类型)。路由设备根据基本报文头中next header值指定的协议号来决定是否要处理IPv6扩展头。
IPv6通过提出IPv6扩展头的概念,新增选项时不必修改现有报文结构,理论上可以无限扩展,在保持报文头简化的前提下,还具备了优异的灵活性。
(11)BIERv6报文
BIERv6利用了IPv6扩展头来实现自身的功能。IPv6报文中的目的地址标识BIER转发节点的IPv6地址,即End.BIER地址,表示需要在本节点进行BIERv6转发处理。IPv6报文中的源地址标识BIERv6报文的来源。BIERv6使用IPv6扩展头(如目的选项头)携带BIER选项,与IPv6头共同形成BIERv6报文头。BFR读取BIER选项中的bitstring,根据比特索引转发表(bit index forwarding table,BIFT)进行复制、转发并更新bitstring。
(12)End.BIER
为了支持基于IPv6扩展报文头的报文转发,BIERv6网络定义了一种新类型的段标识(segment ID,SID),称为End.BIER,它作为IPv6目的地址指示设备的转发平面处理报文中的BIERv6扩展头。每个节点在接收并处理BIERv6报文时,将下一跳节点的End.BIER SID封装为BIERv6报文的外层IPv6目的地址(组播报文目的节点已通过bitstring定义),以便下一跳节点按BIERv6流程转发报文。End.BIER SID还能够很好地利用IPv6单播路由的可达性,跨越不支持BIERv6的IPv6节点。
End.BIER SID可以分为两部分:定位(locator)和其他比特位。locator表示一个BIERv6转发节点。locator的定义与基于互联网协议第6版的段路由(internet protocolversion 6for segment routing,SRv6)里一致,locator具有定位功能,节点配置locator之后,系统会生成一条locator网段路由,并且通过内部网关协议(interior gatewayprotocol,IGP)在SRv6域内扩散。网络里其他节点通过locator网段路由就可以定位到本节点,同时本节点发布的所有SRv6SID也都可以通过该条locator网段路由到达。End.BIERSID可以将报文引导到指定的BFR,BFR接收到一个组播报文,识别出报文目的地址为本地的End.BIER SID,判定为按BIERv6流程转发。
(13)BIFT
比特索引转发表(BIFT)是BIERv6域中每个BFR转发组播报文时使用的表项。比特索引转发表用来表示通过该BFR邻居能到达的各BFER节点,包括BFR邻居(BFR neighbor,Nbr)和FBM。BIERv6中的每个BFR通过IGP向其他BFR节点通告本地BFR前缀(BFR-prefix)、子域ID(sub-domain ID)、BFR-ID、比特串长度(bitstring length,BSL),及路径计算算法等信息。每个BFR节点通过路径计算获知当前节点到每个BFER的BFR邻居。
(14)FBM
FBM使用一个bitstring来表示,并且和报文转发所使用的bitstring长度相同。例如,报文转发使用bitstring长度为256bit,那么BIERv6转发表中的FBM也为256bit。在报文转发过程中,报文中的bitstring会和转发表中的FBM进行与(AND)操作。
下面对本申请实施例的应用场景举例说明。
本申请实施例应用在BIER域中不仅包含路由设备,也包含主机的场景。换句话说,BIER域中的边缘节点可能是主机。在这一场景下,当源端(如一个主机)向报文封装了包含BIER选项的IPv6扩展头并将报文发送给路由设备后,路由设备会根据BIER选项中的比特串,将报文复制转发至作为目的端的主机。
在研究过程中发现,这种场景经常出现作为目的端的主机难以处理包含BIER选项的IPv6扩展头的问题。
具体而言,和路由设备接收BIER IPv6报文后的处理不同,主机接收BIER IPv6报文可能存在的一个问题是,当主机接收到包含有IPv6扩展头的报文时,主机可能对报文进行丢弃。例如,主机的操作系统(operation system,OS)内核对接收到的含有IPv6扩展头的报文进行丢弃,导致主机上的应用程序就无法接收到报文,应用程序的套接字(socket)应用程序接口(application programming interface,API)接收报文的函数得不到报文。在这种情况下,如果要让主机应用程序接收到报文,一种实现方式是对主机的操作系统进行更改。例如,给操作系统打补丁。这种方式在软件和部署上开销非常大。另外一种实现方式是,如果主机上安装有智能网卡(smart network interface controller,smart NIC),在报文上送给操作系统内核之前,先由智能网卡删除报文中的IPv6扩展头。这样,操作系统内核收到的报文就不再带有IPv6扩展头了,因此内核能将报文发送给调用了socket API的应用程序。但是,这种方式同样开销很大且依赖于智能网卡。
主机接收BIER IPv6报文可能存在的另一个问题是,主机可能支持IPv4而不支持IPv6,或者主机和路由设备之间的网络支持IPv4而不支持IPv6。例如,图1中网关GW2或网关GW3支持IPv4而不支持IPv6,但仍希望网关GW2或网关GW3和网关GW1、路由设备RT或者路由设备RT2一起部署网页即时通信(web real-time communication,web RTC),如何应对这种主机或者主机和路由设备之间的网络不支持IPv6的情况也是本申请实施例需要解决的问题。
有鉴于此,本申请的一些实施例提供了一种报文转发方法,当路由设备感知到报文要复制发送的目的节点是主机时,路由设备通过弹出包含BIER选项的IPv6扩展头,避免主机接收到的报文包含BIER选项的IPv6扩展头,从而解决了作为目的端的主机难以处理包含BIER选项的IPv6扩展头的问题,帮助主机能顺利接收到报文,避免主机接收报文时由于IPv6扩展头而带来额外的开销或依赖,降低系统部署的难度。
下面再结合一个具体的典型应用场景举例说明。
在实时通信(real time communication,RTC)场景中,多个RTC客户端(RTCclient)通过RTC网关(RTC gateway)向多个RTC客户端发送音频或视频数据包。RTC网关可选地分布式的部署多个。
图1示出了一个RTC场景的组网示意图。网关GW1接收到客户端C1发送的报文后,网关GW1获取到报文内容并通过IPv6 BIER封装发送给网关GW2和网关GW3。网关GW2和网关GW3再向各自的客户端发送这些音频或视频数据包。
C代表RTC client。例如在web RTC中,客户端(C)是一个兼容web RTC标准的浏览器。GW代表RTC网关。例如在web RTC中,网关(gateway,GW)是一个web RTC网关;R代表路由设备(router),例如路由设备为支持BIER IPv6转发的路由器。
图1示出的场景转发的具体流程为,首先客户端C1向网关GW1发送报文。报文中源地址是客户端C1的地址,报文中目的地址是网关GW1的地址,报文是IPv4报文。报文的格式可简化表示为:IPv4头+UDP头+音视频载荷。当网关GW1接收到客户端C1发送的报文后,网关GW1获取报文里的音视频载荷,网关GW1将音视频载荷重新封装为BIER IPv6报文,网关GW1将BIER IPv6报文发送给路由设备R1。网关GW1封装得到的BIER IPv6报文的格式可简化表示为:IPv6头+IPv6扩展头+UDP头+音视频载荷。路由设备R1接收到网关GW1发送的BIERIPv6报文后,路由设备R1根据IPv6扩展头中的比特串将报文发送给路由设备R2。路由设备R2根据IPv6扩展头中的比特串将报文复制发送给网关GW2和网关GW3。网关GW2收到报文后,网关GW2读取报文的音视频载荷,网关GW2将音视频载荷重新封装为格式为:IPv4头+UDP头+音视频载荷的报文,网关GW2将报文发送给客户端C2;与网关GW2的动作同理地,网关GW3读取报文的音视频载荷后,网关GW3将音视频载荷重新封装为格式为:IPv4头+UDP头+音视频载荷的报文,网关GW3将格式为:IPv4头+UDP头+音视频载荷的报文发送给客户端C3。网关GW3将音视频载荷重新封装为IPv4头+TCP头+音视频载荷的报文,网关GW3将格式为IPv4头+TCP头+音视频载荷的报文发送给客户端C4。
在图1示出的场景下,参考本文中术语概念解释部分(2)和(3)的介绍,网关GW1、网关GW2和网关GW3这三个设备都是主机,而不是路由器。例如,对于网关GW1而言,网关GW1接收到接收IPv4报文之后,网关GW1的动作并不是将IPv4报文直接转发给路由设备R1,而是获取报文内容(即音视频载荷)后,将音视频载荷重新组装成IPv6报文。IPv6报文是从网关GW1上产生的。由网关GW1的动作可见,网关GW1是一个主机。网关GW1获取报文内容、重新组装IPv6报文并发送的过程通常是在应用程序里完成。比如,应用程序使用socket API实现,包括应用程序调用socket的绑定(bind)函数(用于将套接字与指定端口相连)或者监听(listen)函数监听一个TCP端口或UDP端口,以接收IPv4报文并获取IPv4报文的载荷,然后应用程序调用发送(send)函数或send to函数将载荷封装为IPv6报文并发送IPv6报文。即使网关GW1接收到的报文是IPv6报文,网关GW1仍然是一个主机,因为网关GW1不是对所接收到的IPv6报文进行转发(forwarding),而是获取载荷后根据载荷重新封装。同理,网关GW2和网关GW3也都是主机。
在图1示出的场景下,路由设备R1和路由设备R2属于路由设备。路由设备R1和路由设备R2均会对收到的IPv6 BIER报文进行转发,在转发过程中IPv6头的源地址保持不变、跳数限制(hop limit)字段保持连续。
在图1示出的场景下,需要解决的一个问题是,当网关GW1(主机)封装BIER IPv6报文、经过IPv6路由设备R1、IPv6路由设备R2后,如何让网关GW2(主机)和网关GW3(主机)的应用程序能顺利接收到报文,例如通过socket API函数接收到报文。
针对这一问题,可由IPv6路由设备R2执行本申请实施例提供的方法。例如,当IPv6路由设备R2接收到包含BIER选项的IPv6扩展头的报文时,IPv6路由设备R2根据BIER选项中的比特串确定将报文复制转发给网关GW2和网关GW3,并且在将报文发给网关GW2和网关GW3之前,IPv6路由设备R2将包含BIER选项的IPv6扩展头弹出,从而避免网关GW2和网关GW3接收到的报文携带有包含BIER选项的IPv6扩展头。
下面对本申请实施例的系统架构举例说明。
图2是本申请实施例提供的网络系统的一种架构图。图2示出的网络系统包括主机H1、主机H2、主机H3以及路由设备R1。主机H1、主机H2、主机H3以及路由设备R1组成一个报文复制和接收的域。具体的,在报文转发流程中,由主机H1、主机H2、主机H3其中充当发送端的主机在报文中封装比特串。比特串中置位的比特标识主机H1、主机H2、主机H3中充当接收端的主机。路由设备R1根据比特串,复制报文并转发给主机H1、主机H2、主机H3中充当接收端的主机。
本实施例中,这种使用比特串封装和转发报文的方法可称为BIER,报文复制和接收的域可称为BIER域(BIER domain)。BIER域中的设备包含路由设备和主机。主机H1、主机H2以及主机H3均为BIER域的边缘节点,包含比特串的报文格式可选地使用已有的BIER报文格式。
图3是本申请实施例提供的网络系统的另一种架构图。图3示出的网络系统包括主机H1、主机H2、主机H3、路由设备R0、路由设备R1、路由设备R2和路由设备R3。主机H1、主机H2、主机H3、路由设备R0、路由设备R1、路由设备R2和路由设备R3组成一个报文复制和接收的域(BIER域)。
下面对本申请实施例的方法流程举例说明。
图4是本申请实施例提供的一种报文转发方法的流程图。图4所示方法包括以下S401至S405。
图4所示方法涉及多个主机之间的交互。为了区分不同的主机,用“第一主机”、“第二主机”区分描述多个不同的主机。图4所示方法以第二主机向第一主机发送报文的流程为例进行说明。在报文转发的流程中,第二主机充当报文发送方的角色,第一主机充当报文接收方的角色。可选地,第二主机和第一主机均为BIER域的边缘节点。
图4所示方法的一些可选实施方式涉及多个路由设备之间的交互。为了区分不同的路由设备,用“第一路由设备”、“第二路由设备”区分描述多个不同的路由设备。
图4所示方法的典型应用场景包括RTC场景。例如,结合图1示出的RTC场景来看,图4所示方法中的第二主机为图1中的RTC网关GW1,图4所示方法中的第一路由设备为图1中的路由设备R2,图4所示方法中的第一主机为图1中的RTC网关GW2或者RTC网关GW3。
图4所示方法所基于的网络部署场景可选地如上述图2所示。例如,结合图2来看,图4所示方法中的第二主机为图2中的主机H1,图4所示方法中的第一路由设备为图2中的路由设备R1,图4所示方法中的第一主机为图2中的主机H2或者主机H3。
图4所示方法所基于的网络部署场景可选地如上述图3所示。例如,结合图3来看,图4所示方法中的第二主机为图3中的主机H1,图4所示方法中的第一路由设备为图3中的路由设备R2,图4所示方法中的第一主机为图3中的主机H2。或者,图4所示方法中的第一路由设备为图3中的路由设备R3,图4所示方法中的第一主机为图3中的主机H3。
第一路由设备和第一主机具有邻居关系。换句话说,第一主机是第一路由设备是在BIER域的邻居。具体来说,第一主机是第一路由设备在下游方向的邻居。可选地,第一主机是第一路由设备的下一跳BIER节点。
第一路由设备和第一主机之间的连接方式包括多种实现方式。在一种可能的实现方式中,第一路由设备和第一主机IP直连。例如,第一路由设备和第一主机物理直连,或者,第一路由设备和第一主机通过一个或多个二层网络设备相连。在IP直连的情况下,第一路由设备发送出去的报文(第二报文)中IPv6基本头的hop limit与第一主机接收到的报文的IPv6基本头的hop limit相同。在另一种可能的实现中,第一路由设备和第一主机IP非直连。例如,第一路由设备和第一主机通过一个或多个原生(native)IPv6网络设备相连。在IP非直连的情况下,第一路由设备发送出去的报文(第二报文)中IPv6基本头的hop limit大于第一主机接收到的报文的IPv6基本头的hop limit。
可选地,第一路由设备充当第一主机的代理节点的角色,第一路由设备代替第一主机执行处理BIER选项所在的IPv6扩展头、发布BFR ID(即主机的标识)等BIER转发行为,从而节省第一主机的开销。
图4所示方法涉及路由设备内部处理报文的过程。为了区分不同的报文,用“第一报文”指代路由设备接收到的报文、用“第二报文”指代路由设备发送出去的报文。
图4所示方法可选地涉及路由设备将报文复制并转发给多个主机的过程。为了便于读者理解,图4所示方法以路由设备如何将报文复制并转发给第一主机为例进行说明,路由设备向第一主机之外的其他主机复制和转发报文的方式可参考向第一主机转发报文的流程。
图4所示方法可选地用于路由设备对一条组播流中多个报文进行处理的场景。为了便于读者理解,图4所示方法以针对一个第一报文的处理过程为例进行说明,组播流中其他报文的处理方式可参考针对第一报文的处理方式。
图4所示方法涉及的报文可选地包括多个IPv6扩展头。为了区分不同的IPv6扩展头,用“第一IPv6扩展头”、“第二IPv6扩展头”区分描述多个不同的IPv6扩展头。
S401、第二主机向第一路由设备发送第一报文。
第一报文的整体格式可参考图5或者图6中的(a)或者图7中的(a)。第一报文包括第一IPv6头、第一IPv6扩展头、上层头和上层载荷。在第一报文中,第一IPv6头封装于第一IPv6扩展头的外层,第一IPv6扩展头封装于第一IPv6头和上层头之间,上层载荷封装于上层头的内层。下面对第一报文的各个部分分别进行介绍。
第一IPv6头是第一报文中的IPv6基本报文头。第一IPv6头的具体格式可参考图6中的(a)或者图7中的(a)。第一IPv6头主要包括源地址字段、目的地址字段、hop limit字段、next header字段以及载荷长度(payload length)字段等。
第一IPv6头中源地址字段包括第一主机的IPv6地址。
第一IPv6头中目的地址字段包括第一路由设备的IPv6地址。具体地,第一IPv6头中目的地址字段包括第一路由设备的End.BIER地址,End.BIER地址用于指示第一路由设备根据第一报文中的比特串将报文复制转发给比特串中置位的比特对应的目的节点(第二主机)。
第一IPv6头中next header字段的值为第一IPv6头之后第一个IPv6扩展头的协议号。在第一IPv6头之后第一个IPv6扩展头为BIER选项所在的第一IPv6扩展头的情况下,第一IPv6头中next header字段的值为第一IPv6扩展头的协议号。例如,在第一IPv6扩展头为目的选项头的情况下,第一IPv6头中next header字段的值为60(60为目的选项头的协议号)。在第一IPv6头之后第一个IPv6扩展头为第二IPv6扩展头的情况下,第一IPv6头中nextheader字段的值为第二IPv6扩展头的协议号。
第一IPv6头中payload length字段的值为第一报文中第一IPv6头之后各部分的长度之和。在第一报文由第一IPv6头、第一IPv6扩展头、上层头和上层载荷组成的情况下,第一IPv6头中payload length字段的值为第一IPv6扩展头、上层头和上层载荷这三个部分的长度之和。例如,第一IPv6扩展头为长度是48字节的目的选项头,上层头为长度是8字节的UDP头,上层载荷为长度是492字节的UDP载荷,则第一IPv6头中payload length字段的值为48+8+492=548。在第一报文由第一IPv6头、第一IPv6扩展头、第二IPv6扩展头、上层头和上层载荷组成的情况下,第一IPv6头中payload length字段的值为第一IPv6扩展头、第二IPv6扩展头、上层头和上层载荷这四个部分的长度之和。例如,第一IPv6扩展头为长度是48字节的目的选项头,第二IPv6扩展头为长度是8字节的分片头,上层头为长度是8字节的UDP头,上层载荷为长度是492字节的UDP载荷,则第一IPv6头中payload length字段的值为48+8+8+492=556。
第一IPv6扩展头是包括BIER选项的IPv6扩展头。第一IPv6扩展头的格式可参考图5或者图6中的(a)或者图7中的(a)。第一IPv6扩展头和第一IPv6头的组合也称BIERv6报文头。第一IPv6扩展头的类型包括多种情况。可选地,第一IPv6扩展头为目的选项头。可替代地,第一IPv6扩展头为逐跳选项头或者路由头。可选地,第一IPv6扩展头包括next header字段、扩展头长度(header extended length,Hdr Ext Len)字段和选项字段。BIER选项携带在第一IPv6扩展头中的选项字段。可选地,第一IPv6扩展头中的选项字段仅包括BIER选项这一个选项。可替代地,第一IPv6扩展头中的选项字段不仅包括BIER选项,还包括其他选项。
BIER选项中包括比特串。可选地,BIER选项还包括比特串的长度、BIFT的标识等。
BIER选项的格式可参考图5或者图6中的(a)或者图7中的(a)。可选地,BIER选项具有类型长度值(type length value,TLV)的格式,BIER选项也称BIER TIV。例如,BIER选项包括选项类型(option type)字段、选项数据长度(opt data len)字段和选项数据(optdata)字段。BIER选项中选项数据字段包括比特串。
可选地,BIER选项具有RFC8296所定义的BIER头的格式。例如,BIER选项的格式如图5所示,BIER选项包括bitstring字段、BFIR-ID字段、proto字段、生存时间(time tolive,TTL)字段、版本(ver)字段、BSL字段等。可选地,比特串携带在BIER选项中的bitstring字段。可替代地,比特串携带在BIER选项中的比特索引转发表标识(BIFT-ID)字段、TTL字段、熵(entropy)字段或者操作维护管理(operation administration andmaintenance,OAM)字段。
比特串用于指示第一报文的目的节点。具体地,比特串包括多个比特位。比特串中每个比特位对应于BIER域中一个主机,比特串中置位的比特对应的主机为第一报文的目的主机。在本实施例中,第一报文的目的主机包括第一主机,因此比特串中第一主机对应的比特位置位。比特串中第一主机对应的比特位的位置或索引为第一主机的标识。例如,将比特串中第k个比特(按照从低位到高位的顺序数第k个比特)分配给第一主机,第一主机的标识为k,第一报文的比特串中第k个比特置位,k为正整数。
在一些实施例中,第一报文不仅包括第一IPv6扩展头,还包括至少一个第二IPv6扩展头。
第二IPv6扩展头为不包括BIER选项的IPv6扩展头。在第一报文包括多个第二IPv6扩展头的情况下,多个第二IPv6扩展头中每个第二IPv6扩展头均不包括BIER选项。如图6中的(a)或者图7中的(a)所示,第一报文中至少一个第二IPv6扩展头封装于第一IPv6头和上层头之间。
第二IPv6扩展头和第一IPv6扩展头之间的位置关系包括多种情况。可选地,至少一个第二IPv6扩展头封装于第一IPv6扩展头的外层,或者至少一个第二IPv6扩展头封装于第一IPv6扩展头的内层,或者至少一个第二IPv6扩展头中部分第二IPv6扩展头封装于第一IPv6扩展头的外层、部分第二IPv6扩展头封装于第一IPv6扩展头的内层。
第二IPv6扩展头的类型包括多种情况。例如,第二IPv6扩展头包括而不限于分片头(fragment header,协议号为44)、封装安全载荷头(encapsulating security payload,ESP,协议号为50)、认证头(协议号为51)、路由头(协议号为43)、逐跳选项头、目的选项头等。
第二IPv6扩展头是第一报文中可选的部分。在一些实施例中,第一报文包含一个IPv6扩展头,即第一IPv6扩展头。
上层头(upper-layer header)即上层协议报文头。上层头是由IP协议号(IPprotocol number)所指定的、除了IPv6扩展头之外的头。
IPv6扩展头对应的IP协议号包括0、43、44、60等。其中,0是逐跳选项头(hop byhop header)这种IPv6扩展头对应的IP协议号。43是路由头(routing header)这种IPv6扩展头对应的IP协议号。44是分片头(fragment header)这种IPv6扩展头对应的IP协议号。60是目的选项头(destination options header)这种IPv6扩展头对应的IP协议号。IPv6扩展头对应的协议号在本文中也称为扩展头的协议号。
上层头对应的IP协议号包括1、2、6、17、4、41、137等。1是ICMP头这种上层头对应的IP协议号。2是IGMP这种上层头对应的IP协议号。6是TCP头这种上层头对应的IP协议号。17是UDP头这种上层头对应的IP协议号。4是IPv4头这种上层头对应的IP协议号。41是IPv6头这种上层头对应的IP协议号。137是以太网(Ethernet)头这种上层头对应的IP协议号。上层头对应的IP协议号在本文中也称为上层头的协议号。
上层载荷即上层协议的载荷。上层头和上层载荷的组合也称上层协议数据单元。在一些实施例中,第一报文中的上层头为UDP头,第一报文中的上层载荷为UDP载荷。第一报文中的UDP载荷的内容可选地是多媒体数据,例如音频数据或视频数据。可选地,第一报文中的UDP载荷中不包括IP头。在另一些实施例中,第一报文中的上层头为TCP头,第一报文中的上层载荷为TCP载荷。在另一些实施例中,第一报文中的上层头为ICMP头,第一报文中的上层载荷为ICMP载荷。在另一些实施例中,第一报文中的上层头为IPv4头,第一报文中的上层载荷为IPv4载荷。在另一些实施例中,第一报文中的上层头为IPv6头,第一报文中的上层载荷为IPv6载荷。在另一些实施例中,第一报文中的上层头为Ethernet头,第一报文中的上层载荷为Ethernet载荷。
S402、第一路由设备接收来自第二主机的第一报文。
S403、第一路由设备基于第一报文获得第二报文。
第一路由设备对第一报文进行处理以获得第二报文。第一路由设备对第一报文的处理过程包括:第一路由设备弹出第一报文中BIER选项所在的第一IPv6扩展头,以得到不包含第一IPv6扩展头的第二报文。弹出BIER选项所在的第一IPv6扩展头的动作也称PHP操作。
在一种可能的实现中,第一路由设备对第一报文的处理过程具体包括:第一路由设备处理第一报文中的第一IPv6头,发现第一IPv6头中的目的地址是第一路由设备的End.BIER地址,则第一路由设备读取第一报文中第一IPv6扩展头,从第一IPv6扩展头中的BIER选项获得比特串;第一路由设备根据比特串中置位的比特,获得第一主机的标识。第一路由设备根据第一主机的标识查询路由信息,得到第一主机的标识对应的下一跳节点是作为第一路由设备的邻居的第一主机,那么第一路由设备弹出第一报文中包含BIER选项的第一IPv6扩展头,以得到不包含第一IPv6扩展头的第二报文。
下面结合两种场景对第二报文的格式以及第一路由设备处理报文的具体过程进行说明,参见下述场景一至场景二。
场景一、第一主机支持IPv6。
在场景一下,第一路由设备向第一主机发送的第二报文为IPv6报文。
图6示出了场景一下第一报文和第二报文的对比示意图,图6中的(a)是对场景一下第一报文的格式示意图,图6中的(b)是对场景一下第二报文的格式示意图。如图6中的(b)所示,第二报文包括第二IPv6头、上层头和上层载荷。
第二IPv6头是第二报文中的IPv6基本报文头。第二IPv6头是基于上述第一IPv6头获得的。例如,第一路由设备对第一IPv6头中一些字段的内容进行更新,以得到第二IPv6头。下面对第二IPv6头与第一IPv6头之间的关系进行介绍。
第二IPv6头中源地址字段和第一IPv6头中源地址字段的内容相同。第二IPv6头中源地址字段包括第一主机的IPv6地址。例如,第一路由设备在处理第一报文的过程中,保持IPv6头中源地址字段的内容不变。
第二IPv6头中目的地址字段包括第一主机的IPv6地址。例如,第一路由设备在处理第一报文的过程中,使用第一主机的IPv6地址更新第一报文的IPv6头中的目的地址字段,使得IPv6头中目的地址字段从第一路由设备的End.BIER地址变化为第一主机的IPv6地址。在一种可能的实现中,第一路由设备在接收第一报文之前,预先保存第一主机的IPv6地址。例如,第一路由设备保存第一主机的标识与第一主机的IPv6地址之间的对应关系。第一路由设备接收到第一报文后,根据第一报文中的比特串获得第一主机的标识;第一路由设备根据第一主机的标识,查询第一主机的标识与第一主机的IPv6地址之间的对应关系,以得到第一主机的IPv6地址。
第二IPv6头中next header字段的值为第二IPv6头之后第一个IPv6扩展头的协议号。在第一IPv6头之后第一个IPv6扩展头为BIER选项所在的IPv6扩展头(即上述第一IPv6扩展头)的情况下,第二IPv6头中next header字段的值与第一IPv6头中next header字段的值不同。例如,由于弹出了第一IPv6扩展头,使得IPv6头之后的第一个IPv6扩展头从第一IPv6扩展头变化为第一IPv6扩展头的下一个扩展头,那么第一路由设备使用第一IPv6扩展头中next header字段的值(即第一IPv6扩展头的下一个扩展头的协议号)更新第一IPv6头中next header字段。例如,在第一报文依次由第一IPv6头、第一IPv6扩展头、上层头和上层载荷组成的情况下,第二IPv6头中next header字段的值为上层头的协议号。在第一报文依次由第一IPv6头、第一IPv6扩展头、第二IPv6扩展头、上层头和上层载荷组成的情况下,第二IPv6头中next header字段的值为第二IPv6扩展头的协议号。在第一IPv6头之后第一个IPv6扩展头不是BIER选项所在的IPv6扩展头(即上述第一IPv6扩展头)的情况下,第二IPv6头中next header字段的值可选地与第一IPv6头中next header字段的值相同。例如,在第一报文依次由第一IPv6头、第二IPv6扩展头、第一IPv6扩展头、上层头和上层载荷组成的情况下,第二IPv6头中next header字段的值为第二IPv6扩展头的协议号。
第二IPv6头中hop limit字段的值可选地是基于第一IPv6头中hop limit字段的值获得的。第二IPv6头中hop limit字段的值小于第一IPv6头中hop limit字段的值。例如,第一路由设备在处理第一报文的过程中,将IPv6头中hop limit字段的值减一。例如,在第二主机与第一路由设备之间存在k跳IPv6中间节点的情况下,k跳IPv6中间节点中每个中间节点以及第一路由设备依次对IPv6头中hop limit字段的值减一,使得第二IPv6头中hoplimit字段的值与第一IPv6头中hop limit字段的值之间的差值为k+1,k为0或正整数。
第二IPv6头中payload length字段的值可选地基于第一IPv6头中payloadlength字段的值获得。第二IPv6头中payload length字段的值小于第一IPv6头中payloadlength字段的值。例如,第二IPv6头中payload length字段的值与第一IPv6头中payloadlength字段的值之间的差为第一IPv6扩展头的长度。
在一些实施例中,在第一报文还包括至少一个第二IPv6扩展头的情况下,第二报文也还包括该至少一个第二IPv6扩展头。如图6中的(b)所示,第二报文中至少一个第二IPv6扩展头封装于第二IPv6头和上层头之间。例如,第一路由设备在处理第一报文的过程中,保持该至少一个第二IPv6扩展头不变,从而得到包含该至少一个第二IPv6扩展头的第二报文。
可选地,场景一下第一路由设备对第一报文的处理过程具体包括下述步骤(1)至步骤(2)。
步骤(1)第一路由设备根据第一报文中的比特串,获得指示信息。
指示信息的作用相当于弹出动作的标识,指示信息指示弹出BIER选项所在的IPv6扩展头。指示信息的形式例如为字符串。例如,指示信息为倒数第二跳弹出(penultimatehop pop,PHP),PHP表示路由设备在将BIERv6报文转发给主机时要弹出携带BIER选项的IPv6扩展头。
第一路由设备在报文转发阶段如何获得指示信息包括多种实现方式。可选地,第一路由设备获得指示信息的过程包括下述步骤(1-1)至步骤(1-2)。
步骤(1-1)第一路由设备根据比特串,获得第一主机的标识。
第一路由设备根据比特串中置位的比特位,获得第一主机的标识。例如,比特串为00000010,比特串中的第2个比特位置位,因此第一路由设备获得第一主机的标识为2。
步骤(1-2)第一路由设备根据第一主机的标识以及第一路由设备保存的对应关系,获得指示信息。
上述对应关系包括第一主机的标识以及指示信息。第一路由设备以第一主机的标识为索引查询上述对应关系从而获得指示信息。对应关系的获取方式包括很多种。在一种可能的实现中,通过静态配置的方式获得对应关系。具体地,网络管理员预先对第一路由设备执行配置操作,第一路由设备根据配置操作获得对应关系。在另一种可能的实现中,由控制器向第一路由设备发送该对应关系,第一路由设备接收来自控制器的对应关系。
可替代地,第一路由设备通过步骤(1-1)至步骤(1-2)之外的其他方式获得指示信息。例如,第一路由设备建立和保存比特串本身与指示信息之间的对应关系,第一路由设备根据比特串以及对应关系获得指示信息。
步骤(2)第一路由设备基于指示信息和第一报文,获得第二报文。
第一路由设备在指示信息的指示下,对第一报文执行弹出BIER选项所在的IPv6扩展头的操作,从而获得第二报文。
场景二、第一主机不支持IPv6而支持IPv4,或者第一路由设备和第一主机之间的网络不支持IPv6而支持IPv4。
在场景二下,第一路由设备向第一主机发送的第二报文为IPv4报文。具体地,第一路由设备将IPv6头以及包含BIER选项的第一IPv6扩展头转换为IPv4头,以得到第二报文。通过采用这种方式,在避免第一主机由于接收到BIER选项所在的IPv6扩展头导致难度过高、开销过大的问题的基础上,满足了场景二下第一主机与第二主机相互通信的需求。
图7示出了场景二下第一报文和第二报文的对比示意图,图7中的(a)是对场景二下第一报文的格式示意图,图7中的(b)是对场景二下第二报文的格式示意图。如图7中的(b)所示,第二报文包括IPv4头、上层头和上层载荷。下面对第二报文的各部分进行介绍。
第二报文的IPv4头是基于第一报文的第一IPv6头获得的。第二报文的IPv4头主要包括源地址字段、目的地址字段、TTL字段、总长度(total length)字段、头部校验和(header checksum)字段等。下面对第二报文的IPv4头与第一IPv6头之间各字段的关系进行介绍。
第二报文的IPv4头中的源地址为第二主机的IPv4地址。可选地,第二报文的IPv4头中的源地址是基于第一报文的IPv6头中的源地址以及第一路由设备保存的对应关系获得的。在一种可能的实现中,第一路由设备保存第二对应关系,第二对应关系包括第二主机的IPv6地址以及第二主机的IPv4地址。第二对应关系也称为IPv6向IPv4网络地址转换(netaddress transform IPv6 to IPv4,NAT64)源地址对应关系,用来帮助第一路由设备将第二主机的IPv6地址映射为IPv4地址。具体地,第一路由设备从第一报文的IPv6头的源地址字段获得第二主机的IPv6地址,第一路由设备根据第二主机的IPv6地址查询第二对应关系,得到第二主机的IPv4地址。第一路由设备基于第二主机的IPv4地址和第一报文,获得第二报文。
第一路由设备如何获得第二对应关系包括多种方式,下面结合几种可能的获取方式举例说明,参见下述获取方式a至获取方式c。
获取方式a、第二路由设备为第二主机发布第二对应关系。第一路由设备接收第二路由设备发布的第二对应关系。
第二路由设备是第二主机在BIER域中的邻居。例如,结合图3来看,第二主机为图3中的主机H1,第二路由设备为图3中的路由设备R1。
在一种可能的实现中,第二路由设备发布第二对应关系的过程具体包括:第二路由设备生成路由协议报文。路由协议报文包括第二对应关系。路由协议报文包括而不限于IGP报文或BGP报文。IGP报文例如为IS-IS报文或者OSPF报文。第二路由设备在BIER域的路由设备之间中发布路由协议报文。
获取方式b、网络管理员对第一路由设备执行配置操作,第一路由设备根据配置操作获得第二对应关系。
获取方式c、控制器获取第二对应关系,向第一路由设备下发第二对应关系,第一路由设备从控制器接收第二对应关系。
第二报文的IPv4头中的目的地址字段包括第一主机的IPv4地址。在一种可能的实现中,第一路由设备在接收第一报文之前,预先保存第一主机的IPv4地址。例如,第一路由设备保存第一主机的标识与第一主机的IPv4地址之间的对应关系。第一路由设备接收到第一报文后,根据第一报文中的比特串获得第一主机的标识;第一路由设备根据第一主机的标识,查询第一主机的标识与第一主机的IPv4地址之间的对应关系,以得到第一主机的IPv4地址。
第二报文的IPv4头中的TTL字段的值可选地是基于第一IPv6头中hop limit字段的值获得的。
第二报文的IPv4头中的total length字段表示第二报文的总长度。第二报文的IPv4头中的total length字段可选地基于第一IPv6头中payload length字段的值获得。例如,第二报文的IPv4头中的total length=第一IPv6头中的payload length-第一IPv6扩展头的长度+IPv4头的长度(20字节)。又如,在第一报文不仅包括第一IPv6扩展头还包括第二IPv6扩展头的情况下,第二报文的IPv4头中的total length=第一IPv6头中的payloadlength-第一IPv6扩展头的长度-第二IPv6扩展头的长度+IPv4头的长度(20字节)。
第二报文的IPv4头中的头部校验和(header checksum)字段基于第二报文的IPv4头中的各个字段获得。
可选地,场景二下第一路由设备对第一报文的处理过程具体包括下述步骤(1)至步骤(2)。
步骤(1)第一路由设备根据第一报文中的比特串,获得指示信息和第一主机的IPv4地址。
指示信息的作用相当于弹出动作和NAT64动作这两种动作的标识。指示信息指示弹出BIER头所在的IPv6扩展头并将IPv6头替换为IPv4头。例如,指示信息为“PHP&NAT64”。其中,PHP表示路由设备在将BIERv6报文转发给主机时要弹出携带BIER选项的IPv6扩展头。&表示和。NAT64表示从IPv6到IPv4的地址转换(network address translation,NAT),即路由设备在将BIERv6报文转发给主机时要将IPv6头替换为IPv4头。
可选地,步骤(1)包括以下步骤(1-1)至步骤(1-2)。
步骤(1-1)第一路由设备根据比特串,获得第一主机的标识。
步骤(1-2)第一路由设备根据第一主机的标识以及第一对应关系,获得指示信息和第一主机的IPv4地址。
第一对应关系包括第一主机的标识、指示信息和第一主机的IPv4地址。
可替代地,第一路由设备通过步骤(1-1)至步骤(1-2)之外的其他方式获得指示信息和第一主机的IPv4地址。例如,第一路由设备建立和保存比特串本身与指示信息和第一主机的IPv4地址之间的对应关系,第一路由设备根据比特串以及对应关系获得指示信息。
步骤(2)第一路由设备基于指示信息、第一主机的IPv4地址和第一报文,获得第二报文。
第二报文中的上层头和第一报文中的上层头相同。第二报文中的上层头的细节可参考对第一报文中的上层头的描述。第二报文中的上层载荷和第一报文中的上层载荷相同。第二报文中的上层载荷的细节可参考对第一报文中的上层载荷的描述。在一些实施例中,第一路由设备在处理第一报文的过程中,保持上层头和上层载荷不变,以得到第二报文。
下面对场景一和场景二下UDP头中校验和字段的可能情况进行介绍,参见下述情况一至情况二。
情况一、路由设备保持UDP头中校验和字段的值为0。
具体地,第二主机发送的第一报文中UDP头中校验和字段的值为0。第一路由设备接收到第一报文后,保持UDP头中校验和字段的值不变,使得第二报文中UDP头中校验和字段的值仍为0。第一主机接收到第二报文后,第一主机确定UDP头中校验和字段的值为0,则取消执行检查校验和的步骤。
通过采用情况一的方式,能够避免第一路由设备计算校验和带来的开销。
情况二、路由设备更新UDP头中校验和字段的值。
具体地,第二主机发送的第一报文中UDP头中校验和字段的值非0。第一路由设备接收到第一报文后,第一路由设备重新计算校验和,对第一报文中校验和字段进行更新。在情况二下,上述第二报文中UDP头中校验和字段的值通常非零。可选地,第一路由设备采用增量修改的方式更新第一报文中校验和字段。具体地,第一路由设备根据第一报文中的校验和、第二报文与第一报文之间IP头中目的IP地址字段的变化情况获得第二报文的UDP头中的校验和。
S404、第一路由设备向作为BIER邻居的第一主机发送第二报文。
S405、第一主机接收第二报文。
本实施例提供的方法,由于路由设备在收到包含BIER选项的报文时,将BIER选项所在的IPv6扩展头弹出后再发往目的主机,从而避免目的主机接收到的报文包含BIER选项所在的IPv6扩展头,也就解决了由于目的主机接收到BIER选项所在的IPv6扩展头导致难度过高、开销过大的问题,因此降低了目的主机处理报文的难度,减少了目的主机处理报文的开销。
上述图4所示方法侧重介绍第一路由设备如何转发报文的流程,下面对第一路由设备进行信息发布的流程进行介绍。可选地,以下介绍的信息发布流程是在图4所示方法之前执行的。
可选地,第一路由设备在BIER域的路由设备之间发布第一主机的标识。换句话说,主机的标识的发布范围不包括主机,而包括BIER域中的路由设备。一种可能的实现中,发布主机的标识的过程包括下述步骤a至步骤b。
步骤a、第一路由设备生成路由协议报文。
路由协议报文包括而不限于IGP报文或边界网关协议(border gatewayprotocol,BGP)报文。IGP报文例如为中间系统到中间系统(intermediate system tointermediate system,IS-IS)报文或者开放式最短路径优先(open shortest pathfirst,OSPF)报文。路由协议报文包括第一主机的标识。在一种可能的实现中,路由协议报文包含路由前缀以及该路由前缀关联的BFR ID列表。路由协议报文中的路由前缀包括第一路由设备的IPv6地址或者该IPv6地址的前缀。路由协议报文中的BFR ID列表包括第一主机的标识。
步骤b、第一路由设备在BIER域的路由设备之间中发布路由协议报文。
BIER域的其他路由设备接收第一路由设备发送的路由协议报文,从路由协议报文中获得第一主机的标识,根据第一主机的标识生成并保存第一主机对应的路由信息,以便在报文转发阶段根据路由信息向第一主机转发报文。路由信息包括第一主机的标识和可达主机的BIER邻居的IPv6地址之间的对应关系。
以上介绍了第一路由设备如何为一个主机(第一主机)代理发布主机的标识,在第一路由设备接入了多个主机的情况下,同理地,第一路由设备发布本设备接入的每个主机的标识。例如,如果网络中新增了第三主机,该第三主机也需要通过第一路由设备从第二主机接收报文,由第一路由设备发布第三主机的标识。具体地,新增第三主机之后,第一路由设备重新生成路由协议报文,路由协议报文中的BFR ID列表不仅包括第一主机的标识,还包括第三主机的标识。第一路由设备重新在BIER域的路由设备之间中发布路由协议报文,使得每个路由设备生成和保存第三主机对应的路由信息。
路由设备发布第一主机的标识为可选步骤,在另一种可能的实现方式中,在BIER域中的每个路由设备上配置第一主机的标识,使得BIER域中的每个路由设备生成第一主机对应的路由信息。
路由设备通过为主机代理发布主机的标识,能够降低路由设备的配置工作量,有助于大规模部署。例如,如果不采用代理的方式,如果网络中新增了第三主机,该第三主机也需要通过第一路由设备从第二主机接收报文,则需要在BIER域中所有路由设备上分别新增或修改配置以使各个路由设备生成第三主机对应的路由信息,配置工作量较大。而采用代理的方式时,通过在第一路由设备上新增或修改配置,以使第一路由设备代理发布第三主机的标识,即可支持BIER域中各个路由设备生成第三主机对应的路由信息,从而减少了配置工作量。
可选地,在图4所示方法中的场景二下,第一路由设备在BIER域的路由设备之间发布第一主机的IPv6地址与第一主机的IPv4地址之间的对应关系。BIER域中第一路由设备之外的其他每个路由设备接收第一路由设备发布的第一主机的IPv6地址与第一主机的IPv4地址之间的对应关系,在本地保存第一主机的IPv6地址与第一主机的IPv4地址之间的对应关系。在一种可能的实现中,第一路由设备生成路由协议报文。路由协议报文包括第一主机的IPv6地址与第一主机的IPv4地址之间的对应关系。路由协议报文包括而不限于IGP报文或BGP报文。IGP报文例如为IS-IS报文或者OSPF报文。第一路由设备在BIER域的路由设备之间中发布路由协议报文。
第一路由设备通过为第一主机发布IPv6地址与IPv4地址之间的对应关系,当需要将第一主机产生的BIERv6报文转发至IPv4主机时,BIER域中的路由设备能够基于第一路由设备发布的对应关系,获得BIERv6报文中IPv6源地址对应的IPv4源地址,以便将BIERv6报文中的IPv6头转换为IPv4头后转发报文,从而满足将第一主机产生的BIERv6报文转发至IPv4主机的需求。并且,无需对每个路由设备分别配置第一主机的IPv6地址与IPv4地址之间的对应关系,从而减少配置的工作量。
下面结合五个实例,对上述图4所示方法举例说明。
实例1:PHP
实例1是对场景一下如何基于图4所示的组网架构应用图4所示方法的举例说明。换句话说,实例1关于目的主机支持IPv6的场景下路由设备如何将BIERv6报文转发至目的主机。
图8是实例1的场景示意图。结合图8来看,图4所示方法中的第二主机为图8中的主机H1,图4所示方法中的第一路由设备为图8中的路由设备R1,图4所示方法中的第一主机为图8中的主机H2或者主机H3。图4所示方法中第一报文为主机H1向路由设备R1发送的报文,图4所示方法中第二报文为路由设备R1向主机H2或者主机H3发送的报文。
在实例1中,主机H1为发送端,主机H2和主机H3均为接收端。路由设备R1和主机H1或主机H2或主机H3之间可选地不运行路由协议。路由协议例如为IGP或BGP。路由设备R1配置各个主机的ID。例如,路由设备R1将主机H1的ID配置为1,将主机H2的ID配置为2,将主机H3的ID配置为3。主机的ID和BIER架构中的BFR ID类似,主机的ID和BFR ID都和报文中的比特串的比特位对应、和转发表中的FBM的比特位对应。与传统的BFR ID相区别的是,主机的ID对应的节点不是路由设备而是主机。另外,主机H1、主机H2和主机H3均作为BIER域的边缘节点。主机H1或主机H2或主机H3直接构造BIER报文,而不是对接收到的组播数据报文进行封装BIER选项从而获得BIER报文。例如,主机H1发送的报文是:(IPv6头,IPv6扩展头<携带BIER选项>,UDP头,UDP载荷),而不是封装的:(IPv6头、IPv6扩展头<携带IP头>,用户组播数据报文)。
本实施例中,路由设备R1上建立主机的IPv6地址和主机的ID之间的对应关系,并指示报文发送给主机时弹出BIER选项所在的IPv6扩展头。例如,路由设备R1上建立对应关系通过如下配置实现。
在上述配置中,BFR-ID表示对应主机的ID,end-bier表示对应主机的IPv6地址。例如,BFR-ID 1表示主机H1的ID是1,BFR-ID 2表示主机H2的ID是1,BFR-ID 3表示主机H3的ID是3。2001:db8::1为主机H1的IPv6地址。2001:db8::2为主机H2的IPv6地址。2001:db8::3为主机H3的IPv6地址。stub表示IPv6地址对应的节点是一个桩节点,stub的含义是说该节点不是一个路由设备。PHP表示往这个节点发送BIER报文时需要执行PHP的动作,即弹出携带BIER选项的IPv6扩展头。根据以上对应关系,路由设备R1上可建立如下表1示出的路由信息。
表1
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 主机H1 | 2001:db8::1 | PHP |
2 | 主机H2 | 2001:db8::2 | PHP |
3 | 路由设备R0 | 2001:db8::3 | PHP |
当主机H1要发送报文给主机H2和主机H3时,主机H1封装如下报文发送给路由设备R1:(IPv6头,IPv6扩展头<携带BIER选项>,UDP头,UDP载荷)。主机H1发送的报文中BIER选项的比特串的第2位和第3位均为1,例如比特串为00000110。
路由设备R1接收到主机H1发送的报文后,路由设备R1根据报文中的比特串确定报文要往哪些节点发送。由于报文中的比特串的第2位和第3位均为1,路由设备R1根据比特串确定报文要向ID为2的节点(主机H2)以及ID为3的节点(主机H3)发送,则路由设备R1对报文进行复制,并弹出报文中BIER选项所在的IPv6扩展头后,向主机H2和主机H3分别发送报文。路由设备R1执行以上操作的具体依据为路由设备R1上配置的以上对应关系。具体地,上述对应关系表明当BFR-ID为2时,需要发送给IPv6地址为2001:db8::2的节点、且发送时要弹出包含BIER选项的IPv6扩展头。因此,路由设备R1发送给主机H2的报文如下:(IPv6头,UDP头,UDP载荷),其中IPv6头的目的地址是2001:db8::2;同理,路由设备R1发送给主机H3的报文如下:(IPv6头,UDP头,UDP载荷),其中IPv6头的目的地址是2001:db8::3。
路由设备R1在弹出IPv6扩展头的过程中,可选地,路由设备R1还更新IPv6头的载荷长度字段,并相应的更新UDP头的checksum字段。或者,路由设备R1使用UDP零校验的方法,保持UDP头中的checksum字段为0。
实例2:PHP并代理主机ID发布
实例2是对场景一下如何基于图4所示的组网架构应用图4所示方法的举例说明。换句话说,实例2关于目的主机支持IPv6的场景下路由设备如何将BIERv6报文转发至目的主机。
图9是实例2的场景示意图。结合图9来看,图4所示方法中的第二主机为图9中的主机H1,图4所示方法中第一报文为主机H1发送的报文。图4所示方法中的第一路由设备为图9中的路由设备R2,图4所示方法中的第一主机为图9中的主机H2。图4所示方法中第二报文为路由设备R2发送的报文。或者,图4所示方法中的第一路由设备为图9中的路由设备R3,图4所示方法中的第一主机为图9中的主机H3。图4所示方法中第二报文为路由设备R3发送的报文。
在实例2中,路由设备R0、路由设备R1、路由设备R2与路由设备R3之间运行路由协议,该路由协议例如是IS-IS协议、OSPF协议或BGP协议。
路由设备R1上建立主机H1的IPv6地址和主机H1的ID的对应关系。路由设备R1通过路由协议发布主机H1的IPv6地址和主机H1的ID的对应关系。例如,路由设备R1通过如下配置建立对应关系。
BFR-neighbor BFR-ID 1end-bier 2001:db8::1stub PHP |
上述配置表示主机H1的IPv6地址为2001:db8::1,主机H1的ID为1。路由设备R1根据上述配置建立并保存IPv6地址=2001:db8::1和ID=1的对应关系,并将ID=1的信息发布给其他运行路由协议的节点。例如,路由设备R1发布如下信息:(路由前缀=路由设备R1的IP地址,关联在路由前缀上的信息:BFR-ID=1)。
同理,路由设备R2例如通过如下配置建立对应关系。
BFR-neighbor BFR-ID 2end-bier 2001:db8::2stub PHP |
上述配置表示主机H2的IPv6地址为2001:db8::2,主机H2的ID为2。路由设备R2根据上述配置建立并保存IPv6地址=2001:db8::2和ID=2的对应关系,并将ID=2的信息发布给其他运行路由协议的节点。
同理,路由设备R3例如通过如下配置建立对应关系。
BFR-neighbor BFR-ID 3end-bier 2001:db8::3stub PHP |
上述配置表示主机H3的IPv6地址为2001:db8::3,主机H3的ID为3。路由设备R3根据上述配置建立并保存IPv6地址=2001:db8::3和ID=3的对应关系,并将ID=3的信息发布给其他运行路由协议的节点。
根据路由设备R1、路由设备R2和路由设备R3发布的路由信息,各路由设备可选地还建立起到达ID=1或ID=2或ID=3的路由信息。比如,路由设备R1上建立的路由信息包含如下表2示出的内容。
表2
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 主机H1 | 2001:db8::1 | PHP |
2 | 路由设备R0 | 路由设备R0 | / |
3 | 路由设备R0 | 路由设备R0 | / |
同理,路由设备R2上建立的路由信息例如包含下表3示出的内容。
表3
同理,路由设备R3上建立的路由信息例如包含下表4示出的内容。
表4
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 路由设备R0 | 路由设备R0 | / |
2 | 路由设备R0 | 路由设备R0 | / |
3 | 主机H3 | 2001:db8::3 | PHP |
同理,路由设备R0上建立的路由信息例如包含下表5示出的内容。
表5
当主机H1需要发送报文给主机H2和主机H3时,主机H1封装如下报文发送给路由设备R1:(IPv6头,IPv6扩展头<携带BIER选项>,UDP头,UDP载荷)。报文中BIER选项的比特串的第2位和第3位为1,例如比特串为0000 0110;
路由设备R1接收到报文后,路由设备R1根据路由设备R1上保存的路由信息,确定ID=2的节点和ID=3的节点的下一BIER邻居都是路由设备R0,因此,路由设备R1将报文往路由设备R0发送,且报文中的比特串仍为00000110。
路由设备R0接收到报文后,路由设备R0根据路由设备R0上保存的路由信息,确定报文要往路由设备R2和路由设备R3发送。路由设备R0发送给路由设备R2的报文中比特串会更新为0000 0010,路由设备R0发送给路由设备R3的报文中比特串会更新为00000100。
路由设备R2接收到报文后,路由设备R2根据路由设备R2上保存的路由信息,确定报文要往主机H2发送;路由设备R2又根据路由设备R2上所配置的对应关系,确定报文在往主机H2发送时需要对报文进行PHP操作,因此路由设备R2发送给主机H2的报文如下:(IPv6头,UDP头,UDP载荷),其中IPv6头的目的地址是2001:db8::2。
路由设备R3收到报文后,路由设备R3根据路由设备R3上保存的路由信息,路由设备R3确定报文要往主机H3发送;路由设备R3又根据路由设备R3上所配置的对应关系,确定报文在往主机H3发送时需要对报文进行PHP操作,因此路由设备R3发送给主机H3的报文如下:(IPv6头,UDP头,UDP载荷),其中IPv6头的目的地址是2001:db8::3。
路由设备R2或路由设备R3在弹出IPv6扩展头的过程中,可选地还更新IPv6头的载荷长度字段,并相应的更新UDP头的checksum字段。或者,路由设备R2或路由设备R3使用UDP零校验的方法,保持UDP头中的checksum字段为0。
下面对本实施例中各阶段的报文举例说明,参见下述示例(1)至示例(3)。在下述示例中,携带BIER选项的IPv6扩展头为目的选项头(destination options header),且目的选项头的长度为48字节。上层头为UDP头(长度为8字节)。UDP载荷共492字节。SA代表源地址(source address)字段的内容,DA代表目的地址(destination address)字段的内容,HL代表hop limit字段的内容,NH代表next header字段的内容,Plen代表payload length字段的内容,Sport代表源端口号(source port)字段的内容,Dport代表目的端口号(destination port)字段的内容,Csum代表校验和(checksum)字段的内容。
示例(1)
下面的表6示出了报文在不同设备之间转发时各阶段的格式。
表6
示例(2)
示例(2)与示例(1)之间的区别为,示例(2)中主机H1发送的报文是经过了IPv6分片的报文,这种情况下,本方案仍然适用。主机H1发送的报文中包括分片头,分片头封装于携带BIER选项的目的选项头与UDP头之间,分片头占8个字节、相应的Plen变为556。下面的表7示出了示例(2)中报文在不同设备之间转发时各阶段的格式。
表7
在主机H2和主机H3上,主机操作系统对多个带分片头的报文片段进行重组(reassembly),即将两个或两个以上的报文分片重组为一个报文。其中第一个报文分片中含有UDP头和上层载荷。上面的表7中示意的是492字节的上层载荷,第二个报文分片中只有上层载荷。
示例(3)
示例(3)与示例(1)之间的区别为,主机H1发送的报文是经过了加密的报文。比如,主机H1采用适用互联网安全协议(internet protocol security,IPSEC)ESP的方法进行加密,那么在报文的DOH头之后、上层头(UDP头)之前还会有IPv6 ESP扩展头,并且UDP头及UDP载荷是被加密过的。
本实施例提供的由路由设备代理发布主机的BFR ID的方法能降低在路由设备上的配置工作量。比如,路由设备R3新接入了一台主机H4,主机H4也需要接收主机H1发送的报文,那么只需要在路由设备R3上新增或修改配置,然后由路由设备R3代理发布主机H4的BFRID。比如,在没有添加主机H4之前,路由设备R3上可发布如下的信息:(路由前缀=R3的IP地址,关联在路由前缀上的信息:BFR-ID list<3>);在添加了主机H4之后,路由设备R3上可发布更新的信息:(路由前缀=R3的IP地址,关联在路由前缀上的信息:BFR-ID list<3,4>),其中3是主机H3的ID,4是主机H4的ID。
如果不采用代理的方式,那么对新增的主机H4来说,路由设备R1、路由设备R0、路由设备R2和路由设备R3等各个路由设备都要新增或修改配置,使得路由设备R1、路由设备R0、路由设备R2和路由设备R3等各个路由设备生成对应于主机H4的路由及转发信息。
实例3:PHP并代理发布主机的ID和NAT64转换
实例3是对场景二下如何基于图4所示的组网架构应用图4所示方法的举例说明。换句话说,实例3关于目的主机不支持IPv6而支持IPv4,或者路由设备与目的主机之间的网络不支持IPv6而支持IPv4的场景下路由设备如何将BIERv6报文转发至目的主机。
图10是实例3的场景示意图。结合图10来看,图4所示方法中的第二主机为图10中的主机H1,图4所示方法中第一报文为主机H1发送的报文。图4所示方法中的第一路由设备为图10中的路由设备R2,图4所示方法中的第一主机为图10中的主机H2。图4所示方法中第二报文为路由设备R2发送的报文。或者,图4所示方法中的第一路由设备为图10中的路由设备R3,图4所示方法中的第一主机为图10中的主机H3。图4所示方法中第二报文为路由设备R3发送的报文。
实例3所基于的网络架构如图10所示。本实施例中,路由设备R0、路由设备R1、路由设备R2与路由设备R3之间运行路由协议,该路由协议例如是IS-IS协议、OSPF协议或BGP协议。
本实施例中,主机H1作为报文发送节点,主机H1发送的报文中包含IPv6头和IPv6扩展头,IPv6扩展头携带比特串。主机H2和主机H3作为报文接收节点,主机H2和主机H3使用IPv4接收报文。
路由设备R1上建立主机H1的IPv6地址与主机H1的IPv4地址的对应关系,并通过路由协议发布主机H1的IPv6地址与主机H1的IPv4地址的对应关系。例如,路由设备R1通过如下配置建立对应关系。
BFR-neighbor BFR-ID 0end-bier 2001:db8::1mapping 192.168.1.101 |
上述配置表示主机H1的IPv6地址为2001:db8::1,主机H1的IPv4地址为192.168.1.101。上述配置中,BFR-ID=0表示一个无效的ID,各路由设备不需要建立到达无效ID的路由信息。如果路由设备R1作为接收节点,则路由设备R1需要配置一个有效的ID。例如,路由设备R1配置BFR-ID=1,下面有关建立路由表的情况则以配置BFR-ID=1为例说明。
路由设备R1通过路由协议将主机H1的IPv6地址=2001:db8::1和主机H1的IPv4地址=192.168.1.101的对应关系发布给其他运行路由协议的节点。具体发布方法可利用已有的路由协议发布机制。本实施例将主机H1的IPv6地址=2001:db8::1和主机H1的IPv4地址=192.168.1.101的对应关系称为NAT64源地址对应关系;在本实施例中,当路由设备R1作为发送节点时,配置中的stub和PHP是可选参数,配置中可选地不包含stub和PHP。当路由设备R1作为接收节点时,配置中包含stub和PHP。
路由设备通过发布主机的IPv6地址和主机的IPv4地址之间对应关系,从而让其他需要该对应关系的路由设备获得该对应关系以便进行报文转发,并简化配置。本实施例中,需要获得NAT64源地址对应关系的路由设备为路由设备R2和路由设备R3。如果不采用路由协议的方式发布主机的IPv6地址和主机的IPv4地址之间对应关系,则需要在路由设备R2和路由设备R3上配置这个对应关系,以便在路由设备R2和路由设备R3向IPv4主机发送到报文时,根据对应关系获取IPv6源地址对应的IPv4源地址。路由协议例如是IS-IS、OSPF等IGP协议,或者是BGP协议。
本例子中,路由设备R2例如通过如下配置建立对应关系。
BFR-neighbor BFR-ID 2stub PHP NAT64 192.168.2.102 |
上述配置表示主机H2的IPv4地址为192.168.2.102,主机H2的ID为2。路由设备R2保存ID=2和NAT64 192.168.2.102的对应关系,并通过路由协议将ID=2这一信息发布给其他运行路由协议的节点。
同理,路由设备R3例如通过如下配置建立对应关系。
BFR-neighbor BFR-ID 3stub PHP NAT64 192.168.3.103 |
上述配置表示主机H3的IPv4地址为192.168.3.103,主机H3的ID为3。路由设备R3保存ID=3和NAT64 192.168.3.103的对应关系,并通过路由协议将ID=3这一信息发布给其他运行路由协议的节点。根据路由设备R1、路由设备R2和路由设备R3发布的路由信息,各路由设备可选地还建立到达ID=1的路由信息、到达ID=2的路由信息和到达ID=3的路由信息。比如,路由设备R1上建立的路由信息包含如下表8示出的内容。
表8
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 |
1 | 主机H1 | 2001:db8::1 |
2 | 路由设备R0 | 路由设备R0 |
3 | 路由设备R0 | 路由设备R0 |
同理,路由设备R2上建立的路由信息例如包含如下表9示出的内容。
表9
同理,路由设备R3上建立的路由信息例如包含如下表10示出的内容。
表10
同理,路由设备R0上建立的路由信息例如包含如下表11示出的内容。
表11
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 |
1 | 路由设备R1 | 路由设备R1 |
2 | 路由设备R2 | 路由设备R2 |
3 | 路由设备R3 | 路由设备R3 |
当主机H1要发送报文给主机H2和主机H3时,主机H1封装如下报文发送给路由设备R1:(IPv6头,IPv6扩展头<携带BIER选项>,UDP头,UDP载荷),其中BIER选项的比特串的第2位和第3位均为1,例如比特串为00000110。
路由设备R1接收到报文后,路由设备R1根据报文中的比特串确定报文要往哪些节点发送。具体地,由于比特串中第2位和第3位均为1,路由设备R1根据路由设备R1上的路由信息,ID=2的节点和ID=3的节点的下一BIER邻居都是路由设备R0,因此路由设备R1将报文向路由设备R0发送,且报文中的比特串仍为00000110。
路由设备R0接收到报文后,路由设备R0根据路由设备R0上保存的路由信息,确定报文要往路由设备R2和路由设备R3发送。路由设备R0对报文进行复制,并对报文中的比特串进行更新,向路由设备R2和路由设备R3分别发送比特串更新后的报文。其中,路由设备R0发送给路由设备R2的报文中比特串更新为00000010,路由设备R0发送给路由设备R3的报文中比特串更新为00000100。
路由设备R2接收到报文后,路由设备R2根据路由设备R2上保存的路由信息,确定报文要往主机H2发送;并且,路由设备R2根据路由设备R2上所配置的对应关系,确定报文在往主机H2发送时需要对报文进行PHP及NAT64的操作,因此路由设备R2发送给主机H2的报文如下:(IPv4头,UDP头,UDP载荷)。报文中IPv4头的目的地址是192.168.2.102,IPv4头的源地址则是根据IPv6头中的源地址2001:db8::1以及前述NAT64源地址对应关系获得,在本例中和源地址2001:db8::1对应的IPv4地址为192.168.1.101,因此报文中的IPv4头的源地址为192.168.1.101;IPv4头中的TTL字段可选地从IPv6头中的hop limit字段获取到,IPv4头中的total len字段可选地根据IPv6头中的载荷长度字段换算出来,IPv4头中的headerchecksum可选地根据IPv4头的各字段计算而来。
路由设备R3接收到报文后,路由设备R3根据路由设备R3上保存的路由信息,确定报文要往主机H3发送;并且,路由设备R3根据路由设备R3上配置的对应关系,确定报文在往主机H3发送时需要对报文进行PHP及NAT64的操作,因此路由设备R3发送给主机H3的报文如下:(IPv4头,UDP头,UDP载荷),其中IPv4头的目的地址是192.168.3.103,IPv4头的源地址则是根据IPv6报文头中的源地址2001:db8::1以及前述NAT64源地址对应关系获得,在本例中和2001:db8::1对应的IPv4地址为192.168.1.101,因此报文中的IPv4头的源地址为192.168.1.101;IPv4头中的TTL字段可以从IPv6头中的hop limit字段获取到,IPv4头中的total len字段可选地根据IPv6头中的载荷长度字段换算出来,IPv4头中的headerchecksum可选地根据IPv4头的各字段计算而来。
在路由设备R2或者路由设备R3弹出IPv6扩展头并将IPv6头改为IPv4头的过程中,可选地,路由设备R2或者路由设备R3还根据IPv6头与IPv4头之间的差异更新UDP头的checksum字段。或者,可选地,路由设备R2或者路由设备R3使用UDP零校验的方法,保持UDP头中的checksum字段为0。
实例4:路由设备PHP并根据主机地址进行迭代生成BIER路由。
实例4中报文转发的场景同样可参考图9。本实施例中,路由设备R0、路由设备R1、路由设备R2与路由设备R3之间运行路由协议,该路由协议例如是IS-IS协议、OSPF协议或BGP协议。
路由协议负责根据主机H1、主机H2或主机H3的地址建立路由信息。例如主机H1、主机H2和主机H3这三台主机的IPv6地址分别是:2001:db8::1、2001:db8::2、2001:db8::2。路由设备R1上建立到这些主机的路由信息;同理,路由设备R0、路由设备R2、路由设备R3也都建立到达这些主机的路由信息。
比如,路由设备R1上建立的路由信息包含下表12示出的内容。
表12
地址 | 可达主机的BIER邻居 |
2001:db8::1 | 主机H1或者到达主机H1的某一个节点 |
2001:db8::2 | 路由设备R0 |
2001:db8::3 | 路由设备R0 |
同理,路由设备R0上建立的路由信息例如包含下表13示出的内容。
表13
地址 | 可达主机的BIER邻居 |
2001:db8::1 | 路由设备R1 |
2001:db8::2 | 路由设备R2 |
2001:db8::3 | 路由设备R3 |
同理,路由设备R2上建立的路由信息例如包含下表14示出的内容。
表14
同理,路由设备R3上建立的路由信息例如包含下表15示出的内容。
表15
地址 | 可达主机的BIER邻居 |
2001:db8::1 | 路由设备R0 |
2001:db8::2 | 路由设备R0 |
2001:db8::3 | 主机H3或者到达主机H3的某一个节点 |
路由设备R1、路由设备R0、路由设备R2和路由设备R3上分别配置主机H1的地址和主机H1的ID的对应关系、主机H2的地址和主机H2的ID的对应关系、主机H3的地址和主机H3的ID的对应关系。这些对应关系可选地在路由设备R1或路由设备R0或路由设备R2或路由设备R3上采用拷贝粘贴的方式配置。例如,路由设备R1、路由设备R0、路由设备R2和路由设备R3将如下的配置粘贴到配置里面。
其中,host表示这是一个主机的信息,其中还包含一层意思是该节点虽然作为BIER节点,但该节点只支持作为BIER的主机行为而不支持BIER的路由转发行为。当报文发送给该节点时要弹出包含BIER选项的IPv6扩展头;end-bier是主机的IPv6地址;BFR-ID是主机的ID;mapping表示此配置为主机的地址和主机的ID的对应关系。
路由设备R1根据上述配置建立主机H1的地址和主机H1的ID的对应关系、主机H2的地址和主机H2的ID的对应关系、主机H3的地址和主机H3的ID的对应关系,路由设备R1不需要通过路由协议发布这些主机的地址和主机ID的对应关系;同时,路由设备R1上还会根据上面的配置信息建立起到达ID=1的路由信息、到达ID=2的路由信息、到达ID=3的路由信息。
同理,路由设备R2根据上述配置建立主机H1的地址和主机H1的ID的对应关系、主机H2的地址和主机H2的ID的对应关系、主机H3的地址和主机H3的ID的对应关系,路由设备R2不需要通过路由协议发布这些主机的地址和主机ID的对应关系;同时,路由设备R2上还会根据上面的配置信息及前述路由信息建立起到达ID=1的路由信息、到达ID=2的路由信息、到达ID=3的路由信息。
同理,路由设备R3根据上述配置建立主机H1的地址和主机H1的ID的对应关系、主机H2的地址和主机H2的ID的对应关系、主机H3的地址和主机H3的ID的对应关系,路由设备R3不需要通过路由协议发布这些主机的地址和主机ID的对应关系;同时,路由设备R3上还会根据上面的配置信息及前述路由信息建立起到达ID=1的路由信息、到达ID=2的路由信息、到达ID=3的路由信息。
同理,路由设备R0根据上述配置建立主机H1的地址和主机H1的ID的对应关系、主机H2的地址和主机H2的ID的对应关系、主机H3的地址和主机H3的ID的对应关系,路由设备R0不需要通过路由协议发布这些主机的地址和主机ID的对应关系;同时,路由设备R0上还会根据上面的配置信息及前述路由信息建立起到达ID=1的路由信息、到达ID=2的路由信息、到达ID=3的路由信息。
比如,路由设备R1上建立的BIER路由信息包含下表16示出的内容。
表16
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 主机H1 | 2001:db8::1 | PHP |
2 | 路由设备R0 | 路由设备R0 | / |
3 | 路由设备R0 | 路由设备R0 | / |
同理,路由设备R2上建立的BIER路由信息例如包含下表17示出的内容。
表17
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 路由设备R0 | 路由设备R0 | / |
2 | 主机H2 | 2001:db8::2 | PHP |
3 | 路由设备R0 | 路由设备R0 | / |
同理,路由设备R3上建立的BIER路由信息例如包含下表18示出的内容。
表18
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 | 动作 |
1 | 路由设备R0 | 路由设备R0 | / |
2 | 路由设备R0 | 路由设备R0 | / |
3 | 主机H3 | 2001:db8::3 | PHP |
同理,路由设备R0上建立的BIER路由信息例如包含下表19示出的内容。
表19
主机的ID | 可达主机的BIER邻居 | BIER邻居的IPv6地址 |
1 | 路由设备R1 | 路由设备R1 |
2 | 路由设备R2 | 路由设备R2 |
3 | 路由设备R3 | 路由设备R3 |
本实施例中,根据主机ID与主机地址之间的对应关系、主机地址与下一BIER邻居之间的对应关系生成BIER路由信息,即所谓的“迭代”生成BIER路由信息;路由设备通过采用迭代的方法,能不需要通过路由协议扩展泛洪主机ID与主机地址之间的对应关系,因为主机ID与主机地址之间的对应关系在每个路由设备上都进行了静态配置。同时该方法又使得每个路由设备上的配置是一致的,每个路由设备只需要保持相同的主机ID与主机地址之间的对应关系,能避免各个设备配置不同而产生错误配置,或减小错误配置的概率。
作为比较,另一种静态配置的方法则是不做迭代,直接配置每个BFR ID或BFR ID范围的下一BIER邻居,则会导致每个路由设备节点上配置不同的信息、节点数较多时容易产生误配置。例如,路由设备R1通过如下配置建立对应关系。
同理,路由设备R2例如通过如下配置建立对应关系。
同理,路由设备R3例如通过如下配置建立两组对应关系。
同理,路由设备R0例如通过如下配置建立两组对应关系。
路由设备R0、路由设备R1、路由设备R2、路由设备R3各节点根据这些配置能直接生成BIER路由信息,而无需根据两个对应关系进行迭代。但相应的代价则是这些节点的配置各不相同、配置较多且容易误配置。
无论采用以上列举的两种配置方式中的哪种配置方式,数据面上报文转发则是相同的,描述如下。
当主机H1要发送报文给主机H2和主机H3时,主机H1封装如下报文发送给路由设备R1:(IPv6头,IPv6扩展头<携带BIER选项>,UDP,UDP载荷)。主机H1发送的报文中BIER选项的比特串的第2位和第3位为1,例如比特串为00000110;
路由设备R1收到报文后,路由设备R1根据报文中的比特串中第2位和第3位为1,确定将报文向ID为2的节点以及ID为3的节点发送。由于路由设备R1上的路由信息中ID为2和ID为3的表项中可达主机的BIER邻居都是路由设备R0,因此路由设备R1根据路由信息,会将报文往路由设备R0发送。并且,路由设备R1发送的报文中的比特串仍为00000110。
路由设备R0接收到报文后,路由设备R0根据报文中的比特串中第2位和第3位为1,确定将报文向ID为2的节点以及ID为3的节点发送。路由设备R0对报文进行复制,并更新报文中的比特串,路由设备R0向路由设备R2和路由设备R3发送比特串更新后的报文。路由设备R0发送给路由设备R2的报文中比特串会更新为00000010,路由设备R0发送给路由设备R3的报文中比特串会更新为00000100。
路由设备R2接收到报文后,路由设备R2根据报文中的比特串中第2位为1,查询路由设备R2的路由信息中ID为2的表项。路由设备R2根据ID为2的表项中可达主机的BIER邻居为主机H2,确定报文要往主机H2发送。路由设备R2根据路由设备R2上所配置的对应关系,确定报文在往主机H2发送时需要对报文进行PHP操作,因此路由设备R2发送给主机H2的报文如下:(IPv6头,UDP,UDP载荷),其中IPv6头的目的地址是2001:db8::2(主机H2的IPv6地址)。
路由设备R3接收到报文后,路由设备R3根据报文中的比特串中第3位为1,查询路由设备R3的路由信息中ID为3的表项。路由设备R3根据ID为3的表项中可达主机的BIER邻居为主机H3,确定报文要往主机H3发送。路由设备R3根据路由设备R3上所配置的对应关系,确定报文在往主机H3发送时需要对报文进行PHP操作,因此路由设备R3发送给主机H3的报文如下:(IPv6头,UDP,UDP载荷),其中IPv6头的目的地址是2001:db8::3(主机H3的IPv6地址)。
在路由设备R2或者路由设备R3弹出IPv6扩展头的过程中,可选地,路由设备R2或者路由设备R3还更新IPv6头的载荷长度字段,并相应的更新UDP头的checksum字段。或者,可选地,路由设备R2或者路由设备R3使用UDP零校验的方法,保持UDP头中的checksum字段为0。
实例5:综合用例
图11是实例5的场景示意图。结合图11来看,图4所示方法中的第二主机为图11中的主机H1,图4所示方法中第一报文为主机H1发送的报文。图4所示方法中的第一路由设备为图11中的路由设备R4,图4所示方法中的第一主机为图11中的主机H3。图4所示方法中第二报文为路由设备R4发送的报文。或者,图4所示方法中的第一路由设备为图11中的路由设备R5,图4所示方法中的第一主机为图11中的主机H4。图4所示方法中第二报文为路由设备R5发送的报文。或者,图4所示方法中的第一路由设备为图11中的路由设备R3,图4所示方法中的第一主机为图11中的主机H2。图4所示方法中第二报文为路由设备R3发送的报文。
本实施例中,路由设备R1、路由设备R2、路由设备R3、路由设备R4之间运行路由协议,该路由协议例如是IS-IS协议、OSPF协议或BGP协议。
主机H1发送BIERv6报文。例如,主机H1发送的报文是{IPv6头,IPv6目的选项头DOH,UDP头,载荷}。报文经过路由设备R1后到达路由设备R2或者路由设备R3。路由设备R2将报文转发给路由设备R4和路由设备R5。
路由设备R3接收到报文时,路由设备R3识别到报文目的地址是路由设备R3的End.BIER地址,则路由设备R3在向主机H2发送报文时会弹出IPv6目的选项头DOH。
路由设备R4接收到报文时,路由设备R4识别到报文目的地址是路由设备R4的End.BIER地址,路由设备R4在向主机H3发送报文时会弹出IPv6目的选项头DOH。
路由设备R5接收到报文时,路由设备R5识别到报文目的地址是路由设备R5的End.BIER地址,路由设备R5在向主机H4发送报文时会弹出IPv6目的选项头DOH。
在报文从路由设备R3发送给主机H2的过程中,报文可能还经过其他设备。例如,报文经过交换机或者负载均衡设备。在报文从路由设备R3发送出去后先经过负载均衡设备再到达主机H2的情况下,报文的目的地址例如2001:db8::2可能是一个负载均衡设备的IP地址,该负载均衡设备再将报文分发给其后的主机H2。本实施例中,LB也能看作本实施例的主机,本实施例对此不作限定。图12是一个路由设备和主机之间还存在交换机和负载均衡设备的组网示意图。
附图13是本申请实施例提供的一种报文转发装置600的结构示意图。报文转发装置600包括接收单元601、处理单元602和发送单元603。
可选地,结合图1示出的RTC场景来看,附图13所示的报文转发装置600设于图1中的路由设备R2。
可选地,结合图2来看,附图13所示的报文转发装置600设于图2中的路由设备R1。
可选地,结合图3来看,附图13所示的报文转发装置600设于图3中的路由设备R2或者图3中的路由设备R3。
可选地,结合附图4来看,附图13所示的报文转发装置600设于图4中的第一路由设备。接收单元601用于支持报文转发装置600执行S402。处理单元602用于支持报文转发装置600执行S403。发送单元603用于支持报文转发装置600执行S404。
可选地,结合图8来看,附图13所示的报文转发装置600设于图8中的路由设备R1。
可选地,结合图9来看,附图13所示的报文转发装置600设于图9中的路由设备R2或者图9中的路由设备R3。
可选地,结合图10来看,附图13所示的报文转发装置600设于图10中的路由设备R2或者图10中的路由设备R3。
可选地,结合图11来看,附图13所示的报文转发装置600设于图11中的路由设备R3或者图11中的路由设备R4或者图11中的路由设备R5。
附图13所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
报文转发装置600中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。
例如,结合图14来看,上述处理单元602是由附图14中的至少一个处理器701读取存储器702中存储的程序代码后,生成的软件功能单元来实现。或者处理单元602由附图14中的至少一个处理器701中的一部分处理资源(例如多核处理器中的一个核或两个核)实现,或者采用现场可编程门阵列(field-programmable gate array,FPGA)、或协处理器等可编程器件来完成。接收单元601和发送单元603由附图14中的网络接口703实现。
又如,结合图14来看,上述处理单元602是由附图15中接口板830上的中央处理器831或者接口板830上的网络处理器832或者主控板810上的中央处理器811读取存储器中存储的程序代码后,生成的软件功能单元来实现。或者处理单元602由附图14中接口板830上的中央处理器831或者接口板830上的网络处理器832或者主控板810上的中央处理器811中的一部分处理资源(例如多核处理器中的一个核或两个核)实现,或者采用现场可编程门阵列(field-programmable gate array,FPGA)、或协处理器等可编程器件来完成。接收单元601和发送单元603由附图14中接口板830上的网络处理器832和物理接口卡833实现。
附图14是本申请实施例提供的一种路由设备700的结构示意图。路由设备700包括至少一个处理器701、存储器702以及至少一个网络接口703。
可选地,结合图1示出的RTC场景来看,附图14所示的路由设备700为图1中的路由设备R2。
可选地,结合图2来看,附图14所示的路由设备700为图2中的路由设备R1。
可选地,结合图3来看,附图14所示的路由设备700为图3中的路由设备R2或者图3中的路由设备R3。
可选地,结合附图4来看,附图14所示的路由设备700为图4中的第一路由设备。网络接口703用于支持路由设备700执行S402和S404。处理器701用于支持路由设备700执行S403。
可选地,结合图8来看,附图14所示的路由设备700为图8中的路由设备R1。
可选地,结合图9来看,附图14所示的路由设备700为图9中的路由设备R2或者图9中的路由设备R3。
可选地,结合图10来看,附图14所示的路由设备700为图10中的路由设备R2或者图10中的路由设备R3。
可选地,结合图11来看,附图14所示的路由设备700为图11中的路由设备R3或者图11中的路由设备R4或者图11中的路由设备R5。
处理器701例如是通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing units,NPU)、数据处理单元(data processing unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器701包括专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。PLD例如是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器702例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。可选地,存储器702独立存在,并通过内部连接704与处理器701相连接。或者,可选地存储器702和处理器701集成在一起。
网络接口703使用任何收发器一类的装置,用于与其他设备或通信网络通信。网络接口703例如包括有线网络接口或者无线网络接口中的至少一项。其中,有线网络接口例如为以太网接口。以太网接口例如是光接口,电接口或其组合。无线网络接口例如为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络接口或其组合等。
在一些实施例中,处理器701包括一个或多个CPU,如附图14中所示的CPU0和CPU1。
在一些实施例中,路由设备700可选地包括多个处理器,如附图14中所示的处理器701和处理器705。这些处理器中的每一个例如是一个单核处理器(single-CPU),又如是一个多核处理器(multi-CPU)。这里的处理器可选地指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在一些实施例中,路由设备700还包括内部连接704。处理器701、存储器702以及至少一个网络接口703通过内部连接704连接。内部连接704包括通路,在上述组件之间传送信息。可选地,内部连接704是单板或总线。可选地,内部连接704分为地址总线、数据总线、控制总线等。
在一些实施例中,路由设备700还包括输入输出接口706。输入输出接口706连接到内部连接704上。
可选地,处理器701通过读取存储器702中保存的程序代码710实现上述实施例中的方法,或者,处理器701通过内部存储的程序代码实现上述实施例中的方法。在处理器701通过读取存储器702中保存的程序代码710实现上述实施例中的方法的情况下,存储器702中保存实现本申请实施例提供的方法的程序代码。
处理器701实现上述功能的更多细节请参考前面各个方法实施例中的描述,在这里不再重复。
参见附图15,附图15是本申请实施例提供的一种路由设备800的结构示意图。路由设备800包括:主控板810和接口板830。
可选地,结合图1示出的RTC场景来看,附图15所示的路由设备800为图1中的路由设备R2。
可选地,结合图2来看,附图15所示的路由设备800为图2中的路由设备R1。
可选地,结合图3来看,附图15所示的路由设备800为图3中的路由设备R2或者图3中的路由设备R3。
可选地,结合附图4来看,附图15所示的路由设备800为图4中的第一路由设备。网络接口703用于支持路由设备700执行S402和S404。处理器701用于支持路由设备700执行S403。
可选地,结合图8来看,附图15所示的路由设备800为图8中的路由设备R1。
可选地,结合图9来看,附图15所示的路由设备800为图9中的路由设备R2或者图9中的路由设备R3。
可选地,结合图10来看,附图15所示的路由设备800为图10中的路由设备R2或者图10中的路由设备R3。
可选地,结合图11来看,附图15所示的路由设备800为图11中的路由设备R3或者图11中的路由设备R4或者图11中的路由设备R5。
主控板810也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板810用于对路由设备800中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板810包括:中央处理器811和存储器812。
接口板830也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板830用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(packet over sONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE clients)。接口板830包括:中央处理器831、网络处理器832、转发表项存储器834和物理接口卡(physical interface card,PIC)833。
接口板830上的中央处理器831用于对接口板830进行控制管理并与主控板810上的中央处理器811进行通信。
网络处理器832用于实现报文的转发处理。网络处理器832的形态例如是转发芯片。具体而言,网络处理器832用于基于转发表项存储器834保存的转发表转发接收到的报文,如果报文的目的地址为路由设备800的地址,则将该报文上送至CPU(如中央处理器811)处理;如果报文的目的地址不是路由设备800的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理包括:报文入接口的处理,转发表查找;下行报文的处理:转发表查找等等。
物理接口卡833用于实现物理层的对接功能,原始的流量由此进入接口板830,以及处理后的报文从该物理接口卡833发出。物理接口卡833也称为子卡,可安装在接口板830上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器832处理。在一些实施例中,中央处理器也可执行网络处理器832的功能,比如基于通用CPU实现软件转发,从而物理接口卡833中不需要网络处理器832。
可选地,路由设备800包括多个接口板,例如路由设备800还包括接口板840,接口板840包括:中央处理器841、网络处理器842、转发表项存储器844和物理接口卡843。
可选地,路由设备800还包括交换网板820。交换网板820也例如称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板830的情况下,交换网板820用于完成各接口板之间的数据交换。例如,接口板830和接口板840之间例如通过交换网板820通信。
主控板810和接口板830耦合。例如。主控板810、接口板830和接口板840,以及交换网板820之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板810和接口板830之间建立进程间通信协议(inter-process communication,IPC)通道,主控板810和接口板830之间通过IPC通道进行通信。
在逻辑上,路由设备800包括控制面和转发面,控制面包括主控板810和中央处理器831,转发面包括执行转发的各个组件,比如转发表项存储器834、物理接口卡833和网络处理器832。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器832基于控制面下发的转发表对物理接口卡833收到的报文查表转发。控制面下发的转发表例如保存在转发表项存储器834中。在有些实施例中,控制面和转发面例如完全分离,不在同一设备上。
接口板840上的操作与接口板830的操作一致,为了简洁,不再赘述。本实施例的路由设备800可对应于上述各个方法实施例中的第一路由设备,该路由设备800中的主控板810、接口板830和/或840例如实现上述各个方法实施例中第一路由设备所具有的功能和/或所实施的各种步骤,为了简洁,在此不再赘述。
主控板可能有一块或多块,有多块的时候例如包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分可互相参考,每个实施例重点说明的都是与其他实施例的不同之处。
A参考B,指的是A与B相同或者A为B的简单变形。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序,也不能理解为指示或暗示相对重要性。例如,第一报文和第二报文用于区别不同的报文,而不是用于描述报文的特定顺序,也不能理解为第一报文比第二报文更重要。
本申请实施例,除非另有说明,“至少一个”的含义是指一个或多个,“多个”的含义是指两个或两个以上。例如,多个IPv6扩展头是指两个或两个以上的IPv6扩展头。
上述实施例可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例描述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolID State Disk(SSD))等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (26)
1.一种报文转发方法,其特征在于,所述方法包括:
第一路由设备接收第一报文,所述第一报文包括第一互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;
所述第一路由设备基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述第一IPv6头获得的第二IPv6头;
所述第一路由设备向作为BIER邻居的第一主机发送所述第二报文。
2.根据权利要求1所述的方法,其特征在于,所述BIER选项包括比特串,所述第一路由设备基于所述第一报文获得第二报文,包括:
所述第一路由设备根据所述比特串,获得指示信息,所述指示信息用于指示弹出包含所述BIER选项的所述第一IPv6扩展头;
所述第一路由设备基于所述指示信息和所述第一报文,获得所述第二报文。
3.根据权利要求2所述的方法,其特征在于,所述第一路由设备根据所述比特串,获得指示信息,包括:
所述第一路由设备根据所述比特串,获得所述第一主机的标识;
所述第一路由设备根据对应关系和所述第一主机的标识,获得所述指示信息,所述对应关系包括所述指示信息和所述第一主机的标识。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述上层头为用户数据报协议UDP头,所述上层载荷为UDP载荷。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一报文还包括至少一个第二IPv6扩展头,所述第一报文包括的所述至少一个第二IPv6扩展头封装于所述第一IPv6头和所述上层头之间,所述第二报文还包括所述至少一个第二IPv6扩展头,所述第二报文包括的所述至少一个第二IPv6扩展头封装于所述第二IPv6头和所述上层头之间,所述至少一个第二IPv6扩展头不包括所述BIER选项。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位,所述第一路由设备接收第一报文之前,所述方法还包括:
所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识。
7.根据权利要求6所述的方法,其特征在于,所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识,包括:
所述第一路由设备生成路由协议报文,所述路由协议报文包括所述第一主机的标识,所述路由协议报文为中间系统到中间系统IS-IS报文、开放式最短路径优先OSPF报文或者边界网关协议BGP报文;
所述第一路由设备在所述BIER域的路由设备之间发布所述路由协议报文。
8.一种报文转发方法,其特征在于,所述方法包括:
第一路由设备接收第一报文,所述第一报文包括互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;
所述第一路由设备基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述IPv6头所获得的IPv4头;
所述第一路由设备向作为BIER邻居的第一主机发送所述第二报文。
9.根据权利要求8所述的方法,其特征在于,所述BIER选项包括比特串,所述第一路由设备基于所述第一报文获得第二报文,包括:
所述第一路由设备根据所述比特串,获得指示信息和所述第一主机的IPv4地址,所述指示信息用于指示包含所述BIER选项的所述第一IPv6扩展头并将所述IPv6头替换为所述IPv4头;
所述第一路由设备基于所述指示信息、所述第一主机的IPv4地址和所述第一报文,获得所述第二报文,所述第二报文的所述IPv4头中的目的地址为所述第一主机的IPv4地址。
10.根据权利要求9所述的方法,其特征在于,所述第一路由设备根据所述比特串,获得指示信息和所述第一主机的IPv4地址,包括:
所述第一路由设备根据所述比特串,获得所述第一主机的标识;
所述第一路由设备根据第一对应关系和所述第一主机的标识,获得所述指示信息和所述第一主机的IPv4地址,所述第一对应关系包括所述指示信息、所述第一主机的标识和所述第一主机的IPv4地址。
11.根据权利要求8至10中任一项所述的方法,其特征在于,所述上层头为用户数据报协议UDP头,所述上层载荷为UDP载荷。
12.根据权利要求8至11中任一项所述的方法,其特征在于,所述第一报文还包括至少一个第二IPv6扩展头,所述第一报文中所述至少一个第二IPv6扩展头封装于所述IPv6头和所述上层头之间。
13.根据权利要求8至12中任一项所述的方法,其特征在于,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位,所述第一路由设备接收第一报文之前,所述方法还包括:
所述第一路由设备在BIER域的路由设备之间发布所述第一主机的标识。
14.根据权利要求8至13中任一项所述的方法,其特征在于,所述方法还包括:
所述第一路由设备在BIER域的路由设备之间发布所述第一主机的IPv6地址与所述第一主机的IPv4地址之间的对应关系。
15.一种报文转发装置,其特征在于,所述装置设于第一路由设备,所述装置包括:
接收单元,用于接收第一报文,所述第一报文包括第一互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;
处理单元,用于基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述第一IPv6头获得的第二IPv6头;
发送单元,用于向作为BIER邻居的第一主机发送所述第二报文。
16.根据权利要求15所述的装置,其特征在于,所述BIER选项包括比特串,所述处理单元,用于根据所述比特串,获得指示信息,所述指示信息用于指示弹出包含所述BIER选项的所述第一IPv6扩展头;基于所述指示信息和所述第一报文,获得所述第二报文。
17.根据权利要求16所述的装置,其特征在于,所述处理单元,用于根据所述比特串,获得所述第一主机的标识;根据对应关系和所述第一主机的标识,获得所述指示信息,所述对应关系包括所述指示信息和所述第一主机的标识。
18.根据权利要求15至17中任一项所述的装置,其特征在于,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位,所述发送单元,还用于在BIER域的路由设备之间发布所述第一主机的标识。
19.根据权利要求18所述的装置,其特征在于,
所述处理单元,还用于生成路由协议报文,所述路由协议报文包括所述第一主机的标识,所述路由协议报文为中间系统到中间系统IS-IS报文、开放式最短路径优先OSPF报文或者边界网关协议BGP报文;
所述发送单元,用于在所述BIER域的路由设备之间发布所述路由协议报文。
20.一种报文转发装置,其特征在于,所述装置设于第一路由设备,所述装置包括:
接收单元,用于接收第一报文,所述第一报文包括互联网协议第6版IPv6头、第一IPv6扩展头、上层头和上层载荷,所述第一IPv6扩展头包括基于比特位的显式复制BIER选项;
处理单元,用于基于所述第一报文获得第二报文,所述第二报文包括所述上层头、所述上层载荷和基于所述IPv6头所获得的IPv4头;
发送单元,用于向作为BIER邻居的第一主机发送所述第二报文。
21.根据权利要求20所述的装置,其特征在于,所述BIER选项包括比特串,所述处理单元,用于根据所述比特串,获得指示信息和所述第一主机的IPv4地址,所述指示信息用于指示包含所述BIER选项的所述第一IPv6扩展头并将所述IPv6头替换为所述IPv4头;基于所述指示信息、所述第一主机的IPv4地址和所述第一报文,获得所述第二报文,所述第二报文的所述IPv4头中的目的地址为所述第一主机的IPv4地址。
22.根据权利要求21所述的装置,其特征在于,所述处理单元,用于根据所述比特串,获得所述第一主机的标识;根据第一对应关系和所述第一主机的标识,获得所述指示信息和所述第一主机的IPv4地址,所述第一对应关系包括所述指示信息、所述第一主机的标识和所述第一主机的IPv4地址。
23.根据权利要求20至22中任一项所述的装置,其特征在于,所述第一报文的所述BIER选项包括比特串,所述比特串包括与所述第一主机的标识对应的第一比特位,所述比特串中所述第一比特位被置位,所述发送单元,还用于在BIER域的路由设备之间发布所述第一主机的标识。
24.根据权利要求20至23中任一项所述的装置,其特征在于,所述发送单元,还用于在BIER域的路由设备之间发布所述第一主机的IPv6地址与所述第一主机的IPv4地址之间的对应关系。
25.一种路由设备,其特征在于,所述路由设备包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条计算机程序指令,所述至少一条计算机程序指令由所述处理器加载并执行,以使所述路由设备实现权利要求1-14中任一项所述的方法。
26.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令在计算机上运行时,使得计算机执行如权利要求1至权利要求14中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/096579 WO2023029627A1 (zh) | 2021-09-02 | 2022-06-01 | 报文转发方法、装置、设备及存储介质 |
EP22862769.1A EP4387189A1 (en) | 2021-09-02 | 2022-06-01 | Packet forwarding method, apparatus, device, and storage medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021110264171 | 2021-09-02 | ||
CN202111026417 | 2021-09-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115733790A true CN115733790A (zh) | 2023-03-03 |
Family
ID=85292466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111266438.0A Pending CN115733790A (zh) | 2021-09-02 | 2021-10-28 | 报文转发方法、装置、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4387189A1 (zh) |
CN (1) | CN115733790A (zh) |
WO (1) | WO2023029627A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965134B (zh) * | 2017-05-23 | 2022-04-29 | 中兴通讯股份有限公司 | 报文转发方法及装置 |
CN114189473B (zh) * | 2019-06-06 | 2023-07-14 | 华为技术有限公司 | 一种报文的发送方法和装置 |
CN112737954B (zh) * | 2019-10-14 | 2022-09-23 | 华为技术有限公司 | 报文处理方法、装置、系统、设备及存储介质 |
CN112769745B (zh) * | 2019-11-01 | 2022-07-22 | 华为技术有限公司 | 传输组播报文的方法和相关装置 |
CN112491718A (zh) * | 2020-08-31 | 2021-03-12 | 中兴通讯股份有限公司 | 报文头的处理方法及装置、存储介质、电子装置 |
-
2021
- 2021-10-28 CN CN202111266438.0A patent/CN115733790A/zh active Pending
-
2022
- 2022-06-01 EP EP22862769.1A patent/EP4387189A1/en active Pending
- 2022-06-01 WO PCT/CN2022/096579 patent/WO2023029627A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4387189A1 (en) | 2024-06-19 |
WO2023029627A1 (zh) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11303515B2 (en) | IP MPLS PoP virtualization and fault tolerant virtual router | |
AU2014363687B2 (en) | Establishing a data transfer connection | |
CN112787931B (zh) | 报文传输方法、代理节点及存储介质 | |
US10038766B2 (en) | Partial reassembly and fragmentation for decapsulation | |
KR20220007736A (ko) | Bier 패킷 송신 방법 및 장치 | |
JP2023549797A (ja) | Bierパケット転送方法、デバイス、及びシステム | |
CN111937358A (zh) | 用于结构边缘设备的多vrf通用设备互联网协议地址 | |
CN112737954B (zh) | 报文处理方法、装置、系统、设备及存储介质 | |
CN112583718B (zh) | 一种SRoU场景下SRv6报文传递方法、系统、设备及介质 | |
US20230291682A1 (en) | Method and device for processing data packet, storage medium, and electronic device | |
WO2022068436A1 (zh) | 业务处理方法以及相关设备 | |
WO2022117018A1 (zh) | 报文传输的方法和装置 | |
WO2022007702A1 (zh) | 一种报文处理方法及网络设备 | |
WO2024001701A1 (zh) | 数据处理方法、装置及系统 | |
WO2021052381A1 (zh) | 报文的发送方法和装置 | |
US20210084125A1 (en) | Managing layer two network extension communications using maximum segment size (mms) modifications | |
WO2023029627A1 (zh) | 报文转发方法、装置、设备及存储介质 | |
CN113285878A (zh) | 负载分担的方法、第一网络设备 | |
CN115426305B (zh) | 报文处理方法、装置、系统及存储介质 | |
WO2022116615A1 (zh) | 报文传输的方法、获取对应关系的方法、装置及系统 | |
JP7119170B2 (ja) | Bierv6パケット転送方法、デバイス、およびシステム | |
WO2023078144A1 (zh) | 报文处理方法、装置及系统 | |
WO2023169364A1 (zh) | 路由生成方法、数据报文的转发方法及装置 | |
WO2023088145A1 (zh) | 一种报文处理方法、装置及设备 | |
Nakamura et al. | ovstack: A protocol stack of common data plane for overlay networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |