用于标签交换路径的多个路径计算的制作方法

文档序号:14098024阅读:453来源:国知局

本发明涉及计算机网络,并且更具体地,涉及计算机网络路径的路径计算。



背景技术:

网络内的路由装置(通常称为路由器)维护描述通过网络的可用路由的路由信息表。网络路由器维护描述通过网络的可用路由的路由信息。一旦接收到数据包,路由器就检查数据包内的信息并且根据路由信息转发该数据包。为了维护网络的准确表示,路由器根据一个或多个路由协议(诸如,内部网关协议(igp)或者边界网关协议(bgp))来交换路由信息。

术语“链路”通常用于指网络上的两个装置之间的连接。该链路可以是物理连接,诸如,铜线、同轴电缆、大量不同光纤线路中的任一个或者无线连接。此外,网络装置可定义“虚拟”或者“逻辑”链路,并且将虚拟链路映射至物理链路。换言之,虚拟链路的使用提供了抽象的程度。随着网络的规模和复杂性的增长,任何给定链路上的流量可能会接近链路的最大带宽容量,从而导致拥塞和丢失。

多协议标签交换(mpls)是用于设计互联网协议(ip)网络内的流量模式的机制。使用mpls,源设备可请求通过网络的路径,即,标签交换路径(lsp)。lsp定义了通过网络的不同路径,以将数据包从源设备传送到目标设备。将与特定lsp相关的短标签附于经由lsp穿过网络传输的数据包。沿着该路径的路由器协作执行mpls操作,以沿着所建立的路径转发mpls数据包。lsp可用于各种流量工程目的,包括带宽管理和服务质量(qos)。

流量工程可以针对各种目的而应用在网络内,诸如,围绕网络故障或拥塞链路来路由流量或者沿着特定路径穿过符合一组明确要求的网络来引导某些流量。历史上,mpls标签分布由诸如标签分布协议(ldp)、基于流量工程扩展的资源预留协议(rsvp-te)和标记边界网关协议(lbgp)来驱动。在2001年1月的l.anderson的“ldpspecification,”rfc3036,internetengineeringtaskforce(ietf)中描述了ldp的过程(通过该ldp过程,标签交换路由器(lsr)分布标签以支持沿着通常路由的路径转发mpls),其全部内容通过引证结合于本文中。rsvp-te使用诸如带宽可用性或者共享风险链路组(srlg)信息之类的约束信息来在资源抑制网络内计算并建立lsp。rsvp-te可使用通过诸如被扩展以承载流量工程信息的中间系统到中间系统(is-is)协议或者开放式最短路径优先(ospf)协议之类的链路状态内部路由协议累计的带宽有效性信息。

lsp的头端路由器通常被称为入口路由器,而在lsp的尾端处的路由器通常被称为出口路由器。入口路由器和出口路由器、以及沿着支持mpls的lsp的中间路由器一般被称为标签交换路由器(lsr)。待沿着lsp被转发的数据包的集合被称为转发等价类(fec)。对于每个lsp可以存在多个fec,但对于任何给定的fec可能只有一个活动的lsp。通常,fec定义包括lsp的目标ip地址,例如分配给lsp的出口路由器的ip地址。入口标签边缘路由器(ler)使用从出口ler传播的路由信息来确定lsp,为lsp分配标签,并且将标签附于fec的每个数据包。在本文中入口ler和出口ler可以称为“边缘路由器”、“边缘节点”或者“末端节点”。lsr使用mpls协议从下游lsr接收mpls标签映射并且向上游lsr发布mpls标签映射。当lsr从上游路由器接收mpls数据包时,它根据它的转发表中的信息切换mpls标签并且将该数据包转发至适当的下游lsr或者ler。出口ler从数据包移去标签并且根据基于非标签的数据包转发技术将数据包转发到它的目的地。

通常,沿着lsp的每个路由器维护将fec与入标签(incominglabel)和出标签(outgoinglabel)相关联的上下文。以此方式,当lsr接收到已打标签的数据包时,lsr可通过在上下文中执行查找将该标签(即,入标签)与出标签交换。lsr然后可沿着lsp将数据包转发到下一lsr或者ler。沿着lsp的下一路由器通常被称为下游路由器或者下一跳。

换言之,一旦通过ler将数据包映射到lsp上,沿着lsp的lsr基于附加于数据包的标签转发数据包而不是基于数据包目的地和lsr的路由信息独立进行转发决策。流量工程mplslsp(telsp)可以此方式用于定义和实现从源设备至目标设备的路径,该路径满足通过网络传输的某些流量的要求。

lsp必须满足的明确要求表示依据从源设备至目标设备的一组可能路径的约束。诸如可用带宽和链路属性/着色的这些约束引导执行最短路径优先算法的路径计算装置来为单个lsp计算关于约束的令人满意的路径。最短路径算法可包括dijkstra、bellman-ford、flood-fill或者另一spf算法。网络路由器然后建立与所计算的路径匹配的lsp,并且使用lsp以满足约束的方式转发流量。路径计算装置然后可为另一lsp计算令人满意的路径,然后再为另一lsp计算令人满意的路径等,直到路径计算装置不能将任何额外的lsp封装到网络中。

因此约束最短路径优先(cspf)表示用于流量工程系统的基本构建块,包括mpls和通用mpls(gmpls)网络。此外,因为继续为多个lsp进行基于约束的路径计算,所以当各个lsp被连续加载到网络上时,可用带宽减少。因此,大型网络中的基于约束的路径计算可能是复杂的、耗时的且耗费资源的操作。



技术实现要素:

通常,描述的技术用于为源节点与目标节点之间的一个或多个标签交换路径确定通过网络的多个路径的结果集。在一些实例中,所确定的路径被计算为广泛分离的以避免网络元件的重叠。将标签交换路径路由至网络的装置可从多个路径的结果集中进行选择以路由每个标签交换路径。响应于检测到沿着用于标签交换路径的路由路径的网络元件的故障,该装置可从包括已经确定的路径的结果集中选择新的路径。

在一些实例中,该技术包括使用递归算法计算多个路径的结果集以识别用于成本函数的局部最优的n个路径的集合。

在一些实例中,该技术包括使用启发式算法计算多个路径的结果集以识别用于成本函数的局部最优的n个路径的集合。

在一些实例中,该技术包括从所识别的多个路径集合中选择路径以用于路由标签交换路径或者其他业务流,并且将标签交换路径路由至所选择的路径。该技术进一步可包括将标签交换路径拆分在多个路径的集合中的两个或更多个路径上。

该技术可提供一个或多个优势。例如,多个路径可用于将流量在网络上更均匀地传播,或者在一个或多个网络元件发生故障的情况下,多个路径可用作待使用的预先计算的备用路径。预先计算备用路径可避免在检测到故障之后需要计算备用路径;相反,一旦检测到故障,就可以使用预先计算的路径。

在一个实例中,一种方法包括:针对通过网络拓扑中的多个链路相互连接的路由器的网络,路径计算装置确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2;通过路径计算装置获得用于一对节点的测试路径以及用于测试路径的总度量;通过路径计算装置从n个路径的第一集合中确定最差路径,所述最差路径具有的总度量劣于n个路径的第一集合的其他路径的相应总度量,其中,最差路径的总度量是n个路径的第一集合的最差成本;响应于确定测试路径的总度量小于最差成本,通过路径计算装置从n个路径的第一集合中去除最差路径并且将测试路径添加至n个路径的第一集合中以获得n个路径的第二集合;并且通过路径计算装置将用于n个路径的第二集合中的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

在另一实例中,一种方法包括:针对通过网络拓扑中的多个链路相互连接的路由器的网络,路径计算装置确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2;通过路径计算装置获得用于一对节点的测试路径以及用于测试路径的增量成本;通过路径计算装置从n个路径的第一集合中确定最差路径,所述最差路径具有的增量成本劣于n个路径的第一集合中的其他路径的相应增量成本,其中,最差路径的增量成本是n个路径的第一集合的最差增量成本;响应于确定用于测试路径的增量成本小于最差增量成本,通过路径计算装置将测试路径添加至n个路径的第一集合以获得n+1个路径的一个集合;并且响应于确定如果将n+1个路径的集合的最差成本路径从n+1个路径的集合中去除,、则所述最差成本路径将最大程度地降低n+1个路径的集合中的剩余路径的总成本,从n+1个路径的集合中去除最差成本路径以获得n个路径的第二集合;并且通过路径计算装置将用于n个路径的第二集合中的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

在一些实例中,路径计算装置包括:耦接至存储器的一个或多个处理器,其中,所述一个或多个处理器被配置为针对通过网络拓扑中的多个链路相互连接的路由器的网络,确定表示一对所述路由器的一对节点之间的n个路径的第一集合,其中,n>2,其中,所述一个或多个处理器被配置为获得用于所述一对节点的测试路径以及用于所述测试路径的总度量,其中,所述一个或多个处理器被配置为从所述n个路径的第一集合中确定最差路径,所述最差路径具有的总度量劣于所述n个路径的第一集合中的其他路径的相应总度量,其中,所述最差路径的总度量是所述n个路径的第一集合的最差成本,所述一个或多个处理器被配置为响应于确定所述测试路径的总度量小于所述最差成本,从所述n个路径的第一集合去除所述最差路径,并且将所述测试路径添加至所述n个路径的第一集合中以获得n个路径的第二集合,其中,所述一个或多个处理器被配置为将用于所述n个路径的第二集合中的至少一个路径的数据输出至所述网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

在一些实例中,路径计算装置包括:耦接至存储器的一个或多个处理器,其中,所述一个或多个处理器被配置为针对通过网络拓扑中的多个链路相互连接的路由器的网络,确定表示一对所述路由器的一对节点之间的n个路径的第一集合,其中,n>2;其中,所述一个或多个处理器被配置为获得用于所述一对节点的测试路径以及用于所述测试路径的增量成本,其中,所述一个或多个处理器被配置为从所述n个路径的第一集合中确定最差路径,所述最差路径具有的增量成本劣于所述n个路径的第一集合中的其他路径的相应增量成本,其中,所述最差路径的所述增量成本是所述n个路径的第一集合的最差增量成本,其中,所述一个或多个处理器被配置为响应于确定所述测试路径的增量成本小于所述最差增量成本,将所述测试路径添加至所述n个路径的第一集合以获得n+1个路径的一个集合,其中,所述一个或多个处理器被配置为响应于确定如果将所述n+1个路径的集合的最差成本路径从所述n+1个路径的集合中去除、则所述最差成本路径将最大程度地降低所述n+1个路径的集合中的剩余路径的总成本,从所述n+1个路径的集合中去除所述最差成本路径以获得n个路径的第二集合;以及其中,所述一个或多个处理器被配置为将用于所述n个路径的第二集合的至少一个路径的数据输出至所述网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

在附图和下面的描述中阐述了本发明的一个或多个实施方式的细节。本发明的其他特征、目标和优点从说明书和附图以及从权利要求书中将是清晰可见的。

附图说明

图1是示出了根据本公开技术的其中路径计算装置被配置为为标签交换路径(lsp)计算路径的网络系统的框图。

图2是示出根据本公开中描述的技术来确定两个边缘节点之间的n个路径的结果集的示例性操作模式的流程图。

图3是示出了根据本公开中描述的技术确定两个边缘节点之间的n个路径的结果集的示例性操作模式的流程图。

图4a-图4b描述了根据本公开中描述的技术计算两个边缘节点之间的多个路径集合的示例性操作模式的流程图。

图5是示出根据本公开中描述的技术确定局部最优的路径集合的启发式算法的流程图。

图6是示出了节点的网络以及根据本公开中描述的技术计算的一对节点之间的路径集合的框图。

图7是具有行的表格,各个行描述根据本公开中描述的技术计算的用于一对节点之间的网络的不同路径。

图8是示出了节点的网络以及根据本公开中描述的技术计算的一对节点之间的路径集合的框图。

图9是具有行的表格,各个行描述根据本公开中描述的技术计算的用于一对节点之间的网络的不同路径。

图10是示出了根据本文中描述的技术从n个路径的结果集中排序并选择一个或多个路径的示例性操作模式的流程图。

图11是示出了根据本公开中描述的技术使用n个路径集合将标签交换路径路由至网络的示例性操作模式的流程图。

图12是示出了根据本公开内容的技术的被配置为针对标签交换路径(lsp)计算路径的示例性路径计算装置的框图。

贯穿附图和文本,相同的参考符号表示相同元件。

具体实施方式

