CN113824638B - 一种转发报文的方法、设备和系统 - Google Patents
一种转发报文的方法、设备和系统 Download PDFInfo
- Publication number
- CN113824638B CN113824638B CN202010923722.XA CN202010923722A CN113824638B CN 113824638 B CN113824638 B CN 113824638B CN 202010923722 A CN202010923722 A CN 202010923722A CN 113824638 B CN113824638 B CN 113824638B
- Authority
- CN
- China
- Prior art keywords
- length
- sid
- segment
- network device
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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
-
- 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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- 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/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
-
- 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/04—Protocols for data compression, e.g. ROHC
-
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种转发报文的方法。在该方法中,第一网络设备生成第一报文,第一报文包括对应于第一报文的转发路径的段列表,段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,第一类型的压缩段标识的长度为第一长度,第二类型的压缩段标识的长度为第二长度,第一长度小于第二长度,第一网络设备根据段列表发送第一报文。该方法能够在段列表中混合编排不同长度的压缩段标识,进一步缩短段列表的长度,提高网络传输效率。
Description
技术领域
本申请涉及通信领域,尤其涉及一种在段路由(segment routing,SR)网络中转发报文的方法、设备和系统。
背景技术
SR是一种基于源路由理念设计的、在网络上转发数据包的协议,支持在源节点显式指定数据包转发路径。当SR部署在互联网协议版本6(Internet Protocol Version 6,IPv6)数据平面上时,称为IPv6 segment routing(SRv6)。SRv6在IPv6的基础上扩展了段路由头(segment routing header,SRH)。
SRH包括段列表(segment list),也称为段标识列表(segment identifier list,SID list)。SID list包括依次排列的多个段标识(SID),分别表示多个段,每个段为处理报文的指令或指令集合。SRH被封装在报文中,通过其中的段标识列表承载SR网络对该报文的处理过程。SRv6网络中的每个SID的长度为128比特(bit),则SID list中每增加一个SID,SRH的长度就会增加128bit,报文的长度也会增加128bit。一方面,报文长度增加将导致转发过程中占用大量的网络资源,如:带宽。举例来说,当报文处理过程包括100个段时,SRH需要包括100个SID,SID list长度高达1600字节,SID list长度过长,降低SR网络中报文传输的效率。另一方面,SRH长度过长将增加报文处理难度。举例来说,网络设备一次读取的报文窗长度是有限的,例如128字节,如果SRH的长度为1600字节,将远超一次读取的报文窗长度,整个SRH的读取过程需要通过多次读取操作才能完成,增加报文处理难度。
发明内容
提供了一种转发报文的方法、设备和系统,用于解决段标识列表长度过长导致网络传输效率降低和处理效率降低的技术问题。
第一方面,提供了一种一种转发报文的方法。该方法包括:第一网络设备生成报文,所述报文包括对应于所述报文的转发路径的段列表,所述段列表包括依次排列的段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;所述第一网络设备根据所述段列表发送所述报文。
该方法的执行主体可以是报文转发路径的入口设备,在对应转发路径的段列表中,可以将长度为第一长度的压缩段标识称为第一类型的压缩段标识,将长度为第二长度的压缩段标识称为第二类型的压缩段标识,并且第一长度小于第二长度。通过该方法,段列表中混合编排不同长度的压缩段标识,能够进一步缩短段列表的长度,提高网络效率。
在一种可能的实现方式中,所述第一长度为单位长度的X倍,所述第二长度为所述单位长度的Y倍,所述X,Y均为整数。也就是说,所述第一长度和所述第二长度均为单位长度的整数倍。
在一种可能的实现方式中,所述单位长度等于所述第一长度。也就是说,所述第二长度为所述第一长度的整数倍。
在一种可能的实现方式中,所述单位长度为2的N次幂比特,所述N为大于等于3且小于7的整数。例如,所述单位长度可以为8比特,16比特或32比特等。
在一种可能的实现方式中,所述第一长度为16比特,所述第二长度为32比特。
当所述第一长度和所述第二长度满足上述关系时,能够更好地兼容SRv6网络的转发机制,简化网络部署。
在一种可能的实现方式中,所述第二类型的压缩段标识包括全局链路压缩段标识,所述全局链路压缩段标识指示所述转发路径上的特定网络设备通过特定链路转发所述报文。长度较长的第二类型的压缩段标识可以用于全局的END.X,即全局链路压缩段标识,从而在网络规划时,能够针对全局链路压缩段标识进行单独规划,例如将全局链路压缩段标识的长度规划为32比特,而将全局节点压缩段标识的长度规划为16比特,从而进一步缩短全局节点压缩段标识的长度,进而缩短整个段列表的长度。
在一种可能的实现方式中,所述全局链路压缩段标识包括节点部分和链路部分,所述节点部分用于标识节点,所述链路部分用于标识链路,所述节点部分的长度与所述第一长度相同,所述链路部分的长度与所述第一长度相同。其中,所述节点部分可以是全局节点压缩段标识,所述链路部分可以是本地链路压缩段标识,即全局链路压缩段标识由全局节点压缩段标识和本地链路压缩段标识组合而成。从而,增加标识之间的逻辑关联,便于网络规划。
在一种可能的实现方式中,所述压缩段标识还包括第三类型的压缩段标识,所述第三类型的压缩段标识的长度为第三长度,所述第三长度大于所述第一长度,并且所述第三长度小于所述第二长度。也就是说,所述压缩段标识的长度类型可以为两种或两种以上。
在一种可能的实现方式中,所述段列表包括长度为128比特的元素,所述元素中包括所述第一类型的压缩段标识和所述第二类型的压缩段标识。即所述第一类型的压缩段标识和所述第二类型的压缩段标识可以包括在同一个元素中。
在一种可能的实现方式中,所述段列表还包括以下至少一种标识:长度为128比特的互联网协议版本6段路由SRv6段标识、多协议标签交换MPLS标签和互联网协议版本4IPv4地址。该方法也适用于混合路径的SRv6网络,例如,段列表中还可以包括128比特的SID、MPLS标签或IPv4地址等。
在一种可能的实现方式中,所述压缩段标识包括第一压缩段标识,所述第一压缩段标识用于指示所述第一压缩段标识在所述段列表中的后一个标识是否为所述压缩段标识;其中,所述第一压缩段标识属于所述第一类型的压缩段标识,或者所述第一压缩段标识属于所述第二类型的压缩段标识。所述压缩段标识中可以承载压缩持续信息,压缩持续信息用于指示当前压缩段标识在所述段列表中的后一个标识仍然为压缩段标识。
在一种可能的实现方式中,所述第一压缩段标识的功能字段用于指示所述后一个标识是否为所述压缩段标识,或者,所述第一压缩段标识中的一个或多个比特用于指示所述后一个标识是否为所述压缩段标识。可选的,压缩持续信息可以承载在压缩段标识的功能字段中,例如,当压缩段标识的功能字段对应特定类型的特点(flavor)时,表明该压缩段标识承载有压缩持续信息。可选的,也可以在压缩段标识中划分出一个或多个比特,用于承载压缩持续信息。
在一种可能的实现方式中,所述报文的报文头包括第一指针和第二指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在长度为128比特的元素中的位置,所述第二指针的值用于指示所述元素在所述段列表中的位置;或者,所述报文的报文头包括第一指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在所述段列表中的位置。包括压缩段标识的段列表可以采用二维指针或一维指针。
在一种可能的实现方式中,所述第一指针的值为M,所述M为128比特除以所述单位长度所得的值,或者,所述M为段列表中所有元素的长度之和除以所述单位长度所得的值,所述元素的长度为128比特。在转发路径的入口设备处,所述第一指针的值被设置为初始值。当段列表采用二维指针时,该第一指针的初始值为128比特除以所述单位长度所得的值,当段列表采用一维指针时,该第一指针的初始值为段列表中所有元素的长度之和除以所述单位长度所得的值。
在一种可能的实现方式中,所述方法还包括:所述第一网络设备确定所述转发路径;所述第一网络设备生成对应于所述转发路径的所述段列表。
在一种可能的实现方式中,所述方法还包括:所述第一网络设备从网络中的控制器接收所述段列表。
所述转发路径可以由转发路径的入口设备生成,也可以由网络中的控制器生成。
在一种可能的实现方式中,所述第一类型的压缩段标识对应的段标识的前缀与所述第二类型的压缩段标识对应的段标识的前缀相同。所述第一类型的压缩段标识与所述第二类型的压缩段标识位于同一段SRv6压缩子路径中。
第二方面,提供了一种转发报文的方法。所述方法包括:第一网络设备接收第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;所述第一网络设备确定所述第一报文的报文头的目的地址字段的内容与本地段标识匹配;响应于确定所述目的地址字段的内容与所述本地段标识匹配,所述第一网络设备根据所述本地段标识的指示在所述段列表中确定待拷贝内容;所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文;所述第一网络设备发送所述第二报文。
该方法的执行主体可以是报文转发路径上除入口设备以外的其他网络设备,在对应转发路径的段列表中,可以将长度为第一长度的压缩段标识称为第一类型的压缩段标识,将长度为第二长度的压缩段标识称为第二类型的压缩段标识,并且第一长度小于第二长度。在该方法中,网络设备根据本地段标识的指示在所述段列表中确定待拷贝内容,以适应于段列表中混合编排的不同长度的压缩段标识。
在一种可能的实现方式中,所述第一网络设备根据所述本地段标识的指示在所述段列表中确定待拷贝内容,包括:所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置;所述第一网络设备根据所述待拷贝内容在所述段列表中的位置确定所述待拷贝内容。网络设备根据本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置,从而当段列表中混合编排不同长度的压缩段标识时,仍然能够确定所述待拷贝内容在所述段列表中的位置。
在一种可能的实现方式中,所述第一报文的报文头包括第一指针和第二指针;所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置,包括:所述第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值;所述第一网络设备根据所述第一指针的值确定所述待拷贝内容在长度为128比特的元素中的位置,所述元素包括在所述段列表中;所述第一网络设备根据所述第二指针的值确定所述元素在所述段列表中的位置。当段列表采用二维指针时,第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值。
在一种可能的实现方式中,所述第一报文的报文头包括第一指针;所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置,包括:所述第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值;所述第一网络设备根据所述第一指针的值确定所述待拷贝内容在所述段列表中的位置。当段列表采用一维指针时,第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值。
在一种可能的实现方式中,所述本地段标识指示的长度为所述第一类型的压缩段标识的长度的整数倍,所述第一网络设备根据本地段标识指示的长度确定所述第一指针的值,包括:所述第一网络设备读取所述第一报文的报文头中所述第一指针的原始值;所述第一网络设备将所述第一指针的原始值减去更新值,以获得所述第一指针的值,其中,所述更新值等于所述本地段标识指示的长度除以所述第一类型的压缩段标识的长度所得的倍数值。例如,所述本地段标识指示的长度可以是所述第一类型的压缩段标识的长度,则所述更新值为1;或者,所述本地段标识指示的长度可以是所述第二类型的压缩段标识的长度,则所述更新值为2。
在一种可能的实现方式中,所述本地段标识指示的长度为第一压缩段标识的长度,所述第一压缩段标识包括在所述第一报文的报文头的目的地址字段,所述第一压缩段标识为所述本地段标识对应的压缩段标识。也就是说,所述本地段标识指示的长度即为所述本地段标识对应的所述段列表中的压缩段标识的长度。
在一种可能的实现方式中,所述第二报文的报文头中包括所述第一指针的值。
在一种可能的实现方式中,所述本地段标识用于指示所述待拷贝内容是否包括所述压缩段标识,当所述待拷贝内容包括所述压缩段标识时,所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文,包括:所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中包含前缀的字段之后,所述待拷贝内容的长度与所述第二类型的压缩段标识的长度相同;当所述待拷贝内容不包括所述压缩段标识时,所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文,包括:所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,所述待拷贝内容的长度为128比特。所述本地段标识中可以承载压缩持续信息,压缩持续信息用于指示本地段标识在段列表中对应的标识在所述段列表中的后一个标识仍然为压缩段标识,也即所述待拷贝内容是否包括所述压缩段标识。当所述待拷贝内容包括所述压缩段标识时,按照长度较长的压缩段标识的长度确定所述待拷贝内容的长度,即所述待拷贝内容的长度与所述第二类型的压缩段标识的长度相同;当所述待拷贝内容不包括所述压缩段标识时,即所述待拷贝内容为128长度的SID,则所述待拷贝内容的长度为128比特。
在一种可能的实现方式中,在所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文之前,所述方法还包括:所述第一网络设备判断所述待拷贝内容是否包括所述压缩段标识;当所述第一网络设备确定所述待拷贝内容包括所述压缩段标识时,所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文,包括:所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中的包含前缀的字段之后,所述待拷贝内容的长度与所述第二类型的压缩段标识的长度相同;当所述所述第一网络设备确定待拷贝内容不包括所述压缩段标识时,所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文,包括:所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,所述待拷贝内容的长度为128比特。在当前标识为元素中的最后一个子元素时,第一网络设备解析段列表中下一个元素的部分内容,即所述第一网络设备解析所述待拷贝内容。当所述待拷贝内容包括所述压缩段标识时,按照长度较长的压缩段标识的长度确定所述待拷贝内容的长度,即所述待拷贝内容的长度与所述第二类型的压缩段标识的长度相同;当所述待拷贝内容不包括所述压缩段标识时,即所述待拷贝内容为128长度的SID,则所述待拷贝内容的长度为128比特。
在一种可能的实现方式中,所述待拷贝内容包括第一标识,所述待拷贝内容的长度大于等于所述第一标识的长度;其中,所述第一标识对应于所述第一网络设备在所述转发路径上的下一跳网络设备,或者所述第一标识对应于所述下一跳网络设备的链路。也就是说,所述第一标识为所述本地段标识在段列表中对应的标识在所述段列表中的后一个标识。所述待拷贝内容的长度可以与所述第二类型的压缩段标识的长度相同,则所述待拷贝内容的长度大于等于所述第一标识的长度,例如,当所述第一标识属于第一类型的压缩段标识时,所述待拷贝内容的长度大于所述第一标识的长度。
第三方面,提供一种发送段列表的方法。所述方法包括:第一网络设备确定报文的转发路径;所述第一网络设备生成对应于所述转发路径的所述第一段列表,所述第一段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中的每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。
该方法的执行主体可以是报文转发路径的入口设备或网络中的控制器,在对应转发路径的段列表中,可以将长度为第一长度的压缩段标识称为第一类型的压缩段标识,将长度为第二长度的压缩段标识称为第二类型的压缩段标识,并且第一长度小于第二长度。通过该方法,段列表中混合编排不同长度的压缩段标识,能够进一步缩短段列表的长度,提高网络效率。
在一种可能的实现方式中,所述第一网络设备生成对应于所述转发路径的第一段列表,包括:所述第一网络设备获得对应所述转发路径的第二段列表,第二段列表包括依次排列的多个段标识,所述多个段标识中的每个段标识的长度为128比特;所述第一网络设备根据所述第二段列表生成所述第一段列表。
在一种可能的实现方式中,所述多个段标识中的每个段标识中的前缀相同,所述第一网络设备根据所述第二列表生成所述第一段列表,包括:所述第一网络设备分别删除所述多个段标识中的每个段标识的前缀,以生成多个压缩段标识中的每个压缩段标识,所述多个压缩段标识中的每个压缩段标识分别包括所述多个段标识中的每个段标识的节点标识,所述多个压缩段标识包括所述第一类型的压缩段标识和所述第二类型的压缩段标识。
在一种可能的实现方式中,所述第一网络设备生成对应于所述转发路径的所述第一段列表,包括:所述第一网络设备根据多个段标识获得所述多个压缩段标识,所述多个段标识中的每个段标识的长度为128比特;所述第一网络设备根据所述多个压缩段标识生成所述第一段列表。
在一种可能的实现方式中,所述多个段标识中的每个段标识中的前缀相同,所述第一网络设备根据多个段标识获得所述多个压缩段标识,包括:所述第一网络设备分别删除所述多个段标识中的每个段标识的前缀,以生成多个压缩段标识中的每个压缩段标识,所述多个压缩段标识中的每个压缩段标识分别包括所述多个段标识中的每个段标识的节点标识,所述多个压缩段标识包括所述第一类型的压缩段标识和所述第二类型的压缩段标识。
在一种可能的实现方式中,所述前缀用于指示所述每个段标识对应的网络设备或链路所属的子网,所述节点标识用于在所述子网中指示所述每个段标识对应的网络设备或链路。
如上所述,为了获得包括所述压缩段标识的段列表,可以先获得包括段标识的段列表,再将包括段标识的段列表中的段标识进行压缩,将其中的段标识替换为对应的压缩段标识,获得包括所述压缩段标识的段列表;或者,也可以先将段标识进行压缩,获得对应的压缩段标识,再根据压缩段标识获得包括所述压缩段标识的段列表。
在一种可能的实现方式中,所述第一网络设备为网络中的控制器,所述方法还包括:所述第一网络设备向所述转发路径的入口设备发送所述第一段列表。
在一种可能的实现方式中,所述第一网络设备为所述转发路径的入口设备,所述方法还包括:所述第一网络设备生成包括所述第一段列表的报文,所述第一网络设备发送包括所述第一段列表的报文。
第四方面,本申请提供了一种网络设备,执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,该网络设备包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第五方面,本申请提供了一种网络设备,执行第二方面或第二方面的任意一种可能的实现方式中的方法。具体地,该网络设备包括用于执行第二方面或第二方面的任意一种可能的实现方式中的方法的单元。
第六方面,本申请提供了一种网络设备,执行第三方面或第三方面的任意一种可能的实现方式中的方法。具体地,该网络设备包括用于执行第三方面或第三方面的任意一种可能的实现方式中的方法的单元。
第七方面,本申请提供了一种网络设备,该网络设备包括:处理器、通信接口和存储器。通信接口可以是收发器。存储器可以用于存储程序代码,处理器用于调用存储器中的程序代码以使得该网络设备执行前述第一方面或第一方面的任意一种可能的实现方式中的方法,此处不再赘述。
第八方面,本申请提供了一种网络设备,该网络设备包括:处理器、通信接口和存储器。通信接口可以是收发器。存储器可以用于存储程序代码,处理器用于调用存储器中的程序代码以使得该网络设备执行前述第二方面或第二方面的任意一种可能的实现方式中的方法,此处不再赘述。
第九方面,本申请提供了一种网络设备,该网络设备包括:处理器、通信接口和存储器。通信接口可以是收发器。存储器可以用于存储程序代码,处理器用于调用存储器中的程序代码以使得该网络设备执行前述第三方面或第三方面的任意一种可能的实现方式中的方法,此处不再赘述。
第十方面,本申请提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:生成第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。
第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:根据所述段列表发送所述第一报文。
在一种可能的实现方式中,主控板和接口板之间建立进程间通信协议(inter-process communication,IPC)通道,主控板和接口板之间通过IPC通道进行通信。
第十一方面,本申请提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:确定第一报文的报文头的目的地址字段的内容与本地段标识匹配;响应于确定所述目的地址字段的内容与所述本地段标识匹配,根据所述本地段标识的指示在所述段列表中确定待拷贝内容;将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文。
第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:接收第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中的每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;发送所述第二报文。
在一种可能的实现方式中,主控板和接口板之间建立进程间通信协议(inter-process communication,IPC)通道,主控板和接口板之间通过IPC通道进行通信。
第十二方面,本申请提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。
第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:确定报文的转发路径;生成对应于所述转发路径的所述段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中的每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。
第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行操作。
在一种可能的实现方式中,主控板和接口板之间建立进程间通信协议(inter-process communication,IPC)通道,主控板和接口板之间通过IPC通道进行通信。
第十三方面,本申请提供了一种网络系统,该网络系统包括前述第四、五和六方面提供的网络设备,或者该网络系统包括前述第七、八和九方面提供的网络设备,或者该网络系统包括前述第十、十一和十二方面提供的网络设备。
第十四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第十五方面,提供了一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述各方面所提供的方法。
第十六方面,本申请提供了一种芯片,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,以执行上述各方面中的方法。
可选地,上述芯片仅包括处理器,处理器用于读取并执行存储器中存储的计算机程序,当计算机程序被执行时,处理器执行各方面中的方法。
应当理解的是,本申请实施例的第四方面至第十六方面技术方案及对应的可能的实施方式所取得的有益效果可以参见上述对第一方面至第三方面及其对应的可能的实施方式的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中使用的附图作简单地介绍。显而易见地,下面附图只是本申请的一些实施例的附图,对于本领域普通技术人员来说,在不付出创造性劳动性的前提下,还可以根据这些附图获得同样能实现本申请的其他技术方案和附图。
图1为本发明实施例提供的一种段标识的示意图。
图2为本发明实施例提供的一种网络场景的示意图。
图3为本发明实施例提供的一种报文的示意图。
图4为本发明实施例提供的一种段标识的位置字段的示意图。
图5为本发明实施例提供的一种压缩段标识的示意图。
图6为本发明实施例提供的一种段列表的示意图。
图7为本发明实施例提供的一种报文的示意图。
图8为本发明实施例提供的一种转发报文的方法流程示意图。
图9为本发明实施例提供的一种报文的示意图。
图10为本发明实施例提供的一种报文的示意图。
图11为本发明实施例提供的一种报文的示意图。
图12为本发明实施例提供的一种报文的示意图。
图13为本发明实施例提供的一种报文的示意图。
图14为本发明实施例提供的一种报文的示意图。
图15为本发明实施例提供的一种报文的示意图。
图16为本发明实施例提供的一种报文的示意图。
图17为本发明实施例提供的一种报文的示意图。
图18为本发明实施例提供的一种报文的示意图。
图19为本发明实施例提供的一种转发报文的方法流程示意图。
图20为本发明实施例提供的一种网络设备的示意图。
图21为本发明实施例提供的一种网络设备的示意图。
图22为本发明实施例提供的一种网络设备的示意图。
图23为本发明实施例提供的一种网络设备的示意图。
图24为本发明实施例提供的一种网络设备的示意图。
图25为本发明实施例提供的一种网络系统的示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
在SRv6网络中,可以将对报文的处理过程划分为若干个段,每个段是特定的网络设备所执行的特定处理行为。若干个段由报文转发路径上的网络设备分别执行,构成整个报文处理过程。
每个段具有相应的段标识,即SID。SID采用128比特长度的IPv6地址格式。即每个SID的长度为128比特。图1示出了SRv6网络中SID的格式,如图1所示,每个SID可以包括位置(locator)字段和功能(function)字段。
其中,locator字段的内容也可以简称为locator,是在网络拓扑中分配给一个网络节点或一个网络节点的链路的标识,用于在网络拓扑中标识该网络节点或链路。并且,根据SID中locator用于标识网络节点或链路,可以将SID分为节点段标识(node SID)和邻接段标识(adjacent SID)两种类型。
SID中的locator用于指示执行该SID对应的段的网络设备。对于节点段标识来说,执行该SID对应的段的网络设备为该SID标识的网络节点,对于邻接段标识来说,执行该SID对应的段的网络设备为该SID标识的链路所属的网络节点。
在本申请实施例中,网络节点与网络设备的含义相同,均指交换机、路由器、虚拟路由设备、虚拟转发设备或其他转发设备。该网络节点通过网络协议将locator对应的路由信息发布到网络中,以使得网络中的其他网络节点转发数据包到该网络节点。
locator的长度可变,并且locator的长度与网络规模有关。例如,当网络规模越大时,网络拓扑中包括的网络节点数量越多,则为了标识更多数量的网络节点,locator的长度更长。反之,当网络规模越小时,locator的长度也越短。
function字段的内容也可以简称为function,用于表示处理报文的指令或指令集合,相当于计算机指令的操作码。当function所表示的指令或指令集合在网络节点上被执行时,将使得网络节点执行相应的转发行为(behavior)。例如,转发数据包到指定链路,或在指定表中查表转发等。
可选的,有些SID在function字段后还可以包括参数(argument)字段和/或填充(padding)字段。
其中,argument字段的内容,也可以简称为argument,是function所表示的指令或指令集合在执行时所涉及的参数。所述参数例如是流信息、服务信息或其他相关的信息。
当SID中的locator、function以及可选的argument的长度之和仍不足128比特时,在SID的末尾部分需要设置padding字段。
由此可见,SID用于表示对应的段,具体的,SID能够指示执行该段的网络设备,并且SID能够指示该段对应的报文处理行为,可选的,SID还能够指示执行上述报文处理行为时所涉及的参数。
当对应上述若干个段的若干个SID依次排列组成SID list时,SID list就可以指示报文的处理过程。其中,若干个SID在SID list中的排列顺序就是若干个段在报文的处理过程中的执行顺序。包括SID list的SRH被封装在报文中,从而SR网络对该报文的处理过程能够承载在报文中,传递给报文转发路径上的网络设备,报文转发路径上的网络设备依次执行自身相关的报文处理行为。
参见图2所示的应用场景,该应用场景包括SRv6网络,该SRv6网络包括网络设备S以及网络设备1至10。其中,每个网络设备具有对应的locator,即网络拓扑中分配给该网络设备的标识,用于在网络拓扑中标识该网络设备。例如,网络设备1的标识为locator1,类似的,网络设备2至10的标识分别为locator 2至locator 10。
图2中的虚线示出了一条报文转发路径,该转发路径的头节点为网络设备S,随后依次经过网络设备1至10。其中,转发路径上的头节点也可以是SRv6网络的入口节点,也称为入口设备或入口网络设备。例如,该转发路径对应的报文处理过程共包括10个段,分别为网络设备1至10所执行的报文处理行为。其中,网络设备1上的报文处理行为对应的function为function 1,类似的,网络设备2至10上的报文处理行为对应的function分别为function 2至function 10。对于网络设备1来说,locator 1和function 1组成SID 1,即SID 1用于指示报文处理过程中网络设备1所执行的段,类似的,SID 2至SID 10分别用于指示网络设备2至10所执行的段。SID 1至SID 10依次排列,组成对应上述报文处理过程的SIDlist。10个SID在SID list中的排列顺序就是对应的10个段在报文的处理过程中的执行顺序,即排列顺序为SID 1至SID 10。
图3示出了封装有SID list的SRv6网络中的报文。如图2所示,该报文的报文头包括IPv6报文头和SRH。其中,IPv6报文头包括版本(Version)字段、流量类型(Traffic Type)字段、流标识(Flow Label)字段、载荷长度(Payload Length)字段、下一个报文头(NextHeader)字段、跳数限制(Hop Limit)字段、源地址(Source Address)字段以及目的地址(destination address,DA)字段。各个字段的含义可以参考请求评议(Request forComments,RFC)8200中的解释。SRH包括下一个报文头(Next Header)字段、头扩展长度(HdrExt Len)字段、路由类型(Routing Type)字段、段剩余(Segment Left)字段、最后一个索引(Last Entry)字段、标记(Flags)字段、标签(Tag)字段以及SID list。各个字段的含义可以参考RFC8754中的解释。其中,SL字段也称为SL指针,在报文转发过程中,SL指针依次指向SID list中的各个元素,即随着SL取值的不同,segment[SL]用于表示SID list中的各个元素。
其中,SID list由依次排列的多个元素segment list[0]至segment list[n]组成,每个元素为一个SID,每个元素的长度为128比特。并且,SID list中的SID可以由后至前排列,segment list[0]对应最后执行的段,segment list[2]对应倒数第二执行的段,以此类推。结合图2所示的应用场景,SID list包括10个SID,segment list[n]为SID 1,segmentlist[0]为SID 10。
在SRv6网络中,包括SID list的SRH可以由转发路径上的头节点封装在报文中,报文转发路径上后续的网络设备可以根据SID list处理该报文。具体的,头节点在接收到的IPv6数据报文的IPv6报文头内侧封装包括SID list的SRH,以形成SRv6数据报文。并且,转发路径上的头节点还可以将报文的IPv6报文头中DA字段的值设置为SID list中最先执行的段对应的SID。并且,头节点还可以还将SL字段的值设置为N-1,其中N为SID list中包括的SID的数量,即segment[SL]为SID list中的第一个SID,对应最先执行的段。然后,转发路径上的头节点将报文沿转发路径发送出去。结合图2所示的应用场景,SID list由网络设备S封装在报文中,网络设备1至10根据报文中的SID list处理该报文。网络设备S将最先执行的段对应的SID 1拷贝至IPv6报文头中的DA字段中。网络设备S将SL字段的值设置为9。网络设备S根据DA字段的内容,即SID 1,查找本地转发表,根据查表结果将报文发送至网络设备1。
在SRv6网络中,针对具体报文,转发路径上的网络设备可以分为传输节点(transit node)和点(endpoint node)。其中,对于transit node来说,报文的IPv6报文头的DA字段中的SID不是本地SID,即DA字段中的SID在本地未配置为指示一个段。而对于endpoint node来说,报文的IPv6报文头的DA字段中的SID是本地SID,即DA字段中的SID在本地配置为指示一个段。
因此,当网络设备接收到报文时,将判断DA字段中的SID是否为本地SID。当确定DA字段中的SID非本地SID时,该网络设备为报文转发路径上的transit node,transit node无需解析SRH中的内容,仅根据DA字段的内容查找本地IPv6路由表,转发报文即可。并且,transit node也可以是不支持SRv6的网络设备。而当确定DA字段中的SID为本地SID时,该网络设备为报文转发路径上的endpoint node,endpoint node根据DA字段中的SID查找转发信息库(forwarding information base,FIB),匹配本地实例化SRv6 SID,执行本地实施例SRv6 SID对应的报文处理行为。并且,endpoint node将报文SRH中的SL字段的值减1,并将segment list[SL]拷贝至IPv6报文头的DA字段中,即对DA字段的内容进行更新。并且,根据更新后的DA字段继续转发报文。
结合图2所示的应用场景,网络设备1接收报文,确定DA字段中的SID 1为本地SID,执行SID 1对应的报文处理行为,将SL字段的值减1,即SL字段的值为8,将segment list[8],即SID 2拷贝至DA字段中,并根据SID 2将报文发送至网络设备2。
此后,网络设备2至网络设备10的执行步骤与网络设备1类似,构成完整的报文处理过程。可以看出,SRv6网络中的SID具备可路由属性,用在SID list中,能够简化域间路径创建,在网络中快速建立端到端路径。同时,SID中的function支持可编程能力,能够灵活地满足各种业务和网络功能的需要,适应业务和网络发展的需要。然而,如上所述,128比特长度的SID也会带来网络链路带宽利用率低以及报文处理难度高的问题。
本申请实施例提供了一种转发报文的方法,该方法采用长度小于128比特的压缩段标识(compressed SID,C-SID),在兼容SRH的前提下,减小SID list的长度,从而提高网络效率并且降低报文处理难度。
SID中的locator字段可以进一步包括前缀(prefix)和节点标识(node ID)两部分,如图4所示。其中,prefix通常由网络运营商分配给网络设备所在的子网,用于标识整个子网。其中,子网也可以称为网段。整个子网内所有SID的prefix相同。可以认为整个子网内所有SID组成SID block,则prefix也用于标识SID block,因而prefix也可以称为block。node ID用于在子网内区分节点。子网内不同节点的SID中node ID不同。
在报文转发路径中,相邻的多个网络设备位于相同的子网中,从而SID list中上述多个网络设备对应的SID都携带相同的prefix,造成重复冗余。针对这部分冗余内容进行优化,可以达到减小SID list的长度的技术效果。
本申请实施例提供了C-SID的格式,如图5所示。将SID中locator字段的prefix和可能存在的argument字段和/或padding字段省略,而将locator字段的node ID和function字段组成C-SID。从而,由node ID和function字段组成C-SID,其长度可以小于128比特。SIDlist中可以仅包括C-SID,从而实现减小SID list长度的技术效果。
其中,省略的prefix在各个SID为相同内容,因而可以将相同的prefix在报文中仅携带一份,而在转发路径上的各个网络设备处可以分别利用相同的prefix与不同的C-SID还原得出不同的SID。例如,可以由报文转发路径上的头节点将prefix放置在报文的IPv6报文头的DA字段中,报文转发路径上的endpoint node分别将不同的C-SID更新至DA字段中prefix内容之后,在后更新的C-SID覆盖在先更新的C-SID。因此,不同的C-SID可以分别与prefix组合,还原出对应的SID。也就是说,虽然SID list中仅包括C-SID,但DA字段中仍然呈现对应的SID。从而,在转发路径上的网络设备根据报文中DA字段的内容进行报文处理时,DA字段的内容仍然是SID,与标准的SRv6报文处理机制相兼容。
省略的argument字段所承载的信息可以通过其他方式传递,例如,携带在报文中SRH的TLV字段中,或者,静态配置在网络设备处。
通常,在同一个子网中,所有SID的prefix相同,并且所有SID的node ID长度相同。可选的,所有SID的function字段长度相同。因而,可选的,同一个子网中,所有C-SID的长度相同。
可选的,C-SID的长度可以为8比特对齐,即C-SID的长度为8比特的整数倍。优选的,C-SID的长度可以为32比特或16比特。
为了获得较好的压缩效果,在网络规划过程中,可以规划有利于压缩的SRv6 SID。例如,在有利于压缩的SRv6 SID中,可以采用较短的function字段,也可以采用较短的nodeID。优选的,在有利于压缩的SRv6 SID中,prefix为64比特,node ID为16比特,function字段为16比特,从而对应的C-SID为32比特。优选的,在有利于压缩的SRv6 SID中,prefix为64比特,node ID为8比特,function字段为8比特,剩余部分为padding字段,从而对应的C-SID为16比特。
当报文处理过程包括10个段时,如果采用128比特长度的SID,10个SID的总长度为160字节,而采用C-SID时,以C-SID长度为32比特为例,10个C-SID的总长度为40字节,压缩效果明显。
为了获得包括所述C-SID的SID list,可以先获得包括SID的SID list,再将包括段标识的SID list中的SID进行压缩,将其中的SID替换为对应的C-SID,获得包括所述C-SID的SID list;或者,也可以先将SID进行压缩,获得对应的C-SID,再根据C-SID获得包括所述C-SID的SID list。
当C-SID被编排在SRH中的SID list时,为了与标准的SRH机制兼容,准确定位至C-SID,需要将C-SID按照128比特对齐的方式来编排。具体的,可以将SID list中每128比特长度的元素定义为一个容器(container),每个container中容纳整数数量的C-SID。可选的,container中容纳的C-SID数量可以是128/LC-SID的整数部分,LC-SID是C-SID的长度。例如,当C-SID长度为32比特时,每个container最多可以容纳4个C-SID。
可选的,当container中容纳整数个C-SID后,小于1个C-SID长度的剩余空间为填充内容(padding)。例如,当C-SID长度为48比特时,每个container最多可以容纳2个C-SID,剩余24比特为padding。
可选的,当C-SID数量不足时,container中剩余空间为padding。例如,当container中仅包括3个32比特长度的C-SID时,剩余32比特为padding。
当SID list中包括多个C-SID时,这些C-SID按照在SID list中的顺序依次排列在至少一个container中。
并且,C-SID还可以与SID混合编排在SID list中。例如,转发路径中仅部分网络设备支持C-SID功能时,不支持C-SID功能的部分网络设备所对应的SID仍然采用128比特的格式。又例如,转发路径涉及虚拟私有网络(virtual private network,VPN)时,对应的VPNSID仍然采用128比特的格式。此时,SID可以容纳在一个container中。
同时包括128比特的SID和小于128比特的C-SID的SRH可以称为通用SRH(generalized SRH,G-SRH),相应的支持G-SRH的SRv6技术可以称为通用的SRv6(generalized SRv6,G-SRv6)技术。除了128比特的SID和小于128比特的C-SID以外,G-SRH的SID list中还可以包括其他类型的标识,例如MPLS标签和互联网协议4(InternetProtocol Version 6,IPv4)地址。所有包括在G-SRH的SID list中的标识,例如SID,C-SID,MPLS标签以及IPv4地址等,可以统称为G-SID。关于G-SRH和G-SRv6的更多描述可以参见日期为2020年2月的题为“Generalized Segment Routing Header”的draft-lc-6man-generalized-srh-00,2020年3月的题为“Generalized SRv6 Network Programming”的draft-cl-spring-generalized-srv6-np-01,2020年5月的题为“GeneralizedSRv6Network Programming for SRv6 Compression”的draft-cl-spring-generalized-srv6-for-cmpr-01,它们的全部内容通过引证结合于此,犹如全部陈述的一样。
C-SID与SID混合编排的SID list对应的报文转发路径可以称为G-SRv6路径,G-SRv6路径可以包括SRv6子路径和SRv6压缩子路径。图6示出了G-SRv6路径对应的SID list的一种示意性结构。该G-SRv6路径包括两段SRv6子路径和两段SRv6压缩子路径,分别为SRv6子路径1和SRv6子路径2,SRv6压缩子路径1和SRv6压缩子路径2。相应的,图6示出的该G-SRv6路径对应的SID list(图中简称为G-SRv6路径)也包括分别与两段SRv6子路径的部分(图中简称为SRv6子路径1和SRv6子路径2)以及分别与两段SRv6压缩子路径对应的部分(图中简称为SRv6压缩子路径1和SRv6压缩子路径2)。
在SID list中,SRv6子路径1对应的部分与SRv6子路径1对应的部分结构相似,都可以包括至少一个SID。SRv6压缩子路径1对应的部分与SRv6压缩子路径2对应的部分结构相似,都可以包括至少一个C-SID。
以SRv6压缩子路径1对应的部分为例,该部分包括至少一个container。可选的,这部分中第一个SID可以采用完整SID的形式存放在SID list中,也可以采用C-SID的形式存放在SID list中。如图6所示,这部分中第一个SID可以采用完整SID的形式存放在SID list中,即第一个container可以包括128比特的SID,以便于简化报文处理过程。针对第一个container的处理过程将在下文详细介绍。从第二个container开始,每个container中包括依次排列的C-SID。例如,如图6所示,第一个container中包括的SID可以分为prefix1,C-SID 1以及可选的argument字段或padding字段三部分。第二个container中包括C-SID2至C-SID5共4个C-SID。其后的container以此类推。
可选的,在C-SID与SID混合编排的SID list中,可以包括多段SRv6压缩子路径。可选的,多段SRv6压缩子路径位于不同的子网,即多段SRv6压缩子路径中节点对应的SID具有不同的prefix。如图6所示,G-SRv6路径还包括SRv6压缩子路径2。在SID list中,SRv6压缩子路径1对应的部分与SRv6压缩子路径2对应的部分结构相似,但SRv6压缩子路径2对应的部分中,第一个container包括的SID中包括的前缀部分为prefix 2,与上述prefix 1不同。也就是说,不同的SRv6压缩子路径之间通过SID中是否包括相同的prefix进行区分,也即通过C-SID是否对应相同的prefix进行区分。因此,同一段SRv6压缩子路径中的各个节点属于相同的子网。
结合图2所示的应用场景,转发路径依次经过网络设备1至网络设备10。其中网络设备1至网络设备9所执行的段分别可以用C-SID 1至C-SID 9表示,每个C-SID的长度为32比特。而网络设备10所执行的段用128比特长度的VPN SID表示。包括该转发路径对应的SIDlist的报文格式如图7所示。该SID list包括4个container,其中第一个container包括C-SID 1至C-SID 4,第二个container包括C-SID 5至C-SID 8,第三个container包括C-SID9,其余部分为padding,第四个container包括SID 10。该SID list总长为64字节,与包括10个SID、长度为160字节的SID list相比,SID list长度大大缩短,提高网络效率。
如上所述,SRH中包括SL字段,当SRH被封装在报文中时,转发路径的头节点将SL字段的值设置为N-1,其中N为SID list中包括的SID的数量。在报文的转发过程中,SRH的SIDlist中各个SID对应的网络设备,也即转发路径上的endpoint node,依次将报文的SRH中的SL字段的值减1,也即对SL字段的值进行更新,并将segment list[SL]拷贝至报文的IPv6头的DA字段中,即对DA字段的内容进行更新。因此,SL字段的内容也可以称为SL指针,依次指向SID list中的每个元素。转发路径上的网络设备能够根据SL指针对SID list中的各个元素进行定位,从而找到下一个待处理的SID,并对DA字段进行更新。
当采用包括C-SID的G-SRH时,由于C-SID长度更短,SID list中每个元素,也即每个container,可能容纳多个C-SID。或者可以认为,SID list中的元素可以进一步被划分为多个子元素。从而对于原有的SL指针来说,SL指针依次指向SID list中的每个元素,而每个元素进一步包括多个子元素,则无法仅依靠SL指针精确定位其中的每个子元素。如果这些子元素中包括C-SID,也就无法准确定位其中的每个C-SID。
此时,为了能够准确定位至SID list中的所有G-SID,需要对现有的SL指针进行扩展。具体的,可以采取一维指针和二维指针两种方式。
在二维指针的方式中,除了现有的SL指针以外,可以在报文中增加新的指针,该新的指针可以称为SI,也可以称为压缩段标识剩余(C-SID left,CL)指针。此时,第一维指针,即SL指针,仍然用于在SID list中指示某个具体的元素,而第二维指针,即SI,用于在元素内部进一步指示某个G-SID。C-SID在元素中可以由前至后排列,例如,当元素中包括m个C-SID时,最先执行的C-SID对应的SI取值为m-1,最后执行的C-SID对应的SI取值为0,以此类推。SI指针的值减1,则SI偏移至下一个C-SID。从而通过SL指针和SI的组合,不但可以精确定位SID list中的所有元素,还可以精确定位SID list中的所有子元素,segment list[SL][SI]可以用来表示SID list中的所有G-SID。以图7所示的报文为例,segment list[3][3]可以用于表示C-SID 1,segment list[2][3]可以用于表示C-SID 5。
关于二维指针的更新方式,当SI在元素内部偏移时,在更新指针的过程中,可以将SI减1,而SL指针保持不变即可,也就是说,SL指针仍然指向相同元素,而SI指向该元素中的下一个子元素;而当SI当前指向元素的最后一个子元素时,也即SI需要移至下一个元素时,在更新指针的过程中,可以将SL指针减1,SI置为m-1,也就是说,SL指针指向下一个元素,SI指向下一个元素的第一个子元素。
新增加的第二维指针,即SI,可以位于报文中的SRH中,也可以位于DA字段中。例如,SI可以位于DA字段中的最低两个比特位,或者DA字段中的最低三个比特位。例如,也可以将DA字段的最低位字节用于放置SI,以便于硬件实现,且有利于未来方案的扩展。
在一维指针的方式中,可以将现有的SL指针的偏移步长进行调整,以形成新的指针,该新的指针可以称为通用段标识指针(generalized SID index,SI),也可以仍然称为SL指针。该一维指针,即SI,用于在SID list中指示某个G-SID。现有的SL指针的偏移步长为SID list中元素的长度,即128比特,则SL指针每次偏移后指向SID list中的下一个元素。而SI的偏移步长为SID list中子元素的长度,例如32比特或16比特,则SI每次偏移后指向SID list中的下一个子元素。从而通过SI的不同取值,可以精确定位SID list中的所有元素和所有子元素,segment list[SI]可以用来表示SID list中的所有G-SID。以图7所示的报文为例,segment list[15]可以用于表示C-SID 1,segment list[11]可以用于表示C-SID 5。需要说明的是,由于SI的偏移步长减小,当需要指向SID list中的下一个元素时,例如,当SID list中两个SID相邻时,为了指向下一个SID,SI需要偏移多个步长以实现偏移一个元素的长度。
新的一维指针,即SI,可以位于报文中的SRH中,也可以位于DA字段中。例如,SI仍然位于SL字段。又例如,SI可以位于DA字段中的最低两个比特位,或者DA字段中的最低三个比特位。例如,也可以将DA字段的最低位字节用于放置SI,以便于硬件实现,且有利于未来方案的扩展。
为了方便,所述扩展后的一维指针和所述扩展后的二维指针可以统称为扩展指针。
对于传统的SRv6网络来说,SID list仅由SID组成,在报文转发过程中,网络设备将报文SRH中的SL字段的值减1,并将segment list[SL]拷贝至IPv6头的DA字段中,即对DA字段的内容进行更新。当SID list中还包括C-SID时,为了兼容上述SRv6网络中的报文转发过程,网络设备对DA字段的更新方式将发生变化。
可选的,当SID list中还包括C-SID时,可以在C-SID或SID中承载压缩持续(continue of compression,COC)信息,用于指示SID list中C-SID是否继续排列。网络设备根据C-SID或SID中承载的压缩持续信息获知对DA字段的特殊更新方式。
可选的,所述压缩持续信息可以包括在SID或C-SID中。可选的,所述压缩持续信息可以承载在SID或C-SID中的一个或多个比特中,例如,所述压缩持续信息可以承载在SID或C-SID中的node ID和function之间的1个比特中。优选的,所述压缩持续信息可以承载在SID或C-SID中function字段中,对应特定的behavior。
可选的,承载压缩持续信息的特定的behavior可以是SRv6技术中的特点(flavor)。flavor是SRv6技术中常规behavior的变体(variants),这些常规behavior例如可以是End,End.X或End.T等等。关于flavor的更多描述可以参见日期为2020年3月的题为“SRv6Network Programming”的draft-ietf-spring-srv6-network-programming-15,其全部内容通过引证结合于此,犹如全部陈述的一样。
承载压缩持续信息的flavor可以称为COC flavor。COC flavor的内容可以是将SID list中特定长度的内容更新至DA字段中,所述特定长度为C-SID的长度。例如,所述特定长度可以是32比特或者16比特。并且,特定长度的内容仅覆盖DA字段中prefix之后、相同长度的内容。也就是说,网络设备将下一个待处理的C-SID拷贝至DA字段中的prefix之后,下一个待处理的C-SID与prefix还原出下一个SID,后续的处理方式与标准SRv6网络的报文处理方式相同。
具体的,当DA字段中的SID包括COC flavor时,对于二维指针的方式,网络设备更新SI和/或SL指针的值,并将特定长度的segment list[SL][SI]拷贝至IPv6头的DA字段中;对于一维指针的方式,网络设备更新SI的值,并将特定长度的segment list[SI]拷贝至IPv6头的DA字段中。而当DA字段中的SID不包括COC flavor时,仍然采用标准SRv6的处理方式,即将128比特的segment list[SL]拷贝至IPv6头的DA字段中。
结合图2所示的应用场景及图7所示的报文格式,C-SID 1至C-SID 8中均包括COCflavor,对应的网络设备1至网络设备8分别将32比特的C-SID 2至C-SID 9拷贝至IPv6头的DA字段中,而C-SID 9中不包括COC flavor,对应的网络设备9将128比特的SID 10拷贝至IPv6头的DA字段中。
举例来说,C-SID 1至C-SID 8中包括的COC flavor所对应的伪代码如下所示:
结合以上描述,SID中的prefix用于标识网络设备或链路所在的子网,子网内所有SID的prefix相同。当所述转发路径经过不同子网时,该转发路径对应的SID list中各个SID的prefix可能不同。当SID list中可以采用压缩后的C-SID时,被省略的prefix可能仅在SRv6压缩子路径的起始位置保存一份。例如,如图6所示,在SRv6压缩子路径1中的第一个SID采用完整SID的形式,包括prefix 1;同理,在SRv6压缩子路径2中的第一个SID采用完整SID的形式,例如,包括prefix 2。并且,由于SRv6子路径1和SRv6子路径2中所有SID均采用完整SID的形式,因此,在SRv6子路径1和SRv6子路径2中的第一个SID必然也采用完整SID的形式。由此可见,在一些网络场景下,所述转发路径中的各段子路径上的第一个SID均采用完整SID的形式,即各段子路径上的第一个SID均包括prefix。因此,可以利用该prefix内容判断一段SRv6压缩子路径是否结束。
可选的,当SID list中还包括C-SID时,网络设备可以通过解析下一个元素的部分内容,判断SID list中C-SID是否继续排列,进而获知对DA字段的特殊更新方式。
可选的,所述下一个元素的部分内容可以包括prefix的至少一部分。可选的,所述下一个元素的部分内容为所述下一个元素的起始部分,并且所述下一个元素的部分内容的长度为各段子路径中prefix的共同部分的长度。结合图6所示的应用场景,例如,其中SRv6压缩子路径1的prefix为prefix 1,SRv6压缩子路径2的prefix为prefix 2,SRv6子路径1和SRv6子路径2的prefix分别为prefix 3和prefix 4。prefix 1至prefix 4的长度均为32比特,并且,prefix 1至prefix 4的前20比特相同。则所述下一个元素的部分内容为所述下一个元素的前20比特。
可选的,网络设备在当前标识为元素中的最后一个子元素时,解析所述下一个元素的部分内容,如果所述下一个元素的部分内容不是各段子路径中prefix的共同部分,则确定SID list中C-SID继续排列,即当前的SRv6压缩子路径未结束,将下一个待处理的C-SID拷贝至DA字段中的prefix之后;如果所述下一个元素的部分内容是各段子路径中prefix的共同部分,则确定SID list中C-SID不再继续排列,即当前的SRv6压缩子路径结束,将128比特的下一个元素拷贝至IPv6头的DA字段中。结合图6所示的应用场景,在SRv6压缩子路径1中C-SID 5对应的网络设备上,由于C-SID 5为元素中的最后一个子元素,该网络设备解析下一个元素的前20比特,即下一个container中的前20比特,例如为C-SID6中的前20比特,该C-SID 6中的前20比特与各段子路径中prefix的共同部分不同,则确定SID list中C-SID继续排列,即当前的SRv6压缩子路径1未结束,将C-SID 6拷贝至DA字段中的prefix之后。在SRv6压缩子路径1中最后一个C-SID,即C-SID N对应的网络设备上,由于C-SID N为元素中的最后一个子元素,该网络设备解析下一个元素的前20比特,即SRv6压缩子路径2中第一个container的前20比特,该第一个container包括prefix,即该第一个container的前20比特与各段子路径中prefix的共同部分相同,则确定SID list中C-SID不再继续排列,即当前的SRv6压缩子路径1结束,将128比特的下一个元素拷贝至IPv6头的DA字段中。
在以上描述中,同一段SRv6压缩子路径中的所有C-SID长度相同。然而,在实际网络应用场景中,如果不同长度的C-SID在同一段SRv6压缩子路径中混合编排,可以进一步缩短SID list的长度,提升网络效率。
本申请实施例提出一种转发报文的方法,该方法涉及报文转发路径上的网络设备。在该方法中,不同长度的C-SID在同一段SRv6压缩子路径中混合编排,网络设备接收报文后,读取报文IPv6报文头的DA字段的内容,该DA字段的内容包括对应该网络设备的当前标识,网络设备由此确定当前标识的长度,根据当前标识的长度调整指针位置,进而在SIDlist中确定待拷贝的内容。其中,对于不同的网络设备来说,DA字段中当前标识的长度可能不同,则指针偏移距离也可能不同。也就是说,针对SID list中不同长度的C-SID,能够灵活对应不同的指针偏移距离。从而,当不同长度的C-SID在同一段SRv6压缩子路径中混合编排时,与现有的SRv6网络中报文转发和处理过程相兼容,提升网络效率。
图8示出了方法100的流程图,该方法100涉及网络设备101和网络设备102。其中,网络设备101为报文转发路径上的头节点,例如,当报文转发路径如图2中虚线所示时,网络设备101可以是图2所示应用场景中的网络设备S,网络设备102为报文转发路径上除头节点以外的其他网络设备,例如,网络设备102可以是图2所示应用场景中的网络设备1至网络设备9。
该方法100包括如下步骤:
S110,网络设备101确定报文的转发路径,生成对应于所述转发路径的所述段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。
结合图2所示的应用场景,网络设备101可以是图2中的网络设备S。可选的,网络设备S可以是SRv6网络的入口设备。网络设备101获得对应于所述转发路径的段列表。如图2所示,该转发路径包括多个网络设备,具体的,该转发路径依次经过网络设备1至网络设备10。
报文转发路径可以由控制器生成,也可以由网络设备S生成。当报文转发路径由控制器生成时,对应报文转发路径的段列表也可以由控制器生成。此时,控制器将生成的段列表发送至网络设备S,具体的,控制器向网络设备S发送控制报文,该控制报文包括所述段列表。网络设备S从控制器接收所述控制报文,获得所述段列表。当报文转发路径由网络设备S生成时,对应报文转发路径的段列表也可以由网络设备S生成。此时,网络设备S确定报文转发路径,生成对应于该转发路径的段列表。
如前所述,所述段列表包括依次排列的多个压缩段标识。所述多个压缩段标识可以包括长度为128比特的SID,也可以包括长度小于128比特的C-SID,也可以包括MPLS标签和/或IPv4地址。
如前所述,C-SID的长度都可以在网络规划过程中进行设置,也可以称为全网规划的方式。并且,C-SID的长度与网络规模有关。例如,当网络拓扑中包括的网络节点数量越多时,为了标识更多数量的网络节点,C-SID的长度更长,反之,当网络拓扑中包括的网络节点数量越少时,C-SID的长度也越短;当网络中处理报文的behavior的数量越多时,C-SID的长度更长,反之,当网络拓扑中处理报文的behavior的数量越少时,C-SID的长度也越短。例如,网络拓扑中包括100个节点,网络中包括10种behavior,则为了区分不同节点的不同behavior,C-SID的数量不能少于1000个,C-SID的长度不能短于10比特。如果考虑到C-SID的长度需要8比特对齐,则C-SID的长度不能短于16比特。由此可见,C-SID的长度不能被无限制地缩短,当子网中所有C-SID的长度相同时,该相同长度存在一个压缩极限值,如果C-SID的长度小于该压缩极限值,将导致C-SID对应的网络节点或behavior无法区分,造成网络错误。
在本申请实施例中,所述段列表中可以包括不同长度的C-SID,例如,第一类型的C-SID和第二类型的C-SID,所述第一类型的C-SID的长度为第一长度,所述第二类型的C-SID的长度为第二长度,第一类型的C-SID的长度小于第二类型的C-SID的长度。第一类型的C-SID对应的前缀部分与第二类型的C-SID对应的前缀部分相同,即第一类型的C-SID和第二类型的C-SID位于同一段SRv6压缩子路径中。也就是说,在本申请实施例中,将网络中的C-SID进行分类,在网络规划过程中针对每个类型的C-SID进行分别规划,不同类型的C-SID规划为不同的长度。其中,第一类型的C-SID仅针对网络中的部分报文处理行为,与区分网络中的全部报文处理行为相比,为了区分该部分报文处理行为所必需的C-SID长度更短,因而第一类型的C-SID可以规划为更短的长度,即进一步缩短其中部分C-SID的长度。而对于第二类型的C-SID来说,其长度仍然可以与上述全网规划时保持一致,即无需增加其余部分C-SID的长度。因此,当第一类型的C-SID和第二类型的C-SID在SID list中混合编排时,SIDlist的长度能够进一步缩短。
举例来说,所述不同长度的C-SID中,长度更短的第一类型的C-SID可以对应于网络中出现频率较高的behavior,长度更长的第二类型的C-SID可以对应于网络中出现频率较低的behavior。与网络中全部behavior的数量相比,出现频率较高的behavior的数量更少,单独针对出现频率较高的behavior进行规划时,为了区分步骤较高的behavior所必需的第一类型的C-SID数量较少,则第一类型的C-SID的长度可以进一步缩短。而针对剩余的出现频率较低的behavior进行规划时,对应的第二类型的C-SID的长度可以与上述全网规划时保持一致。例如,网络拓扑中包括100个节点,网络中包括10种behavior,其中behavior1出现频率较高,如果单独针对behavior 1进行规划时,为了区分100个节点的behavior 1,第一类型的C-SID的数量不能少于100个,则第一类型的C-SID的长度最短可以为7比特。如果考虑到C-SID的长度需要8比特对齐,则第一类型的C-SID的长度不能短于8比特。也就是说,与上述全网规划时相比,第一类型的C-SID的长度缩短了8比特。而对于第二类型的C-SID来说,为了区分其余100个节点的9种behavior,第二类型的C-SID的数量不能少于900个,则第二类型的C-SID的长度仍然可以与上述全网规划时保持一致,即第二类型的C-SID的长度仍然为16比特,第二类型的C-SID的长度无需增加。因此,当第一类型的C-SID和第二类型的C-SID在SID list中混合编排时,SID list的长度能够进一步缩短,并且当SID list中包括的第一类型的C-SID数量越多时,该技术效果越显著。
以图2所示的应用场景进行举例说明,在图2中虚线所示的转发路径上,网络设备1至4、网络设备8至9执行出现频率较高的behavior 1,而网络设备5至7分别执行出现频率较低的behavior 2,behavior 3和behavior 4。因此,在所述转发路径对应的SID list中,可以包括与网络设备1至4、网络设备8至9对应的第一类型的C-SID,以及与网络设备5至7对应的第二类型的C-SID。
举例来说,所述不同长度的C-SID中,长度较短的第一类型的C-SID可以对应于网络中的End类型的behavior以及一部分End.X类型的behavior,而长度较长的第二类型的C-SID可以对应于网络中的另一部分End.X类型的behavior。具体的,第一类型的C-SID包括全局节点C-SID和本地链路C-SID,全局节点C-SID对应于网络中的特定网络设备执行的处理行为,本地链路C-SID对应于当前网络设备通过当前网络设备中的特定链路执行的处理行为;而第二类型的C-SID为全局链路C-SID,全局链路C-SID对应于网络中的特定网络设备通过该特定网络设备上的特定链路执行的处理行为。其中,为了区分特定网络设备上的特定链路,必须需要规划较多数量的全局链路C-SID,而为了区分特定网络设备所必需的全局节点C-SID数量相对较少,或者为了区分当前网络设备中的特定链路所必需的本地链路C-SID数量也相对较少。
例如,网络拓扑中包括100个节点,其中每个节点上包括4条链路,即网络拓扑中包括400条链路。如果对所有节点和所有链路进行全网规划,则为了区分所有节点和所有链路,C-SID的数量不能少于500个,C-SID的长度不能短于9比特。如果考虑到C-SID的长度需要8比特对齐,则C-SID的长度不能短于16比特。然而,如果针对所有节点规划第一类型的C-SID,包括全局节点C-SID,而针对所有链路规划第二类型的C-SID,包括全局链路C-SID,则为了区分100个节点,第一类型的C-SID的数量不能少于100个,即便考虑到为了区分4个本地链路,第一类型的C-SID的数量不能少于104个,则第一类型的C-SID的长度最短可以为7比特。如果考虑到C-SID的长度需要8比特对齐,则第一类型的C-SID的长度不能短于8比特。也就是说,与上述全网规划时相比,第一类型的C-SID的长度缩短了8比特。而对于第二类型的C-SID来说,为了区分500个链路,第二类型的C-SID的数量不能少于500个,则第二类型的C-SID的长度仍然可以与上述全网规划时保持一致,即第二类型的C-SID的长度仍然为16比特,第二类型的C-SID的长度无需增加。因此,当第一类型的C-SID和第二类型的C-SID在SIDlist中混合编排时,SID list的长度能够进一步缩短,并且当SID list中包括的第一类型的C-SID数量越多时,该技术效果越显著。
以图2所示的应用场景进行举例说明,其中,对于网络设备5至7来说,每个网络设备上均有两条链路分别连接至另两个网络设备,即网络设备5有两条链路分别连接网络设备6和网络设备7,网络设备6和网络设备7与之类似。为了指定图2中虚线所示的转发路径,在网络设备5至7处需要指定特定链路。具体的,在所述转发路径对应的SID list中,可以包括与网络设备1至4、网络设备8至9对应的全局节点C-SID,以及与网络设备5至7对应的全局链路C-SID。
可选的,所述全局链路C-SID由全局节点C-SID和本地链路C-SID组合而成。以图2所示的应用场景进行举例说明,子网中的prefix为A1,长度为64比特,网络设备1至9对应的全局节点C-SID分别为B1至B9,长度为16比特,网络设备1至9对应共同的本地链路C-SID为C1,该本地链路C-SID对应的behavior为将报文通过出接口1发送给下一跳邻居,网络设备5至7还对应共同的本地链路C-SID为C2,该本地链路C-SID对应的behavior为将报文通过出接口2发送给下一跳邻居,C1和C2的长度均为16比特。则网络设备5对应两个全局链路C-SID,其中第一个全局链路C-SID为B5:C1,第二个全局链路C-SID为B5:C2,网络设备6和网络设备7与之类似。
当SID list为[B9,B8,B7,B6,B5,B4,B3,B2,B1]时,该SID list指定的是依次经过网络设备1至9的转发路径,该转发路径属于松散路径。当SID list为[B9,B8,B7:C1,B6:C1,B5:C1,B4,B3,B2,B1]时,该SID list指定的是如图2中虚线所示的转发路径,该转发路径包括从网络设备5由出接口1对应的链路至网络设备6,再从网络设备6由出接口1对应的链路至网络设备7,从网络设备7由出接口1对应的链路至网络设备8的严格转发路径。
可选的,所述第一类型的C-SID和第二类型的C-SID可以包括在SID list中的同一个元素中,即段列表包括长度为128比特的元素,所述元素中包括所述第一类型的C-SID和所述第二类型的C-SID。
结合图2所示的应用场景,包括不同长度的C-SID的SID list如图9所示。其中,网络设备1至4、网络设备8和网络设备9所执行的段可以用长度为16比特的C-SID表示,即C-SID 1至C-SID 4,C-SID 8和C-SID 9;网络设备5至7所执行的段可以用长度为32比特的C-SID表示,即C-SID 5至C-SID 7,网络设备10所执行的段可以用长度为128比特的SID表示,即SID 10。各个C-SID和/或在SID list中的排列顺序仍然按照对应的段在报文的处理过程中的执行顺序,即由C-SID 1至C-SID 9,再至SID 10的顺序排列。
该SID list包括3个container,其中第一个container包括6个C-SID,即C-SID 1至C-SID 6,其中C-SID 1至C-SID 4的长度为16比特,C-SID 5和C-SID 6的长度为32比特;第二个container包括3个C-SID,即C-SID 7至C-SID 9,其中C-SID 7的长度为32比特,C-SID 8和C-SID 9的长度为16比特,container 2的后64比特为padding;第三个container包括1个SID,即SID 10。与图7所示的SID list相比,图9所示的SID list总长减少了128比特。由此可见,当SID list中包括不同长度的C-SID时,可以将部分C-SID的长度进一步缩短,从而整个SID list的长度进一步缩短,提高网络效率。当SID list中C-SID数量更多时,该技术效果将更加显著。
可选的,所述第二类型的C-SID的长度是所述第一类型的C-SID的长度的整数倍。例如,第一类型的C-SID的长度为16比特,第二类型的C-SID的长度为32比特。
可选的,所述第一类型的C-SID的长度和所述第二类型的C-SID的长度均为单位长度的整数倍,也就是说,所述第一类型的C-SID的长度值和所述第二类型的C-SID的长度值存在最大公约数,该最大公约数即为单位长度的值。
可选的,所述SID的长度也为所述单位长度的整数倍,即128比特为所述单位长度的整数倍。
可选的,所述单位长度为2的N次幂比特,所述N为大于等于3且小于7的整数。
例如,单位长度为8比特,第一类型的C-SID的长度为16比特,第二类型的C-SID的长度为32比特。
可选的,所述第一类型的C-SID的长度为所述单位长度,即将长度较短的C-SID的长度作为单位长度。
又例如,单位长度为16比特,第一类型的C-SID的长度为16比特,第二类型的C-SID的长度为32比特。
可选的,当SID list中包括不同长度的C-SID时,所述不同长度的C-SID可以包括两种或两种以上长度的C-SID。可选的,所述SID list中还包括第三类型的C-SID,所述第三类型的C-SID的长度大于所述第一类型的C-SID的长度,并且所述第三类型的C-SID的长度小于所述第二类型的C-SID的长度,也就是说,第三类型的C-SID的长度介于第一类型的C-SID和第二类型的C-SID之间,第一类型的C-SID为长度最短的C-SID,第二类型的C-SID为长度最长的C-SID。
可选的,所述第三类型的C-SID的长度为单位长度的整数倍,也就是说,所述第一类型的C-SID的长度值、所述第二类型的C-SID的长度值和所述第三类型的C-SID的长度值存在最大公约数,该最大公约数即为单位长度的值。例如,单位长度为16比特,第一类型的C-SID的长度为16比特,第三类型的C-SID的长度为32比特,第二类型的C-SID的长度为64比特。
与以上描述类似,第三类型的C-SID例如可以对应于网络中出现频率次高的behavior,从而根据出现频率的不同,对C-SID进行更加详细的分类规划,缩短SID list的长度,提高网络效率。
当所述SID list中还包括第四类型的C-SID,或者更多种类的C-SID时,其长度值的规则和规划方式与以上描述类似,在此不再赘述。
S120,网络设备101生成第一报文,所述第一报文包括所述段列表,所述第一报文沿所述转发路径转发。
作为报文转发路径的头节点,网络设备101在接收到的数据报文中封装SID list,以用于指示该数据报文的转发路径。例如,网络设备101在接收到的IPv6数据报文的IPv6报文头内侧封装包括SID list的SRH,以形成SRv6数据报文。即所述第一报文为SRv6数据报文。根据SRv6网络的报文转发机制,网络设备101获得对应于第一报文的转发路径的段列表,将所述段列表封装在所述第一报文中,从而将针对第一报文的处理过程能够承载在报文中,传递给第一报文的转发路径上的各个网络设备,转发路径上的各个网络设备依次执行自身相关的报文处理行为。
可选的,网络设备101在封装SRv6数据报文的过程中,还可以在该SRv6数据报文中设置指针以便于准确定位至SID list中的各个位置。
如前所述,当SID list中包括不同长度的C-SID时,仍然可以采用上述扩展指针准确定位至SID list中的所有G-SID,所述扩展指针具体包括一维指针或二维指针两种方式。容易理解的是,此时G-SID包括不同长度的C-SID。在二维指针中,第一维指针,即SL指针,仍然用于在SID list中指示某个具体的元素,而第二维指针,即SI,用于在元素内部进一步指示某个G-SID。在一维指针中,该一维指针,即SI,用于在SID list中指示某个G-SID。
所述扩展指针由网络设备101设置在所述第二报文中,网络设备101设置所述第二报文中所述一维指针或所述二维指针的初始值。可选的,在二维指针中,SL指针的初始值被设置为N-1,SI的初始值被设置为M,其中N为SID list中包括的container的数量,M为每个container中包括的所述单位长度的数量。也就是说,所述单位长度为所述SI的偏移步长。可选的,在一维指针中,SI的初始值被设置为N,其中N为SID list中包括的所述单位长度的数量。也就是说,所述单位长度为所述SI的偏移步长。如前所述,所述单位长度优选为所述第一类型的C-SID的长度。以二维指针为例,结合图2所示的应用场景和图9所示的报文结构,所述单位长度为所述第一类型的C-SID的长度,即16比特,网络设备S将SL指针的初始值设备为2,将SI的初始值设置为8,segment[2][8]表示C-SID1,对应报文转发过程中最先执行的段。
所述扩展指针的其他细节与以上描述类似,在此不再赘述。所述扩展指针的更新方式将在后续步骤中详细介绍。
可选的,网络设备101在封装SRv6数据报文的过程中,还可以在该SRv6数据报文的IPv6报文头的DA字段中放置SID list中C-SID对应的prefix。可选的,网络设备101在封装SRv6数据报文的过程中,还可以在DA字段中prefix之后放置SID list中的第一个G-SID。结合图2所示的应用场景和图9所示的报文结构,网络设备S将prefix放置在DA字段的起始位置,将C-SID 1放置在DA字段中prefix之后,从而DA字段中的内容prefix+C-SID 1还原出SID 1。
可选的,网络设备101还可以在DA字段中放置包括所述第一个G-SID在内的多个G-SID,多个G-SID依次排列在prefix之后。例如,C-SID 2排列在C-SID 1之后,从而,不会影响prefix+C-SID 1还原出SID 1。
值得注意的是,网络设备101在DA字段中放置SID list中的第一个G-SID之后,并未更新所述扩展指针的值,即网络设备101在DA字段中放置SID list中的第一个G-SID之后,所述扩展指针的值仍然为初始值。也就是说,对于第二报文来说,所述扩展指针指向的SID list中的G-SID即为DA字段中包括的G-SID。以所述二维指针为例,结合图2所示的应用场景和图9所示的报文结构,网络设备S在所述第二报文的DA字段中放置C-SID 1,而所述第二报文中SL指针的值仍为初始值2,SI的值仍为初始值8,segment[SL][SI]仍然表示C-SID1。
如前所述,当SID list中包括不同长度的C-SID时,相关的C-SID或SID中仍然可以包括承载所述压缩持续信息,网络设备根据C-SID或SID中的压缩持续信息获知对DA字段的特殊更新方式。可选的,在所述第一类型的C-SID和所述第二类型的C-SID中均可以包括所述压缩持续信息。可选的,所述压缩持续信息可以包括在SID或C-SID中。优选的,所述压缩持续信息可以承载在SID或C-SID的function字段中,对应特定的behavior。承载所述压缩持续信息的flavor可以称为COC flavor。所述COC flavor所对应的伪代码将在后续步骤中详细介绍。
结合图9所示的SID list,其中C-SID 1至C-SID 8中均包括COC flavor,而C-SID9中不包括COC flavor,对应的DA字段更新方式将在后续步骤中详细介绍。
S130,网络设备101沿转发路径发送所述第一报文。
网络设备101发送所述第一报文时,将根据第一报文的IPv6报文头中DA字段的内容,按照最长匹配规则确定报文的下一跳网络设备。如前所述,结合图2所示的应用场景和图9所示的报文结构,作为所述转发路径的头节点,网络设备S已经将prefix和SID list中的C-SID 1放置在第一报文的DA字段中,第一报文的DA字段中的内容prefix+C-SID 1还原出SID 1,网络设备S根据SID 1查找本地转发表项,确定下一跳网络设备为网络设备1,将所述第一报文向网络设备1发送。报文转发路径上的endpoint node依次接收该报文,并根据SID list更新DA字段的内容,再根据DA字段的内容转发报文,从而报文沿SID list对应的所述转发路径发送出去。
S140,网络设备102接收第一报文。
网络设备102为报文转发路径上除头节点以外的endpoint node,网络设备102可以是图2所示应用场景中的网络设备1至9。网络设备102接收所述转发路径中的上一跳网络设备发送的报文。当网络设备102为图2所示的网络设备1时,网络设备1接收到的第一报文为网络设备S发出的报文,即网络设备S封装SID list后的SRv6数据报文,当网络设备102为图2所示的网络设备2至9时,网络设备2至9接收到的第一报文为上一跳网络设备更新后的SRv6数据报文。
S150,网络设备102确定所述第一报文的报文头的目的地址字段的值与本地段标识匹配。
所述本地段标识为网络设备102存储的FIB中的本地实例化SRv6 SID。
作为转发路径上的endpoint node,网络设备102在接收到第一报文后,将第一报文的IPv6报文头的DA字段中的SID查找FIB,如果DA字段中的SID匹配本地实例化SRv6SID,例如,DA字段中的SID与本地实例化SRv6 SID相同,则执行本地实例化SRv6 SID对应的报文处理行为。
S160,网络设备102根据所述本地段标识的指示在SID list中确定待拷贝内容。
可选的,所述步骤S160可以包括在所述本地实施例SRv6 SID对应的报文处理行为中,所述步骤S160也可以是网络设备102在执行所述本地实施例SRv6 SID对应的报文处理行为以外单独执行的行为。
可选的,所述步骤S160包括S1601和S1602两个步骤。
S1601,网络设备102根据所述本地段标识指示的长度确定待拷贝内容在SID list中的位置。
S1602,网络设备102根据所述待拷贝内容在SID list中的位置确定所述待拷贝内容。
网络设备102根据所述第一报文的DA字段的内容匹配所述本地段标识后,能够获知所述本地段标识指示的长度。所述本地段标识指示的长度可以是所述本地段标识对应的SID list中G-SID的长度。为了方便,所述本地段标识对应的SID list中G-SID可以称为本地G-SID,所述本地段标识对应的SID list中G-SID的长度可以称为本地G-SID的长度,即所述本地段标识指示的长度为本地G-SID的长度。结合以上描述,所述本地G-SID可以为所述第一类型的C-SID或所述第二类型的C-SID。
也就是说,当本地段标识对应SID list中的C-SID时,即所述本地G-SID为C-SID时,所述本地段标识指示的长度为该C-SID的长度。结合图2所示的应用场景和图9所示的报文结构,对于网络设备1来说,本地段标识指示的长度为16比特,对于网络设备5来说,本地段标识指示的长度为32比特。与之类似,当本地G-SID为SID时,所述本地段标识指示的长度为SID的长度,即128比特。
所述待拷贝内容为网络设备102将要更新至所述第一报文的DA字段的内容。结合SRv6网络的报文处理机制,所述待拷贝内容包括待拷贝标识,所述待拷贝标识为SID list中网络设备102在所述转发路径上的下一跳网络设备对应的G-SID,或者所述下一跳网络设备的链路对应的G-SID。从而,在将所述待拷贝内容更新至所述第一报文的DA字段以生成第二报文以后,网络设备102能够根据DA字段中的内容继续转发所述第二报文。
如前所述,在所述第一报文中,所述扩展指针指向的SID list中的G-SID即为DA字段中包括的G-SID,即所述本地G-SID。而对于网络设备102来说,所述待拷贝内容包括所述待拷贝标识,所述待拷贝标识为SID list中网络设备102在所述转发路径上的下一跳网络设备对应的G-SID,或者所述下一跳网络设备的链路对应的G-SID。也就是说,所述待拷贝标识为网络设备102的本地G-SID在所述SID list中的下一个G-SID。因此,网络设备102需要调整所述扩展指针的值,以使得所述扩展指针指向所述待拷贝内容,也即指向所述待拷贝标识,从而确定所述待拷贝内容在SID list中的位置。
当同一段SRv6压缩子路径中的所有C-SID长度相同时,网络设备将指针位置偏移该相同长度,即可使得指针指向SID list中的下一个C-SID。然而,在本申请实施例中,不同长度的C-SID在同一段SRv6压缩子路径中混合编排,因此,在不同的网络设备处,指针位置偏移的长度可能不同。
在本申请实施例中,网络设备102根据所述本地段标识指示的长度确定所述待拷贝内容在SID list中的位置,具体为,网络设备102根据所述本地段标识指示的长度偏移所述扩展指针的位置,所述扩展指针偏移的长度等于所述本地段标识指示的长度,即所述扩展指针偏移的长度等于所述本地G-SID的长度。从而使得在SID list中,所述扩展指针的位置由指向所述本地段标识对应的G-SID更新为指向所述本地段标识对应的G-SID的下一个G-SID,即所述扩展指针指向所述待拷贝内容。
为了实现所述扩展指针偏移的长度等于所述本地段标识指示的长度,当所述扩展指针分别为所述一维指针或所述二维指针时,所述扩展指针的值的调整过程有所不同。
当所述扩展指针为所述二维指针时,所述扩展指针的调整过程包括:网络设备102根据所述本地段标识指示的长度确定SI的值,以使得SI的值用于指示所述待拷贝内容在长度为128比特的元素中的位置。具体的,网络设备102读取所述第一报文的报文头中SI的原始值,将SI的原始值减去更新值,以获得SI的值。可以看出,所述更新值对应的长为SI偏移的长度,即所述更新值对应的长度为所述本地G-SID的长度。
对于不同的网络设备来说,所述本地G-SID可以为所述第一类型的C-SID或所述第二类型的C-SID,即所述本地G-SID的长度可能不同。因此,对于不同的网络设备来说,所述更新值可能不同。可选的,所述更新值可以为所述本地G-SID的长度除以所述单位长度所得的值。也就是说,所述更新值对应的长度为所述单位长度的整数倍,即SI偏移的长度是所述单位长度的整数倍。例如,当单位长度为16比特时,所述本地段标识指示的长度为16比特,则更新值为1,所述段标识指示的长度为32比特,则更新值为2。优选的,所述单位长度为所述第一类型的C-SID的长度。
进而,网络设备102根据SI的值确定所述待拷贝内容在长度为128比特的元素中的位置,并根据SL指针的值确定所述元素在SID list中的位置。值得注意的是,在此过程中,可能需要调整SL指针的值。并且,在调整SL指针的值之后,可能需要将SI的值设置为初始值。例如,当所述本地G-SID为元素中的最后一个G-SID时,即,本地G-SID在所述SID list中的下一个G-SID将位于下一个元素中,此时需要调整SL指针的值,以使得SL指针指向所述下一个元素,并设置SI的值为初始值,以使得SI指向所述下一个元素中的第一个G-SID。或者,当SI偏移后指向当前元素中的padding部分时,例如,SI的值为1,而该元素中剩余16比特为全0时,或者,SI的值为2,而该元素中剩余32比特为全0时,此时需要调整SL指针的值,以使得SL指针指向所述下一个元素。
当所述扩展指针为所述一维指针时,所述扩展指针的调整过程包括:网络设备102根据所述本地段标识指示的长度确定SI的值,以使得SI的值用于指示所述待拷贝内容在SID list中的位置;网络设备102根据SI的值确定所述待拷贝内容在SID list中的位置。具体的,网络设备102读取所述第一报文的报文头中SI的原始值,将SI的原始值减去更新值,以获得SI的值。其中SI的更新值与以上描述相似,在此不再赘述。
可选的,网络设备102将所述扩展指针的值写入所述第一报文中。即更新后的所述第一报文的报文头中,也即后续介绍的第二报文的报文头中,包括所述扩展指针的值。
S170,网络设备102将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文。所述第二报文为包括更新后的DA字段的报文。
当同一段SRv6压缩子路径中的所有C-SID长度相同时,网络设备每次更新报文中的DA字段时,待拷贝内容的长度相同,该待拷贝内容的长度与所有C-SID的长度相同。然而,在本申请实施例中,不同长度的C-SID在同一段SRv6压缩子路径中混合编排,因此,该待拷贝内容的长度不可能与所有C-SID的长度相同。
在本申请实施例中,所述待拷贝内容的长度与所述第二类型的C-SID的长度相同,或者,所述待拷贝内容的长度为128比特。其中,所述第二类型的C-SID为长度最长的C-SID。具体的,当所述本地G-SID承载所述COC信息时,SID list中下一个G-SID仍然为C-SID,也即所述待拷贝标识仍然为C-SID,所述待拷贝内容的长度与所述第二类型的C-SID的长度相同,当所述本地G-SID未承载所述COC信息时,即所述待拷贝标识为SID时,所述待拷贝内容的长度为128比特。例如,所述第一类型的C-SID的长度为16比特,所述第二类型的C-SID的长度为32比特,所述待拷贝内容的长度为32比特。从而,无论所述待拷贝标识为所述第一类型的C-SID或所述第二类型的C-SID,所述待拷贝内容的长度均大于等于所述待拷贝标识的长度,从而确保该下一个G-SID完整地更新至所述第一报文的DA字段中。由此可见,所述待拷贝内容包括所述待拷贝标识,并且,所述待拷贝内容的长度大于等于所述待拷贝标识的长度。
可选的,所述待拷贝内容的长度可以配置在网络设备102中,或者,所述待拷贝内容的长度也可以携带在所述第一报文中,并由网络设备102从所述第一报文中读取。
可选的,所述待拷贝内容的长度可以根据所述本地段标识确定。具体的,当所述本地G-SID承载所述COC信息时,所述待拷贝标识仍然为C-SID,网络设备102将所述待拷贝内容放置在DA字段中prefix之后,覆盖原有的本地G-SID,从而所述待拷贝标识与prefix还原为所述待拷贝标识对应的SID。当所述本地G-SID未承载所述COC信息时,即所述待拷贝标识为SID时,网络设备102将所述待拷贝内容放置在DA字段中,覆盖包括prefix在内的128比特,从而DA字段中仅包括所述待拷贝内容。
可选的,所述待拷贝内容的长度也可以通过解析段列表中下一个元素的部分内容确定。具体的,在当前标识为元素中的最后一个子元素时,网络设备102解析所述下一个元素的部分内容,也即解析所述待拷贝内容。如果所述下一个元素的部分内容不是各段子路径中prefix的共同部分,则确定SID list中C-SID继续排列,即当前的SRv6压缩子路径未结束,所述待拷贝标识仍然为C-SID,网络设备102将所述待拷贝内容放置在DA字段中prefix之后,覆盖原有的本地G-SID,从而所述待拷贝标识与prefix还原为所述待拷贝标识对应的SID;如果所述下一个元素的部分内容是各段子路径中prefix的共同部分,则确定SID list中C-SID不再继续排列,即当前的SRv6压缩子路径结束,所述待拷贝标识为SID,网络设备102将所述待拷贝内容放置在DA字段中,覆盖包括prefix在内的128比特,从而DA字段中仅包括所述待拷贝内容。
结合图2所示的应用场景和图9所示的报文结构进行举例说明。其中,第一类型的C-SID的长度为16比特,第二类型的C-SID的长度为32比特,单位长度为第一类型的C-SID的长度,即16比特,待拷贝长度为第二类型的C-SID的长度,即32比特。
当网络设备102为网络设备1时,网络设备1接收报文,报文中SL指针的值为2,SI的值为8,DA字段中包括C-SID 1,C-SID 1为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为7,此时segment[SL][SI]指向C-SID 2,网络设备1将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 2和C-SID 3,网络设备1将C-SID 2和C-SID 3拷贝至报文的第二字段中,更新后的报文如图10所示。其中,prefix的长度可以为64比特。
当网络设备102为网络设备2时,网络设备2接收报文,报文中SL指针的值为2,SI的值为7,DA字段中包括C-SID 2,C-SID 2为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为6,此时segment[SL][SI]指向C-SID 3,网络设备2将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 3和C-SID 4,网络设备2将C-SID 3和C-SID 4拷贝至报文的第二字段中,更新后的报文如图11所示。
当网络设备102为网络设备3时,网络设备3接收报文,报文中SL指针的值为2,SI的值为6,DA字段中包括C-SID 3,C-SID 3为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为5,此时segment[SL][SI]指向C-SID 4,网络设备3将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 4和C-SID 5的前16比特,网络设备3将C-SID 4和C-SID 5的前16比特拷贝至报文的第二字段中,更新后的报文如图12所示。
当网络设备102为网络设备4时,网络设备4接收报文,报文中SL指针的值为2,SI的值为5,DA字段中包括C-SID 4,C-SID 4为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为4,此时segment[SL][SI]指向C-SID 5,网络设备4将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 5,网络设备4将C-SID 5拷贝至报文的第二字段中,更新后的报文如图13所示。
当网络设备102为网络设备5时,网络设备5接收报文,报文中SL指针的值为2,SI的值为4,DA字段中包括C-SID 5,C-SID 5为第二类型的C-SID,即本地段标识指示的长度为32比特,SI的更新值为2,SI的值为2,此时segment[SL][SI]指向C-SID 6,网络设备5将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 6,网络设备5将C-SID 6拷贝至报文的第二字段中,更新后的报文如图14所示。
当网络设备102为网络设备6时,网络设备6接收报文,报文中SL指针的值为2,SI的值为2,DA字段中包括C-SID 6,C-SID 6为第二类型的C-SID,即本地段标识指示的长度为32比特,SI的更新值为2,SI的值为0,即C-SID为container 1中的最后一个G-SID,网络设备6将SL指针的值减1,即SL的值为1,SI设置为初始值8,此时segment[SL][SI]指向container2中的C-SID 7,网络设备6将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID7,网络设备6将C-SID 7拷贝至报文的第二字段中,更新后的报文如图15所示。
当网络设备102为网络设备7时,网络设备7接收报文,报文中SL指针的值为1,SI的值为8,DA字段中包括C-SID 7,C-SID 7为第二类型的C-SID,即本地段标识指示的长度为32比特,SI的更新值为2,SI的值为6,此时segment[SL][SI]指向C-SID 8,网络设备7将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 8和C-SID 9,网络设备7将C-SID 8和C-SID 9拷贝至报文的第二字段中,更新后的报文如图16所示。
当网络设备102为网络设备8时,网络设备8接收报文,报文中SL指针的值为1,SI的值为6,DA字段中包括C-SID 8,C-SID 8为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为5,此时segment[SL][SI]指向C-SID 9,网络设备8将由此起始的32比特作为待拷贝内容,即待拷贝内容包括C-SID 9和16比特的padding,网络设备8将C-SID 9和16比特的padding拷贝至报文的第二字段中,更新后的报文如图17所示。
当网络设备102为网络设备9时,网络设备9接收报文,报文中SL指针的值为1,SI的值为5,DA字段中包括C-SID 9,C-SID 9为第一类型的C-SID,即本地段标识指示的长度为16比特,SI的更新值为1,SI的值为4,此时segment[SL][SI]指向padding部分,网络设备9将SL指针的值减1,即SL的值为0,并且由于C-SID 9未承载所述COC信息,网络设备9将128比特长度的SID 10拷贝至报文的第二字段中,更新后的报文如图18所示。
举例来说,当采用二维指针时,单位长度为16比特,所述第一类型的C-SID为16比特,所述第二类型的C-SID为32比特,网络设备102中本地段标识所对应的伪代码如下所示。本申请实施例中,网络设备102处所执行的二维指针调整过程以及DA字段更新过程均可参考该伪代码进行,包括但不限于图9所示的报文结构,在此不再赘述。
S180,网络设备102发送所述第二报文。
可选的,网络设备102根据所述第二报文的DA字段的内容,按照最长匹配规则确定报文的下一跳网络设备。如前所述,结合图2所示的应用场景和图10所示的报文结构,当网络设备102为网络设备1时,所述第二报文的DA字段中的prefix+C-SID 2还原出SID 2,网络设备1根据SID 2查找本地转发表项,确定下一跳网络设备为网络设备2,将所述第二报文向网络设备2发送。当网络设备102为网络设备2至9时,网络设备102根据所述目的地址字段的内容发送所述第二报文的过程以此类推,在此不再赘述。
在实际网络中,报文的转发路径可以由控制器生成,也可以由转发路径的头节点生成。当控制器生成报文的转发路径时,控制器也生成指示该转发路径的段列表。控制器将该段列表向转发路径的头节点发送。转发路径的头节点在接收到报文以后,从设备内部存储的若干转发路径中确定所述报文的转发路径,并确定对应该转发路径的段列表。将所述段列表添加至所述报文中,用于指导所述报文的转发。
本发明实施例提供了一种转发报文的方法。图19示出了方法200的方法流程图。该方法涉及控制器201,网络设备202和网络设备203。其中控制器201可以是网络中的控制器,用于计算报文的转发路径,并生成指示所述转发路径的段列表,例如图2所示的应用场景中的控制器,图2未示出该控制器。网络设备201为报文转发路径上的头节点,例如,当报文转发路径如图2中虚线所示时,网络设备201可以是图2所示应用场景中的网络设备S,网络设备202为报文转发路径上除头节点以外的其他网络设备,例如,网络设备202可以是图2所示应用场景中的网络设备1至网络设备9。该方法200的步骤包括:
S210,控制器201确定第一报文的转发路径。
控制器201可以与图2中网络设备S,网络设备1至10连接。控制器可以根据网络拓扑计算报文的转发路径。
S215,控制器201生成对应于所述转发路径的所述段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。
在所述段列表中,不同长度的C-SID在同一段SRv6压缩子路径中混合编排,所述段列表的具体细节可以参照对步骤S110的描述,相似之处不再赘述。
S220,控制器201向所述转发路径的入口设备发送所述段列表。
所述转发路径的入口设备为网络设备202,即控制器201向网络设备202发送所述段列表。具体的,控制器201可以向网络设备202发送控制报文,所述控制报文包括所述段列表。
S230,网络设备202生成第一报文,所述第一报文包括所述段列表,所述第一报文沿所述转发路径转发。
网络设备202可以是SRv6网络的入口设备。网络设备202在接收到数据报文以后,从设备内部存储的若干转发路径中确定该数据报文的转发路径,并确定对应该转发路径的段列表。将所述段列表添加至数据报文中以生成SRv6报文,即所述第一报文。
结合图2所示的应用场景,步骤S230的具体过程可以参照对步骤S120的描述,相似之处不再赘述。
S235,网络设备202根据所述段列表发送所述第一报文。
结合图2所示的应用场景,步骤S235的具体过程可以参照对步骤S130的描述,相似之处不再赘述。
S240,网络设备203接收所述第一报文。
结合图2所示的应用场景,步骤S240的具体过程可以参照对步骤S140的描述,相似之处不再赘述。
S245,网络设备203确定所述第一报文的报文头的目的地址字段的内容与本地段标识匹配。
结合图2所示的应用场景,步骤S245的具体过程可以参照对步骤S150的描述,相似之处不再赘述。
S250,网络设备203根据所述本地段标识的指示在所述段列表中确定待拷贝内容。
结合图2所示的应用场景,步骤S250的具体过程可以参照对步骤S160的描述,相似之处不再赘述。
S255,网络设备203将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文。
结合图2所示的应用场景,步骤S255的具体过程可以参照对步骤S170的描述,相似之处不再赘述。
S260,网络设备203发送所述第二报文。
结合图4所示的应用场景,步骤S260的具体过程可以参照对步骤S180的描述,相似之处不再赘述。
以上介绍了本申请实施例的方法100和方法200,与上述方法对应,本申请实施例还提供转发报文的设备。
图20是本申请实施例提供的一种网络设备2000的结构示意图,该设备具有上述图8所示的方法实施例中网络设备101或上述图19所示网络设备202的任意功能。网络设备2000可以是上述网络设备101或网络设备202的一部分,也可以是上述网络设备101或网络设备202本身。应理解到,网络设备2000可以包括比所示组件更多的附加组件或者省略其中所示的一部分组件,本申请实施例对此并不进行限制。如图20所示,网络设备2000包括:
处理单元2002,用于生成第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;所述处理单元2002可以执行图8所示的步骤S120或图19所示的步骤S230;
发送单元2003,用于根据所述段列表发送所述第一报文;所述发送单元2003可以执行图图8所示的步骤S130或图19所示的步骤S235。
可选的,网络设备2000还包括:
接收单元2001,用于从网络中的控制器接收所述段列表。
应理解,网络设备2000在转发报文时,仅以上述各功能模块/单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块/单元元完成,即将网络设备2000的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络设备2000与上述图8所示的方法100或图19所示的方法200属于同一构思,其具体实现过程详见方法100和方法200中的步骤,这里不再赘述。
在一些实施例中,网络设备2000中各个单元集成在一个处理单元中。例如,网络设备2000中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元2002通过芯片中的处理电路实现。接收单元2001通过芯片中的输入接口实现。发送单元2003通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(英文全称:field-programmable gate array,英文简称:FPGA)、可编程逻辑器件(英文全称:programmable logic device,英文简称:PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合实现。
在另一些实施例中,网络设备2000中各个单元单独物理存在。在另一些实施例中,网络设备2000的一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,接收单元2001和发送单元2003是同一个单元。在另一些实施例中,接收单元2001和发送单元2003是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
在网络设备2000中通过硬件实现的情况下,例如,网络设备2000中处理单元2002例如通过设备2300中的处理器2301实现。网络设备2000中接收单元2001、发送单元2003例如通过设备2300中的通信接口2303实现。又如,网络设备2000中处理单元2002例如通过设备2400中的中央处理器2411、中央处理器2431或者网络处理器2432中的至少一项实现。网络设备2000中接收单元2001、发送单元2003例如通过设备2400中的物理接口卡2432或物理接口卡2432中的至少一项实现。
在网络设备2000通过软件实现的情况下,网络设备2000中各个单元例如为设备2300或设备2400中的处理器读取存储器中存储的程序代码后生成的软件。例如,网络设备2000为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、Pod中的至少一种。在一些实施例中,网络设备2000以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(Network Functions Virtualization,NFV)技术来实现网络设备2000。采用虚拟机的方式实现时,网络设备2000例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出网络设备2000。在另一些实施例中,网络设备2000以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备2000执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备2000。在另一些实施例中,网络设备2000以Pod的形式,部署在硬件设备上。Pod包括多个容器,每个容器用于实现网络设备2000中的一个或多个单元。
图21是本申请实施例提供的一种网络设备2100的结构示意图,该设备具有上述图8所示的方法实施例中网络设备102或上述图19所示网络设备203的任意功能。网络设备2100可以是上述网络设备102或网络设备203的一部分,也可以是上述网络设备102或网络设备203本身。应理解到,网络设备2100可以包括比所示组件更多的附加组件或者省略其中所示的一部分组件,本申请实施例对此并不进行限制。如图21所示,网络设备2100包括:
接收单元2101,用于接收第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;所述接收单元2101可以执行图8所示的步骤S140或图19所示的步骤S240;
处理单元2102,用于确定所述第一报文的报文头的目的地址字段的内容与本地段标识匹配,根据所述本地段标识的指示在所述段列表中确定待拷贝内容,将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文;所述处理单元2102可以执行图8所示的步骤S150,S160,S170或图19所示的步骤S245,S250,S255;
发送单元2103,用于发送所述第二报文;所述发送单元2103可以执行图8所示的步骤S180或图19所示的步骤S260。
应理解,网络设备2100在转发报文时,仅以上述各功能模块/单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块/单元元完成,即将网络设备2100的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络设备2100与上述图8所示的方法100或图19所示的方法200属于同一构思,其具体实现过程详见方法100和方法200中的步骤,这里不再赘述。
在一些实施例中,网络设备2100中各个单元集成在一个处理单元中。例如,网络设备2100中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元2102通过芯片中的处理电路实现。接收单元2101通过芯片中的输入接口实现。发送单元2103通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(英文全称:field-programmable gate array,英文简称:FPGA)、可编程逻辑器件(英文全称:programmable logic device,英文简称:PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合实现。
在另一些实施例中,网络设备2100中各个单元单独物理存在。在另一些实施例中,网络设备2100的一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,接收单元2101和发送单元2103是同一个单元。在另一些实施例中,接收单元2101和发送单元2103是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
在网络设备2100中通过硬件实现的情况下,例如,网络设备2100中处理单元2102例如通过设备2300中的处理器2301实现。网络设备2100中接收单元2101、发送单元2103例如通过设备2300中的通信接口2303实现。又如,网络设备2100中处理单元2102例如通过设备2400中的中央处理器2411、中央处理器2431或者网络处理器2432中的至少一项实现。网络设备2100中接收单元2101、发送单元2103例如通过设备2400中的物理接口卡2432或物理接口卡2432中的至少一项实现。
在网络设备2100通过软件实现的情况下,网络设备2100中各个单元例如为设备2300或设备2400中的处理器读取存储器中存储的程序代码后生成的软件。例如,网络设备2100为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、Pod中的至少一种。在一些实施例中,网络设备2100以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(Network Functions Virtualization,NFV)技术来实现网络设备2100。采用虚拟机的方式实现时,网络设备2100例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出网络设备2100。在另一些实施例中,网络设备2100以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备2100执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备2100。在另一些实施例中,网络设备2100以Pod的形式,部署在硬件设备上。Pod包括多个容器,每个容器用于实现网络设备2100中的一个或多个单元。
图22是本申请实施例提供的一种网络设备2200的结构示意图,该设备具有上述图8所示的方法实施例中网络设备101或图19所示控制器201的任意功能。网络设备2200可以是上述网络设备101或控制器201的一部分,也可以是上述网络设备101或控制器201本身。应理解到,网络设备2200可以包括比所示组件更多的附加组件或者省略其中所示的一部分组件,本申请实施例对此并不进行限制。如图21所示,网络设备2200包括:
处理单元2201,用于确定报文的转发路径,生成对应于所述转发路径的所述段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;所述接收单元2201可以执行图8所示的步骤S110或图19所示的步骤S210,S215。
可选的,网络设备2200还包括:
发送单元2202,用于向所述转发路径的入口设备发送所述段列表;所述发送单元2202可以执行图19所示的步骤S220。
应理解,网络设备2200在生成段列表时,仅以上述各功能模块/单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块/单元元完成,即将网络设备2200的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络设备2200与上述图8所示的方法100或上述图19所示的方法200属于同一构思,其具体实现过程详见方法100或方法200中的步骤,这里不再赘述。
在一些实施例中,网络设备2200中各个单元集成在一个处理单元中。例如,网络设备2200中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元2201通过芯片中的处理电路实现。发送单元2202通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(英文全称:field-programmable gate array,英文简称:FPGA)、可编程逻辑器件(英文全称:programmable logic device,英文简称:PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合实现。
在另一些实施例中,网络设备2200中各个单元单独物理存在。在另一些实施例中,网络设备2200的一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,处理单元2201和发送单元2202是同一个单元。在另一些实施例中,处理单元2201和发送单元2202是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
在网络设备2200中通过硬件实现的情况下,例如,网络设备2200中处理单元2201例如通过设备2300中的处理器2301实现。网络设备2200中发送单元2202例如通过设备2300中的通信接口2303实现。
在网络设备2200通过软件实现的情况下,网络设备2200中各个单元例如为设备2300中的处理器读取存储器中存储的程序代码后生成的软件。例如,网络设备2200为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、Pod中的至少一种。在一些实施例中,网络设备2200以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(Network Functions Virtualization,NFV)技术来实现网络设备2200。采用虚拟机的方式实现时,网络设备2200例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出网络设备2200。在另一些实施例中,网络设备2200以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备2200执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备2200。在另一些实施例中,网络设备2200以Pod的形式,部署在硬件设备上。Pod包括多个容器,每个容器用于实现网络设备2200中的一个或多个单元。
下面对设备2300的硬件结构进行介绍。
参见图23,图23示出了本申请一个示例性实施例提供的设备2300的结构示意图。可选地,该设备2300配置为网络设备或控制器。换句话说,上述图8所示的方法100中的网络设备101和网络设备102,以及上述图19所示的方法200中的控制器201、网络设备202和网络设备203均可选地通过设备2300实现。该设备2300例如是网络设备,比如说设备2300是交换机、路由器等。或者,该设备2300例如是计算设备,比如说设备2300是主机、服务器或个人计算机等。该设备2300可以由一般性的总线体系结构来实现。
如图23所示,设备2300包括至少一个处理器2301、存储器2302以及至少一个通信接口2303。
处理器2302例如是通用中央处理器(central processing unit,CPU)、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(neural-network processingunits,NPU)、数据处理单元(Data Processing Unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器2302包括专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种逻辑方框、模块和电路。所述处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,设备2300还包括总线。总线用于在设备2300的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图23中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2302例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2302例如是独立存在,并通过总线与处理器2301相连接。存储器2302也可以和处理器2301集成在一起。
通信接口2303使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(RAN)或无线局域网(wireless local area networks,WLAN)等。通信接口2303可以包括有线通信接口,还可以包括无线通信接口。具体的,通信接口2303可以为以太(Ethernet)接口、快速以太(Fast Ethernet,FE)接口、千兆以太(Gigabit Ethernet,GE)接口,异步传输模式(Asynchronous Transfer Mode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口2303可以用于接收和发送控制报文及数据报文。
在具体实现中,作为一种实施例,处理器2301可以包括一个或多个CPU,如图23中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,设备2300可以包括多个处理器,如图23中所示的处理器2301和处理器2310。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,设备2300还可以包括输出设备和输入设备。输出设备和处理器2301通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器2301通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器2302用于存储执行本申请方案的程序代码2320,处理器2301可以执行存储器2302中存储的程序代码2320。也即是,设备2300可以通过处理器2301以及存储器2302中的程序代码2320,来实现方法实施例提供的报文转发方法。程序代码中可以包括一个或多个软件模块。可选地,处理器2301自身也可以存储执行本申请方案的程序代码或指令。
在具体实施例中,设备2300的处理器用于生成第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度,通过通信接口根据所述段列表发送所述第一报文。该处理器的详细处理过程请参考上述图8所示实施例中的步骤S120,S130以及图19所示实施例中的步骤S230,S235的详细描述,在此不再赘述。
在具体实施例中,设备2300的处理器用于通过通信接口接收第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;确定所述第一报文的报文头的目的地址字段的内容与本地段标识匹配,根据所述本地段标识的指示在所述段列表中确定待拷贝内容,将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文;以及通过通信接口发送所述第二报文。该处理器的详细处理过程请参考上述图8所示实施例中的步骤S140,S150,S160,S170,180以及图19所示实施例中的步骤S240,S245,S250,S255,S260的详细描述,在此不再赘述。
在具体实施例中,设备2300的处理器用于确定报文的转发路径,生成对应于所述转发路径的所述段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度。该处理器的详细处理过程请参考上述图8所示实施例中的步骤S110以及图19所示实施例中的步骤S210,S220的详细描述,在此不再赘述。
参见图24,图24示出了本申请一个示例性实施例提供的设备2400的结构示意图,可选地,该设备2400配置为网络设备。换句话说,上述图8所示的方法100中的网络设备101和网络设备102,以及图19所示的方法200中的网络设备202和网络设备203可选地通过设备2400实现。比如说设备2400是交换机、路由器等。如图24所示,设备2400包括:主控板2410和接口板2430。
主控板也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板2410用于对设备2400中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板2400包括:中央处理器2411和存储器2412。
接口板2430也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板2430用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(Packet over SONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(Flexible Ethernet Clients,FlexE Clients)。接口板2430包括:中央处理器2431、网络处理器2432、转发表项存储器2434和物理接口卡(ph10sical interface card,PIC)2433。
接口板2430上的中央处理器2431用于对接口板2430进行控制管理并与主控板2410上的中央处理器2411进行通信。
网络处理器2432用于实现报文的转发处理。网络处理器2432的形态可以是转发芯片。转发芯片可以是网络处理器(network processor,NP)。在一些实施例中,转发芯片可以通过专用集成电路(application-specific integrated circuit,ASIC)或现场可编程门阵列(field programmable gate array,FPGA)实现。具体而言,网络处理器2432用于基于转发表项存储器2434保存的转发表转发接收到的报文,如果报文的目的地址为设备2400的地址,则将该报文上送至CPU(如中央处理器2411)处理;如果报文的目的地址不是设备2400的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理可以包括:报文入接口的处理,转发表查找;下行报文的处理可以包括:转发表查找等等。在一些实施例中,中央处理器也可执行转发芯片的功能,比如基于通用CPU实现软件转发,从而接口板中不需要转发芯片。
物理接口卡2433用于实现物理层的对接功能,原始的流量由此进入接口板2430,以及处理后的报文从该物理接口卡2433发出。物理接口卡2433也称为子卡,可安装在接口板2430上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器2433处理。在一些实施例中,中央处理器也可执行网络处理器2432的功能,比如基于通用CPU实现软件转发,从而接口板2430中不需要网络处理器2432。
可选地,设备2400包括多个接口板,例如设备2400还包括接口板2440,接口板2440包括:中央处理器2441、网络处理器2442、转发表项存储器2444和物理接口卡2443。接口板2440中各部件的功能和实现方式与接口板2430相同或相似,在此不再赘述。
可选地,设备2400还包括交换网板2420。交换网板2420也可以称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板的情况下,交换网板2420用于完成各接口板之间的数据交换。例如,接口板2430和接口板2440之间可以通过交换网板2420通信。
主控板2410和接口板2430耦合。例如。主控板2410、接口板2430和接口板2440,以及交换网板2420之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板2410和接口板2430之间建立进程间通信协议(inter-process communication,IPC)通道,主控板2410和接口板2430之间通过IPC通道进行通信。
在逻辑上,设备2400包括控制面和转发面,控制面包括主控板2410和中央处理器2411,转发面包括执行转发的各个组件,比如转发表项存储器2434、物理接口卡2433和网络处理器2432。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器2432基于控制面下发的转发表对物理接口卡2433收到的报文查表转发。控制面下发的转发表可以保存在转发表项存储器2434中。在有些实施例中,控制面和转发面可以完全分离,不在同一设备上。
值得说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
设备2400还可以对应于上述图20所示的网络设备2000,在一些实施例中,图20所示的网络设备2000中的接收单元2001、发送单元2003相当于设备2400中的物理接口卡2433;网络设备2000中的处理单元2002相当于网络处理器2432、中央处理器2431或中央处理器2411。
设备2400还可以对应于上述图21所示的网络设备2100,在一些实施例中,图21所示的网络设备2100中的接收单元2101、发送单元2103相当于设备2400中的物理接口卡2433;网络设备2100中的处理单元2102相当于网络处理器2432、中央处理器2431或中央处理器2411。
设备2400还可以对应于上述图22所示的网络设备2200,在一些实施例中,图22所示的网络设备2200中的发送单元2202相当于设备2400中的物理接口卡2433;网络设备2200中的处理单元2201相当于网络处理器2432、中央处理器2431或中央处理器2411。
应理解,本实施例的设备2400可对应于上述各个方法实施例中的网络设备,该设备2400中的主控板2410、接口板2430和/或2440可以实现上述各个方法实施例中的网络设备所具有的功能和/或所实施的各种步骤,为了简洁,在此不再赘述。
参见图25,本申请实施例提供了一种系统2500,该系统2500包括:第一网络设备2501和第二网络设备2502。第一网络设备2501为如图8所示的设备101或图19所示的设备202,第二网络设备2502为如图8所示的设备102或图19所示的设备203。可选的,该系统2500还包括控制器2503。控制器2503为如图9所示的控制器201。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和模块,能够以软件、硬件、固件或者其任意组合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。作为示例,本申请实施例的方法可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本申请实施例的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本申请实施例的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。
信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、设备和模块的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”“,an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“若”和“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (21)
1.一种转发报文的方法,其特征在于,所述方法包括:
第一网络设备接收第一报文,所述第一报文包括对应于所述第一报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;
所述第一网络设备确定所述第一报文的报文头的目的地址字段的内容与本地段标识匹配;
响应于确定所述目的地址字段的内容与所述本地段标识匹配,所述第一网络设备根据所述本地段标识的指示在所述段列表中确定待拷贝内容;
所述第一网络设备将所述待拷贝内容拷贝至所述目的地址字段中,以生成第二报文;
所述第一网络设备发送所述第二报文;
其中,所述第一网络设备根据所述本地段标识的指示在所述段列表中确定待拷贝内容,包括:
所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置;
所述第一网络设备根据所述待拷贝内容在所述段列表中的位置确定所述待拷贝内容。
2.根据权利要求1所述的方法,其特征在于,所述第一报文的报文头包括第一指针和第二指针,所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置,包括:
所述第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值;
所述第一网络设备根据所述第一指针的值确定所述待拷贝内容在长度为128比特的元素中的位置,所述元素包括在所述段列表中;
所述第一网络设备根据所述第二指针的值确定所述元素在所述段列表中的位置。
3.根据权利要求1所述的方法,其特征在于,所述第一报文的报文头包括第一指针,所述第一网络设备根据所述本地段标识指示的长度确定所述待拷贝内容在所述段列表中的位置,包括:
所述第一网络设备根据所述本地段标识指示的长度确定所述第一指针的值;
所述第一网络设备根据所述第一指针的值确定所述待拷贝内容在所述段列表中的位置。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一长度为单位长度的X倍,所述第二长度为所述单位长度的Y倍,所述X, Y均为整数。
5.根据权利要求4所述的方法,其特征在于,所述单位长度为2的N次幂比特,所述N为大于等于3且小于7的整数。
6.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一长度为16比特,所述第二长度为32比特。
7.根据权利要求1-3中任一项所述的方法,其特征在于,所述第二类型的压缩段标识包括全局链路压缩段标识,所述全局链路压缩段标识指示所述转发路径上的特定网络设备通过特定链路转发所述报文。
8.根据权利要求7所述的方法,其特征在于,所述全局链路压缩段标识包括节点部分和链路部分,所述节点部分用于标识节点,所述链路部分用于标识链路,所述节点部分的长度与所述第一长度相同,所述链路部分的长度与所述第一长度相同。
9.根据权利要求1-3中任一项所述的方法,其特征在于,所述段列表包括长度为128比特的元素,所述元素中包括所述第一类型的压缩段标识和所述第二类型的压缩段标识。
10.根据权利要求1-3中任一项所述的方法,其特征在于,所述报文的报文头包括第一指针和第二指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在长度为128比特的元素中的位置,所述第二指针的值用于指示所述元素在所述段列表中的位置;或者,
所述报文的报文头包括第一指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在所述段列表中的位置。
11.一种网络设备,其特征在于,所述网络设备包括用于执行如权利要求1-10中任一项所述方法的单元。
12.一种网络系统,其特征在于,所述网络系统包括第一网络设备和第二网络设备,其中,所述第一网络设备被配置为执行如权利要求1-10中任一项所述的方法,所述第二网络设备被配置为:
生成报文,所述报文包括对应于所述报文的转发路径的段列表,所述段列表包括依次排列的多个压缩段标识,所述多个压缩段标识中每个压缩段标识的长度小于128比特,所述多个压缩段标识包括第一类型的压缩段标识和第二类型的压缩段标识,所述第一类型的压缩段标识的长度为第一长度,所述第二类型的压缩段标识的长度为第二长度,所述第一长度小于所述第二长度;
根据所述段列表发送所述报文。
13. 根据权利要求12所述的网络系统,其特征在于,所述第一长度为单位长度的X倍,所述第二长度为所述单位长度的Y倍,所述X, Y均为整数。
14.根据权利要求13所述的网络系统,其特征在于,所述单位长度为2的N次幂比特,所述N为大于等于3且小于7的整数。
15.根据权利要求12-14中任一项所述的网络系统,其特征在于,所述第一长度为16比特,所述第二长度为32比特。
16.根据权利要求12-14中任一项所述的网络系统,其特征在于,所述第二类型的压缩段标识包括全局链路压缩段标识,所述全局链路压缩段标识指示所述转发路径上的特定网络设备通过特定链路转发所述报文。
17.根据权利要求16所述的网络系统,其特征在于,所述全局链路压缩段标识包括节点部分和链路部分,所述节点部分用于标识节点,所述链路部分用于标识链路,所述节点部分的长度与所述第一长度相同,所述链路部分的长度与所述第一长度相同。
18.根据权利要求12-14中任一项所述的网络系统,其特征在于,所述段列表包括长度为128比特的元素,所述元素中包括所述第一类型的压缩段标识和所述第二类型的压缩段标识。
19.根据权利要求12-14中任一项所述的网络系统,其特征在于,所述报文的报文头包括第一指针和第二指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在长度为128比特的元素中的位置,所述第二指针的值用于指示所述元素在所述段列表中的位置;或者,
所述报文的报文头包括第一指针,所述第一指针的值用于指示所述多个压缩段标识中的一个压缩段标识在所述段列表中的位置。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在处理器上运行时,实现权利要求1-10任一项所述的方法。
21.一种芯片,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,以执行如权利要求1-10中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/101015 WO2021254500A1 (zh) | 2020-06-18 | 2021-06-18 | 一种转发报文的方法、设备和系统 |
EP21826231.9A EP4161006A4 (en) | 2020-06-18 | 2021-06-18 | Method, device and system for forwarding message |
US18/067,475 US12375589B2 (en) | 2020-06-18 | 2022-12-16 | Packet forwarding method, device, and system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010557405 | 2020-06-18 | ||
CN2020105574050 | 2020-06-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113824638A CN113824638A (zh) | 2021-12-21 |
CN113824638B true CN113824638B (zh) | 2025-03-11 |
Family
ID=78912236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010923722.XA Active CN113824638B (zh) | 2020-06-18 | 2020-09-04 | 一种转发报文的方法、设备和系统 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4161006A4 (zh) |
CN (1) | CN113824638B (zh) |
WO (1) | WO2021254500A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640616A (zh) * | 2020-11-30 | 2022-06-17 | 华为技术有限公司 | 一种报文传输、段列表生成、压缩段标识获取方法及装置 |
CN116489065A (zh) * | 2022-01-13 | 2023-07-25 | 华为技术有限公司 | 一种生成段标识的方法、网络设备和系统 |
CN116527642A (zh) * | 2022-01-20 | 2023-08-01 | 北京华为数字技术有限公司 | 一种报文处理方法及相关设备 |
CN114448881B (zh) * | 2022-02-25 | 2023-06-09 | 烽火通信科技股份有限公司 | 一种跨sr mpls与srv6域互操作通信的方法和系统 |
CN115037676B (zh) * | 2022-03-18 | 2023-06-09 | 烽火通信科技股份有限公司 | 一种支持可压缩的g-srv6中间节点保护的方法和装置 |
CN114827288B (zh) * | 2022-03-30 | 2024-06-25 | 阿里云计算有限公司 | 数据转发设备、数据处理方法及计算机可读存储介质 |
WO2023185235A1 (zh) * | 2022-04-02 | 2023-10-05 | 华为技术有限公司 | 报文转发方法、装置及系统 |
EP4510522A4 (en) * | 2022-05-11 | 2025-06-25 | Huawei Technologies Co., Ltd. | PACKET PROCESSING METHOD, APPARATUS, SYSTEM AND COMPUTER-READABLE STORAGE MEDIUM |
CN114866453B (zh) * | 2022-05-18 | 2024-01-19 | 中电信数智科技有限公司 | 一种基于G-SRv6协议的报文转发方法及系统 |
EP4425873A4 (en) * | 2022-06-28 | 2025-02-19 | New H3C Technologies Co., Ltd. | SENDING MESSAGES |
CN118368342A (zh) * | 2023-01-18 | 2024-07-19 | 华为技术有限公司 | 参数通告方法、装置、设备及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7602778B2 (en) * | 2005-06-29 | 2009-10-13 | Cisco Technology, Inc. | System and methods for compressing message headers |
US9660897B1 (en) * | 2013-12-04 | 2017-05-23 | Juniper Networks, Inc. | BGP link-state extensions for segment routing |
US9516118B2 (en) * | 2014-05-12 | 2016-12-06 | Telefonaktiebolaget L M Ericsson (Publ) | Scalable segment identifier allocation in segment routing |
US10305776B2 (en) * | 2017-05-31 | 2019-05-28 | Fujitsu Limited | Network verification |
CN109218189B (zh) * | 2017-07-03 | 2022-04-29 | 中兴通讯股份有限公司 | 跨域的路径的标识信息的确定方法、装置及存储介质 |
CN107566272B (zh) * | 2017-10-17 | 2021-10-12 | 新华三技术有限公司 | 转发表建立方法及数据转发方法 |
CN108429685B (zh) * | 2018-04-28 | 2020-08-04 | 电子科技大学 | 一种基于分段路由技术的服务功能链寻路方法 |
-
2020
- 2020-09-04 CN CN202010923722.XA patent/CN113824638B/zh active Active
-
2021
- 2021-06-18 EP EP21826231.9A patent/EP4161006A4/en active Pending
- 2021-06-18 WO PCT/CN2021/101015 patent/WO2021254500A1/zh unknown
Non-Patent Citations (1)
Title |
---|
BGP Extensions for Unified SID in TE Policy draft-liu-idr-segment-routing-te-policy-complement-03;中兴;IEFT;20200511;1-12 * |
Also Published As
Publication number | Publication date |
---|---|
EP4161006A4 (en) | 2023-11-22 |
US20230122099A1 (en) | 2023-04-20 |
CN113824638A (zh) | 2021-12-21 |
EP4161006A1 (en) | 2023-04-05 |
WO2021254500A1 (zh) | 2021-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113824638B (zh) | 一种转发报文的方法、设备和系统 | |
KR102753139B1 (ko) | Sr 네트워크에서 패킷을 전달하는 방법, 장치 및 시스템 | |
KR102544995B1 (ko) | 하이브리드 네트워크에서 패킷을 포워딩하기 위한 방법, 디바이스, 및 시스템 | |
EP4009596B1 (en) | Message forwarding method, device, and system in sr network | |
US20230155937A1 (en) | Route Advertisement Method and Related Device | |
US20230336478A1 (en) | Packet transmission method, apparatus, device, and system, and storage medium | |
CN113938403A (zh) | 一种能力通告方法及相关设备 | |
WO2022068744A1 (zh) | 获取报文头信息、生成报文的方法、设备及存储介质 | |
US12160361B2 (en) | Packet transmission method, apparatus, and device | |
CN116860488A (zh) | 一种进程通信方法和相关装置 | |
JP7448597B2 (ja) | メッセージ生成方法および装置ならびにメッセージ処理方法および装置 | |
CN114024888A (zh) | 一种路由通告方法及相关设备 | |
EP4236245A1 (en) | Route advertisement method, apparatus, and system | |
EP4294080A1 (en) | Route processing method and network device | |
US20230155938A1 (en) | Route Advertisement Method and Related Device | |
WO2022042403A1 (zh) | 生成路由信息、发送位置信息及转发报文的方法及设备 | |
US12375589B2 (en) | Packet forwarding method, device, and system | |
CN114629834B (zh) | 通信方法及装置 | |
EP4369690A1 (en) | Method and apparatus for transmitting network layer readable information, device, system, and medium | |
CN114079646A (zh) | 传输报文、配置映射表的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |