用于大规模数据中心网络的业务工程的制作方法

文档序号:11142888阅读:316来源:国知局
用于大规模数据中心网络的业务工程的制造方法与工艺

本申请是于2013年12月23日提交的美国专利申请号14/139,150的继续申请,其公开内容通过引用特此合并入本文。



背景技术:

在计算机数据中心,许多不同的主机被用于处理、存储以及传送大量的数据。每个主机可以包括一个或多个处理器、存储器和接口。诸如服务器的主机通常被布置在机柜内,其中每个机柜容纳多台服务器。每个机柜可以具有用于与下一交换层通信的机柜顶部(“TOR”)交换机。该交换层可以包括交换机集群(“中间块”),其提供对等的大容量本地业务。相应地,多个中间块可以在逻辑上被分组为更大的集群(“结构块”)。这创建了多层级交换架构。

结构块能够在整个数据中心分布,其中使用昂贵的远距离光纤将结构块的最高级交换机互连。作为对等带宽与低成本之间的权衡,结构块间的互连通常采用直接连接,而不是使用CLOS型拓扑结构。然而,具有挑战性的是,提供一种具有公平的带宽分配的系统,该系统同样重视不同的服务等级并且有效地跨多层级交换环境进行工作。随着主机数量以及是数据中心的整体规模的增加,这能够尤其具有挑战性。



技术实现要素:

本公开的一个方面基于各种信息来确定涵盖端到端路径集合的数据中心网络中的块间业务的带宽分配。其采用了一些优化目标和启发式注水策略,以避免产生不必要的路径并且避免确定在实际需要时将不可用的路径。

依据本公开的一个方面,提供了在计算机网路中进行业务工程的方法。所述计算机网络具有相互通信的多个结构块,以及在每个结构块中具有一个或多个中间块。所述方法包括通过一个或多个处理器从所述多个结构块中识别源结构块FBs;以循环的顺序评估所述多个结构块的每个目的地结构块;通过所述一个或多个处理器以循环的顺序在所选择的目的地结构块FBd中选择单个目的地中间块MBd;通过所述一个或多个处理器以循环的顺序选择源结构块FBs;通过所述一个或多个处理器从所述源结构块FBs中的全部中间块中识别源中间块的子集M,中间块的所述子集被识别为具有到所述目的地中间块MBd的最短可用路径长度;以及通过所述一个或多个处理器在最大化以下条件的所述子集M中选择所述源中间块MBs中的一个以在网络路径中使用:

min(demand(MBs,FBd),spf_capacity(MBs,MBd)),

其中spf_capacity(MBs,MBd)表示所述源中间块MBs与所述目的地中间块MBd之间的最短路径容量,以及demand(MBs,FBd)表示所述源中间块MBs与所述目的地结构块FBd之间的需求。

在一个替选方案中,所述方法进一步包括生成路由计算图,所述路由计算图促进通过迭代选择使所述条件最大化的源中间块和目的地中间块来进行带宽分配。在另一个替选方案中,所述方法进一步包括,对于每个源结构块,将到目的地结构块的需求在所述目的地结构块中的每个无故障中间块间均等地进行分割。

所述方法可以进一步包括将每个中间块扩展为单个节点;确定对于每个中间块的所有中间块层级路径;以及建立用于每个中间块层级路径的隧道表。在另一个示例中,如果并非所有需求都被满足,则所述方法进一步包括识别任何残余的块间带宽。

在另一个替选方案中,对于多个优先级组迭代地执行所述方法。这可以包括对于所述多个优先级组中的每一个内的每个服务等级迭代 地执行所述方法。在这种情况下,所述方法可以进一步包括将加权应用到所述多个优先级组内的每个服务等级。

在另一个替选方式中,所述方法进一步包括基于开启链路事件和关闭链路事件中的至少一个来更新对所述源中间块MBs的选择。

可以如以下阐述通过一个或多个处理器来执行上述方法。存储用于执行所述方法的指令的记录介质也被提供。

附图说明

图1图示了与本公开的方面一起使用的示例多级数据中心网络;

