网络拓扑优化的制作方法

文档序号:13696507阅读:434来源:国知局
技术领域本发明涉及计算机网络,并且更特别地涉及确定计算机网络拓扑结构。

背景技术:
网络内的路由设备(经常被称为路由器)维持描述通过网络的可用路由的路由信息表。网络路由器维持描述通过网络的可用路由的路由信息。一旦接收到分组,则路由器检查分组内的信息并且根据路由信息转发分组。为了维持网络的准确表示,路由器根据诸如内部网关协议(IGP)或者边界网关协议(BGP)的一个或多个路由协议来交换路由信息。术语“链路”经常被用于指代网络上的两个设备之间的连接。链路可以是物理连接,诸如铜线、同轴电缆、众多不同光纤线或者无线连接中的任一种。另外,网络设备可以定义“虚拟”或者“逻辑”链路,并且将虚拟链路映射到物理链路。换句话说,虚拟链路的使用提供一定程度上的抽象。随着网络在大小和复杂性方面的增长,任何给定链路上的流量可能接近链路的最大带宽容量,从而导致拥塞和损耗。

技术实现要素:
总的来说,描述了用于动态地确定用于基于端到端网络流量需求高效地传输物理拓扑之上的网络流量的逻辑网络拓扑的技术。该技术可以应用在具有基础传输层和在传输层上路由的逻辑或者重叠因特网协议(IP)层的多层网络中,以满足置于多层网络上的网络流量需求。在一个示例中,针对多层网络的控制器确定用于传输流量需求矩阵的逻辑网络拓扑,逻辑网络拓扑被确定为在任何基础层部件发生故障的情况下确保足够的容量和促进用于传输流量的网络的经优化的总资源成本。控制器获得描述可用于用作网络拓扑中的链路的候选链路的集合的抽象链路数据。在一些情况下,控制器还可以获得描述由其物理(传输)路径上的这些候选链路所遭遇的共享风险的抽象链路数据,以及与诸如链路的物理长度或者链路的延迟的路径优化相关的信息。控制器鉴于流量需求矩阵而迭代地分析候选链路和抽象链路数据,以选择候选链路的子集以高效并且鲁棒地承载需求。作为其设计输出的一部分,控制器可以向网络(或者网络运营商)信号通知配置和激活候选链路中的尚未激活和配置的这些所选择的子集中的如何子集所要求的信息。该技术可以提供一个或多个优点。例如,应用上文所描述的技术的控制器可以利用每次迭代促进沿着关于网络的总成本的流量需求矩阵的方案梯度的总成本向全局优化的移动。在一些示例中,应用本文所描述的技术的控制器还可以促进候选链路的所选择的子集能够在任何单个元件故障的情况下承载需求,同时还满足应用到网络的其他约束,诸如通过网络的给定路径的下一跳的延迟和数目。尽管全局优化方案可能未在所有情况中被达到,但是该技术可以避免方案梯度的总成本上的至少一些局部最小值,其可能导致鲁棒但是较低的资源成本方案。在一个示例中,一种方法,包括:由包括网络层和底层传输层的多层网络的控制器获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;由控制器至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;由控制器在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,经修改的网络拓扑包括候选链路的第二所选择的子集;以及由控制器输出第一方案或者第二方案中具有最低总成本的一个的拓扑数据,以配置多层网络,最低总成本包括针对第一方案或者第二方案中的一个方案的对于网络的总资源成本。在另一示例中,一种用于包括控制器和底层传输层的多层网络的控制器,控制器包括:一个或多个处理器,其耦合到存储器;拓扑计算模块,其被配置用于由一个或多个处理器执行以:获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;以及在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,该经修改的网络拓扑包括候选链路中的第二所选择的子集;以及拓扑提供模块,其被配置用于由一个或多个处理器执行以输出第一方案或者第二方案中具有最低总成本的一个的拓扑数据,以配置多层网络,最低总成本包括针对第一方案或者第二方案中的一个的对于网络的总资源成本。在另一示例中,一种非瞬态计算机可读介质包含用于使得包括网络层和底层传输层的多层网络的控制器的一个或多个可编程处理器执行以下各项的指令:获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,该经修改的网络拓扑包括候选链路的第二所选择的子集;以及输出第一方案或者第二方案中具有最低总成本的一个的拓扑数据,以配置多层网络,最低总成本包括针对第一方案或者第二方案中的一个方案的对于网络的总资源成本。在附图和以下说明书中阐述本发明的一个或多个实施例的细节。本发明的其他特征、目的和优点将从说明书和附图以及从权利要求书而变得显而易见。附图说明图1是根据本公开内容中所描述的技术的图示示例网络系统的框图,其中在示例网络系统,控制器获得针对多层网络的抽象链路数据并且使用抽象链路数据确定多层网络中的逻辑网络层的逻辑链路。图2是根据本公开内容的技术的图示被配置为确定针对路由流量的逻辑网络拓扑的示例控制器的框图。图3是根据本公开内容中所描述的技术的图示用于确定和优化逻辑网络拓扑的一个或多个控制器的操作的示例模式的流程图。图4是图示将流量路由到网络上的控制器的操作的示例模式的流程图。图5是根据本文所描述的技术的图示用于确定多个等价多径(ECMP)路径的操作的示例模式的流程图。图6是根据本文所描述的技术的图示故障模拟的操作的示例模式的流程图。图7-9描绘了根据本公开内容中所描述的技术的图示在运行确定网络的网络拓扑的示例期间的中间和最终参数和结果的图表。相同附图标记贯穿附图和正文指示相同元件。具体实施方式图1是根据本公开内容中所描述的技术的图示示例网络系统50的框图,其中在示例网络系统50中,控制器获得针对多层网络的抽象链路数据并且使用抽象链路数据确定多层网络中的逻辑网络层的逻辑链路。在该示例中,多层网络60包括逻辑网络6和传输网络54。传输网络54表示光传输网络(OTN)或者在网络6下面的其他传输网络。网络6包括控制分组流的交换和路由的路由器4A-4F(统称为“路由器4”)。网络6可以表示因特网协议(IP)网络。路由器4的示例包括第3层(L3)路由器和第2层(L2)交换机或者L2/L3交换机,其共同地提供网络6。也就是说,网络6通常提供L2/L3流量转发服务,诸如经由包括标签交换路径(LSP)、虚拟局域网(VLAN)等的多协议标签交换流量工程(MPLS-TE)的流量工程。网络6的各种示例可以包含上百或者甚至上千个路由器/交换机。底层传输网络54通过高速光纤链路来传输、复用和交换基于分组的通信。传输网络54可以包括多个光通信设备(例如,分组光传输设备),其经由光链路相互连接并且控制沿着光链路的承载分组数据的光信号的传输。通过这种方式,传输网络54提供将网络6的路由器4物理地相互连接的物理层。尽管为简单起见,分组光传输设备未被示出在图1中,但是分组光传输设备可以是例如ROADM、PCX、波分复用(WDM)/密集WDM(DWDM)和基于时分复用(TDM)的设备、光交叉连接(OXC)、光分插复用器(OADM)、复用设备或者发射、交换和/或复用光信号的其他类型的设备或者其他设备。作为一个示例,路由器4可以是通过传输网络54的中间OXC(诸如路由器4具有接入链路的OXC)光学地连接的第三层(L3)路由器。传输网络54通常包括若干其他部件,诸如放大器、应答器、OTT、中继器和用于控制沿着光链路(也未示出)的光分组数据的传输的其他设备。大型光传输系统可以具有影响光传输的大量的这样的设备。尽管仅参考光链路描述,但是传输系统54也可以包括其他类型的物理链路,诸如以太网PHY、同步光网络(SONET)/同步数字系列(SDH)、Lambda或者包括分组传输能力的其他第2层数据链路。路由器4是由控制器52所服务的路径计算域的成员。路径计算域可以包括例如内部网关协议(例如,开放最短路径优先(OSPF)或者中间系统到中间系统(IS-IS))区域、自治系统(AS)、服务提供商网络内的多个AS、跨越多个服务提供商网络的多个AS。在各种示例中,路由器4的不同组合可以包括多个AS的成员路由器。因此,连接路由器4的网络链路可以是内部链路、AS间传输链路、另一类型的网络链路或者其某种组合。逻辑网络6实际上是“建立在底层传输网络54上”的重叠网络。路由器4通过虚拟或者逻辑链路(在图1中利用9A-9I(统称为“链路9”)图示的示例拓扑)连接,其中的每个链路与底层传输网络54中的路径相对应。每个路径可以包括传输网络54中的一个或多个物理链路(此外,在图1中未示出这样的物理链路)。在一些示例实现方案中,控制器52通过光链路和其他设备提供对在关于分组数据的传输的传输网络54下面的路由器4和分组光传输设备二者的集成控制。例如,控制器52可以不仅控制网络6的路由和流量工程操作,而且可以提供对由在网络6的元件下面的传输网络54内的每个分组光传输设备所利用的光谱和波长的分配或者利用的集成控制,或者控制器52可以使用来自传输层的路径或者抽象链路信息以选择用于在传输网络54上路由的候选链路。控制器52可以表示用于配置和管理网络6的高级控制器。控制器52可以表示一个或多个通用服务器;电器、控制器或者用于计算路径的其他专用设备;由计算设备所执行的应用;计算由路由器所管理的LSP的路径的路由器4的分布式控制平面等。在一些情况下,控制器52的方面可以分布在一个或多个真实或者虚拟计算设备之间。上文所列出的任何这样的设备可以处于关于网络6处于网络内或者网络外。在于2013年6月5日提交的题为“PHYSICALPATHDETERMINATIONFORVIRTUALNETWORKPACKETFLOWS”的PCT国际专利申请PCT/US2013/044378中描述了可以执行本文所描述的操作以计算路径和路由LSP的软件定义网络的软件定义网络(SDN)控制器的示例细节,其整体内容通过引用并入本文。在于2013年9月30日提交的题为“SOFTWAREDEFINEDNETWORKCONTROLLER”的美国专利申请第14/042,614号和于2014年9月29日提交的题为“BATCHEDPATHCOMPUTATIONINRESOURCE-CONSTRAINEDNETWORKS”的美国专利申请第14/500,736号中描述了获得针对和用于提供网络的拓扑信息的软件定义的网络的SDN控制器的附加示例细节,其整体内容通过引用并入本文。控制器52可以通过执行延伸为承载流量工程信息的一个或多个网络路由协议来获得针对网络6的流量工程信息21,以聆听承载这样的流量工程信息的路由协议通告。流量工程信息可以包括用于路由器4的节点和接口标识符;用于链路的根据优先级的管理加权和可用带宽;用于虚拟链路的LSP标识符和状态信息,以及用于计算流量工程LSP的路径的其他信息。控制器52可以将流量工程信息存储到流量工程数据库(TED)。该示例中的控制器52呈现北向接口20,其可以由控制器的层级布置中的其他控制器或者由编排员、管理员、应用或者其他实体所调用,以呈现针对网络6的流量需求32。接口20对于与诸如OpenStack的编排系统的集成可以是可用的;接口20还可以或者备选地由其他应用或者运营商的操作支持系统(OSS)/业务支持系统(BSS)可用。在一些情况下,接口20可以呈现静止的(RESTful)应用编程接口(API)。流量需求对应于遍历从网络6边缘处的路由器4中的一个到网络6边缘处的路由器4中的另一个网络6的端到端流量30。在所图示的示例中,路由器4A、4D、4E和4F逻辑地位于网络6边缘处并且因此使针对跨网络6的传输的流量30进入和/或外出。根据待由从源节点到目的地节点的网络6路由(或者重新路由)的期望的流量带宽,可以定义流量需求。在一些情况下,流量需求可以与定时/日历信息相关联,其定义期望的流量带宽将由用于传输的网络6接收期间的间隔。流量与各自匹配一个或多个特性的集合的一个或多个网络分组相对应。可以使用不同的特性和特性值将不同的分组流分类。例如,一些分组流可以被标识为匹配标准5元组(或者其子集),其包括传输层协议(例如,用户数据报协议(UDP))或者传输控制协议(TCP)、源IP地址、目的地IP地址、源端口、目的地端口。分组流还可以通过例如应用协议(例如,LDP、APR、OSPF、BGP等等)和/或MPLS标签相互可区分。在一些情况下,控制器52可以基于由网络6所经历的当前流量需求而确定流量需求,在该情况中,控制器52可以近实时应用本文所描述的技术,以修改网络6拓扑以潜在地改进流量路由。在一些情况下,控制器52基于由网络6先前经历的需求的模型、即将到来的应用激活或者流量需求模型的其他已知和/或期望的改变,可以经由接口20接收或者估计预计需求,诸如改变从主要客户到数据的网络的条目的对等点、添加新节点或者存在点、合并两个或两个以上网络等。例如,控制器52或者另一控制器可以分析流量LSP统计和趋势以预计网络6上的未来流量需求。这些对于针对网络6的长期计划可以是有用的。各种流量需求形成从各种可能的源/入口路由器4到各种可能的目的地/出口路由器4的流量需求的流量需求矩阵。根据本文所描述的技术,控制器52包括拓扑计算模块58,其确定网络6的网络链路9的拓扑,其中,路由器4可以交换网络流量30,以便满足与流量30相对应的流量需求。拓扑计算模块58可以确定网络6的逻辑网络拓扑,以中传输网络54的部件发生故障的情况下确保足够的容量并且促进用于传输流量的对于网络6的经优化的总资源成本。拓扑计算模块58获得可用于用作网络6中的网络链路的候选链路的集合。在一些实例中,拓扑计算模块58附加地获得描述由其物理(传输)路径上的这些候选链路所遭遇的共享风险的抽象链路数据56。在一些情况下,抽象链路数据56还定义可用的候选链路并且可以定义在网络6中已经配置和激活的附加抽象链路。换句话说,并且在这样的情况下,抽象链路数据56是拓扑计算模块58获得候选链路的集合的机制。在一些情况下,抽象链路数据56还可以包括与路径优化(诸如链路的物理长度或者延迟)相关的信息。通过这种方式,抽象链路数据56表示以从传输网络54到控制器52的某种方式“泄漏”的数据,以使得能够通过拓扑计算模块58将另外的约束应用于确定在其上路由流量的路径和对应的候选链路。这样的约束可以与抽象链路数据56的类型相对应,其可以包括可用的候选链路、链路长度、链路度量(其可以基于链路长度)、链路成本(其也可以基于链路长度)和针对链路的共享风险链路组(SRLG)的列表。在一些情况下,拓扑计算模块58基于在数据文件中设定和在用于控制传输网络54的控制器52中配置的用户定义或者应用程序定义的规则,通过建立控制器52的附加候选链路以使用(如果要求并且如果这样的链路的使用将导致较低成本的总体方案),可以获得抽象链路数据56。换句话说,控制器52可以根据由控制器52所获得的候选链路定义建立候选链路。例如,用户或者应用可以将分组光传输设备的组定义为传输网络54内的节点的类型,例如接入节点、核心节点和超级核心节点,并且可以指示分组光传输设备允许组内或组之间的连接的情况。例如,规则可以指定:●接入节点可以连接到三个最近的核心节点。●核心节点可以连接到两个最近的其他核心节点。●核心节点可以连接到两个最近的超级核心节点。●任何超级核心节点可以连接到任何其他超级核心节点。以上规则仅是示例。所定义的规则还可以定义管理加权方案,其由软件可用于中候选链路被用于传输流量的情况下传输流量。关于上文,所定义的规则仅确定候选链路并且不指定这样的链路必须被用于传输流量。在应用本文所描述的技术确定网络6拓扑的链路的路径之后,控制器52可以仅配置用于在传输流量中使用的候选链路中所指示的可用链路中的所选择的子集。另外,如果这样的链路不在候选链路集中所生成的集合中,则控制器52可能不能够将链路添加到给定方案。相反,即使这样的链路不在候选链路集中,拓扑计算模块58也可以使用针对网络6已经定义的链路。换句话说,除非链路要么定义在候选链路集中要么已经存在于网络6中,否则拓扑计算模块58可能不能够在确定方案中使用链路。控制器52可以路由传输网络54中的可用的候选链路以确定例如传输网络54中的链路路径中的其实际长度和共享风险(SRLG)。如下文所进一步详细描述的,在选择候选链路之前,可以预计算这样的链路的路径。因为出于故障弹性的目的,传输路由的最短路径可以是过度限制性的,例如以防止来自传输链路的SRLG的故障,所以拓扑计算模块58可以确定针对拓扑计算模块58可以选择的给定候选链路的多个路径。在一些示例中,针对给定链路的多个路径可以包括较短路径、两个不同路径中的较短的路径和两个不同路径中的较长的路径。尽管最短路径和两个不同路径中的较短的路径可以是相同的,但是不一定需要是该情况。控制器52可以使用适于找到最短不同周期路径并且如果可用则考虑SRLG的强大的不同路径算法来确定不同路径。在一些情况下,诸如链路9中的任一个链路的逻辑链路可以已经配置在网络6中(即,“存在”),并且可以通过控制器52获得传输层54中的逻辑链路的路径。在这样的情况下,已知路径可以是固定的,并且上文所描述的不同路径可以不由拓扑计算模块58确定或者利用。在DavidWood和PingWang于2014年12月29日提交的题为“POINT-TO-MULTIPOINTPATHCOMPUTATIONFORWIDEAREANETWORKOPTIMIZATION”的美国专利申请第14/585,170号中描述了关于用于计算不同路径的示例技术的附加细节,其整体内容通过引用并入本文。因为在一些情况下,从候选集所选择或者在迭代地确定流量需求矩阵的方案之前所预计算链路的路径,所以在一些实施例中,拓扑计算模块58可以避免试图以关于导致传输网络54元件中的可用波长的这样的方式设计链路的路径。实际上,这允许拓扑计算模块58假定光(例如,WDM)容量不限制针对需求的方案的确定。一旦选择候选链路,则控制器52可以将针对候选链路的路由路径映射到具有SRLG信息和底层路径的传输链路区段或者节点的SRLG信息(即,传输该传输网络54中的流量以实现路径)。在一些情况下,控制器52可以基于在传输网络中链路“旁路”的路由器4的数目,减少候选链路的集合,其可以允许根据传输链路拓扑和设备而不是仅根据长度而降低候选链路集。这还可以使得能够由仅具有直接lambda光连接或者限于仅旁路小数目的节点的连接的受限的集合的高速路由器组成的核心IP网络的真实建模。因此,可以从链路的候选集合减少其路由旁路这些高速路由器的所有IP层链路。如上文所指出的,拓扑计算模块58可以从抽象链路文件或者从例如针对传输网络54的第三方网络管理系统所获得或者由用户所建立的其他数据结构获得抽象链路数据56。通过这种方式,拓扑计算模块58可以获得此处由传输网络54所表示的传输层的抽象图片,但是保持不知悉传输网络54拓扑的细节。换句话说,拓扑计算模块58可以具有经由抽象链路数据56从传输网络54控制器所取得或者从例如传输网络54网络管理系统(NMS)的输出所导出的传输网络的受限或者仅抽象的图片。通过这种方式,获得抽象链路数据56可以是有利的,因为定义候选链路是否不可用的规则取决于传输网络54中所采用的各种分组光传输设备的特殊性。获得候选链路直接作为来自抽象链路文件的“抽象链路”的集合可以使用针对候选链路生成的相对简单公式,使得能够实现比可能关于更复杂的连接的约束,如上文所描述的。如上文所指出的,抽象链路数据56可以包括可用的候选链路的链路信息,诸如链路长度、链路度量、链路成本和/或针对链路的共享风险链路组(SRLG)的列表。为了执行考虑光纤切断的传输网络中的潜在故障模式或者WDM/光部件故障以及IP层中的设备和接口的故障的设计,拓扑计算模块58可以通过向链路符合的SRLG应用惩罚来说明由IP链路所使用的传输层设备。例如,控制器52可以获得与抽象链路数据56中所标识的候选链路相对应的传输层元件的SRLG信息。这样的SRLG信息可以针对光纤区段、承载光纤的导管(conduit或者duct)、传输层交换元件等。控制器52可以获得针对网络6中的任何现有链路的这种SRLG信息。控制器52可以获得针对现有链路的这种SRLG信息以理解网络6的故障模式,其被修改为包括在用于根据本文所描述的技术确定流量需求矩阵的方案的迭代期间由抽象链路数据56所描述并且由拓扑计算模块58所选择的候选链路。关于上文,弹性机制需要依赖于预测哪些资源具有同时故障的高可能性以便正确地分配冗余路由。在简单网络中,节点或者节点之间的链路可能由于局部故障而发生故障。然而,在分组/光网络中,DWDM的单个光纤切断将影响所传输的所有波长。而且,每个单独的波长可以将不同对的路由器连接,使得光网络中的单个光纤切断似乎是网络拓扑中的三倍或者四倍故障,如同当存在超过两个层例如WDM上的SDH上的IP(在该示例中,WDM上的SDH表示传输网络54)时可能发生的那样。为了处理这样的情况,将SRLG或者SRLG的集合分配为链路属性。例如,SRLG可以由IGP(OSPFv2和IS-IS)域内唯一的32位数字表示,诸如网络6或者网络6内的IGP,其中网络6包含多个域。可以向链路分配多个SRLG。标签交换路径(LSP)中的路径的SRLG是针对路径中的所有链路的SRLG的集合。当确定针对候选链路的路径时,拓扑计算模块58可以使用抽象链路数据56中所提供的SRLG信息。一般而言,当计算针对候选链路的不同路径时,优选的是,在主要路径和次要路径的SRLG不相交的情况下,找到路径使得主要路径和次要路径不具有任何共同路径。这确保特定链路上的单点故障不使主要路径和次要路径同时发生故障。通过比较链路的SRLG属性,拓扑计算模块58可以在迭代期间应用惩罚,以促进主要路径和次要路径的链路的集合之间的不相交的SRLG属性并且通过这种方式到达不同的故障路由。作为先决条件,由传输网络54所表示的光域的SRLG必须渗到由网络6所表示的分组域中。因此,SRLG可以使能同步多层网络60的层之间的路由决策。此外,SRLG信息的特性是层独立的,并且可以因此用作任何层处的路由的共同参考信息。补充或者替代表示针对抽象链路的共享风险,抽象链路数据56可以指示抽象链路的给定集合的资源约束(或者包含抽象链路的集合的SRLG)。针对抽象链路的集合的资源约束可以指定来自集合的仅指定数目的抽象链路可以被选择以在针对网络6的网络拓扑中使用。例如,传输网络54中的特定光纤区段可以具有用于承载在光纤区段上激活的网络链路的40个波长的限制。通过例如在遍历光纤区段的候选链路的特定集合上指定40的资源约束,抽象链路数据56可以确保仅候选链路的特定集合的40的最大值可以由拓扑计算模块58选择以用于网络6中的激活。拓扑计算模块58鉴于流量需求矩阵迭代地分析候选链路和抽象链路数据,以选择候选链路的子集来高效并且鲁棒地承载需求。响应于拓扑计算模块58确定由候选链路的所选择的子集组成的逻辑网络拓扑,拓扑提供模块26可以向传输网络54(或者向网络运营商)信号通知路由候选链路的所选择的子集所要求的所确定的网络拓扑信息19,作为由传输网络54所表示的传输层中的需求。网络拓扑信息19可以包括候选链路的所选择的子集。候选链路的所选择的子集可以在网络拓扑信息19中被表达为传输网络54的需求的集合。通过应用本公开内容中所描述的技术,控制器52可以促进关于网络6拓扑的对于网络的总成本的全局优化,以用于满足流量需求矩阵。在一些示例中,控制器52还可以促进在任何单个元件故障的情况下能够承载流量需求矩阵的网络6的配置,同时还满足应用到网络6的其他约束,诸如针对通过网络的给定路径的延迟、下一跳的数目、定义为在网络上的特定地点可用的总资源等;或者如果中间方案不满足这些所请求的约束,则向总成本应用惩罚。尽管全局优化方案可能未实现在所有情况中,但是该技术可以避免方案梯度的总成本上的至少一些局部最小值,其可能导致鲁棒但是较低的资源成本方案。图2是根据本公开内容的技术的图示被配置为确定用于路由流量的逻辑网络拓扑的示例控制器的框图。响应于接收到需求,控制器100计算和输出满足针对网络6的流量需求矩阵的逻辑网络拓扑。控制器100可以包括例如服务器或者网络控制器,并且可以表示图1的控制器52的示例实例。控制器100包括控制单元102,其耦合到网络接口110以通过一个或多个入站链路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(即,芯片多处理器)实现的一个或多个多核处理器(或者“众核”处理器)内。多核计算平台111执行软件指令,诸如用于定义存储到主存储器108的软件或者计算机程序所使用的那些软件指令。备选地或者附加地,控制单元102可以包括专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)或者用于执行本文所描述的技术的专用硬件的前述示例中的一个或多个的任何组合。控制单元102提供针对网络服务应用104和拓扑元件112的操作环境。在一些示例中,这些模块可以实现为执行在一个或多个服务器的一个或多个虚拟机上的一个或多个过程。也就是说,尽管一般地图示并且描述为执行在单个控制器110上,但是模块104、112的方面可以执行在其他计算设备或者在一个或多个计算设备的不同虚拟机上。网络服务应用104表示向服务提供商网络的客户端提供服务的一个或多个过程,服务提供商网络包括用于管理路径计算域中的连接性的网络6和控制器100。网络服务应用104可以将例如包括电影、电视或者其他媒体内容分布、IP电话(VoIP)、视频点播(VOD)、批量传输、围墙/开放花园(Walled/opengarden)、IP移动子系统(IMS)和其他移动服务和因特网服务提供给至少部分由控制器100控制的服务提供商网络的客户端。网络服务应用104可以向拓扑元件112发出需求以请求网络6的传输服务。网络服务应用104中的一个或多个可以包括或者利用通过其一个或多个客户端应用请求传输服务的客户端接口106。例如,客户端接口106可以表示命令行接口(CLI)或者图形用户接口(GUI)。客户端106还可以或者备选地向客户端应用提供诸如网络服务的应用编程接口(API)。网络服务应用104可以向拓扑元件112发出需求以请求由控制器100所控制的从源到目的地的路径计算域中的相应的路径。例如,需求可以包括所请求的带宽或者其他约束和表示通过由控制器100所管理的路径计算域通信的源和目的地的两个端点。控制单元102将需求存储为需求18数据结构(“需求18”)中的需求的列表。在一些情况下,网络6的服务提供商或者其他管理员可以经由管理接口配置一个或多个需求18。在一些情况下,拓扑元件112可以附加地或者备选地基于由网络6先前经历的需求的模型,导出预计需求18。拓扑元件112接受在路径计算域上的需求的端点之间路由流量的需求。可以针对不同时间和日期并且利用不同带宽要求请求需求。拓扑元件112可以使来自网络服务应用104的需求一致,以基于需求参数和网络资源可用性,将对应的流量的所请求的路径复用到网络6路径计算域上。为了智能地计算网络层6的拓扑,在一些情况下,拓扑元件112可以包括用于接收流量工程信息的拓扑模块116,诸如图1的流量工程信息21,其描述包括路由器4和其接口并且将网络链路相互连接的网络6的可用的资源。拓扑模块116可以执行诸如开放最短路径优先与流量工程扩展(OSPF-TE)、中间系统到中间系统与流量工程扩展(ISIS-TE)、BGP链路状态(BGP-LS)等的一个或多个南向协议以学习针对网络6的流量工程信息。流量工程数据库(TED)126存储由构成控制器100的路径计算域的网络6的拓扑模块116所接收的流量工程信息。TED126可以包括一个或多个链路状态数据库(LSDB),其中在从拓扑服务器所接收和/或由诸如重叠控制器的链路层实体所发现并且然后提供给拓扑模块116的路由协议通告中接收链路和节点数据。在一些实例中,服务提供商或者其他管理实体可以经由管理接口配置TED126内的流量工程或者其他拓扑信息。根据本公开内容中所描述的技术并且为了满足网络6的需求,拓扑元件112的拓扑计算模块114确定和优化针对需求18的路径。拓扑计算模块114应用本公开内容中所描述的技术以迭代地确定针对需求18的方案,以促进用于传输流量的对于网络6和底层传输网络的全局优化的总资源成本。拓扑计算模块114可以表示图1的拓扑计算模块58的示例实例。为此,在一些情况下,拓扑计算模块114获得描述网络6的候选链路和由其物理(传输)路径上的这些候选链路所遭遇的共享风险的抽象链路数据56,以及与诸如链路的物理长度或者延迟的路径优化相关的信息。拓扑计算模块114鉴于需求18迭代地分析候选链路和其他抽象链路数据,以选择候选链路的子集来高效并且鲁棒地承载与需求18相对应的流量。拓扑计算模块114已经选择和路由网络6的候选链路的子集,拓扑提供模块118试图将候选链路的路由路径设置到网络6上。控制器100的拓扑提供模块118可以将路径编程到网络6中,以使得网络6的状态匹配如由拓扑计算模块114所确定的网络6的状态。拓扑提供模块118可以表示图1的拓扑提供模块26的示例。提供路径可以在提交路径之前要求路径验证,以提供分组传输。拓扑提供模块118执行用于路径提供的一个或多个南向协议,以将状态注入诸如路由器4中的任何一个或多个路由器的网络6的元件中。南向协议是指控制器100的部件可以与诸如路由器4的网络6元件通信,以获得或者注入确定网络4的操作的拓扑信息、转发和其他网络信息的协议。例如,南向协议可以包括路径计算单元(PCE)通信协议(PCEP)、开放最短路径优先与流量工程扩展(OSPF-TE)、中间系统到中间系统与流量工程扩展(ISIS-TE)、BGP链路状态(BGP-LS)、NETCONF/Yang、对接到路由系统(I2RS)协议、网络元件的CLI、简单网络管理协议(SNMP)和OpenFlow(或者其他SDN配置协议)。拓扑模块116可以接收来自网络6的更新的流量工程信息,其可以通过网络6的拓扑的拓扑计算模块114触发动态重新计算。例如,一旦接收到新或更新的TE链路或者接收到TE链路已经发生故障的信息,TED126就可以触发拓扑计算模块14以重新计算路径,其可以包括针对候选链路的相应的不同路径以便说明TED126变化。在接收到新或更新的抽象链路数据56时,拓扑计算模块114可以附加地/备选地动态地重新计算更新的网络6拓扑。例如,更新的抽象链路数据56可以指示针对链路的新SRLG,其可以指示先前不同的路径候选现在具有共同的SRLG并且因此不再关于SRLG而不同。因此,拓扑计算模块114可以重新计算针对候选链路的不同路径以便获得候选链路的多样性。图3是根据本公开内容中所描述的技术的图示用于确定和优化逻辑网络拓扑的一个或多个控制器的操作的示例模式的流程图。参考图1的控制器52而描述操作200,但是可以由例如由多个控制器或者路由器控制平面组成的分散的控制平面而应用操作200。拓扑计算模块58获得包括路由器4的网络6的实况拓扑信息21,其在该示例中协作实现IP路由平面(202)。拓扑计算模块58还获得针对网络6的候选链路、可在优化逻辑网络拓扑(203)中使用的候选链路。所确定的方案通常不使用所获得的所有候选链路,并且控制器52应用操作200以确定用于建立最低成本网络拓扑的候选链路的子集。拓扑计算模块58可以通过基于在控制器52中所配置或者由控制器52所接收的用户定义的规则建立候选链路来获得候选链路。拓扑计算模块58可以路由传输网络54中的这些新建立的链路以确定其实际物理长度和新建立的链路在传输层中的其路径中遭遇的共享风险(SRLG)。在一些情况下,当计算开始时,预计算这些路径。为了计算路径,拓扑计算模块58可以计算三个路径,并且优化算法自由地在这些之间选择:1.最短路径2.所计算的“最短不同周期”上的两个路径中的较短的路径3.所计算的“最短不同周期”上的两个路径中的较长的路径这些路径中的前两个路径常常是相同的,但是不一定是必要的情况。拓扑计算模块58可以应用“强”不同路径算法,其在可用的情况下良好地工作以找到考虑SRLG信息的复杂网络中的最短不同循环路径。如果逻辑链路已经存在并且传输网络54中的其路径是已知的,那么可以将这读取到拓扑计算模块58中并且已知路由可以是固定的——并且上文所描述的不同路径集不是确定的。在一些情况下,因为在应用操作200之前预计算这些路径全部,所以拓扑计算模块58可能不试图设计考虑传输网络54中的可用波长的路径。在这样的情况中,拓扑计算模块58相反假定WDM容量不限制设计。备选地,计算模块可以具有关于WDM资源约束的信息(例如,从抽象链路数据56所获得的)并且如果方案不满足这些约束,则向方案应用惩罚。一旦选择路径,则拓扑计算模块58将这些路径映射到在每个传输网络54链路区段或者节点之上承载的IP链路的SRLG信息。在一些实例中,与传输路径有关,拓扑计算模块58可以具有用于基于链路在传输层中“旁路”的IP节点的数目来减少候选链路的集合的用户可配置的参数。这允许根据传输链路拓扑和所经过的设备而不是例如根据距离而减少候选链路集。拓扑计算模块58可以备选地接收包括描述候选链路的信息的抽象链路数据56。在一些情况下,抽象链路数据56是建立为来自传输层的第三方网络管理系统的数据提取的文件。在一些情况下,针对网络6的网络运营商可以通过将脚本应用到可用的传输层数据或者操纵可用的传输层数据来建立这样的文件。通过这种方式,直接从抽象链路数据56获得候选链路信息例如仅提供不包括传输层拓扑的细节的传输网络54的抽象或者受限描述。因此,拓扑计算模块58可以应用用于确定所选择的候选链路的更复杂的约束。例如,网络运营商可以指定链路或者SRLG的任何组上的最大计数、最大延迟、最大容量(或者其任何组合)。拓扑计算模块58可以将这样的约束应用到针对网络6的拓扑确定,其中这样的约束是该方案中的“软约束”,其违反被禁止的约束的要求而接收被添加到总网络成本的惩罚成本(拓扑计算模块58迭代地应用操作200的步骤以确定使这些惩罚降低或者达到0的方案)。描述候选链路的信息可以包括可用的链路和链路上的相关联的链路度量、链路成本和/或SRLG。针对网络6的实况拓扑信息21和所获得的候选链路的组合定义针对网络6的网络拓扑模型。拓扑计算模块58路由网络拓扑模型上的网络6的流量需求(204)。下文关于图4-5包括用于路由流量需求的示例详细操作。然后,拓扑计算模块58执行关于由当前网络拓扑模型所表示的方案的故障模拟,所述当前网络拓扑模型包括在其上拓扑计算模块58已经路由流量需求中的任一个流量需求的候选链路的当前子集(206)。如果例如不能保护流量、未满足特定故障阻力约束或者要求固定设备超过其所约束的容量以便承载流量,则故障模拟确定要应用到方案的惩罚。下文关于图6提供故障模拟的示例细节。拓扑计算模块58确定针对方案的网络4的资源成本和针对方案的惩罚(除在故障模拟期间所确定的那些外)(208)。为了出于优化的目的而确定资源成本,拓扑计算模块58确定多层网络60中的所有设备的总资源成本。这样的成本可以至少部分地基于承载流量所需要的链路能力(或者“尺寸”)。总资源成本公式是运营商可配置的,使得运营商可以关注网络“成本”(诸如总链路“里程”或者“总接口计数”)的单个措施,或者使用公式得到实际成本的现实措施以便形成不同的潜在方案之间的公平比较。在一些情况下,操作可以将至少一些分量添加到成本以反映例如等于“较短的链路”的所有其他比“较长的链路”更好使用等。例如,可以通过将小分量添加到与距离成比例的链路成本来在成本公式中反映这一点。对成本公式的这样的小改变常常使拓扑计算模块58标识针对大问题的有利的方案容易得多,这是因为拓扑计算模块58可以找到沿着成本梯度使方案转向的方向的某种指示。在一些情况下,拓扑计算模块58还可以试图基于节点上的链路的数目和通过其的流量来进行节点设备的简单分配。如从上文描述可以推断,通过接口(链路)计数支配成本的网络的最佳方案与通过链路里程支配成本的网络的最佳方案将看起来非常不同。拓扑计算模块58附加地确定针对方案的惩罚。例如,方案可以违反具有相关联的惩罚的一个或多个约束。如上文所指出的,这样的约束可以包括链路或者SRLG的任何组上的最大计数或者最大容量(或者两者的组合)。因此,拓扑计算模块58可以确定方案违反哪些约束并且应用相关联的惩罚。步骤206的故障模拟还可以累积针对例如在要么正常要么故障条件的情况下的方案中不能路由的流量的惩罚。拓扑计算模块58累积应用到方案的惩罚并且将所积累的总惩罚成本添加到总资源成本以确定方案的总成本(210)。对于优化算法的初始运行(迭代)(212的是分支)而言,拓扑计算模块58不执行与先前方案的比较,而是作为替代修改网络拓扑(214)。为了修改网络6的网络拓扑,拓扑计算模块58可以(1)通过将高(但是不是无限的)惩罚添加到候选链路上的路由度量选择候选链路中用于阻塞的一个候选链路,(2)通过移除先前应用在所选择的候选链路的路由度量上的惩罚选择先前已经阻塞到“未阻塞”的候选链路,或者(3)(在一些情况下)路由传输层中的不同路径上的链路,使得新路径改变由逻辑网络层中的链路所遭遇的共享风险组合传输网络54中的容量要求。拓扑计算模块58可以在阻塞或者未阻塞之间进行选择并且根据随机函数选择链路。然而,在一些情况下,拓扑计算模块58可以应用简单启发法,诸如使较昂贵的链路向阻塞偏置和使较不昂贵的链路向未阻塞偏置,通过向在其上具有非常低流量[例如,非常低比例(所承载的流量/(链路成本))]的阻塞链路和向繁忙节点上的未阻塞较短链路偏置更多,或者通过使选择偏置,使得可以优选地选择作为在其所约束的容量处或大于其的共享资源约束的活动链路以用于阻塞。已经出于算法的目的而修改网络拓扑,拓扑计算模块58应用步骤204、206、208和210以确定具有新路由的流量的新方案和确定新方案的总成本。这是后续的迭代(212的否分支)。拓扑计算模块58将针对新方案的总成本与针对先前方案的总成本相比较(220),并且如果利用新方案总成本已经降低(220的是分支),则拓扑计算模块58接受经修改的网络拓扑并且转到步骤214。然而,如果利用新方案总成本尚未降低(220的否分支),则拓扑计算模块58应用模拟退火函数确定是否接受经修改的网络拓扑,而不管经修改的网络拓扑导致较大的总成本(222)。通过这种方式,拓扑计算模块58可以促进避免总成本梯度的局部最小值以使方案发展为更全局最佳的方案。模拟退火函数是根据依赖于成本增加的幅度和操作200的迭代进度(例如,迭代的数目)的概率而返回正结果的函数。作为一个示例,函数的概率可以定义为:exp(-ΔCT)]]>其中,ΔC是与先前方案相比的成本增加的幅度,并且T是拓扑计算模块58一般地但非排他性地随着迭代数目增加而降低的“温度”参数。如果模拟退火函数返回正结果(222的是分支),则拓扑计算模块58转到步骤214。如果模拟退火函数返回真(222的否分支)(其通常是更可能的),则拓扑计算模块58拒绝经修改的网络拓扑并且恢复针对先前迭代所确定的网络拓扑(224)。通过这种方式,拓扑计算模块58可以有效地跳出局部最小值。在步骤214处,拓扑计算模块58通过阻塞或者未阻塞如上文所描述的一个或多个候选链路来修改网络拓扑(214)。如果尚未到达待执行的迭代的数目(216的否分支),则拓扑计算模块58修改在步骤222中所应用的模拟退火函数的温度参数(218)。基于迭代的数目的可配置的阈值或者一些其他方案,该降低可以与迭代的数目成比例。参数T可以是用户可配置的或者依赖于计算的一些方面,诸如候选链路的数目或者其他方面。为了促进全局最佳算法,拓扑计算模块58应当在其中改变的合理百分比将增加成本并且然后逐渐地降低该百分比的温度区域中花费尽可能多的时间。作为用于确定T的一个示例,在操作200的开始,拓扑计算模块58将目标百分比设置到10%,使得网络拓扑修改的10%导致成本增加。最后,目标百分比设定到0%。在迭代期间,目标百分比随着迭代进程而线性地降低。例如,每隔N次迭代,拓扑计算模块58将检查增加成本的改变的实际百分比并且将此对目标值进行检查。如果实际百分比是太高,那么拓扑计算模块58将减少参数T。如果该实际百分比是太低,那么拓扑计算模块58将增加参数T。下文在图6-8中描绘了该过程的示例中间结果和最终结果。一旦已经到达迭代循环限制并且执行要执行的迭代的数目(216的是),则拓扑计算模块58退出操作。在一些情况下,步骤216的迭代完成检查基于其他接受准则,诸如迭代:针对固定的经过时间,直到总资源成本小于某个可接受的值,或者直到满足某个其他接受准则。在操作200的运行期间,拓扑计算模块58存储在迭代中的任一个迭代期间所标识的最低成本方案的方案。尽管在操作200期间所标识的最低成本方案可能不是全局最佳的,但是方案可以仍然对初始确定或者至少在一些实例中对可以实际上通过备选方法获得的方案进行优化。拓扑提供模块26将针对方案(其可以包括所选择的候选链路)所确定的拓扑数据输出到传输层,以建立所选择的候选链路以建立所确定的网络6拓扑(226)。在一些情况下,拓扑提供模块26对所选择的候选链路进行配置。图4是图示将流量路由到网络上的控制器的操作的示例模式的流程图。参考图1的控制器52而描述操作300,但是可以由例如由多个控制器或者路由器控制平面组成的分散的控制平面而应用操作300。拓扑计算模块58初始地预处理流量需求的列表以根据源节点(例如,路由器4之一)来核对要路由的流量需求的列表(302)。对于每个源节点而言,拓扑计算模块58审核对应的核对列表以标识针对源节点的目的地的列表(例如,路由器4的任何集合)(304)。然后,对于每个源节点而言,拓扑计算模块58计算从源节点到针对源节点中的目的地的列表中的每个目的地的至少一个最短路径(306)。拓扑计算模块58可以利用所应用的“开放”最短路径优先(开放SPF)算法的特性,其花费与其找到从节点到所有节点的路径类似时间量找到从节点到单个节点的路径。这利用预处理步骤302、304。在一些情况下,拓扑计算模块58可以使用(例如,图2的多核计算平台111的)多个核心来执行多个并行线程以执行步骤306。计算针对每个源节点到其相关联的目的地列表的最短路径是独立的操作,并且因此多个线程中的每个可以独立地计算针对各种源节点的集合的不同子集的最短路径。例如,预处理步骤302、304可以导致源节点的队列,每个源节点要求最短路径的计算,并且多个线程可以使来自用于处理的队列的源节点出队以共同地执行步骤306。为了确保同步,每个源节点可以与互斥元或者其他同步基元相关联。在DavidWood于2014年9月29日提交的题为“BatchedPathComputationinResource-ConstrainedNetworks”的美国专利申请第14/500,736号中大体上找到关于计算约束的最短路径和最短路径的多线程计算的附加细节,其整体内容通过引用并入本文。在一些情况下,至少一个最短路径可以包括多个等价多径(ECMP)路径。为了找到采取通过网络的不同路由的多个ECMP路径,拓扑计算模块58可以若干次调用最短路径算法并且通过交换链路和路径搜索顺序实现不同的路径(下文参考图5所描述的附加示例细节)。已经计算最短路径,拓扑计算模块58然后将表示流量需求的流路由到最短路径上(308)。拓扑计算模块58将流量添加到最短路径的链路和最短路径的中间节点。在ECMP路径是可用的地方,拓扑计算模块58可以递归地分割可用的ECMP路径之上的流量、通过该递归算法将流量分配给各路径并且将分割的流量路由到网络上。图5是根据本文所描述的技术的图示用于确定多个等价多径(ECMP)路径的操作的示例模式的流程图。操作400的模式可以是图4的操作300的步骤306的至少一部分的示例实现方案,并且操作400参考图1的控制器52而描述操作400。由拓扑计算模块58所应用的原始最短路径算法找到以在节点上以链路的顺序排序的路径。因此,如果对链路重新排序使得具有相同度量的链路以不同的顺序出现,则所找到的路径将是不同的。第一次调用重新排序,具有相同度量的链路的顺序简单地反转。在第一调用之后,随机地搅乱顺序。最短路径算法中的其他排序来自搜索已经连接的节点列表的顺序。如由拓扑计算模块58所应用的,随机地搅乱该节点列表,并且当找到新连接节点时,其放置在该列表中的随机位置中。因此,如果存在相关联的ECMP路径,则最短路径算法每次调用算法时将找到不同的路径。因此,拓扑计算模块58迭代地计算源节点的最短路径并且将各列表重新排序。迭代中的第一步是计算从源节点到针对源节点中的目的地的列表中的每个目的地的至少一个最短路径(402)。如果标识任何新最短路径,则拓扑计算模块58将这些保存为源节点的新ECMP路径。然后,拓扑计算模块58可以对在节点上排序的链路的顺序和对已经连接的节点的排序进行重新排序(406)。拓扑计算模块58围绕循环迭代,直到源节点的ECMP的列表停止增长(408的是分支)或者标识ECMP的最大数目(410的是分支)。最大数目可以是例如5、10、12或者15。在这点上,流量需求具有与其相关联的ECMP路径的列表。网络6的路由器4中的ECMP负载均衡算法将跨每个分支路径均匀地分割流量。拓扑计算模块58应用上文的递归模式来分配每个分支路径上的需求的流量以模仿该行为。以如下伪代码提供上文步骤2的示例最短路径优先算法。该算法对本地于每个节点的数组起作用:double*distanceCosts;unsigned*routeMarks;unsigned*searchEntryPoints;unsigned*localDestinationMarks;Node**connectedNodes;Path*pathTable;在一些情况下,上文局部数组可以例如是链路或者节点自身的指针或者列表中的迭代器指针。初始化算法:注意该算法看起来具有3个嵌套层次。然而,最内层循环仅从该节点上使用的最后的链路到尚未连接的第一邻居进行迭代。因此,其通常仅循环1或2次,并且从而降低了算法复杂度。使用排序的链路的该算法可以针对节点将具有(至少原则上)大量的可能链路使用的情况提供很大的加速。对于节点将通常仅具有几个邻居的“正常”网络上的直接路由计算而言,存在一些加速,但是优点可以没有实质性。即便如此,使用批量处理找到来自单个源节点的目的地的列表的路由将加速所有情况中的开放最短路径计算。如上文所指出的,在上文示例中,拓扑计算模块58执行开放SPF(内部网关协议(IGP))路由计算,并且然后基于该开放路由设定网络部件上的容量要求。在一些情况下,路径确定可以作为替代或者附加地使用约束的SPF(CSPF)设计基于CSPF的路由要求的LSP的集合的网络容量要求。在这样的情况下,拓扑计算模块58可以通过修改针对网络6的候选链路(或者节点)的最大容量而不是通过简单地阻塞或者未阻塞来修改网络拓扑模型。拓扑计算模块58可以应用上文并入的Wood的美国专利申请第14/500,736号中所描述的批处理路径计算技术,以执行一些情况中的CSPF计算。图6是根据本文所描述的技术的图示故障模拟的操作的示例模式的流程图。操作500的模式可以是图3的操作200的步骤204、206的至少一部分的示例实现方案,并且参考图1的控制器52而描述操作500。在操作500中,拓扑计算模块58确定在链路上和通过节点的最坏情况的流量水平,并且拓扑计算模块58使用该水平并且基于路由到其的通过流量来设定链路的尺寸和节点的大小。拓扑计算模块58进而使多层网络60的多个部件发生故障(502)。例如,拓扑计算模块58可以使用于针对方案路由流量的每个候选链路、通过其流量已经路由的路由器4中的每个路由器4、每个传输链路(或者SRLG,如果如抽象链路所获得的候选链路的话)、每个传输节点(如果已知的话)和每个地点发生故障。故障的部件的类型可以由网络6的网络运营商可配置。对于每个故障的部件而言,拓扑计算模块58标识受影响的流量、通过源节点布置受影响的流量并且生成针对每个源节点的目的地列表(504)。拓扑计算模块58生成由故障所影响的需求的列表(506)。对于在故障节点处发源或者终止的流量而言,拓扑计算模块58可以从路由网络模型移除流量。对于通过故障部件的流量而言,拓扑计算模块58试图对流量进行重新路由。为了重新路由,拓扑计算模块58确定到每个受影响的源节点的目的地的最短路径(508)。步骤508可以与图4的步骤306类似。拓扑计算模块58将受影响的流重新路由到最短路径(510)上。这样的重新路由可以包括递归地分割可用的ECMP路径之上的经重新路由的流量、将分割的流量路由到网络模型上、将流量添加到链路和中间节点。另外,拓扑计算模块58可以通过链路上的网络模型和通过节点来存储描述最坏情况的流量水平的数据(这些可以定义针对这些元件的尺寸)。拓扑计算模块58还可以添加针对由于故障不能重新路由的流量的惩罚(512)。操作200可以将所有这样的惩罚并入针对方案的总成本中。图7-9描绘了根据本公开内容中所描述的技术的图示在用于确定网络的网络拓扑的示例运行期间的中间和最终参数和结果的图表。图表仅是说明性的。图7描绘了由拓扑计算模块58示出目标比例602的图标600,其具有针对给定迭代的值目标比例602将导致成本增加的目标概率。在该示例中,针对迭代1的初始目标比例被设置到10%,并且最后目标百分比设定到0%。在迭代期间,目标百分比随着迭代进程而线性地降低。例如,每隔N次迭代,拓扑计算模块58将检查增加成本的变化的实际百分比(在图表600中描绘为实际比例604)并且将此对目标值进行检查。如果实际百分比是太高,那么拓扑计算模块58将减少针对模拟退火函数的温度参数T。如果该实际百分比是太低,那么拓扑计算模块58将增加参数T。图8描绘了本公开内容中所描述的技术的用于确定网络的网络拓扑的示例运行的模拟退火函数的温度参数T的图表610。当拓扑计算模块58调节T的值以试图满足图6的图表600中所描绘的目标比例602时,图表610图示了不稳定但是向下趋势。图9描绘了根据本公开内容中所描述的技术的图示在用于确定网络的网络拓扑的示例运行期间所确定的中间和最终总成本的图表620。当前总成本线622图示了由针对算法的迭代的拓扑计算模块58所确定的总成本。最好总成本线624图示了由直到该点的拓扑计算模块58所获得的最低成本方案的总成本。注意,在该示例中,初始迭代导致未再次到达直到在运行中远得多的最好总成本(在迭代~55,000之后)。方案实际上首先漂移到明显较高的成本。当前总成本与最好总成本之间的大的差异图示了存储还在运行的过程期间所标识的最好方案的重要性。可以以硬件、软件、固件或者其任何组合实现本文所描述的技术。如模块、单元或者部件所描述的各种特征可以一起实现在集成逻辑设备中或者分离的但可互操作的逻辑设备或者其他硬件设备。在一些情况下,电子电路的各种特征可以实现为诸如集成电路芯片或者芯片集的一个或多个集成电路设备。如果以硬件实现,则本公开内容可以涉及诸如处理器或者集成电路的装置,诸如集成电路芯片或者芯片集。备选地或者附加地,如果以软件或者固件实现,则本技术可以至少部分由计算机可读数据存储介质实现,其包括在执行时使得处理器执行上文所描述的方法中的一个或多个方法。例如,计算机可读数据存储介质可以存储这样的指令以用于由处理器执行。计算机可读介质可以形成计算机程序产品的一部分,其可以包括封装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、磁性或者光学数据存储介质等。在一些示例中,制造品可以包括一个或多个计算机可读存储介质。在一些示例中,计算机可读存储介质可以包括非瞬态介质。术语“非瞬态”可以指示存储介质不是实现在载波或者传播信号中。在某些示例中,非瞬态存储介质可以存储能够随时间改变(例如,在RAM或者高速缓存中)的数据。代码或者指令可以是由包括一个或多个处理器的处理电路执行的软件和/或固件,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他等价的集成或者分离的逻辑电路。因此,如本文所使用的术语“处理器”可以指代适合于本文所描述的技术的实现方案的前述结构或者任何其他结构中的任一种结构。另外,在一些方面中,本公开内容中所描述的功能性可以被提供在软件模块或者硬件模块内。作为上文的补充或者取代,描述了以下示例。以下示例中的任一个示例所描述的特征可以与本文所描述的其他示例中的任一个示例一起利用。示例1.一种方法,包括:由包括网络层和底层传输层的多层网络的控制器获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;由控制器至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;由控制器在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,该经修改的网络拓扑包括候选链路的第二所选择的子集;以及由控制器输出第一方案或者第二方案中具有最低总成本的一个的拓扑数据,以配置多层网络,最低总成本包括第一方案或者第二方案中的一个方案的对于网络的总资源成本。示例2.根据示例1的方法,其中抽象链路数据指示针对多个候选链路中的每个候选链路的至少一个共享风险链路组,其中确定第二方案包括:由控制器至少基于网络拓扑和多个候选链路中的每个候选链路的至少一个共享风险链路组,通过将惩罚成本应用到多个候选链路中的第二子集的第一候选链路和第二候选链路确定第二方案,其中第二方案的最低总成本包括惩罚成本。示例3.根据示例1的方法,其中获得抽象链路数据包括:由控制器接收针对传输层的抽象链路数据结构,抽象链路数据结构包括抽象链路数据。示例4.根据示例3的方法,其中接收抽象链路数据结构:包括由控制器从管理实现传输层的传输网络的网络管理系统的控制器接收抽象链路数据结构。示例5.根据示例1的方法,还包括:由控制器将多个流量需求路由到网络拓扑,多个流量需求中的每个流量需求表示针对网络层的端到端流量。示例6.根据示例5的方法,还包括:由控制器通过选择在其上控制器已经路由多个流量需求的流量需求的候选链路,确定候选链路中的第一所选择的子集。示例7.根据示例1的方法,其中,经修改的网络拓扑包括第一经修改的网络拓扑,所述方法还包括:由控制器在基于第一经修改的网络拓扑生成第二经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案更低的总成本,确定包括网络层的第二经修改的网络拓扑的第三方案,该第二经修改的网络拓扑包括候选链路的第三所选择的子集;由控制器在基于网络拓扑生成第三经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案更高的总成本,确定包括网络层的第三经修改的网络拓扑的第四方案,该第三经修改的网络拓扑包括候选链路的第三所选择的子集。示例8.根据示例1的方法,还包括:由控制器确定针对从第一方案到第二方案的总成本增加的幅度;并且由控制器基于总成本增加的幅度和温度参数来确定模拟退火函数的结果。示例9.根据示例8的方法,还包括:由控制器根据模拟退火函数的目标概率,设置温度参数,目标概率是针对从第一方案到第二方案的总成本增加的概率。示例10.根据示例1的方法,其中经修改的网络拓扑包括第一经修改的网络拓扑,所述方法还包括:由控制器确定从第一方案到第二方案的总成本增加的幅度;由控制器基于总成本增加的幅度和温度参数,确定模拟退火函数的结果;由控制器在基于第一经修改的网络拓扑生成第二经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案具有更低的总成本并且仅当模拟退火函数的结果是正时,确定包括网络层的第二经修改的网络拓扑的第三方案,该第二经修改的网络拓扑包括候选链路中的第三所选择的子集;由控制器在基于网络拓扑生成第三经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案更高的总成本并且仅当模拟退火函数的结果是负时,确定包括网络层的第三经修改的网络拓扑的第四方案,该第三经修改的网络拓扑包括候选链路的第三所选择的子集。示例11.根据示例1的方法,还包括:由控制器将多个流量需求路由到网络拓扑,多个流量需求中的每个流量需求表示映射到针对网络层的标签交换路径的端到端流量。示例12.一种用于包括控制器和底层传输层的多层网络的控制器,所述控制器包括:一个或多个处理器,其耦合到存储器;拓扑计算模块,其被配置用于由一个或多个处理器执行以:获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;以及在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,该经修改的网络拓扑包括候选链路中的第二所选择的子集;以及拓扑提供模块,其被配置用于由一个或多个处理器执行以输出第一方案或者第二方案中具有最低总成本的一个的拓扑数据,以配置多层网络,最低总成本包括第一方案或者第二方案中的一个方案的对于网络的总资源成本。示例13.根据示例12的控制器,其中抽象链路数据指示用于多个候选链路中的每个候选链路的至少一个共享风险链路组,其中为了确定第二方案,拓扑计算模块至少基于网络拓扑和多个候选链路中的每个候选链路的至少一个共享风险链路组,通过将惩罚成本应用到多个候选链路的第二子集中的第一候选链路和第二候选链路确定第二方案,并且其中第二方案的最低总成本包括惩罚成本。示例14.根据示例12的控制器,其中为了获得抽象链路数据,拓扑计算模块接收针对传输层的抽象链路数据结构,抽象链路数据结构包括抽象链路数据。示例15.根据示例14的控制器,其中为了接收抽象链路数据结构,拓扑计算模块从管理实现传输层的传输网络的网络管理系统接收抽象链路数据结构。示例16.根据示例12的控制器,其中拓扑计算模块还被配置用于由一个或多个处理器执行以:将多个流量需求路由到网络拓扑,多个流量需求中的每个流量需求表示针对网络层的端到端流量。示例17.根据示例16的控制器,其中拓扑计算模块还被配置用于由一个或多个处理器执行以:通过选择在其上控制器已经路由多个流量需求的流量需求的候选链路,确定候选链路中的第一所选择的子集。示例18.根据示例12的控制器,其中经修改的网络拓扑包括第一经修改的网络拓扑,并且其中拓扑计算模块还被配置用于由一个或多个处理器执行以:在基于第一经修改的网络拓扑生成第二经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案更低的总成本,确定包括网络层的第二经修改的网络拓扑的第三方案,该第二经修改的网络拓扑包括候选链路中的第三所选择的子集;以及在基于网络拓扑生成第三经修改的网络拓扑之后并且响应于确定第二方案具有比第一方案更高的总成本,确定包括网络层的第三经修改的网络拓扑的第四方案,该第三经修改的网络拓扑包括候选链路中的第三所选择的子集。示例19.根据示例12的控制器,其中拓扑计算模块还被配置用于由一个或多个处理器执行以:由控制器确定从第一方案到第二方案的总成本增加的幅度;以及基于总成本增加的幅度和温度参数,由控制器确定模拟退火函数的结果。示例20.一种非瞬态计算机可读介质,包括用于使得包括网络层和底层传输层的多层网络的控制器的一个或多个可编程处理器执行以下各项的指令:获得描述多个候选链路的抽象链路数据,其中多个候选链路中的每个候选链路在传输层中被路由并且可用在网络层的网络拓扑中;至少基于抽象链路数据,确定包括网络层的网络拓扑的第一方案,该网络拓扑包括候选链路中的第一所选择的子集;在至少基于网络拓扑和抽象链路数据生成经修改的网络拓扑之后,确定包括网络层的经修改的网络拓扑的第二方案,该经修改的网络拓扑包括候选链路的第二所选择的子集;以及第一方案或者第二方案中具有最低总成本的一个方案的拓扑数据,以配置多层网络输出,最低总成本包括第一方案或者第二方案中的一个方案的对于网络的总资源成本。此外,上文所描述的任何示例中所阐述的任何特定特征可以组合到所描述的技术的有益示例中。也就是说,任何特定特征通常可适用于本发明的所有示例。已经描述本发明的各种示例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1