图1是示出了根据本公开技术的其中路径计算装置被配置为为标签交换路径(lsp)计算路径的网络系统的框图。在这个实例中,网络系统2包括控制器10以及多协议标签交换(mpls)网络6(“网络6”),该网络6具有通过网络链路9在示出的拓扑中相连的多个4a-4f(“路由器4”)。每对连接的路由器4可通过一个或多个网络链路9连接,每个网络链路表示具有相关总带宽的至少一个逻辑链路或物理链路。网络6的物理链路可包括例如以太网phy、同步光纤网(sonet)/同步数字系列(sdh)、拉姆达(lambda)、或者包括数据包传输能力的其他层2数据链路。网络6的逻辑链路可包括例如以太网虚拟局域网(vlan)、多协议标签交换(mpls)标签交换路径(lsp)、或者mpls流量工程(te)lsp。网络6的各种实例可包括数以百计甚至数以千计的路由器。此外,尽管本文中描述为路由器,但是路由器4可表示其他类型的转发装置,诸如,交换机、中继器、光交叉连接器(oxc)、光分插复用器(oadm)、多路复用装置、或者在转发包括光学数据的网络流量的网络6内的其他类型的装置。例如,路由器4可以是通过中间oxc光学连接的层3(l3)路由器。因此,本公开内容中描述的技术不仅可适用于数据包/标签交换流而且可适用于具有不同类型的接口开关的其他流类型,诸如基于拉姆达和基于时分复用(tdm)。

路由器4是由控制器10服务的路径计算域的成员。路径计算域可包括例如内部网关协议(例如,开放最短路径优先(ospf)或者中间系统到中间系统(is-is))区域、自治系统(as)、服务提供商网络内的多个as、跨多个服务提供商网络的多个as。在各种实例中,路由器4的不同组合可包括多个as的成员路由器。连接路由器4的网络链路因此可以是内部链路、as间传输链路、另一类型的网络链路、或者它们的一些组合。尽管示出并关于路由器进行了描述,但是本技术可适用于例如执行多协议标签交换(mpls)或者通用mpls(gmpls)的任何网络装置。

控制器10是使用从网络6的路由器4学习的流量工程信息21来应用约束的路径计算装置,以响应于来自任何路由器4的请求和/或对经由接口20接收的服务路径的请求来计算至少一个网络路径,并且将lsp18安装至网络6作为mpls流量工程lsp(或者,称为“telsp”)。控制器10可表示用于配置并管理网络6的高级控制器。控制器10可表示一个或多个通用服务器;用于计算路径的设备、控制器、或者其他专用装置;由计算装置执行的应用程序;为路由器管理的lsp计算路径的路由器4的分布式控制平面等。在一些情况下,控制器10的方面可分布在一个或多个真实或虚拟的计算装置中。以上列出的任何这种装置可以在网络中或者网络外。在2013年6月5日提交的题为“虚拟网络数据包流的物理路径的确定(physicalpathdeterminationforvirtualnetworkpacketflows)”的pct国际专利申请pct/us2013/044378中描述了用于软件定义网络的、可执行本文中描述的操作以计算路径和路由lsp的软件定义网络(sdn)控制器的实例细节,其全部内容通过引证结合于本文中。此外,尽管本文中关于控制器10进行了主要描述,但是本文中描述的路径计算和选择计算可通过任何一个或多个路由器4来执行,例如通过用于一个或多个lsp18的入口路由器4。

标签交换路径18(“lsp18”)表示诸如lsp数据库的数据结构,其存储待安装至网络6的lsp的定义。lsp中的每个lsp根据路由器4的源路由器和目标路由器、以及lsp所需带宽来定义lsp。在一些实例中,lsp定义可包括所定义的相应lsp的路由或者路径(至少部分地需要链路属性或排除链路属性),或者可影响相应lsp的路径的计算的相应lsp的其他约束。lsp18可包括用于具有不同的源路由器和目标路由器对、不同带宽要求、以及其他约束的lsp的lsp定义。lsp18中的lsp定义例如可指定路由器4a作为源路由器、路由器4g作为目标路由器,并且可为相应的lsp指定所需的带宽。管理员可通过配置来为lsp定义设置静态带宽,或者根据路由器4的自动带宽特征该带宽可以是动态的。如本文中使用的,术语“标签交换路径”可以指lsp定义,即,作为沿着特定路径在网络6中路由的lsp、通过标签信息部分定义的已安装lsp、或者这些定义的一些组合。

控制器10可呈现北向接口20,该北向接口20可由控制器的分级布置中的其他控制器或者由协调器、管理人员、应用程序、或者其他实体来调用,以请求被解析为lsp定义的服务路径,该lsp定义存储至lsp18并且通过lsp14、16在网络6中部分的实现。接口20可用于与诸如openstack的编排系统(orchestrationsystem)结合;接口20还可以或者可替换地由其他应用程序或者运营商的运营支撑系统(oss)/业务支撑系统(bss)使用。在一些情况下接口20可呈现restful应用编程接口(api)。

控制器10可包括从路由器4接收路径计算请求的路径计算元件(pce)。路径计算请求可包括用于lsp18的lsp定义,诸如,用于待计算的lsp的入口路由器和出口路由器、以及所需的带宽。响应于路径计算请求,控制器10可计算一个或多个路径并且在路径计算答复中将一个或多个计算路径提供至请求装置。控制器10可执行路径计算元件协议(pcep)以与路由器4通信路径计算请求/答复。在2014年11月11日发行的美国专利第8,885,463号中进一步描述了pcep,其全部内容通过引证结合于此。

为了获得流量工程信息21,控制器10可执行被扩展以携带流量工程信息的一个或多个网络路由协议,以监听携带这种流量工程信息的路由协议通告。流量工程信息可包括路由器4的节点和接口标识符;用于链路的每个优先级的管理权重和可用带宽;用于虚拟链路的lsp标识符和状态信息、以及用于计算流量工程lsp的路径的其他信息。控制器10可将流量工程信息存储至流量工程数据库(ted)23。

如以下更详细地描述的并且根据本文中描述的技术,示例性控制器10包括路径计算模块24,该路径计算模块24被配置为通过将带宽和/或其他约束应用至所学习的流量工程信息21而为lsp18计算路径。产生的路径可限于单域或者可跨越几个域。

控制器10的路径供应模块26可通过将路径描述符19发送至网络6来根据所计算的路径安装用于lsp定义的lsp18,该网络6根据路径描述符19配置lsp。用于lsp的路径描述符包括lsp通过其路由的路由器4(在本文中还称为“节点”)的列表。路径描述符可包括用于lsp的显式路由对象(ero)并且可包括描述包括路径类型(主要的或者迂回的)的相应路径的信息;用于各个服务类别(cos)值的带宽;和/或用于在从入口至出口的有序路径中的各个节点、节点标识符、入口标签和出口标签。

用于路径计算的盛行模式是在mpls网络上使用外部控制器以(1)同步描述网络拓扑的流量工程数据库(2)使用流量工程数据库计算控制器在网络中负责的、同时遵守lsp约束的lsp路径。在网络元件发生故障的情况下,控制器在遵守lsp约束的同时跨更新的拓扑(其包含故障的网络元件)为lsp重新计算新的路径。这种模式意味着在网络或者lsp故障的情况下,利用其计算新路径的控制器速度成为网络融合中的限制因素。该模式强调网络内的局部快速重路由(frr)和/或利用路径保护的lsp,从而确保快速融合变成分布式网络的责任。

根据本公开内容中描述的技术,为了路由lsp18的一个或多个lsp(具有一对共同的边缘路由器4),控制器10的路径计算模块24计算lsp的一对边缘路由器4之间的n个路径(或者“多个路径”/“多路径”)的结果集。在一些情况下,路径计算模块24计算n个路径的结果集,以在n>2个路径上分散流量分布,而不仅仅计算单个路径或者一对不同的路径。路径计算模块24还可以对n个路径的结果集排序和从n个路径的结果集中进行选择以用于路由一个或多个lsp或者其他业务流。路径计算模块24还可以在n个路径上分配流量或者lsp带宽。所描述的技术整体来看可由进行单独的lsp(或者其他流量)路径计算和选择决策的路由器4应用或者可由整体上对网络6进行路由和路径配置决策的外部控制器10应用。多个路径可以用于在网络6上更均匀地分散流量和/或可在网络6的一个或多个网络元件(例如,路由器4或者链路9)故障的情况下,作为待使用的预先计算的备用路径。

在一些实例中,例如路由器4a可以为被配置用于路由器4a的lsp定义请求一个或多个路径。使用本公开内容中描述的技术,控制器10可为lsp源节点和目标节点计算一个或多个路径并且将一个或多个路径返回至路由器4a。如以下详细描述的,路由器4a使用本文中描述的技术可从一个或多个路径中选择并安装跨一个或多个所选路径的lsp。在一些实例中,控制器10可使用本文中描述的技术选择一个或多个所选路径。

图1示出了从路由器4a至路由器4g的n个路径14a–14e的结果集。例如,路径14c对包括路由器4a、4d和4g的节点进行了排序。沿着路径14c放置的lsp将具有入口路由器4a、中间或者转接路由器4d、以及出口路由器4g。在其中链路9具有相等度量的拓扑结构中,路径14c是从路由器4a至路由器4g的最短路径。路径14a、14b、14d和14e是次短的路径,并且任一个或多个这样的路径可用作为具有沿着路径14c的主要路径的lsp的备用路径。在网络6中存在额外路径(例如,4a→4c→4d→4b→4e→4g),但是路径14a-14e示出了可根据本公开内容中描述的技术计算和确定的从路由器4a至路由器4g的n个路径(在此,n=5)的结果集。控制器10可从通过控制器10计算的路径14中选择以路由从路由器4a进行到路由器4g的一个或多个lsp18。控制器10的路径供应模块26可根据所选择的路径通过将路径描述符19发送至网络6来安装lsp18的路由lsp,该网络6根据路径描述符19配置lsp。

因此,在符合本文中描述的技术的这种新模式下,控制器10为在其可能是广泛地分离的控制下的每一个lsp18预先计算多个(n个)路径并且根据质量度量(例如,路径度量)对n个路径的结果集进行排序。为了将lsp安装(或者“加载”)到网络6,控制器10可简单地且随后遍历(stepthrough)有序的n个路径的结果集以发现用于lsp的具有足够容量的第一个路径。此外,在发生故障的情况下,控制器10可简单地且随后遍历n个路径的结果集以发现具有足够容量并且没有出故障的网络元件的第一个路径。如果,在遍历n个路径的全部结果集之后,控制器10不能识别n个路径的结果集中的合适的路径,则控制器10才尝试为lsp重新计算新的路径。如本文中使用的,术语“集合”是指零或者更多项的集合。该项不必是唯一的。集合可使用列表、背包(bag)、地图、字典、表或者其他数据结构实现。集合的大小的长度是指该集合中的项的数量。

可替换地,一旦控制器10已经计算出n个路径的结果集,则控制器10可以对具有共同边缘路由器(跨在边缘路由器之间的n个路径的结果集中的多个)的lsp18进行编程以提高网络6的承载能力和弹性。路径计算模块24不必是控制器10的一部分并且在一些情况下可能是单独的外部组件,该外部组件在首先执行快速计算以发现初始的最佳路径之后在后台计算多个(n个)路径。

为了预先的计算和识别n个路径的结果集、并且为了排序n个路径的结果集和从n个路径的结果集中选择以用于使用rsvp或者spring(例如)路由lsp或者其他流量,控制器10可根据本文中描述的“结果”的不同概念进行操作。本公开为一对节点之间的“n个路径的结果集”提供了定义。本公开还描述了用于从所计算的潜在路径的较大集合中选择n个路径的结果集的技术,以及用于确定所计算的潜在路径的较大集合(从其中选择n个路径的结果集)的技术。本公开还描述了用于排序n个路径的结果集/从n个路径的结果集选择以用于路由lsp18或者其他流量的技术。本公开还描述了用于在拥塞网络中全网规模(network-widescale)跨多个路径上分布流量/lsp18以促进公平的流量分布并且提高可用资源的利用的技术。本文中描述的其他技术包括当前内部网关协议(igp)和pcep的增强以通知各种拓扑属性的入口路由器4和/或集中式控制器10通告路径计算以及在入口节点如何使用多个路径(例如,根据路径排序或者带宽分配)上提高集中式控制器10的控制。

本文中描述的这种修改的集中式控制器式表示了与当前路径计算及选择的模式的背离,并且可提供一个或多个优点,特别是在具有简单的分布式控制平面或者没有分布式控制平面的网络上。例如,预先计算从入口路由器至出口路由器的n个路径有助于从影响最短路径的网络元件故障中迅速恢复。一旦接收到已安装的路径发生了故障的指示,则已经获得了多个预先计算的路径的路由器4a可从预先计算的路径中选择另一路径以安装至网络6。预先计算的路径的数量可以大于2,并且该路径不必是多样的。如上所述,该技术可通过将lsp分布在由控制器10确定的多个(n个)结果路径上来提高网络6的承载能力和弹性。如本文中使用的,术语路径计算装置可以指控制器10和本公开中描述的其他控制器实例,以及在用于一个或多个lsp的路径计算、选择和安装方面中参与的任何路由器4。

