数据联网的制作方法

文档序号:7605533阅读:241来源:国知局
专利名称:数据联网的制作方法
技术领域
本发明涉及数据联网。更具体地说,本发明并不排它地涉及在数据或通信网络中选择流量需求并确定其路径的系统和方法。
背景技术
通常,因特网和通信或数据网络已成为广泛地商业、政府和个人活动的关键促成因素。这些网络越来越多地被用作通用的信息器具、商业通信工具、娱乐源,以及传统的电话网络和广播媒体的替代物。
流量部署处理在具体物理拓扑上用户流量流动(需求)的选择和路由。该问题是,给定一组候选部署在网络拓扑上的流量流动需求,从该组中选择一个代表“被部署”的流量需求的子集(即,由网络实际传送的需求,其可以是整个的给定组或某个子集),并为所部署的需求计算一组路径。所选择的需求以及为它们所选的路径应当使得网络利用率和其他网络特性最优化,并且在需求无法都令人满意地部署在网络上时,使得选择标准最优化,例如所部署流量的数量和/或值。注意,流量部署的含义大于路由,而不是相反,这是因为流量部署是在选择在网络上路由的流量流动之外又额外考虑的。
通常,通信网络由节点和链路组成。需求由其源节点和目的地节点定义,通常也由某种带宽要求来定义。其他的要求例如可以包括给定的最大路径延迟或在不部署该需求时招致的需求成本损失。在正常操作条件下传送流量的路径被称为“主路径”。
然而,流量部署问题也可以包括保护流量免受网络故障的机制。这包括计算预先构造的备用路径,其确保了在单个或多个链路或节点发生故障的情况下流量流动仍然能在网络上传送。
目前存在不同的利用预先构造的备用路径进行保护的方案。例如,对需求的路径保护包括计算从需求的源到其目的地的可替代“次级路径”。次级路径一直处于非激活状态,直到发生使需求的主路径中断的网络故障为止,此时其变为激活状态。如果次级路径已被计算出来以避免引起主路径中断的故障元件,则它即使在故障后仍然能够在网络上传送流量,从而提供了针对该故障情形的保护。注意,在路径保护方案下,给定流量需求的主路径和次级路径是彼此独立的,这是因为它们需要避免经过同一个可能发生故障的元件。
在另一类保护方案中,被称为局部保护(例如,在MPLS网络中,迂回或快速重新路由的保护是局部保护的实例)的流量不被从源到目的地重新路由。相反地,当其到达故障元件的附近时,流量被局部地重新路由绕过该一个或多个故障点。
另一种可能的被称为“负载均衡”的流量部署特征包括计算单个流量需求的多个路径,从而使得这多个路径共同传送该需求所需的网络上的带宽。负载均衡可应用于正常和/或故障保护情形。
传统上,利用基于线性规划(LP)的技术(如混合整数规划(MIP)技术),或者利用基于最短路径优先(SPF)或有约束最短路径优先(CSPF)的技术来处理流量部署问题。然而,这些方法存在若干的缺点和/或限制。
MIP和其他基于LP的传统方法在解决全流量部署问题时是不实用的,这是因为即使对于相对较小的问题也需要大量的存储器。
作为示例,考虑具有约700个链路的网络。假定要部署1000个流动。为了利用多物流模型对此建模,对于每个链路上的每个流动需要一个变量。这意味着仅对问题的该部分建模就需要700,000个变量。或者,如果用路径变量来代表每个可能路由,则问题的规模更大。这两种替代规范都导致了不实用的大的LP矩阵,因而导致不可接受的存储器要求。
该问题的一种方法是列生成,其递增地扩展LP(变量和约束)矩阵(见2000,Operations Research,C.Barnhart,C.A.Hane,P.H.Vance,″Using Branch-and-Price-and-Cut to solve origin-destination integer multi-commodity flow problems″)。然而,在减小问题强度的同时,列生成继续有扩展性的限制。
另一个因素是MIP和其他基于LP的传统方法是不灵活的,这是因为它们只接受某些类别的约束。这阻碍了流量部署模型在考虑新的要求时的扩展。
至于SPF和CSPF算法,其缺点在于它们是不完全的,并且搜索空间的覆盖度较低。这意味着对于许多问题实例其会丧失可接受的或高质量的解决方案。

发明内容
本发明的目的是在通信或数据网络中选择流量流动(需求)以部署并确定其路径。本发明的另一个目的是减少上述的至少某些缺点。
根据本发明的一个方面,提供了一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定流量流动需求中选择一个子集,并利用算法混杂和试探生成,在考虑一组约束的情况下为所选择的需求计算多条路径,其中,所述算法混杂将回溯搜索技术与局部一致性技术组合在一起(BT+CS)。因此,利用一个或多个试探生成器来引导搜索。即,采用了其他的搜索技术,其解决了路由子问题,或者解决了流量部署问题的其他任意松弛。
与BT+CS或单个解算器相比,利用混杂算法可以实现更强大的搜索策略,其中混杂算法利用试探生成器将其他解算器(搜索技术)集成到BT+CS中。在“试探回溯”混杂中,复杂问题被解分为子问题。然后,通过将BT+CS集成到其他特殊的解算器中,来解决这些子问题,这些特殊的解算器要么不能解决,要么无法有效解决全部问题,但又适合于有效地解决具体子问题。
在该混杂技术中,BT+CS充当主搜索策略,而试探生成器生成用来引导搜索并限制整个搜索空间大小的部分解决方案(即,不完全或违反某些约束的解决方案)。创建暂定解决方案(试探)来引导搜索和仍然违反约束或者可以进一步改进诸如利用率之类的优化标准的重点区域。随着作出进一步的搜索选择以实现可行的或更好的解决方案,这些暂定解决方案(试探)被试探生成器修改以反映主BT+CS搜索选择。通过使搜索关注于试探违反了给定的一组约束中的至少一个的区域,来实现一致搜索。注意,这些遭违反的约束可以是要解决的流量部署问题实例所固有的约束,或者是被优化程序所加上以确保算法搜索出比已发现的解决方案更高质量的解决方案的搜索约束。
取决于BT+CS搜索选择机制和集成的试探生成器解算器的属性,可以使搜索成为合理且sat-complete(搜索算法在有限步骤内发现可行的解决方案或者证明解决方案不存在)的,或者合理且opt-complete(搜索算法在有限步骤内发现最优的解决方案或者证明解决方案不存在)的,这允许搜索覆盖范围扩展到适应搜索覆盖和性能要求的程度。
通过使用混杂了局部一致性方法和一个或多个松弛方法的试探回溯搜索来解决流量部署问题,在搜索中的任何点处,试探生成器可关注于需求的一个小的子集上,并假定余下的需求保留其早先的松弛路由。这改进了搜索算法的可扩展性。
混合整数规划、基于线性规划的任何其他技术、局部一致性技术、特殊的流算法、SPF或CSPF算法、或者任何其他合适的算法可以用作试探生成器,并利用试探回溯搜索混杂法而被混杂到BT+CS中。
该方法可用于计算一组流量流动需求的流量部署,和/或用于在需求、拓扑或约束发生变化的情形中修复现有的流量部署解决方案。流量部署问题的目标可以是选择并路由主路径、或保护方案所需的备用路径、或在单个或多个保护方案的情况下主路径和备用路径的任意组合。对于某些类别的保护,保护路径独立于主路径。例如,在“带宽保护”方案下,用于流经可能发生故障的流量的局部快速重新路由备用路径的计算独立于主路径的计算。对于其他类别的保护,主流量和备用流量部署子问题是相互独立的,并且作为相同的流量部署问题中的一部分加以处理。
根据本发明的另一方面,提供了一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定流量流动需求中选择一个子集,并在考虑一组约束的情况下为所选择的需求计算多个路径,其中,所述方法包括以下步骤(a)将约束划分为“容易约束”和“困难约束”;(b)获得满足容易约束的试探;(c)确定所述试探是否违反一个或多个困难约束;以及(d)如果在步骤(c)中确定所述试探违反困难约束,则从所述试探开始,搜索满足困难约束的一个或多个解决方案;并且其中,所述方法采用局部一致性技术。
根据本发明的另一方面,提供了一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括a)从一组给定流量流动需求中选择一个子集;b)在考虑一组约束的情况下计算所选需求的多个路径;c)获得满足全组约束中的一个子集的暂定解决方案;d)确定该暂定解决方案是否违反全组约束;以及e)如果在步骤(d)中确定该暂定解决方案违反全组约束,则从暂定解决方案开始,搜索满足全组约束的一个或多个可行解决方案;并且其中应用了局部一致性技术。
根据本发明的另一方面,提供了一种通信网络中的路由方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定流量流动需求中选择一个子集,并利用回溯搜索在考虑一组约束的情况下为所选择的需求计算多个路径,其中,混合整数规划、采用线性规划的其他技术、SPF或CSPF被用来获得试探,并且其中应用了局部一致性技术。
以这种方式,可以以改进方式实现部署诸如主流量或备用流量部署之类的路径的复杂问题。该搜索方法在合理的时间内产生了高质量的解决方案,并具有可扩展性。
这里所描述的各种保护和负载均衡方案可以独立使用,也可以组合使用。本发明的实施例通常可适用于流量部署和路径计算,从而可适用于在不同的保护和负载均衡方案下选择需求并计算路径以组合主情形和备用情形的算法中。这应用于不同的应用领域,包括但不限于MPLS流量工程、ATM和光网络。


