针对多路径分段路由的带宽约束
1.相关申请
2.本技术要求于2021年3月26日提交的美国专利申请第17/214,617号的权益,该申请要求于2020年12月31日提交的美国临时专利申请第63/133,081号的权益;本技术要求于2020年9月30日提交的美国临时专利申请第63/085,927号的权益;每个申请的全部内容通过引用的方式并入本文。
技术领域
3.本公开涉及计算机网络,并且更具体地涉及针对计算机网络的分段路由。
背景技术:4.计算机网络是交换数据和共享资源的互连的计算设备的类集。在基于分组的网络(诸如互联网)中,计算设备通过将数据划分为被称作分组的小块来传送数据,跨网络将这些小块从源设备单独路由到目的地设备。目的地设备从分组中提取数据并且将数据组装成其原始形式。
5.网络内的某些设备(诸如路由器)使用路由协议来交换并积累描述了通过网络的可用路由的拓扑信息。这允许路由器构建其自身的网络路由拓扑图。在接收到传入数据分组后,路由器检验分组内的信息并根据所积累的拓扑信息来转发该分组。
6.许多路由协议属于被称为内部网关协议(igp)的协议类别,其中使用基于洪泛的分布机制来向网络内的路由器通告拓扑信息。这些路由协议通常依赖于路由算法,该路由算法要求路由器中的每个路由器都针对被称为igp区域或域的给定域具有同步路由拓扑信息。根据链路状态路由协议维护的链路状态数据库(lsdb)或业务工程数据库(ted)的内容具有igp域的范围。igp路由协议通常要求igp路由域中的所有路由器在内部lsdb或ted内存储已经根据igp协议分布的所有路由信息。在操作中,每个路由器通常维护内部lsdb和/或ted并以所定义的间隔扫描整个数据库以生成和输出链路状态消息,以将数据库同步到路由域内的相邻路由器。以这种方式,链路状态在整个路由域中传播并完整地存储在域内的每个路由器处。
7.基于分组的网络将标签交换协议用于业务工程和其他目的。多协议标签交换(mpls)是用于根据由网络中的路由器维护的路由信息设计互联网协议(ip)网络内的业务模式的机制。通过利用mpls协议(诸如标签分布协议(ldp)、具有业务工程扩展的资源保留协议(rsvp)(rsvp-te)或分段路由(sr)扩展),标签交换路由器可以使用前置于业务的标签沿着通过网络到达目的地设备的特定路径(即,标签交换路径(lsp))转发业务。lsp定义了通过网络的不同路径以将mpls分组从源设备运载到目的地设备。使用mpls协议,沿着lsp的每个路由器与目的地相关联地分配标签并且沿着路径将标签传播给最靠近的上游路由器。沿着路径的路由器添加(推送)、移除(弹出)或交换标签并且执行其他mpls操作以沿着已建立的路径转发mpls分组。
8.路由器可以采用分段路由技术来利用网络中的源分组路由(spring)范例。利用分
段路由,前端网络节点可以通过以有序分段标识符列表扩充分组的报头来沿着任何路径引导分组流,以用于实现分段路由策略。分段路由可以减少常规mpls路由中固有的中间每流状态并且在一些情况下消除该中间每流状态。
技术实现要素:9.一般而言,描述了用于计算实现分段路由(sr)策略并且满足针对sr策略的带宽约束的多路径的技术。为了实现sr策略而计算和提供的多条路径被称为多路径,并且这些路径可以实现跨多条路径的基于等成本多路径(ecmp)的sr策略的负载平衡。如所描述的,在一些示例中,sr策略可以指定多路径的路径的组合带宽必须满足的带宽约束。
10.为了计算实现sr策略并且还满足针对sr策略的带宽约束的多路径,sr域的控制器可以基于网络的网络拓扑模型来计算第一最短路径集合作为sr策略的潜在多路径。控制器然后可以将第一最短路径集合中的每条最短路径针对被引导到sr策略的业务进行的预期带宽使用与构成路径的链路的可用带宽进行比较。针对每条路径,如果由sr策略的路径进行的预期带宽使用超过该路径上的链路的可用带宽,那么控制器可以修改网络拓扑模型以向链路添加带宽溢出度量。控制器然后可以基于包括任何添加的带宽溢出度量的修改后的网络拓扑模型来计算第二最短路径集合作为sr策略的不同潜在多路径。控制器可以再次通过第二最短路径集合中的路径中的每条路径对预期带宽使用进行比较并且以这种方式进行迭代,直到找到不会溢出新的计算得到的最短路径集合的最短路径中的任何最短路径的带宽的解决方案为止。
11.技术可以提供实现至少一种实际应用的一种或多种技术优点。例如,这些技术可以允许sr启用网络支持带宽约束的多路径sr路径计算(computation),这可以减少在网络中提供的此类多路径上的过载路径和对应分组丢弃。
12.在示例中,本公开描述了一种方法,包括:由计算设备针对分段路由策略计算通过网络节点的网络的第一最短路径,分段路由策略指定针对分段路由策略的带宽约束,其中第一最短路径中的每条最短路径表示不同的链路序列,该链路序列连接从源到目的地的网络节点的对;响应于由计算设备基于针对分段路由策略的带宽约束而确定第一最短路径中的一条第一最短路径的链路具有不足以满足链路的所需带宽的带宽,增加链路的度量;由计算设备针对分段路由策略基于链路的增加的度量来计算通过网络节点的网络的第二最短路径,分段路由策略指定带宽约束;以及在节点的网络中提供第二最短路径。
13.在示例中,本公开描述了一种计算设备,包括:存储器;以及处理电路系统,与存储器通信,该处理电路系统和该存储器被配置为:针对分段路由策略计算通过网络节点的网络的第一最短路径,分段路由策略指定针对分段路由策略的带宽约束,其中第一最短路径中的每条最短路径表示不同的链路序列,该链路序列连接从源到目的地的网络节点的对;响应于基于针对分段路由策略的带宽约束而确定第一最短路径中的一条第一最短路径的链路具有不足以满足链路的所需带宽的带宽,增加链路的度量;针对分段路由策略基于链路的增加的度量来计算通过网络节点的网络的第二最短路径,分段路由策略指定针对分段路由策略的带宽约束;以及在节点的网络中提供第二最短路径。
14.在示例中,本公开描述了一种编码有指令的非瞬态计算机可读存储介质,该指令在被执行时使计算设备的一个或多个处理器执行操作,该操作包括:针对分段路由策略计
算通过网络节点的网络的第一最短路径,分段路由策略指定针对分段路由策略的带宽约束,其中第一最短路径中的每条最短路径表示不同的链路序列,该链路序列连接从源到目的地的网络节点的对;响应于基于针对分段路由策略的带宽约束而确定第一最短路径中的一条第一最短路径的链路具有不足以满足链路的所需带宽的带宽,增加链路的度量;针对分段路由策略基于链路的增加的度量来计算通过网络节点的网络的第二最短路径,分段路由策略指定针对分段路由策略的带宽约束;以及在节点的网络中提供第二最短路径。
15.在附图和以下描述中阐述了本发明的一个或多个实施例的细节。本发明的其他特征、目的以及优点将通过描述和附图以及权利要求书变得明显。
附图说明
16.图1是图示了具有网络和控制器并且配置为根据本公开中所描述的技术进行操作的示例系统的框图。
17.图2a到图2b是图示了具有网络和控制器并且配置为根据本公开中所描述的技术进行操作的示例系统的框图。
18.图3a到图3h是图示了用于计算满足分段路由(sr)策略的多路径解决方案中的路径中的每条路径的分段标识符(sid)列表的进程的框图。
19.图4a到图4c是图示了用于在分段路由(sr)策略的多路径解决方案中用修改后的网络计算满足多条路径中的每条路径的分段标识符(sid)列表的进程的框图。
20.图5是图示了根据本公开的技术的示例控制器的框图。
21.图6是更详细地图示了根据本公开的技术的用于示例控制器的路径引擎的示例实现的框图。
22.图7是图示了根据本公开的一种或多种技术的计算设备的示例操作的流程图。
23.图8是图示了根据本公开的技术的由计算设备执行的用于计算候选sid列表以实现多路径的示例操作的流程图。
24.图9a到图9b是图示了根据本公开的技术的示例网络拓扑的框图,控制器针对示例网络拓扑计算sr策略的多路径。
25.图10是图示了根据本公开的技术的由计算设备执行的示例操作的流程图。
26.图11是图示了根据本公开的技术的由计算设备执行的示例操作的流程图。
27.贯穿图和本文,相同附图标号指示相同元件。
具体实施方式
28.分段路由(sr)(其也可以被称为源分组路由或网络中的源分组路由(spring))是控制面架构,该控制面架构使得入口路由器能够引导分组通过网络中的特定网络节点和链路集合,而不依赖于网络中的中间网络节点来确定其应该采取的路径。spring转发的基础是分段标识符(sid)的概念。filsfils和previdi于2018年7月在互联网工程任务组(ietf)rfc 8402上编辑的“分段路由架构(segment routing architecture)”;sivabalan于2020年11月1日在spring工作组第09版编辑的“分段路由策略架构(segment routing policy architecture)”;以及talaulikar于2019年10月9日在spring工作组第04版编辑的“sr策略实现和部署注意事项(sr policy implementation and deployment considerations)”中
更详细地描述分段路由和sid;他们中的每一个的全部内容通过引用的方式并入本文中。“分组路由策略架构(segment routing policy architecture)”将sr策略定义为“实现节点上的有序分段列表的实例化以实现针对来自该节点的业务引导具有特定意图的源路由策略的框架”。
29.图1是图示了具有配置为根据本公开中所描述的技术进行操作的网络112和控制器108的示例系统100的框图。网络112是一个或多个计算机网络(例如互连的l2/l3网络集合)并且在一些示例中,可以是广域网。网络112可以包括一个或多个自主系统、数据中心、分支办公室、专用网络、公共网络、云网络或其他类型的网络。
30.网络112包括网络节点19,该网络节点是sr启用的并且构成sr域。网络节点19可以备选地被称为“sr节点”。sr域可以包括任何数量的网络节点19。网络节点19中的每个网络节点可以表示路由器、交换机或能够执行分段路由的其他网络设备。网络112可以包括许多其他网络设备,这些网络设备不是sr域的一部分或不是sr启用的,诸如其他路由器或开关。
31.使用分段路由,网络节点19沿着分段路由路径将分组流的网络分组从源转发给目的地,分段路由路径被编码为扩充网络分组报头的分段标识符列表并且被网络节点19用于标识下一个分段以转发每个网络分组。由网络节点19接收和转发的网络分组的源可以包括一个或多个设备(未示出)和/或任何公共网络或专用网络或互联网。由网络节点19转发的网络分组的目的地可以包括一个或多个目的地设备和/或网络,该目的地设备和/或网络可以包括lan或广域网(wan),该lan或广域网包括多个设备。例如,目的地设备可以包括个人计算机、膝上型计算机、工作站、个人数字助理(pda)、无线设备、网络就绪设备、文件服务器、打印服务器或从源接收网络分组的其他设备。
32.分段路由具有多种类型的分段。这些包括表示网络节点19中的任何网络节点与指定前缀之间的最短路径(例如根据igp度量)的前缀分段。前缀分段包括指定前缀标识特定网络节点19(例如特定网络节点19的回送地址)的节点分段以及强制执行朝向任播组的最靠近的网络节点19转发的等成本多路径(ecmp)感知最短路径的任播分段。任播组包括一个或多个网络节点19,并且指定前缀可以由任播组中的网络节点19中的任何网络节点通告。分段可以由其分段标识符(sid)引用。
33.其他分段类型包括作为网络节点19之间的igp邻接的邻接分段、绑定分段以及邻接集合。绑定分段可以表示通过网络节点19的隧道。隧道可以包括sr策略。sr策略本身可以使用多路径来实现或使用多路径在网络112中实现。邻接集合表示多个邻接,并且针对多个邻接使用相同sid。这是任播sid的邻接并行版本,其中相同sid指示网络中的多个节点。一般而言,可以用于将业务同时引导到多条路径的sid产生更优选的sid减少或最小化解决方案。邻接集合和任播sid是重要的此类sid。
34.在一些示例中,网络节点19使用多协议标签交换(mpls)架构来应用分段路由。在此类示例中,每个分段被编码为mpls标签,并且sr策略可以被实例化为附加到网络分组的标签堆栈。有源分段位于标签堆栈顶部。在完成分段后,网络节点19从标签堆栈中弹出对应标签。
35.在一些示例中,网络节点19使用ipv6架构和sr报头(srh)来应用分段路由。在此类示例中,指令可以与分段相关联并且被编码为映射到sid的ipv6地址。sr策略被实例化为路由报头中的有序sid列表。分组的目的地地址(da)指示有源分段。srh中的segmentsleft
(sl)指针指示下一个有源分段。当网络节点19完成分段时,网络节点对sl指针进行减量并且将下一个分段复制到目的地地址。网络分组在sr策略上被引导,针对sr策略扩充了对应srh。
36.在一些示例中,网络节点19可以作为标签交换路由器(lsr)操作以向网络112内的相邻lsr分布标签。例如,可以存在多种不同的标签类型,包括“邻接”标签和“节点”标签。此类标签可以是或以其他方式对应于局部地或全局地标识网络112中的分段的分段标识符。为了通过网络112转发分组,网络节点19可以推送、弹出或交换分段标识符列表中的一个或多个标签,该分段标识符列表在通过网络转发时被应用于该分组。标签堆栈可以在sr策略下对分组的拓扑和服务源路由进行编码。
37.邻接标签可以具有对特定分段路由节点(诸如网络节点19中的一个网络节点)的本地语义。具体地,邻接标签将业务引导到邻接(例如通信链路和/或接口)或邻接集合中。因此,邻接标签可以与特定网络节点19相关。为了使用邻接标签,特定网络节点19最初可以将邻接标签指派给特定邻接,并且使用igp(诸如中间系统到中间系统(isis)或开放式最短路径优先(ospf))将邻接标签通告给分段路由域中的其他路由器。特定网络节点19可以是sr域中的使用特定邻接标签的唯一网络节点。当网络节点19使用邻接标签转发分组时,网络节点19可以使分组使用与邻接标签相关联的特定网络节点19的邻接。以这种方式,可以使用邻接标签来为分段建立一跳隧道。
38.相比之下,节点标签可以在sr域内具有全局语义。即,网络节点19中的每个网络节点可以被指派所定义的节点标签范围(通常被称为分段路由全局块(srgb)),该节点标签范围对于sr域内的每个网络节点19是唯一的。网络112的操作员可以确保从全局范围到不同网络节点19的不同节点标签范围的唯一分配。除了节点标签范围之外,每个特定网络节点19还可以具有唯一地标识sr域中的特定网络节点19的特定节点标识符。每个网络节点19可以使用例如igp来将其对应节点标识符和节点标签范围通告给sr域中的其他网络节点19。
39.如上文所描述,基于使用例如最短路径路由而确定的路由,网络节点19中的每个网络节点可以配置其转发状态以使用mpls或使用ipv6架构和sr报头(srh)来实现sr。例如,使用mpls,网络节点19中的每个网络节点可以使用通过igp获知的拓扑信息执行路径选择,以基于由网络节点19维护的路由信息来在逐跳的基础上计算网络112内的最短路径。网络节点19中的每个网络节点然后可以沿着本地计算得到的最短路径选择下一跳,并且在网络节点的转发平面中安装与所选择的下一跳相关联的转发信息,其中转发信息标识要在转发业务时使用的网络接口以及要在将业务转发出接口时应用的一个或多个标签。网络节点19使用具有所指派的标签的下一跳来逐跳转发业务。
40.系统100可以使用分布式或集中式控制来实现分段路由。利用分布式控制,网络节点19使用路由协议(诸如is-is或ospf或边界网关协议(bgp))分配和用信号通知分段。网络节点19单独地决定在使用一条或多条候选路径实现的sr策略上引导分组。网络节点19单独地计算sr策略。利用分布式控制,控制器108可以不是系统100的一部分。在分布式控制场景中,网络节点19是计算设备,该计算设备可以计算满足多条路径中的每条路径以实现sr策略的一个或多个sid列表。一般而言,路径表示将网络节点的对从源连接到目的地的不同链路序列。多路径是多条此类路径。多路径的不同路径可以共享链路。
41.利用集中式控制,控制器108分配并用信号通知分段。控制器108决定在其上引导
映射到sr策略的分组的网络节点19。控制器108应用路径计算来计算用于满足sr策略的候选路径。另外,控制器108用转发信息对网络112(特别是网络节点19)进行编程,以用于使用sid列表来实现候选路径。控制器108可以使用网络配置协议(netconf)、路径计算元件通信协议(pcep)、bgp或其他协议对网络节点19进行编程。控制器108可以表示一个或多个sr控制器并且可以是wan控制器,该wan控制器不仅管理sr域,而且还管理路径计算、业务工程、提供以及网络112的操作员的其他网络控制任务。控制器108可以包括或表示路径计算元件,并且可以备选地被称为pce控制器或sdn控制器。控制器108可以发现在各种网络节点19处实例化的sid并且发现在各种网络节点19处可用的本地(srlb)标签和全局(srgb)标签的集合。控制器108可以使用路由协议来侦听其他拓扑信息。在集中式控制场景中,控制器108是可以计算满足多条路径中的每条路径(被称为“多路径”)以实现sr策略的一个或多个sid列表的计算设备。路径中的每条路径都是从多路径的源到多路径的目的地。控制器108可以计算从一个或多个源到一个或多个目的地的多路径以便实现sr策略。在已经计算了一个或多个sid列表后,控制器108然后可以对网络112进行编程以至少基于一个或多个sid列表来转发网络业务。
42.虽然本公开的技术主要是相对于由应用集中式控制的控制器108执行的操作进行描述的,但这些技术类似地适用于分布式控制模型,其中网络节点19分配并用信号通知分段并且执行本文中相对于控制器108描述的其他操作。控制器108和网络节点19两者可以备选地被称为控制设备或计算设备。
43.当由网络节点19使用来自一个或多个sid列表的sid列表转发的业务沿着路径中的一条路径转发或并未在不是路径中的一条路径的路径上转发时,一个或多个sid列表满足多条路径中的每条路径以实现sr策略。而且,一个或多个sid列表在其完全使用多条路径时是令人满意的,即,网络节点19可以使用一个或多个sid列表沿着路径中的任何路径转发业务。例如,第一sid列表可以使被引导到sr策略的网络分组遍历多条路径中的第一路径,而第二sid列表可以使被引导到sr策略的网络分组遍历多条路径中的第二路径,或单个sid列表可以使被引导到sr策略的网络分组遍历多条路径中的第一路径和第二路径两者。网络节点可以使用加权或非加权等成本多路径(ecmp)来将业务转发给下一个分段和/或选择一个或多个sid列表中的一个sid列表。
44.根据本公开的技术,控制器108计算实现分段路由(sr)策略并满足sr策略的带宽约束的多路径。操作员、脚本、网络管理系统(nms)、策略控制器或其他系统可以用sr策略配置控制器108,除了(多个)源、(多个)目的地以及其他sr策略属性之外,该sr策略还指定了带宽约束。作为一个示例,可以使用带宽量值(例如100g)来指定带宽约束,并且可以以要求所选择的多路径的总带宽组合地满足的方式指定带宽约束。
45.例如,可以将带宽约束指定为路径计算约束,sr策略的任何计算得到的多路径的路径的组合带宽必须满足该路径计算约束。因为节点19可以负载平衡均匀地跨sr策略的多路径的多条路径被引导到sr策略的业务,多路径的每条路径满足路径计算带宽约束所需的带宽量是路径计算带宽约束与路径数量之比。例如,如果计算得到的多路径具有n条路径并且路径计算带宽约束为m gbps(有时缩写为g,例如100g),那么n条路径中的每条路径的可用带宽必须足以支持(m/n)gbps。以上示例假设路径是独立的,即,不共享任何链路。然而,n条路径中的不同路径可以共享链路,并且网络节点可以具有在其上收敛和发散的若干路
径。
46.为了计算实现sr策略并且满足针对sr策略的带宽约束的多路径,基于由控制器108获得的网络112的网络拓扑模型,sr启用网络112的控制器108可以计算第一最短路径作为sr策略的潜在多路径。“最短路径”是指一条或多条最短路径的集合。控制器108然后可以将第一最短路径集合中的每条最短路径针对被引导到sr策略的业务进行的预期带宽使用与构成路径的链路的可用带宽进行比较。针对每条路径,如果由sr策略的路径进行的预期带宽使用超过该路径上的链路的可用带宽,那么控制器108可以修改网络拓扑模型以向链路添加带宽溢出度量。控制器108然后可以基于包括任何添加的带宽溢出度量的修改后的网络拓扑模型来计算第二最短路径集合作为sr策略的不同潜在多路径。控制器108可以再次通过第二最短路径集合中的路径中的每条路径对预期带宽使用进行比较并且以这种方式进行迭代,直到找到不会溢出计算得到的最短路径中的任何最短路径的带宽的解决方案为止。
47.图2a到图2b是图示了具有配置为根据本公开中所描述的技术进行操作的网络112和控制器108的示例系统100的框图。控制器108和网络212可以分别是图1的控制器108和网络112的示例。
48.网络212包括网络节点u11、u12、u21、u22、u31、u32、u41、u42、s11、s12、s21、s22、s31、s32、s41以及s42(统称为“网络节点119”)。网络节点119位于不同站点231到234中。例如,网络节点s41、s42、u41以及u42位于站点234中,网络节点u31、u32、s31以及s32位于站点233中。
49.网络节点119中的一些网络节点是任播组的成员。任播组221包括网络节点s11和s12。任播组222包括网络节点s21和s22。任播组223包括网络节点s31和s32。任播组224包括网络节点s41和s42。
50.网络节点119在网络拓扑中与链路201a到201j(统称为“链路201”)相连。链路201中的每条链路具有表示针对最短路径优先算法遍历链路的成本的相关联度量,例如igp度量。在图2a到图2b中使用大括号来图示链路的度量“{m}”(其中m的值是度量)。例如,将s41连接到s31的链路201h具有170的度量。如所图示的,网络212中的链路的默认度量是10。例如,将u11连接到s11的和将u11连接到s12的未命名链路具有10的度量。
51.图2b图示了用于实现sr策略“经由站点234的u11到u31”的从源u11到目的地u31的多路径。多路径包括可由从u11到u31的网络分组采用来满足sr策略的多条可能计算路径。控制器108或网络节点119中的一个网络节点可以计算计算路径230,该计算路径230包括路径230a到230c。例如,路径230a遍历网络节点u11到s12到s42到s32到u31以及连接网络节点的这些对的链路,例如u11到s12链路、s12到s42链路201d等。在图2b中使用粗体箭头将路径图示为叠加在网络112上。计算路径230不是从u11到u31的最短路径,而是遍历站点234的网络节点以便满足sr策略。
52.图3a到图3h是图示了用于计算满足分段路由(sr)策略的多路径解决方案中的图2a到图2b的路径230中的每条路径的分段标识符(sid)列表的进程的框图。例如,sid列表在附加到由u11引导到sr策略的分组时将使网络212在多路径上转发分组并且阻止网络212在不是多路径的路径(即,不是路径230中的一条路径)的路径上转发分组。在一些示例中,技术可以包括基于路由(例如igp)度量来针对多路径确定网络节点119与源网络节点u11的相
应距离,且标识一个或多个网络节点119或邻接的候选集合(或“候选组合”)以用作sid的基础以扩展进行中的候选sid列表。在一些情况下,技术包括基于度量来计算以源网络节点u11为根的等距度量图。标识一个或多个网络节点或邻接的候选集合可以包括标识一个或多个网络节点119,所有多路径都遍历该网络节点119,并且在多路径中将不会被从较早网络节点119到后续网络节点119的最短路径绕过(例如环绕)该网络节点119。标识一个或多个网络节点或邻接的候选集合可以包括标识两个或更多个网络节点119,该网络节点119与源等距且在多路径中并未共同地被从较早网络节点119到后续网络节点119的最短路径绕过。从网络节点的标识到的候选集合生成的sid可以包括任播sid和节点sid。技术可以通过使用从一个或多个网络节点或邻接的新标识到的候选集合生成的sid来扩展进行中的候选sid列表并且从一个或多个网络节点或邻接的候选集合的网络节点生根于其他等距度量图,从而迭代地构建候选sid列表。技术可以由控制器108或网络节点119中的任何网络节点应用,但在下文中主要相对于控制器108进行描述。
53.图3a图示了以源网络节点u11为根且在表示路径230的多路径的路径树310旁边示出的等距度量图(mg)300。控制器108基于路径230和路径230的链路的度量来计算mg 300。控制器108可以使用最短路径优先算法(诸如dijkstra)来计算mg 300。mg 300包括度量图节点302a到302i(统称为“mg节点302”)和表示路径树的链路的有向边缘。例如,mg 300包括从mg节点302a到302b的有向边缘。mg节点302中的每个mg节点表示一个或多个网络节点119中的至少一个网络节点,基于在多条路径230中表示的链路的度量,该网络节点119沿着多条路径230中的至少一条路径与源网络节点u11相距相同距离。图3a图示了使用垂直对准的mg节点302中的任何mg节点的所表示的网络节点。例如,网络节点u11由mg节点302a表示,网络节点s11和s12由mg节点302b表示等。如本文中所使用,网络节点可以备选地被描述为“由度量图的度量图节点表示”或“在度量图的度量图节点中”。
54.由mg节点302表示的网络节点119与由有向mg 300中的先前和后续mg节点302表示的网络节点119等距。例如,s41和s42都与由mg节点302c表示的s11和s12等距(以度量值30),与由mg节点302f表示的s32等距(以度量值70)并且与还由mg节点302h表示的s32等距(以度量值90)。s32由多个mg节点302表示,这是因为s32被多条路径230遍历并且在这些多条路径上与源具有不同距离。在计算时,mg节点302中的每个mg节点默认可以是用于扩展一个或多个sid列表的候选mg节点。
55.因为mg节点与源节点等距,所以mg节点中的多路径节点为候选sid列表提供候选节点和任播sid。具有按顺序围绕其的链路的mg节点302被称作绕过。被绕过的mg节点302不会产生节点或任播sid候选,这是因为业务需要围绕其流动。
56.图3b图示了mg 300,其中一些mg节点302被指示为绕过,这是因为业务需要围绕其流动。例如,表示网络节点u41和u42的mg节点302d被标记为绕过,因为路径230a不包括u41或u42,且路径230a上的业务因此围绕u41和u42流动。mg节点302e、302f以及302g也被标记为绕过。mg 300指示具有有向边缘的被绕过的节点。从mg节点302c到mg节点302f的有向边缘绕过mg节点302d和302e。mg节点302d和302e因此被标记为绕过。控制器108因此可以通过遍历mg 300并且标识具有围绕其的有向边缘的mg节点来标识被绕过的mg节点302。
57.理解被绕过的节点的另一种方式是考虑在s42在sid堆栈顶部接收到具有u41或u42的节点sid的分组的情况下,s42将会做什么。s42将分别在链路s42-》u41和s42-》u42上
发送出业务。且这些方向上的这些链路不是用于保持业务的多路径的路径上的链路。因此,查看mg中的被绕过的mg节点成为一种消除候选而无需在网络节点的所有对之间进行完整的ecmp最短路径计算的高效方式,其中一个网络节点在被绕过的mg节点中,而另一个网络节点在一些其他mg节点中。
58.通过分析从源mg节点302a的所表示的网络节点到非绕过mg节点302中的所表示的节点的最短多路径,可以消除更多的候选。如果此类最短多路径不被包含在多路径解决方案中(此处为路径230),那么这种mg节点302不是候选。这从候选列表中消除了mg节点302h和302i,这是因为从u11到s32或s31的最短路径遍历网络节点s21和s22,并且这些路径不是路径230(多路径)中的任何一条路径。
59.图3d图示了在候选sid列表的迭代生成中的步骤。在已经从考虑中消除了mg节点302d到302i后,在这种情况下,控制器108可以应用贪婪启发法来选择与mg源节点302a的距离最远的剩余mg节点302c。mg节点302c表示包括网络节点s41和s42的任播组224(在该示例中具有标识符“s4”)。这些中的每一个对应于进行中的候选sid列表的候选sid。因为进行中的列表是空的,所以控制器108创建进行中的两个候选sid列表,一个候选sid列表由列表350a到350b组成,且一个候选sid列表是列表350c,控制器108将相应的s41(其节点sid)、s42(其节点sid)以及s4(组224的任播sid)分段添加到这些列表。参考图2b,可以看出根据进行中的候选sid列表350a到350c中的任何候选sid列表转发的业务将到达任播组224并且涵盖多路径内到达任播组224的所有路径。
60.图3e图示了另一启发法的应用,通过该启发法,因为任播组224中的所有网络节点都由mg节点302c连同任播组224一起表示,即,在任播组224之外不存在其他网络节点119,所以控制器108应用任播组224的任播sid的偏好。控制器108因此可以丢弃列表350a和350b以支持优选列表350c。
61.图3e图示了另一启发法的应用,通过该启发法,因为任播组224中的所有网络节点都由mg节点302c连同任播组224一起表示,即,在任播组224之外不存在其他网络节点119,所以控制器108应用任播组224的任播sid的偏好。控制器108因此丢弃列表350a和350b。
62.尽管mg节点302b和302c都产生候选以开始进行中的最小sid列表,但所应用的可选偏好是sid列表中的最少sid。mg节点302c因此产生比mg 302b更好的候选,这是因为其覆盖了更多的多路径。sid列表的一个候选开始是具有从s41的节点sid和s42的另一节点sid开始的一个sid列表。由于s41和s42在具有标识符s4的相同任播组224中,因此sid列表的另一候选开始是从s4开始的单个sid列表。当在更靠近源的mg节点302中不存在任播组的其他成员时,该任播选项可以仅为候选。如果是这种情况,那么任播组的这些较早成员将捕获业务并且将其发送于多路径之外的路径上。因此,当mg节点302表示一个或多个网络节点119中的多个网络节点时,控制器108可以生成进行中的sid列表以包括用于由mg节点302表示的至少一个网络节点119的任播sid。控制器108排除被绕过的mg节点。控制器108可以排除“不包含”的mg节点302,即,不包括从源网络节点到由mg节点302表示的节点的最短路径的mg节点302。
63.图3e还图示了网络212的子网络,该子网络仅示出了用于到达s4的多路径的初始方面(组224)。包括路径230的所有子路径。路径的子路径是路径的一条或多条连接链路的任何集合。
64.图3f图示了在生成进行中的候选sid列表时的下一个迭代步骤。剩余任务是计算(多个)sid列表的扩展以覆盖剩余多路径。为此,考虑了s41和s42的视角。控制器108将剩余步骤的mg 300的剩余部分重新组织成两个mg(或生成新mg),一个mg来自s41且一个mg来自s42。针对仍在进行的列表350c,控制器108计算路径230的新mg,此次以任播sid s4(组224)中的每个网络节点119为根。即,每个所到达的网络节点119是新mg的根。因此,mg 320a以s41为根,且因此,mg 320b以s42为根。这两个mg 320a、320b中的所有mg节点都是候选,没有一个被绕过,并且都精确地包含其所表示的网络节点119之间的最短多路径。
65.图3g图示了兼容的候选组合340和342。当进行中的(多个)sid列表到达多个节点并且存在多个mg时,如同mg 320a和320b,控制器可以选择mg节点的兼容候选组合,从每个mg中选择一个。最简单的种类的兼容性是包含完全相同的网络节点的候选集合。在该示例中,如所示出,存在两个此类兼容组合340和342。这是简单示例,针对每个兼容组合,在每个兼容组合的每个成员中都存在单个相同的网络节点:s32或u31。在这种情况下,可以使用节点sid扩展sid列表以扩展进行中的sid列表。图3h图示了贪婪启发法的应用,其中控制器108选择与mg 320a、320b的源mg节点(即,表示u31的mg 320a、320b的相应mg节点)的距离更远的兼容mg节点。
66.任播组实现了更复杂的兼容组合。如果组合中的所有网络节点都在相同任播组中并且任播组的成员没有出现在将被进行中的sid列表的扩展覆盖的子多路径中,那么控制器108可以使用任播sid来扩展进行中的sid列表。
67.第二种更复杂的情况是每个mg节点都包含相同的网络节点集合的组合。在这种情况下,我们可以通过复制sid列表并使用集合中每个节点的节点sid扩展sid列表来扩展进行中的sid列表。
68.图3h还示出了网络212的子网络,其说明u31的分段将达到将多路径的所有路径扩展到u31。因为u31是目的地,所以这完成了多路径,因此,进行中的更新后的sid列表360c从具有u31的sid的350c更新。
69.图4a到图4c是图示了用于计算满足分段路由(sr)策略的多路径解决方案中的路径230(具有图2a到图2b的修改后的网络212)中的每条路径的分段标识符(sid)列表的进程的框图。已经通过将链路201g的度量从70改变为170来修改图4a中的网络212。因此,从任播组224到u31的最短路径不再经由链路201g而是经由s21和s22。这致使分别以s41、s42为根的mg 420a、420b的先前兼容的mg节点“不包含”作为候选mg节点的考虑并且从作为候选mg节点的考虑中排除。因此,控制器108必须使用邻接sid迫使业务通过承载多路径的链路201g。为了具有链路201g的邻接sid,邻接的入口s42也必须是sid。
70.换言之,有时需要使用邻接sid来迫使业务进入昂贵链路。采用站点233与234之间的第二链路的度量也设置为170的先前示例,可以看出从s41和s42到s32和u31的所有最短多路径转向不在所请求的多路径中的链路。由于邻接sid是不可路由的,因此节点sid可以在邻接sid之前,这些节点sid使业务到达具有邻接的节点。将s42、s42到s32添加到sid列表将覆盖突出显示的子多路径,但任播s4会将一些业务定向到s42,这可能无法同时弹出s4和s42,这取决于sr实现。
71.图4c图示了以上问题的两种解决方案,具有2个sid列表472a、472b的第一种解决方案以及具有使用邻接集合(从站点231(“s1”)到站点232(“s2”)的所有邻接)的单个sid列
表的第二解决方案。
72.控制器108可以使用一个或多个基于约束的路径计算算法(例如受约束的最短路径优先或cspf)来计算计算路径230,该路径计算算法需要任何可接受的路径来满足所定义的约束的集合,诸如在控制器108计算计算路径230的sr策略中指定的那些策略约束。根据本文中所描述的技术,控制器108可以计算计算路径230以满足带宽约束,使得最短路径的类集的可用带宽足以满足sr策略的带宽量,如由带宽约束所指示。
73.根据满足带宽约束的多路径,利用sid列表计算解决方案的控制器108可以将sid列表安装到网络112中以供网络节点19用于转发被引导到sr策略的业务。
74.图5是图示了根据本公开的技术的示例控制器的框图。控制器512可以表示控制器108的示例实现。例如,控制器512可以是或实现wan控制器、软件定义网络(sdn)控制器和/或路径计算元件。
75.一般而言,控制器512的路径计算模块514和路径提供模块518可以使用这些协议来实例化网络中的路径计算客户端(例如路由器)之间的路径。南向api 532允许控制器512使用例如isis、ospfv2、bgp-ls以及pcep协议与sr启用网络节点和其他网络节点(例如网络的路由器和交换机)通信。通过提供网络中的全局网络状态和带宽需求的视图,控制器512能够计算最佳路径并提供网络以使用sr范例中的sid列表进行转发。
76.在一些示例中,应用服务向控制器512发出对请求由控制器512控制的路径计算域中的路径的路径请求。例如,路径请求包括所需带宽或其他约束以及表示接入节点和边缘节点的两个端点,该接入节点和边缘节点通过由控制器512管理的路径计算域通信。路径请求可以进一步指定路径必须可操作的时间/日期和cos参数(例如某些路径的每种类别所需的带宽)。
77.控制器512接受来自应用服务的路径请求以在路径计算域内的端点之间建立路径。可以针对不同的时间和日期以及不同的带宽要求请求路径。控制器512基于所请求的路径参数和所预期的网络资源可用性来调和来自应用服务的路径请求以将所请求的路径复用到路径计算域上。
78.为了智能地计算和建立通过路径计算域的路径,控制器512包括拓扑模块516以维护描述路径计算域的可用资源的拓扑信息(例如业务工程数据库),包括接入、聚合和边缘节点、其接口以及互连通信链路。
79.控制器512的路径计算模块514计算通过路径计算域的所请求的路径。一般而言,路径是单向的。在计算路径后,路径计算模块514调度路径以供路径提供模块518提供。计算路径包括可由路径提供模块518用于在网络中建立路径的路径信息。在提交路径以提供分组传输之前,提供路径可能需要路径验证。
80.分布式wan控制器的其他示例细节可以在名称为“软件定义网络控制器(software defined network controller)”的美国专利9,450,817中找到,该专利的全部内容通过引用的方式并入本文中。这仅仅是一个示例,并且控制器512可以以其他方式计算和提供路径。
81.在该示例中,控制器512包括呈北向应用编程接口(api)530和南向api(532)形式的北向接口和南向接口。北向api 530包括方法和/或可访问的数据结构,如上文所提及,应用服务可以通过这些方法和/或可访问的数据结构配置和请求路径计算并查询路径计算域
内的已建立的路径。南向api 532包括方法和/或可访问的数据结构,控制器512通过这些方法和/或可访问的数据结构接收路径计算域的拓扑信息并通过访问和编程路径计算域内的聚合节点和/或接入节点的数据面来建立路径。
82.路径计算模块514包括用于存储路径信息以用于计算和建立所请求的路径的数据结构。这些数据结构包括具有sr策略约束534的sr策略533、路径要求536、操作配置538以及路径导出540。应用可以调用北向api 530以安装/查询来自这些数据结构的数据。sr策略约束534包括描述路径计算的外部约束的数据。
83.使用北向api 530,网络操作员可以配置sr策略533。sr策略533中的任何sr策略可以指定一个或多个sr策略约束534,该sr策略约束534将sr策略的可接受的路径限制为满足策略约束的路径。根据本公开的技术,sr策略533指定针对sr策略533中的给定sr策略的带宽约束。路径引擎544计算sr策略的一条或多条路径以共同满足sr策略的约束534中的任何带宽约束。
84.应用可以修改链路的属性以影响所产生的业务工程计算。在此类情况下,链路属性可以覆盖从拓扑指示模块550接收到的属性并且在拓扑中的节点/伴随端口的持续时间内保持有效。链路编辑消息可以由控制器512发送。
85.操作配置538表示数据结构,该数据结构向控制器512提供配置信息以相对于例如服务类别(cos)描述符和迂回行为配置路径计算算法。操作配置538可以根据ccp接收操作配置信息。例如,操作配置消息指定cos值、队列深度、队列深度优先级、调度规则、过度提供因素、迂回类型、路径故障模式以及迂回路径故障模式。单个cos配置文件可以用于整个路径计算域。指派给服务类别的服务类别可以作为路径计算域的属性而独立于节点。
86.路径导出540表示接口,该接口存储当前在路径计算域中提交或建立的所有路径的路径描述符。响应于经由北向api 530接收到的查询,路径导出540返回一个或多个路径描述符。接收到的查询可以请求任何两个边缘与终止(多条)路径的接入节点之间的路径。在一些示例中,路径描述符可以由应用用于在边缘和终止(多条)路径的接入节点处建立转发配置。路径描述符可以包括显式路由对象(ero)。响应于来自感兴趣方的查询,可以发送路径描述符或“路径信息”。路径导出消息传递路径信息,包括路径类型(主要或迂回);每个cos值的带宽。响应于接收到路径描述符,接收设备可以使用rsvp-te将mpls lsp从路径的入口用信号通知给出口。
87.路径要求536表示接口,该接口接收对要由路径计算模块514计算的路径的路径请求并且向路径引擎544提供这些路径请求(包括路径要求)以供计算。路径要求536可以由控制器接收或可以由控制器处置。在此类情况下,路径要求消息可以包括路径描述符,该路径描述符具有终止指定路径的节点的入口节点标识符和出口节点标识符以及包括cos值和带宽的请求参数。路径要求消息可以添加到指定路径的现有路径要求或从指定路径的现有路径要求中删除。
88.拓扑模块516包括拓扑指示模块550以处置拓扑发现并且在需要时维护控制器512与路径计算域的节点之间的控制信道。拓扑指示模块550可以包括用于向路径计算模块514描述接收到的拓扑的接口。
89.拓扑指示模块550可以使用拓扑发现协议来向路径计算模块514描述路径计算域拓扑。在一个示例中,使用用于拓扑发现的云控制协议机制,拓扑指示模块550可以接收节
点邻居列表,其中每个邻居包括节点标识符、本地端口索引和远程端口索引以及链路属性列表,例如,该链路属性分别指定端口索引、带宽、预期传输时间、共享链路组以及命运共享组。
90.拓扑指示模块550可以与拓扑服务器(诸如路由协议路由反射器)通信,以接收网络的网络层的拓扑信息。拓扑指示模块550可以包括路由协议进程,该路由协议进程执行路由协议以接收路由协议通告,诸如开放式最短路径优先(ospf)或中间系统到中间系统(is-is)链路状态通告(lsa)或边界网关协议(bgp)update消息。在一些情况下,拓扑指示模块550可以是既不转发路由协议通告也不创建路由协议通告的无源侦听器。在一些情况下,拓扑指示模块550可以备选地或附加地执行拓扑发现机制,诸如用于应用层业务优化(alto)服务的接口。拓扑指示模块550因此可以接收由拓扑服务器(例如alto服务器)收集到的拓扑信息的摘要,而非执行路由协议以直接接收路由协议通告。
91.在一些示例中,拓扑指示模块550接收包括业务工程(te)信息的拓扑信息。拓扑指示模块550可以例如执行具有te扩展的中间系统到中间系统(is-is-te)或具有te扩展的开放式最短路径优先(ospf-te)以接收用于通告链路的te信息。这种te信息包括以下一项或多项:链路状态、管理属性以及度量,诸如可用于连接路径计算域的路由器的链路的各种lsp优先级级别的带宽。在一些情况下,指示模块550执行bgp-te以接收用于自主系统间链路和其他网络外链路的通告te信息。
92.业务工程数据库(ted)542针对构成控制器512到计算机可读存储介质(未示出)的路径计算域的网络存储由拓扑指示模块550接收到的拓扑信息。ted 542可以包括一个或多个链路状态数据库(lsdb),其中链路和节点数据在路由协议通告中接收、从拓扑服务器接收和/或由链路层实体(诸如重叠控制器)发现,然后向拓扑指示模块550提供。在一些情况下,操作员可以经由客户端接口在mt ted542内配置业务工程或其他拓扑信息。
93.路径引擎544以ted 542的形式接受路径计算域的当前拓扑快照,并且使用ted 542计算节点之间的cos感知业务工程路径,如由配置的节点特定策略(约束534)和/或通过经由api与外部模块动态联网所指示的。路径引擎544还可以根据配置的故障转移和容量要求(如分别在操作配置538和路径要求536中所指定的)在每cos的基础上计算所有主要路径的迂回。
94.一般而言,为了计算所请求的路径,路径引擎544基于ted 542和所有指定的约束来确定在层中是否存在在所请求的时间的持续时间内满足所请求的路径的te规范的路径。路径引擎544可以使用dijkstra约束的spf(cspf)546路径计算算法来标识通过路径计算域的合适路径。如果不存在te约束,那么路径引擎544可以恢复到spf。如果存在针对所请求的路径的合适的计算路径,那么路径引擎544向路径管理器548提供计算路径的路径描述符以使用路径提供模块518建立路径。由路径引擎544计算的路径可以被称为“计算得到的”路径。如下文进一步详细描述的,路径引擎544可以确定由路径引擎544针对sr策略533中的sr策略计算的多条路径的sid列表。
95.路径管理器548使用路径提供模块518建立计算得到的调度路径,在这种情况下,该路径提供模块518包括转发信息库(fib)配置模块552(图示为“fib配置552”)、策略器配置模块554(图示为“策略器配置554”)以及cos调度器配置模块556(图示为“cos调度器556”)。
96.fib配置模块552对将信息转发给路径计算域的聚合节点或接入节点的数据面进行编程。聚合节点或接入节点的fib包括mpls交换表、每个主要lsp的迂回路径、每接口的cos调度器以及lsp入口处的策略器。fib配置模块552可以实现例如软件定义网络(sdn)协议(诸如openflow协议或i2rs协议)以提供和引导节点将转发信息安装到其相应数据面。因此,“fib”可以指例如呈一个或多个openflow流表形式的转发表,该openflow流表分别包括指定匹配分组的处置的一个或多个流表条目。fib配置模块552可以另外或备选地实现其他接口类型,诸如简单网络管理协议(snmp)接口、路径计算元件协议(pcep)接口、设备管理接口(dmi)、cli、至路由系统(i2rs)的接口或任何其他节点配置接口。fib配置模块接口62与聚合节点或接入节点建立通信会话以安装转发信息以接收路径建立事件信息,诸如接收到的转发信息已经成功安装或接收到的转发信息无法安装(指示fib配置失败)的确认。
97.fib配置模块552可以根据从路径计算模块514接收到的信息添加、改变(即,隐式添加)或删除转发表条目。从路径计算模块514到fib配置模块552的fib配置消息可以指定事件类型(添加或删除);节点标识符;路径标识符;一个或多个转发表条目,该转发表条目分别包括入口端口索引、入口标签、出口端口索引以及出口标签;以及指定路径标识符和cos模式的迂回路径。
98.策略器配置模块554可以由路径计算模块514调用以请求将策略器安装在特定聚合节点或接入节点上以用于特定lsp入口。如上文所提及,聚合节点或接入节点的fib包括lsp入口处的策略器。策略器配置模块554可以接收策略器配置请求。策略器配置请求消息可以指定事件类型(添加、改变或删除);节点标识符;lsp标识符;并且,针对每种服务类别,包括cos值、最大带宽、突发以及丢弃/评论的策略器信息列表。fib配置模块552根据策略器配置请求来配置策略器。
99.cos调度器配置模块556可以由路径计算模块514调用以请求在聚合节点或接入节点上对cos调度器的配置。cos调度器配置模块556可以接收cos调度器配置信息。例如,调度配置请求消息可以指定事件类型(改变);节点标识符;端口身份值(端口索引);以及指定带宽、队列深度以及调度规则的配置信息。
100.路径引擎544可以计算满足分段路由(sr)策略的多路径解决方案中的每条路径的分段标识符(sid)列表。路径提供模块518可以向sr启用网络节点输出sid列表以提供网络来沿着多路径转发业务。
101.拓扑指示模块550可以接收由控制器512管理的网络的网络拓扑已经改变为修改后的网络拓扑的指示。例如,该指示可以是对链路状态的更新,该更新指示链路断开(或接通)、具有不同的带宽可用性或带宽状态、具有不同度量或颜色、具有不同的共享风险链路或对链路状态的其他改变。该指示可以是例如影响多条不同链路的链路状态的失败网络节点的指示。拓扑模块516可以用基于由拓扑指示模块550接收到的指示修改的修改后的拓扑来更新业务工程数据库542。
102.控制器512包括硬件环境,该硬件环境包括用于执行机器可读软件指令以实现模块、接口、管理器以及相对于控制器512示出和描述的其他组件的处理电路系统551。这些组件可以单独利用软件或硬件来实现或可以被实现为软件、硬件或固件的组合。例如,控制器512可以包括一个或多个处理器,该处理器包括执行呈软件指令形式的程序代码的处理电路系统551。在那种情况下,各种软件组件/模块可以包括存储在计算机可读存储介质(诸如
计算机存储器或硬盘(未示出))上的可执行指令。
103.图6是更详细地图示了路径引擎544的示例实现的框图。路径引擎544可以在网络堆栈的不同层执行各种路由协议670。路径引擎544负责维护路由信息660以反映网络的当前拓扑。路由信息660可以包括ted 542和lsdb 680。具体地,路由协议周期性地更新路由信息660以基于由控制器512接收到的路由协议消息来准确地反映网络和其他实体的拓扑。协议可以是在一个或多个处理器上执行的软件进程。例如,路径引擎544包括在网络堆栈的网络层操作的网络协议,该网络协议通常被实现为可执行软件指令。操作可以重叠,或替代地,由拓扑模块516执行。
104.协议670可以包括边界网关协议(bgp)671以在网络中的路由域之间交换路由和可达性信息并且包括bgp-ls 672以在网络中的路由域之间交换业务工程和分段路由策略信息。协议670还可以包括igp 673以交换链路状态信息并且支持在路由域中的每个路由域内的路由器之间转发分组或其他数据单元。在一些示例中,igp 673可以包括实现用于在路由域内交换路由和可达性信息的igp的is-is路由协议。igp 673可以包括支持业务工程的is-is扩展。在一些示例中,协议670可以包括ospf组件和is-is组件两者。
105.协议670还可以包括配置协议。例如,协议670可以包括pcep 674或netconf。
106.路径引擎544包括sr组件676以实现本文中所描述的技术,以生成多路径的sid列表,该sid列表被计算以满足指定带宽约束的sr策略。sid列表686包括一个或多个sid列表,该sid列表可以由控制器518提供给网络以用于分段路由。入口路由器可以通过在分段路由报头或mpls标签堆栈中为分组附加sid标签堆栈来使用sid通过受控指令集(被称作分段)引导分组。协议670可以包括其他路由协议(未示出),诸如标签分布协议(ldp)、具有业务扩展的资源保留协议(rsvp-te)、路由信息协议(rip)或其他网络协议。
107.在该示例中,路径引擎544包括命令行界面(cli)678,该命令行界面678为网络操作员(或其他管理员或计算代理)提供访问以监测、配置或以其他方式管理路径计算,并且在一些情况下,监测、配置或以其他方式管理sr策略。管理员可以经由cli 678配置控制器512的方面,包括与路由以及计算和提供多路径的sid列表相关的方面。cli 678(和/或北向api 530)可以启用指定源、目的地、用户约束、偏好、sr策略以及其他可配置信息。代替北向api 530或除了北向api 530之外,可以使用cli 678。
108.图7是图示了根据本公开的一种或多种技术的计算设备的示例操作的流程图。计算设备可以是控制器108或518的计算设备或本文中所描述的其他控制器,或可以表示网络节点,诸如用于sr策略的头端或入口路由器。然而,流程图是相对于控制器108来描述的。如从图7的示例中可看出,控制器108可以获得通过包括一个或多个网络节点119的网络212的多条路径230,多条路径230中的每条路径表示将网络节点的对从源网络节点连接到目的地网络节点的不同链路序列(700)。路径230可以用于实现sr策略。接下来,控制器108可以计算满足多条路径中的每条路径的一个或多个分段标识符(sid)列表(705)。在一些示例中,sid列表中的任何sid列表本身满足多条路径中的每条路径。然而,在一些示例中,sid列表可以共同(不一定需要单独)满足所有路径。在一些情况下,控制器通过基于链路的度量计算以源网络节点119为根的等距度量图来计算一个或多个sid列表,该等距度量图包括度量图节点和表示链路的有向边缘,度量图节点中的每个度量图节点表示一个或多个网络节点119中的至少一个网络节点119,基于在多条路径230中表示的链路的度量,该网络节点119
沿着多条路径230中的至少一条路径与源网络节点具有相同距离。接下来,控制器108可以至少基于一个或多个sid列表来对网络112进行编程以转发网络业务(710)。
109.根据本公开的技术,计算设备可以执行步骤700以获得、实现sr策略、通过网络的多条路径以满足针对sr策略指定的带宽约束。
110.图8是图示了根据本公开的技术的由计算设备执行的用于计算候选sid列表以实现多路径的示例操作的流程图。在计算设备获得描述多条路径的数据之后执行操作。数据可以使用链路、节点、接口或其某种组合来描述路径。
111.通过将inprogressset设置为[[]]并将candidates设置为[]来初始化操作(815)。inprogressset可以对应于在本文的其他地方所描述的进行中的候选sid列表。candidates可以是sid最小化问题(即,sid列表)的候选(candidate)解决方案,该候选解决方案满足(例如共同或单独地)多路径以实现sr策略。candidates中的每一个是一个或多个sid列表集合。
[0112]
在进入循环的下一个步骤中,如果并非inprogressset==[](即,其不为空,820的“否”分支),那么计算设备从inprogressset中删除inprogress并且将cand(idate)combos设置为inprogress的mg的兼容组合(825)。
[0113]
进程然后进入另一循环。如果并非candcombos==[](即,其为空的,820的“否”分支),那么计算设备从candcombos中删除combo并且将inprogressext设置为(用combo扩展的inprogress)(835)。如果inprogressext是完整的并且满足用户约束(840的“是”分支),那么计算设备将inprogressext添加到candidates(850)并循环回到(830)。如果inprogressext是不完整的或不满足用户约束(840的“否”分支),那么计算设备必须继续扩展进行中的该候选sid列表并因此将inprogressext添加到inprogressset(845)。计算设备循环到该内部循环的测试(830)。
[0114]
如果candcombos==[](830的“是”分支),那么计算设备循环回到(820)以确定是否存在附加的进行中的集合。如果inprogressset==[](空,820的“是”分支),那么计算设备通过评估准则对candidates进行排序(860),并且将排序后的candidates输出为sid列表以供网络用于在多路径上进行转发(865)。
[0115]
用户约束可以包括:
[0116]
·
无法执行多个弹出的网络节点
[0117]
·
网络节点最大sid深度(msd)限制(sid列表的长度)
[0118]
·
其他用户约束
[0119]
sid列表计算偏好的可配置准则可以包括:
[0120]
·
最小化sid列表长度
[0121]
·
最小化sid列表的数量
[0122]
·
sid类型偏好(例如前缀sid>节点sid>邻接sid)
[0123]
·
链路故障下的路径稳定性(例如偏好稳定路径)
[0124]
当计算sid列表时,可以对准则中的每个准则进行加权。
[0125]
一般而言,本文中所描述的sid计算算法列表可以应用启发法以:
[0126]
·
利用mg找到节点和任播选项
[0127]
·
提早生成可能较好的解决方案的贪婪启发法
[0128]
·
搜索以生成备选项
[0129]
·
基于准则进行评估
[0130]
·
并行化候选评估
[0131]
·
呈现和可视化备选项,让操作员选择
[0132]
图9a到图9b是图示了根据本公开的技术的示例网络拓扑的框图,控制器针对示例网络拓扑计算sr策略的多路径。系统900包括网络912,该网络912可以是图1的网络112的示例。
[0133]
网络912类似于图2a到图2b的网络212。然而,链路201h在网络912中具有度量70。网络912包括u11与s12之间以及s32与u31之间的两条并行链路。网络912包括附加链路201k,此s12和s42具有带相同度量的并行链路。网络912包括附加链路201l,此s42和s32具有带相同度量的并行链路。
[0134]
网络912具有100g的默认带宽。即,除非另外说明,否则每条链路都具有100g的带宽。链路201c具有50g的带宽以偏离默认带宽。链路201中的一些链路在网络912中具有红色或蓝色的管理颜色。网络912具有10的默认度量。即,除非使用大括号另外说明,否则每条链路具有10的度量。例如,链路201c具有30的度量(“{30}”)。控制器108获得网络912的拓扑信息。控制器108可以使用网络912的拓扑信息来构建网络912的网络拓扑模型。
[0135]
网络操作员可以用sr策略配置控制器108。为了描述根据本公开的技术的示例路径计算,sr策略包括以下约束:排除红色(路径不应包括具有红色的管理颜色的链路)、u11到u31(路径从源u11到目的地u31)。sr策略还包括200g的带宽约束,以指示sr策略的一条或多条计算路径集合必须共同具有200g的可用带宽。
[0136]
控制器108可以使用各种方法确定链路201中的一条链路的可用带宽。例如,控制器108可以获得指示链路201中的每条链路的可用带宽或总带宽的链路数据。链路数据可以是链路接口的配置数据。控制器108可以使用pcep或其他协议向网络节点查询链路201的带宽保留信息。例如,控制器可以向s11查询连接到s11的链路201c的带宽保留信息。控制器108可以基于所获得的带宽保留信息来确定链路201的可用带宽。针对该示例,可用带宽如图9a到图9b中所指示。
[0137]
控制器108通过构建链路的网络图以排除红色链路(201a、201b、201i、201j)来计算sr策略的最短路径。网络图包括链路度量,并且控制器108还将初始值为0的链路带宽溢出度量指派给每条链路。为了计算从u11到u31a的最短路径,控制器108使用组合度量,该组合度量是策略度量和链路带宽溢出度量的组合。该组合可以是简单总和、加权总和或一些其他组合以计算要在最短路径计算中使用的链路的度量值。在图9a到图9b中使用括号来图示链路带宽溢出度量(例如“[0]”)。
[0138]
在计算路径时,控制器108不应用针对sr策略的带宽约束作为最短路径算法中的约束。最短路径是计算路径930a到930b。计算路径930b遍历并行链路并且是两条单独的计算路径,总共3条最短路径。
[0139]
控制器108然后计算使每条路径满足带宽约束所需的带宽量。一般而言,在每个节点处的业务百分比是已知的,并且使用ecmp(可选地加权)将该业务百分比映射到传出链路。在该示例中,控制器108简单地将带宽量计算为带宽约束(200g)除以路径数量(3)的商:(200g/3)
→
约66g。针对每条路径,控制器108将路径所需的该带宽量与路径中的每条链路
的可用带宽进行比较。如果路径所需的带宽超过量超过路径中链路的可用带宽,那么计算得到的最短路径集合不是针对带宽约束的合适的解决方案。在该示例中,具有50g的可用带宽的链路201c不具有足以支持约66g的可用带宽,该可用带宽将使用ecmp由在3条路径之间的u11进行平均分配。据称链路201c具有带宽溢出,即,链路201c的带宽不足以满足需要在链路201c上传输的多路径的带宽。因此,计算路径930b不能用作路径,并且计算路径930的集合(作为该示例sr策略的潜在多路径解决方案)不满足带宽约束,因此不能用于实现sr策略。
[0140]
然而,控制器108并未简单地从计算得到的最短路径集合中删除计算路径930b以到达计算得到的最短路径(即,930a)的不同集合。在相同链路上存在一些最短路径的重叠的情况下,这可以是不可能的。相反,控制器108针对不具有足够的可用带宽(该可用带宽足以支持由包括链路的路径在链路上进行的预期带宽使用)的任何链路增加链路带宽溢出度量。在该示例中,控制器108将链路201c的链路带宽溢出度量从0增加到1。控制器108可以简单地将链路带宽溢出度量增量1或另一数量,或可以应用确定给定链路201的链路带宽溢出度量增加量的策略。图9b图示了具有链路带宽溢出度量[1]和策略度量{30}的链路201c。
[0141]
因为链路中的一条链路发生了溢出,所以控制器108再次计算最短路径集合,此次使用具有链路201c的增加链路带宽溢出度量的更新后的网络图。链路201c的组合度量现在大于链路201k和链路201d的组合度量。因此,包括链路201c的先前的计算路径930b长于仍然是最短路径的路径——计算路径930a——并且不再是计算得到的最短路径950的路径中所包括的最短路径,这些路径是计算路径950a。与计算路径930a一样,计算路径950a遍历并行链路并且是两条单独的计算路径。使用与上文所描述的类似的进程,控制器108确定两条计算路径中的每条计算路径都需要100g来支持带宽约束。计算路径950的所有链路具有100g的默认带宽,因此具有支持带宽约束所需的带宽。因此,控制器108可以在网络912中提供计算路径950。在一些示例中,这包括确定一个或多个sid列表以实现计算路径950。在一些示例中,这包括应用本文中所描述的sid最小化技术来确定一个或多个sid列表以实现计算路径950。控制器108然后可以将一个或多个sid列表提供给u11,该u11在计算路径950之间负载平衡被引导到sr策略的业务。控制器108可以将指示对应sid列表的对应srh添加到在所选择的路径上转发的每个分组。
[0142]
图10是图示了根据本公开的一种或多种技术的计算设备的示例操作的流程图。例如,计算设备可以是控制器108、控制器512或网络节点19中的一个或多个网络节点。
[0143]
如从图10的示例中可看出,计算设备最初可以为包括一个或多个网络节点的分段路由启用网络的链路创建度量集合(1000)。针对每条链路,度量集合包括链路带宽溢出度量和策略度量(例如igp度量)。计算设备最初将每条链路的链路带宽溢出度量设置为0(1002)。针对sr策略,计算设备基于链路带宽溢出度量和链路的策略度量的组合,使用每条链路的组合度量来计算基于约束的最短多路径(1004)。例如,出于计算构成潜在倍数的最短路径集合的目的,链路度量可以是组合度量,该组合度量是链路带宽溢出度量和策略度量的总和。
[0144]
计算设备然后基于带宽约束来计算最短路径集合中的每条链路的所需带宽(1006)。为了计算链路所需的带宽,计算设备可以考虑使用具有对应链路的多条并行子路径的路径;使用相同链路的多条路径;等。例如,所需带宽是基于负载平衡由带宽约束使用
ecmp或加权ecmp在计算路径集合上指定的总带宽。
[0145]
针对每条链路(1012的“是”分支),如果存在带宽溢出(908的“是”分支),那么计算设备增加链路的链路带宽溢出度量(1010)。因此,在该迭代期间,多条链路可以具有增加的链路带宽溢出度量。
[0146]
如果不存在更多的链路(1012的“否”分支),计算设备确定最短路径中的一条最短路径中的任何链路是否具有带宽溢出(1014)。如果在步骤1004中针对迭代计算的最短路径的链路上存在带宽溢出,那么计算设备可以通过设置和读取用于迭代的带宽溢出标记来进行此操作。如果已经存在带宽溢出(1014的“是”分支),那么计算设备通过返回到步骤1004并基于链路的修改后的组合度量计算基于约束的最短多路径来尝试找到新解决方案。如果尚不存在带宽溢出(1014的“否”分支),那么计算设备在找到解决方案的情况下(1016的“是”分支)提供计算得到的最短路径集合的多路径解决方案(1018)。如果计算设备无法找到满足带宽约束的多路径解决方案(1016的“否”分支),那么计算设备可以输出指示失败sr策略的通知(1020)。
[0147]
图11是图示了根据本公开的一种或多种技术的计算设备的示例操作的流程图。例如,计算设备可以是控制器108、控制器512或网络节点19中的一个或多个网络节点。
[0148]
在一些情况下,计算设备可以接收具有多个源和多个目的地的sr策略(1050)。在此类情况下,计算设备创建初始地空的多路径阵列(1052)。针对每个源,计算设备可以计算从源节点到目的地节点的带宽约束的最短多路径(1054)。例如,可以使用由图10的流程图图示的操作来执行步骤1054。计算设备将对应于源的多路径阵列的元件设置为带宽约束的最短多路径(1056)。在计算来自源的多路径之后,减少链路带宽。为了考虑计算得到的多路径的带宽使用,计算设备使用由来自源的多路径使用的带宽来更新链路带宽(1058)。计算设备可以针对每个源执行步骤1054、1056、1058,或至少直到确定链路的带宽不足以用于新的多路径为止(1060)。
[0149]
如果存在解决方案(962的“是”分支),那么计算设备可以将源的相应多路径提供给网络(1064)。如果计算设备无法找到解决方案(1062的“否”分支),那么计算设备可以输出指示失败sr策略的通知(1066)。
[0150]
本文中所描述的技术可以利用硬件、软件、固件或他们的任何组合来实现。被描述为模块、单元或组件的各种特征可以在集成逻辑设备中一起实现,或单独实现为离散但可互操作的逻辑设备或其他硬件设备。在一些情况下,电子电路系统的各种特征可以被实现为一个或多个集成电路设备,诸如集成电路芯片或芯片集。
[0151]
如果利用硬件实现,那么本公开可以涉及诸如处理器或集成电路设备(诸如集成电路芯片或芯片集)的装置。备选地或附加地,如果利用软件或固件实现,那么这些技术可以至少部分地通过包括指令的计算机可读数据存储介质来实现,该指令在被执行时使处理器执行上文所描述的方法中的一种或多种方法。例如,计算机可读数据存储介质可以存储此类指令以供处理器执行。
[0152]
计算机可读介质或计算机可读存储设备可以形成计算机程序产品的一部分,其可以包括封装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪速存储器、磁性或光学数据存储介质等。在一些示例中,制品可以包括一种或
多种计算机可读存储介质。
[0153]
在一些示例中,计算机可读存储介质可以包括非瞬态介质。术语“非瞬态”可以指示存储介质并不实施为载波或传播信号。在某些示例中,非瞬态存储介质可以存储可以随着时间变化的数据(例如在ram或缓存中)。
[0154]
代码或指令可以是由包括一个或多个处理器(诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成或离散逻辑电路系统)的处理电路系统执行的软件和/或固件。因此,如本文中所使用的术语“处理器”可以是指任何前述结构或适合于实现本文中所描述的技术的任何其他结构。此外,在一些方面中,可以在软件模块或硬件模块内提供本公开中所描述的功能性。