图2是示出根据本公开中描述的技术来确定两个边缘节点之间的n个路径的结果集的示例性操作模式的流程图。

一对节点之间的单个“最佳路径”的常规定义是作为“最短路径”,即,两个端节点之间的具有最小总“度量”的链路序列,其中,总度量是路径上的链路的(正)度量和遍历(pass-through)节点的任何额外度量的总和。确定最短路径是图论中的一个中心问题并且大部分互联网路由是基于解决这个问题的最短路径算法。除了dijkstra的最短路径算法之外,许多其他算法广泛采用类似方法但是在某些情况下可以更快速。

假定了根据算法(不一定是最短路径算法)计算的一对节点之间的m个不相同路径的集合,则n个路径的结果集的一个定义(其中,m>n)是n个路径集合,该n个路径集合最小化:

total_cost=∑链路[(链路度量)×(链路上的路径数量)](1)

根据(1)使total_cost最小化的n个路径集合是根据链路度量最短的,因此是最佳的n个路径。确定这个集合的非常简单的算法是确定所有可能的m个路径,然后按照最小总度量的顺序来对m个路径进行排序,然后按顺序从这些m个路径中选择前n个。可以将有序的路径集合定义为根据诸如总度量或者总延迟之类的特性排序的一个或多个路径。这个简单算法需要已经计算出m个路径的集合。然而,如果一对节点之间存在非常大数字(m)个可能的路径,则这个简单算法需要在排序步骤之前存储所有这些路径。除了非常小的网络,这个存储需求对于所有其他的网络可能是禁止的。可避免存储多于(n个路径+评估下的附加测试路径)、并且使用伪代码表示的示例算法如下:

1.将找到的各个新路径填充到路径集合

2.直到我们达到总计n个路径。

2.1.(检查以确保没有两个路径是相同的,但是没有任何其他检查)。

3.当我们达到n个路径时…

4.找出集合中最差总度量(worst_cost)的路径

5.找出新的路径作为潜在路径添加至该集合。

6.检查在新的路径上的total_metric

6.1.如果total_metric>=worst_cost,

6.1.1.则丢弃新的路径,

6.1.2.返回到步骤3并且找出另一路径。

6.2.如果total_metric<worst_cost,

6.2.1.则检查确信新的路径与已经在该集合中的任何路径不同。

6.2.2.如果该路径与已经存在的一个路径相同,则丢弃该路径,

6.2.3.返回到步骤3并且找出另一路径。

6.3.如果total_metric>=worst_cost,

6.3.1.则将新的路径插入到该集合中并且去除先前最差的路径。

6.3.2.重新计算新的最差总度量(worst_cost)

6.3.3.返回到步骤4并且找出另一路径。

以上算法可继续直到不存在新的路径或者直到一些其他停止准则出现。因为用于最佳路径集合的公式在每个链路上的路径的数量上是线性的,所以以上算法将从所有m个路径的较大集合中找出全局最优的n个路径的结果集。

操作200示出了可避免存储多于(n个路径+评估下的附加测试路径)的示例性算法。路径计算装置可执行操作200以确定用于在节点对之间路由一个或多个lsp或者其他流量的一对节点之间的n个路径的结果集。通过限制存储的很多路径,该技术可允许路径计算装置保存或者更高效地使用诸如存储空间的计算资源。在一些实例中,通过节省存储空间,该技术可允许路径计算装置识别用于n个路径的结果集的较低成本的解集合。

路径计算装置将路径计算算法应用至ted23以为一对节点计算新的路径,并且将新的路径存储至用于节点对的所计算出的路径的集合(202),只要新的路径与已经在该集合中的路径不相同。路径计算装置可使用诸如表或者列表之类的适当的数据结构将路径集合存储至计算机可读介质。路径计算装置连续计算新的路径并且将新的路径存储至路径集合直到已经计算出n个路径(204的“是”分支)。

对于n个路径集合中的每个路径,路径计算装置为路径确定总度量例如作为由路径遍历的链路的度量的总和。路径计算装置根据n个路径的相应的总度量确定具有最差成本的最差成本路径,例如,最高或者最贵的总度量(206)。路径计算装置获得(例如,从路径列表计算或者选择)用于评估的测试路径(208),并且确定该测试路径的总度量(210)。如果用于测试路径的总度量劣于或者等于最差成本路径的最差成本(212的是分支)或者测试路径与已经在n个路径集合中的一个路径相同(214的是分支),则路径计算装置丢弃测试路径并且计算用于评估的新的测试路径(208)。可首先执行测试路径与另一路径相同的确定。如本文中使用的,用于链路的术语“度量”可以指例如igp度量、链路成本、延迟、或者与链路相关联的其他值(指示使用链路交换数据包的链路成本)。

然而,如果测试路径的总度量优于最差成本路径的最差成本(212的否分支)并且测试路径与已经在n个路径集合中的任何路径不相同(214的否定分支),则测试路径是优于用于节点对的最差成本路径的路径,并且路径计算装置将最差成本路径从n个路径的集合中去除并且用测试路径取代它(216)。

如果路径计算装置达到停止准则,诸如,没有剩下额外的路径以获取给节点对(218的是分支),则n个路径的集合是用于操作200模式的n个路径的结果集,并且路径计算装置可以将描述n个路径的结果集中的至少一个路径的数据输出至网络6,以在路由或编程lsp或其他流量中使用(220)。例如,控制器10可以将n个路径的结果集中的一个或多个发送至入口路由器,该入口路由器使用相应的ero以在网络6中信令传输一个或多个lsp。如另一实例,计算n个路径的结果集的入口路由器4可输出rsvp-te消息以编程用于一个或多个lsp的一个或多个路径。如果路径计算装置没有达到停止准则(218的否分支),则路径计算装置返回至步骤206。

由于用于最佳路径集合的公式在每个链路上的路径的数量上是线性的,所以操作200模式可从所计算的和评估的所有路径的较大集合中找出全局最优的最佳n个路径,其中,如果停止准则是没有进一步的路径待计算,则较大集合可包括所有可能的路径。可以使用一个或多个其他示例性停止准则,诸如,从开始评估路径起已经经过了预定时间段,或者已经评估了预定数量的路径。

图3是示出了根据本公开中描述的技术确定两个边缘节点之间的n个路径的结果集的示例性操作模式的流程图。操作200模式以及以上关于图2描述的其他技术在一些情况下没有处理一个特征:n个路径的结果集不仅是最短的而且这样的路径有意地分布在网络6的不同网络元件(例如,链路9、节点4)之中,其可以促进弹性和有益于改善网络6的承载能力。通常,关于重叠的(overlapping)网络元件,多个路径彼此越“独特”或者越“多样”,这种路径越分散(distributed),如果这样的路径在网络6中用于lsp路由流量或者以其他方式路由流量,可以有助于弹性和承载能力。

因此,描述了用于确定n个路径的结果集的技术,其通过惩罚过于相似的路径或者共享共同的故障模式(诸如链路、节点和共享风险链路组(srlg))的路径来促进分布式路径。公式(2)是公式(1)的变形形式,公式(2)确定当n个路径中的两个或多个穿过共同链路、节点或者srlg时,网络(将惩罚分配至n个路径的集合)的n个路径集合的总成本:

其中:

wmetric=为链路度量分配的权重,

wlink=为链路上的重叠路径分配的权重,

wnode=为节点上的重叠路径分配的权重,

wsrlg=为srlg上的重叠路径分配的权重,

m(link)=特定链路上的度量,

p(link)=特定链路上的路径的数量,

p(node)=穿过特定节点的路径的数量,

p(srlg)=特定srlg上的路径的数量。

在公式(2)中,如果wlink,wnode,和wsrlg全部是零,则公式回归至总成本纯粹基于度量的总和的公式(1)。在这种情形下,wmetric的值不影响该结果。如果在总路径成本等于最短路径的成本(即,等价多路径(ecmp))的网络中存在许多路径,并且这些路径是完全分离的(没有重叠的网络元件),则公式(2)再次回归至基于链路度量的总和的公式(1),因为在这种情况下,网络中的所有链路、节点和srlg都将具有最多一个路径,因此公式(2)中的最后三个求和全部是零。

当试图使n个路径的集合的总成本最小化时,各种权重因子的相对值是重要的。因此,为wmetric数字选择的合理的数字是[可用链路的最高工作度量(workingmetric)]-1,即,没有故障或者满负荷的链路的最高度量。在一些情况下,其他权重值wlink,wnode和wsrlg可分别设置为[0,1](包括0和1)中的值,其取决于链路、节点和srlg分离的重要性。这种权重值可取决于用于网络6的运营商策略。

在一些实例中,可以在路由协议消息中通告节点、链路和srlg权重。例如,这样的权重可以作为属性充满te数据库,使得控制器10和/或入口路由器4可从通告装置动态地接收权重。例如,运营商可使用网络管理系统经由路由器4中的一个将新的路由协议消息注入到网络6中,该新的路由协议消息包括为任意以上节点、链路和srlg权重指定权重的权重属性。诸如ospf和is-is的内部网关协议(igp)可被扩展为定义和分布新的“总成本srlg权重”属性(为公式(2)指定wsrlg),其中,用于n个路径的集合的网络的总成本部分基于根据公式(2)的wsrlg。可以以类似方式扩展ospf和is-is以定义和分布“总成本链路权重”和“总成本节点权重”属性,这两个属性为公式(2)指定wlink、wnode。控制器10或者入口路由器4可接收上述任何属性并且根据本文中描述的技术使用用于确定n个路径的结果集的值。

在一些实例中,各个网络元件(节点、链路、srlg)可与特定权重相关联。换言之,例如,不是用于srlg的广义权重,而是各个srlg可与特定权重相关联,并且不同的srlg可与不同的权重相关联。用于确定所计算的路径的集合的总成本的公式(2)可被修改为包含网络元件特定权重,该网络元件特定权重确定穿过网络元件的路径的成本对路径集合的总成本的贡献。例如,再次具体参考srlg,公式(2)的srlg部分可从:

wsrlg×∑srsgsmax{p(srlg)-1),0}2

修改为:

在上述修改部分中,可以针对每个srlgi单独设置,或者可将共用权重应用于每个slrg。如以下进一步描述的,可对公式(2)进行其它的泛化。

可用于确定用于n个路径的集合的总成本并且通过扩展确定n个路径的“最佳”或者“结果”集合的公式(2)实际上可以在将n集合中的路径保持为尽可能短与惩罚集合中的在相同链路、节点和/或srlg上重叠的路径之间进行权衡。通常,如果分离(即,尽管一些重叠是可能的,但是路径被“展开(spreadout)”而不是重叠)比根据总度量路径为短更重要,则可将公式(2)中用于节点、链路和/或srlg的权重设置为惩罚重叠的节点、链路和/或srlg的相对高的数(例如,1.0)。另一方面,如果较短路径比分离更重要,或者如果节点和/或srlg多样性对不重要(或者如果slrg信息对路径计算装置是不可用的),则公式(2)中的相应权重可被设置为相对低的数或者零以避免惩罚该集合中的路径之中的重叠。在有些情况下,如果用于n集合的分离非常重要,则可以将对路径数量的依赖的幂提升至高于2的数(例如,4、6等)。如以下进一步描述的,可以对公式(2)进行额外的泛化。如上所述,与优化公式(2)表示的成本函数相关的后续公式将假定幂为2,以缩放同一网络元件上的多个路径的惩罚,但是这些公式可以被泛化,利用以下描述的权重设置的进一步描述。

通过确定不同路径的相当大的集合(如果这种路径在网络中确实可用),一对节点之间的实际上有用的路径或者理想的路径的数量可能远小于集合中的n个路径,并且控制器或者路由器可从这个较大集合中选择特定路径以在以下更详细描述的不同情况下使用。

以下段落描述了利用公式(2)确定n个路径的结果集的算法,该算法通过惩罚过于相似的路径或者惩罚共享共同故障模式(链路、节点和共享风险链路组(srlg))的路径来促进分布式路径。在这种情况下,该算法可以确定由公式(2)表示的总成本函数的局部最优的n个路径的集合。该算法的这部分不包括计算路径的详细描述(这可以以许多方法进行,例如dijkstra最短路径、循环路径计算等,并且在以下进行更详细的描述)。相反地,以下算法描述从潜在路径的较大集合中确定n个路径的结果集。与以上关于包括操作模式200的图2描述的算法相似,以下算法确定新的测试路径是否应该被添加至n个路径的现有集合中并且丢弃旧的路径(例如,从该集合移除)。

