一种通信网络中基于负载平衡的最优路径选择方法

文档序号:7682926阅读:303来源:国知局
专利名称:一种通信网络中基于负载平衡的最优路径选择方法
技术领域
本发明涉及通信领域,特别涉及网络中寻找最优路径的方法。

背景技术
如图1所示的网络拓扑结构,一般来讲,网络中的最优路径选择就是以路径长度或其他路径参数为权而选择的最适合的节点间路由路径。如果是以路径长度为权的话,一般用dijstra(迪杰斯特拉)算法或floyd(弗洛伊德)算法得到的节点之间的最短路径为最优路径。但是传统的单路径算法往往只选择节点之间的最短路径,却没有注意到每个节点(以及链路)上通过负载的平衡性。事实证明,节点间负载的平衡性对网络阻塞率的影响是非常大的。虽然可选择路由算法则给出了若干条待选路由,当有业务发生时随机或通过其他判据选择合适的路由,这种算法带来的最突出的问题就是系统中每个节点配置更加复杂,解决问题的成本大大增加。
传统的最短路径算法有两种 第一种是Floyd算法。设图G=(V,E)的顶点集合V={0,1,…,n-1},图用邻接矩阵M表示。Floyd算法的基本思想是递推地产生一个矩阵序列A0,A1,A2,...,An,其中A0是已知的带权邻接矩阵,Ak(i,j)(0≤i,j<n)表示从顶点i到顶点j的中间顶点序号不大于k的最短路径长度。如果i到j的路径没有中间顶点,则对于0≤k<n,有Ak(i,j)=A0(i,j)=M[i][j]。递推地产生A1,A2,...,An的过程就是允许逐步越来越多的顶点作为路径的中间顶点,直到为全部路径都找到了所有的中间顶点,所有的最短路径也就全部求出。
设第k次递推前已求得Ak-1(i,j)(0≤i,j<n),为求Ak(i,j)需考虑以下两种情况 如果从顶点i到顶点j的最短路径不经过顶点k,则由Ak-1(i,j)的定义知,从i到j的中间顶点序号不大于k的最短路径长度还是Ak-1(i,j),即Ak(i,j)=Ak-1(i,j)。
如果从顶点i到顶点j的最短路径要经过顶点k,则这样一条路径是由从i到k和由k到j的两条路径所组成。由于Ak-1(i,k)和Ak-1(k,j)分别表示从i到k和由k到j的中间顶点序号不大于k-1的最短路径长度,若Ak-1(i,k)+Ak-1(k,j)<Ak-1(i,j),则Ak-1(i,k)+Ak-1(k,j)必定是从i到j的中间顶点序号不大于k的最短路径的长度,即Ak(i,j)=Ak-1(i,k)+Ak-1(k,j)。
由此得到计算Ak(i,j)的递推公式如下 A0(i,j)=M[i][j] Ak(i,j)=min{Ak-1(i,j),Ak-1(i,k)+Ak-1(k,j),0≤i,j,k<n} 第二种是Dijstra算法 Dijstra算法的基本思想是记指定的某顶点为v,把图中顶点集合V分成两组,以已求出最短路径的顶点集合为第一组,记为S;其余尚未确定最短路径的顶点集合为第二组。按最短路径长度递增次序逐个地把第二组中的顶点移入S中,直到从指定顶点出发可以到达的顶点都在S中。在这个过程中,需始终保持从v到S中各顶点的最短路径长度都不大于从v到第二组的任何顶点的最短路径长度。另外,为了便于程序处理,需为每个顶点保存一个距离。S中的顶点的距离就是从v到此顶点的最短路径长度,第二组中的顶点的距离是从v到此顶点的只包括以S中的顶点为中间顶点的那部分还不完整的最短路径长度。
算法中引进一个顶点集合S和一个数组dist,集合S为已求得的最短路径的终点的集合,其初值为只有一个源点。数组dist记录了从源点到其它每个顶点的最短路径长度,其初值为dist[u]=weight(<v0,w>)(w∈V-S)。
这个方法通常被称为Dijkstra算法,其求最短路径算法描述如下 (1)令S={v0},dist[i]=G
(G为图的邻接矩阵)。
(2)选择顶点u,使得 dist[u]=min{dist[w]|w∈V-S} 将顶点u加入集合S S=S+{u} (3)对每一个w∈V-S,修改从v0到w的最短路径长度 dist[w]=min{dist[w],dist[w]+weight(<u,w>)} (4)重复步骤2和3共n-1次。