从下面的描述和附图(仅用于示例目的)中,将清楚了解本发明另外的方面和优点,其中
图1图示了因特网协议(IP)网络的简化示例;
图2图示了网络和可实现本发明的网络管理系统之间的联系;
图3以简化方式图示了回溯搜索技术的搜索树中的节点;
图4图示了具有所要求的边的单个需求试探;以及
图5图示了正带宽和负带宽的概念。
具体实施例方式
图1图示了因特网协议(IP)网络的简化示例。通常,这种网络包括节点和链路。
节点指诸如路由器、交换机或局部网络之类的网络设备。
节点通常经由网络电缆和/或连接接口之类的链路连接。
有向链路的带宽定义了在任何时刻可传输经过该链路的流量的最大容量。
从源到目的地节点的路径是源和目的地节点之间的链路节点的序列。
路由是遵循给定的路由协议的网络的端到端内部节点之间的路径。
外部节点之间的流量流动是一段时间内这些节点之间的某一特定路由上的流量负载。
路由器是网络接口之间的互连。其负责在这些接口之间转发分组。其还执行某些局部网络管理任务并参与路由协议的操作。分组转发可根据路由算法定义,或者可根据路由表中预定义的一组静态路由定义。
路由算法生成用于在给定网络的任意两个节点之间传输数据流量的可用路由。
图1的节点可以以各种协议指定的方式交互操作,所述各种协议例如包括本领域中已知的TCP/IP、诸如链路管理协议(LMP)之类的合适的链路层协议以及像多协议标签交换(MPLS)之类的协议。更多的细节可以例如在下面的文献中找到
E.Rosen等人,“Multiprotocol Label Switching Architecture”,RFC3031,因特网工程任务组,2001年1月。
Braden等人,“Resource ReSerVation Protocol(RSVP)-Version lFunctional Specification”,RFC 2205,因特网工程任务组,1997年9月。
Awduche等人,“Requirements for Traffic Engineering Over MPLS”,RFC 2702,因特网工程任务组,1999年9月。
Ashwood-Smith等人,“Generalized MPLS Signaling-RSVP-TEExtensions”,因特网草案,因特网工程任务组,2001年10月。
Pan等人,“Fast Reroute Techniques in RSVP-TE”,因特网草案,因特网工程任务组,2001年10月。
这里为了一切目的,将以上文献的全部内容通过引用结合于此。
多协议标签交换(MPLS)是用于转发分组经过网络的方法。其使得位于网络边缘的路由器能够将标签应用到分组。网络核心中的ATM交换机或现有的路由器能够根据标签以最小的查找开销来交换分组。
流量工程(TE)涉及用来使路由的流量经由除了某一特定路径以外的路径通过网络的技术和过程,其中如果使用了标准的路由方法则选择所述某一特定路径。
隧道是两个对等体(如两个路由器)之间的安全通信。流量工程隧道是用于流量工程的标签交换隧道。这种隧道是利用除了通常的第三层路由以外的方式建立;其用来引导流量经过与第三层路由使隧道所采用的路径不相同的路径。
延迟是发送者发起事务的初始化和发送者所接收的第一次响应之间的时间,或者是将数据分组从源经过给定路径移动到目的地所需的时间。某些语音和视频应用要求延迟在一定范围内。
抖动是分组间的延迟偏差,即,分组间到达和离开之间的差值。抖动是语音和视频应用的重要度量。
多重带宽池流量工程允许基于约束的路由(CBR)。CBR所满足的约束之一是所选路径上所需带宽的可用性。可以扩展流量工程从而能够执行“担保”流量的CBR,其所满足的带宽约束比用于常规流量的CBR所满足的带宽约束更为严格。通常,这被称为多重带宽池容量,或者如果一个带宽池是其他带宽池的一部分则被称为多重嵌套带宽池容量。在MPLS流量工程中,更为严格的带宽被称为子池,而常规TE隧道带宽被称为全局池。在下面描述的特定算法中,假定子池为全局池的一部分。这种满足更为严格的带宽约束的能力转变为实现担保流量的更高服务性能(在延迟、抖动或丢失方面)质量的能力。
用于计算流量路径的系统可以实现在网络管理系统中。
图2图示了网络和可实现本发明的网络管理系统60之间的联系。网络管理系统60执行网络50的网络管理功能。网络管理系统利用诸如简单网络管理协议(SNMP)之类的网络管理协议与网络通信。网络管理系统60包括处理器62和存储器64,还可以包括商业上可获得的服务器计算机。执行路径计算的计算机程序存储在存储器64中,并且可由处理器62执行。
或者,用于计算流量路径的系统可以实现在一个或多个通信路由器中。
流量部署问题
参考图1,以简化方式描述本发明的一般想法。图1中的网络包含节点A到H以及有向链路(或边)α到s。每个边与给定带宽池容量相关联。另外,每个边可以与给定延迟和/或给定代价度量相关联。
现在的任务是部署一组需求,其中每个需求由其源和目的地节点定义。简化示例中的该组需求可以例如是部署从节点A到E的路径、从节点A到H的另一条路径以及从C到G的第三条路径。每个需求有给定的带宽要求,也可能需要最大延迟,或者如果无法生成满足需求的路径则可以将给定的损失与需求相关联。
现在的问题是部署该组需求从而使得满足某些约束。在该示例中,对于每个边,约束是使用具体边的路径所需的总带宽不超过其给定带宽池容量。
可以规范其他的约束,从而使得该需求需要“链路不相交的”次级路径,以用于路径保护,或者不允许负载平衡,即,对于每个需求只存在一条路径或不存在路径,或者使得每个需求的路径的总延迟不超过最大延迟要求。
如果对于该问题存在多于一种可能的解决方案,则可以根据某些优化标准选择“最佳的”解决方案。例如,可以这样解决流量部署问题,使得由于未部署到的需求而引起的总损失最小。
或者,可以使用包含多个标准的加权的或分级的结构优化功能。例如,如果存在多于一种的具有最小未部署需求的损失代价的解决方案,则可以进一步使用优化标准来发现“最优解决方案”。例如,可以选择具有最小最坏情形(最大)容量池利用率的解决方案,这是因为最小最坏情形容量池利用率确保了在已发现路径的上下文中,未来的需求有更多机会被接受,并且由于经过低利用率链路的流量更不容易受到瞬时拥塞的影响,因而实现了更好的传输质量。
可以扩展流量部署问题,从而使得考虑到每个链路的多重嵌套池。在MPLS流量工程中,每个链路可以例如与给定“子池”和“全局池”的利用容量相关联。
有关的问题是在约束、需求或拓扑已发生变化的新情景中修复一组现有的路径。这种流量部署的变化在这里被称为“需求固定”。
这种情况下的判决标准可以规范为使扰动量最小,其中扰动是网络中断的测量。例如,扰动可以被定义为为了发现解决方案不得不改变的现有路径的数目。
从而,路径部署问题可以由一组变量V、每个变量的函数D和一组约束关系C规范,其中函数D将每个变量Vi映射到也称为变量域的一组值Di,每个约束关系C是关于V中的变量的子集的。
解决方案就是将V中的每个变量Vi分配到来自于其对应域Di的值,从而满足C中的每个约束。
以上规范涉及的是流量部署问题的约束满足方面。另外,目标函数可以评价解决方案的质量,从而允许规范优化方面。
具有局部一致性的回溯搜索
根据本发明的一个实施例,流量部署问题建立了一种算法,其将回溯搜索与局部一致性技术组合在一起。
回溯搜索算法(BT)由以下伪代码图示。
  function BacktrackSearch(vars,domains,constraints)   result=BacktrackSearch(vars,domains,constraints,{})   if(SOLUTION(result)then  return result   else return NO_SOLUTION_EXISTS  function BacktrackSearch(vars,domains,constraints,decisions)   if(NO_SOLUTION(vars,domains,constraints,decisions)or   SOLUTION(vars,domains,constraints,decisions))then   return(vars,domains,constraints,decisions)   else   new_decision=select_bt_decision   (vars,domains,constraints,decisions)   decisions’=decisions U{new_decision}   new_decision_result=BacktrackSearch   (vars,domains,constraints,decisions’)   if SOLUTION(new_decision_result)then   return new_decision_result   else   decisions”=decisions U{NOT(new_decision)}  return BacktrackSearch(vars,domains,constraints,decisions”)
下面解释以上所用的若干函数
当且仅当判决(decision)已将每个变量约束为一个值,并且在分配时满足所有约束时,SOLUTION(vars,domains,constraints,decisions)返回真(True)(参数代表解决方案)。
当且仅当判决(decision)已将某些变量约束为采用特定值,并且在分配时违反了至少一个约束时,NO_SOLUTION(vars,domains,constraints,decisions)返回真(True)(参数不代表解决方案)。
现在参考图3,图3图示了回溯搜索。
在任何回溯点处,选择未分配的变量X和值ν,并且回溯判决是将变量约束为采用该值(X=ν)。在回溯时,采用该判决的否定,即NOT(X=ν),也即(X≠ν)。
如果变量域是有限的,并且select_bt_decision覆盖了每个变量的所有可能的值,则搜索是完全的,即,其在有限数目的步骤中发现了一个解决方案(如果存在的话),或证明不存在解决方案。
然而,回溯搜索框架更为通用。在每个回溯点处,可以使用其他类型的约束作为在每个搜索节点处将特定值分配到变量的替代物(并且在回溯时粘贴该分配的否定)。
例如,在搜索保持“完全”时,select_bt_decision可以粘贴其他类型的约束(例如X≤Y)及其否定(例如X>Y),或者划分搜索空间的约束的其他组合。
局部一致性(也称为约束传播)是一类“约束满足”技术。
在作出判决后,局部一致性一般通过推论变量域中的某些值不再与当前的一组变量、域、约束和判决保持一致,来推断其某些结果。然后,可以从搜索中消除这些值,从而极大地减小了搜索空间。该技术被称为“局部一致性”,这是因为在每个局部一致性步骤处,在新限制的变量域的上下文中,与局部一致性程序中的其他约束相隔离地考虑约束。可以使用该约束来导出对变量域的进一步限制。这一过程反复进行,直到达到“固定点”,其中无法继续往下导出。
局部一致性技术的优点在于,其可以经常检测该问题何时变得无法解决(例如,当变量域中的所有值都已被消除时),从而导致中间回溯,或者其可以导出限制回溯搜索选择的域限制。这样,该技术能够进行回溯搜索,以避免无效的搜索分支。
局部一致性技术是可扩展的,这是因为其在多项式时间内执行,并且只有当一个或多个约束变量的域已由搜索判决或导出加以限制时,才需要应用约束的一致性步骤。
将局部一致性技术与回溯搜索组合在一起导致了一种算法(BT+CS),在下面的伪代码中图示了该算法。
  function BacktrackSearchConsist(vars,domains,constraints)   result=BacktrackSearchConsist(vars,domains,constraints,{})   if(SOLUTION(result)then  return result   else return NO_SOLUTION_EXISTS  function BacktrackSearchConsist(vars,domains,constraints,decisions)   local_consistency_result=local_consistency_proc   (vars,domains,constraints,decisions)   if(NO_SOLUTION(local_consistency_result)or   SOLUTION(local_consistency_result))then   return local_consistency_result   else   new_decision=select_bt_decision(local_consistency_result)   decisions’=decisions(local_consistency_result)U{new_decision}   new_decision_result=BacktrackSearchConsist(vars,domains,   constraints,decisions’)   if SOLUTION(new_decision_result)then   return new_decision_result   else   decisions”=decisions(local_consistency_result)U{NOT(new_decision)}  return BacktrackSearchConsist(vars,domains,constraints,decisions”)
从而,在将变量约束为值Xi=ν之后,对该变量的所有约束的局部一致性程序都被激活,导致新导出的约束形式Xj≠ν。然后,对该新约束变量Xj的所有约束的局部一致性程序都被激活。
该过程反复进行,直到无法继续导出为止(已达到固定点)。
试探回溯搜索
用于流量部署问题的解决方案的搜索可以通过使用“试探”来定向搜索加以进一步改进。
通过仅仅考虑完整的一组约束的一个子集,或者对约束的某些或全部的简化,即通过所谓的松弛,来获得试探。以这种方式,获得了涉及更少的、或更宽松的约束的子问题,并且该子问题更容易解决。
子问题约束也被称为松弛的“容易约束”。如果加以优化,则其目标函数被称为松弛的“容易目标函数”。不在松弛范围内的约束和目标函数被称为“困难的”。用于该子问题的解算器被称为“试探器”或“试探生成器”。“困难”约束可以是给定为对问题的输入的复杂约束,或者是由优化程序所粘贴的复杂约束,该优化程序限制搜索以发现更好的解决方案。
通过将试探生成器集成到上述的算法中,可以改进搜索程序。如果搜索节点处的子问题是不可解决的,则该搜索节点处的所有问题都是不可解决的。因此,在搜索程序中,搜索回溯到最终的判决。
如果子问题是可解决的,则可以减小回溯搜索的规模,这是因为其关注于修复被试探生成器所返回的“试探”违反的任何“困难”约束(和/或目标)。
修复通过将新的“容易约束”粘贴到“试探生成器”来强制进行,其确保了不会再次返回有问题的试探。如果“试探生成器”最终满足了“困难”约束,则已发现解决方案。
下面给出了试探回溯(PBT)搜索的伪代码图示。该伪代码假定了单个试探生成器的情形。
  function ProbeBacktrackSearch(vars,domains,constraints)   result=ProbeBacktrackSearch(vars,domains,constraints,{})   if(SOLUTION(result)then  return result   else return NO_SOLUTION_EXISTS  function ProbeBacktrackSearch(vars,domains,constraints,decisions)   local_consistency_result=local_consistency_proc(vars,domains,const<!-- SIPO <DP n="13"> --><dp n="d13"/>  raints,decisions)   if(NO_SOLUTION(local_consistency_result)or  (SOLUTION(local_consistency_result))   then return local_consistency_result   else   decisions’=decisions(local_consistency_result)   relaxation_result=pbt_prober(pbt_relaxation(vars,domains,   constraints,decisions’))   if(NO_SOLUTION(relaxation_result)or(SOLUTION   (relaxation_result))   then return relaxation_result   else   new_decision=select_pbt_decision(relaxation_result,  vars,domains,constraints,decisions’)   decisions”=decisions’U{new_decision}   new_decision_result=  ProbeBacktrackSearch(vars,domains,constraints,decisions”)   if SOLUTION(new_decision_result)then  return new_decision_result  else    decisions=decisions U{NOT(new_decision)}   return  ProbeBacktrackSearch(vars,domains,constraints,decisions)
试探回溯可被视为利用局部一致性成分来增强的广义混合整数规划(MIP)。
相比于试探回溯,MIP只有一类“容易约束”(线性等式和不等式)和一类“困难约束”(将整数变量限制为采用整数值的完整性约束)。如果要对问题进行优化,则只有一类松弛“容易目标函数”(即,线性目标函数)。
从而,MIP中的松弛被称为问题的“线性松弛”。试探生成器一般为单一线性解算器变量。
作为MIP的归纳的试探回溯使用局部一致性以及任意松弛和试探生成器。可以使用任意类型的“容易约束”、“困难约束”,并且如果考虑到优化问题,还可以使用任意类型的“容易目标函数”。
在伪代码中,pbt_relaxation是可以有效解决的任意松弛,而pbt_prober是用于解决pbt_relaxation的任意有效技术。只有在试探生成器成功解决子问题时,才调用函数select_pbt_decision,并且所返回的试探不是解决方案,即,试探违反了至少一个“困难约束”。随后,通过粘贴“容易约束”来强制进行新的试探,该容易约束确保了不会以相同方式再次违反已违反的困难约束。在回溯时,通过粘贴该“容易约束”的否定,来考虑余下的搜索空间。另外,选择并粘贴可替换的容易约束,以确保不会以相同方式再次违反困难约束。需要这样选择容易约束而使得解决方案不违反任何规则。
回溯搜索到流量部署问题的应用
下面将解释例如在MPLS流量工程的情形下,试探回溯搜索技术是如何应用到流量部署问题的。
根据一个实施例,流量部署问题可以表示为根据某些优化标准计算给定需求的一组路径,从而使得对于每个边或有向链路,使用该边的路径所需的总带宽不超过其带宽池容量(或者在多个池的情况下是多个池的容量),并且对于每个需求,要么只存在一条路径,要么不存在路径。也可以考虑另外的要求,例如其路径的总延迟不可以超过其最大延迟要求。可以这样选择优化标准例如使得无路径情况下需求的总损失最小。或者,可以使用不同的标准、或者加权的或分级的优化函数,如上所述。
利用试探回溯搜索技术来解决该问题,试探生成器可能试图发现包括需求的受限子集的“窄”松弛的路径,从而使得路径满足受限需求子集的连接性和带宽约束。在“窄”松弛条件下,假定与受限子集外部的需求相关联的路径不使用带宽。试探生成器试图发现对“窄”松弛的解决方案。然后,通过将由试探生成器所获得的新路径分配到受限需求子集中的对应需求,同时对于受限集合外部的需求保留路径不变,来发现覆盖全部一组需求的“宽”松弛。如果另外施加延迟或其他要求,则其可被规范为由试探生成器处理的附加约束。
根据一个实施例,试探是基于MIP试探生成器的,MIP试探生成器用于计算松弛中的各个需求路径。试探不必满足对链路带宽池上的总的可用容量的“困难约束”,即,其可以忽略在“窄”松弛中未(重)路由的需求。
相比于其他技术,该试探回溯搜索算法的优点在于,在回溯搜索中的每个搜索节点处,只有松弛问题的一小部分被试探生成器重新优化。这意味着路径的子集利用混杂后的解算器进行路由或重路由。在以下更详细给出的实现方式中,在过程中只有一条路径被重路由。将这与传统的MIP以及基于不应用该混杂形式的LP解算器的其他传统方法相比,其中整个一组命令被解算器寻址,并且可能在每个树搜索节点处被(重)路由。另外的区别在于在回溯搜索节点处局部一致性技术的应用。
如果这样选择的路径违反了链路池上的容量约束,则创建搜索节点,并且通过粘贴新的“容易约束”来依次考虑以下的三个分离的搜索分支
(1)丢弃需求,即,确定其不会被路由,并试图减少子搜索节点处的违反;
(2)在回溯时,要求部署需求,但是将其约束为往远离该链路的方向路由,并试图减少子搜索节点处的违反;
(3)在回溯时,要求部署需求,并且要求其路由经过该链路,并寻找可替换需求,以减少子搜索节点处的违反。
在选择搜索选择后,对于流量部署问题应用特殊的局部一致性技术,以导出所选搜索选择的某些结果。这将在下面描述。下面是利用试探回溯搜索算法解决流量部署问题的示例性伪代码。
function PathCalculation(vars,domains,constraints)   result=ProbeBacktrackSearch(vars,domains,constraints,{},{})   if SOLUTION(result)then<!-- SIPO <DP n="16"> --><dp n="d16"/>   return result   else   return NO_SOLUTION_EXISTS  function TPProbeBacktrackSearch(vars,domains,constraints,decisions,previous_tp_relaxation_result)   tp_local_consistency_result=tp_local_consistency_proc(vars,   domains,constraints,decisions)   if(NO_SOLUTION(tp_local_consistency_result)or  (SOLUTION(tp_local_consistency_result))   then return tp_local_consistency_result   else  decisions’=decisions(tp_local_consistency_result)   tp_relaxation_result=update_demand_paths   (vars,domains,constraints,decisions’,previous_tp_relaxation_result)   if(NO_SOLUTION(tp_relaxation_result)or   (SOLUTION(tp_relaxation_result))   then return tp_relaxation_result   else new decision=tp_volation_repair_decision   (tp_relaxation_result,vars,domains,constraints,decisions)   decisions”=decisions’U{new_decision}   new_decision_result=TPProbeBacktrackSearch(vars,  domains,constraints,decisions”,tp_relaxation_result)   if SOLUTION(new_decision_result)then   return new_decision_result   else  decisions=decisions U{NOT(new_decision)}  return TPProbeBacktrackSearch(vars,domains,constraints,decisions,tp_relaxation_result)
函数update_demand_paths(vars,domains,constraints,decisions’,previous_tp_relaxation_result)代表试探生成器,并且是在“宽”松弛中在先的搜索和局部一致性判决已经使某些需求路径无效之后才调用。对于每个这种需求,使用试探生成器来生成既满足延迟约束又满足松弛带宽约束的路径。回想一下,带宽约束的松弛意思是,在此试探回溯搜索节点处不被试探生成器解决的其他需求假定不消耗任何带宽,即,试探生成器只应用于“窄”松弛,“窄”松弛由需求的所选子集被(重新)路由的子问题组成。应当选择该子集以确保子问题的大小由试探生成器容易地管理。在最简单的情形下,只有一个需求在“窄”松弛中被重路由,但是可以选择任意大小的子集。在试探生成器获得了所选需求的新路径后,通过允许其他需求保留在早先的搜索节点中分配给其的路径来构造“宽”松弛。
在以下部分描述了每次重路由一个需求的MIP试探生成器。所述的试探生成器被命名为mip_shortest_path_prober。
如果通过mip_shortest_path_prober不能发现该需求的新路径,则有以下两种替换方法
(1)如果需求被要求由在先的搜索判决或导出部署,则算法返回没有解决方案的结果,并回溯到先前的选择点;或者
(2)算法推断出需求必须被丢弃,并且移动到其要求被丢弃的新的子搜索节点。
如果发现解决方案,则mip_shortest_path_probe返回需求路径,从而使得路径的总延迟不超过需求的最大延迟,并且带宽要求不超过路径中任何一边的容量,即,路径中边的容量足够携带需求(如果该路径存在的话)。返回的路径使困难约束违反最小化,并且相对于反映所选的目标函数的标准来说是最优的。
mip_shortest_path_probe需要考虑诸如要求链路之类的约束,即,给定需求的路径必须经过某一链路。这是必要的,因为试探回溯搜索取决于关系搜索选择的试探生成器,该搜索选择将搜索空间分区为互斥的部分,并且在回溯搜索级别上是顺序探索的。对于该试探生成器如何处理所要求的链路约束将在下面的内容中更详细的描述。
函数tp_volation_repair_decision使搜索关注于修复所违反的限制链路带宽池容量的困难约束,并选择导致违反的需求以便丢弃或对其重新路由,其中,所述链路带宽池即所要求的总带宽超过可用带宽的链路带宽池。如上所述,函数采用以下判决之一
(1)丢弃需求,即,确定不对其进行路由;
(2)在回溯时,要求部署需求,但是将其约束为往远离该链路带宽池的方向路由;以及
(3)在回溯时,要求部署需求,并且要求其路由经过该链路带宽池。
正如下面详细说明的那样,特殊的局部一致性技术可应用于流量部署问题。下面所描述的方法与流动守恒约束相结合地应用了下限约束、最小分割约束和基于代价的约束。流动守恒约束指出经过一个节点的流量容量是一致的,即,流入该节点的量等于总的流出量。关于下限约束,导出必须用在带宽池、给定在先搜索选择和导出上的流量容量的下限。关于最小分割约束,使用最小分割来导出对可以在一组节点之间流动的最大带宽的上限约束。关于基于代价的约束,使用来自先前的可行解决方案的代价来约束搜索,以返回比已发现的解决方案更好的解决方案。所有这些导出的约束被结合到局部一致性过程中,使得无效检测搜索沿搜索的各个分支进行。
试探生成器的另一个方面是,为了确保所述方法的可扩展性,使用可重复使用的MIP约束来实现时间和存储器的有效利用。关于可重复使用的MIP,使用了相同的流变量和约束模型(因而相同的LP矩阵)来代表不同搜索节点处的不同需求路径。
最后,应当注意,所述算法可被配置用于许多问题,不仅是“sat-complete”,还有“opt-complete”,即,算法返回优化的解决方案,或者证明在有限步骤内不存在解决方案。
特定实施例的数学描述
以下将更详细的描述用试探回溯搜索技术来解决流量部署问题的实施例。
问题定义
使用流量部署(TP)问题的特定实例来说明该技术。为了简化但又不失一般性,在该实例中作出了若干假设。然而,所述方法可以被直接扩展以解决违反这些简化假设的问题
1.在网络中没有并行链路(任意两个节点由最多一个链路连接)。
2.当容纳新的需求时,在网络上还没有部署现有的需求。
假设(1)的松弛仅仅增加了某些符号上的复杂性。松弛假设(2)另外涉及到了当前正由先前未部署的需求使用的每个带宽池上带宽的计算,该先前未部署的需求根据要求可能作为进入过程的一部分被移去或丢弃,也可能不被移去或丢弃。
在流量部署应用中,目标是两种使用情形需求进入,即进入新的流量需求,和需求固定,在修改后的需求、约束或拓扑的上下文中修复流量部署。为了说明目的,包括了嵌套的带宽池(每个链路与全局池和子池相关联,后者与前者相嵌套)。这示范了将该技术应用到链路上的多重带宽池的情形,而不失在更简单或更复杂的带宽容量情形中的一般性。
在该实施例中,为了简化,对于需求进入情形搜索是opt-complete的,而对于需求固定情形仅是sat-complete的。然而,这并不失一般性,opt-complete算法可类似地构建用于需求固定情形。
问题输入
流量部署问题输入包括
有向图G=(N,E),其中N是一组节点,E是代表网络的一组边。
每个边(i,j)代表网络中具有头部路由器i和尾部路由器j的有向链路。每个边与以下属性相关联
·全局容量gij
·子池容量sij
·延迟dij
一组流量需求K
每个需求k与以下内容相关联
·源sk
·目的地tk
·要求qk(从sk路由到tk的带宽单位)
·损失ck(不部署需求k的损失)
·最大延迟dk(k的路径的最大延迟)
·带宽池pk(如果是全局池则为0,如果是子池则为1)
·延迟约束标志fk(如果是延迟约束则为1,否则为0)
·原始路径Rk
问题类型(需求进入或需求固定)
问题变量
二进制判决变量
有三种二进制
判决变量类型
xijk
◆1,如果需求k的所有要求qk经过边(i,j)
◆否则为0
yk
◆1,如果需求k被部署在网络上
◆否则为0
zk
◆1,如果需求k不遵循其原始路径
◆否则为0
注意,在需求进入问题中zk变量是不相关的,而在需求固定问题中yk变量是确定的(都被设为1)。
优化
需求进入
关于需求进入特征,优化函数是分级对以下标准进行优化的(以重要性降低的顺序)
1.使未部署需求的损失代价最小
2.使最坏情形的子池利用率最小
min Subutil(O2)
3.使最坏情形的全局池利用率最小
min Globutil(O3)
需求固定
对于需求固定特征,目标是不同的。假定所有需求都必须被部署(所有yk变量被设为1)并且优化函数使扰动量最小。这更适合于客户端情形,其中客户端必须对网络变化快速作出响应而不使其网络中断。扰动被定义为从其原始路径被重新路由的需求数目
问题约束
约束C1和C2是池的容量约束。其表明使用特定池的需求不能超过该池的可用容量。池的可用容量是其原始容量乘上相关的最坏情形池利用率变量,其在需求进入中由优化过程约束为限制搜索以发现更好的解决方案。
约束C3表明如果是延迟约束需求的话,则需求的路径不能超过其最大延迟。
约束C4表明流动守恒原理。到一个节点的流入量应当等于流出量。
其中
·如果i=sk,则bik=yk
·如果i=tk,则bik=-yk
·否则bik=0
约束C5表明如果使用了链路则应当部署需求,而如果不部署需求则不应当使用链路。
k∈K,(i,j)∈Exijk≤yk(C5)
约束C6和C7表明在需求不使用其原始路径,即,在需求被重新路由时的条件。约束C6表明如果原始路径中的任意一条链路不被需求的路径所使用的话,则需求被重新路由。约束C7表明如果不在原始路径中的任意一条链路被需求的路径所使用的话,则需求也被重新路由。
(i,j)∈Rk (1-xijk)≤zk(C6)
(i,j)∈E\Rkxijk≤zk(C7)
问题规模
在需求进入(固定)中,TP问题的判决变量数目等于xijk变量的|K||E|+yk(或zk)变量的|K|。从而,可能的组合是O(2|K||E|)的量级。利用某些机制(这里并未描述)可以减少存储器的使用。
试探回溯搜索
回想一下,试探回溯搜索(PBT)是一种涉及至少三个组分的通用搜索方法回溯搜索、局部一致性和一个或多个试探生成器(松弛解算器)。试探生成器解决包含容易解决的约束的原始问题的松弛。在每个搜索节点处,算法的部分解决方案可能存在冲突(约束违反)。搜索通过粘贴被引入到子问题中的进一步约束来修复冲突。如果有不同的修复冲突的方式,则创建回溯点,并且在失败时探索替代物。当没有冲突存在时对可行解决方案的搜索终止。
对于TP问题,“宽”松弛是包括对忽略了容量约束(约束C1和C2)的所有需求的路由的计算子问题,而“试探”是对该松弛的解决方案。试探生成器被应用于TP问题的松弛,并生成被称为暂定解决方案的试探。试探解决方案可能违反容量约束。如果不存在约束违反,则暂定解决方案也是对TP问题的解决方案。如前所述,由于可扩展性原因,试探生成器可被限制为对当前试探中的一组需求给定路径进行重新路由,而不被该试探生成器重新路由的其他需求的路径可以与新的重新路由的路径合并,以创建修改后的“宽”试探。
预备内容
在该文件的其余部分,使用了下面的符号。
·lb(ν)指变量ν的下限
·ub(ν)指变量ν的上限
·如果变量ν还未被确定(非0或1),则var(ν)为真
·ν’指变量ν的暂定值
约束模型
试探组分忽略了带宽容量约束(C1和C2)。这些困难约束被监视用于冲突。由于可扩展性原因,这些约束以稍微不同的方式表明。首先,被部署的变量(yk)也被包括在约束中。这是因为将yk变量链接到xijk变量的约束(C5)未在该模型中表明。
从而,新的约束变为,
约束(C6)和(C7)也在该模型中表明。
(i,j)∈Rk(1-xijk)≤zk(C’3a)(与C6相同)
(i,j)∈E\Rk xijk≤zk(C’3b)(与C7相同)
需要一种约束,用于将被部署变量yk链接到重新路由变量zk。
k∈K zk≤yk(C’4)
同样,如果局部一致性传播推论出需求不能被重新路由,则应当有一种强制原始路径的方式。这由以下的约束表达。
(i,j)∈Rk (1-zk)≤xijk (C’5)
最后,为了支持可能的“需求固定”优化过程(其中将在优化解决方案中重新路由最小可能数目的路径),引入了约束来限制最大的重新路由数目。MaxZ是被约束为随着搜索的进行限制需求数目的变量,其中所述需求是与不同于其输入路径的路径相联系的。
然而注意,在该实施例中未详细描述opt-complete“需求固定”优化过程。
冲突
当分配给相关判决变量的暂定值违反约束(C’1或C’2)时,发生冲突(或约束违反)。例如,流量部署问题的试探生成器的解决方案是xijk和yk的一组暂定值。变量的暂定分配由xijk的x’ijk和yk的y’k来表示。暂定值用于计算冲突(即,约束违反)。
如果在网络中存在不满足全局容量约束(C’1)的边,则出现全局带宽约束。换句话说,
类似地,如果在网络中存在不满足子池容量约束(C’2)的边,则出现子池带宽约束。换句话说,
注意,Globutil和Subutil变量的上限用于计算冲突。
如果要求需求固定情形的opt-completeness,则在违反约束(C’6)时,即在zk变量的暂定值之和大于Maxz时,应当也出现冲突。这类冲突应当通过对zk变量进行分支来修复。这里为了简化目的,忽略了需求固定情形的opt-completeness要求。
试探组分
试探组分生成所有需求的暂定路径。其通过识别可由试探生成器不同部署的需求的子集,并假定剩余需求的路径保持不变,可实现上述操作。如前所述,没有必要立即对所有需求(重新)路由。在该实施例中,假定暂定路径可以是有关于单个需求试探的试探生成器,即,在每个搜索节点处,试探生成器仅仅只修正一个需求的部署,并假定余下的保持不变,这不失一般性。还假定试探生成器是不失一般性的MIP算法。
单个需求试探
如果我们忽略延迟约束,则单个需求试探可以被解决为线性规划(LP),或者利用诸如Dijkstra最短路径算法之类的特殊的最短路径算法来解决。这种算法的复杂度是多对数的。例如,Dijkstra的二进制堆积版本的复杂度为O(|E|log|N|)。
需求k的最短路径规范如下
在的情况下,
使
最小化,
其中,
·如果i=sk,则bik=1
·如果i=tk,则bik=-1
·否则bik=0
对该问题的解决方案生成该需求的暂定路径。即,对该判决变量返回的值是暂时分配的。如果解决方案存在,则需求被暂时部署(y’k=1)。
如果对需求k的最短路径问题的解决方案不存在,则我们可以安全地将yk设为0,即,需求无法被部署在网络上。
注意,以上的LP问题有全幺模性(TU)属性。幺模属性保证了对LP问题的优化解决方案将会有整数优化解决方案。从而,不要求表明xijk变量应当是整数。
所选择的优化函数使容量约束违反所导致的总超额带宽的和最小。
带有延迟约束的单个需求试探
当考虑延迟约束时,松弛子问题变为非多项式问题。其不再是全幺模问题。然而,存在实际中有效的整数规划规范。
在的情况下,
使
最小化,
其中,
·如果i=sk,则bik=1
·如果i=tk,则bik=-1
·否则bik=0
(i,j)∈Exijk∈
带有所要求的边的单个需求试探
在存在所要求的边的情况下,最短路径问题规范不足以保证解决方案是包含所有所要求的边的最短路径。所返回的解决方案可包含从源到目的地的主路径,但其不包含所要求的边。相反地,所要求的边被包括在不连接到主路径的额外环路中。图4中示出了这种情况的一个示例。
每个边的权重为1。粗线边是在单个需求试探给出的解决方案中所返回的边。所要求的边在图中以箭头所示的方向指示。试探的解决方案(黑箭头所示)是满足路由问题约束的最小权重解决方案,并且包括所要求的边。包括所要求的边的最短有效路径以灰箭头示出。注意,所返回的解决方案的总权重为(6),低于最短有效路径(7)。这种情况下,所返回的解决方案不是有效路径。
在返回这种解决方案的情况下,检测环路(循环路径),并将额外约束(分割)粘贴到MIP最短路径问题上,以禁止该特定环路。
假定环路包含|Lk|个边。分割声明环路中xijk变量的和低于或等于|Lk|-1。对于暂定路径TPk中的每个环路Lk,声明这样的分割。更为正式的说
粘贴第二种类似的分割,以禁止不包含所要求的边的路径。使TPk成为包含环路的需求k的返回路径。
这些分割破坏了规范的幺模属性(因此LP试探不必返回整数),从而其变为整数规划(IP),在整数规划中,我们要求所有的xijk变量为0-1变量(这类似于我们解决带有延迟约束的试探时的情形)。重复解决分割和IP,直到不返回环路。所应用的IP算法是带有缺省设置(例如CPLEX)的通用MIP解算器。因此,所产生的路径保证为包括所要求的边的最短路径。
对带有延迟约束的多需求试探的意见
如果多个需求被试探生成器同时重新路由,则松弛子问题是带有附加侧约束的多物流问题的形式。在该申请中给出的技术对于这种单个情形直接进行了归纳。在施加延迟约束的场合都施加了这样的约束,该约束将每个需求k的xijk变量的延迟加权和限制为低于延迟阈值。
初始暂定解决方案(初始试探)
由于在本申请中描述了试探生成器不对每个需求都生成暂定路径的情形,因此在需求进入情形中(在需求固定情形中,对于需求已经存在路径),要求初始化程序来生成需求的初始路径。然后,试探回溯搜索算法递增地修复该初始解决方案。
对TP需求进入问题的初始“宽”松弛试探是通过在搜索的开始将试探生成器分别应用到每个需求而获得的。
搜索组分
搜索组分计算所包含的冲突,并启发式地选择要修复的下一个冲突。然后,其作出搜索判决,并将局部一致性程序应用到该搜索判决。
有两种确定性的选择。
1.选择冲突(i,j)中的边(有向链路)。
两类冲突
全局池冲突(C’1违反)
子池冲突(C’2违反)
2.选择导致具有冲突的所选边的需求k
对于全局池冲突
xijk′yk′≥1
对于子池冲突
pkxijk′yk′≥1
然后,存在如何修复冲突的非确定性(即,可回溯的)选择。
3.选择以下操作之一
·不部署需求k(即,yk=0)(该选择在“需求固定情形”中不可能出现,因为其中对于所有kyk=1)
·部署需求k,并对于需求k禁止链路(i,j)(即,yk=1且xijk=0)
这种情况下,有必要对于需求k运行单个需求试探,以获得不经过链路(i,j)的新的暂定路径。如果不存在这种路径,则回溯到先前的选择点。
·部署需求k,并对于需求k要求链路(i,j)(即,yk=1且xijk=1)
4.传播约束(应用局部一致性程序,直到其达到“固定点”)
·如果检测到不可行性,则回溯到先前的选择点。
5.如果没有进一步的冲突,则以一个解决方案终止,否则在下一个搜索节点处重复该过程。
当所有的冲突都被移除时,过程终止。
约束传播(局部一致性程序)
一般传播
除非明确表明,否则Arc-B局部一致性程序应用于到此处为止的所有约束,并且应用于以下指出的约束传播约束(见1993,France,Chambery,IJCAI-93,O.Lhomme在Proceedings of the Thirteenth International JointConference on Artificial Intelligence中发表的″Consistency Techniques forNumeric CSPs″)。Arc-B局部一致性程序还应用于后面在优化部分中指出的优化约束。
下限传播
全局池下限传播
使gaij为链路(i,j)上的全局池可用容量,定义如下
即,gaij是全局池上的最佳情形可用带宽。
其次,gaij必须非负
(i,j)∈E gaij≥0
否则,不可能修复该约束违反,并且应当发出故障信号。
另外,gaij用来推论禁止链路。如果还未部署在链路上的需求要求的带宽比可用带宽多,则对于该需求禁止该链路。
(i,j)∈E,k∈K var(xijk)∧qk>gaijxijk=0
如果还未部署需求,但是已知如果部署则要求经过该链路,而又没有足够的带宽部署该需求,则无法部署需求。
(i,j)∈E,k∈K var(yk)∧xijk=1∧qk>gaijyk=0
子池下限传播
类似的推理可应用于子池。
使saij为链路(i,j)上的子池可用容量,定义如下
即,saij是子池上的最佳情形可用带宽。
其次,saij必须非负
(i,j)∈E saij≥0
另外,saij可用来推论禁止链路(对于子池需求)。
(i,j)∈E,k∈K var(xijk)∧qkpk>saijxijk=0
并推论无法部署的子池需求。
(i,j)∈E,k∈K var(yk)∧xijk=1∧qkpk>saijyk=0
基于最小分割的约束
本申请利用最大流动/最小分割算法来生成冗余约束,该冗余约束通过识别无效搜索分支来减小搜索规模。
最小分割的定义
在有向图G=(N,E)中,分割(S,T)由一组边(i,j)定义(其中iS且jT),以使得当从图中移除时,S中的节点断开与T中节点的连接。
最小分割(S,T)是这样的分割,其中跨越分割的边的容量(uij)的和最小
根据Ford-Fulkerson理论(1956),该最小分割对应于最大流动,并且可利用多对数复杂度算法发现。
从最小分割中生成冗余约束
最小分割算法(即Ford-Fulkerson)用来生成流量部署问题的冗余约束(见1956,Canadian Joumal of Mathematics 8,L.R.Ford,D.R.Fulkerson,″Maximal flow through a network.″)。根据其定义,任意分割(S,T)断开S中节点与T中节点的连接。另外,分割大小示出了多少容量可用于从节点i到节点j(其中iS且jT)的所有需求。
因此,给定分割(S,T),我们可使用其来创建每个池的冗余约束。
在实施例中,对于每个需求的末端点生成一个分割约束对。
启发
该部分涉及将在特定搜索节点处由试探生成器解决的需求选择。启发是确定选择哪一个需求的规则。
边选择启发
存在许多替代物。在实施例中,所使用的启发是最大冲突启发,即,最大带宽违反。这将在下面描述。
最大冲突
这种边选择启发首先关注于子池冲突,并选择链路(i,j)上冲突值最大的冲突。冲突值定义如下
如果没有子池冲突,则其检查全局池冲突,并选择最大值冲突。冲突值由以下公式确定
需求选择启发
一旦对于试图的修复选择了带宽违反,则需求选择启发就确定引起违反的一组需求中的哪一个需求应当由试探生成器重新路由。这里所给出的实施例使用了聚集启发。
聚集启发
该启发有效地选择了移除冲突的最小需求。对于链路(i,j)上的子池冲突,启发查看从链路上移除需求的效果。使用了以下两种度量。
图5图示了Posk和Negk变量的含义。如果从链路上移去需求移除了冲突,则Posk=0而Negk≥0。如果从链路上移去需求未移除冲突,则Posk>0而Negk=0。
启发优选地选择具有最小Posk值的需求。如果所有的Posk值相等,则启发选择具有最小Negk值的需求。
优化
需求进入
优化过程开始于搜索作为分布在区间
上的连续变量的Subutil和Globutil。从而,两个变量的上限初始都为1。
首先,优化被部署的需求代价。当发现优化的解决方案值ν1*时,粘贴约束以确保任何进一步的解决方案不会更坏。
所发现的优化解决方案(在被部署的需求代价方面)有子池利用率ν2≤1。优化开始于附加约束
Subutil≤ν2-δ
其中,δ是改进因子(缺省被设为0.001)。
一旦发现子池利用率的优化值(Subutil*),则粘贴约束以确保进一步的解决方案不会更坏。
Subutil≤Subutil*
再次,所发现的优化解决方案(在子池利用率方面)有全局池利用率ν3≤1。优化开始于附加约束
Globutil≤ν3-δ
注意,当发现全局池利用率的优化解决方案时(Globutil*),优化终止。
此时,解决方案是按下面的顺序分级优化的(1)需求部署代价,(2)子池利用率和(3)全局池利用率。子池和全局池利用率的优化保证在δ个优化单位内。
需求固定
如果实现的话,则需求固定优化过程开始于搜索作为分布在区间
上的连续变量的MaxZ。
当发现具有扰动p*的解决方案值时,粘贴附加优化约束以将扰动(即,重新路由数)限制为低于所发现的最新解决方案的扰动。
MaxZ≤p*-1
优化继续进行,直到无法发现进一步的解决方案为止,这表明所发现的最后解决方案是最优的。
尽管在前述实施例中描述了网络路由,但是应当了解该方法也可应用于其他相关问题,如网络优化或更一般地多物流问题。
尽管在前述实施例中使用了混合整数规划来生成试探,但是应当了解也可以使用其他替代技术,如基于线性规划的其他技术、局部搜索技术、其他特殊的网络流算法,包括但不限于基于SPF和CSPF的方法。
尽管在前述实施例中描述了利用MPLS的流量工程作为网络路由配置方法,但是应当了解也可使用其他替代方法。
应当理解,上述实施例仅仅是优选实施例。即,在不脱离由所附权利要求定义的本发明的范围的前提下,可以省略、修改或利用等同物替换各种特征。
权利要求
1.一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定的流量流动需求中选择一个子集,并利用算法混杂和试探生成,在考虑一组约束的情况下为所选择的需求计算多个路径,其中,所述算法混杂将回溯搜索技术与局部一致性技术组合在一起。
2.如权利要求1所述的方法,其中,所述试探生成包括所述约束的任意松弛。
3.如权利要求2所述的方法,其中,通过在执行所述约束的松弛时递增地加上适当的分割约束,来满足与由所述试探生成器重新路由的需求相关联的约束。
4.如权利要求1、2或3所述的方法,其中,所述搜索被引导至所述试探违反所述约束至少之一的搜索区域。
5.如权利要求1-4中任何一个所述的方法,包括使用合并了线性规划解算器的算法来生成试探。
6.如权利要求5所述的方法,包括使用合并了混合整数规划解算器的算法来生成试探。
7.如权利要求1-6中任何一个所述的方法,包括使用合并了局部搜索技术的算法来生成试探。
8.如权利要求1-7中任何一个所述的方法,包括使用合并了最短路径优先(SPF)算法的算法来生成试探。
9.如权利要求8所述的方法,包括使用结合了有约束最短路径优先(CSPF)算法的算法来生成试探。
10.如权利要求1-9中任何一个所述的方法,其中,所述方法包括试探回溯搜索技术。
11.如权利要求1-10中任何一个所述的方法,其中,路径被计算用于
i)部署新的路径,和/或
ii)在现有路径的上下文中部署新的路径,和/或
iii)重新路由现有路径,和/或
iv)丢弃现有路径以允许新的路径进入。
12.如权利要求1-11中任何一个所述的方法,还包括最优化技术。
13.一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定的流量流动需求中选择一个子集,并在考虑一组约束的情况下为所选择的需求计算多个路径,其中,所述方法包括以下步骤
a)将所述约束划分为“容易约束”和“困难约束”;
b)获得满足所述容易约束的试探;
c)确定所述试探是否违反一个或多个所述困难约束;以及
d)如果在步骤(c)中确定所述试探违反困难约束,则从所述试探开始,搜索出满足所述困难约束的一个或多个解决方案;
其中,所述方法采用局部一致性技术。
14.如权利要求13所述的方法,其中,在步骤(d)中执行树结构的搜索。
15.如权利要求13或14所述的方法,其中,在步骤(d)中执行回溯搜索。
16.如权利要求13、14或15所述的方法,其中,在步骤(d)中改变所述试探的至少一个路径。
17.如权利要求16所述的方法,其中,在步骤(d)中所述改变通过规范附加约束并反复应用试探来实现。
18.如权利要求13-17中任何一个所述的方法,其中在步骤(d)中,如果存在满足所述困难约束的替代解决方案,则创建回溯点。
19.如权利要求18所述的方法,还包括选择遭违反的困难约束以在所述回溯点处修复,所述约束是遭违反的链路或链路带宽容量约束。
20.如权利要求18或19所述的方法,其中,所述回溯点被配置为提供一个或多个以下的选择以在子节点处检查
取消选择引起容量违反的需求d的路径;
选择需求d;
防止需求d经过带有过载容量或容量池的链路;或者
强制使需求d经过带有过载容量或容量池的链路。
21.如权利要求13-20中任何一个所述的方法,其中所述一组约束包括一个或多个以下的约束类
容量约束,
延迟约束,
流动守恒约束,
强制重新路由路径的约束,和
最小分割约束。
22.如权利要求13-21中任何一个所述的方法,其中,所述局部一致性技术包括Arc-B一致性程序。
23.如权利要求13-22中任何一个所述的方法,其中,所述试探通过松弛所述容量约束而获得。
24.如权利要求13-23中任何一个所述的方法,其中,通过单独计算或以子集为单位计算所述多个路径中的每一个,同时假定余下的路径保持其在先的暂定路径,来获得所述试探。
25.如权利要求13-24中任何一个所述的方法,其中,路径被计算用于
i)部署新的路径,和/或
ii)在现有路径的上下文中部署新的路径,和/或
iii)重新路由现有路径,和/或
iv)丢弃现有路径以允许新的路径进入。
26.如权利要求13-25中任何一个所述的方法,其中,所述方法还包括以下步骤
(e)根据一个或多个预定标准,从在步骤(d)中获得的所有解决方案中选择一个解决方案。
27.如权利要求26所述的方法,其中在步骤(e)中,所述解决方案通过最小化或最大化优化函数来选择。
28.如权利要求27所述的方法,其中,所述优化函数的结构是分级的。
29.如权利要求27或28所述的方法,其中,所述用于部署新的用户路径的优化函数与至少一种以下标准类有关被部署的需求损失或利益;容量利用率;多重容量利用率;或多重嵌套容量利用率。
30.如权利要求27、28或29所述的方法,其中,所述用于重新路由现有路径的优化函数是扰动的度量。
31.如权利要求27-30中任何一个所述的方法,其中,所述用于重新路由现有路径的优化函数与必须重新路由的路径数目有关。
32.如权利要求13-31中任何一个所述的方法,其中,在回溯搜索中每个搜索节点处,只重新路由所述路径的子集。
33.如权利要求1-32中任何一个所述的方法,其中,路径的计算包括
i)主路径的计算,和/或
ii)次级路径的计算,和/或
iii)快速重新路由保护路径的计算,和/或
iv)具有现有路径的网络的改进路径的计算。
34.如权利要求1-33中任何一个所述的方法,其中,所述搜索是完全的。
35.如权利要求1-34中任何一个所述的方法,其中,所述搜索是sat-complete的。
36.如权利要求1-35中任何一个所述的方法,其中,所述搜索是opt-complete的。
37.一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括
a)从一组给定流量流动需求中选择一个子集;
b)在考虑一组约束的情况下为所选择的需求计算多个路径;
c)获得满足所述全组约束中的一个子集的暂定解决方案;
d)确定所述暂定解决方案是否违反所述全组约束;以及
e)如果在步骤(d)中确定所述暂定解决方案违反所述全组约束,则从所述暂定解决方案开始,搜索出满足所述全组约束的一个或多个可行解决方案;
其中应用了局部一致性技术。
38.一种用于在通信网络中选择并路由流量流动需求的方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定流量流动需求中选择一个子集,并利用回溯搜索在考虑一组约束的情况下为所选择的需求计算多个路径,其中,混合整数规划、基于线性规划的其他技术、SPF或CSPF被用来获得试探,并且其中应用了局部一致性技术。
39.如权利要求1-38中任何一个所述的方法,其中,流量流动需求的所选子集是非严格子集。
40.一种用于计算通信网络中的路径的装置,适合于执行任何一个在前权利要求所述的方法。
41.一种用于管理网络的网络管理系统,适合于执行权利要求1-39中任何一个所述的方法。
42.一种在计算机系统中操作时,适合于执行权利要求1-39中任何一个所述的方法的计算机程序。
43.一种参考附图如上所述的计算通信网络中的路径的方法。
全文摘要
本发明提供了一种通信网络中的流量部署方法,所述通信网络包括多个节点,所述节点经由链路彼此连接,所述方法包括从一组给定的流量流动需求中选择一个(可能是非严格的)子集,使用算法混杂并利用一个或多个试探生成器来引导搜索,在考虑一组约束的情况下为所选择的需求计算多条路径,其中,所述算法混杂将回溯搜索技术与局部一致性技术组合在一起(BT+CS),而试探生成器就是解决路由子问题或流量部署问题的任意松弛的搜索技术。与BT+CS或个别搜索技术相比,利用混杂算法可以实现更强大的搜索策略,其中混杂算法通过试探生成器将其他解算器(搜索技术)集成到BT+CS中。
文档编号H04L12/56GK1799228SQ20048000877
公开日2006年7月5日 申请日期2004年4月2日 优先权日2003年4月2日
发明者哈尼·埃尔-萨考特, 瓦斯利斯·洛特瑟斯, 斯特凡诺·诺沃洛 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1