当“最佳”n个路径的定义仅基于路径上的总链路度量时,根据公式(1),可以单独计算用于各个路径的总度量以找出路径的最差成本。然而,通过公式(2)表示的新的成本函数在元件上的路径的计数中不是线性的,并且因此,“度量”(决定新的路径是否应该放置在n个路径的结果集中)至少在某些方面取决于其他路径,因此可能不能独立于该集合中的其他路径进行计算。因此,尽管可以找出将这个解决方案朝向“最佳的”n个路径引导的良好方法(例如,如下所述使用模拟退火算法),但是可能难以确定整体最优的解决方案。

控制器10可为现有的n个路径的集合中的每个路径确定增量成本,其中:

incrementcost{existingpath}

=total_cost{currentpathset+existingpath}

-total_cost{currentpathset}(3)

如果现有路径被重新添加至n个路径的集合,则增量成本incrementcost表示针对n个路径的集合中的现有路径、对公式(2)(或者任意本文中描述的泛化)下的总成本的增加。现有路径被有效迭代,使得在用增量成本确定的路径集合中存在n+1个路径。

然后对于现有的路径集,控制器10可从n个路径的集合之中确定最差的增量成本,其中

worstincrementcost{currentpathset}=

worstpathsincurrentset[incrementcost{path}](4)

最差增量成本worstincrementcost是由如公式3确定的算法考虑的当前集合中的n个路径的相应增量成本之中的最差增量成本。为了确定是否将测试路径(newpath)添加至当前集合并且取代现有路径,控制器10可确定:

incrementcost{newpath}=total_cost{currentpathset+newpath}

-total_cost{currentpathset}(5)

如果测试路径(newpath)的增量成本小于公式(4)中确定的最差增量成本,则测试路径是对n个路径的当前集合中的具有最差增量成本的路径的改进,并且控制器10可以用测试路径取代n个路径的当前集合中的路径。

以下是使用公式(3)、(4)和(5)(利用递归和路径优化)的总成本降低算法来找出n个路径的结果集,其产生由公式(2)表示的总成本函数的局部最小值:

1.将找到的各个新路径填充到路径集合

·直到我们达到总计n个路径(检查以确保没有两个路径是相同的,但是没有任何其他检查)。

2.达到n个路径后:

·为该集合中的各个路径计算incrementcost。

·找到该集合的worstincrementcost

3.找出新路径作为潜在路径添加至该集合。

·检查以确保它与该集合中已经存在的任何路径都不相同。

o如果该路径与已经存在的一个路径相同,则丢弃该路径,

o返回到步骤3,并且找出另一路径。

·检查用于将这个新的路径添加至该集合的incrementcost

o如果incrementcost>=worstincrementcost,则丢弃新的路径并且转到步骤3

o如果incrementcost<worstincrementcost,

■则将这个新的路径插入到该集合中。

■遍历该集合中的(n+1)个路径

·找出将total_cost降低最大量的路径(p_worst),如果该路径能够被移除。

■丢弃(p_worst)路径

·应注意,丢弃的路径可能实际上是刚添加的路径

■重新计算新的total_cost和worstincrementcost

■转到步骤3。

继续以上步骤直到找出新路径的(分离)算法被用尽或者达到另一停止准则。用于n个路径的结果集的总成本公式在每个网络元件上的路径的数量是非线性的。因此,以上算法可以从评估路径的较大集合中仅找出局部最优的所得到的n个路径。然而,如以下进一步描述的,以上算法易于实现并且可以通过相对快速的方法计算算法中的各种成本函数(公式(2)、(3)和(4))。

如果一对点之间的有用路径的数量小于集合(n)中的路径的总数,则根据公式(2)找出全局最优集合可能对于改善局部最优网络的运行并不重要。只要n相当高(例如,16或者更大),局部最优的n个路径的集合与全局最优集合之间的区别就可能很低。以下描述了这种技术:将这个概念应用到递归路径计算算法内以在递归逻辑中较早地拒绝“不良”路径以加速递归算法发现路径。以下还描述了利用较佳逼近以找出全局最优的n个路径的集合的算法。

操作模式300是确定局部最优的n个路径的结果集的示例性算法,可避免存储多于n个路径加上评估下的其他测试路径。操作300可获得用于通过公式(2)表示的总成本函数的局部最佳解决方案。操作300可表示上述总成本降低算法的示例性实现,该降低算法使用递归和路径优化。路径计算装置可执行操作300以确定用于在节点对之间路由一个或多个lsp或者其他流量的一对节点之间的n个路径的结果集。通过限制存储的多个路径,这个技术可允许路径计算装置保存或者更高效地使用诸如存储空间的计算资源。

路径计算装置将路径计算算法应用至ted23以为一对节点计算新的路径,并且只要新的路径与已经在该集合中的路径不相同就将新的路径存储至用于节点对的所计算的路径的集合(302)。路径计算装置可使用诸如表或者列表的适当的数据结构将路径集合存储至计算机可读介质。路径计算装置继续计算新的路径并且将新的路径存储至路径集合直到已经计算出n个路径(304的是分支)。

路径计算装置基于n个路径集合的相应的增量成本确定n个路径集合的具有最差增量成本的最差成本路径(306)。在一些实例中,为了确定n个路径集合中的路径的增量成本,路径计算装置使用公式(3)。即,路径计算装置可将增量成本确定为n个路径集合加上该路径(因为总共n+1个路径,该路径被迭代)的总成本与n个路径集合的总成本之间的差值。可根据通过公式(2)表示的总成本函数计算n个路径集合的总成本。如上所述,总成本函数可惩罚与路径集合中的其他路径具有重叠网络元件(例如,链路、节点、slrg)的路径。路径计算装置可根据路径的相应增量成本确定具有最差增量成本(例如,最高增量成本)的路径。

路径计算装置获得(例如,从可用测试路径的列表中计算或者选择)用于评估的测试路径(308)并且确定测试路径相对于n个路径集合的增量成本(310)。路径计算装置可使用上述关于步骤306描述的技术。如果测试路径的增量成本劣于或者等于最差成本路径的最差增量成本(312的是分支)或者测试路径与已经在n个路径集合中的一个路径相同(314的是分支),则路径计算装置丢弃测试路径并且获得用于评估的新的测试路径(308)。可首先执行测试路径与另一路径相同的确定。

然而,如果测试路径的增量成本优于最差成本路径的最差增量成本(312的否定分支)并且该测试路径与已经在n个路径集合中的任何路径不相同(314的否定分支),则路径计算装置将该测试路径添加至n个路径集合以获得n+1个路径集合(316)。路径计算装置可确定n+1个路径集合的总成本(318)。路径计算从n+1个路径集合中确定最差路径并且丢弃最差路径(320)。在一些实例中为了确定最差路径,路径计算装置可确定选自n+1个路径集合的哪个n个路径集合具有最佳的(例如,最低的)总成本。未被选择的路径是n+1个路径集合中的最差路径。

如果路径计算装置达到停止准则,诸如,没有剩下额外的路径以获取给节点对(318的是分支),则n个路径的集合是用于n个路径的结果集,并且路径计算装置可将描述n个路径的结果集中的至少一个路径的数据输出至网络6,以在路由或编程lsp或其他流量中使用(320)。例如,控制器10可以将n个路径的结果集中的一个或多个发送至入口路由器,该入口路由器使用相应的ero以在网络6中信令传输一个或多个lsp。如另一实例,计算n个路径的结果集的入口路由器4可输出rsvp-te消息以编程用于一个或多个lsp的一个或多个路径。如果路径计算装置没有达到停止准则(318的否分支),则路径计算装置返回至步骤306。。

由于路径之间的依赖性,通过操作模式获得的n个路径的结果集的解决方案可能不是全局最优的。然而,实际上,相当大的n(例如,16或者32)可提供有效的多样化和短路径的集合。

图4a-图4b描述了根据本公开中描述的技术计算两个边缘节点之间的多个路径集合的示例性操作模式的流程图。可通过路径计算装置执行操作模式400以在网络的两个节点之间获得n个路径的结果集。

根据本文中描述的技术,找出两个节点之间的全部路径的示例性递归算法如下(使用c/c++类型伪码):

node_a:路径的起始或者入口节点

node_z:路径的末端或者出口节点

next_node:是递归调用栈中的当前节点以搜索到达node_z的其他路径

path_array:找到的从node_a至node_z的路径的数组

path:是建立的新路径,在一些情况下表示为链路的数组

visited_nodes:节点的地图,其中,node_a加上由正在建立的路径通过的每个节点都被标记有设置为真的布尔标志。因为循环路径是不可用的,所以算法在早期便拒绝循环回到自身的任何路径。

用于确定完整的路径集合的以上算法可在支持递归并且具有矢量(vector)和映射(map)或者类似构造的编程语言中实现。该算法可找出从一对节点的一个节点至其他节点的所有非循环路径。该算法具有随着网络中的节点数呈指数增长的计算复杂度,运算计数与下式大致成比例:

{邻居(neighbors)的平均数-1}(节点数-2)

因此,即使对于相对小的网络,这种算法可能变得计算上非常昂贵。上述递归算法的另外一个问题是它在一对节点之间可能找出非常大量的路径,其中许多或者大部分围绕网络迂回并且是不实用的。要求存储这许多所计算出的路径的存储器也随着网络大小而呈指数增长。由于上述理由,在具有大于~30个节点的网络上使用该算法可能变得不切实际。

对于较大网络,根据本文中描述的技术,下面描述在确定n个路径的结果集的背景下找出两个节点之间的局部最优的多个路径的集合的示例性递归算法。找出局部最优的多个路径的集合的算法包括修改以上描述的找出路径的完整集合的算法(recursive_find_all_paths_from_node_to_node),因为找出局部最优集合的算法扩展拒绝准则以拒绝循环路径以及不能改善在算法的操作期间考虑的n个路径集合的路径,即,不能“使其自身”进入n个路径的结果集中的路径。找出局部最优集合的示例性算法如下(使用c/c++类型伪码)(下划线中示出了对recursive_find_all_paths_from_node_to_node的添加或者修改):

不是找出一对节点之间的全部路径,新的递归算法recursive_find_locally_optimal_paths_from_node_to_node是找出节点对之间的局部最优的n个路径的结果集。对找出全部路径的算法进行修改的关键效果在于找出局部最优的n个路径的结果集的算法可以不需要在在任何运行中的点上存储多于n+1个路径,对于所找出的并不能满足非循环的各种准则的其他路径(具有劣于worstincrementalcost的增量成本),如果在将其移除的情况下是最大的减少total_cost,则将其丢弃。换言之,recursive_find_locally_optimal_paths_from_node_to_node在再次调用递归函数之前拒绝“使其自身”进入n个路径的结果集中的路径,因此节省不必要的调用。

尽管难以直接估计修改后的递归算法recursive_find_locally_optimal_paths_from_node_to_node的计算复杂性,但是实际结果可能会显示cpu和存储器的使用率降低。然而,即使具有这些改进,修改后的递归算法在具有大于~40个节点的网络上使用也是不切实际的。对于小网络,修改的递归算法可以是有效的方法,因为搜索所有的潜在路径并且该算法避免了找出多个路径的启发式方法。

操作模式400是根据本公开的技术确定n个路径的结果集的具有路径优化的递归算法的实例。操作模式400可表示recursive_find_locally_optimal_paths_from_node_to_node的实例。路径计算装置可将操作模式400应用于网络拓扑的表示(例如,ted23)。

路径计算装置初始化用于确定n个路径的结果集的变量:起始节点、末端节点、下一节点、visited_nodes、路径(paths)和当前路径。起始节点和末端节点可表示标签边缘路由器并且可具有全局范围。被访问的节点(visitednodes)是具有用于网络中的各个节点的项(item)的数据结构,并且可具有用于调用操作模式400的局部范围。路径(paths)是路径的数组并且可具有全局范围。当前路径是通过操作模式400的分支(branching)、递归运算建立的路径,并且可具有局部范围。路径计算装置利用初始化变量激活操作模式400(402)。

将下一节点赋给局部的当前节点变量(404),并且在visited_nodes中标记当前节点以指示正在建立的当前路径已经访问了当前节点(406)。当在412中测试时该步骤防止在当前路径中的循环。

对于其退出由当前节点表示的路由器的每个链路(408),路径计算模块将为链路终点的远程节点赋给下一节点(410)。如果在visited_nodes中已标记下一节点(412的是分支),则操作模式400的递归分支是导向路径循环,该算法从当前节点移动至下一链路(408)。可使用当前路径的新实例进行循环408的每个迭代。否则(412的否定分支),路径计算装置将下一节点添加至当前路径(414)。

