一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对用于分段路由的具有不同大小的分段进行混合的制作方法

2022-11-22 18:21:16 来源:中国专利 TAG:

对用于分段路由的具有不同大小的分段进行混合
1.相关申请交叉引用
2.本专利申请要求huaimo chen于2020年4月16日提交的申请号为63/011,118、发明名称为“对任何大小的分段进行混合的系统和方法(system and method for minimizing differences in segment identifiers)”的美国临时专利申请的权益,其全部内容通过引用结合在本技术中。
技术领域
3.本发明大体上描述了用于在分段路由网络中转发报文的技术。更具体地,本发明确保所述报文使用压缩的分段路由报头进行转发。


背景技术:

4.在传统的互联网协议(internet protocol,ip)网络路由中,ip报文是根据通过路由协议构建的路由表转发的。ip报文经过的路由通常是通过路由协议计算到的最短路径。在分段路由中,信源选择一条路径并将其编码在报头中作为一列按顺序排列的分段。网络的其余部分执行编码指令。
5.在第六版互联网协议(internet protocol version 6,ipv6)数据面中,一列按顺序排列的分段被编码在路由扩展头中,但是需要新的硬件。在基于ipv6的分段路由(segment routing version 6,srv6)中,ipv6分段路由报头(segment routing ipv6 header,srh)被添加到原始报文中作为ipv6扩展头,这可能会导致原始报文无限增大。ipv6扩展头会增大报文,导致报文可能超过报文大小限制。


技术实现要素:

6.本文公开了通过以下方式压缩基于第六版互联网协议(internet protocol version 6,ipv6)的分段路由报头:将一组包括公共的b个比特的位置信息和r个比特的功能(还可以是参数)的分段标识符(segment identifier,sid)压缩为只包括所述位置信息的唯一l个比特(还可能包括一部分功能和参数)的压缩分段标识符(compressed segment identifier,csid)。通过这种方式压缩这一组sid,转发封装报文降低了网络带宽利用率,从而提高了报文发送速率。
7.第一方面涉及一种由分段路由(segment routing,sr)网络域中的第一节点实现的方法。所述方法包括:所述第一节点从另一网络域中的第二节点接收根据分段标识符(segment identifier,sid)要经过所述sr网络域的报文,其中,一组所述sid包括第一数量的公共连续数据单位;所述第一节点获取与一组所述sid对应的压缩sid(compressed sid,csid),其中,每个csid包括对应sid的唯一连续数据单位,所述唯一连续数据单位对应于第二数量的数据单位;所述第一节点生成包括分段列表和剩余分段(segment left,sl)字段的分段路由报头(segment routing header,srh),其中,所述分段列表包括按顺序排列的分段,所述sl字段包括指示所述分段的由所述第二数量的数据单位表示的数量的值,所述
分段包括所述csid和不属于所述组的sid;所述第一节点将所述srh添加到所述报文中;所述第一节点将包括所述srh的所述报文转发给所述sr网络域中的第三节点。
8.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh包括:响应于确定其余sid的长度不是所述第二数量的倍数,确定当与所述其余sid的长度相加时,使得相应的和是所述第二数量的倍数的数据单位数量;通过将所述csid和包括所述数据单位数量的第一填充插入包括多个分段的桶中并将所述其余sid中的每个sid插入所述列表,生成所述分段列表。
9.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh还包括:确定所述分段列表中的分段的数量;通过将所述分段数量乘以128个比特并将相应的乘积除以所述第二数量,计算所述sl字段的值;设置所述sl字段包括所述计算值。
10.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh包括:响应于确定所述桶包括长度大于所述第二数量的空白,将一个或多个二次填充插入所述空白,直到所述空白的长度小于所述第二数量。
11.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述srh还包括具有第一子字段的标志字段、具有第二子字段的标签字段,其中,所述第一子字段包括所述第一数量的值,所述第二子字段包括所述第二数量的值。
12.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述获取csid包括:根据所述sr网络域的sr策略生成所述sid;对于至少一些所述sid中的每个sid,提取相应sid中的唯一连续数据单位作为csid。
13.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述接收报文包括:接收包括所述csid的所述报文;所述获取csid包括:从包括所述csid的所述报文中提取所述csid。
14.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述第一节点是所述sr网络域中的入口节点或边界节点。
15.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述sr网络域是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。
16.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述数据单位是字节、半字节和比特中的一个。
17.第二方面涉及一种由分段路由(segment routing,sr)网络域中的第一节点实现的方法。所述方法包括:所述第一节点从所述sr网络域中的第二节点接收包括互联网协议(internet protocol,ip)报头和分段路由报头(segment routing header,srh)的报文,其中,所述报文根据分段标识符(segment identifier,sid)经过所述sr网络域,一组所述sid包括第一数量的公共连续数据单位,所述ip报头包括所述报文的目的地址(destination address,da),所述srh包括分段列表和剩余分段(segment left,sl)字段,所述分段列表包括按顺序排列的分段,所述分段包括与一组所述sid对应的压缩sid(compressed sid,csid)和不属于所述组的sid,每个csid包括对应sid的唯一连续数据单位,所述唯一连续数据单位对应于第二数量的数据单位;响应于确定所述顺序中的下一个分段是csid,所述第一节点更新所述sl字段的值以指示所述顺序中的下一个分段,其中,所述sl字段的更新值
指示所述顺序中的剩余分段的由所述第二数量的数据单位表示的数量;所述第一节点根据所述srh中的所述更新后的sl字段,使用所述顺序中的下一个分段来更新所述ip报头中的部分da;所述第一节点根据所述更新后的da将包括所述ip报头和所述srh的所述报文转发给所述sr网络域中的第三节点。
18.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述srh还包括标志字段和标签字段,其中,所述srh中的所述标志字段包括用于指示一组所述sid中的公共连续数据单位的数量的第一子字段,所述srh中的所述标签字段包括用于指示csid中的连续唯一数据单位的数量的第二子字段,所述更新所述sl字段的值包括:确定所述第二子字段是否包括为0的值;响应于确定所述第二子字段包括为0的值,使用通过将所述接收到的srh中的所述sl字段的值乘以128个比特并将相应的乘积除以所述第二数量计算到的新值替换所述接收到的srh中的所述sl字段的值;响应于确定所述第二子字段包括不为0的值,将所述接收到的srh中的所述sl字段的值递减以指示所述下一个分段。
19.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述接收到的srh中的所述sl字段的值对应于剩余分段的由128个比特表示的数量,用于计算所述新值的所述第二数量是根据所述接收到的ip报头中的所述da确定的。
20.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在更新部分da之前,响应于确定所述顺序中的下一个分段不是csid,所述第一节点更新所述sl字段的值以指示所述顺序中的下一个分段,其中,所述sl字段的更新后的值指示所述顺序中的剩余分段的由128个比特表示的数量;
21.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述更新所述sl字段的值包括:使用通过将所述接收到的srh中的所述sl字段的值乘以所述第二数量、将相应的乘积除以128个比特并将相应的商减1计算到的新值替换所述接收到的srh中的所述sl字段的值。
22.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述接收到的srh中的所述sl字段的值对应于剩余分段的由所述第二数量的数据单位表示的数量。
23.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述srh还包括标签字段,其中,所述srh中的所述标签字段包括用于指示csid中的连续唯一数据单位的数量的第二子字段,用于计算所述新值的所述第二数量是根据所述第二子字段确定的。
24.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述srh还包括标志字段和标签字段,其中,所述srh中的所述标志字段包括用于指示一组所述sid中的公共连续数据单位的数量的第一子字段,所述srh中的所述标签字段包括用于指示csid中的连续唯一数据单位的数量的第二子字段,所述方法还包括:响应于确定所述顺序中的下一个分段不是csid,将所述第一子字段和所述第二子字段的值更新为0。
25.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述确定所述顺序中的下一个分段不是csid包括确定所述下一个分段是否对应于用于指示所有所述csid都已被处理的预设指示符,其中,所述指示符具有所述第二数量的数据单位的长度。
26.第三方面涉及一种节点设备。所述节点设备包括:接收器,用于接收报文;发送器,用于发送所述报文;与所述接收器和所述发送器耦合的存储器,其中,所述存储器存储指令;与所述存储器耦合的处理器,其中,所述处理器用于执行所述指令,以使得所述节点设
备执行根据任一公开实施例所述的方法。
27.第四方面涉及一种系统。所述系统包括:第一节点设备;与所述第一节点设备进行通信的第二节点设备,其中,所述第一节点设备或所述第二节点设备包括执行根据权利要求1至10中任一项所述的方法和任一公开实施例所述的方法的所述节点设备。
28.第五方面涉及用于分段路由(segment routing,sr)网络域中的报文转发装置。所述装置包括:报文接收模块,用于接收所述报文以处理所述报文;与所述报文接收模块耦合的报文发送模块,其中,所述报文发送模块用于将所述报文转发给另一节点;与所述报文接收模块或所述报文发送模块中的至少一个耦合的存储模块,其中,所述存储模块用于存储指令;与所述存储模块耦合的报文处理模块,其中,所述报文处理模块用于执行存储在所述存储模块中的所述指令,以执行根据任一公开实施例所述的方法。
29.为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本发明范围内的新实施例。
30.根据以下结合附图和权利要求书的具体实施方式,将会更清楚地理解这些和其它特征。
附图说明
31.为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相似的附图标记表示相似的部件。
32.图1示出了根据一个实施例操作的网络。
33.图2示出了分段路由报头(segment routing header,srh)。
34.图3为在分段路由(segment routing,sr)网络域中的入口节点处生成一桶压缩分段标识符(compressed segment identifier,csid)的示意图。
35.图4示出了分段列表。
36.图5为一种由sr网络域中的节点实现的转发报文的方法的一个实施例。
37.图6为一种由sr网络域中的节点实现的转发报文的方法的另一个实施例。
38.图7为sr网络域中的节点的示意图。
39.图8为用于sr网络域中的报文转发装置的一个实施例的示意图。
具体实施方式
40.首先应该理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可使用任意数量的技术来实现,无论这些技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等同物的完整范围内修改。
41.图1示出了根据一个实施例操作的网络150(例如一个或多个不同实体的一个或多个网络的聚合)。如图所示,网络150包括客户端网络151和159(在一个实施例中,它们是相同的网络),两者经由网络160中的边缘节点161和167(作为入口节点或出口节点)进行通信耦合。网络160包括网络节点组成的n个域(162、164),其中,n是非零整数,这些网络节点经由一个或多个边界节点(163)互连。客户端网络151和159都可以包括具有经由网络150进行通信的上层应用的主机(例如终端节点)。在一个实施例中,客户端网络151和/或159中的一
些主机支持分段路由,因为它们可以生成和处理分段路由(segment routing,sr)报文。客户端网络151和159中的终端节点可以将报文(或原报文(native packet))发送到网络160中的边缘节点161和167。报文可以是第四版互联网协议(internet protocol version 4,ipv4)报文、第六版互联网协议(internet protocol version 6,ipv6)报文、以太网帧/报文或其它协议报文。
42.在一个实施例中,边缘节点161和167处理从网络151和159接收到的报文,这种处理可以包括将这些报文封装或以其它方式处理成sr(或sr-mpls)报文,例如,根据数据面确定的分段路由策略将sr报头(sr header,srh)(有时也称为分段路由扩展头)(可能还将另一ip报头)添加到这些报文中。
43.在一个实施例中,网络160中的边缘节点161和167或另一节点确定分段路由策略(例如分段列表,包括表示ip地址(例如ipv6地址)的分段),以应用于不同报文流中的报文。这些策略可以根据网络条件、网络编程等而改变。在一个实施例中,分段路由策略指定添加一个或多个srh 182,每个srh 182包括一个或多个分段列表188,使得分段路由报文175包括一个或多个srh 182。在一个实施例中,接收不包括srh的原报文170(可能包括ip目的地址,即接收节点161或167的分段标识符(segment identifier,sid)/ip地址),接收节点161或167将原报文170封装在sr报文175中。sr报文175包括一个或多个添加的srh 182,每个srh 182包括一个或多个分段列表188。节点161或167还添加包括报文的目的地址(destination address,da)的ip报头181。在一个实施例中,接收包括分段路由扩展头的报文170(图1中未示出),接收节点161或167添加一个或多个srh 182,使得分段路由报文包括一个或多个添加的srh 182,每个srh 182包括一个或多个分段列表188。相比之下,对于这些场景中的每个场景,可以使用单个srh 182,其包括一个分段列表188中的所有分段。
44.sid(例如srv6 sid)包括位置信息(locator)和功能(可选地包括任何参数)。位置信息指示为了执行功能,报文170要路由到多域网络160中的哪个节点。该功能可以是包括任何可选参数的任何可能功能。在一个实施例中,一组sid包括两个公共部分:一部分是前b个比特的相同公共前缀,另一部分是最后r个比特的公共功能和参数。这些srv6 sid的中间l个比特是不同的,其中,l=128
–b–
r个比特。相应地,这一组sid可以被压缩成csid,每个csid包括唯一位置信息的l个比特。在一个实施例中,srh 182中的分段列表188包括一个或多个csid。
45.srh 182还包括多个字段,例如具有b子字段183的标志字段、具有l子字段184的标签字段以及剩余分段(segment left,sl)字段185。在一个实施例中,b子字段183用于指示这一组sid中的公共连续数据单位的长度。l子字段184是针对csid的大小定义的。sl字段185用于指向激活(或下一个)分段(sid或csid)的指针。
46.在将srh 182和ip报头181添加到报文175中之后,边缘节点161和167将封装报文转发给中间节点165、166。中间节点165、166接收封装报文175,并根据分段列表188中的csid(通过使用sl字段185中的值)更新ip报头181中的目的地址(destination address,da)。相应地,中间节点165、166根据更新后的da将封装报文175(其包括更新后的ip报头181)转发给多域网络160中的下一个节点(例如边界节点163或边缘节点167)。一旦封装报文175穿过多域网络160,边缘节点161和167最终解封装或移除srh 182(还可能解封装或移除ip报头181),并将原报文179转发到网络159或151中。
47.本文公开了通过以下方式压缩srh 182的技术:将一组包括公共的b比特位置信息和r比特功能(还可以是参数)的sid压缩为只包括唯一的l比特位置信息的csid。通过这种方式压缩这一组sid,转发封装报文减少了网络带宽,从而提高了报文发送速率。
48.图2示出了分段路由报头(segment routing header,srh)200。srh 200类似于图1中的srh 182。如图所示,srh 200包括增大数据报文的多个字段。具体地,srh 200包括下一报头字段211、头扩展长度(hdr ext len)字段213、路由类型字段215、剩余分段(segments left,sl)字段220、最后条目字段231、标志字段235、标签字段237和分段列表239。
49.下一报头字段211包括8比特选择器。下一报头字段211用于标识紧跟srh之后的报头类型。hdr ext len字段213包括8比特无符号整数。hdr ext len字段213用于指示路由报头(routing header,rh)的以8个八位字节为单位的长度,不包括前8个八位字节。路由类型字段215包括特定路由报头变体的8比特标识符。sl字段220包括8比特无符号整数。sl字段220用于标识在到达最终目的地之前的分段列表239中的剩余分段的数量。sl值在每个分段递减。最后条目字段231包括分段列表中的最后一个元素的索引。
50.标志字段235包括8比特标志。在一个实施例中,标志字段235包括b子字段240。b子字段240用于指示一组sid中的公共连续数据单位的长度。长度可以用字节、半字节或比特来测量。在一个实施例中,如果使用字节作为数据单位,则b的大小为4个比特,如果使用半字节作为数据单位,则b的大小为5个比特,如果使用比特作为数据单位,则b的大小为7个比特。
51.标签字段237用于对与srh 200相关联的报文加标签,作为一类或一组报文的一部分。在一个实施例中,标签字段237包括l子字段250。l子字段250是针对csid的大小定义的。在一个实施例中,如果分段列表239中的csid的大小和位置以字节、半字节或比特为单位,则l子字段250的大小为4个、5个或7个比特。
52.分段列表239包括一个或多个分段。这些分段的排列顺序反映了对应报文的路径。每个分段能够通过sl字段220的索引进行标识,每个分段的大小为128个比特或l个比特。128比特分段包括一个128比特sid,或一个或多个l比特csid。如图2所示,分段列表239可以包括一桶(或一组)csid(即分段列表[1]至[m]280,其中,每个128比特分段包括一个或多个l比特csid)以及sid(即分段列表[0]和分段列表[m 1]至[k]285,其中,每个128比特分段包括一个128比特sid)。在另一个实施例中,分段列表239可以只包括csid。
[0053]
图3为在分段路由(segment routing,sr)网络域中的入口节点处生成一桶压缩分段标识符(compressed segment identifier,csid)的示意图。分段路由的定义在c.filsfils等人于2020年10月7日发表的互联网工程任务组(internet engineering task force,ietf)草案“srv6 network programming(srv6网络编程)”(https://datatracker.ietf.org/doc/draft-filsfils-spring-srv6-network-programming)中详述。本文档介绍了如何使用分段路由报头(segment routing header,srh)将网络指令(功能)插入ipv6报头。例如,128比特的srv6 sid(ipv6目的地址)的结构如图3所示。如图3所示,sid 301a至301n包括具有公共前缀位置信息310和唯一后缀(称为csid)320的位置信息。位置信息指示为了执行功能330,报文要路由到哪个节点。功能330可以是包括任何可选参数的任何可能功能。sid 301a至301n的长度通常是固定的。
[0054]
如图3所示,入口节点可以接收srv6策略中的包括(n 1)个128比特分段的分段列
表300。在一个实施例中,分段列表301a至301n(包括301i和301 1)对应于基于ipv6的分段路由(sr version 6,srv6)策略中的srv6分段标识符(segment identifier,sid)(从srv6 sid-0至sid-i n)。每个分段301a至301n表示128个比特的srv6 sid。sid包括位置信息、功能和参数。这些srv6 sid(例如sid 301i 1至301n)中的一些sid包括两个公共部分:一部分是前b个比特的相同公共前缀,另一部分是最后r个比特的公共功能和参数。这些sid 301i 1至301n的中间l个比特是不同的,其中,l=128
–b–
r个比特。
[0055]
在一个实施例中,入口节点161、167可以将sid 301i 1至301n(或移除公共比特b和r)至(n 1)个l比特csid 341i 1至341n压缩为一桶csid(下面详细描述为图4中的桶410)。因此,分段列表350包括sid 310a至310i和csid 341i 1至341n。每个csid 341i 1至341n要小于128个比特。入口节点161、167可以将分段列表350添加到srh 200中,而不是分段列表300。相应地,入口节点161、167将srh显著减小了(n

i 1)
×
(b r)个比特。
[0056]
图4示出了分段列表400。如图4所示,分段列表400包括一桶csid(以下简称桶)410和sid 450。桶410包括一个或多个压缩sid(compressed sid,csid)420。也就是说,桶410包括一个或多个128比特分段内的按顺序排列的csid 420。每个csid 420占用一个分段或两个相邻分段中的l个比特。在csid的末尾,桶410包括最后一个csid之后的csid结束(end-of-csid,endc)430,用于指示压缩结束。endc 430与csid具有相同的长度(例如l个比特)。在一个实施例中,endc 430的l个比特都为0,这是为endc 430保留的。在另一个实施例中,endc 430的l个比特都为1。在endc 430之后,可以添加填充440,以便使包括sid 450和填充的分段的长度是l个比特的倍数。例如,假设余数(remainder,rr)表示srv6 sid(从sid-i到sid-0)除以l的大小,如图4所示。如果rr为0,则桶中没有填充440;否则(即rr不为0),桶中存在(l

rr)个比特的填充440。具体地,对于从sid-i到sid-0的(i 1)个srv6 sid,rr=(i 1)
×
128%l。如果rr为0,则没有填充440;否则,桶中存在(l

rr)个比特的填充440。在一个选项中,填充440的(l

rr)个比特都为0。
[0057]
在添加填充440之后,如果桶410中存在任何空白(例如图4中csidn左侧的空间),则可以添加二次填充(未示出),以便使剩余空间(在添加二次填充之后)小于l个比特。桶420中csid1右侧的二次填充的总数量(ne)通过ne=(j
×
128

l rr)/l

(n 1)计算得到。类似于填充440,二次填充可以设置为全0或全1。在一个实施例中,二次填充可以是另一个endc。
[0058]
图5为一种由分段路由(segment routing,sr)网络域中的节点(例如边缘节点161、167或边界节点163)实现的转发报文的方法500的一个实施例。通过显著减小要添加到报文中的分段路由报头,方法500改进了上述转发过程。通过实现这样压缩的分段路由报头,报文的传输需要更少的网络带宽,使得传输效率高。
[0059]
在步骤510中,节点从另一网络域中的节点接收报文。该报文根据分段标识符(segment identifier,sid)要经过sr网络域。在一个实施例中,节点是sr网络域中的入口节点。在另一个实施例中,节点是sr网络域中的边界节点。sr网络域是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。sid的值为128个比特。在一个实施例中,sid包括位置信息、功能和参数。当用于显式流量工程路径的分段路由策略用于在网络域中的边缘节点(例如入口节点)处控制报文时,生成sid并将其添加到报文中,以指示网络域中的节点通过路径导航报文。在一个实施例中,一组(或一些)
sid包括多个(例如b个比特)公共连续数据单位(例如字节、半字节或比特)。如图3所示,一组sid 301a至301n可以在位置信息310中包括b个比特的公共前缀。也就是说,这一组sid在位置信息中包括l个比特的唯一后缀(即位置信息的其余部分)。此外,这一组sid还可以包括r个比特的公共功能和参数。相应地,这一组中的sid按顺序包括b个比特的公共前缀、l个比特的唯一后缀和r个比特的公共功能和参数。在一个实施例中,这一组sid 301a-301n可以包括公共功能或参数中的至少一个。
[0060]
在步骤530中,节点获取与一组sid(在位置信息中包括b个比特的公共前缀)对应的压缩sid(compressed sid,csid)320。csid 320包括对应sid的唯一连续数据单位(例如比特)。例如,csid 320是位置信息310中的值为l个比特的唯一后缀,如图3所示。
[0061]
在一个实施例中,为了确定csid,节点根据sr网络域的sr策略为报文生成sid。节点可以标识在位置信息中包括b个比特的公共前缀的一组sid。在一个实施例中,节点可以根据绑定sid标识一组sid。一旦确定了这一组sid,节点就会提取相应sid中的唯一后缀作为这一组中的每个sid对应的csid。在一个实施例中,sid的大小或长度为128个比特。在这种情况下,对应csid的大小小于128个比特(例如,128个比特减b个比特的公共前缀和r个比特的公共功能和参数)。
[0062]
在另一个实施例中,在步骤510中,节点可以从相同或不同网络域中的另一节点接收csid。因此,为了在步骤530中确定csid,节点从包括csid的报文中提取csid。
[0063]
在步骤550中,节点生成分段路由报头(segment routing header,srh)200。在一个实施例中,节点创建srh 200(如图2所示),其中,srh 200包括分段列表(由图2中的分段列表[0]至[k]指示)和一组字段,例如剩余分段(segment left,sl)字段220、具有第一子字段(由图2中的b子字段240指示)的标志字段235以及具有第二子字段(由图2中的l子字段250指示)的标签字段237。在一个实施例中,标志字段235和标签字段237不包括任何其它子字段。
[0064]
在创建srh 200之后,节点生成分段列表239。分段列表239的排列顺序反映了报文的路径。分段列表239包括按顺序排列的分段。相应地,每个分段包括一个或多个csid,例如部分(例如csid)或整个sid。在一个实施例中,节点生成一桶csid 410,如图4所示。一桶csid 410包括按顺序排列的多个分段。在一种实现方式中,节点使用csid(例如图3中的341i 1至341n)填充这一组分段。相应地,这一组中的大多数(但不是所有)分段都使用多个csid填充。此外,节点在顺序中的最后一个csid(例如图4中标记为分段列表[i 1]的分段中的csid1)的后面插入压缩结束(end of compression,endc)430。endc 430指示没有更多csid。endc 430与csid具有相同的长度(即一组sid的位置信息中的唯一后缀的长度)。根据预定义设置,endc 430可以是全0或全1。
[0065]
在一个实施例中,节点可以将全0或1的填充440添加到endc 430,以便使包括sid的分段的长度是l个比特的倍数。在一种实现方式中,节点确定未由csid表示的剩余sid的长度(或包括这些sid的分段的长度)是否是l的倍数。响应于确定剩余sid的长度不是l的倍数,节点确定当与剩余sid的长度相加时,使得相应的和是l的倍数的数据单位数量(quantity/number)。相应地,节点通过将csid、endc 430和包括数据单位数量的主填充440插入一桶csid 410,然后将剩余sid 450中的每个sid插入分段400,生成分段列表239。另一方面,节点可以确定剩余sid的长度是l的倍数。在这种情况下,节点不将任何填充440添加
到桶410中的endc 430。
[0066]
此外,节点可以添加二次填充,以便填补桶中的任何空白,使得剩余空间的长度小于l。在一种实现方式中,节点确定桶410是否包括长度大于l的空白。响应于确定桶包括长度大于l的空白,节点将一个或多个二次填充插入或添加到空白中,直到空白的长度小于l。这样的二次填充可以预设为endc 430或一系列长度为l个比特的1或0。
[0067]
一旦创建了srh 200,节点还设置srh 200中各个字段的值。在一个实施例中,节点将一个值插入sl字段220(或设置sl字段220的值)。在一种实现方式中,节点确定分段列表239中的分段的数量(quantity/number)。随后,节点通过将分段数量乘以128个比特并将相应的乘积除以l,计算sl字段220的值。然后,节点将sl字段220设置为包括计算值。这样,sl字段220的值表示以l比特为单位的分段的数量。
[0068]
如果分段列表239包括csid下面的128个比特的至少一个sid(例如图2中的srv6 sid-n至srv6 sid-t),节点以不同的方式计算sl字段220的值。sl的值表示128个比特的分段的数量。例如,对于图2中的分段列表,为sl计算的值是k,表示(k 1)个128比特分段。在这种情况下,srh 200中的标志字段235的b子字段240和标签字段237的l子字段250都被设置为0。
[0069]
另外,节点将一个值插入srh 200中的标志字段235的b子字段240。在一个实施例中,节点标识一组sid中的公共连续数据单位(例如图3中的b个比特的公共前缀)。在一种实现方式中,节点确定sid的位置信息310中的公共前缀。节点还将公共前缀的大小确定为b个比特。相应地,节点将b插入标志字段235的b子字段240。例如,当一组sid在位置信息310中包括14个比特的公共前缀时,节点将数值14填入或插入b子字段240。因此,标志字段235中的b子字段240包括一组sid的位置信息310中的公共前缀的数据单位的数量的值。
[0070]
此外,节点将一个值插入srh 200中的标签字段237的l子字段250。在一种实现方式中,节点标识一组sid中的一个sid中的唯一连续数据单位(例如图3中的l个比特的压缩sid)。也就是说,节点确定一组sid的位置信息中的唯一后缀。然后,节点将唯一后缀的大小确定为l个比特。相应地,节点将l插入标签字段237的l子字段250。例如,当这一组中的每个sid在位置信息310的末尾包括唯一的9个比特时,节点将数值9插入l子字段250。因此,标签字段237中的l子字段250包括一组sid的位置信息中的唯一后缀的数据单位的数量的值。
[0071]
在步骤570中,节点将srh 182添加或压入(push)到报文175中。在一个实施例中,节点还生成互联网协议(internet protocol,ip)报头181,并将ip报头181作为外层报头添加到包括srh 182的报文175中,从而封装报文175和srh 182。在一个实施例中,ip报头181是第六版ip(ip version 6,ipv6)报头。在另一个实施例中,ip报头181是第四版ip(ip version 4,ipv4)报头。ip报头181包括目的地址(destination address,da),其指示sr网络域中的节点的地址,报文175随后经过该sr网络域。节点地址由sid表示。相应地,da也包括位置信息、功能和参数。节点根据分段列表239确定顺序中的下一个节点的地址。下个一节点的地址对应于分段列表239中的下一个sid。下一个sid可以由csid(例如341n)表示。在这种情况下,节点可以根据csid构建sid(例如301n)。也就是说,节点可以在csid前添加位置信息中的公共前缀,并将公共功能和参数添加到csid中。然后,节点将下一个节点的构建地址或sid插入da。在步骤590中,节点将包括srh 182的报文175转发给sr网络域中的下一个节点。在一个实施例中,报文175是根据ip报头181中的与报文175一起发送的da转发的。
[0072]
图6为一种由分段路由(segment routing,sr)网络域中的节点(例如中间节点165、166)实现的转发报文175的方法600的另一个实施例。通过只更新报文的部分目的地址,而不是更新整个目的地址,方法600改进了上述转发过程。相应地,节点处理大量报文,但需要较少的处理时间资源。
[0073]
在步骤610中,节点从sr网络域中的另一节点接收包括互联网协议(internet protocol,ip)报头181和分段路由报头(segment routing header,srh)182的报文175。节点是sr网络域中的中间节点。另一方面,发送节点可以是入口节点、中间节点或边界节点。sr网络域162、164是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。
[0074]
报文175用于根据分段标识符(segment identifier,sid)经过sr网络域。一些sid包括第一数量的公共连续数据单位(例如图3中的b个比特的公共前缀)。数据单位可以是字节、半字节或比特。如上文结合图5所述,当用于显式流量工程路径的分段路由策略用于在网络域中的边缘节点(例如入口节点)处控制报文时,生成sid并将其添加到报文中,以指示网络域中的节点通过路径导航报文。在一个实施例中,sid的值为128个比特,sid包括位置信息、功能和参数。在一个实施例中,至少一些sid包括多个(例如b个比特)公共连续数据单位(例如字节、半字节或比特)。例如,如图3所示,一组sid可以在位置信息中包括b个比特的公共前缀和l个比特的唯一后缀(即位置信息的其余部分)。此外,这一组sid还可以包括r个比特的公共功能和参数。相应地,这一组中的sid按顺序包括b个比特的公共前缀、l个比特的唯一后缀和r个比特的公共功能和参数。
[0075]
与报文175一起接收的ip报头181包括目的地址(destination address,da),其指示sr网络域中的一个节点的地址,报文随后经过该sr网络域。节点地址由sid表示。在一个实施例中,ip报头181是第六版ip(ip version 6,ipv6)报头。在另一个实施例中,ip报头181是第四版ip(ip version 4,ipv4)报头。
[0076]
也与报文一起接收的srh 200包括分段列表239、剩余分段(segment left,sl)字段220、标志字段235和标签字段237。这些分段的排列顺序反映了报文的路径。分段列表239包括分段,每个分段包括部分或整个sid。在一个实施例中,分段列表239包括与一组sid对应的一桶压缩sid(compressed sid,csid)410。一桶csid 410包括一组按顺序填充有csid的分段。桶中的每个csid包括对应sid的唯一连续数据单位。在一个实施例中,csid是位置信息中的值为l个比特的唯一后缀,如图3所示。此外,一桶csid包括顺序中的最后csid之后的压缩结束(end of compression,endc)430。endc 430指示没有更多csid。endc 430与csid具有相同的长度(即一组sid的位置信息中的唯一后缀的长度)。根据预定义设置,endc 430可以是全0或全1。在一个实施例中,节点可以将全0或1的主填充440添加到endc 430,以便使包括sid的分段的长度是l个比特的倍数。此外,节点可以添加二次填充,以便填补桶中的任何空白,使得剩余空间的长度小于l。除一桶csid 410之外,分段列表239还可以包括分段中的一个或多个sid。sid可以放置在一桶csid的前面或后面。
[0077]
除分段列表之外,srh 200还包括剩余分段(segment left,sl)字段220。如结合步骤630详述,sl字段220表示剩余分段的由128个比特或l个比特表示的数量。除sl字段220之外,srh 200还包括标志字段235。srh 200中的标志字段235包括第一子字段(由图2中的b子字段240指示),标签字段237包括第二子字段(由图2中的l子字段250指示)。标志字段235的
b子字段240用于指示一组sid中的公共连续数据单位的数量。例如,当b子字段240包括数值14时,这表示一组sid在位置信息中包括14个比特的公共前缀。标签字段237的l子字段250用于指示一组sid中的唯一连续数据单位的数量以及csid的大小。例如,当l子字段250包括数值9时,该数值指示这一组中的每个sid在位置信息的末尾包括唯一的9个比特,因此,csid的大小为9个比特。
[0078]
在步骤630中,响应于确定顺序中的下一个分段是csid,更新sl字段220的值以指示顺序中的下一个分段。在一个实施例中,sl字段220的更新后的值等于顺序中的剩余分段的由l个比特表示的数量(因为接收到的srh 200中的sl字段220的值对应于剩余分段的由128个比特表示的数量)。例如,节点确定l子字段250是否包括为0的值。响应于确定l子字段250包括为0的值,节点使用通过将接收到的srh 200中的sl字段220的值乘以128个比特并将相应的乘积除以l(根据接收到的ip报头181的da确定)计算到的新值替换接收到的srh 200中的sl字段220的值(对应于剩余分段的由128个比特表示的数量)。另一方面,响应于确定l子字段220包括不为0的值,节点将接收到的srh 200中的sl字段220的值递减以指示下一个分段(即csid)。
[0079]
另一方面,响应于确定顺序中的下一个分段不是csid(并且在更新部分da之前),节点更新接收到的srh 200中的sl字段220的值(对应于剩余分段的由l个比特表示的数量)以指示顺序中的下一个分段(即sid)。sl字段220的更新后的值应该等于顺序中的剩余分段的由128个比特表示的数量。为了更新sl字段220的值,使得更新后的值指示顺序中的剩余分段的由128个比特表示的数量(因为接收到的srh中的sl字段的值对应于剩余分段的由l个比特表示的数量),节点使用通过将接收到的srh 200中的sl字段220的值乘以l(比特)(根据接收到的srh中的l子字段确定)、将相应的乘积除以128(比特)并将相应的商减1计算到的新值替换接收到的srh 200中的sl字段220的值。另外,响应于确定顺序中的下一个分段不是csid,节点还可以将b子字段240和l子字段250的值更新为0。在确定顺序中的下一个分段不是csid时,节点可以确定下一个分段是否对应于用于指示所有csid都已被处理的预设指示符(例如endc)。在一个实施例中,预设指示符的长度为l个比特。
[0080]
在步骤650中,节点根据srh 200中的更新后的sl字段220使用顺序中的下一个分段来更新ip报头181中的部分da。为了更新部分da,节点使用srh 200中的b子字段240和l子字段250标识待更新的部分da。在一个实施例中,节点根据srh 200中的b子字段240的值确定部分da的起始位置以及根据srh 200中的l子字段250的值确定部分da的长度。然后,节点进一步根据起始位置和长度确定部分da的位置。例如,假设da的长度为128个比特,节点可以在b子字段240中标识20个比特的值且在l子字段250中标识10个比特的值。相应地,节点可以确定应该更新第21个比特至第30个比特的部分da。
[0081]
在标识待更新的部分da之后,节点使用由srh 200中的更新后的sl字段220指示的分段替换标识的部分da。如果sl字段的值已经更新为剩余分段的由l个比特表示的数量,节点使用由sl字段220的更新后的值指示的csid替换部分da。另一方面,如果sl字段220的值已经更新为剩余分段的由由128个比特表示的数量,节点使用由sl字段的更新后的值指示的csid替换整个da。
[0082]
在步骤670中,在更新部分da之后,节点根据更新后的da将包括ip报头181和srh 182的报文转发给sr网络域162、164中的另一节点。相应地,报文被转发给在ip报头181的更
新后的da中指示的下一个节点。
[0083]
图7为本发明一个实施例提供的分段路由(segment routing,sr)网络域中的节点700(也称为网络设备)(例如边缘节点161、167,中间节点165、166,或边界节点163)的示意图。节点700适合于实现本文中所述的公开实施例。节点700包括用于接收数据的入端口710和接收单元(rx)720,用于处理所述数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)730,用于发送所述数据的发送单元(tx)740和出端口750以及用于存储所述数据的存储器760。节点700还可以包括与入端口710、接收单元720、发送单元740和出端口750耦合的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用于光信号或电信号的出口或入口。
[0084]
处理器730通过硬件和软件来实现。处理器730可以实现为一个或多个cpu芯片、一个或多个核(例如作为多核处理器)、一个或多个现场可编程门阵列(field-programmable gate array,fpga)、一个或多个专用集成电路(application specific integrated circuit,asic)和一个或多个数字信号处理器(digital signal processor,dsp)。处理器730与入端口710、接收单元720、发送单元740、出端口750和存储器760进行通信。处理器730包括报文处理器770。报文处理器770实现上文描述的公开实施例。例如,报文处理器770执行、处理、准备或提供各种报文处理功能。因此,将报文处理器770包括在内为节点700的功能提供了实质性的改进,并且影响了节点700到不同状态的转换。可选地,以存储在存储器760中并由处理器730执行的指令来实现报文处理器770。
[0085]
存储器760包括一个或多个硬盘、一个或多个磁带机以及一个或多个固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。存储器760可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0086]
图8为用于分段路由(segment routing,sr)网络域中的报文转发装置800的一个实施例的示意图。在一个实施例中,报文转发能力800在节点(例如边缘节点161、167,中间节点165、166,或边界节点163)中实现。报文转发装置800包括报文接收模块801。报文接收模块801用于从节点接收报文(有时是封装报文)。报文转发装置800包括与报文接收模块801耦合的报文发送模块807。报文发送模块807用于将所述报文发送到另一节点。
[0087]
报文转发装置800包括报文处理模块805。报文处理模块805与报文接收模块801或报文发送模块807中的至少一个耦合。
[0088]
报文转发装置800包括存储模块803。存储模块803与报文接收模块801或报文发送模块807中的至少一个耦合。存储模块803用于存储指令。报文转发装置800还包括报文处理模块805。报文处理模块805与存储模块803耦合。报文处理模块805用于执行存储在存储模块803中的指令,以执行本文中公开的方法。
[0089]
还当该理解,本文中阐述的示例性方法的步骤不一定需要按所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同理,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或合并。
[0090]
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的
情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的详细内容。例如,各种元件或组件可以在另一系统中组合或集成,或者某些特征可以省略或不实现。
[0091]
另外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间组件间接地耦合或通信。变化、替换、变更的其它示例可由本领域技术人员确定,并可以在不脱离本文中公开的精神和范围的情况下举例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献