双向约束路径搜索的制作方法

文档序号:15309724发布日期:2018-08-31 21:36阅读:178来源:国知局

本公开一般涉及路径搜索领域,更具体但非排它地,涉及在通信网络中执行约束路径搜索。



背景技术:

在许多通信网络中,源设备与目标设备之间的端到端通信遍历已经从源设备到目标设备而建立的端到端路径。存在用于确定和建立从源设备到目标设备的端到端路径的各种机制,其中许多可能具有与之相关联的各种缺点。



技术实现要素:

本公开概括地公开了双向约束路径搜索能力。

在至少一些实施例中,一种装置包括处理器和与处理器通信连接的存储器,其中,处理器被配置为:评估从第一节点到第二节点的前向链路,以确定前向链路是否满足与待确定的从第一终端节点到第二终端节点的前向路径相关联的一组约束;评估从第二节点到第一节点的反向链路,以确定反向链路是否满足与待确定的从第二终端节点到第一终端节点的反向路径相关联的一组约束;以及基于确定前向链路满足与前向路径相关联的一组约束以及确定反向链路满足与反向路径相关联的一组约束,选择前向链路以包括在前向路径中。

在至少一些实施例中,一种方法包括:评估从第一节点到第二节点的前向链路,以确定前向链路是否满足与待确定的从第一终端节点到第二终端节点的前向路径相关联的一组约束;评估从第二节点到第一节点的反向链路,以确定反向链路是否满足与待确定的从第二终端节点到第一终端节点的反向路径相关联的一组约束;以及基于确定前向链路满足与前向路径相关联的一组约束以及确定反向链路满足与反向路径相关联的一组约束,选择前向链路以包括在前向路径中。

在至少一些实施例中,一种非暂时性计算机可读存储介质,存储有指令,所述指令在由计算机执行时使计算机执行一种方法,所述方法包括:评估从第一节点到第二节点的前向链路,以确定前向链路是否满足与待确定的从第一终端节点到第二终端节点的前向路径相关联的一组约束;评估从第二节点到第一节点的反向链路,以确定反向链路是否满足与待确定的从第二终端节点到第一终端节点的反向路径相关联的一组约束;以及基于确定前向链路满足与前向路径相关联的一组约束以及确定反向链路满足与反向路径相关联的一组约束,选择前向链路以包括在前向路径中。

附图说明

通过结合附图考虑以下详细描述,可以容易地理解本文的教导,其中:

图1示出包括通信网络和被配置为执行针对通信网络的双向约束路径搜索的路径确定单元的示例性系统;

图2示出用于说明双向约束路径搜索的示例性通信网络;

图3示出用于执行双向约束路径搜索以确定网络的一对节点之间的一对双向通信路径的方法的流程图;

图4示出在执行双向约束路径搜索中使用以确定网络的一对节点之间的一对双向通信路径的方法的流程图;

图5示出适用于在执行在本文中描述的各种功能中使用的计算机的高级框图。

为了便于理解,在可能的情况下,已使用相同的参考标号来指示附图公共的相同元件。

具体实施方式

本公开概括地公开了一种双向约束路径搜索机制。双向约束路径搜索机制可被配置为确定受一个或多个约束的一对节点之间的双向通信路径,所述一个或多个约束可以包括一个或多个前向路径约束或者一个或多个反向路径约束中的至少一个。双向约束路径搜索机制可被配置为采用确保双向通信路径使用一组公共资源(例如,使用公共链路资源来遍历一组相同的节点)的方式,来确定受一个或多个约束的一对节点之间的双向通信路径。双向约束路径搜索机制可被配置为通过确定前向通信路径满足与前向通信路径相关联的一组一个或多个前向路径约束并且确定反向通信路径满足与反向通信路径相关联的一组一个或多个反向路径约束,来确定受约束的一对节点之间的双向通信路径。双向约束路径搜索机制可被配置为在前向遍历表示可用于选择的节点和链路的图(例如,加权有向图)期间,确定一对节点之间的双向通信路径。双向约束路径搜索机制可被配置为采用单个路径搜索迭代来确定一对节点之间的双向通信路径,从而提高性能(例如,减少用于确定这两个路径的路径计算时间,减少用于确定这两个路径所必需的数据访问的数量等)。通过参考图1,可以进一步理解双向约束路径搜索机制的这些和各种其它实施例以及潜在优点。

图1示出了包括通信网络和被配置为执行针对通信网络的双向约束路径搜索的路径确定单元的示例性系统。

系统100包括通信网络110和路径确定单元120。

通信网络110可以包括可支持经由通信路径的通信的任何通信网络。例如,通信网络110可以包括光网络、因特网协议(ip)网络、多协议标签交换(mpls)网络、软件定义网络(sdn)、无线通信网络等及其各种组合。例如,通信网络110的通信路径可以是光网络中的光路、ip网络中的ip路径、mpls网络中的标签交换路径(lsp)、无线网络中的无线路径等。

通信网络110包括一组节点112和一组链路114。节点112经由链路114互连以提供通信网络110的网络拓扑。节点112和链路114可以包括各种类型的可支持经由通信路径的通信的节点112和链路114,这些通信路径可在不同类型的通信网络之间变化。例如,在其中通信网络110是光网络的情况下,节点112可以是光节点(例如,光交换机、光分/插复用器等),而链路114可以是光链路(例如,光纤等)。例如,在其中通信网络110是ip网络或mpls网络的情况下,节点112可以是交换机或路由器,而链路114可以包括可支持交换机与路由器之间的通信的任何适合类型的链路。链路114可以是物理链路或逻辑链路。节点112和链路114可以分别包括适用于支持通信网络110内的通信的任何其它类型的节点和链路。

通信网络110被配置为使得在每对节点112之间存在多个链路114。这些多个链路114可以是物理链路和/或逻辑链路。例如,在两个节点112是路由器并且开放最短路径优先(ospf)协议在这两个路由器之间是活动的情况下,在这两个路由器之间可能存在两个总链路(即,在一个方向上的第一ospf链路和在另一方向上的第二ospf链路)。例如,在两个节点112是路由器并且ospf和中间系统到中间系统(is-is)协议两者在这两个路由器之间都是活动的情况下,在这两个路由器之间可能存在四个总链路(即,在一个方向上的第一ospf链路和第一is-is链路以及在另一方向上的第二ospf链路和第二is-is链路)。应当理解,在通信网络110的任何给定的一对节点112之间可以使用更少或更多的链路114。应当理解,虽然在一对节点112之间可以存在多个链路114,但是一对节点112之间的多个链路114中的任何两个可以或可以不彼此相关联为链路对。通常,为了将两个链路114视为链路对,这两个链路114可以指向相反的方向而共享终端点(即,链路114之一上的源节点是另一链接114上的目标节点,反之亦然)。然而,在某些情况下,这可能不足以单独使这两个链路114被视为链路对。在某些情况下,可能需要评估这两个链路114的其它链路特性,以确定这两个链路114是否将被视为链路对(例如,这两个链路114的ip子网必须匹配,以使得这两个链路114将被视为链路对,这两个链路的ip子网和操作协议必须匹配,以使得这两个链路114将被视为链路对等)。例如,如果一对节点112(例如,节点a和节点b)之间的两个链路114都是ospf链路但是被分配属于不同子网的ip地址(例如,从节点a到节点b的链路具有ip192.168.0.1/24,而从节点b到节点a的链路具有ip192.168.1.2/24),则尽管具有相同的协议,但这两个链接不可被视为链路对。例如,如果一对节点112(例如,节点a和节点b)之间的两个链路114属于相同的子网(例如,从节点a到节点b的链路具有ip192.168.0.1/24,而从节点b到节点a的链路具有ip192.168.1.2/24)但使用不同的操作协议(例如,从节点a到节点b的链路是ospf链路,而从节点b到节点a的链路是is-is链路),则尽管属于相同的子网,但这两个链路114也不可被视为链路对。换言之,关于两个链路114是否是链路对的确定可以基于链路终止和方向信息,并且可选地基于子网地址信息、协议类型信息等及其各种组合中的一个或多个。注意,在至少一些实施例中,只要一对公共节点112之间的链路114被视为链路对,链路114就可被视为公共链路资源。

通信网络110可以包括端到端通信路径的全部或一部分。通信网络110可被用于各种目的或者在各种环境中使用。例如,通信网络110可以是支持核心ip/mpls网络的入口点与出口点之间的通信路径的核心ip/mpls网络(例如,经由通信网络的路径仅表示端到端路径的一部分),支持客户网络与核心ip网络之间的通信的边缘ip/mpls网络,支持客户位置之间的通信的边缘和核心ip/mpls网络的组合,支持客户网络之间的通信的光传输网络等及其各种组合。

路径确定单元120可被配置为确定(或计算)通信网络110的通信路径。对于一对节点112(包括第一节点112和第二节点112),路径确定单元120可被配置为确定这一对节点112之间的前向通信路径(从第一节点112到第二节点112)和这一对节点112之间的反向通信路径(从第二节点112到第一节点112)。通常,一对节点112之间的路径可被规定为节点112和相关联的连接链路114的序列,其可被遍历以在这一对节点112之间端到端地行进。路径确定单元120可被配置为确定前向和反向通信路径,以使得结合确定一对节点112的前向通信路径而执行确定这一对节点112的反向通信路径。前向通信路径和反向通信路径以这种方式的确定确保了前向通信路径的确定也提供了对应的反向通信路径的确定。前向通信路径和反向通信路径以这种方式的确定还确保了前向和反向通信路径遵循通过通信网络110的相同的路径(尽管在不同的方向上),并且因此共享通信网络110的资源(例如,使用公共链路资源来遍历一组相同的节点)。路径确定单元120可被配置为基于通信网络信息和路径约束信息来确定通信网络110的通信路径。

通信网络信息可以包括描述通信网络110的各种类型的信息。通信网络信息可以包括拓扑信息,其包括通信网络110的节点112和链路114的标识、通信网络110的节点112和链路114连接的方式等。通信网络信息可以包括与节点112相关联的节点信息,诸如指示节点112的节点权重的节点权重信息、指示节点112的能力的节点能力信息(例如,端口速度、处理能力、支持的协议等)、指示关于节点112配置的方式的配置信息、节点112的操作状态信息等及其各种组合中的一个或多个。通信网络信息可以包括与链路114相关联的链路信息,诸如指示链路114的链路权重的链路权重信息、指示链路114的能力的链路能力信息(例如,可支持的总带宽、当前可用的可用带宽等)、可用于确定公共节点对112之间的链路114的链路配对的链路配对信息(例如,指示链路114是否在相同的节点终止的链路终止点信息、指示链路114的方向的链路方向信息、指示链路114是否属于相同ip子网的ip寻址、指示由链路114所使用的协议的协议类型信息等)等及其各种组合。通信网络信息可以包括可用于确定通信网络110内的通信路径的任何其它信息。路径确定单元120可以采用任何适合的方式来获得通信网络信息(例如,使用一个或多个发现机制,基于与通信网络110的交互,从网络拓扑管理系统、从由路径确定单元120所维护的或者至少路径确定单元120可访问的数据库等及其各种组合)。