发明内容
本发明要解决的问题是提供一种通信网络中基于负载平衡的最优路径选择方法,能够平衡网络间各节点负载,降低网络阻塞率。
本发明基于网络中所有路径间的负载平衡,使用较为简单的启发式判据达到复杂算法才能达到的较为精确的搜索结果。
为了解决上述技术问题,本发明提供了一种通信网络中基于负载平衡的最优路径选择方法,包括 在选择最优路径时,知道整个网络拓扑的顶层网元管理器利用现有的最短路径算法得到若干条短路径,从中选择一条负载小或路径短的路径作为最优路径,或者在利用现有最短路径算法计算确定某条最短路径为最优路径后,根据路径长度或负载因素增加该条被确定为最优的路径的权值,再根据此路径权值计算其他节点间的最短路径,得到的最短路径作为最优路径。
进一步地,所述利用现有的最短路径算法得到若干条短路径,其中所述现有的最短路径算法为floyd算法,根据所述floyd算法确定最短路径的同时保留次短路径信息,比较网络中某对节点之间最短路径上各节点可能承受的负载和与该对节点间次短路径上各节点可能承受的负载和,或者比较网络中某对节点之间最短路径所有中间节点上经过的最短路径长度和与次短路径所有中间节点上经过的最短路径长度和,从中确定一条路径为该对节点间的最优路径。
进一步地,所述方法包括以下步骤 (a)利用floyd算法得到每对节点间的最短路径和次短路径,并把最短路径和次短路径的有关信息记录下来,所述信息包括每条路径经过的具体节点以及路径长度; (b)计算网络中每个节点x作为中间节点时其上经过的最短路径长度之和SX,所述最短路径长度之和SX是指经过节点x的所有最短路径的长度和; (c)对某对节点,计算其最短路径上各中间节点的SX之和S1,以及次短路径上各中间节点的SX之和S2,比较S1和S2,选取其中值较小的路径作为该对节点间的最优路径。
进一步地,在所述步骤(c)中,如果次短路径被选为最优路径,则更新节点间最短路径和次短路径上的相应节点信息。
进一步地,多次执行上述步骤(a)至(c)。
进一步地,所述在利用现有最短路径算法计算确定某条最短路径为最优路径后,根据路径长度或负载因素增加该条被确定为最优的路径的权值,其中所述现有的最短路径算法为Dijkstra算法。
进一步地,所述增加该条被确定为最优的路径的权值是指增大该条路径长度。
本发明所述方法选取单路由算法和可选择路由算法两者之间的折衷方案——既保留了传统静态路由算法的固定性和简易处理性,又考虑了传统静态路由所不常考虑的路径和节点间的负载均衡性,在同等条件下,可以大大降低网络的阻塞率。并能使网络的整体负载达到最大限度的平衡,且不增加系统的复杂性。



图1为网络拓扑实例图; 图2为改进后的floyd算法流程图; 图3为改进后的floyd算法用于本方法的流程图; 图4为改进后的dijistra算法用于本方法的流程图。

