最小化用于分段路由的分段标识符中的差异的制作方法

文档序号:32347284发布日期:2022-11-26 11:47阅读:44来源:国知局
最小化用于分段路由的分段标识符中的差异的制作方法
header,srh),其中,所述srh包括具有第一子字段的标志字段、具有第二子字段和第三子字段的标签字段以及分段列表,所述第一子字段包括所述第一数量的值,所述第二子字段包括所述第二数量的值,所述第三子字段包括指向其中一个所述csid的指针,所述分段列表包括所述csid;所述第一节点将所述srh添加到所述报文中;所述第一节点将包括所述srh的所述报文转发给所述sr网络域中的第三节点。
8.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述获取csid包括:根据所述sr网络域的sr策略生成所述sid;对于至少一些所述sid中的每个sid,提取相应sid中的唯一连续数据单位作为csid。
9.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:接收所述csid;所述获取csid包括:标识所述接收到的csid。
10.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh包括:创建所述srh,其中,所述srh包括具有所述第一子字段的所述标志字段、具有所述第二子字段和所述第三子字段的所述标签字段以及所述分段列表。
11.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh还包括:标识至少一些所述sid的所述公共连续数据单位;将所述公共连续数据单位的大小确定为所述第一数量;将所述第一数量插入所述srh中的所述标志字段的所述第一子字段。
12.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh还包括:标识至少一些所述sid中的一个sid中的唯一连续数据单位;将所述唯一连续数据单位的大小确定为所述第二数量;将所述第二数量插入所述srh中的所述标签字段的所述第二子字段。
13.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh还包括:设置所述指针指向所述分段列表中的初始csid;将所述指针插入所述srh在的所述标签字段的所述第三子字段。
14.可选地,根据上述任一方面,在所述方面的另一种实现方式中,至少一些所述sid还包括第三数量的公共连续数据单位,至少一些所述sid中的每个sid包括所述第一数量的公共连续数据单位、所述第二数量的唯一连续数据单位和所述第三数量的公共连续数据单位。
15.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述第一数量的公共连续数据单位对应于位置信息的一部分,所述第二数量的唯一连续数据单位对应于所述位置信息的其余部分,所述第三数量的公共连续数据单位对应于功能或参数中的至少一个。
16.可选地,根据上述任一方面,在所述方面的另一种实现方式中,每个所述csid的大小小于128个比特。
17.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述生成srh还包括:生成一桶所述csid,其中,所述桶包括一组分段,所述一组中的至少一个分段包括多个csid;根据一桶所述csid和除至少一些所述sid以外的sid构建所述分段列表。
18.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述第一节点是所述sr网络域中的入口节点或边界节点。
19.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述sr网络域是支
持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。
20.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述数据单位是字节、半字节和比特中的一个。
21.第二方面涉及一种由分段路由(segment routing,sr)网络域中的第一节点实现的方法。所述方法包括:所述第一节点从所述sr网络域中的第二节点接收包括互联网协议(internet protocol,ip)报头和分段路由报头(segment routing header,srh)的报文,其中,所述报文根据分段标识符(segment identifier,sid)经过所述sr网络域,所述sid包括第一数量的公共连续数据单位,所述ip报头包括所述报文的目的地址(destination address,da),所述srh包括分段列表、标志字段和标签字段,所述分段列表包括与至少一些所述sid对应的压缩sid(compressed sid,csid),每个csid包括对应sid的唯一连续数据单位,所述唯一连续数据单位对应于第二数量的数据单位,所述srh中的所述标志字段包括第一子字段,所述第一子字段包括所述第一数量的值,所述srh的所述标签字段包括第二子字段和第三子字段,所述第二子字段包括所述第二数量的值,所述第三子字段包括指向其中一个所述csid的指针;所述第一节点根据所述srh中的所述第三子字段,使用其中一个所述csid更新所述ip报头中的部分da;所述第一节点根据所述更新后的da将包括所述ip报头和所述srh的所述报文转发给所述sr网络域中的第三节点。
22.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述更新所述部分da包括:使用所述srh中的所述第一子字段和所述第二子字段标识所述待更新的部分da;使用由所述第三子字段的所述指针指示的其中一个所述csid替换所述标识的部分da。
23.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述标识所述部分da包括:根据所述srh中的所述第一子字段的所述第一数量的值,确定所述部分da的起始位置;根据所述srh中的所述第二子字段的所述第二数量的值,确定所述部分da的长度;根据所述起始位置和所述长度,确定所述部分da的位置。
24.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在替换所述部分da之后且在将所述报文转发给所述第三节点之前,使用按顺序指向另一个所述csid的第二指针更新所述第三子字段。
25.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述更新所述第三子字段包括:响应于确定所述指针指向一个分段的最后一个csid,使用按所述顺序指向下一个分段的初始csid的所述第二指针更新所述第三子字段。
26.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述srh还包括用于指示所述分段列表中的第一分段的剩余分段字段,所述方法还包括:响应于确定所述指针指向一个分段的最后一个csid,更新所述剩余分段字段以指向所述第一分段之后的第二分段。
27.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述替换所述部分da包括:响应于确定所述第三子字段中的所述指针指向跨越两个分段的csid,使用所述两个分段的csid部分替换所述部分da。
28.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述第一节点是所述sr网络域中的中间节点。
29.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述sr网络域是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。
30.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述数据单位是字节、半字节和比特中的一个。
31.第三方面涉及一种节点设备。所述节点设备包括:接收器,用于接收报文;发送器,用于发送所述报文;与所述接收器和所述发送器耦合的存储器,其中,所述存储器存储指令;与所述存储器耦合的处理器,其中,所述处理器用于执行所述指令,以使得所述节点设备执行根据任一公开实施例所述的方法。
32.第四方面涉及一种系统。所述系统包括:第一节点设备;与所述第一节点设备进行通信的第二节点设备,其中,所述第一节点设备或所述第二节点设备包括执行根据任一公开实施例所述的方法的所述节点设备。
33.第五方面涉及一种用于分段路由(segment routing,sr)网络域中的报文转发装置。所述装置包括:报文接收模块,用于接收所述报文以处理所述报文;与所述报文接收模块耦合的报文发送模块,其中,所述报文发送模块用于将所述报文转发给另一节点;与所述报文接收模块或所述报文发送模块中的至少一个耦合的存储模块,其中,所述存储模块用于存储指令;与所述存储模块耦合的报文处理模块,其中,所述报文处理模块用于执行存储在所述存储模块中的所述指令,以执行根据任一公开实施例所述的方法。
34.为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本发明范围内的新实施例。
35.根据以下结合附图和权利要求书的具体实施方式,将会更清楚地理解这些和其它特征。
附图说明
36.为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相似的附图标记表示相似的部件。
37.图1示出了根据一个实施例操作的网络。
38.图2示出了分段路由报头(segment routing header,srh)。
39.图3为在分段路由(segment routing,sr)网络域中的入口节点处生成一桶压缩分段标识符(compressed segment identifier,csid)的示意图。
40.图4示出了一桶csid。
41.图5为一种由sr网络域中的节点实现的转发报文的方法的一个实施例。
42.图6为一种由sr网络域中的节点实现的转发报文的方法的另一个实施例。
43.图7为sr网络域中的节点的示意图。
44.图8为用于sr网络域中的报文转发装置的一个实施例的示意图。
具体实施方式
45.首先应该理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可使用任意数量的技术来实现,无论这些技术是当前已知还是现有的。本
发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等同物的完整范围内修改。
46.图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)报文、以太网帧/报文或其它协议报文。
47.在一个实施例中,边缘节点161和167处理从网络151和159接收到的报文,这种处理可以包括将这些报文封装或以其它方式处理成sr(或sr多协议标记交换(multiprotocol label switching,mpls))报文,例如,根据数据面确定的分段路由策略将sr报头(sr header,srh)(有时也称为分段路由扩展头)(可能还将另一ip报头)添加到这些报文中。
48.在一个实施例中,网络160中的边缘节点(161、167)或另一节点确定分段路由策略(例如分段列表(list of segments/segment list),包括表示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中的所有分段。
49.sid(例如srv6 sid)包括位置信息(locator)和功能(可选地包括任何参数)。位置信息指示为了执行功能,报文170要路由到多域网络160中的哪个节点。该功能可以是包括任何可选参数的任何可能功能。在一个实施例中,一组sid包括两个公共部分:一部分是前b个比特的相同公共前缀,另一部分是最后r个比特的公共功能和参数。这些srv6 sid的中间l个比特是不同的,其中,l=128
–b–
r个比特。相应地,这一组sid可以被压缩成csid,每个csid包括唯一位置信息的l个比特。在一个实施例中,srh 182中的分段列表188包括一个或多个csid。
50.srh 182还包括多个字段,例如具有b子字段183的标志字段以及具有l子字段184a和csid指针(csid pointer,cp)子字段184b的标签字段。在一个实施例中,b子字段183用于
指示这一组sid中的公共连续数据单位的长度。l子字段184a是针对csid的大小定义的。cp子字段184b用于指向激活(或下一个)csid的指针。
51.在将srh 182和ip报头181添加到报文175中之后,边缘节点161和167将封装报文转发给中间节点165、166。中间节点165、166接收封装报文175,并根据分段列表188中的csid(通过使用cp子字段184b中的值)更新ip报头181中的目的地址(destination address,da)。相应地,中间节点165、166根据更新后的da将封装报文175(其包括更新后的ip报头181)转发给多域网络160中的下一个节点(例如边界节点163或边缘节点167)。一旦封装报文175穿过多域网络160,边缘节点161和167最终解封装或移除srh182(还可能解封装或移除ip报头181),并将原报文179转发到网络159或151中。
52.本文公开了通过以下方式压缩srh 182的技术:将一组包括公共的b比特位置信息和r比特功能(还可以是参数)的sid压缩为只包括唯一的l比特位置信息(还可能包括一部分功能和参数)的csid。通过这种方式压缩这一组sid,转发封装报文降低了网络带宽利用率,从而提高了报文发送速率。
53.图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。
54.下一报头字段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包括分段列表中的最后一个元素的索引。
55.标志字段235包括8比特标志。在一个实施例中,标志字段235包括b子字段240。b子字段240用于指示一组sid中的公共连续数据单位的长度。长度可以用字节、半字节或比特来测量。在一个实施例中,如果使用字节作为数据单位,则b的大小为4个比特,如果使用半字节作为数据单位,则b的大小为5个比特,如果使用比特作为数据单位,则b的大小为7个比特。
56.标签字段237用于对与srh 200相关联的报文加标签,作为一类或一组报文的一部分。在一个实施例中,标签字段237包括l子字段250和csid指针(csid pointer,cp)子字段260。l子字段250是针对csid的大小定义的。cp子字段260用于指向激活(或下一个)csid的指针。在一个实施例中,如果分段列表239中的csid的大小和位置以字节、半字节或比特为单位,则l子字段250和cp子字段260的大小为4个、5个或7个比特。如果csid的位置以字节表示,则原始16个比特的标签字段237的最后4个比特用作cp子字段260。例如,指针会指向一个分段中的由sl字段220指示的激活或下一个csid的第一个字节。如果csid的位置以半字节表示,则原始16个比特的标签字段237的最后5个比特用作cp子字段260。在这种情况下,cp子字段260中的指针会指向分段中的激活或下一个csid的第一个半字节。另一方面,如果csid的位置以比特表示,则原始16个比特的标签字段237的最后7个比特定义为cp子字段260。cp子字段260中的指针会指向分段中的激活或下一个csid的第一个比特。
57.分段列表239包括一个或多个分段。这些分段的排列顺序反映了对应报文的路径。每个分段能够通过sl字段220的值作为索引进行标识,每个分段的大小为128个比特。一个分段包括一个sid,或一个或多个csid。如图2所示,分段列表239可以包括一桶(或一组)csid(即分段列表[1]至[j]280)以及sid(即分段列表[0]285)。在另一个实施例中,分段列表239可以只包括csid。
[0058]
图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包括具有公共前缀(其是位置信息的一部分)和唯一后缀(称为csid)320的位置信息310。位置信息指示为了执行功能330,报文要路由到哪个节点。功能330可以是包括任何可选参数的任何可能功能。sid 301a至301n的长度通常是固定的。
[0059]
如图3所示,入口节点可以接收包括(n+1)个128比特分段的分段列表300。在一个实施例中,入口节点接收与基于ipv6的分段路由(sr version 6,srv6)策略中的srv6分段标识符(segment identifier,sid)(从srv6 sid-0至sid-n)对应的分段301a至301n。每个分段301a至301n表示128个比特的srv6 sid。sid包括位置信息、功能和参数。这些srv6 sid包括两个公共部分:一部分是前b个比特的相同公共前缀,另一部分是最后r个比特的公共功能和参数。这些srv6 sid的中间l个比特是不同的,其中,l=128
–b–
r个比特。
[0060]
在一个实施例中,入口节点可以将sid(或移除公共部分)至(n+1)个l比特csid341a至341n压缩为一桶csid 350下文参考图4详细描述这一桶csid 350。每个csid341a至341n要小于128个比特。入口节点可以将这一桶csid 350添加到srh中,而不是分段列表300。相应地,入口节点将srh显著减小了(n+1)
×
(b+r)个比特。
[0061]
图4示出了一桶csid(以下简称桶)400。如图4所示,桶400包括一个或多个压缩sid(compressed sid,csid)420。也就是说,桶400包括一个或多个128比特分段内的按顺序排列的csid 420。每个csid 420占用一个分段或两个相邻分段中的l个比特。例如,csid-n存储在分段列表[k]的前l个比特中,csid-(n

1)也存储在同一分段(即分段列表[k])中的csid-n旁边的l个比特中。另一方面,csid-i存储在两个相邻分段中,即分段列表[k]和分段列表[k

1]。csid-i的第一部分(例如f个比特)存储在分段列表[k]的最后f个比特中,csid-i的其余部分(例如(l

f)个比特)存储在分段列表[k

1]的前(l

f)个比特中。
[0062]
在csid的末尾,桶400包括最后一个csid之后的csid结束(end-of-csid,end-c)430,用于指示压缩结束。end-c 430与csid具有相同的长度(例如l个比特)。在一个实施例中,end-c 430的l个比特都为0,这是为end-c 430保留的。在另一个实施例中,end-c430的l个比特都为1。在end-c 430之后,可以添加填充440,以便填补最后一个分段中的任何空白。填充440可以设置为全0或全1。在另一个实施例中,第一个或最后一个sid(其未被压缩)可以包括在桶400之前或之后的分段列表中。
[0063]
图5为一种由分段路由(segment routing,sr)网络域中的节点(例如边缘节点
161、167或边界节点163)实现的转发报文的方法500的一个实施例。通过显著减小要添加到报文中的分段路由报头,方法500改进了上述转发过程。通过实现这样压缩的分段路由报头,报文的传输需要更少的网络带宽,使得传输效率高。
[0064]
在步骤510中,节点从另一网络域中的节点接收报文。该报文根据分段标识符(segment identifier,sid)要经过sr网络域。在一个实施例中,节点是sr网络域中的入口节点。在另一个实施例中,节点是sr网络域中的边界节点。sr网络域是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。sid的值为128个比特。在一个实施例中,sid包括位置信息、功能和参数。当用于显式流量工程路径的分段路由策略用于在网络域中的边缘节点(例如入口节点)处控制报文时,生成sid并将其添加到报文中,以指示网络域中的节点通过路径导航报文。在一个实施例中,至少一些sid包括多个(例如b个比特)公共连续数据单位(例如字节、半字节或比特)。如图3所示,一组sid可以在位置信息中包括b个比特的公共前缀。也就是说,这一组sid在位置信息中包括l个比特的唯一后缀(即位置信息的其余部分)。此外,这一组sid还可以包括r个比特的公共功能和参数。相应地,这一组中的sid按顺序包括b个比特的公共前缀、l个比特的唯一后缀和r个比特的公共功能和参数。在一个实施例中,这一组sid可以包括公共功能或参数中的至少一个。
[0065]
在步骤530中,节点获取与一组sid(在位置信息中包括b个比特的公共前缀)对应的压缩sid(compressed sid,csid)。csid包括对应sid的唯一连续数据单位(例如比特)。例如,csid是位置信息中的值为l个比特的唯一后缀,如图3所示。
[0066]
在一个实施例中,为了确定csid,节点根据sr网络域的sr策略为报文生成sid。节点可以标识在位置信息中包括b个比特的公共前缀的一组sid。在一个实施例中,节点可以根据绑定sid标识一组sid。一旦确定了这一组sid,节点就会提取相应sid中的唯一后缀作为这一组中的每个sid对应的csid。在一个实施例中,sid的大小或长度为128个比特。在这种情况下,对应csid的大小小于128个比特(例如,128个比特减去b个比特的公共前缀r个比特的公共功能和参数)。
[0067]
在另一个实施例中,在步骤510中,节点可以从相同或不同网络域中的另一节点接收csid。因此,为了在步骤530中确定csid,节点标识接收到的csid。
[0068]
在步骤550中,节点生成分段路由报头(segment routing header,srh)200。如图2所示,srh 200包括几个字段。在一个实施例中,节点创建srh 200,其中,srh 200包括具有第一子字段(由图2中的b子字段240指示)的标志字段235、具有第二子字段(由图2中的l子字段250指示)和第三子字段(由图2中的cp子字段260指示)的标签字段237以及分段列表(由图2中的分段列表[0]至[j]指示)。在一个实施例中,标志字段235和标签字段237不包括任何其它子字段。
[0069]
一旦创建了srh 200,节点将一个值插入srh 200中的标志字段235的b子字段240。在一个实施例中,节点标识一组sid中的公共连续数据单位。在一种实现方式中,节点确定sid的位置信息中的公共前缀。节点还将公共前缀的大小确定为b个比特。相应地,节点将b个比特插入标志字段235的b子字段240。例如,当一组sid在位置信息中包括14个比特的公共前缀时,节点将数值14填入或插入b子字段240。因此,标志字段235中的b子字段240包括一组sid的位置信息中的公共前缀的数据单位(例如比特)的数量的值。
[0070]
在另一个实施例中,在创建srh 200之后,节点将一个值插入srh 200中的标签字段237的l子字段250。在一种实现方式中,节点标识一组sid中的一个sid中的唯一连续数据单位。也就是说,节点确定一组sid的位置信息中的唯一后缀。然后,节点将唯一后缀的大小确定为l个比特。相应地,节点将l个比特插入标签字段237的l子字段250。例如,当一组中的每个sid在位置信息的末尾包括唯一的9个比特时,节点将数值9插入l子字段。因此,标签字段中的l子字段包括一组sid的位置信息中的唯一后缀的数据单位(例如比特)的数量的值。
[0071]
然而,在另一个实施例中,一旦创建了srh,节点确定指向分段列表中的初始csid(即顺序中的第一个csid)的指针。该指针可以是指示csid的第一数据单位(例如第一比特)的位置的数值(例如0)。随后,节点将指针插入cp子字段260。例如,节点可以将
‘0’
作为指向初始csid的指针插入srh 200中的标签字段237的cp子字段260。因此,标签字段237中的cp子字段260包括指向其中一个csid的指针。
[0072]
在创建srh之后,节点生成分段列表239。分段列表239中的分段的排列顺序反映了报文的路径。分段列表239包括分段,每个分段包括部分或整个sid。在一个实施例中,节点生成一桶csid 400。一桶csid 400包括按顺序排列的一组分段。在一种实现方式中,节点使用csid填充一组分段。相应地,这一组中的大多数(但不是所有)分段都使用多个csid填充。在一个实施例中,最后一个分段可以只包括一个csid,如图4所示。此外,节点在顺序中的最后csid之后插入压缩结束(end of compression,end-c)430。end-c 430指示没有更多csid。end-c 430与csid具有相同的长度(即一组sid的位置信息中的唯一后缀的长度)。根据预定义设置,end-c 430可以是全0或全1。在一个实施例中,节点可以在end-c 430之后添加全0或全1的填充440,以便填补存储csid的桶400中的任何空白。
[0073]
一旦生成了桶400,节点可以根据桶400构建分段列表239。在一个实施例中,节点只使用一桶csid 400构建分段列表239。也就是说,节点只能在分段列表中包括csid。在另一个实施例中,节点使用一桶csid 400和sid构建分段列表。节点可以标识不对应于csid的任何sid(即与csid不关联的其余sid)。节点可以将sid放在一桶csid的前面或后面。
[0074]
在步骤570中,节点将srh 182添加或压入(push)到报文中。在一个实施例中,节点还生成互联网协议(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网络域162、164中的节点的地址,报文随后经过sr网络域162、164。节点地址由sid表示。相应地,da也包括位置信息、功能和参数。节点根据分段列表确定顺序中的下一个节点的地址。下一个节点的地址对应于分段列表中的下一个sid。下一个sid可以由csid表示。在这种情况下,节点可以根据csid构建sid。也就是说,节点可以在csid前添加位置信息中的公共前缀,并将公共功能和参数添加到csid中。然后,节点将下一个节点的构建地址或sid复制到da。在步骤590中,节点将包括srh 182的报文175转发给sr网络域162、164中的下一个节点。在一个实施例中,报文是根据ip报头181中的与报文175一起发送的da转发的。
[0075]
图6为一种由分段路由(segment routing,sr)网络域中的节点(例如中间节点165、166)实现的转发报文的方法600的另一个实施例。通过只需要更新报文的部分目的地址,而不是更新整个目的地址,方法600改进了上述转发过程。相应地,节点处理大量报文,
但需要较少的处理时间和资源。
[0076]
在步骤610中,节点从相同的sr网络域162、164中的节点接收包括互联网协议(internet protocol,ip)报头181和分段路由报头(segment routing header,srh)182的报文175。节点是sr网络域162、164中的中间节点165、166。另一方面,发送节点可以是入口节点(例如边缘节点161、167)、中间节点165或边界节点163。sr网络域162、164是支持基于第六版互联网协议的sr(sr over internet protocol version 6,srv6)数据面的网络域。
[0077]
报文175用于根据分段标识符(segment identifier,sid)经过sr网络域162、164。sid包括第一数量的公共连续数据单位。数据单位可以是字节、半字节或比特。如上文结合图5所述,当用于显式流量工程路径的分段路由策略用于在网络域中的边缘节点161、167(例如入口节点)处控制报文时,生成sid并将其添加到报文175中,以指示网络域中的节点通过路径导航报文。在一个实施例中,sid的值为128个比特,sid包括位置信息、功能和参数。在一个实施例中,至少一些sid包括多个(例如b个比特)公共连续数据单位(例如字节、半字节或比特)。例如,如图3所示,一组sid可以在位置信息中包括b个比特的公共前缀和l个比特的唯一后缀(即位置信息的其余部分)。此外,这一组sid还可以包括r个比特的公共功能和参数。相应地,这一组中的sid按顺序包括b个比特的公共前缀、l个比特的唯一后缀和r个比特的公共功能和参数。
[0078]
与报文175一起接收的ip报头181包括目的地址(destination address,da),其指示sr网络域中的节点的地址。节点地址由sid表示。在一个实施例中,ip报头是第六版ip(ip version 6,ipv6)报头。在另一个实施例中,ip报头是第四版ip(ip version 4,ipv4)报头。
[0079]
也与报文一起接收的srh 182包括分段列表239、标志字段235和标签字段237。分段列表239中的分段的排列顺序反映了报文的路径。分段列表包括分段,每个分段包括部分或整个sid。在一个实施例中,分段列表239包括与至少一些sid对应的一桶压缩sid(compressed sid,csid)400。一桶csid 400包括一组按顺序填充有csid的分段。桶400中的每个csid包括对应sid的唯一连续数据单位。在一个实施例中,csid是位置信息中的值为l个比特的唯一后缀,如图3所示。在一个实施例中,桶中的最后一个分段可以仅仅包括一个csid,如图4所示。另一方面,桶中的所有其它分段都包括多个csid。此外,一桶csid400包括顺序中的最后csid之后的压缩结束(end of compression,end-c)430。end-c430指示没有更多csid。end-c 430与csid具有相同的长度(即一组sid的位置信息中的唯一后缀的长度)。根据预定义设置,end-c 430可以是全0或全1。在一个实施例中,节点可以在end-c 430之后添加全0或全1的填充440,以便填补存储csid的桶400中的任何空白。除一桶csid 400之外,分段列表还可以包括一个或多个sid。sid可以放置在一桶csid的前面或后面。
[0080]
除分段列表之外,srh 200还包括标志字段235。srh 200中的标志字段235包括第一子字段(由图2中的b子字段240指示),标签字段237包括第二子字段(由图2中的l子字段250指示)和第三子字段(由图2中的cp子字段260指示)。标志字段235的b子字段240用于指示一组sid中的公共连续数据单位的数量。例如,当b子字段240包括数值14时,这表示一组sid在位置信息中包括14个比特的公共前缀。标签字段237的l子字段250用于指示一组sid中的唯一连续数据单位的数量以及csid的大小。例如,当l子字段250包括数值9时,该数值指示这一组中的每个sid在位置信息的末尾包括唯一的9个比特,因此,csid的大小为9个比特。标签字段237的cp子字段260用于指示指向其中一个csid的指针。指针可以是数值的形
式,指示csid的第一数据单位(例如第一比特)在一个分段中的位置。例如,如果cp子字段260的值为0,则指示激活csid是一个分段中的第一个csid。激活csid是指要由目的节点处理(例如复制到ip报头181中的da)的csid。在一个实施例中,srh 200还包括剩余分段(segment left,sl)字段220,用于指示分段列表中的激活分段。激活分段是指包括激活csid的分段。
[0081]
在步骤630中,节点根据srh 200中的第三子字段(例如cp子字段260),使用其中一个csid更新ip报头181中的部分da。为了更新部分da,节点使用srh 200中的b子字段240和l子字段250标识待更新的部分da。在一个实施例中,节点根据srh中的b子字段的值确定部分da的起始位置以及根据srh中的l子字段的值确定部分da的长度。然后,节点进一步根据起始位置和长度确定部分da的位置。例如,假设da的长度为128个比特,节点可以在b子字段中标识20个比特的值且在l子字段中标识10个比特的值。相应地,节点可以确定应该更新第21个比特至第30个比特的部分da。
[0082]
在标识待更新的部分da之后,节点使用由cp子字段260中的指针指示的其中一个csid替换标识的部分da。通过如上举例,节点可以使用由cp子字段260指示的csid替换da中的第21个比特到第30个比特。在一些实施例中,节点还可以参考sl字段220,以从分段列表中标识csid进行替换。
[0083]
在使用csid替换部分da时,节点可以确定第三子字段(例如cp子字段260)中的指针是否指向跨越两个分段的csid。响应于确定第三子字段中的指针指向跨越两个分段的csid(即一个csid的第一部分存储在一个分段中,而csid的其余部分存储在下一个分段中),节点使用两个分段中的两个csid部分替换部分da。如果节点确定由第三子字段指示的csid不跨越两个分段,则节点继续复制csid,如上所述。
[0084]
在另一个实施例中,节点还可以确定cp子字段260中的指针是否指向一个分段的最后一个csid。响应于确定指针指向相应分段的最后一个csid(其可能不一定是分段列表中的最后一个csid),节点使用按顺序指向下一个分段的初始csid的另一指针更新cp子字段260,并且更新剩余分段字段220以指向分段列表中的下一个分段。
[0085]
然而,在另一个实施例中,节点可以确定cp子字段中的指针是否指向end-c。也就是说,节点可以确定是否已到一桶csid的末尾。节点可以访问指针指示的相应分段的一部分,并相应地确定这部分是全0还是全1(取决于end-c的预定义方式)。另外,或者在替代方案中,节点可以确定更新后的部分da是全0还是全1。如果节点确定已经到达一桶csid的末尾,则节点使用下一个分段(即一桶csid之后的分段)中的sid更新整个da。节点可以进一步递减sl字段的值,以便下一个节点访问下一个分段(sid复制到da的分段之后的一个分段)。在一个实施例中,节点可以将b子字段240、l子字段250和cp子字段260的值重置为默认值(例如0)。
[0086]
在步骤650中,在更新部分da之后,节点根据更新后的da将包括ip报头181和srh 182的报文175转发给sr网络域中的另一节点。相应地,报文175被转发给在ip报头181的更新后的da中指示的下一个节点。在一个实施例中,在替换部分da之后但在转发报文之前,节点使用指向csid中的不同csid(例如顺序中的下一个csid)的另一指针更新cp子字段260。
[0087]
图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)组件,用于光信号或电信号的出口或入口。
[0088]
处理器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。
[0089]
存储器760包括一个或多个硬盘、一个或多个磁带机以及一个或多个固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。存储器760可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0090]
图8为用于分段路由(segment routing,sr)网络域中的报文转发装置800的一个实施例的示意图。在一个实施例中,报文转发装置800在节点(例如边缘节点161、167,中间节点165、166,或边界节点163)中实现。报文转发装置800包括报文接收模块801。报文接收模块801用于从节点接收报文(有时是封装报文)。报文转发装置800包括与报文接收模块801耦合的报文发送模块807。报文发送模块807用于将所述报文发送到另一节点。
[0091]
报文转发装置800包括报文处理模块805。报文处理模块805与报文接收模块801或报文发送模块807中的至少一个耦合。
[0092]
报文转发装置800包括存储模块803。存储模块803与报文接收模块801或报文发送模块807中的至少一个耦合。存储模块803用于存储指令。报文转发装置800还包括报文处理模块805。报文处理模块805与存储模块803耦合。报文处理模块805用于执行存储在存储模块803中的指令,以执行本文中公开的方法。
[0093]
还当该理解,本文中阐述的示例性方法的步骤不一定需要按所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同理,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或合并。
[0094]
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的详细内容。例如,各种元件或组件可以在另一系统中组合或集成,或者某些特征可以省略或不实现。
[0095]
另外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间组件间接地耦合或通信。变化、替换、变更的其它示例可由本领域技术人员确定,并可以在不脱离本文中公开的精神和范围的情况下举例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1