路径约束信息可以包括描述与通信网络110中待确定的通信路径相关联的路径约束的信息。用于通信路径的路径约束可以包括对于通信路径的链路114待满足的一组一个或多个链路级约束(在本文中也可被称为个体约束)、对于通信路径的节点112待满足的一组一个或多个节点级约束(在本文中也可被称为个体约束)、对于整个通信路径待满足的一组一个或多个路径级约束(在本文中也可被称为累积约束)等及其各种组合中的一个或多个。例如,对于通信路径的链路级约束可以包括链路114的最大成本(例如,超过该成本的任何链路114不能被包括在通信路径中)、必须由链路114所支持的最小带宽量(例如,具有更少的带宽的任何链路114不能被包括在通信路径中)等及其各种组合。例如,对于通信路径的节点级约束可以包括节点包括列表(例如,列出需要被包括在通信路径中的任何节点112)、节点排除列表(例如,列出不能被包括在通信路径中的任何节点112)、使用节点112的最大成本(例如,在节点112上运行资源的美元成本是“x”,并且因此确保“x”小于阈值)、节点112的最大功耗等及其各种组合。例如,路径级约束可以包括通信路径的最大跳数、通信路径的最大成本等及其各种组合。例如,在目的是确定终端节点a与终端节点b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中所有链路都支持1mbps的带宽,以及找到从b到a的最短路径,其中所有这些链路都支持2mbps的带宽。例如,在目的是确定终端节点a与终端节点b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中最大总成本是“10”,以及找到从b到a的最短路径,其中最大总成本是“8”。例如,在目的是确定终端节点a与终端节点b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中所有链路都支持2mbps的带宽并且最大总成本是“8”,以及找到从b到a的最短路径,其中所有这些链路都支持3mbps的带宽。例如,在目的是确定终端节点a与终端节点b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中所有链路都支持4mbps的带宽,以及找到从b到a的最短路径,其中所有这些链路都支持3mbps的带宽并且最大总成本是“7”。应当理解,前述示例仅仅是约束以及可以在双向约束路径搜索中应用约束的方式的几个示例。路径确定单元120可以采用任何适合的方式来获得路径约束信息(例如,从请求确定或建立一对终端节点之间的通信路径的通信路径请求中,从与要为其确定或建立一对终端节点之间的通信路径的客户相关联的客户简档中(例如,从服务等级协议(sla)或其它适合的信息中)等及其各种组合确定用于通信路径的路径约束)。

路径确定单元120可被配置为通过确定第一终端节点112与第二终端节点112之间的加权有向图,并且基于在从第一终端节点112向第二终端节点112的前向方向上基于约束地遍历该加权有向图而确定前向和反向通信路径,来确定从第一终端节点112到第二终端节点112的前向通信路径,以及确定从第二终端节点112到第一终端节点112的反向通信路径。

路径确定单元120可以基于与通信网络10相关联的通信网络信息来确定第一终端节点112与第二终端节点112之间的加权有向图。本领域的技术人员将理解基于通信网络信息的加权有向图的确定。

路径确定单元120可以使用基于约束的图遍历处理器或算法(其被配置为执行评估前向链路以包括在前向通信路径中(基于与前向通信路径相关联的一组前向路径约束)以及评估反向链路以包括在反向通信路径中(基于与反向通信路径相关联的一组反向路径约束)的组合),基于在从第一终端节点112向第二终端节点112的前向方向上基于约束地遍历该加权有向图,来确定前向和反向通信路径。基于约束地遍历加权有向图可以通过以下两种方式来执行:(1)使用现有的基于约束的图遍历过程的修改版本,其被配置为在前向方向上遍历加权有向图(例如,约束最短路径优先(cspf)过程或者其它适合类型的基于约束的图遍历过程(例如,ospf的基于约束的版本,is-is的基于约束的版本等),其被修改以评估当在前向通信路径的前向方向上遍历加权有向图期间用于反向通信路径的反向路径约束),或者(2)使用被配置为在前向方向上遍历加权有向图的新的基于约束的图遍历过程,同时还评估当在前向通信路径的前向方向上遍历加权有向图期间用于反向通信路径的反向路径约束。路径确定单元120在确定前向和反向通信路径中的操作可以通过参考图2的示例性通信网络以及图3和图4的示例性方法来进一步理解。

路径确定单元120可被配置为出于各种目的来确定一对终端节点112之间的前向和反向通信路径(例如,出于在通信网络110中建立前向和反向通信路径的目的、出于响应于通信网络110中的故障而预先计算可在通信网络110中建立的备用路径的目的等及其各种组合)。路径确定单元120可被配置为响应于各种触发条件来确定一对终端节点112之间的前向和反向通信路径。例如,路径确定单元120可以响应于来自客户的请求,而确定一对终端节点112之间的前向和反向通信路径。例如,路径确定单元120可以响应于确定前向和反向通信路径将要在特定时间建立,而确定在特定时间的一对终端节点112之间的前向和反向通信路径(例如,基于客户简档、路径调度信息等)。例如,路径确定单元120可以响应于确定在一对终端节点112之间需要额外的通信资源,而确定这一对终端节点112之间的前向和反向通信路径。例如,路径确定单元120可以响应于检测到通信网络110中的事件,而确定一对终端节点112之间的前向和反向通信路径(例如,基于确定在通信网络110中已经开启节点112、基于来自节点112的请求(例如,建立一个或多个lsp的请求)、基于检测到节点112或链路114的故障等及其各种组合)。路径确定单元120可被配置为出于各种其它目的或者响应于各种其它类型的触发条件,而确定一对终端节点112之间的前向和反向通信路径。