图2图示了与本公开的方面一起使用的示例主机计算设备;

图3图示了中间块内的边缘处的拥塞的示例;

图4图示了机柜顶部上行链路上的拥塞的示例;

图4A图示了依据本公开的方面的业务工程过程的流程图;

图5图示了依据本公开的方面的示例路由计算图;

图6图示了依据本公开的方面的源中间块与目的地中间块之间的示例中间块路径;

图7A图示了依据本公开的方面的另一示例路由计算图;

图7B图示了依据本公开的方面的具有混合抽象层的示例块间路径。

具体实施方式

在通过参照以下实施例和附图的描述进行考虑时将理解本公开的方面、特征和优点。不同附图中的相同的参考标记可以标识相同或相似的元件。此外,以下描述并非限制性;本技术的范围由所附权利要求书及其等同来限定。尽管依据示例实施例的某些过程在附图中被示出为以依次方式发生,但是除非本文明确说明,否则这并不是必需的。不同的过程可以以不同的顺序来执行或同时执行。除非另外说明,否则也可以添加或省略步骤。

本文所述的技术介绍了用于数据中心网络的业务工程方案,该数据中心网络包括采用直接连接拓扑结构的网络。如上所述,大规模数据中心网络可以包括兼顾了成本与带宽之间的权衡的多级交换机。本技术的一个方面采用了公平性功能,该公平性功能具有多个优化目标并且使用不同的分配策略以提供高效的数据路由。

许多网络分配算法对服务等级和公平性进行了考虑。然而,在超级交换机网络中,有可能充分利用交换抽象(switching abstraction)而不是考虑由低层级物理交换单元组成的图。这种方法创建了小得多的图,该图转换为分配加速。此外,虽然带宽分配方案可以考虑简单的公平性概念,诸如涵盖网络中的不同流的最大-最小公平性,但是如本文所述,交换机的分组创建了新的公平性要求,诸如涵盖经过超级块的不同中间块的业务的公平性。附加的约束源自于交换机中有限数量的隧道入口。

依据以下所详细讨论的某些方面,公平性功能包括多个优化目标。这样的目标可以按重要性递减的顺序来考虑,其包括:

1.保留服务等级;

2.最大-最小公平性;

3.超级块内最大-最小公平性;

4.最小化路径距离;

5.最小化路径的总数;以及

6.最小化满足给定需求所需的路径数量。

考虑到第一目标,服务等级可以被分组为优先级组。在不同的优先级组间强制执行严格的优先级,并且在每个优先级组内具有加权公平性。给定将服务等级分为优先级组的分组方式和不同服务等级的权重,以作为向总过程的输入。

本技术的方面涉及使用中间块来构造图,以及仅当在不能满足更多需求时将所选择的中间块分解为交换片,这创建了不同抽象层的交换机的图。与总是在源和目的地之间产生k条不相交最短路径的方案不同,路径是按需求而确定的。这种方法有两个主要优点。第一,不产生不必要的路径。第二,不计算出当实际需要时将不可用的路径。例如,如果过程预先计算了从第一源(src1)到第一目的地(dst1)的10条路径,这些路径可以与从第二源(src2)到第二目的地(dst2)的路径共享链路,则因此如果执意要把这10条路径全部用来分配从scr1到dst1的需求,就可能违反公平性。与之相反,依据一个方面,采用了迭代的方法。

通过示例的方式,在一些需求将要被分配的情况下,计算每一对节点之间的最初所有最小长度的路径(不一定不相交)(与上面所述的k条最短路径不同,只计算最小长度的路径,因此该步骤处产生的所有路径具有相等的长度)。然后过程使用满足优化目标的多级注水例程。仅当从源到目的地的所有最小长度的都被穷尽时,才计算它们之间具有可用容量的次最小路径。

过程被配置为在节点和链路故障时逐渐地调整分配,并且仅执行所需的最小分配改变。如果源与目的地之间的需求不能够被满足,则使用分解技术来将中间块替换为网络图中的交换片,并且然后过程尝试分配剩余需求。