如果下一节点不是末端节点(416的否定分支),则路径计算装置确定当前路径的增量成本是否劣于路径的最差增量成本(418)。为了做出这个决定,路径计算装置使用公式(3),以确定n个路径集合中的路径的增量成本。即,路径计算装置可将增量成本确定为n个路径集合加上路径(因为总共n+1个路径,该路径被迭代)的总成本与n个路径集合的总成本之间的差值。可根据由公式(2)表示的总成本函数计算n个路径集合的总成本。如上所述,总成本函数可惩罚与路径集合中的其他路径具有重叠网络元件(例如,链路、节点、slrg)的路径。路径计算装置可从用于路径的相应增量成本中确定具有最差增量成本(例如,最高增量成本)的路径。

如果当前路径的增量成本不劣于路径的最差增量成本(418的否定分支),则该算法执行递归调用(402)。如果增量成本更差(418的是分支),则部分路径已经劣于最差路径并且该算法移动至下一链路(408)。

如果下一节点是末端节点(416的是分支),则路径是完整的路径。如果在路径中存在比n个路径更少的路径(422的是分支),则路径计算装置将当前路径添加至路径中(424),并且进行当前节点上的下一链路(408)。如果在路径中存在n个路径(422的否定分支),则路径计算装置使用类似于关于步骤418描述的那些操作确定当前路径的增量成本是否劣于路径的最差增量成本(426)。如果是(426的是分支),则路径计算装置进行当前节点上的下一链路(408)。如果不是(408的否定分支),则路径计算装置将当前路径添加至路径中(428)。路径计算装置确定n+1个路径的总成本(430)并且丢弃路径中最差的路径(432)。相对于图3描述了用于确定路径集合的最差路径的示例性操作。

如果当前节点没有剩下要被遵循(follow)的链路,则返回递归分支(420)。如果对操作模式400的最后一个剩余调用被返回,则完成递归并且路径(paths)是n个路径的结果集。路径计算装置可以将描述n个路径的结果集中的至少一个路径的数据输出至网络6,以在路由或编程lsp或其他流量中使用(434)。例如,控制器10可以将n个路径的结果集中的一个或多个发送至入口路由器,该入口路由器使用相应的ero以在网络6中信令传输一个或多个lsp。如另一实例,计算n个路径的结果集的入口路由器4可输出rsvp-te消息以编程用于一个或多个lsp的一个或多个路径。

图5是示出根据本公开中描述的技术确定局部最优的路径集合的启发式算法的流程图。以上关于图3-图4描述的递归算法随着节点数其计算成本呈指数级增长。对于大型网络,在一些情况下,递归法可变得不切实际。本文中进一步描述的是启发式算法,其可用于从使用先前关于图1-图4描述的算法确定的局部最佳的n个路径结果集中识别出许多不同的良好路径。

根据本文中描述的技术的使用度量操纵的第一启发式算法涉及路径优化和没有递归的启发式方法。根据这个第一启发性算法,路径计算模块24将最短路径算法(例如,dijkstra、填充(flood-fill))重复应用于计算两个节点之间的最短路径,但是在各个最短路径计算之后,路径计算模块24基于穿过链路并且因此在网络拓扑上的相同链路、节点或者srlg上重叠的路径数修改用于下一计算的链路度量。链路度量的修改可基于早先关于公式(2)描述的同一个的多个路径集合的“最小成本”定义。为了计算与早先计算的“最短”路径不同的新的“最短”路径的目的,基于链路、节点和/或srlg上的路径数的度量修改是在拓扑模型上的临时设置。一旦识别出良好的路径集合,则链路度量的惩罚会被去除,即,拓扑模型重置。

在计算最短路径之前,操纵网络拓扑模型的度量的公式如下:

如果p(link)>0,则workingmetric(link)=m(link)+wlink×(2p(link)-1)

如果p(node)>0,则workingmetric(node)=wnode×(2p(node)-1)

如果p(srlg)>0,则对于srlg中的所有链路,

workingmetric(link)=workingmetric(link)+wsrlg×(2p(srlg)-1)(6)

其中:

wmetric=为链路度量分配的权重

wlink=为链路上的重叠路径分配的权重

wnode=为节点上的重叠路径分配的权重

wsrlg=为srlg上的重叠路径分配的权重

m(link)=特定链路上的度量

p(link)=特定链路上的路径的数量

p(node)=穿过特定节点的路径的数量

p(srlg)=特定srlg上的路径的数量

workingmetric(link)=最短路径计算中使用的度量值

workingmetric(node)=通过节点附加至路径的额外惩罚。

节点惩罚(workingmetric(node))可添加到用于所有链路(其进入到用于最短路径计算的节点)的工作度量(workingmetric(link))中。在上述公式(6)中,在一些实例中,可分别用p(link)、p(node)和p(srlg)替换2p(link)、2p(node)和2p(srlg)。度量的增加是有限的,即,链路没有从网络拓扑中被有效删除,因此链路可用在随后的最短路径中。因此,最短的m个路径可包括重叠路径甚至重复路径。

操作500模式是确定网络拓扑中从起始节点至末端节点的m个路径集合的示例性算法。路径计算装置可执行操作500确定m个路径集合,从中选择一对节点之间的n个路径的结果集,以用于在节点对之间路由一个或多个lsp或者其他流量。

对于网络拓扑,路径计算装置计算网络拓扑中的起始节点至末端节点的新的最短路径(502),并且将新的最短路径添加至路径集合(504)。例如使用公式(6),路径计算装置将网络拓扑中的新的最短路径的链路的度量增长了有限量(506)。如果在路径集合中存在比m个路径更少的路径(508的是分支),则路径计算装置迭代寻找另一个新的最短路径(502)。否则(508的否定分支),路径计算装置可以将描述m个路径的结果集中的至少一个路径的数据输出至网络6,以在路由或编程lsp或其他流量中使用(510)。例如,控制器10可以将m个路径的结果集中的一个或多个发送至入口路由器,该入口路由器使用相应的ero以在网络6中信令传输一个或多个lsp。如另一实例,计算m个路径集合的入口路由器4可输出rsvp-te消息以编程用于一个或多个lsp的一个或多个路径。

链路和节点传递度量的操纵算法与多种路径(diverse-path)计算算法的不同之处在于,删除第一路径上的链路/节点使得随后的路径避免了第一确定的路径,因为由路径计算装置应用的度量操纵算法仅惩罚重叠的路径——它不能禁止它们。因此,如本文中描述的,使用度量操纵发现良好路径的操作500模式和其他算法可适用在许多极端情况(在主要路径中删除链路的简单方法失效)实例中。

应注意,这个启发式方法的重点是识别出尽可能地实现“扩散”的许多(例如,多于两个)路径,而不是仅仅找出两个不同的路径。启发式算法还引入srlg多样性的概念,以识别分散在srlg上的多个路径。如果网络6具有彼此不同的几个路径(其总度量与最短路径(ecmp)的总度量相同),则度量操纵可意味着最短路径算法的连续应用仍然可以找出所有这些路径。在一些情况下,可能有多于两个不同的路径。在目前测试的示例性网络中,该算法能够找出存在于示例性网络中的全部ecmp最短路径。

应注意,度量操纵算法简单改变被定义为最短路径的基础。在更改度量之后找出的新的路径可以与已经识别的另一路径相同。然而,每个新识别出的路径(与之前的一个路径相同)稳定地增加用于该路径上重叠链路、节点和/或srlg的度量惩罚。最终,如果它们存在,则路径计算模块24将基于修改的网络拓扑识别出与先前的一个路径不相同的新的路径。

这个集合中的可能的重复路径的存在是在此讨论的仅找出“良好路径”的集合与先前关于图3-图4描述的技术(找出局部最优的n个路径的结果集)之间的差异中的一个。通过该启发式方法找出的“良好”路径可以被传递到上述关于图3描述的总成本降低算法,以去除任何重复项并且找出局部最优的n个路径的结果集。因为以上启发式度量操纵算法可找出一些重复路径,所以在一些情况下为了识别出n个不同的路径,可能有必要执行最短路径计算和度量操纵循环(cycle)的大于n次的迭代。进一步地,在一些实例中,为了找出局部最优的n个路径的结果集,可以识别出大于m个的“良好”路径,以传递给用于优化的总成本降低算法。

在测试中,最短路径计算和度量操纵循环的(2*n+4)次迭代通常足以识别出具有分离特性的m个不同的路径。其他实例可应用更多或更少的迭代来从m个路径集合中确定n个路径的结果集。这些测试的计算复杂度可将一个或多个(n个)迭代添加至计算,但是复杂度是多项式时间而不是以上关于图2-图3描述的纯递归算法的指数复杂度,并且因此第一启发式算法可以实际上应用于大型网络。

对路由lsp有用的其他路径集合包括:(1)当最短路径上的节点、链路或者共享风险故障时需要找出的新的保护路径,以及(2)当存在最短路径上的节点、链路或者共享风险以及保护路径上的节点、链路或者共享冒险的双重故障时需要找出的新的保护路径。因此,以上描述的第一启发式算法可由路径计算模块24使用,以通过详尽地模拟所找出的最短路径上的单个故障和双重故障来识别出良好的多个路径。并不是所有这种故障模式都将导致幸免于该故障的路径。然而,如果路径计算模块24能够识别出新的路径,则可检查新的路径以查看它是否与现有集合中的一个路径重复。从那里,总成本降低算法可应用于确定新的路径是否应该被包括在n个路径的结果集中。

如果需要,可组合上述算法找出更多路径,例如通过:

·执行详尽的故障模拟

○然后,如上所述,操纵用于后续路径计算的度量。

·遍历网络中的中间节点,并且组合从一端至另一端的部分路径以形成组合路径。

○(在正常情况下或者结合主要路径上的详尽的故障模拟。)

这种方法可以测试以确保组合路径不会导致任何种类的循环,并且该组合路径是完整的,总成本降低算法可以应用于满足这些准则的组合路径上以确定新的路径是否应该包括在n个路径的结果集中。应注意,如果路径计算模块24基于经由中间节点从/至两个末端节点的最短路径的组合部分识别路径,则路径计算模块24然后可在将总成本降低算法应用于确定该路径是否应该包括在n个路径的结果集中之前检查循环的路径。

单个故障计算和双重故障计算仅需要在最短路径中和保护路径中的节点、链路和/或srlg中完成。不必使网络6的拓扑模型中的每个元件出故障。这个详尽的故障计算在多项式时间中运行,其具有对最短路径算法的n次调用的一些倍数,这些倍数通常对于识别n个路径的结果集是令人满意的。

尽管启发式方法可能不一定在运算中找到n个不同的路径(如果存在这样的路径),则在示例网络中完成的实验中,启发式方法能够识别出两个节点之间的令人满意的多个“合理”路径,并且产生足够的多个路径以用于流量分布和放置。

在一些实例中,路径计算模块24可应用启发式算法找出用于path_array的n个良好的路径,以有效地引用(prime)上述递归算法recursive_find_locally_optimal_paths_from_node_to_node,以找到较宽的路径集合,并从中选择n个路径的结果集。启发式、路径优化和递归的组合方法可加速递归算法,因为如果在调用递归算法之前路径集合(例如,path_array)已经是“良好的”,则在递归早期将拒绝更多路径。因此,可以减少调用栈大小和cpu利用率。然而,该组合方法不能防止递归的复杂度随着网络规模而呈指数级增长,并且对于大型网络来说可能是不切实际的。至少对于较小的网络,组合的启发式和递归算法提供了直接比较启发式方法和递归法的结果的方法。

图6是示出了节点的网络以及根据本公开中描述的技术计算的一对节点之间的路径集合的框图。示例性网络600是布置为4x4正方形拓扑结构的网络,该网络具有在正方形顶点上的节点以及相邻节点之间的垂直/水平链路。因此,网络600中的大部分节点具有4个邻居,尽管边缘和转角节点分别具有3个邻居和2个邻居。在节点0,0与节点1,0之间,存在两个不同的路径和最小化路径之间的重叠的四个其他路径。

计算的路径602a–602e是使用启发式算法计算的示例性路径以确定关于图5描述的局部最优的路径集合。计算的路径602a、602b包括两个最佳的不同路径,并且计算的路径602c、602d和602e包括最佳地最小化路径之间的重叠的四个其他路径中的三个。

因此,尽管启发式算法不能找出全部可能的路径,并且因此在一些情况下找出比n=16个路径更少的路径,但是启发式算法确实找到了“良好”路径,包括所有可能的不同路径。

图7是具有行的表格,各个行描述根据本公开中描述的技术计算的用于一对节点之间的网络600的不同路径。路径计算模块24可应用启发式算法确定关于图5描述的局部最优的路径集合以计算在表格700的相应行中描述的节点0,0与1,0之间的路径。例如,路径数3是0,0→0,1→0,2→1,2→1,1→1,0(这个被示出为图6中的路径602c)。