可以采用各种方式在通信网络110内或者与通信网络110相关联地实现路径确定单元120。在一个实施例中,例如,路径确定单元120可被实现为路径计算单元(pce)或pce的一部分。在一个实施例中,例如,路径确定单元120可被实现为供应系统(ps)或ps的一部分。在一个实施例中,例如,路径确定单元120可被实现为元件管理系统(ems)或ems的一部分。在一个实施例中,例如,路径确定单元120可被实现为网络管理系统(nms)或ems的一部分。在一个实施例中,例如,路径确定单元120可被实现为软件定义控制器或软件定义控制器的一部分。可以采用各种其它方式在通信网络110内或者与通信网络110相关联地实现路径确定单元120。

应当理解,尽管主要针对通信网络110的特定布置(说明性地,在特定布置中连接的特定数量的节点112和链路114)而示出,但是通信网络110可以包括可采用各种其它方式布置的更少或更多的节点112或链路114。

图2示出了用于说明双向约束路径搜索的示例性通信网络。

通信网络200包括四个节点212-1至212-4(统称为节点210),分别被标记为节点a、b、c和d。通信网络200还包括如下布置的各种链路214:从节点a到节点b的链路(成本=“5”)、从节点b到节点a的链路(成本=“10”)、从节点a到节点c的链路(成本=“3”)、从节点c到节点a的链路(成本=“1”)、从节点b到节点d的链路(成本=“1”)、从节点d到节点b的链路(成本=“2”)、从节点c到节点d的链路(成本=“2”)、以及从节点d到节点c的链路(成本=“4”)。

正在执行双向约束路径搜索以确定节点a与节点d之间的一对通信路径,以使得节点a和节点d将被理解为是正被确定的通信路径的终端节点(即使它们可能不是将经由通信路径传输的数据的端点终端或最终目的地)。正在执行双向约束路径搜索以如下地确定节点a与节点d之间的一对通信路径:(1)找到满足前向通信路径的总成本不超过“8”的路径级成本约束的从节点a到节点d的最短前向通信路径,以及(2)找到满足反向通信路径的总成本不超过“6”的路径级成本约束的从节点d到节点a的最短反向通信路径,其中(3)前向通信路径和反向通信使用通信网络200的一组公共资源(例如,使用公共链路资源来遍历一组相同的节点)。

双向约束路径搜索机制通过选择从节点a到节点b的链路并针对前向路径约束(总成本≤“8”)来评估该链路而开始。在此,从节点a到节点b的链路的成本是“5”,使得从节点a到节点b的链路满足前向路径约束,因此可被选择作为从节点a到节点d的前向通信路径的一部分。然后,双向约束路径搜索将从节点b到节点a的链路识别为与从节点a到节点b的链路配对(因为这些链路指向这一对相同节点之间的相反方向,并且可选地可以共享使它们被视为链路对的其它网络信息),并针对反向路径约束(总成本≤“6”)来评估该链路。在此,从节点b到节点a的链路的成本是“10”,使得从节点b到节点a的链路不满足反向路径约束,因此不能被选择作为从节点d到节点a的反向通信路径的一部分。作为结果,即使从节点a到节点b的链路满足前向路径约束,并因此可被选择作为从节点a到节点d的前向通信路径的一部分,但是由于确定从节点b到节点a的链路不满足反向路径约束,并因此不能被选择作为从节点d到节点a的反向通信路径的一部分,所以从节点a到节点b的链路也被拒绝被包括在前向通信路径中。换言之,对于从节点a到节点b的前向链路和从节点b到节点a的反向链路,基于确定成对链路中的至少一个不满足其相关联的约束(在该实例中,从节点b到节点a的反向链路无法满足反向路径约束),从节点a到节点b的前向链路不被选择用于前向通信路径中并且从节点b到节点a的反向链路不被选择用于反向通信路径中。然后,双向约束路径搜索通过保持在当前节点(节点a)并选择下一个可用前向链路以用于评估,来继续尝试确定前向和反向通信路径。

双向约束路径搜索机制接下来选择从节点a到节点c的链路,并针对前向路径约束(总成本≤“8”)来评估该链路。在此,从节点a到节点c的链路成本是“3”,使得从节点a到节点c的链路满足前向路径约束,因此可被选择作为从节点a到节点d的前向通信路径的一部分。然后,双向约束路径搜索将从节点c到节点a的链路识别为与从节点a到节点c的链路配对(因为这些链路指向这一对相同节点之间的相反方向,并且可选地可以共享使它们被视为链路对的其它网络信息),并针对反向路径约束(总成本≤“6”)来评估该链路。在此,从节点c到节点a的链路的成本是“1”,使得从节点c到节点a的链路满足反向路径约束,因此可被选择作为从节点d到节点a的反向通信路径的一部分。换言之,对于从节点a到节点c的前向链路和从节点c到节点a的反向链路,基于确定前向链路满足前向路径约束并且反向链路满足反向路径约束,从节点a到节点c的前向链路被选择用于前向通信路径中并且从节点c到节点a的反向链路被选择用于反向通信路径中。然后,双向约束路径搜索通过遍历到下一个节点(节点c,因为a与c之间的链接已被选择包括在通信路径中)的图并选择可用前向链路以用于评估,来继续尝试确定前向和反向通信路径。