这是有利的,因为这提供了获取实际生产需求的鲁棒性优化功能,诸如均衡业务、最小化片表条目等。图的迭代分解利用了超级集群中所使用的交换机元件的抽象。所采用的技术适应需求变化、故障,并且考虑到了服务质量参数。

图1图示了示例多级数据中心网络100。网络100包括多个结构块102,多个结构块102被示出为经由通过点划线表示的链路104来直 接连接。实践中,链路104可以是光纤链路。在本示例中,每个结构块102包括2级网络,所述2级网络包括与多个机柜顶部交换机1081至108M互连的多个中间块1061至106N。

每个中间块106可以包括两级交换机,即第一级110(S2)和第二级112(S3)。每个中间块的S2和S3交换机的2级网络可以以Clos架构来互连。与结构块102之间的连接类似,中间块106和TOR交换机108经由链路114来直接连接,链路114也可以是光纤链路。

如图2所示,每个交换机200可以包括一个或多个处理器202,例如CPU和/或ASIC。交换机200还包括存储指令206和数据208的存储器204。经由端口210的多个连接提供数据中心网络中的其他交换机之间的通信链路。

用于这样的多级数据中心网络的业务工程应当解决传统ISP网络不会遇到的挑战。例如,业务工程应当具有良好的可扩展,以高效地计算用于比传统ISP网络大几个数量级的数据中心网络的路由,并且还应当在故障发生时最小化路由收敛时间。业务工程还应当解决数据中心网络的拓扑结构的异质性,以及减少块内及块间链路两者的端到端业务流的拥塞。此外,业务工程还应当考虑到网络交换机中的有限的转发表条目。

为了解决这样的挑战,业务工程解决方案的方面使用各种信息作为输入,以便确定涵盖端到端路径集合的块间业务的带宽分配。输入信息考虑到以下因素中的一些或全部:块间拓扑结构;业务需求的集合,其描述了对于给定服务等级(“CoS“)的一对源和目的地之间的期望的总吞吐量;不同CoS间的调度策略(例如优先级分组);以及用于提供中转块间业务的中间块的容量。

为了实现以上内容,考虑了一些优化目标。一个目标是不同源与 目的地结构块之间的业务需求间的公平性。另一个目标是最小化块间业务的跳数以减少延迟。另一个目标是最小化块间业务的路径计数以减少转发表条目的地数量。另一个目标是最小化块间和块内链路的拥塞。另一个目标是最小化业务工程过程的运行时的速度。另一个目标是在故障发生时最小化路由收敛时间。以及另一个目标是考虑到服务质量。如以下详细讨论,这些目标被实现。

本文所讨论的带宽分配的一个方面融合了“注水”技术,以用相同速度来增加对于不同源与目的地结构块对的业务需求的带宽分配。对于被完全满足的业务需求带宽分配停止,而对于仍然未被满足的业务需求带宽分配继续增加。在一个实例中,这是通过首先优选最短路径来减少跳数从而减少块间业务的延迟来完成的。

如图3和图4所示,虽然每个结构块内的交换机以Clos拓扑结构来互连,拥塞仍然可以发生。图3图示了具有例如由光学互连(未示出)所连接的三个结构块302的示例网络300。如上文关于图1所讨论的,结构块B的中间块306和TOR交换机308互连,并且每个中间块306的S2交换机310和S3交换机也互连。

在此示例中,每个中间块306是Clos网络,出于降低成本的目的地其可以仅包括两级。块内业务314和块间业务316分别用实线和虚线来示出。如果结构块B中这样的中间块同时提供块内业务和中转从结构块A去往结构块C的块间业务,则拥塞318可以发生。

图4图示了使用最大化利用结构块A与结构块D之间的最短路径的本地带宽分配方案的示例情境400。此处,结构块402之间的块间通信以40千兆比特/秒(40G)的速度发生,同时块内通信以10千兆比特/秒(10G)的速度发生。如果从TOR交换机408经中间块406至结构块D的块间业务具有20千兆比特/秒(20G)的最大速度,则当以该最大速度突发块间业务时将导致上行链路上的拥塞418。