图8是示出了节点的网络以及根据本公开中描述的技术计算的一对节点之间的路径集合的框图。在节点1,1与节点2,1之间存在三个不同的路径。路径计算模块24可应用启发式算法确定关于图5描述的局部最优集合以计算在表格700的相应行中描述的节点0,0与1,0之间的路径。计算的路径802a-802e是使用启发性算法所计算的路径的实例。计算的路径802a、802b和802c是通过启发性算法识别的三个不同的路径,并且计算的路径802d和802e是与三个不同的路径重叠最小化的其他两个路径。

图9是具有行的表格,各个行描述根据本公开中描述的技术计算的用于一对节点之间的网络600的不同路径。路径计算模块24可应用启发式算法确定关于图5描述的局部最优路径集合以计算在表格900的相应行中描述的节点1,1与1,2之间的路径。路径数1-5分别对应于图8的计算的路径802a-802e。

在网络600的两个转角节点之间(即,节点0,0和节点3,3),因为所有路径必须使用转角链路,所以严格地只有两个不同的路径。然而,启发式算法找到两个不同的路径以及通过完全递归算法识别的n=16个路径的相同的结果集。对于较大的网络实例,启发式算法与完全递归之间的差异更少,尽管围绕7x7矩形网络完成以上递归计算是不切实际的。通常,启发式方法的总成本函数对于给定节点对来说仅比通过完全递归算法获得的解的总成本函数差1-2%。

用于找出本文中描述的n个路径的结果集的各种算法技术可产生不同的计时结果。使用从4x4至10x10的不同尺寸的矩形网络(与网络600相似)测试该技术,尽管并不是所有的技术都能够测量(scale)更大的网络尺寸。这些算法的细节如上所述。以下提供的计时数据是利用单线程便携式计算机运行算法的结果。

·纯递归

○运行良好直到5x5的矩形网络(对于所有路径都~30secs)

○6x6的正方形是不可能的。

■在计算的了1.5%的路径之后需要>3g的存储器

·递归+路径优化(结果n=16个路径)

○运行良好直到6x6个矩形网络(对于所有路径都~100secs)

○7x7的正方形是可能的(估计2,500secs)

○>7x7的正方形是不切实际的

·递归+路径优化(结果n=16个路径)+启发式

○运行良好直到6x6个矩形网络(对于所有路径都~70secs)

○7x7的正方形是可能的(估计1,500secs)

○>7x7的正方形是不切实际的

·只有启发式+路径优化(最好的16个路径)

○运行良好直到10x10个矩形网络以及以上(对于所有路径都~60secs)

○多项式时间复杂度

~3×[路径的数量]×[最短路径计算时间]

○找到的少量路径对少于16个路径的目标集合

■然而,找出了所有的“良好”路径

○总成本度量在递归计算结果的1%内。

启发式方法缩短了(scalein)多项式时间并且在优化路径集合方面几乎与递归算法一样有效。

表1:不同算法结果之间的计时比较

图10是示出了根据本文中描述的技术从n个路径的结果集中排序并选择一个或多个路径的示例性操作模式的流程图。

一旦计算出n个路径的结果集,控制器10可应用单独的过滤器或可应用排序以确定它们如何用于路由特定的lsp。下面描述可以使用的几个潜在方法。对于入口和出口对之间的每个特定lsp集合,控制器10可使用不同的方法判定使用n个路径的结果集的一个或多个路径中的哪一个,并且判定在先前选择的路径上发生故障或者拥塞的情况下选择路径的顺序。

在一个方法中,控制器10可以以总的链路度量的升序对n个路径进行排序,然后依次从排好的路径中选择以找出具有足够容量并且没有故障元件的第一路径。如果存在其总体度量等于最低成本路径(ecmp)的多个路径,则在一些情况下,lsp带宽可与各个路径上可用的带宽成比例地分布在多个路径上。

在另一方法中,控制器10可以以总延迟的升序对n个路径进行排序,然后依次从排好的路径中选择以找出具有足够容量并且没有故障元件的第一路径。如果存在其总延迟等于最低延迟(ecmp)的多个路径,则在一些情况下,lsp带宽可与各个路径上可用的带宽成比例地分布在多个路径上。

在另一方法中,控制器10可以以各个路径对总成本函数(例如,如公式(2)所表示的)的贡献的顺序对n个路径进行排序。这个方法可确保最初几个路径是选择“最短”路径与确保路径合理多样化之间的折衷。控制器10可以执行示例性总成本排序算法,并且如下:

■找出如果其被去除会导致总成本函数降低最多的路径。

○在分类表中将这个路径标记为第n个路径

■对于剩余的路径,找出如果其被去除会导致总成本函数降低最多的一个路径。

○在分类表中将这个路径标记为第n-1个路径。

■继续处理剩余列表中的m个路径,去除导致总成本函数降低最多的一个路径。

○在分类表中将每个路径标记为第m个路径。

○继续这个步骤直到没有剩余的路径待处理。

在操作模式1000中,路径计算装置获取m个路径(1002)并且根据由公式(2)表示的总成本函数对它们排序。路径计算装置将迭代器i设置为0(1004)。对于m个路径的排序中的m个位置中的每一个路径,路径计算装置确定剩余位置1至(m-i)中的路径的总成本,确定剩余位置1至(m-i)中的路径的最差路径并且将最差路径移动至第(m-i)位置(1010)。在一些实例中为了确定最差路径,路径计算装置可确定选自m-i个路径的集合中哪组m-i-1个路径具有最佳(例如,最低的)总成本。未被选择的路径是m-i个路径的集合中的最差路径。路径计算装置增加迭代器(1012)并且继续循环直到m个路径被以总成本函数的顺序进行排序或标记。路径计算装置可以将描述m个路径的集合中的至少一个路径的数据输出至网络6,以在路由或编程lsp或其他流量中使用(1014)。例如,控制器10可以将m个路径中的一个或多个发送至入口路由器,该入口路由器使用相应的ero以在网络6中信令传输一个或多个lsp。如另一实例,计算m个路径的入口路由器4可输出rsvp-te消息以编程用于一个或多个lsp的m个路径中的一个或多个。

在另一方法中,可能需要“最佳多样”路径对,例如,用于路由主要lsp和相应的备用lsp。“最佳多样”路径对不需要是严格的多样化(即,没有重叠网络元件),并且可能具有一些重叠,这可以被确定为由一对路径共享的多个链路、多个元件和多个srlg的加权组合。可由控制器10执行找出“最佳多样”对的示例性算法并且该算法如下:

■遍历有足够容量以承载lsp的n个路径的结果集中的所有可能的路径对

○计算路径对的重叠

■从路径对的相应重叠之中找出最小的路径重叠(min_overlap)

○对于具有重叠=min_overlap的所有路径对,确定具有以下任一项的路径对:

■最小的总链路度量

■最小的总延迟

类似的详尽方法可应用于找出不同节点对之间的多样路径。对于不同的节点对之间的路径存在n2个可能对(而不是×(n-1)/2),然而在别的方面该算法与用于找出“最佳多样”对的以上算法相似。

为了从n个路径的结果集中找出多个多样路径集合(即,多于2个最佳多样路径),组合的数量随着路径数量呈指数增长(例如,用于3路径等的n×(n-1)×(n-2)/6)。然而在别的方面,用于找出多个多样路径的算法与用于找出“最佳多样”对的以上算法相似。然而,尽管这对于3路径可能是有效的,但是优化技术可用于从n个路径的结果集合中选择大量多样路径。

为了找出不同节点之间的多个多样路径集合,可使用类似方法,然而在这种情况下从其中搜索的可能的路径的数量是不同的。优化技术可用于确定覆盖在多于两个节点之间的路径的最佳多样集合。

因为以上路径计算和选择算法适用于底层网络拓扑,而不是在将单独lsp安装至网络之后的网络的当前状态,所以该算法独立于网络的当前状态运行,并且可以根据网络拓扑的相同的共用的数据库进行各个路径对计算。因此,以上关于图1-图10描述的路径计算和选择算法可以在多核、多处理器系统中并行执行。

在一些实例中,包括多处理器或者其他多核环境的控制器为每个核执行单独的工作线程,并且该线程共享网络拓扑的相同数据模型(例如,ted23)。每个工作线程可为不同的节点对处理路径计算和选择(用于需要哪些路径路由一个或多个lsp或者流)。用于这种并行处理的示例性方法如下:

·确定待路由和入队的lsp的一个或多个节点对。

·线程识别未经处理的节点对。

○获取在节点对上的互斥锁以防止其他线程的访问

○计算该节点对的n个路径的结果集

○在节点对上设置标记以指示其已经被处理

○去除节点对处理队列并且释放互斥锁。

·返回以识别节点对直到所有对被处理。

这个方法可利用所使用的处理器核的数量来实现对逝去的计算时间的准线性加速。如果外部控制器10是具有许多核的大型服务器,则找出每个节点对之间的16或者32个路径的逝去时间可以与找出单个路径的简单的单线程cspf算法所需要的时间相当(假设cspf算法被顺序应用并且通过多线程几乎没有被改善)。

图11是示出了根据本公开中描述的技术使用n个路径的集合将标签交换路径路由至网络的示例性操作模式的流程图。以下描述的多个方法用于将lsp编程至入口标签边缘路由器(ler)上;这些方法在各种情况下可适用。n个路径的集合可以是使用本公开中描述的任何算法或者算法的组合所确定的路径的集合。

使用n个路径的结果集以将一个或多个lsp编程至网络的一种方法如下:

·将一对节点之间的n个路径的结果集进行排序,其中,在节点对之间存在待路由的一个或多个lsp。

○按照最低度量、最低延迟或者lsp所需的其他适当的排序公式将n个路径的结果集进行排序。

·将lsp进行排序,例如:

○按照最高优先级,然后lsp带宽的降序排列

○按照最高优先级,然后lsp带宽的升序排列

○按照最高优先级,然后针对每个优先级随机分布

○可替换地排序:按照提交给控制器的顺序处理lsp

·将排序后的lsp顺序地编程到网络上。对于列表中的每个lsp:

○按照n个路径的结果集的以下的适当的排序列表的顺序使用第一路径:(1)没有故障组件以及(2)具有承载lsp流量的足够的带宽容量(例如,满足lsp带宽要求)。

○如果在n个路径的结果集中没有路径满足(1)和(2),则将lsp放到故障lsp列表中。

○如果找出合适的路径,则

■从合适路径上的链路上的可用带宽中减去lsp带宽。

■将路径与lsp关联并且信令传输至网络以将lsp编程至路径。

·对于故障lsp列表中的每个出故障的lsp

○执行最后直接使出的cspf计算,用于试图识别合适的路径:(1)没有故障组件和(2)具有承载lsp流量的足够的带宽容量。

○如果找出合适的路径,则:

■从路径上的链路上的可用带宽中减去lsp带宽。

■将路径与lsp关联并且信令传输至网络以将lsp编程至路径。

○如果没有找出合适的路径,则lsp失败。

如果lsp需要多样路径(或者是多样路径对的一部分),则路径计算装置可使用上述多样路径算法来找出具有可用容量的最佳多样路径对而不是仅仅通过路径的排序表迭代。

与直接的cspf方法不同,针对待路由的lsp集合预先计算出故障路径,目的在于作为最后手段的cspf算法仅基于每个lsp被调用,并且cspf算法在使用n个路径的结果集以此方式路由的所有lsp被编程之后。再次,虽然找出n个路径的结果集的cpu利用率和时间大于找出单个路径所需的时间。通过控制器或者路由器预先计算出故障的路径,并且可以非常快速地由控制器或者路由器应用,并且本文中描述的方法仅作为最后手段执行用于单个lsp的分离的cspf运算。

操作模式1100是用于将具有共用源路由器和目标路由器的多个lsp路由至从源路由器至目标路由器的n个路径的集合的示例性算法。尽管计算路径的装置不一定是将lsp路由至路径的装置,但是为了实例的目的,操作1100相对于路径计算装置进行描述。例如,用于多个lsp的入口路由器可从外部控制器(例如,控制器10)接收n个路径并且使用操作1100将lsp路由至n个路径。

路径计算装置对n个路径排序,这n个路径用于网络(例如,ted23)的拓扑模型中的节点对(1102)。路径计算装置可使用操作1000对n个路径排序,按照度量对路径排序,按照延迟对路径排序等。路径计算装置还可对用于节点对的lsp排序(1104)。路径计算装置可以按照优先级然后以所需带宽的降序或者升序对lsp排序。在其他实例中,路径计算装置可按照优先级随机化lsp,或者路由未排序的lsp。

对于每个lsp,路径计算装置试图在没有故障元件(即,活动的)并且具有用于lsp带宽的足够容量的n个路径中找出合适的路径。如果合适的路径存在(1106的是分支),则路径计算装置将lsp路由至合适的路径并且将至合适的路径的lsp的关联传输至网络(1108)。例如,控制器可将描述用于lsp的路径的ero输出至lsp入口路由器,和/或入口路由器可使用rsvp沿着合适的路径信号传输lsp。路径计算装置还从合适的路径的每个链路的可用带宽中减去网络拓扑模型、lsp所需带宽以表明(reflect)路由的lsp(1110)。