具体实施例方式 第一实施例 为了兼顾路径短和负载平衡,在选择最优路径时,知道整个网络拓扑的顶层网元管理器先利用传统的最短路径算法,得到若干条短路径,从中选择一条负载较小的路径作为最优路径。首先,利用现有最短路径算法,以某种网络使用者关心的判据为权值(如路径长度,路径上节点的负载之和等)得到节点间最短路径和次短路径的信息;然后,按某种改进后的启发式算法,用同样特定的判据和方法更新和处理最短路径和次短路径上节点的信息,从中选择一条路径作为新的最短路径。
以floyd算法为例,计算最优路径方法包括以下步骤 步骤101,利用floyd算法得到每对节点间的最短路径和次短路径,并把最短路径和次短路径的有关信息记录下来(从此次); 对floyd算法稍加修改即可计算出节点间的次短路径,修改后的floyd算法如图2所示。图中n为节点总个数,i、j、k均表示节点,a[i][j]表示利用传统floyd算法计算出的节点i与节点j之间的距离,path[i][j]=k表示i、j之间的最短路径所经过的顶点序号不大于k,k初值设置为非序号且不大于所有的序号的任意值。该流程在现有技术的基础上,在更新流程步骤有些许改动,在不断更新a[i][j]获取最短路径的同时,一并保留次短路径信息。
更改信息可以采用以下流程 …… if(HNEW≤HOLD) { path[i][j]=k; Di=Hi; Hi=HNEW; OldRi←NewRi; NewRi←{xj};xj∈NEW and 1≤j≤Hi} …… 其中,HNEW和HOLD表示两次计算得到的路径长度,Hi和Di用于保存比较后的上述路径长度。当判断HNEW小于HOLD时,说明该路径更短,记录k值,并相应修改Hi值和Di值,以及对应的路径集。经过不断循环比较后,可以确定最短路径与次短路径,Hi中的值为最短路径长度,Di中的值为次短路径长度。最短路径集为NewR,其中NewRi表示集合中的第i个路径。次短路径集为OldR,其中OldRi表示集合中的第i个路径。xj表示本路径上的第j个节点。
步骤102,计算网络中每个节点x作为中间节点时其上经过的最短路径长度之和SX; 所述最短路径长度之和SX是指,经过节点x的所有最短路径的长度和。
步骤103,对某对节点(i,j),计算其最短路径上各中间节点的SX之和S1,以及次短路径上各中间节点的SX之和S2,选取S1和S2中较小的那条路径作为节点间的最优路径,如果次短路径被选为最优路径,则更新节点间最短路径和次短路径上的相应节点信息。
SX之和越小,说明经过该节点x的最短路径较少,选择S较小的路径,则该路径上的阻塞率也相对较低。
在其他实施例中,也可以通过比较各节点能承受的负载来确定最优路径,但是任何关于路径的判据都可以转化为路径长度。
图3为选择最优路径时的程序示图,假设N个节点的网络全连通,则共有N(N-1)/2个最短路径;再假设路由Ri(1≤i≤N(N-1)/2)上每两个相邻节点间的链路长度为1,最短路径长度为Hi,次短路径长度为Di。最短路径集为NewR,其中NewRi表示集合中的第i个路径。次短路径集为OldR,其中OldRi表示集合中的第i个路径,OptRi表示第i条路由的最优路径。主要流程如下 第一步,计算每条最短路径上所有中间节点的最短路径长度之和SX,图中x为NewRi集合中第i个路径上的中间节点; 第二步,计算各最短路径上所有中间节点的SX之和Ni,以及各次短路径上所有中间节点的SX之和Oi; 第三步,比较Ni与Oi,若Ni大于Oi,说明该最短路径各节点上通过的路径较多,则将次短路径作为最优路径,并相应修改原最短路径各节点上的SX和次短路径各节点上的SX值,即在先前第一步计算的原最短路径中间节点的SX减值中减去原最短路径长度Hi,在先前第一步计算的原次短路径中间节点的SX值中加上原次短路径长度Di;若Oi小于Ni,则说明最短路径各节点上通过的路径较少,将该最短路径作为最优路径; 理论上用上述方法计算一次后即可找到所有节点对之间的最优路径集。但由于节点在路径上分布的不均匀性,一般重复以上的算法两次,找到的最优路径集会更好。
对于拓扑结构中存在多条长度相等的路径的情况,根据起始计算节点的不同,得到的最短路径结果也可能不同,例如对于图1中节点2到节点5的所有3条路径(2-1-4-5,2-3-6-5和2-8-7-5),有可能的情况是,2-1-4-5是被确定为最短或者2-8-7-5被确定为最短。另外,当两条长度相同的路径进行比较确定最优路径时,根据判据的不同,结果也可能不同,例如,当判据为“不大于”或“必须小于”时,所得到的最优路径结果就不相同。但是上述程序上的变化不会影响本实施例的效果。
下面是采用本方法对图1所示网络拓扑结构进行处理的结果,表1中的路径即为节点间的最优路径。路径前加上!号的表示此实例中选用次短路径作为节点间的最优路径,其余最优路径均为最短路径。
表1floyd算法对NSFNET的改进实例 假设所有的节点对之间负载值是固定的(设相邻节点间路径为1),在未进行负载均衡时,用floyd算法得出的最短路径情况如下 下面最短路径长度的计算中,等式之前的两个数值分别表示以该节点为起点或终点时,以及以该节点为中间节点时的最短路径长度。
节点1所有最短路径长度29+10=39,有4条最短路径通过; 节点2所有最短路径长度29+7=36,有3条最短路径通过; 节点3所有最短路径长度28+13=41,有5条最短路径通过; 节点4所有最短路径长度27+27=54,有10条最短路径通过; 节点5所有最短路径长度27+27=54,有10条最短路径通过; 节点6所有最短路径长度24+42=66,有15条最短路径通过; 节点7所有最短路径长度29+14=43,有5条最短路径通过; 节点8所有最短路径长度27+33=60,有12条最短路径通过; 节点9所有最短路径长度29+21=50,有8条最短路径通过; 节点10所有最短路径长度24+35=59,有14条最短路径通过; 节点11所有最短路径长度29+5=34,有3条最短路径通过; 节点12所有最短路径长度27+15=42,有5条最短路径通过; 节点13所有最短路径长度27+16=43,有6条最短路径通过; 节点14所有最短路径长度28+9=37,有4条最短路径通过。
改进后的floyd算法为链路上负载更平衡做出调整 将5-6-13-12改为5-4-9-12; 将4-5-7-8改为4-1-2-8; 将2-8-7-5改为2-3-6-5; 将3-6-5-7改为3-2-8-7; 将6-5-7-8改为6-3-2-8; 将2-8-10-11改为2-3-6-11。
更改后各节点相应参数 节点1所有最优路径长度29+13=42,有5条最优路径通过; 节点2所有最优路径长度29+14=43,有6条最优路径通过; 节点3所有最优路径长度28+22=50,有8条最优路径通过; 节点4所有最优路径长度27+30=57,有11条最优路径通过; 节点5所有最优路径长度27+18=45,有7条最优路径通过; 节点6所有最优路径长度24+42=66,有15条最优路径通过; 节点7所有最优路径长度29+5=34,有2条最优路径通过; 节点8所有最优路径长度27+30=57,有11条最优路径通过; 节点9所有最优路径长度29+24=53,有9条最优路径通过; 节点10所有最优路径长度24+32=56,有13条最优路径通过; 节点11所有最优路径长度29+5=34,有3条最优路径通过; 节点12所有最优路径长度27+15=42,有5条最优路径通过; 节点13所有最优路径长度27+13=40,有5条最优路径通过; 节点14所有最优路径长度28+9=37,有4条最优路径通过。
通过对比,可以看出,负载均衡选择之后通过各节点的最优路径个数趋于平衡,降低了阻塞的可能性。
第二实施例 以Dijkstra算法为例,本实施例的思路与第一实施例不同,不是选两条路径出来,而是直接在选择最短路径的时候将权值带进去,算出来的最短路径就是最优路径。
用Dijkstra算法计算最短路径,当某个链路(节点)被选作某两节点间的最优路径时,根据路径长度和负载等因素相应加大其权值,这样根据算法结果,该链路(节点)继续被其他路径选为默认路由的可能性会变小。遍历求出网络中所有的最优路径。
在本实施例中,如流程图3所示,当某最短路经被选为最优路径之后,人为将其长度增加(m[u][j]++),这样,下次再选择时,该段路经被选择作为最短路经的几率就会减小。图3中,V表示顶点集合;S表示已求出最短路径的顶点集合;数组dist记录了从源点到其它每个顶点的最短路径长度,如Dist[j]表示原点到顶点j的最短路径;M[u][j]表示u到j的最短路径。
下面是经dijkstra算法改进后的自适应法对NSFNET的处理结果。可以看到,当链路附加权值设置得不大时,两种改进算法的最优路径差别并不大(有差别的用*表示)。当链路附加权比较大的时候,结果可能会出现较大差异,需根据实际情况确定。但是总的来说,采用这两种实施方法都可以降低网络的阻塞率,并能使网络的整体负载达到最大限度的平衡,且不增加系统的复杂性。
表2Dijkstra算法对NSFNET的改进实例 当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种通信网络中基于负载平衡的最优路径选择方法,其特征在于,
在选择最优路径时,知道整个网络拓扑的顶层网元管理器利用现有的最短路径算法得到若干条短路径,从中选择一条负载小或路径短的路径作为最优路径,或者在利用现有最短路径算法计算确定某条最短路径为最优路径后,根据路径长度或负载因素增加该条被确定为最优的路径的权值,再根据此路径权值计算其他节点间的最短路径,得到的最短路径作为最优路径。
2、如权利要求1所述的方法,其特征在于,所述利用现有的最短路径算法得到若干条短路径,其中所述现有的最短路径算法为floyd算法,根据所述floyd算法确定最短路径的同时保留次短路径信息,比较网络中某对节点之间最短路径上各节点可能承受的负载和与该对节点间次短路径上各节点可能承受的负载和,或者比较网络中某对节点之间最短路径所有中间节点上经过的最短路径长度和与次短路径所有中间节点上经过的最短路径长度和,从中确定一条路径为该对节点间的最优路径。
3、如权利要求2所述的方法,其特征在于,所述方法包括以下步骤
(a)利用floyd算法得到每对节点间的最短路径和次短路径,并把最短路径和次短路径的有关信息记录下来,所述信息包括每条路径经过的具体节点以及路径长度;
(b)计算网络中每个节点x作为中间节点时其上经过的最短路径长度之和SX,所述最短路径长度之和SX是指经过节点x的所有最短路径的长度和;
(c)对某对节点,计算其最短路径上各中间节点的SX之和S1,以及次短路径上各中间节点的SX之和S2,比较S1和S2,选取其中值较小的路径作为该对节点间的最优路径。
4、如权利要求3所述的方法,其特征在于,在所述步骤(c)中,
如果次短路径被选为最优路径,则更新节点间最短路径和次短路径上的相应节点信息。
5、如权利要求4所述的方法,其特征在于,多次执行上述步骤(a)至(c)。
6、如权利要求1所述的方法,其特征在于,所述在利用现有最短路径算法计算确定某条最短路径为最优路径后,根据路径长度或负载因素增加该条被确定为最优的路径的权值,其中所述现有的最短路径算法为Dijkstra算法。
7、如权利要求6所述的方法,其特征在于,所述增加该条被确定为最优的路径的权值是指增大该条路径长度。
全文摘要
本发明公开了一种通信网络中基于负载平衡的最优路径选择方法,能够平衡网络间各节点负载,降低网络阻塞率。所述方法包括在选择最优路径时,知道整个网络拓扑的顶层网元管理器利用现有的最短路径算法得到若干条短路径,从中选择一条负载小或路径短的路径作为最优路径,或者在利用现有最短路径算法计算确定某条最短路径为最优路径后,根据路径长度或负载因素增加该条被确定为最优的路径的权值,再根据此路径权值计算其他节点间的最短路径,得到的最短路径作为最优路径。
文档编号H04L12/56GK101494590SQ20081000471
公开日2009年7月29日 申请日期2008年1月23日 优先权日2008年1月23日
发明者昊 徐 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1