为了最小化中间块间的边缘上的拥塞,业务工程过程的一个方面将路径的容量确定为用于提供在无任何拥塞的情况下中转块间业务的(a)块间链路的瓶颈容量与(b)中间块的瓶颈容量之间的最小值。每个中间块的边缘连接可以包括一个或多个物理通信链路。

为了最小化TOR上行链路上的拥塞,业务工程过程使用以下所讨论的策略来确保块间和块内“最大最小”公平性。图4A中示出了图示该过程的流程图450。

首先,如框452中所示,对于每个结构块,过程将到目的地结构块的带宽需求在该结构块的中间块间均等地进行分割。其次,该过程使用以下启发式注水策略来以同一步调增加对不同源/目的地结构块的带宽分配,并且附加地以如下的循环方式平均地将块间路径带宽分配给源或目的地结构块中的不同中间块。

如框454中所示,以循环方式,考虑目的地结构块FBd。如框456中所示,每次考虑结构块FBd时,聚焦于在FBd中以循环方式选择的单个目的地中间块MBd。如框458中所示,以循环方式来选择源结构块FBs

如框460中所示,在源结构块FBs中的中间块间找到具有到目的地中间块MBd的最短可用路径长度的子集M。此处,如框462中所示,在子集M中的中间块间选择最大化下式的中间块:

min(demand(MBs,FBd),spf_capacity(MBs,MBd)),

其中spf_capacity(MBs,MBd)表示源中间块MBs与目的地中间块MBd之间的最短路径容量,以及demand(MBs,FBd)表示源中间块MBs与目的地中间块FBd之间的需求。

在这种情境下,为了伸缩性和最小化路径计数,业务工程过程首 先将每个中间块扩展为单个节点并计算所有中间块层级路径。如果这样的路径能够满足所有需求,则该过程终止,并且建立用于图5和图6中图示的每个中间块层级路径的“隧道”。

图5图示了具有源中间块502、目的地中间块504以及中转中间块506的架构500。中间块均可以具有如上文所讨论的Clos架构中互连的S2交换机和S3交换机的2级网络。并且图6的示例600图示了经由中转中间块606的2级交换机网络源中间块602与目的地中间块604之间的示例中间块层级路径。此处,虚线指示不同交换机之间的边缘。该架构导致了业务工程过程的最小执行时间,并且有助于最小化隧道表条目,该隧道表条目将被编程在通常仅具有数百条隧道的交换机上。

如果并非所有的需求都被满足,则业务工程(TE)过程继续识别不需要在中间块内反弹的残余中间块带宽。依据本公开的一个方面,一种方法构造了具有减少的抽象层的图,其在图7A-图7B中被反复示出。图7A图示了路由计算图700,其具有源中间块702、目的地中间块704以及两个中转中间块706和708。如此处所示,中转中间块706(MB1)已经被分解为S3片。图7B的图示750示出了将中转中间块MB2分解为S3交换机的图,其中由虚线指示了不同中间块之间的相应边缘。

在这样的图中,具有0残余容量的中间块被分解为不互连的s3交换机的集合。业务工程过程确定新块间路径,该新块间路径经过具有非零残余容量的中间块的集合和没有剩余容量的中间块中的s3交换机。此过程不断重复直到该图仅包括中间块中的s3交换机,或者不能够满足需求为止。

从中间块推导的图开始并且仅当不再能够满足需求时才将所述中间块分解为交换机的一个优点源自以下观察:交换机层级路径比可能具有高得多的总容量的中间块层级路径更多。对此详细说明如下。

例如,假设结构块(FB)的每个中间块(MB)包括八个S2交换机和八个S3交换机。第一中间块MB1与第二中间块MB2之间的单跳中间块层级路径将转换为3跳交换机层级路径:MB1.s2---MB1.s3---MB2.s3---MB2.s2。

在这种情况下,由于每个中间块具有八个S2层级交换机,这些s2交换机中的任何一个能够被用于穿越源中间块和目的地中间块两者中的该路径。因此,总共有64个不同的交换机层级路径,每一个由MB1.s2和MB2.s2的唯一组合来标识。例如,两个不同的交换机层级路径可以是:

MB1.s2[0]---MB1.s3[2]---MB2.s3[4]---MB2.s2[0]

MB1.s2[0]---MB1.s3[1]---MB2.s3[3]---MB2.s2[1]

此处,括号中的数字标识所述路径穿越了具体哪个s2和s3片。

两个中间块有可能被多个S3链路连接。在这样的情况下,单跳情况中路径的总数为第一中间块MB1的S3交换机与第二中间块MB2的S3交换机之间的链路数量乘以64。对于长度为k的路径,即使只有一条S3链路连接路径上的每对MB,交换机层级路径的数量仍为8(k+1)。因此,抽取掉交换机并且最初着眼于中间块层级路径极大地减小了图并且由此加速了路由计算过程。

为了最小化拓扑结构事件时的路由收敛,业务工程过程的一个方面识别受故障事件影响的需求,或者识别在链路/交换机开启事件之前未满足的剩余需求,并且确定将被分配给这样的需求的新路径的最小集合。执行这种增量更新,而非从头开始完整地重新运行路径带宽分配算法。

通过业务工程过程来支持不同的服务等级(CoS)。该过程处理需求的集合,所述需求的集合中的每一个可以被表示为三元体(CoS、源MB、 目的地结构块)。服务等级被分组为优先级组。例如,如果有四个服务等级(CoS1,CoS2,CoS3和CoS4),可能的配置方式可以指示将CoS1与CoS2共同分组为第一优先级组1并且将CoS3与CoS4共同分组为第二优先级组2。将不同服务等级分类为优先级组充当了至所述过程的输入。

所述过程期望在不同优先级组之间应用严格的优先级,所述优先级组具有优先级组内的加权公平分配。因此,该过程首先试图满足优先级组1中的所有需求,并且仅在其后才移至优先级组2。当为组1分配带宽时,执行“加权注水”,其中权重被给定为至所述过程的输入。本质上,并非每次试图将需求减少一定量(差量),而是同时考虑服务等级的加权根据差量*权重(CoS)的量来减少需求。因此,可以对多个优先级组重复关于图4A上述的过程流,并且也可以对于优先级组内的每个CoS重复该过程流。

依据本技术的方面的业务工程过程的高级伪代码示例(“GraphConstruction”)介绍如下。GraphConstruction()函数基于块间拓扑结构来构造用于路由计算的图。最初,该图从以每个节点表示中间块的最高抽象层开始,并且逐渐减少抽象层来识别满足附加的需求的混合抽象层的路径。剩余的伪代码实现以上所述的分配策略。

业务工程过程期望使用用于路径确定和带宽分配的以下构建块中的一些或全部。

(I)最短路径计算

有可能实施Dijkstra单一源最短路径算法的变型来计算最短路径。在与本文所讨论的技术的方面一起使用的变型中,输入是源MB(src)和残余中间块图。算法找到了从src至其他节点中的每一个的所有最短路径。对于图中的每个节点,算法产生与从src至该节点的所有最短路径相对应的前驱列表。

只要边缘的残余容量大于0并且其端点节点的残余容量大于0,该边缘就被视为可见。所述算法根据源节点的给定列表来并行运行。最初,该列表包括图中的所有节点。当某些源与目的地节点之间的所有最短路径被穷尽时,由仅包含相关源节点的列表来调用最短路径搜索(见下文)。

(II)找到最大容量最短路径

可以采用递归函数来找到从给定源节点(src)至给定目的地节点(dst)的最大容量最短路径。除了src和dst以外,递归函数将与从src至dst的最短路径相对应的dst的前驱的列表作为输入。该函数逐个仔细检查所述前驱,并且根据最小化函数来计算最后一跳的容量:

最后一跳容量=min(前驱mb容量,dst mb容量,前驱与dst之间的边缘容量)