双向约束路径搜索机制接下来选择从节点c到节点d的链路,并针对前向路径约束(总成本≤“8”)来评估该链路。在此,从节点c到节点d的链路的成本是“2”,从而在当前路径上产生总成本“5”,使得从节点c到节点d的链路满足前向路径约束,因此可被选择作为从节点a到节点d的前向通信路径的一部分。然后,双向约束路径搜索将从节点d到节点c的链路识别为与从节点c到节点d的链路配对(因为这些链路指向这一对相同节点之间的相反方向,并且可选地可以共享使它们被视为链路对的其它网络信息),并针对反向路径约束(总成本≤“6”)来评估该链路。在此,从节点d到节点c的链路的成本是“4”,从而产生用于反向通信路径的总成本“5”,使得从节点d到节点c的链路满足反向路径约束,因此可被选择作为从节点d到节点a的反向通信路径的一部分。换言之,对于从节点c到节点d的前向链路和从节点d到节点c的反向链路,基于确定前向链路满足前向路径约束并且反向链路满足反向路径约束,从节点c到节点d的前向链路被选择用于前向通信路径中并且从节点d到节点c的反向链路被选择用于反向通信路径中。然后,双向约束路径搜索通过遍历到下一个节点(节点d,因为c与d之间的链路已被选择包括在通信路径中)的加权有向图,来继续尝试确定前向和反向通信路径。

双向约束路径搜索机制到达节点d并将节点d标识为前向通信路径的端点。相应地,双向约束路径搜索结束,因为双向约束路径搜索已经分别确定了满足前向和反向路径约束的节点a与d之间的前向和反向通信路径。也即是说,双向约束路径搜索已经确定了满足前向路径约束的从节点a到节点d的前向通信路径(即,路径a-c-d,具有总成本“5”,其小于总成本小于“8”的前向路径约束),并且还确定了满足反向路径约束的从节点d到节点a的反向通信路径(即,路径d-c-a,具有总成本“5”,其小于总成本小于“6”的反向路径约束)。

应当理解,在没有双向约束路径搜索机制的情况下,前向通信路径和反向通信路径将被独立地确定,这将导致确定前向通信路径a-b-d(成本=“6”)和反向通信路径d-c-a(成本=“5”),使得所得到的前向和反向通信路径将采取经由通信网络200的不同的路径(遍历不同的节点和链路组)。换言之,即使所确定的前向和反向通信路径分别满足前向路径约束和反向路径约束,但是因为前向和反向通信路径没有共享通信网络200的一组公共资源,所以所得到的前向和反向通信路径将被视为不良结果组。

图3示出了用于执行双向约束路径搜索以确定网络的一对节点之间的一对双向通信路径的方法的流程图。该对节点包括第一终端节点和第二终端节点(为了指示方向,被称为源节点和目标节点),其中从第一终端节点/源节点到第二终端节点/目标节点的方向是前向方向,而从第二终端节点/目标节点到第一终端节点/源节点的方向是反向方向。应当理解,尽管在此主要示出为串行地执行,但是方法300的功能的一部分可以同时执行或者可以采用与图3中所示不同的顺序来执行。

在框301,方法300开始。

在框305,获得用于终端节点对的加权有向图。该加权有向图基于终端节点对来定义,包括可用于被选择以包括在用于该终端节点对的双向通信路径内的网络的节点和链路。该加权有向图可以包括可用于在遍历加权有向图期间评估约束的信息(例如,每链路成本信息、每链路带宽信息等及其各种组合)。该加权有向图可以通过从存储器中检索加权有向图(例如,在先前已计算加权有向图的情况下),通过计算加权有向图等及其各种组合来获得。

在框310,获得用于终端节点对的一组前向路径约束和一组反向路径约束。该组前向路径约束可以包括针对前向通信路径要满足的一个或多个前向路径约束(例如,一个或多个链路级约束、一个或多个节点级约束、一个或多个路径级约束等及其各种组合中的一个或多个)。该组反向路径约束可以包括针对反向通信路径要满足的一个或多个反向路径约束(例如,一个或多个链路级约束、一个或多个节点级约束、一个或多个路径级约束等及其各种组合中的一个或多个)。可以基于路径确定或建立请求来获得前向路径约束和反向路径约束(例如,其中特定用于通信路径的约束被包括在路径确定或建立请求内并从路径确定或建立请求中获取,其中约束基于路径确定或建立请求内包括的信息而从简档中获取等),可以基于独立于路径确定或建立请求而执行的双向路径确定的简档来获得前向路径约束和反向路径约束等。

