一种基于SDN网络的链路负载均衡多路径计算方法与流程

文档序号:15261960发布日期:2018-08-24 21:53阅读:174来源:国知局

本发明涉及计算机技术领域,尤其涉及一种基于sdn网络的链路负载均衡多路径计算方法。



背景技术:

传统的分布式网络,由于路由的计算分别在不同的路由器或交换机上各自以自己为根节点进行最短路径的计算,很难做到网络多链路的负载均衡,通常都是只做到等价路由(ecmp)的负载分担。而sdn网络的出现,使得控制面和转发面相分离,全网的控制集中在控制器里,在控制器里可以拿到全网的拓扑和链路信息,能够轻易的计算出多条路由的链路路径,并以此进行负载均衡。

但是,现有基于sdn网络的链路负载均衡多路径计算都是只适用于特定的网络拓扑结构,譬如数据中心的leaf-spine/fattree拓扑结构,缺乏通用性和适应性。而针对其他的网络拓扑,多路径计算可以得出前k条到达目的节点的最短路径,这些路径有可能会出现重叠或有环路径,如果将该路径用作负载均衡的链路,重叠链路的存在会导致链路的拥塞,效果适得其反。



技术实现要素:

本发明实施例提出一种基于sdn网络的链路负载均衡多路径计算方法,实现任意拓扑网络的多条非重叠无环最短路径的计算,提高链路负载均衡的通用性和适用性。

本发明实施例提供一种基于sdn网络的链路负载均衡多路径计算方法,包括:

一种基于sdn网络的链路负载均衡多路径计算方法,其特征在于,包括:

步骤1:获取网络拓扑结构,并根据所述网络拓扑结构,计算目的节点到各节点的最短路径以及所述最短路径的权值;其中,所述网络拓扑结构包含各节点之间的连接路径以及各所述连接路径的权值;

步骤2:将所述目的节点到源节点的最短路径添加到第一记录表中;

步骤3:将所述源节点添加到队列中,并计算所述源节点的综合移动代价;其中,所述队列用于记录若干个节点和所述若干个节点所对应的移动路径;第i个节点的综合移动代价由所述源节点根据第i个节点对应的移动路径移动到所述第i个节点的权值和,加上所述目的节点到所述第i个节点的最短路径的权值而得出;所述队列中的各节点按照所述综合移动代价从小到大排序;i为整数;

步骤4:从所述队列中取出并删除排序最前的节点作为第一节点,并判断所述第一节点是否为目的节点,如果是,则执行步骤5;如果不是,则计算与所述第一节点直接相连的各第二节点的综合移动代价和相应的第二移动路径,再执行步骤6;其中,所述第二移动路径由所述第一节点的第一移动路径添加所述第二节点而获得;

步骤5:判断所述第一移动路径与所述第一记录表中的路径是否存在边重叠以及判断所述第一移动路径存在环路,如果均不是,则将所述第一移动路径添加到所述第一记录表中,返回步骤4直到所述第一记录表中记录的路径数量达到k;否则,返回步骤4;所述k的值由用户预先设置;

步骤6:分别判断各第二节点的第二移动路径与所述第一记录表中的路径是否存在边重叠以及判断所述第二移动路径存在环路,如果均不是,则将所述第二节点和所述第二移动路径添加到所述队列中,再返回步骤4,否则,不将所述第二节点添加到所述队列中,再返回步骤4。

进一步的,所述根据所述网络拓扑结构,计算目的节点到各节点的最短路径以及所述最短路径的权值,具体为:

根据所述网络拓扑结构,采用迪杰斯特拉算法,计算目的节点到各节点的最短路径以及所述最短路径的权值。

实施本发明实施例,具有如下有益效果:

本发明实施例提供的基于sdn网络的链路负载均衡多路径计算方法,先计算目的节点到各节点的最短路径以及各最短路径的权值,再构建广度优先搜索模型来计算各路径的综合移动代价和最短路径,最后判断得出的最短路径是否存在边重叠和环路,如果是,则返回继续计算,否则,将其添加到第一记录表。第一记录表记录了源节点到目的节点的若干条路径,且各路径间不存在边重叠和环路,适用于任意网络拓扑的链路负载均衡,从而提高链路负载均衡的通用性和适用性。

附图说明

图1是本发明提供的是基于sdn网络的链路负载均衡多路径计算方法的一种实施例的流程示意图;

图2是本发明提供的一种实施例的网络拓扑图;

图3是本发明提供的最短路径及权值的一种实施例的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,是基于sdn网络的链路负载均衡多路径计算方法的一种实施例的流程示意图,该方法包括以下步骤:

步骤1:获取网络拓扑结构,并根据网络拓扑结构,计算目的节点到各节点的最短路径以及最短路径的权值;其中,网络拓扑结构包含各节点之间的连接路径以及各连接路径的权值。