如果“最后一跳容量”小于到目前为止所见的最大容量,则没有理由再考虑该前驱。否则,函数会被该前驱递归调用,并且使用该前驱的总路径容量是min(最后一跳容量,从src到前驱的最大容量路径)。如果该路径容量大于到目前为止找到的最大值,则更新最大值。所述递归使用缓存,以避免重复计算已经找到的最大容量路径。

(III)获得两个中间块之间的下一个可用最短路径

此方法("get_path")获得作为参数的源节点(MBs)和目的地节点(MBd),并且找到这些节点之间的具有非空容量的最短路径。此方法根据以下三个步骤来逐步扩大其对于路径的搜索。第一,如果用于分配源与目的地之间的带宽的上一路径仍然具有一些容量,则使用该路径。为此,系统总是记住(例如存储在缓存中)用于在每对节点之间进行分配的最后路径。第二,所述过程找到由最近一次调用最短路径计算算法所找到的最短路径中的最大容量最短路径。如果返回的路径具有非空容量,则使用该路径。以及第三,调用最短路径计算算法来寻找新的最短路径,但是这次仅从源到图中的所有其他节点中进行寻找。然后在所找到的最短路径中的找到最大容量最短路径。此处,如果返回的路径具有非空容量,则使用该路径。

(IV)在路径上分配带宽

此方法("allocate_path")获得作为参数的路径和需求,并且在该路径上分配min(路径容量,需求)。残余容量被保持以用于每个链路以及每个节点(中间块)。

(V)路径的反向索引

此方法("index_path")获得作为参数的路径。对于给定路径中的每个节点和链路,该路径标识符被添加到穿过该节点/链路的路径列表中,创建倒排索引。这允许系统通过仅考虑用于重新分配的相关路径来对链路和节点故障高效地作出反应。例如,如果存在两个路径p1=(a,b,c)和p2=(d,b,c,e),则系统将具有以下用于该链路的索引(以及类似地用于该节点的索引)。

(a,b):p1

(b,c):p1,p2

(d,b):p2

(c,e):p2

根据本技术的一个方面,路径由唯一的路径ID来表示。唯一的路径ID可以通过散列该路径中节点ID的序列来产生。

(VI)带宽分配:最宽路径

对于此过程("widest_path"),存在以下输入:源结构块FBs、目的地中间块MB以及表示容量的常数DELTA。目的地在于找到源结构块FBs中的“最佳”中间块,在源中间块与给定中间块MB之间的下一可用路径上分配DELTA,并且对所使用的路径进行编索引。此过程返回“最佳”源中间块或在未找到合适的源中间块时返回空。

假设边缘容量是DELTA的倍数。该假设意为具有小于DELTA的容量的路径必然不具有残余容量。因此,当调用get_path时,该过程搜索两个节点之间具有至少DELTA残余容量的最短路径。如果该过程未找到这样的路径,则确定在源与目的地之间不再有任何长度的可用路径。

在此过程中,FBs中的“最佳”源中间块是具有以下条件的中间块(以此顺序):

a)具有在到MB的下一可用路径上的至少DELTA容量,并且该至少DELTA未满足对包围MB的超级块的需求。

b)具有到MB的最小距离;以及

c)具有对包围MB的结构块的最大未满足需求。

此过程任意选择这样的“最佳”中间块中的一个并且在中间块与给定的中间块MB之间的下一最短可用路径上分配DELTA。分配自身是从源中间块与目的地中间块对到列表的映射,其中每个元素表示不同路径,并且包括路径的唯一ID和在该路径上的所分配的量。

(VII)带宽分配:评估可能目的地

在此过程("allocate_bandwidth")中,输入是从中间块到结构块的需求,而输出是与未满足需求相关联的图中的节点之间的分配。此过程轮换遍历可能的目的地结构块。对于每个目的地结构块,该过程保持当前目的地中间块,并且在每次该结构块被考虑用于分配时轮换遍历该目的地结构块中的中间块。此系统还存储“烧毁(burned)目标中间块”。这些是对其过程已经无法找到源的目的地中间块,因此没有理由在将来再次考虑它们。当图中的所有中间块都被“烧毁”时此过程终止。