在框315,选择加权有向图的(下一个)前向链路以用于评估。基于加权有向图的遍历来执行前向链路的选择以用于评估。加权有向图的遍历是在前向方向上执行的(尽管可以理解,在前向方向上的遍历也可以包括回溯)。在第一次通过框315时,在该终端节点对的第一终端节点处执行前向链路的选择以用于评估。在后续每次通过框315时,执行前向链路的选择以用于评估的方式可以取决于用于选择前向链路以用于评估的触发(即,从该处到达框315的方法300的框,如在下面进一步所讨论的)。本领域的技术人员将理解图遍历过程可用于遍历加权有向图的方式(可以又包括在到达“死端(deadend)”时在加权有向图内的回溯)。应当理解,尽管为了清楚起见而被省略,但是包括沿着双向通信路径的一部分回溯的加权有向图的遍历可能导致丢弃先前被选择以包括在前向和反向通信路径中的前向链路/反向链路对(因为这些链路可能不再是遵循端到端路径的前向和反向通信路径的一部分)。

在框320,针对或基于前向路径约束来评估加权有向图的前向链路。针对前向路径约束的加权有向图的前向链路的评估包括确定对于前向链路,关于在该组前向路径约束中的每个前向路径约束是否被满足(例如,前向链路的链路带宽超过由被选择以包括在前向通信路径中的链路所支持的最小链路带宽,前向链路的链路成本不超过用于前向通信路径的最大每链路成本,到目前为止所确定的前向通信链路的总成本不超过用于端到端路径的最大总路径成本等及其各种组合)。在框325,作出关于前向链路是否有效,并且因此适用于被选择以包括在前向通信路径中的确定。基于确定前向链路满足用于前向通信路径的该组前向路径约束中的前向路径约束,前向链路被视为有效。如果作出前向链路无效的确定,则方法300返回到框315,在此选择下一个前向链路以用于评估。注意,这可以是在当前节点处可用于评估的下一个前向链路、遍历到加权有向图的下一个分支以识别待评估的下一个前向链路等。如果作出前向链路有效的确定,则方法300前进到框330。

在框330,确定与前向链路相关联的对应的反向链路。可以通过将前向链路和反向链路识别为链路对来确定与前向链路相关联的反向链路(例如,因为前向链路和反向链路在相同节点对之间在相反方向上运行,并且可选地可以共享使它们被视为链接对的其它网络信息)。可以基于拓扑信息的处理等及其各种组合,从加权有向图中确定与前向链路相关联的反向链路(例如,在加权有向图信息中指示的链路对)。在框335,针对或基于反向路径约束来评估反向链路。针对反向路径约束的反向链路的评估包括确定对于反向链路,关于在该组反向路径约束中的每个反向路径约束是否被满足(例如,反向链路的链路带宽超过由被选择以包括在反向通信路径中的链路所支持的最小链路带宽,反向链路的链路成本不超过用于反向通信路径的最大每链路成本,到目前为止所确定的反向通信路径的总成本不超过用于端到端路径的最大总路径成本等及其各种组合)。在框340,作为关于反向链路是否有效,并且因此适用于被选择以包括在反向通信路径中的确定。基于确定反向链路满足用于反向通信路径的该组反向路径约束中的反向路径约束,反向链路被视为有效。如果作出反向链路无效的确定,则方法300返回到框315,在此选择下一个前向链路以用于评估。在此,即使前向链路先前被确定有效以包括在前向通信路径内,但反向链路无效,因此前向链路也被拒绝(即,不再被选择以用于前向通信路径中)。注意,这可以是在当前节点处可用于评估的下一个前向链路、遍历到加权有向图的下一个分支以识别待评估的下一个前向链路等。如果作出反向链路有效的确定,则方法300前进到框345。

在框345,前向链路被选择以包括在前向通信路径中,并且反向链路被选择以包括在反向通信路径中。在此,前向链路和反向链路被选择,因为前向链路适用于前向通信路径中,而反向链路适用于反向通信路径中。从框325和框340可以看出,如果前向链路被确定不适用于包括在前向通信路径中(例如,对于前向链路,一个或多个前向路径约束没有被满足)或反向链路被确定不适用于包括在反向通信路径中(例如,对于前向链路,一个或多个反向路径约束没有被满足),则前向链路和反向链路都不被选择以用于该节点对的双向通信路径中。

在框350,作出关于是否已到达目标节点的确定。关于是否已到达目标节点的确定可以基于最近被选择以用于包括在相应的前向和反向通信路径中的前向和反向链路的末端处的节点的确定(例如,基于网络拓扑信息、基于加权有向图的遍历或模拟遍历等)。如果尚未到达目标节点,则方法300返回到框315,在此选择下一个前向链路以用于评估。注意,在此,因为前向链路已经被选择以包括在前向通信路径中,所以加权有向图在前向方向上被遍历到被选择以包括在前向通信路径中的前向链路的末端的节点,以识别待评估的下一个前向链接。如果已到达目标节点,则方法300前进到框355。

在框355,输出所确定的前向通信路径和反向通信路径。前向通信路径是满足前向路径约束的从源节点到目标节点的通信路径。反向通信路径是满足反向路径约束的从目标节点到源节点的路径。前向和反向通信路径遵循节点对中的节点之间的相同的端到端路径(例如,就所遍历的节点和所遍历的公共链路资源而言)。前向通信路径和反向通信路径的输出可以包括前向通信路径和反向通信路径的存储(例如,描述通信路径的信息,诸如就针对相应的通信路径而遍历的节点和链路而言)、前向通信路径和反向通信路径在显示器上的显示,前向通信路径和反向通信路径的开始建立等及其各种组合中的一个或多个。

在框399,方法300结束。

