源路由压缩的制作方法

文档序号:33049854发布日期:2023-01-24 23:08阅读:35来源:国知局
源路由压缩的制作方法

1.各种示例实施例总体上涉及通信,并且更具体地但不排他地涉及基于源路由的支持通信。


背景技术:

2.在通信网络中,可以使用各种通信技术来支持各种类型的通信。


技术实现要素:

3.在至少一些示例实施例中,一种装置包括至少一个处理器和至少一个存储器,该至少一个存储器包括计算机程序代码,其中至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使该装置至少:支持通过网络在从入口节点到出口节点的路径上的源路由分组的通信,其中网络包括具有共享公共前缀的相应网络元件标识符集合的网络元件集合,其中源路由分组在其中已编码了包括公共前缀和偏移列表的源路由块,其中偏移列表包括偏移值集合,偏移值集合与路径的网络元件中的相应网络元件相关联并且被配置为与公共前缀组合以恢复路径的网络元件中的相应网络元件的网络元件标识符。在至少一些示例实施例中,网络元件集合包括网络的网络元件的每个网络元件。在至少一些示例实施例中,网络元件集合形成网络的子域。在至少一些示例实施例中,网络元件集合包括节点集合或链路集合中的至少一项。在至少一些示例实施例中,共享公共前缀的网络元件标识符从一个或多个网络元件标识符块被指派。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小。在至少一些示例实施例中,公共前缀包括互联网协议(ip)前缀、多协议标签交换(mpls)标签值或者以太网媒体接入控制(mac)地址前缀。在至少一些示例实施例中,为了支持源路由分组的通信,至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使装置至少:在入口节点处确定路径的网络元件中的网络元件;在入口节点处基于公共前缀和路径的网络元件中的网络元件的网络元件标识符,确定与路径的网络元件中的网络元件相关联的偏移值集合;在入口节点处基于公共前缀和与路径的网络元件中的网络元件相关联的偏移值集合,生成源路由块;以及在入口节点处将源路由块与报头相关联,以形成源路由分组。在至少一些示例实施例中,为了支持源路由分组的通信,至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使装置至少:由路径的节点接收源路由分组;由该节点基于公共前缀和节点本地的偏移值中的一个偏移值来确定用于源路由分组的下一跳的标识符;以及由该节点朝向用于源路由分组的下一跳发送源路由分组。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小,其中节点本地的偏移值中的一个偏移值基于偏移大小值被确定。在至少一些示例实施例中,用于源路由分组的下一跳的标识符通过将节点本地的偏移值中的一个偏移值添加到公共前缀被确定。在至少一些示例实施例中,路径的节点包括路径的中转节点或路径的出口节点。在至少一些示例实施例中,源路由块使用互联网协议版本4(ipv4)选项报头被编码。在至少一些示例实施例中,源路由
块使用被设置在ipv4报头和传输层协议报头之间的互联网协议版本4(ipv4)垫层(shim)报头被编码。在至少一些示例实施例中,源路由块使用互联网协议版本6(ipv6)扩展报头(eh)被编码。在至少一些示例实施例中,源路由块使用被设置在ipv6报头或传输层协议报头之间的互联网协议版本6(ipv6)垫层报头被编码。在至少一些示例实施例中,源路由块使用多协议标签交换(mpls)标签栈被编码。在至少一些示例实施例中,源路由块与网络的第一子域相关联,其中源路由分组包括第二源路由块,第二源路由块与包括路径的第二网络元件集合的网络的第二子域相关联,其中第二源路由块包括用于网络的第二子域的第二公共前缀和第二偏移列表,第二偏移列表包括第二偏移值集合,第二偏移值集合与第二子域中的路径的网络元件中的网络元件相关联并且被配置为与第二公共前缀相组合以恢复第二子域中的路径的网络元件中的网络元件的网络元件标识符。
4.在至少一些示例实施例中,一种计算机可读介质存储计算机程序代码,该计算机程序代码被配置为使装置至少:支持通过网络在从入口节点到出口节点的路径上的源路由分组的通信,其中网络包括具有共享公共前缀的相应网络元件标识符集合的网络元件集合,其中源路由分组在其中已编码了包括公共前缀和偏移列表的源路由块,其中偏移列表包括偏移值集合,偏移值集合与路径的网络元件中的相应网络元件相关联并且被配置为与公共前缀组合以恢复路径的网络元件中的相应网络元件的网络元件标识符。在至少一些示例实施例中,网络元件集合包括网络的网络元件的每个网络元件。在至少一些示例实施例中,网络元件集合形成网络的子域。在至少一些示例实施例中,网络元件集合包括节点集合或链路集合中的至少一项。在至少一些示例实施例中,共享公共前缀的网络元件标识符从一个或多个网络元件标识符块被指派。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小。在至少一些示例实施例中,公共前缀包括互联网协议(ip)前缀、多协议标签交换(mpls)标签值或者以太网媒体接入控制(mac)地址前缀。在至少一些示例实施例中,为了支持源路由分组的通信,计算机程序代码被配置为使装置至少:在入口节点处确定路径的网络元件中的网络元件;在入口节点处基于公共前缀和路径的网络元件中的网络元件的网络元件标识符,确定与路径的网络元件中的网络元件相关联的偏移值集合;在入口节点处基于公共前缀和与路径的网络元件中的网络元件相关联的偏移值集合,生成源路由块;以及在入口节点处将源路由块与报头相关联,以形成源路由分组。在至少一些示例实施例中,为了支持源路由分组的通信,计算机程序代码被配置为使装置至少:由路径的节点接收源路由分组;由该节点基于公共前缀和节点本地的偏移值中的一个偏移值来确定用于源路由分组的下一跳的标识符;以及由该节点朝向用于源路由分组的下一跳发送源路由分组。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小,其中节点本地的偏移值中的一个偏移值基于偏移大小值被确定。在至少一些示例实施例中,用于源路由分组的下一跳的标识符通过将节点本地的偏移值中的一个偏移值添加到公共前缀被确定。在至少一些示例实施例中,路径的节点包括路径的中转节点或路径的出口节点。在至少一些示例实施例中,源路由块使用互联网协议版本4(ipv4)选项报头被编码。在至少一些示例实施例中,源路由块使用被设置在ipv4报头和传输层协议报头之间的互联网协议版本4(ipv4)垫层报头被编码。在至少一些示例实施例中,源路由块使用互联网协议版本6(ipv6)扩展报头(eh)被编码。在至少一些示例实施例中,源路由块使用被设置在ipv6报头或传输层协议报头之
间的互联网协议版本6(ipv6)垫层报头被编码。在至少一些示例实施例中,源路由块使用多协议标签交换(mpls)标签栈被编码。在至少一些示例实施例中,源路由块与网络的第一子域相关联,其中源路由分组包括第二源路由块,第二源路由块与包括路径的第二网络元件集合的网络的第二子域相关联,其中第二源路由块包括用于网络的第二子域的第二公共前缀和第二偏移列表,第二偏移列表包括第二偏移值集合,第二偏移值集合与第二子域中的路径的网络元件中的网络元件相关联并且被配置为与第二公共前缀相组合以恢复第二子域中的路径的网络元件中的网络元件的网络元件标识符。
5.在至少一些示例实施例中,一种方法,包括:支持通过网络在从入口节点到出口节点的路径上的源路由分组的通信,其中网络包括具有共享公共前缀的相应网络元件标识符集合的网络元件集合,其中源路由分组在其中已编码了包括公共前缀和偏移列表的源路由块,其中偏移列表包括偏移值集合,偏移值集合与路径的网络元件中的相应网络元件相关联并且被配置为与公共前缀组合以恢复路径的网络元件中的相应网络元件的网络元件标识符。在至少一些示例实施例中,网络元件集合包括网络的网络元件的每个网络元件。在至少一些示例实施例中,网络元件集合形成网络的子域。在至少一些示例实施例中,网络元件集合包括节点集合或链路集合中的至少一项。在至少一些示例实施例中,共享公共前缀的网络元件标识符从一个或多个网络元件标识符块被指派。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小。在至少一些示例实施例中,公共前缀包括互联网协议(ip)前缀、多协议标签交换(mpls)标签值或者以太网媒体接入控制(mac)地址前缀。在至少一些示例实施例中,支持源路由分组的通信包括:在入口节点处确定路径的网络元件中的网络元件;在入口节点处基于公共前缀和路径的网络元件中的网络元件的网络元件标识符,确定与路径的网络元件中的网络元件相关联的偏移值集合;在入口节点处基于公共前缀和与路径的网络元件中的网络元件相关联的偏移值集合,生成源路由块;以及在入口节点处将源路由块与报头相关联,以形成源路由分组。在至少一些示例实施例中,支持源路由分组的通信包括:由路径的节点接收源路由分组;由该节点基于公共前缀和节点本地的偏移值中的一个偏移值来确定用于源路由分组的下一跳的标识符;以及由该节点朝向用于源路由分组的下一跳发送源路由分组。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小,其中节点本地的偏移值中的一个偏移值基于偏移大小值被确定。在至少一些示例实施例中,用于源路由分组的下一跳的标识符通过将节点本地的偏移值中的一个偏移值添加到公共前缀被确定。在至少一些示例实施例中,路径的节点包括路径的中转节点或路径的出口节点。在至少一些示例实施例中,源路由块使用互联网协议版本4(ipv4)选项报头被编码。在至少一些示例实施例中,源路由块使用被设置在ipv4报头和传输层协议报头之间的互联网协议版本4(ipv4)垫层报头被编码。在至少一些示例实施例中,源路由块使用互联网协议版本6(ipv6)扩展报头(eh)被编码。在至少一些示例实施例中,源路由块使用被设置在ipv6报头或传输层协议报头之间的互联网协议版本6(ipv6)垫层报头被编码。在至少一些示例实施例中,源路由块使用多协议标签交换(mpls)标签栈被编码。在至少一些示例实施例中,源路由块与网络的第一子域相关联,其中源路由分组包括第二源路由块,第二源路由块与包括路径的第二网络元件集合的网络的第二子域相关联,其中第二源路由块包括用于网络的第二子域的第二公共前缀和第二偏移列表,第二偏移列表包括第二偏移值集
合,第二偏移值集合与第二子域中的路径的网络元件中的网络元件相关联并且被配置为与第二公共前缀相组合以恢复第二子域中的路径的网络元件中的网络元件的网络元件标识符。
6.在至少一些示例实施例中,一种装置,包括用于以下的部件:支持通过网络在从入口节点到出口节点的路径上的源路由分组的通信,其中网络包括具有共享公共前缀的相应网络元件标识符集合的网络元件集合,其中源路由分组在其中已编码了包括公共前缀和偏移列表的源路由块,其中偏移列表包括偏移值集合,偏移值集合与路径的网络元件中的相应网络元件相关联并且被配置为与公共前缀组合以恢复路径的网络元件中的相应网络元件的网络元件标识符。在至少一些示例实施例中,网络元件集合包括网络的网络元件的每个网络元件。在至少一些示例实施例中,网络元件集合形成网络的子域。在至少一些示例实施例中,网络元件集合包括节点集合或链路集合中的至少一项。在至少一些示例实施例中,共享公共前缀的网络元件标识符从一个或多个网络元件标识符块被指派。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小。在至少一些示例实施例中,公共前缀包括互联网协议(ip)前缀、多协议标签交换(mpls)标签值或者以太网媒体接入控制(mac)地址前缀。在至少一些示例实施例中,用于支持源路由分组的通信的部件包括:用于在入口节点处确定路径的网络元件中的网络元件的部件;用于在入口节点处基于公共前缀和路径的网络元件中的网络元件的网络元件标识符确定与路径的网络元件中的网络元件相关联的偏移值集合的部件;用于在入口节点处基于公共前缀和与路径的网络元件中的网络元件相关联的偏移值集合生成源路由块的部件;以及用于在入口节点处将源路由块与报头相关联以形成源路由分组的部件。在至少一些示例实施例中,用于支持源路由分组的通信的部件包括:用于由路径的节点接收源路由分组的部件;用于由该节点基于公共前缀和节点本地的偏移值中的一个偏移值来确定用于源路由分组的下一跳的标识符的部件;以及用于由该节点朝向用于源路由分组的下一跳发送源路由分组的部件。在至少一些示例实施例中,源路由块包括偏移大小值,该偏移大小值指示偏移值集合中的每个偏移值的大小,其中节点本地的偏移值中的一个偏移值基于偏移大小值被确定。在至少一些示例实施例中,用于源路由分组的下一跳的标识符通过将节点本地的偏移值中的一个偏移值添加到公共前缀被确定。在至少一些示例实施例中,路径的节点包括路径的中转节点或路径的出口节点。在至少一些示例实施例中,源路由块使用互联网协议版本4(ipv4)选项报头被编码。在至少一些示例实施例中,源路由块使用被设置在ipv4报头和传输层协议报头之间的互联网协议版本4(ipv4)垫层报头被编码。在至少一些示例实施例中,源路由块使用互联网协议版本6(ipv6)扩展报头(eh)被编码。在至少一些示例实施例中,源路由块使用被设置在ipv6报头或传输层协议报头之间的互联网协议版本6(ipv6)垫层报头被编码。在至少一些示例实施例中,源路由块使用多协议标签交换(mpls)标签栈被编码。在至少一些示例实施例中,源路由块与网络的第一子域相关联,其中源路由分组包括第二源路由块,第二源路由块与包括路径的第二网络元件集合的网络的第二子域相关联,其中第二源路由块包括用于网络的第二子域的第二公共前缀和第二偏移列表,第二偏移列表包括第二偏移值集合,第二偏移值集合与第二子域中的路径的网络元件中的网络元件相关联并且被配置为与第二公共前缀相组合以恢复第二子域中的路径的网络元件中的网络元件的网络元件标识符。
附图说明
7.通过结合附图考虑以下详细描述,可以容易地理解本文的教导,在附图中:
8.图1描绘了被配置为支持基于源路由压缩的源路由的通信系统的示例实施例;
9.图2描绘了被配置为支持基于源路由压缩的源路由的通信系统的示例实施例;
10.图3描绘了被配置为支持源路由压缩的压缩源路由块的示例实施例;
11.图4描绘了被配置为支持源路由压缩的压缩源路由的示例实施例;
12.图5描绘了用于由源路由的入口节点构建压缩源路由的方法的示例实施例;
13.图6描绘了用于由源路由的中转节点或出口节点基于压缩源路由生成跳标识符的方法的示例实施例;
14.图7描绘了被配置为用于提供用于源路由压缩的压缩源路由的ipv4报头的示例实施例;
15.图8描绘了用于在图7的ipv4报头中使用的压缩源路由选项以提供用于源路由压缩的压缩源路由的示例实施例;
16.图9描绘了用于在图8的压缩源路由选项中使用以提供用于源路由压缩的压缩源路由的压缩源路由块的示例实施例;
17.图10描绘了用于图示ip垫层层的使用以提供用于源路由压缩的压缩源路由的协议栈的示例实施例;
18.图11描绘了用于提供用于源路由压缩的压缩源路由的ip垫层报头的示例实施例;
19.图12描绘了用作ip垫层报头中的有效负载以提供用于源路由压缩的压缩源路由的ipv4压缩源路由的示例实施例;
20.图13描绘了被配置用于提供用于源路由压缩的压缩源路由的ipv6报头的示例实施例;
21.图14描绘了用于在图13的ipv6报头中使用以提供用于源路由压缩的压缩源路由的逐跳选项报头的示例实施例;
22.图15描绘了用于在图14的逐跳选项报头中使用以提供用于源路由压缩的压缩源路由的类型-长度-值(tlv)编码选项的示例实施例;
23.图16描绘了基于图15的tlv编码选项用于在图14的逐跳选项报头中使用以提供用于源路由压缩的压缩源路由的压缩源路由选项的示例实施例;
24.图17描绘了压缩源路由块的示例实施例,该压缩源路由块被配置为用于在图16的压缩源路由选项中使用以提供用于源路由压缩的压缩源路由;
25.图18描绘了用于在基于多协议标签交换(mpls)的网络中使用以提供用于源路由压缩的压缩源路由的压缩源路由块的示例实施例;
26.图19描绘了压缩源路由块描述符的示例实施例,该压缩源路由块描述符被配置为用于在图18的压缩源路由块中使用以提供用于在基于mpls的网络中的源路由压缩的压缩源路由;
27.图20描绘了偏移标签栈的示例实施例,偏移标签栈被配置为用于图18的压缩源路由块中使用以提供用于在基于mpls的网络中的源路由压缩的压缩源路由;
28.图21描绘了压缩源路由(csr)编码的mpls分组的示例实施例,该压缩源路由(csr)编码的mpls分组被配置为在基于mpls的网络中提供用于源路由压缩的压缩源路由;
到分组中,并且中转节点基于该路径转发分组。源路由最小化了中转节点转发分组所需的状态,因为每个节点只维护到其下一跳中的一个的转发信息,而不需要维护到每个可能的分组目的地的转发信息。在图1的上下文中描述的源路由的通用方法的示例如下。
38.对于源路由的通用方法,在图1中,假设r1(头端节点)决定沿路径r1-r2-r4-r7-r8发送分组。假设r1、r2、r3
……
、r8是指派为节点标识符的环回地址。因此,r1将具有节点标识符为{r2,r4,r7,r8}的显式路径编码到分组中并发送到r2。当r2接收分组时,它查找显式路径中的第一跳,即r2。由于第一跳r2标识自己,它弹出第一跳。然后它查找新的第一跳,即r4,并利用分组中的显式路径为{r4,r7,r8}将分组转发到r4。r4弹出显式路径中的第一跳,即r4,因为它标识了自己。然后r4查找新的第一跳,即r7,并利用显式路径{r7,r8}将分组转发到r7。当r7接收分组时,它弹出第一跳,即r7,因为它标识了自己。然后它查找新的第一跳,即r8,并利用显式路径{r8}将分组转发到r8。当r8接收分组时,它弹出第一跳,即r8,因为它标识了自己。如以下进一步讨论的,可以使用松散源路由和/或严格源路由来执行源路由。
39.在松散源路由中,头端节点可以对要被遍历的节点进行编码,并且沿路径的中间节点可以在多条路径中进行挑选,以到达该节点集合中的任何节点。例如,在上述源路由的通用方法示例中,r2可能发现到r4的“最佳”路径是经由r2-r3-r4而不是r2-r4。在这种情况下,r2将向r3发送显式路径{r3,r4,r7,r8}。当r3接收分组并找到路径中的第一跳为r3时,它将弹出r3,因为它标识了自己。然后,r3查找新的下一跳,即r4,并将具有路径{r4,r7,r8}的分组发送到r4。因此,当显式路径包含一个或多个节点标识符时,该路径称为松散源路由,因为中间节点可以在多条路径中挑选一条到达该节点,这是该节点中的环回地址。
40.在严格的源路由中,头端节点可以对要被遍历的跳的集合进行编码,并且沿路径的中间节点可以基于指定的跳来转发。例如,在上述源路由的通用方法示例中,r1编码下一跳标识符集合,诸如{r2-》r4,r4-》r7,r7-》r8}来指定要由分组采用的路径。当r2接收分组时,它在显式路径中查找第一跳,即r2-》r4。由于r2-》r4标识直接连接的链路,因此r2从显式路径弹出第一跳。它在r2-》r4链路上转发分组。同样,当r4接收分组时,它将分组转发给r7。当r7接收分组时,将分组转发给r8。这样,由分组遍历的确切路径由源节点r1指定。
41.如上所述,将理解,源节点还可以指定松散跳和严格跳的混合。例如,在上述源路由的通用方法的示例中,r1还可以指定严格和松散跳的混合,诸如{r2-》r4,r8}。将理解,当分组属于需要满足严格的服务质量(qos)或服务水平协议(sla)的服务或应用并且因此必须遵循严格的路径时,严格的源路由是优选的。因此,严格的源路由是用于利用业务工程(te)的源路由的默认选择。下面是利用业务工程(sr-te)的源路由的描述。
42.在sr-te中,各种te参数被指派到网络元件(例如,节点和链路)中。网络元件的te参数描述了网络元件的成本、延迟、吞吐量、可用带宽、丢包特性等。所有网络元件的拓扑和te参数都被学习并维护在由控制器(例如路径计算单元(pce)、软件定义网络(sdn)控制器等)托管的集中式te数据库(tedb)中。控制器可以通过侦听来自在路由器中运行的内部网关协议(igp)(例如,中间系统到中间系统(isis)、开放最短路径优先(ospf)等)的链路状态通告(lsa)来学习拓扑和te信息。控制器还可以从路由器收集此类信息,例如使用诸如rfc 7752中的边界网关协议-链路状态(bgp-ls),使用推/拉机制等,以及它们的各种组合。
43.在sr-te中,头端节点基于应用或服务将分组分类为流。每个流都与特定的qos要
求或sla相关联。头端节点向控制器(例如pce、sdn控制器等)发送请求,以计算满足指定qos/sla的最优/显式路径。控制器通常通过在te db上运行约束最短路径优先(cspf)技术来计算这样的路径。一旦分配了路径,控制器将沿着该路径的网络元件的动态te状态(例如剩余带宽)更新到tedb中。头端节点通过满足流的qos/sla的显式路径发送属于该流的所有分组。显式路径被编码到分组中。因此,流向相同目的地的不同流的分组有可能遵循不同的路径。每个流的状态仅在头端节点维护,并且中转节点完全不知道流、流的qos/sla需求等。这引起在中转节点处的成本和复杂性的显着降低。
44.近年来,通常用于互联网协议版本4(ipv4)的源路由已通过将源路由能力扩展到多协议标签交换(mpls)和ip版本6(ipv6)来改进为分段路由(sr)。在sr中,路由器的环回地址称为“前缀段”,并且两个路由器之间的下一跳邻接/链路称为“邻接段”。在sr中,每个段被指派一个段标识符(sid),该段标识符被编码为显式路径以标识段。使用mpls数据平面的sr在rfc 8660中描述,并且使用ipv6数据平面的sr在rfc 8754中描述。由于sr使用基本ipv4规范rfc791中描述的ipv4源路由,因此没有用于使用ipv4数据平面的sr的明确规范。注意,由于sr包括sr-te方面,所以本文中使用的术语“sr”,除非另有说明,也包括sr-te。
45.在使用mpls数据平面的sr中,通过在入口节点应用专门设计的与mpls数据平面完全兼容的段标识符(sid)的堆栈,分组流通过特定路径强制执行。sid的堆栈称为“段列表”,并且对应于mpls体系结构中的标签的堆栈。入口路由器发送具有sid(标签的堆栈)的列表的分组,其中每个sid指示要被分组遍历的下一跳或路由器。只有列表中顶部的sid在分组由中转节点转发期间被处理。每个分组都沿着最短路径转发到由顶部sid表示的网络元件。例如,prefix-sid可以表示标识特定路由器(即igp节点段)的igp前缀(即igp-prefix)的等价多路径(ecmp)感知最短路径。例如,adjacency-sid表示在igp中的两个节点之间的特定邻接(即igp-adjacency segment)上的跳。前缀段通常是多跳路径,而邻接段在大多数情况下是单跳路径。与传统的mpls网络不同,sr仅在应用段列表的入口节点处维护每个流的状态。因此,不需要信令协议(例如,具有业务工程扩展的资源预留协议—rsvp-te)来填充中转节点的转发表。通过这种方式,采用了一个简化的控制平面,仅依靠适当扩展的igp以将sid作为lsa的附加属性进行通告。因此,由于不需要mpls标签交换路径(lsp)状态信息,因此大大提高了中转节点的可扩展性。
46.在使用ipv6数据平面的sr中,类似于使用mpls数据平面的sr,通过在入口节点应用专门设计的sid的堆栈,分组流通过特定路径强制执行。然而,在使用ipv6数据平面的sr中,sid被编码到分组中,作为被指派给邻接段或节点段的ipv6地址。
47.在sr-te中,一条严格跳路径将包括adjacency-sid的栈,其中每个这样的sid将指定要被遍历的严格跳。因此,在sr中,遍历30个严格下一跳的分组将从头端开始,在mpls数据平面中具有30个标签的标签栈并且在ipv6数据平面中具有30个ipv6地址的列表。
48.注意,本文中主要使用通用源路由特定术语,而不是sr特定术语。例如,除非另有说明,否则节点或两个节点之间的链路在本文中统称为“网路单元”,并且在源路由中编码的网络元件被称为源路由路径中的“跳”。
49.各种示例实施例可以被配置为支持将源路由编码成分组的压缩形式,这可以应用于任何分组交换技术(例如,ipv4、ipv6、mpls、以太网等)。各种示例实施例可以被配置为提供一种通用且有效的机制来以被配置为在分组中施加最少开销的方式压缩源路由,而不管
源路由网络是基于ipv4、ipv6、mpls、以太网还是类似的。
50.各种示例实施例可以支持基于将标识符指派给其中标识符共享公共前缀(在本文中也称为共享前缀)的网络元件的将源路由编码到分组中的压缩形式。网络元件的标识符可以被指派一个或多个标识符块、多个连续或不连续的标识符块等,以及它们的各种组合。例如,假设可用于寻址多达255个网络元件的通用ipv4前缀10.10.10.0/24可用于为200个网络元件指派标识符,并且这些标识符可以通过以下来从两个非连续块被指派:从块10.10.10.1-10.10.10.100指派100个标识符并且从块10.10.10.130-10.10.10.230指派100个标识符。将理解,网络元件可以使用共享公共前缀的各种其他类型和布置的标识符。使用具有共享公共前缀的标识符的网络元件使得网络元件的标识符能够表示为{shared_prefix,offset},其中“shared_prefix”是网络元件的公共前缀,并且“offset”是网络元件的标识符在shared_prefix中的偏移。因此,网络元件的标识符可以被计算为shared_prefix+offset。这使得源路由能够被表示为组成源路由的网络元件的偏移列表。将理解,这可以应用于网络的全部或部分,可以应用于网络被划分的一个或多个网络分区(如下面进一步讨论的)等,以及它们的各种组合)。
51.各种示例实施例可以支持基于将源路由网络划分为网络元件(例如,节点和链路)的“区域”而将源路由编码为分组的压缩形式。在每个区域中,一个或多个标识符块被分配给该区域,并且该区域中的网络元件被指派来自一个或多个分配的标识符块的标识符。这使得区域中网络元件的标识符可以表示为{shared_prefix,offset},其中“shared_prefix”是该区域中一个或多个标识符块中的公共前缀,并且“offset”是标识符在shared_prefix中的偏移。因此,标识符被计算为shared_prefix+offset。这在图2中进行了说明,该图使用与图1相同的拓扑,但其中拓扑已被划分为两个区域。
52.图2描绘了被配置为支持基于源路由压缩的源路由的通信系统的示例实施例。
53.在图2中,通信系统200类似于图1的通信系统100。通信系统200包括与图1中相同的路由器,并且包括被配置为作为图1的控制器操作的pce。
54.在图2中,节点r1至r5在区域1中,节点r6至r8在区域2中。区域1中的网络元件共享公共前缀“1”,并且区域2中的网络元件共享公共前缀“2”。在图2中,标识符以shared_prefix.offset的符号显示(例如,节点rx的标识符是shared_prefix_of_rx.x,并且rx和ry之间的链路的标识符是shared_prefix_of_rx.xy)。一些示例标识符如下:(1)节点r3=1.3,(2)节点r6=2.6,并且(3)链路r4-》r7=1.47。
55.这样,区域中的网络元件可以表示为与shared_prefix的偏移。这允许将区域内的源路由段编码为元组{shared_prefix,size_of_offset,offset_list[]},其中“offset_list[]”是路径中跳的偏移列表,而“size_of_offset”是offset_list[]中条目的长度(以字节为单位)。然后,路径中的跳“n”的标识符被计算为shared_prefix+offset_list[n]。该编码在本文中被称为压缩源路由块(csrb)。压缩源路由(csr)包括一个或多个csr块,其中每个块代表源路由内某个区域中的跳。用于区域的csr块的通用编码在图3中示出,并且用于分组的csr的通用格式在图4中示出,两者都可以外推到任何分组交换技术。
[0056]
在图3中,csr块300包括shared_prefix字段、size_of_offset字段和包括[n]个offset_list字段的offset_list[](表示为offset_list[1]-offset_list[n])。在图3中,size_of_offset字段可以以各种方式被编码。例如,size_of_offset字段可以利用以下值
编码:(a)1=offset_list[]中条目的大小为1b,并且(b)2=offset_list[]中条目的大小为2b。例如,size_of_offset字段可以由offset_list[]中的条目中的比特的数目编码。
[0057]
在图4中,csr 400包括与网络的p个区域相关联的p个csrb,该p个区域将由包括csr的分组遍历(表示为csrb 1到csrb p)。将理解,图4中描绘的csrb中的每个csrb可以被编码为关于图3呈现的csrb(即,在csr中,每个csrb可以包括用于与csrb相关联的区域的n个网络元件的n个offset_list条目)。
[0058]
如果offset_list[]中的条目的大小被挑选为1b,则区域中最多可以包括256个网络元件。如果offset_list[]中的条目的大小被挑选为2b,则区域中最多可以包括65535个网络元件,这通常比典型源路由网络中的网络元件的数目多。因此,对于2b大小,整个网络可以容纳在单个区域内,因此,csr将仅包括一个csrb。
[0059]
csr的概念利用图2的一般例子来说明。例如,假设严格源路由是{r1-》r2,r2-》r4,r4-》r7,r7-》r8}。由于路径遍历两个区域,csr将包括两个csr块。csr的编码为:{csr block 1={shared_prefix=1,size_of_offset=1,offset_list[]={12,24,47}},csr block 2={shared_prefix=2,size_of_offset=1,offset_list[]={78}}}。
[0060]
值得注意的是,在ipv4和ipv6中,子网的概念已经被用于为网络元件分配ip地址,因此ip子网可以被指派给区域以分配用于其网络元件的标识符。然后,区域中的所有网络元件都可以表示为与子网的ip前缀的偏移。
[0061]
可以参考以下示例来理解基于在ipv4网络中使用csr可以实现的压缩。在现有的ipv4源路由中,30跳消耗30x4b=120b。作为第一个示例,假设在ipv4源路由网络中,区域被指派了子网10.10.10.0/24。因此,该区域最多可以有255个网络元件。在此,进一步假设30跳的源路由仅遍历通过该单个区域,这将是最好的情况。在这种情况下,shared_prefix=10.10.10.0(长度为4b)且size_of_offset=1。那么,csr的总大小为:shared_prefix的4b+size_of_offset的1b+offset_list[]的30x1b=35b。因此,在此,与现有的ipv4源路由相比,csr提供了(120-35)x100/120=70.83%的压缩率。作为第二示例,假设在ipv4源路由网络中,子网是10.10.0.0/16。因此,该区域最多可以有65535个网络元件,并且整个源路由网络可以容纳在单个区域内。在这种情况下,用于任何源路由的csr的总大小为:4b的shared_prefix+1b的size_of_offset+30x2b的offset_list[]=65b。因此,在此,与现有的ipv4源路由相比,csr提供了(120-65)x 100/120=45.83%的压缩率。因此,很明显ipv4源路由从使用源路由压缩中获得了显着的好处。
[0062]
基于在ipv6网络中使用csr可以实现的压缩可以参考以下示例来理解。在现有的ipv6源路由中,30跳消耗30x16b=480b。作为第一示例,假设在ipv6源路由网络中,区域被指派了子网ipv6_prefix/120。因此,该区域最多可以有255个网络元件。在此,进一步假设30跳的源路由仅遍历通过该单个区域,这将是最好的情况。在这种情况下,shared_prefix=ipv6_prefix(长度为16b)并且size_of_offset=1。那么,csr的总大小为:16b的shared_prefix+1b的size_of_offset+30x1b的offset_list[]=47b。因此,在此,与现有的ipv6源路由相比,csr提供了(480-47)x100/480=90.2%的压缩率。作为第二示例,假设在ipv6源路由网络中,子网是ipv6_prefix/112。因此,该区域最多可以有65535个网络元件,并且整个源路由网络可以容纳在单个区域内。在这种情况下,任何源路由的csr总大小为:16b的shared_prefix+1b的size_of_offset+30x2b的offset_list[]=77b。因此,在此,与现有
的ipv6源路由相比,csr提供了(480-77)x 100/480=84%的压缩率。因此,很明显ipv6源路由从使用源路由压缩中获得了显着的好处。
[0063]
可以参考以下示例来理解可以基于在mpls网络中使用csr来实现的压缩。在现有的mpls源路由中,30跳消耗30x4b=120b。在mpls网络中,全局标签空间可用于将子网标签分配给区域(例如,每个区域被指派要被指派给其网络元件的标签块)。20比特标签值可以被分开为{shared_prefix,offset}。作为第一示例,假设在mpls源路由网络中,区域被指派了具有子网label_prefix/24的标签块。因此,该区域最多可以有255个网络元件。在此,进一步假设30跳的源路由仅遍历通过该单个区域,这将是最好的情况。在这种情况下,shared_prefix=label_prefix(长度为4b)并且size_of_offset=1。那么,csr的总大小为:4b的label_prefix+1b的size_of_offset+30x1b的offset_list[]=35b。因此,在此,与现有的mpls源路由相比,csr提供了(120-35)x100/120=70.83%的压缩率。作为第二示例,假设在mpls源路由网络中,区域被指派了具有子网label_prefix/16的标签块。因此,该区域最多可以有65535个网络元件,并且整个源路由网络可以由单个区域容纳。在这种情况下,用于任何源路由的csr的总大小为:4b的shared_prefix+1b的size_of_offset+30x2b的offset_list[]=65b。因此,在此,与现有的mpls源路由相比,csr提供了(120-65)x 100/120=45.83%的压缩率。
[0064]
可以参考以下示例来理解基于在以太网中使用csr可以实现的压缩。在现有的以太网源路由中,30跳消耗30x6b=180b,其中每跳由6b媒体接入控制(mac)地址标识。在以太网中,可以使用子网技术将虚拟mac地址分配给区域中的网络元件。例如,假设在以太网源路由网络中,区域被指派了虚拟mac地址的子网,即mac_prefix/40。因此,该区域最多可以有255个网络元件。在此,进一步假设30跳的源路由仅遍历通过该单个区域,这是最好的情况。在这种情况下,shared_prefix=mac_prefix(长度为6b)并且size_of_offset=1。那么,csr的总大小为:shared_prefix的6b+size_of_offset的1b+offset_list[]的30x1b=~37b。因此,在此,与现有的以太网源路由相比,csr提供了(180

37)x100/180=79.44%的压缩率
[0065]
将理解,尽管本文主要在单播分组的源路由的上下文中使用源路由压缩的上下文中呈现,但是源路由压缩可以在无状态多播分组的源路由的上下文中使用,其中源路由编码多播树中的网络元件列表。
[0066]
图5描绘了用于由源路由的入口节点构建压缩源路由的方法的示例实施例。在图5中,为简单起见,假设源路由只遍历通过单个区域;然而,将理解,可以容易地将方法500外推到跨越多个区域的源路由。到方法500的输入是具有要被遍历的跳的列表的源路由。在框501,方法500开始。到方法500的输入502是具有要被遍历的跳的列表的源路由。框503找到与源路由相关联的区域的shared_prefix,然后方法500进行到框504。框504从与shared_prefix相关联的子网掩码得出size_of_offset,然后方法500进行到框506。框506初始化一个空的offset_list[],然后方法500进行到框508。框508初始化索引变量以索引到源路由和offset_list[]中的跳,然后方法500进行到510。框510通过从用于相同索引的源路由中的跳递减shared_prefix来设置用于该索引的offset_list[]条目,然后方法500进行到框512。框512检查源路由中是否有更多跳要被转换到offset_list[]中的条目中。如果源路由中有更多跳要被转换到offset_list[]中的条目中,则方法500进行到框514,否则方法
500进行到框516。框514将索引增加一并且方法500然后返回到框510以为下一跳重复框。框516从shared_prefix、size_of_offset和offset_list[]构建csrb/csr。从框516,方法500进行到框599。在框599,方法500结束。
[0067]
图6描绘了用于由源路由的中转节点或出口节点基于压缩的源路由来生成跳标识符的方法的示例实施例。在图6中,为简单起见,假设csr仅携带一个csrb(即源路由跨越一个区域);然而,将理解,可以容易地将方法600外推到携带多个csrb的csr(即,跨越多个区域的源路由)。在框601,方法600开始。到方法600的输入602是(1)csr编码分组和(2)到csr中跳的偏移的索引。框610从分组中解析csr,然后方法600进行到框620。框620在指定索引处解析csrb中的偏移值。该框考虑csrb中的size_of_offset值来解析该值。从框620,方法600进行到框630。框630通过将偏移值添加到csrb中的shared_prefix来生成跳标识符。从框630,方法600进行到框699。在框699,方法600结束。
[0068]
各种示例实施例可以被配置为支持在ipv4网络中实现csr。各种示例实施例可以被配置为支持以各种方式在ipv4网络中实现csr(例如,基于将csr实现为ipv4选项、基于将csr实现为ip垫层协议等,以及它们的各种组合)。
[0069]
各种示例实施例可以被配置为基于将csr实现为ipv4选项来支持在ipv4网络中实现csr。
[0070]
ipv4支持可以附接到ipv4报头的若干选项,并且各种示例实施例可以被配置为基于将csr实现为ipv4报头中的ipv4选项来支持在ipv4网络中实现csr。
[0071]
图7描绘了包括选项的ipv4报头的示例实施例。ipv4报头700包括ipv4报头和选项的常用字段。选项提供在某些情况下需要或有用的控制功能,但对于最公共的通信是不必要的。例如,选项包括针对时间戳、安全性和特殊路由的规定。每个选项都以1-八比特字节的类型字段开始,后跟特定于类型的编码。选项的长度可变。因此,如果选项没有任何特定于类型的数据,则其最小大小为1个八比特字节(仅类型)。选项的最大大小受ipv4报头中ip报头长度(ihl)字段的最大允许值限制,因为该字段包括ipv4报头中包括的所有选项的长度。1-八比特字节类型被视为具有3个字段:(1)1比特复制标志字段,(2)2比特选项类字段,以及(3)5比特选项编号字段。复制标志指示选项是否复制到分片时的所有片段中(例如,0=未复制,并且1=复制)。选项类别是:(a)0=控制,(b)1=保留用于将来使用,(c)2=调试和测量,以及(d)3=保留用于将来使用。各种示例实施例可以被配置为基于将csr实现为称为csr选项的ipv4选项来支持在ipv4网络中实现csr。csr选项的示例格式在图8中呈现。
[0072]
图8描绘了在图7的ipv4报头中使用以提供用于源路由压缩的csr的csr选项的示例实施例。csr选项800包括类型字段、长度字段和csrb列表字段。类型字段是1-八比特字节字段,指示副本、类和数目的元组中的csr选项,即31。长度字段是1-八比特字节字段,指示该选项的长度,包括类型八比特字节、长度八比特字节、csrb的列表中的八比特字节。csrb列表字段包括p个csrb的列表。csrb的示例格式关于图9被呈现。
[0073]
图9描绘了用在图8的csr选项中以提供用于源路由压缩的csr的csrb的示例实施例。csrb 900包括shared_prefix字段、长度字段、size_of_offset字段、指针字段和offset_list[n]字段。shared_prefix字段是对ipv4 shared_prefix进行编码的4个八比特字节字段。长度字段是1个八比特字节字段,指示csrb的长度,包括shared_prefix八比特字节、长度八比特字节、size_of_offset八比特字节、指针八比特字节和offset_list[]中的
八比特字节。size_of_offset是1-八比特字节字段,以字节为单位指示offset_list[]中的条目的大小。指针字段是1-八比特字节字段,它指示offset_list[]中的八比特字节,它开始下一个要处理的偏移。指针是相对于该选项而言的,用于指针的最小合法值是8,它指向第8个八比特字节,即紧接在指针字段之后的区域。offset_list[]字段包括一系列偏移条目,其中每个条目都是size_of_offset八比特字节。
[0074]
如上所述,ipv4 csr选项支持在ipv4网络中实现csr。当路由器路由ipv4分组时,它检查是否存在csr选项,如果存在csr选项,路由器解析从由指针指示的八比特字节开始的偏移值,并将指针增加size_of_offset。如果指针超过该长度,则意味着csrb已经被遍历。然后,如果csr中有下一个csrb,则处理下一个csrb。在分组遍历源路由路径时,csrb以这种方式被处理。
[0075]
将理解,可以以各种其他方式支持被配置为基于将csr实现为ipv4选项来支持在ipv4网络中实现csr的各种示例实施例。
[0076]
各种示例实施例可以被配置为基于将csr实现为ip垫层协议来支持在ipv4网络中实现csr。
[0077]
ipv4报头中的互联网报头长度(ihl)字段有4比特,其表示ipv4报头上的32比特字的数目,包括可变数目的ipv4选项。作为4比特字段,最大值为15个字(15x32比特,或480比特=60字节)。ihl的最小值为5,其指示长度为5x32=160比特=20字节,即不包括选项的ipv4报头的固定大小。这意味着选项的最大大小可以是60-20=40字节,这就限制了csr选项的大小为40字节。
[0078]
在至少一些示例实施例中,在ipv4网络中实现csr可以基于将csr实现为ip垫层协议。通用ip垫层层可以在ipv4报头和上层/传输协议报头(例如,传输控制协议(tcp)、用户数据报协议(udp)、互联网控制消息协议(icmp)等)之间被插入。ip垫层层在协议栈中的位置如图10所示。
[0079]
图10描绘了协议栈的示例实施例,用于图示使用ip垫层层来提供用于源路由压缩的压缩源路由。协议栈1000图示了被设置在ip与传输协议(例如tcp、udp、icmp等)之间的ip垫层。ip垫层层使用ipv4报头中的新ip协议号来携带,该新ip协议号可以从由国际编号指派机构(iana)维护的注册表中预留。例如,用于ip垫层层的ip协议号可以是145或任何其他合适的号。ip垫层层被定义为通用的,使得它可以携带与ip层相关的任何“增强”,为了支持在ipv4网络中实现csr,任何“增强”将包括csr。检查ip垫层报头的唯一路由器是与分组的目的地地址相对应的路由器,或者在路由器警告选项被设置在ipv4报头中的情况下为任何路由器。用于在ip垫层层中使用的ip垫层报头的示例格式在图11中呈现。
[0080]
图11描绘了用于提供用于源路由压缩的压缩源路由的ip垫层报头的示例实施例。ip垫层报头1100包括类型字段、长度字段、下一报头字段和有效负载字段。ip垫层协议被定义为是通用的并且可以在其中携带不同的类型。类型字段是携带类型的8比特字段。新类型可以被定义用于ipv4 csr。例如,用于ipv4 csr的新类型可以定义如下:type 16=ipv4-compressed-source-route(ipv4-csr)。注意,在本文中,“ipv4-csr-shim header”意味着ip-shim header type 16。将理解,其他值可以用于ipv4-csr的类型。长度字段是16比特字段,以八比特字节携带有效负载的长度,其中不包括类型、长度和下一报头字段的八比特字节。下一报头字段提供与ip垫层报头差不多的报头的ip协议类型(例如,tcp、udp、icmp等)。
有效负载字段包括特定于类型的格式。有效负载包括一个或多个csrb。ipv4-csr垫层报头的有效负载的示例格式关于图12呈现。
[0081]
图12描绘了ipv4压缩源路由的示例实施例,其用作ip垫层报头中的有效负载以提供用于源路由压缩的压缩源路由。ipv4-csr垫层有效负载1200包括p个csrb。
[0082]
如上所述,ipv4-csr垫层报头支持在ipv4网络中实现csr。ipv4-csr垫层报头的发起者除了插入ipv4-csr垫层报头之外,还插入路由器警告选项,使得每个路由器检查ipv4-csr垫层报头。当路由器路由包括路由器警告选项的ipv4分组时,它会检查是否存在ipv4-csr垫层报头。如果存在ipv4-csr垫层报头,路由器将依次评估csr中的每个csrb以找到要处理的下一csrb。如果csrb中的指针大于长度,则认为csrb被遍历。然后,如果csr中有下一csrb,则处理下一csrb。路由器从csrb解析从由指针指示的八比特字节开始的偏移值,并将指针增加size_of_offset。
[0083]
将理解,被配置为基于将csr实现为ip垫层协议来支持在ipv4网络中实现csr的各种示例实施例可以以各种其他方式得到支持。
[0084]
将理解,被配置为支持在ipv4网络中实现csr的各种示例实施例可以以各种其他方式得到支持。
[0085]
各种示例实施例可以被配置为支持在ipv6网络中实现csr。各种示例实施例可以被配置为支持以各种方式在ipv6网络中实现csr(例如,基于将csr实现为ipv6扩展报头、基于将csr实现为ip垫层协议等,以及它们的各种组合)。
[0086]
各种示例实施例可以被配置为基于将csr实现为ipv6扩展报头来支持在ipv6网络中实现csr。
[0087]
ipv6支持可以附接到ipv6报头的若干ipv6扩展报头(eh),并且各种示例实施例可以被配置为基于将csr实现为ipv6报头中的ipv6eh来支持在ipv6网络中实现csr。
[0088]
图13描绘了被配置为用于提供用于源路由压缩的csr的ipv6报头的示例实施例。在ipv6报头1300中,主ipv6报头的大小保持固定(40字节),同时根据需要添加定制的eh。eh提供在某些情况下需要或有用的控制功能,但对于最公共的通信是不必要的。例如,eh包括针对时间戳、安全性和特殊路由的规定。每个eh都以1-八比特字节的下一报头字段开始,后跟其自己的主体。主体的格式取决于eh的类型。eh的下一报头字段指向下一eh的类型。因此,多个eh通过它们的下一报头字段链接在一起。链中最后一个eh上的下一报头字段指示ipv6有效负载的类型。ipv6规范中的第4.3节描述了一个称为“逐跳选项报头”的eh,可用于携带可选信息,可选信息必须由每个路由器沿分组的传递路径被检查。它由ipv6报头或eh的下一报头字段中的值0标识。此eh是通用的,并且多个选项可以在eh中定义。因此,将由ipv6分组的每个中转路由器检查的任何特殊指令被定义为逐跳选项报头中的一个选项。逐跳选项报头的示例格式关于图14被呈现。
[0089]
图14描绘了在图13的ipv6报头中使用以提供用于源路由压缩的csr的逐跳选项报头的示例实施例。逐跳选项报头1400包括下一报头字段、报头扩展长度字段和options字段。下一报头是一个8比特选择器,用于标识紧跟逐跳选项报头之后的报头的类型。报头扩展长度字段是一个8比特无符号整数,它以8个八比特字节为单位指示逐跳选项报头的长度,不包括前8个八比特字节。选项字段是一个长度可变的字段,使得完整的逐跳选项报头是8个八比特字节长的整数倍。选项字段包括一个或多个tlv编码的选项。被配置为在图14
的逐跳选项报头中使用以提供用于源路由压缩的csr的tlv编码选项的示例格式被关于图15被呈现。
[0090]
图15描绘了被配置为在逐跳选项报头中使用以提供用于源路由压缩的csr的tlv编码选项的示例实施例。tlv编码选项1500包括选项类型字段、选项数据长度字段和选项数据字段。选项类型字段是选项的类型的8比特标识符。选项数据长度字段是8比特无符号整数,指示该选项的选项数据字段的长度,以八比特字节为单位。选项数据字段是一个可变长度字段,其包括特定于选项类型的数据。
[0091]
如上所述,逐跳选项报头支持在ipv6网络中实现csr。ipv6报头内的选项的序列将严格按照选项出现在报头中的顺序进行处理。例如,接收器将不扫描报头以寻找特定类型的选项并在处理所有前面的选项之前处理该选项。
[0092]
选项类型标识符是内部编码的,使得在处理ipv6节点不识别选项类型的情况下最高阶比特指定要采取的动作:(a)00-跳过该选项并继续处理报头,(b)01-丢弃分组,(c)10-丢弃分组,并且无论分组的目的地地址是否是多播地址,都向分组的源地址发送icmp参数问题代码2消息,指向无法识别的选项类型,以及(d)11-丢弃分组,并且仅在分组的目的地地址不是多播地址的情况下才向分组的源地址发送icmp参数问题代码2消息,指向无法识别的选项类型。
[0093]
option类型标识符在内部进行编码,使得选项类型的第三高阶比特指定该选项的选项数据是否可以改变到分组的最终目的地的航路:(a)0-选项数据不改变航路以及(b)1-选项数据可能会改变航路。当分组中存在认证报头(携带分组的认证摘要的另一类型的eh)时,对于其数据可能改变航路的任何选项,其整个选项数据字段在计算或验证分组的认证摘要时将被视为零值八比特字节。
[0094]
上面描述的三个高阶比特被视为选项类型的一部分,而不是独立于选项类型。也就是说,特定选项由完整的8比特选项类型标识,而不仅仅是选项类型的低阶5比特。用于源路由压缩的逐跳选项报头的选项类型被称为csr选项。参照图16呈现了csr选项的示例格式。
[0095]
图16描绘了用于在逐跳选项报头中使用以提供用于源路由压缩的csr的csr选项的示例实施例。csr选项1600包括选项类型字段、选项数据长度字段、预留字段和csrb列表字段。
[0096]
选项类型字段对选项类型进行编码,将其指示为csr选项。最高阶2比特利用值10进行编码,其指示丢弃分组,并且无论分组的目的地地址是否为多播地址,都向分组的源地址发送icmp参数问题代码2消息,指向无法识别的选项类型。第3最高阶比特利用值1编码,其指示选项数据可能改变航路,因为csr的内容在每跳/路由器处都会改变。剩余的5比特被指派值为10010,这引起选项类型字段的值为0x32。选项数据长度字段是可变的,并且该字段的值指示csr选项中剩余字节的长度。csrb列表字段包括p个csrb的列表。csrb的示例格式关于图17被呈现。
[0097]
图17描绘了csrb的示例实施例,该csrb被配置为在图16的csr选项中使用以提供用于源路由压缩的csr。csrb 1700包括shared_prefix字段、长度字段、size_of_offset字段、指针字段和offset_list[]字段。shared_prefix字段是16-八比特字节的字段,用于对ipv6 shared_prefix进行编码。长度字段是1-八比特字节字段,指示csrb的长度,包括
shared_prefix八比特字节、长度八比特字节、size_of_offset八比特字节、指针八比特字节和offset_list[]中的八比特字节。size_of_offset是1-八比特字节字段,以字节为单位指示offset_list[]中条目的大小。指针字段是1-八比特字节字段,它指示offset_list[]中的八比特字节,它开始要处理的下一偏移。指针是相对于这个选项而言的,并且用于指针的最小合法值是20,它指向第20个八比特字节,即紧接在指针字段之后的区域。offset_list[]字段包括一系列偏移条目,其中每个条目都是size_of_offset八比特字节。
[0098]
如上所述,ipv6 csr选项支持在ipv6网络中实现csr。当路由器路由包括逐跳选项报头的ipv6分组时,路由器检查报头中是否存在csr option。如果csrb中的指针大于长度,则认为csrb被遍历。然后,如果csr中有下一csrb,则处理下一csrb。路由器从csrb解析从由指针指示的八比特字节开始的偏移值,并将指针增加size_of_offset。
[0099]
将理解,可以以各种其他方式支持被配置为基于将csr实现为ipv6扩展报头来支持在ipv6网络中实现csr的各种示例实施例。
[0100]
各种示例实施例可以被配置为基于将csr实现为ip垫层协议来支持在ipv6网络中实现csr。
[0101]
在至少一些示例实施例中,在ipv6网络中实现csr可以基于将csr实现为ip垫层协议。通用ip垫层层可以在ipv6报头和上层/传输协议报头(例如tcp、udp、icmp等)之间被插入。该协议栈可以类似于图10中呈现用于ipv4的协议栈。
[0102]
ip垫层层使用ipv6报头中的新ip协议号携带,该新ip协议号可以从由iana维护的注册表中预留。例如,ip垫层层的ip协议号可以是145或任何其他合适的号。ip垫层层被定义为通用的,因此它可以携带与ip层相关的任何“增强”,为了支持在ipv6网络中实现csr,任何“增强”将包括csr。检查ip垫层报头的唯一路由器是与分组的目的地地址相对应的路由器,或者在路由器警告选项在ipv6 header中被设置的情况下,则为任何路由器。ip垫层报头可以类似于图11中呈现的ip垫层报头。
[0103]
ip垫层报头包括类型字段、长度字段、下一报头字段和有效负载字段。ip垫层协议被定义为是通用的并且可以在其中携带不同的类型。类型字段是携带类型的8比特字段。新类型可以被定义用于ipv6 csr。例如,用于ipv4 csr的新类型可以定义如下:type 17=ipv6-compressed-source-route(ipv6-csr)。注意,在本文中,“ipv6-csr-shim header”意味着ip-shim header type 17。将理解,其他值可以用于ipv6-csr的类型。长度字段是16比特字段,以八比特字节携带有效负载的长度,其中不包括类型、长度和下一报头字段的八比特字节。下一报头字段提供与ip垫层报头差不多的报头的ip协议类型(例如,tcp、udp、icmp等)。有效负载字段包括特定于类型的格式。有效负载包括p个csrb。ipv6-csr垫层报头的有效负载可以类似于图12中呈现的用于ipv4的有效负载,其中每个csrb类似于图17中呈现的csrb格式。
[0104]
如上所述,ipv6-csr-shim header支持在ipv6网络中实现csr。ipv6-csr-shim header的发起者除了插入ipv6-csr-shim header外,还插入了路由器警告选项,使得每个路由器都检查ipv6-csr垫层报头。当路由器路由包括路由器警告选项的ipv6分组时,它检查是否存在ipv6-csr-shim header。如果存在ipv6-csr-shim header,路由器将依次评估csr中的每个csrb以找到要处理的下一csrb。如果csrb中的指针大于该长度,则认为csrb被
遍历。然后,如果csr中有下一csrb,则处理下一csrb。路由器从csrb解析从由指针指示的八比特字节开始的偏移值,并将指针增加size_of_offset。
[0105]
将理解,被配置为基于将csr实现为ip垫层协议来支持在ipv6网络中实现csr的各种示例实施例可以以各种其他方式得到支持。
[0106]
将理解,被配置为支持在ipv6网络中实现csr的各种示例实施例可以以各种其他方式得到支持。
[0107]
各种示例实施例可以被配置为支持在mpls网络中实现csr。
[0108]
在基于mpls的源路由网络(例如,使用mpls数据平面的分段路由)中,每个csrb都是一个独立的标签栈。因此,csr包括一个或多个csrb的一个或多个连续标签栈。csrb的示例格式关于图18被呈现。
[0109]
图18描绘了用于在基于mpls的网络中提供用于源路由压缩的csr的csrb的示例实施例。csrb 1800包括csrb-indicator(csrb-i)、基本标签、csrb描述符和偏移标签栈。
[0110]
csrb-i被配置为使接收路由器能够区分csrb标签和非csrb标签。csrb-i被插入到标签栈中,使得其紧接在csrb(即,它可能或可能不被认为形成csrb的一部分)的其他标签之前(其中“之前”意味着较接近于标签栈的顶部并且远离栈底指示)。将理解,如果源路由压缩在ietf中被标准化,那么csrb-i的值可以在iana注册中心被预留在专用标签上。请注意,csrb-i中的exp和ttl字段将被设置为0,并且接收路由器将忽略这些字段。csrb-i的发送路由器和接收路由器将使用csrb-i下面标签的exp字段用于映射到适当的转发类。csrb-i中的s比特将被设置为0,因为csrb的其他标签紧随其后。
[0111]
跟在csrb-i之后的基本标签是用于包括在csrb中的偏移的基本标签(shared_prefix)。exp和ttl字段将被设置为所需的值。由于csrb的其他标签紧随其后,因此s-比特将被设置为0。
[0112]
跟在基本标签之后的csr描述符是一个特殊的标签,描述了csrb中的size_of_offset(soo)和随后偏移的数目。所以,这个标签不携带特殊的固定值。csrb描述符的示例格式关于图19被呈现。图19描绘了被配置为在图18的csrb中使用以提供用于在基于mpls的网络中的源路由压缩的csr的csrb描述符的示例实施例。csrb描述符1900包括size_of_offset(soo)字段、偏移数目(num offsets)字段、exp字段、s-比特和ttl字段。soo字段是对size_of_offset进行编码的3-比特字段。soo字段可以编码以下值:(a)1,意味着偏移的大小为1b,因此与csrb相关联的区域最多可寻址256个网络元件或(b)2,意味着偏移的大小偏移量为2b,因此与csrb相关联的区域最多可寻址65,535个网络元件。偏移数目字段是17-比特字段,其值指示属于csrb的随后偏移的数目。如果值为“n”,则随后的n个偏移(跟在csrb描述符之后),每个大小为soo,属于csrb。exp字段由csrb的发起者设置为0,并且被csrb的接收器忽略。s-比特字段被设置为0,因为跟在后面是描述偏移的标签。ttl被设置为0,并且接收器将忽略该字段的值。
[0113]
偏移标签栈(ols)是包括offset_list[]的csrb的主体。确切的结构取决于csrb描述符中soo字段中的值。当soo值为1(即,使用1b偏移)时ols的示例格式关于图20被呈现。图20描绘了被配置为在图18的csrb中使用以提供用于在基于mpls的网络中的源路由压缩的csr的ols的示例实施例。ols 2000包括n个偏移标签。在此,ols 2000可以通过将每个mpls标签扩展到32比特来支持(例如,通过重写exp、s-比特和ttl字段,因为这些后三个字段不
是必需的),然后将每个mpls标签分段分为四个1b字段。以这种方式,每个扩展的32-比特mpls标签可用于对1b个偏移标签中的四个进行编码。在ols 2000中,每个1b offset label字段为csrb中的对应跳(网络元件)编码一个偏移值。用于跳的标签是通过将偏移值添加到基本标签获得的。
[0114]
图21描绘了被配置为提供用于在基于mpls的网络中的源路由压缩的csr的csr编码的mpls分组的示例实施例。在csr编码的mpls分组2100中,由于源路由遍历两个区域,因此csr相应地包括用于两个区域的csrb标签栈。
[0115]
将理解,被配置为支持在mpls网络中实现csr的各种示例实施例可以以各种其他方式得到支持。
[0116]
图22描绘了用于支持基于源路由压缩的源路由的方法的示例实施例。将理解,尽管本文中主要呈现为串行执行,但方法2200的至少一部分功能可以同时执行或以与图22中呈现的顺序不同的顺序执行。在框2201,方法2200开始。在框2210,支持通过网络在从入口节点到出口节点的路径上的源路由分组的通信,其中网络包括具有共享公共前缀的相应网络元件标识符集合的网络元件集合,其中源路由分组在其中已编码了包括公共前缀和偏移列表的源路由块,其中偏移列表包括偏移值集合,偏移值集合与路径的网络元件中的相应网络元件相关联并且被配置为与公共前缀组合以恢复路径的网络元件中的相应网络元件的网络元件标识符。在框2299,方法2200结束。
[0117]
用于支持基于源路由压缩的源路由的各种示例实施例可以提供各种优势或潜在优势。例如,用于支持基于源路由压缩的源路由的各种示例实施例可以是通用的,并且因此可以被配置为支持用于各种分组交换技术的源路由压缩,诸如ipv4、ipv6、mpls、以太网等。例如,用于支持基于源路由压缩的源路由的各种示例实施例可以是通用的,并且因此可以被配置为支持用于各种分组交换技术的源路由压缩,诸如ipv4、ipv6、mpls、以太网等,其中数据平面种有微小变化。例如,用于支持基于源路由压缩的源路由的各种示例实施例可以被配置为支持用于各种分组交换技术的分段路由(sr)中的重要报头压缩,诸如ipv4(例如,利用ipv4的sr可以支持大约45.3%-70.83%的报头压缩)、ipv6(例如,利用ipv6的sr可以支持大约84%-90.2%的报头压缩,利用mpls的sr可以支持大约45.3%-70.83%的报头压缩,利用以太网的sr可以支持大约79.44%的报头压缩,依此类推)。例如,用于支持基于源路由压缩的源路由的各种示例实施例可以被配置为支持用于ipv6的sr中的显着报头压缩,在没有如本文所呈现的源路由压缩的情况下,这可能会经历显着的开销(例如,对于1500b分组,sr ipv6将施加32%的开销损失,这转换为每秒10千兆字节的链路中每秒3.2千兆字节的直接损失,并且对于512b分组,sr ipv6将施加93.2%的开销损失,这转换为每秒10千兆字节的链路中每秒9.32千兆字节的直接损失)。用于支持基于源路由压缩的源路由的各种示例实施例可以提供各种其他优点或潜在优点。
[0118]
图23描绘了适用于执行本文中呈现的各种功能的计算机的示例实施例。
[0119]
计算机2300包括处理器2302(例如,中央处理单元(cpu)、处理器、具有处理器核集合的处理器、处理器的处理器核等)和存储器2304(例如,随机存取存储器、只读存储器等)。处理器2302和存储器2304可以通信连接。在至少一些示例实施例中,计算机2300可以包括至少一个处理器和至少一个存储器,至少一个存储器包括计算机程序代码,其中至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使计算机执行本文中呈现的各
种功能。
[0120]
计算机2300还可以包括协作元件2305。协作元件2305可以是硬件设备。协作元件2305可以是可以加载到存储器2304中并且由处理器2302执行以实现本文中呈现的各种功能的过程(在这种情况下,例如,协作元件2305(包括相关联的数据结构)可以存储在非瞬态计算机可读存储介质上,诸如存储设备或其他合适类型的存储元件(例如,磁驱动器、光驱等))。
[0121]
计算机2300还可以包括一个或多个输入/输出设备2306。输入/输出设备2306可以包括一个或多个用户输入设备(例如,键盘、小键盘、鼠标、麦克风、相机或等)、用户输出设备(例如,显示器、扬声器等)、一个或多个网络通信设备或元件(例如,输入端口、输出端口、接收器、传输器、收发器等)、一个或多个存储设备(例如,磁带驱动器、软盘驱动器、硬盘驱动器、光盘驱动器等)等,以及它们的各种组合。
[0122]
将理解,计算机2300可以表示适合于实现本文中描述的功能元件、本文中描述的功能元件的部分等以及它们的各种组合的通用架构和功能。例如,计算机2300可以提供适合于实现本文中呈现的一个或多个元件的通用架构和功能,诸如节点或其一部分、路由器或其一部分、源路由元件或其一部分、控制器或其一部分等,以及它们的各种组合。
[0123]
将理解,本文中呈现的至少一些功能可以在硬件内实现,例如,作为与处理器协作以执行各种功能的电路系统。将理解,本文中呈现的至少一些功能可以在软件中实现(例如,经由在一个或多个处理器上实现软件,用于在通用计算机上执行(例如,经由一个或多个处理器的执行),以便提供专用计算机等)和/或可以在硬件中实现(例如,使用通用计算机、一个或多个专用集成电路和/或任何其他硬件等效物)。将理解,本文中呈现的至少一些功能可以由包括至少一个处理器和至少一个存储器的装置来实现,至少一个存储器包括计算机程序代码,其中至少一个存储器和计算机程序代码被配置为与至少一个处理器一起使该装置执行本文中呈现的各种功能。将理解,本文中描述的功能/元件的部分可以被实现为计算机程序产品,其中计算机指令在被计算机处理时适应计算机的操作,使得本文中描述的方法和/或技术被调用或以其他方式提供。用于调用各种方法的指令可以存储在固定或可移动介质(例如,非瞬态算机可读介质)中,经由广播或其他信号承载介质中的数据流传输,和/或存储在根据指令操作的计算设备内的存储器中。
[0124]
将理解,除非另有说明(例如,使用“或否则”或“或在备选中”),否则本文使用的术语“或”指的是非排他性的“或”。
[0125]
将理解,尽管在本文中已经详细示出和描述了结合在本文中呈现的教导的各种实施例,但是本领域的技术人员可以容易地设计出仍然结合这些教导的许多其他变化的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1