在本实施例中,步骤1具体为:根据网络拓扑结构,采用迪杰斯特拉(dijkstra)算法,计算目的节点到各节点的最短路径以及最短路径的权值。其算法思想为:设g=(v,e)是一个带权无向图,把图中顶点集合v分成两组,第一组为已求出最短路径的顶点集合,用s表示,初始时s中只有一个源点,以后每求得一条最短路径,就将其顶点加入到集合s中,直到全部顶点都加入到s中,算法就结束了;第二组为其余未确定最短路径的顶点集合,用u表示,按最短路径长度的递增次序依次把第二组的顶点加入s中。在加入的过程中,总保持从源点v到s中各顶点的最短路径长度不大于从源点v到u中任何顶点的最短路径长度。此外,每个顶点对应一个距离,s中的顶点的距离就是从v到此顶点的最短路径长度,u中的顶点的距离,是从v到此顶点只包括s中的顶点为中间顶点的当前最短路径长度。

该算法的具体步骤为:

a、初始时,s只包含源点,即s={v},v的距离为0。u包含除v外的其他顶点,即u={其余顶点},若v与u中顶点u有边,则<u,v>正常有权值,若u不是v的出边邻接点,则<u,v>权值为∞。

b、从u中选取一个距离v最小的顶点k,把k,加入s中(该选定的距离就是v到k的最短路径长度)。

c、以k为新考虑的中间点,修改各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。

d、重复步骤b和c直到所有顶点都包含在s中。

步骤2:将目的节点到源节点的最短路径添加到第一记录表中。

在本实施例中,第一记录表记录了源节点到目的节点的若干条路径,而且各路径间没有重叠边和环路,可用于负载均衡。第一记录表记录的路径数量k由用户预先设置,系统或用户可根据实际需要修改k的值,k为整数。本发明将步骤1计算得出的结果直接添加到第一记录表中,能提高运算速度。

步骤3:将源节点添加到队列中,并计算源节点的综合移动代价;其中,队列用于记录若干个节点和若干个节点所对应的移动路径;第i个节点的综合移动代价由源节点根据第i个节点对应的移动路径移动到第i个节点的权值和,加上目的节点到第i个节点的最短路径的权值而得出;队列中的各节点按照综合移动代价从小到大排序;i为整数。

在本实施例中,第i个节点的综合移动代价f=g+h,其中,g表示从源节点根据第i个节点的移动路径移动到第i个节点的移动代价,即源节点移动到第i个节点的权值和。h表示从第i个节移动到目的节点的估算成本,即目的节点到第i个节点的最短路径的权值,也就是步骤1计算的最短路径的权值。

在本实施例中,队列中的各节点按照其综合移动代价从小到大排序,以便于最短路径的提取。

步骤4:从队列中取出并删除排序最前的节点作为第一节点,并判断第一节点是否为目的节点,如果是,则执行步骤5;如果不是,则计算与第一节点直接相连的各第二节点的综合移动代价和相应的第二移动路径,再执行步骤6;其中,第二移动路径由第一节点的第一移动路径添加第二节点而获得。

步骤5:判断第一移动路径与第一记录表中的路径是否存在边重叠以及判断第一移动路径存在环路,如果均不是,则将第一移动路径添加到第一记录表中,返回步骤4直到第一记录表中记录的路径数量达到k;否则,返回步骤4;k的值由用户预先设置。

在本实施例中,在判断边重叠时,采用hash算法来高效率求解边重叠问题。如第一记录表中的路径会记录在hash表中,如果检测到第一移动路径中的边已经在hash表里,则说明存在边重叠。否则,说明不存在边重叠。

在本实施例中,如果第一记录表中的路径数量仍没达到k,且队列中没有节点时,结束计算。

在本实施例中,在判断是否存在环路时,主要判断第一移动路径中是否存在相同的节点,如果有相同的节点,则存在环路,否则没有环路。

步骤6:分别判断各第二节点的第二移动路径与第一记录表中的路径是否存在边重叠以及判断第二移动路径存在环路,如果均不是,则将第二节点和第二移动路径添加到队列中,再返回步骤4,否则,不将第二节点添加到队列中,再返回步骤4。

在本实施例中,在将节点添加到队列前,先进行边重叠与环路的判定,能减少添加到队列的节点数量,提高计算速度。

为了更好地说明本发明技术方案,下面举例说明本发明的技术方案。参见图2,图2是本发明提供的一种实施例的网络拓扑图。如图2所示,v0~v5为各个交换机的标识节点,节点间的连线代表交换机之间的链路,连线边上的数字为链路权值,权值是综合了链路的剩余带宽大小以及剩余带宽占总带宽的比重的数字化表述,权值越小代表链路通信代价越小。本例子需要求图中从交换机v0到v5的前3条最短路径,所谓的最短路径就是指求出的路径权值之和最小。如果使用现有技术来计算,则可以得出最短的3条路径:权值和为70的{v0,v2,v5}、权值和为75的{v0,v2,v4,v5}、权值和为90的{v0,v1,v5},其中权值和为70的最短路径{v0,v2,v5}和权值和为75的次短路径{v0,v2,v4,v5}存在边v0v2重叠,并不适合作为负载均衡链路。