应当理解,为了清楚起见,图3的方法300被布置为使得假设针对该节点对而确定一对双向通信路径。然而,应当理解,加权有向图的遍历可能不会导致为该节点对识别一对有效的双向通信路径。应当理解,可以采用各种方式来调适图3的方法300以解决这种可能性。例如,从框325和框340输出的“否”分支可以进入框(为了清楚起见,同样从图3中省略),在该框中作出关于加权有向图的遍历是否被完成的确定(例如,没有留下更多的分支来遍历,或者没有可能被遍历以到达目标节点的更多可用分支),以及(a)如果加权有向图的遍历未完成,则继续遍历加权有向图,或者(b)如果加权有向图的遍历完成,则方法300结束。

应当理解,为了清楚起见,图3的方法300被布置为使得在反向链路之前评估前向链路。然而,应当理解,在至少一些实施例中,反向链路可以在前向链路之前进行评估(例如,前向链路的评估取决于反向链路的有效性),前向链路和反向链路可以同时进行评估等。应当理解,可以使用这种技术的组合。应当理解,方法300的部分可以根据使用这些技术中的哪一个来进行调适;相应地,针对图4示出并描述了图3的方法300的框315、320、325、330、335、340和345的更一般表示。

图4示出了在执行双向约束路径搜索中使用以确定网络的一对节点之间的一对双向通信路径的方法的流程图。该对节点包括第一节点和第二节点(为了建立方向而被称为源节点和目标节点),其中,从第一/源节点到第二/目标节点的方向是前向方向,而从第二/目标节点到第一/源节点的方向是反向方向。应当理解,图4的方法400可被用于提供图3的方法300的框315、320、325、330、335、340和345。应当理解,尽管在此主要示出为串行地执行,但是方法400的功能的一部分可以同时执行或者可以采用与图4中所示不同的顺序来执行。

在框401,方法400开始。

在框410,评估前向链路以确定前向链路是否满足与前向通信路径相关联的一组约束,并且评估反向链路以确定反向链路是否满足与反向通信路径相关联的一组约束。可以同时评估前向链路和反向链路,可以基于确定前向链路有效来评估反向链路,或者可以基于确定反向链路有效来评估前向链路。可以在加权有向图的前向遍历的上下文内(例如,在加权有向图的前向遍历期间路径分支遍历的上下文内)评估前向和反向链接。

在框420,基于确定前向链路满足与前向通信路径相关联的该组约束以及确定反向链路满足与反向通信路径相关联的该组约束,前向链路被选择以包括在前向通信路径中并且反向链路被选择以包括在反向通信路径中。

在框499,方法400结束。

应当理解,尽管在此主要针对其中对于加权有向图中的任何节点对仅存在单个前向链路和单个反向链路的实施例而示出,但是在加权有向图中的一对节点之间可存在多个前向链路和/或多个反向链路。在至少一些这样的实施例中,可以采用串行,并行等方式针对相关联的约束来评估给定方向上的多个链路(例如,直到找到满足相关联的约束的第一链路,以用于识别满足相关联的约束的每个链路并选择满足相关联的约束的链路之一(例如,满足相关联的约束的链路中的最低成本链路)等)。

应当理解,尽管在此主要针对其中该组前向路径约束包括至少一个前向路径约束并且该组反向路径约束包括至少一个反向路径约束的实施例而示出,但是在至少一些实施例中,该组前向路径约束可以为空,或者该组反向路径约束可以为空(然而应注意,将至少有一个约束要被满足)。在此,这可被称为确定满足一组单向约束的双向通信路径的实施例。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中所有链路都支持1mbps的带宽(在此方向上的该组约束包括单个链路级约束),以及找到从b到a的最短路径(在此方向上的该组约束为空)。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径(在此方向上的该组约束为空),以及找到从b到a的最短路径,其中所有链路都支持5mbps的带宽(在此方向上的该组约束包括单个链路级约束)。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中最大总成本是“10”(在此方向上的该组约束包括单个路径级约束),以及找到从b到a的最短路径(在此方向上的该组约束为空)。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径(在此方向上的该组约束为空),以及找到从b到a的最短路径,其中最大总成本是“7”(在此方向上的该组约束包括单个路径级约束)。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径,其中所有链路都支持2mbps的带宽并且最大总成本是“8”(在此方向上的该组约束包括多个约束),以及找到从b到a的最短路径(在此方向上的该组约束为空)。例如,在目的是确定a与b之间的双向通信路径的情况下,这可以包括找到从a到b的最短路径(在此方向上的该组约束为空),以及找到从b到a的最短路径,其中所有链路支持3mbps的带宽并且最大总成本是“12”(在此方向的该组约束包括多个约束)。应当理解,前述示例仅仅是单向约束以及可以在双向约束路径搜索中应用单向约束的方式的几个示例。在至少一些实施例中,前向链路的评估和反向链路的评估可以包括评估前向链路以确定前向链路是否适用于包括在前向通信路径内以及评估反向链路以确定反向链路是否适用于包括在反向通信路径中,其中(至少一个)前向链路的评估中基于与前向通信路径相关联的一组约束(或者在没有约束的情况下不执行评估,因为没有约束要被满足)或者反向链路的评估基于与反向通信路径相关联的一组约束(或者在没有约束的情况下不执行评估,因为没有约束要被满足)。