如果从n个路径中没有找出合适的路径(1106的否定分支),则路径计算装置试图针对具有所需带宽限制的lsp在当前网络拓扑模型上计算约束最短路径(例如,使用cspf)(1112)。如果没有找出合适的路径(1114的否定分支),则路径计算装置将lsp标记为失败并且不路由lsp(1116)。如果找出合适的路径,则路径计算装置针对lsp和合适的路径执行步骤1108和1110。

在一些情况下,在对路径排序之后,如果存在多于一个的其总度量等于最佳度量的活动路径,则控制器10可以执行以下任一项:

■通过一些合适的断路器或者随机地选择这些等价(ecmp)路径中的一个,并且使用以上描述的直接加载算法,或者

■将lsp均匀地(或者以与可用容量成比例地)分布在这些多个路径上,然后遵循以上直接加载算法逻辑的剩余部分将lsp编程到网络上。

在一些情况下,控制器10可将lsp“拆分”以利用可用容量。除了(或者可替换地)将lsp顺序编程到网络上的直接方法,可更积极地使用来自n个路径的结果集的多个路径来确定多个潜在路径上的较大lsp的最佳“拆分”。lsp可通过网络与用于一个或多个业务流的流路程相关联。可用于路由器的将从较大lsp拆分的lsp集合加载至与出链路接口对应的路径集合的示例性算法如下,并且其是以上所述连续加载算法的泛化(如果一个路径不可能承载lsp,则lsp的流可以被公平地拆分到多个路径上而不是仅依赖于列表中的lsp的排序):

·在n个路径的集合中的第一路径上推送每个lsp的所有流量。

○存储通过用于相应路径的每个链路接口的流路列表。

·找出具有最小备用容量的链路接口(最差链路)。

○如果该最差链路具有备用容量>=0.0,则加载所有流量:结束。

○否则最差链路具有负的备用容量

■通过以下方式缩放在最差接口上的所有业务流:

ratio=worst_interface->capacity/

worst_interface->total_carried_traffic

flow_path->failed_traffic=(1-ratio)*

flow_path->routed_traffic

flow_path->routed_traffic=ratio*

flow_path->routed_traffic

■从网络中删除失败的流量

■使用具有备用容量的n个路径的集合中的第一路径将来自这些流的失败流量放回到网络上

·如果没有这种路径,则将出故障的流量放回到第一路径上。

■迭代[找出具有最小备用容量的链路接口]直到达到停止准则或者所有流量被成功加载。

·如果所有流量被路由,则解决方案是流量从这个lsp流分布到相关路径上

在一些实例中,以上方法如以上部分中所描述的将流量扩散在等价路径上,或者可设置阈值使得仅拆分其带宽大于阈值的lsp。

以上方法可将lsp分布在多个路径上以避免网络中的拥塞点。不是仅避免拥塞链路,相反的,该方法可修改为计算网络中的所有链路的平均利用率。然后lsp加载装置可应用上述方法和其他公式以从其利用率>ratio*mean_utilization或者利用率>100%的链路中去除lsp,而不是将lsp简单地从满容量的链路中去除。

利用这个改变的准则,该算法可以如前那样应用,但是随着迭代进行,我们逐渐增加用于链路的阈值以将lsp断开(off)直到它达到100%。

图12是示出了根据本公开的技术被配置为针对标签交换路径(lsp)计算路径的示例性路径计算装置的框图。控制器100可根据本文中描述的技术接收路径请求,计算并且安排(schedule)满足该路径请求的路径,并且在路径计算域中建立所请求的路径。控制器100可包括一个或多个服务器或者网络控制器,例如,可表示图1的控制器10的示例性实例。控制器100的方面可在一个或多个网络路由器的集合中实现。

控制器100包括耦接至网络接口110的控制单元102以通过一个或多个入站链路122和一个或多个出站链路124与其他网络装置交换数据包。控制单元102的主存储器108表示一个或多个计算机可读存储介质,该计算机可读存储介质可包括随机存取存储器(ram),诸如,可用于携带或者存储期望程序代码并且以指令或者数据结构的形式编程数据而且可以通过计算机访问的各种形式的动态ram(dram)(例如,ddr2sdram)、或者静态ram(sram)、闪速存储器、或者任何其他形式的固定的或者可移除存储介质。主存储器108提供由通过模块112、104可访问的可寻址存储器位置组成的物理地址空间。

主存储器108耦接至磁盘127,其可包括计算机可读存储介质,该计算机可读存储介质包括在用于存储诸如处理器可读指令、数据结构、程序模块或者其他数据的信息的任何方法或者技术中实现的易失性和/或非易失性的、可移动的和/或固定的介质。计算机可读存储介质包括但不限于,随机存取存储器(ram)、只读存储器(rom)、eeprom、闪速存储器、cd-rom、数字通用光盘(dvd)或者其他光存储装置、磁带盒、磁带、磁盘存储器或者其他磁存储器、或者可用于存储数据和指令的任何其他介质。

在这个实例中控制单元102包括执行模块104、112的多核计算平台111。多核计算平台包括多个处理核,每个处理核包括执行遵守用于核心的指令系统结构的指令的独立执行单元。多核计算平台111的核可分别被实现为独立集成电路(ic)或者可以组合在分别使用单个ic(即,芯片多处理器)实现的一个或多个多核(multi-core)处理器(或“众核(many-core)”处理器)内。

多核计算平台111执行软件指令,诸如,用于定义存储至主存储器108的软件或者计算机程序的那些指令。可替代地,或者此外,控制单元102可包括专用硬件,诸如,一个或多个集成电路、一个或多个专用集成电路(asic)、一个或多个专用处理器(assp)、一个或多个现场可编程门阵列(fpga)、或者一个或多个上述专用硬件的实例的任何组合,以用于执行本文中描述的技术。

控制单元102为网络服务应用程序104和路径计算元件112提供操作环境。在一些实例中,这些模块可被实现为在一个或多个服务器的一个或多个虚拟机上执行的一个或多个程序。即,尽管通常示出并描述为在单个控制器100上执行,但是可在其他计算装置上执行模块104、112的方面。

网络服务应用程序104表示将服务提供至服务提供商网络的客户端的一个或多个程序,该服务提供商网络包括网络6和控制器100以管理路径计算域中的连接性。网络服务应用程序104可将例如包括互联网协议电话(voip)、视频点播(vod)、批量传输、围墙(walled)/开放花园(opengarden)、ip移动性子系统(ims)和其他移动性服务、以及互联网服务提供至网络的客户端。网络服务应用程序104需要由路径计算元件112提供的服务,诸如,节点管理、会话管理和策略执行。一个或多个网络服务应用程序104可包括或者以其他方式利用客户端接口106(一个或多个客户应用程序通过其请求服务)。例如,客户端接口106可表示命令行界面(cli)或者图形用户界面(gui)。客户端106还可以或者可替换地将诸如网页服务的应用程序编程接口(api)提供至客户端应用程序。

网络服务应用程序104将路径请求发出至路径计算元件112以请求由控制器100控制的路径计算域中的路径。例如,路径请求可包括所需要的带宽或者其他限制条件以及表示在通过控制器100管理的路径计算域上通信的源和终点的两个端点。控制单元102将路径请求作为相应的lsp定义存储在lsp18数据结构中。在一些情况下,网络6的服务提供商或者其他管理员可以经由管理界面配置lsp18中的一个或多个lsp定义。

路径计算元件112接受来自网络服务应用程序104的路径请求以在路径计算域上的建立端点之间的路径。路径可请求不同的时间和日期并且具有完全不同的带宽要求。路径计算元件112基于请求的路径参数和网络资源可用性,协调来自网络服务应用程序104的路径请求以将请求的路径复用在网络6路径计算域上。

为了智能地计算和建立通过路径计算域的路径,路径计算元件112包括拓扑模块116以接收描述网络6的可用资源的流量工程信息(诸如,图1的流量工程信息21),可用资源包括路由器4及其接口和互连网络链路。拓扑模块116可执行一个或多个南向协议,诸如,带流量工程扩展的开放式最短路径优先(ospf-te)、带流量工程扩展的中间系统到中间系统(isis-te)、bgp链路状态(bgp-ls),以学习用于网络6的流量工程信息。

流量工程数据库(ted)126存储由拓扑模块116接收的用于网络6(构成控制器100的路径计算域)的流量工程信息。ted126可包括一个或多个链路状态数据库(lsdb),其中,链路和节点数据在路由协议通告中接收、从拓扑服务器接收、和/或通过诸如覆盖控制器(overlaycontroller)的链路层实体发现,然后提供至拓扑模块116。在一些情况下,服务提供商或者其他管理实体可经由管理界面在ted126内配置流量工程或者其他拓扑信息。

根据本公开内容中描述的技术并且为了满足来自网络服务应用程序和/或管理配置路径的路径请求,路径计算元件112的路径计算模块114执行本公开中描述的一个或多个算法以计算n个路径的结果集和从n个路径的结果集中进行选择,和/或编程这种路径用于网络6中的lsp18。

路径计算模块114的方面可在多核计算平台111的不同执行单元上并行执行。例如,用于不同节点对的路径计算可以是独立操作。因此路径计算模块114可生成在多核计算平台111上并行执行的不同线程,以同时执行本文中描述的算法以针对多个节点对并行地计算n个路径的结果集并从n个路径的结果集中进行选择。在一些实例中,路径计算模块114可应用锁定构造(诸如互斥体或者信号机(semaphore)),以提供对队列或其他数据结构的独占访问,该队列或其他数据结构存储不同的线程要对其执行本文中描述的操作的路径对列表。

每个工作线程在剩余的待处理的路径对的列表中进行查找,并且采用空闲的第一个路径对。工作线程然后可以锁定源以防止另一线程访问相同的存储器,处理所采用的路径对,并且一旦完成处理,则在路径对上设置标记以表示该处理完成。

以此方式,路径计算模块114采用本文中描述的并行算法。在多个路由器4共同实现控制器100(即,控制器100被分散化在路由器4之中)的实例中,一个或多个路由器4可作为“线程”执行以执行算法来处理源于路由器的相应的lsp的集合。

路径计算模块114尝试根据通过ted126定义的网络模型将路径设置在lsp18(可替换地,称为“流”)上。

控制器100的路径供应模块118将用于lsp18的路由lsp的路径编程到网络6中,以使得网络6的状态与通过路径计算模块114确定的网络6的状态匹配。路径供应模块118可表示图1的路径供应模块26的实例。通常,路径是单向的。提供路径可能需要在提交路径之前进行路径验证以提供数据包传输。路径供应模块118执行用于路径供应的一个或多个南向协议以将状态注入到网络6的元件中,诸如,路由器4的任意一个或多个。例如,南向协议可包括路径计算元件(pce)通信协议(pcep)、带流量工程扩展的开放式最短路径优先(ospf-te)、带流量工程扩展的中间系统到中间系统(isis-te)、bgp链路状态(bgp-ls)、netconf/yang、路由系统接口(i2rs)协议、用于网络元件的cli、简单网络管理协议(snmp)、以及openflow(或者其他sdn协议)。例如,路径供应模块118可将路由lsp18的ero提供至路由lsp的源路由器,其可以使用rsvp-te或者spring来信令传输lsp。

以下描述的对上述算法的扩展或修改在一些情况下可改善路径选择。

从大量可能的路径中找出全局最优的n个路径的集合的问题以n为指数的缩放。因此,使用穷举法以找出这个最佳集合可能是不切实际的,除非n和可能的路径的数量很小。

以上主要相对于图3描述的为总成本函数确定局部最优的n个路径的集合的算法是快速且有效的,但是它不是全局最优算法。找出的路径集合取决于将路径呈现给算法进行选择的顺序。然而,尽管它不是精确的全局最优算法,但是只要该方法给出相当不错的结果,则如果这些可用,可后续处理该集合以找出更好的解决方案。

除非网络具有许多等价(或者几乎相等的成本)路径,否则在实践中可能仅使用这些路径的相当小的子集。局部最优算法在这个集合中找出较好的几个路径时确实很好,但是它可能找不到其他的最佳集合。然后这可以用作找出更好集合的算法的基础。为了迈向全局最优,该算法可确定m个路径的结果集合,其中,m>n(例如,m=2n)。然后可以应用诸如操作模式1000的选择算法,以从m个路径的集合中选择最佳的n个路径。如果m仅略高于n,则可以应用穷举搜索方法以找出最佳的从这个集合中去除的(m-n)个路径以使总成本函数最小化。因此,例如,如果m=n+2,则搜索m*(m-1)个路径来找出最佳的从该集合中去除的两个路径,以使得到的n个路径的总成本函数最小化。这个方法的计算复杂性随着m与n之间的差距变大而呈指数级增长,但是只要该差距小(例如,<5),则这个方法仍然是有效的方法。