给定目的地中间块,所述过程以循环方式选择源结构块。之后该过程使用源结构块和目的地中间块作为参数来调用最宽路径带宽分配过程。如果最宽路径带宽分配过程成功进行了DELTA的分配,则分配带宽过程返回至起始,这一次(以循环顺序)考虑不同的目的地中间块。否则,分配带宽过程以循环方式选择不同的源结构块,并且根据该结构块来调用最宽路径带宽分配过程,以此类推,直到最宽路径带宽分配过程成功进行了分配或者分配带宽已经对所有可能的源超级块进行了轮换遍历为止。在后一种情况下,过程“烧毁”了该目的地中间块。

如上文所述,每个“分配”是某些源与目的地中间块之间的路径列表,其中每个路径具有某些所分配的量。分配带宽过程的最后步骤是将这些量标准化,例如使用以下过程将它们转换为相对“权重”。

向所述过程的输入是分配量的列表。每个量对应于在相同源与目的地之间的不同路径。输出是相对权重的列表,每个分配量具有一个。该过程执行以下确定。找到列表中的最大分配量,标记为“最大分配”。对于每个分配量,按照ceil(10*分配/最大分配)的方式计算,(在从1到10的范围内)创建权重。此处,“ceil”意为向上取整,即向上舍入至下一个更大的整数。并且之后使用权重的最大公约数(“GCD”)来将权重标准化。例如,9:6:3变为3:2:1。

(VIII)解除分配过程

根据本公开的一个方面,当物理链路故障时,系统可以解除分配穿越该链路的所有路径。在图中,物理链路是两个中间块之间的边缘的一部分,因此物理链路的故障转换为减少的边缘容量。因此,恰当的量应当被解除分配以满足新的容量。解除分配(“解除分配通过链路的路径”)使用路径的倒排索引来找到可能受影响的路径。

向此过程的输入是两个中间块之间的边缘,及其新容量。如果该新容量足够满足整个链路的当前分配,则该过程完成。否则,该过程计算要解除分配的带宽量。在一种情境下,该过程解除分配了满足新容量的刚好足够的带宽,因此在解除分配之后残余边缘容量为0。替选地,有可能比所需的多解除分配了少许,由此残余容量大于0。这将允许系统在每次不解除分配的情况下容忍一些进一步的故障(初次过度反应但随后节省一些时间)。

可以通过递减分配量进行排序,来考虑穿越受影响的通信链路的所有路径。这样做的原因是解除分配过程应当影响尽可能少的路径。对于每条路径,所分配的量被更新,或者如果路径被完全耗尽则从分配中将该路径完全去除。沿着该路径的残余链路和节点容量被更新,以及更新了该路径上的源与目的地节点之间的未满足需求以及倒排路径索引。当解除分配满足了受影响的通信链路的新容量时,该过程完 成。

(IX)边缘容量更新过程

边缘容量更新过程("容量更新差量")采用(边缘,容量差量)形式的对的列表作为其输入。该过程评估该列表。对于列表中的每条边缘,如果容量减少则该过程调用解除分配(解除分配通过链路的路径)并且之后更新该链路容量。当该列表已经被处理后,系统检查是否还存在未满足需求。如果有,则分配带宽过程被调用以尝试进行增量带宽分配。注意如果链路容量保持不变或增加,则该过程不需要解除分配;然而,如果执行了解除分配,则系统可能能够满足一些先前未满足的需求。

(X)处理节点和链路开启/关闭事件

此处,通过通知来接收的事件列表被视为该过程的输入。输出可以被视为真/假。如果存在分配改变则输入为真,否则为假。此处,假设改变的列表不会再次包含同样的实体(链路/节点)。处理事件的顺序应当无关紧要。系统保持从边缘到该边缘的差量容量的映射。系统还保持链路集合(P),系统为该链路集合(P)接收用于所述链路集合(P)的端点交换机中的一个的“链路开启”事件或节点开启事件。

在“链路关闭”事件的情况下,系统将该链路状态标记为关闭并且记住包含该链路的边缘现在应当具有降低的容量。在这种状况下,在单个链路容量的量中差量为负。