而采用本发明技术方案,先采用迪杰斯特拉(dijkstra)算法,计算目的节点到各节点的最短路径以及最短路径的权值,即v5到各点的最短路径以及最短路径的权值。具体计算过程如下:

初始情况时:s集合只有v5;u集合包含除了v5之外的所有的节点,即{v0,v1,v2,v3,v4}。同时根据u中各节点是否与v5直连求出v5到个节点的最短路径和权值和,即有直连的就把直连边作为v5到直连节点的最短路径,权值和为直连边的权值;对于没有跟v5直连的节点,把v5到这些节点的最短路径设置为无穷大。

第1轮计算:从u中选取一个距离v5最小的节点v4加入到s中,并把v4从u中删除,然后以v4为中间点,修改各个节点到v5的最短距离,如果从v5经过v4再到各个节点的距离比原来的距离(不经过v4)短,则修改此节点到v5的最短路径以及权值和。此次需要修改的是v5到v3的最短路径以及权值和,原来v5到v3是距离无穷大的,现最短路径修改为{v5->v4->v3},权值和为80。

第2轮计算:此时u中只剩下{v0,v1,v2,v3},从u中选取一个距离v5最小的节点v1加入到s中,并把v1从u中删除,然后以v1为中间点,修改各个节点到v5的最短距离,如果从v5经过v1再到各个节点的距离比原来的距离(不经过v1)短,则修改此节点到v5的最短路径以及权值和。此次需要修改的是v5到v0的最短路径以及权值和,原来v5到v0是距离无穷大的,现最短路径修改为{v5->v1->v0},权值和为90。

第3轮计算:此时u中只剩下{v0,v2,v3},从u中选取一个距离v5最小的节点v2加入到s中,并把v2从u中删除,然后以v2为中间点,修改各个节点到v5的最短距离,如果从v5经过v2再到各个节点的距离比原来的距离(不经过v2)短,则修改此节点到v5的最短路径以及权值和。此次需要修改的是v5到v0的最短路径以及权值和,原来v5到v0最短路径为{v5->v1->v0},权值和为90,现最短路径修改为{v5->v2->v0},权值和为70;还要修改的是v5到v3的最短路径以及权值和,原来v5到v3最短路径为{v5->v4->v3},权值和为80,现最短路径修改为{v5->v2->v3},权值和为60。

第4轮计算:此时u中只剩下{v0,v3},从u中选取一个距离v5最小的节点v3加入到s中,并把v3从u中删除,然后以v3为中间点,修改各个节点到v5的最短距离,如果从v5经过v3再到各个节点的距离比原来的距离(不经过v3)短,则修改此节点到v5的最短路径以及权值和。此次没有需要修改的。

第5轮计算:此时u中只剩下{v0},从u中选取一个距离v5最小的节点v0加入到s中,并把v0从u中删除,然后以v0为中间点,修改各个节点到v5的最短距离,如果从v5经过v0再到各个节点的距离比原来的距离(不经过v0)短,则修改此节点到v5的最短路径以及权值和。此次没有需要修改的。

至此,u中没有节点了,结束计算。得到v5到各个节点的最短路径,如图3所示。

在计算完成后,由于已获得最短路径{v0,v2,v5},将其添加到第一记录表中,并将源节点v0添加到队列中,计算v0的f值并将其加入到path中。v0的f=70,g=0,h=70,path:{v0}。

由于队列只有v0,则从队列中取出并删除v0,判断其不是目的节点v5,则计算与v0直接相连的v2、v1和v3三个节点的综合移动代价和对应的移动路径,根据结果可以得出将节点v2的移动路径{v0,v2}与第一记录表的路径存在边重叠,则把v2丢弃,将v1和v3添加到队列中。

这时重复上述步骤,将v1从队列中取出并删除,v1不是目的节点v5,则计算与v1直接相连的v5、v3和v0三个节点的综合移动代价和移动路径,按照由小到大排序,根据结果可以得出将节点v0加入到第二路径后得到的{v0,v2,v2}存在环路,则把v0丢弃,将v5和v3添加到队列中。

再重复上述步骤可以得出最短路径{v0,v1,v5},该路径的f值为90。由于本例子的k为3,则继续求得第三条路径{v0,v3,v2,v4,v5},其f值为125。可见,采用本发明技术方案得出的最短路径与现有技术得出的路径并不相同,可适用于任意网络拓扑的负载均衡。

综上所述,本发明实施例提供的基于sdn网络的链路负载均衡多路径计算方法,先计算目的节点到各节点的最短路径以及各最短路径的权值,再构建广度优先搜索模型来计算各路径的综合移动代价和最短路径,最后判断得出的最短路径是否存在边重叠和环路,如果是,则返回继续计算,否则,将其添加到第一记录表。第一记录表记录了源节点到目的节点的若干条路径,且各路径间不存在边重叠和环路,适用于任意网络拓扑的链路负载均衡,从而提高链路负载均衡的通用性和适用性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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