从较大集合选择n个路径的随机的全局最优算法。如果我们确定要找出全局最优集合的逼近值,则可以使用与局部最优方法结合的全局最优技术(诸如模拟退火),来引导解决方案朝向全局最优。执行此操作的示例性算法如下:

■从较大的一组被局部优化的m个路径的集合中随机选择n个路径

■在多个迭代的外层循环中进行迭代…

○找出不在当前的n个路径集合中的路径。

○使用用于局部最优集合的上述算法通过置换出这个路径来计算总成本函数的变化。

○然后应用模拟退火技术…

■如果新的路径减少了总成本函数…

·则使用这个路径并且替换出现有路径的最差路径。

■如果新的路径增加了总成本函数

·则使用概率随机选择

·其中,delta_cost是通过置换出这个路径导致的总成本中的增加。

·并且t是总体温度参数,用于控制接受或者拒绝变化(增加成本)的概率。

■缓慢降低“温度”参数,使得随着迭代的进行,接受增加总成本的变化的概率降低。

可以通过具有迭代进展的固定的公式来降低温度参数或者可以根据缓慢减少增加成本的路径变化的数量的一些准来降低温度参数。模拟退火和其他全局最优技术在2016年6月30日公布的美国公开号2016/0191391a1中被进一步描述,其全部内容通过引证结合于本文中。

上述算法可以被应用于受到附加约束(诸如,可用带宽、链路着色和链路的其他特性)的路经计算。以上方法可被推广到找出满足附加约束的另外n个路径的替换集合。例如:

■如果在可以用作此lsp的路径的链路(或者其他装置)上具有特定约束的一对节点之间存在lsp

○从网络图中删除不满足这些约束的所有链路(和/或其他装置)。

■并且使用上述任何或者所有技术来找出节点对之间的满足该约束的n个路径的结果集。

■该组受约束的路径可以被保存为合单独的路径集合,以供受约束的特定的lsp集合使用。

■或者,如果节点对之间的所有lsp都受到相同的约束,则仅需要一个集合。

公式(2)可被扩展或者修改为将不同的重要性分配给多个路径的分离性。例如,公式(2)可被修改为将相同链路、节点和/或slrg上的多个路径的惩罚的幂从2改变为另一数字。如另一实例,用于wlink、wnode或者wsrlg的权重可以单独应用于每个元件而不是通过全局加权到相同类型的所有元件。例如,特定节点(或者链路或者srlg)可以在一对节点之间的每个路径上,在这种情况下,将分配至这个元件的权重设置为零(或者小数字)是明智的,使得在这个元件上的路径上不可避免的重叠不会使总成本公式失真。作为另一实例,特定slrg可能是非常不可能出故障(或者非常可能出故障)的元件,在这种情况下,较小(或者较高)权重可分配到特定srlg。可替换地,对应于光学纤维的部分的srlg的权重可基于光学部分长度进行分配。

因此,用于以上实例的更通用的公式是:

totalcost=wmetric×∑linksm(link×p(link)

+∑linkswlink×max{p(link)-1),0}x

+∑nodeswnodes×max{p(node)-1),0}y

+∑srsgswsrlg×max{p(srlg)-1),0}z(7)

其中:

wmetric=为链路度量分配的权重

wlink=为特定链路上的重叠路径分配的权重

wnode=为特定节点上的重叠路径分配的权重

wsrlg=为特定srlg上的重叠路径分配的权重

m(link)=特定链路上的度量

p(link)=特定链路上的路径的数量

p(node)=穿过特定节点的路径的数量

p(srlg)=特定srlg上的路径的数量

x、y、z是分别惩罚链路、节点和srlg上的多个路径的相应的上升的(raised)幂

可以修改上述任何算法和技术以应用公式(7)而不是公式(2)。

本文中所描述的技术可以在硬件、软件、固件或其任何组合中实现。被描述为模块、单元或组件的各种特征可以一起实现在集成逻辑装置中或者单独实现为分离地但可互操作的逻辑装置或其他硬件装置。在一些情况下,电子电路的各种特征可实现为一个或多个集成电路装置,诸如,集成电路芯片或芯片集。

如果在硬件中实现,则本公开内容可针对诸如处理器或者集成电路装置的设备,该集成电路装置诸如集成电路片或者芯片组。可替换地或者此外,如果在软件或者固件中实现,通过包括指令的计算机可读数据存储介质可至少部分地实现该技术,当执行时,该指令使处理器执行上述一个或多个方法。例如,计算机可读数据存储介质可以存储此类指令以由处理器执行。

计算机可读介质可以形成计算机程序产品的一部分,计算机程序产品可包括封装材料。计算机可读介质可包括计算机数据存储介质,诸如,随机访问存储器(ram)、只读存储器(rom)、非易失性随机访问存储器(nvram)、电可擦可编程只读存储器(eeprom)、闪速存储器、磁性或者光学数据存储介质等。在一些示例中,制造品可包括一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可包括非暂时性介质。术语“非暂时性”可以指示存储介质未被体现在载波或传播信号中。在某些实例中,非暂时性存储介质可存储可以随时间变化的数据(例如,在ram或缓存器中)。

代码或指令可以是由包括一个或多个处理器的处理电路执行的软件和/或固件,诸如,一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可以指的是前述结构中的任一个或者适于实现本文描述的技术的任何其他结构。此外,在一些方面,本公开中描述的功能可被提供在软件模块或硬件模块内。

除了或作为上述的一种替代,描述以下实例。下面的任何实例中所描述的特征可以在本文中所描述任何其他实例一起使用。

实例1.一种方法,包括:针对通过网络拓扑中的多个链路相互连接的路由器的网络,路径计算装置确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2;通过路径计算装置获取用于一对节点的测试路径以及用于测试路径的总度量;通过路径计算装置从n个路径的第一集合中确定最差路径,所述最差路径具有的总度量劣于n个路径的第一集合中国的其他路径的相应总度量,其中,最差路径的总度量是n个路径的第一集合的最差成本;响应于确定测试路径的总度量小于最差成本,路径计算装置从n个路径的第一集合中去除最差路径并且将测试路径添加至n个路径的第一集合中以获取n个路径的第二集合;并且通过路径计算装置将用于n个路径的第二集合中的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

实例2.根据实例1所述的方法,其中,从n个路径的第一集合中去除最差路径并且添加测试路径包括:响应于确定用于测试路径的总度量小于最差成本并且测试路径不同于n个路径的第一集合中的任何路径,通过路径计算装置从n个路径的第一集合中去除最差路径并且将测试路径添加至n个路径的第一集合以获取n个路径的第二集合。

实例3.根据实例1所述的方法,进一步包括:通过路径计算装置计算用于一对节点的额外的测试路径;并且响应于确定额外的测试路径与n个路径的第一集合中的一个路径相同,通过路径计算装置去除额外的测试路径。

实例4.根据实例1所述的方法,其中,将用于n个路径的第二集合的至少一个路径的数据输出至网络包括将用于标签交换路径的路径描述符发送至网络。

实例5.根据实例1所述的方法,其中,路径计算装置包括用于网络的控制器和网络的路由器中的一个。

实例6.根据实例1所述的方法,其中,路径的总度量至少基于路径遍历的链路的相应度量的总和。

实例7.一种方法,包括:针对通过网络拓扑中的多个链路相互连接的路由器的网络,路径计算装置确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2;通过路径计算装置获取用于一对节点的测试路径以及用于测试路径的增量成本;通过路径计算装置从n个路径的第一集合中确定最差路径,所述最差路径具有的增量成本劣于n个路径的第一集合中的其他路径的相应增量成本,其中,最差路径的增量成本是n个路径的第一集合的最差增量成本;响应于确定测试路径的增量成本小于最差增量成本,路径计算装置将测试路径添加至n个路径的第一集合以获取n+1个路径的一个集合;并且响应于确定如果将n+1个路径的集合的最差成本路径从n+1个路径的集合中去除、则所述最差成本路径将最大程度地降低所述n+1个路径的集合中的剩余路径的总成本,,从n+1个路径的集合中去除最差成本路径以获取n个路径的第二集合;并且通过路径计算装置将用于n个路径的第二集合中的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

实例8.根据实例7所述的方法,进一步包括:路径计算装置通过应用至少一个权重以增加具有与剩余路径重叠的路径的一个或多个链路、一个或多个节点、以及与一个或多个共享风险链路组中的至少一个的相应成本,来确定剩余路径的总成本。

实例9.根据实例7所述的方法,进一步包括:通过路径计算装置根据层3路由协议接收一个或多个路由协议消息,所述一个或多个路由协议消息包括至少一个权重。

实例10.根据实例8所述的方法,其中,应用至少一个权重包括将公共权重应用至具有与剩余路径重叠的路径的一个或多个链路中的每一个。实例11.根据实例7所述的方法,进一步包括:根据以下公式计算所述剩余路径的总成本:

total_cost=wmetric×∑links[m(link)×p(link)]

+wlink×∑linksmax{p(link)-1),0}2

+wnode×∑nodesmax{p(node)-1),0}2

+wsrlg×∑srsgsmax{p(srlg)-1),0}2

其中:

wmetric=为链路度量分配的权重,

wlink=为链路上的重叠路径分配的权重,

wnode=为节点上的重叠路径分配的权重,

wsrlg=为srlg上的重叠路径分配的权重,

m(link)=特定链路上的度量,

p(link)=特定链路上的路径的数量,

p(node)=穿过特定节点的路径的数量,

p(srlg)=特定srlg上的路径的数量。

实例12.根据实例7所述的方法,其中,路径的集合的总成本至少基于路径的集合的度量的总成本以及应用于在路径的集合的两个或多个路径中包括的一个或多个网络元件的至少一个权重。

实例13.根据实例12所述的方法,进一步包括:通过计算n+1个路径的集合的总成本与n个路径的第一集合的总成本之间的差值来计算测试路径的增量成本。

实例14.根据实例7所述的方法,进一步包括:响应于检测到网络中的至少一个路径的故障,从所述n个路径的第二集合中选择至少另一个路径;并且在所选择的至少一个路径上对网络中的标签交换路径进行编程。

实例15.根据实例7所述的方法,进一步包括:由所述路径计算装置计算部分测试路径,所述部分测试路径是所述一对节点之间的非完整路径;并且响应于确定部分测试路径的增量成本小于最差增量成本,通过路径计算装置丢弃部分测试路径。

实例16.一种路径计算装置,包括:耦接至存储器的一个或多个处理器,其中,一个或多个处理器被配置为针对通过网络拓扑中的多个链路相互连接的路由器的网络,确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2,其中,一个或多个处理器被配置为获取用于一对节点的测试路径以及用于测试路径的总度量,其中,一个或多个处理器被配置为从n个路径的第一集合中确定最差路径,所述最差路径具有的总度量劣于n个路径的第一集合中的其他路径的相应总度量,其中,最差路径的总度量是n个路径的第一集合的最差成本,其中,一个或多个处理器被配置为响应于确定测试路径的总度量小于最差成本,从n个路径的第一集合中去除最差路径并且将测试路径添加至n个路径的第一集合以获取n个路径的第二集合,其中,一个或多个处理器被配置为将用于n个路径的第二集合的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

实例17.一种路径计算装置,包括:耦接至存储器的一个或多个处理器,其中,一个或多个处理器被配置为针对通过网络拓扑中的多个链路相互连接的路由器的网络,确定表示一对路由器的一对节点之间的n个路径的第一集合,其中,n>2;其中,一个或多个处理器被配置为获取用于一对节点的测试路径以及用于测试路径的增量成本,其中,一个或多个处理器被配置为从n个路径的第一集合中确定最差路径,所述最差路径具有的增量成本劣于n个路径的第一集合中的其他路径的相应增量成本,其中,最差路径的增量成本是n个路径的第一集合的最差增量成本,其中,一个或多个处理器被配置为响应于确定用于测试路径的增量成本小于最差增量成本,将测试路径添加至n个路径的第一集合以获取n+1个路径的集合,其中,一个或多个处理器被配置为响应于确定如果将n+1个路径的集合的最差成本路径从n+1个路径的集合中去除、则所述最差成本路径将最大程度地降低n+1个路径的集合中的剩余路径的总成本,从n+1个路径的集合中去除最差成本路径以获取n个路径的第二集合,并且其中,一个或多个处理器被配置为将用于n个路径的第二集合的至少一个路径的数据输出至网络,以在所述至少一个路径上对网络中的标签交换路径进行编程。

此外,在上述任何实例中阐述的任何具体特征可结合到所描述的技术的有利实例中。即,任何具体的特征通常可应用于本发明的所有实例。已经描述了本发明的各种实例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1