在“节点关闭”(交换机关闭)事件的情况下,对于接触该节点的每个入口链路或出口链路,如果该链路仍然可用,则如上所述作为链路关闭事件来对其进行处理。

在“链路开启”事件的情况下,系统将该链路添加至集合P。

而且在“节点开启”事件的情况下,对于接触该节点的每个入口链路或出口链路,过程将该链路添加至集合P。在所有事件都被处理后,该过程评估集合P。对于P中的每个链路,如果该链路可用,则该过程记住包含该链路的边缘现在应当具有增加的容量,其中在单个链路容量的量中差量为正。

具有集合P的原因为,例如“节点开启”事件不一定必然意为系统能够使用接触此节点的链路,因为该链路或该链路的其他端交换机能够是关闭的。使用上文所述的过程,使链路“可用”的第一事件增加了边缘的容量。给定边缘的列表以及它们的差量容量,系统调用上文所述的边缘容量更新过程(容量更新差量)。如果任何分配已经被改变,则过程输出新的分配映射。

上文所述的过程和操作可以通过诸如图2的设备200的处理设备来实现,该处理设备例如为被配置用于管理网络流控制的交换机或其他计算设备。如以上所讨论的,设备200可以包括一个或多个处理器202和存储指令206和数据208的存储器204。所述存储器能够是能够存储可由(一个或多个)处理器访问的信息的任何类型,诸如硬盘驱动器、缓存器、记忆卡、ROM、RAM、DVD、CD-ROM、可写入且只读存储器。

指令206能够是由处理器直接执行的诸如机器代码的任何指令集,或者间接执行的诸如脚本的任何指令集。在这方面,术语“指令”、“应用”、“步骤”和“程序”能够在本文中互换使用。指令能够以目标代码格式来存储,以便由处理器直接处理,或者以任何其他计算设备语言来存储,该其他计算设备语言包括按需解译或预先编译的脚本或独立源代码模块的集合。

能够依据指令206来通过处理器202检索、存储或修改数据208。例如,尽管本文所述主题不限于任何特定数据结构,但是数据能够被 存储在计算机寄存器中、作为具有许多不同字段和记录的表或者XML文档来存储在关系数据库中。该数据也能够以格式化为任何计算设备可读格式被格式化,所述计算设备可读格式例如但不限于为二进制值、ASCII或Unicode。此外,该数据能够包括足以识别相关信息的任何信息,所述相关信息诸如为数字、描述性文本、专有代码、指针、对存储在诸如在其他网络位置处的其他存储器的数据的引用、或者被函数用来计算相关数据的信息。

一个或多个处理器202能够包括任何常规处理器,诸如通过商业途径可获得的CPU。替选地,处理器能够是专用组件,诸如ASIC或基于其他硬件的处理器。尽管图2将设备200的处理器、存储器、以及其他组件在功能上图示为在同一块内,处理器、计算机、计算设备、或者存储器实际上能够包括可以或不可以存储在相同物理壳体内的多个处理器、计算机、计算设备、或者存储器。例如,存储器能够是位于不同于交换机200的壳体的壳体中的硬驱动器或者其他存储介质。因此,对处理器、计算机、计算设备、或者存储器的引用将被理解为包括对可以或不可以并行操作的处理器、计算机、计算设备、或者存储器的集合的引用。例如,交换机200可以包括作为负载均衡服务器群操作的一个或多个服务器计算设备。此外,尽管本文所述的一些功能可以被指示为发生在具有单个处理器的单个计算设备上,但是所述的本主题的各种功能能够通过多个计算设备来实现,例如,通过有线或无线网络来传达信息。而且尽管可以以一定顺序示出或描述操作或过程,除非本文明确说明,可以以不同的顺序或并行地执行这样的操作或过程。

实施例的上述描述应当被理解为是通过说明方式而非对如权利要求书所限定的本公开的限制的方式来进行的。还将理解,所提供的本公开的示例(以及措词为“诸如”、“例如”、“包括”等的短语)不应当被理解为将公开限制于特定示例;相反,示例旨在仅说明许多可能的实施例中的一些。

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