应当理解,尽管在此主要针对其中在遍历加权有向图期间确定或捕获前向通信路径和反向通信路径的实施例而示出,但是在至少一些实施例中,在遍历加权有向图期间只确定或捕获前向通信路径(然而应注意,在遍历加权有向图期间仍然评估和验证反向通信),然后可以在加权有向图的遍历完成之后确定或捕获反向通信路径。例如,在确定前向通信路径之后,前向通信路径可用于确定(或推断)对应的反向通信路径。例如,反向通信路径可以通过沿着前向通信路径的路径在相反的方向上遍历加权有向图(而不是在相反的方向上执行加权有向图的完全遍历)来确定。应当理解,在至少一些这样的实施例中,对于加权有向图的遍历内的给定节点对,基于确定前向链路满足用于前向通信路径的该组前向路径约束并且基于确定反向链路满足用于反向通信路径的该组反向路径约束,只有前向链路被选择以包括在前向通信路径中(此时,反向链路再次被评估但未被选择)。

应当理解,尽管在此主要针对在通信网络的环境中使用双向约束路径搜索机制来确定双向通信路径而示出,但是双向约束路径搜索机制也可以在各种其它环境中使用以确定双向路径。例如,双向约束路径搜索机制还可以用于确定道路网络内的双向驾驶路径,用于确定社交网络中的个体之间的双向关系或连接等。相应地,可以更一般地阅读在本文中使用的特定于通信网络的各种术语,以涵盖在其中可以应用双向约束路径搜索机制的其它环境(例如,使用“前向路径”代替“前向通信路径”,使用“反向路径”代替“反向通信路径”,使用“边缘”代替“链路”等及其各种组合)。

如上所讨论的,双向约束路径搜索机制被配置为采用单个路径搜索迭代来确定在一对节点之间的双向路径。换言之,使用单个图遍历来执行单个最短路径过程,以确定在一对节点之间的双向路径。这可以与使用现有方法来实现的性能相比较,其中使用一个或多个路径搜索迭代来独立地确定前向路径和反向路径以确定前向路径,并且使用一个或多个路径搜索迭代来确定反向路径。使用这种现有方法,为了以确保双向路径使用一组公共资源(例如,使用公共链路资源来遍历一组相同的节点)的方式来确定受约束的一对节点之间的双向路径,最少需要两次路径搜索迭代(假设前向路径搜索迭代和反向路径搜索迭代独立地执行,导致就所遍历的节点而言选择相同的端到端路径)并且可能需要执行最坏情况的(k-2)+(m-2)次路径搜索迭代(其中,“k”表示从节点对的第一节点到节点对的第二节点的路径的数量,“m”表示从节点对的第二个节点到节点对的第一个节点的路径的数量),以确定在节点对之间的使用一组公共资源的双向路径,或者确定在节点对之间不存在使用一组公共资源的一对双向路径。可以仔细考虑双向约束路径搜索机制的各种其它优点或潜在优点。

图5示出了适用于在执行在本文中描述的各种功能中使用的计算机的高级框图。

计算机500包括处理器502(例如,中央处理单元(cpu)、具有一组处理器核的处理器、处理器的处理器核等)和存储器504(例如,随机存取存储器(ram)、只读存储器(rom)等)。处理器502和存储器504通信连接。

计算机500还可以包括协作单元505。协作单元505可以是硬件设备。协作单元505可以是可被加载到存储器504中并由处理器502执行以实现在本文中讨论的功能的过程(在这种情况下,例如,协作单元505(包括关联的数据结构)可以存储在诸如存储设备或其它存储元件(例如,磁驱动器、光学驱动器等)的计算机可读存储介质上)。

计算机500还可以包括一个或多个输入/输出设备506。输入/输出设备506可以包括用户输入设备(例如,键盘、小键盘、鼠标、麦克风、相机等)和用户输出设备(例如显示器、扬声器等)中的一个或多个、一个或多个网络通信设备或元件(例如,输入端口、输出端口、接收机、发射机、收发机等)、一个或多个存储设备(例如,磁带驱动器、软盘驱动器、硬盘驱动器、光盘驱动器等)等及其各种组合。

应当理解,图5的计算机500可以表示适用于实现在本文中描述的功能元件、在本文中描述的功能元件的部分等以及其各种组合的一般架构和功能。例如,计算机500可以提供适用于实现节点112、路径确定单元120、节点212或在本文中示出的任何其它设备或元件的一般架构和功能。

应当理解,在本文中示出的功能可以采用软件来实现(例如,经由软件在一个或多个处理器上实现以用于在通用计算机上执行(例如,经由一个或多个处理器执行)以实现专用计算机等)和/或可以采用硬件来实现(例如,使用通用计算机、一个或多个专用集成电路(asic)和/或任何其它硬件等同物)。

应当理解,在本文中作为软件方法讨论的步骤中的至少一些可以在硬件内实现,例如,作为执行各种方法步骤的电路,作为与处理器协作以执行各种方法步骤的电路等及其各种组合。在本文中描述的功能/元件的部分可被实现为存储计算机指令的计算机程序产品,其中,计算机指令在由计算机处理时,调适计算机的操作,以使得在本文中描述的方法步骤和/或技术被调用或以其它方式提供。用于调用各种方法的指令可以存储在固定或可移除介质(例如,非暂时性计算机可读介质)中,经由广播或其它信号承载介质中的数据流来传输,和/或存储在根据指令操作的计算设备内的存储器内等及其各种组合。

应当理解,除非另行说明(例如,使用“或其它”或者“或替代”),否则在本文中使用的术语“或”是指非排它性的“或”。

应当理解,尽管结合在本文中给出的教导的各种实施例已经在本文中进行详细地示出和描述,但是,本领域的技术人员可以容易地设计出仍然包含这些教导的许多其它变形的实施例。

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