基于逐跳计算的分布式负载均衡方法与流程

文档序号:15751741发布日期:2018-10-26 17:53阅读:458来源:国知局
基于逐跳计算的分布式负载均衡方法与流程

本发明属于互联网技术领域,涉及域内负载均衡方案,具体涉及一种基于逐跳计算的分布式负载均衡方法。



背景技术:

随着网络中流量的增加,网络拥塞频繁发生。然而目前互联网部署的域内路由协议采用最短路径转发报文,无法灵活应对网络拥塞问题。因此,因特网服务提供商(internetserviceprovider,isp)通过配置链路权值来优化资源利用,尽量降低由于流量增加而引起的网络拥塞问题。由于该问题的重要性,在过去的几十年里大量的研究者致力于对网络拥塞问题的研究。

业界通常采用优化链路权值(optimizingospfweights,opw)的负载均衡方法来降低网络拥塞,该方法的核心思想为给定一个网络拓扑结构和流量矩阵,通过设置网络中链路的权重来优化流量的分配。该问题可以描述为一个多商品流问题,然后利用领域搜索算法计算近似最优解。但是该方法必须采用集中式节方案,并且算法的代价较大,因此无法直接应用在逐跳方式的链路状态路由协议中。多协议标签协议(multi-protocollabelswitching,mpls)不受最短路径路由协议的约束,可以任意配置路由。研究者利用mpls实现负载均衡的问题归结为线性整数规划模型,然后利用lp计算器求解。但是上述所有的负载均衡算法都需要完整的流量矩阵,并且算法的复杂度高。



技术实现要素:

本发明主为解决现有问题的不足之处而提供一种基于逐跳计算的分布式负载均衡方法。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于逐跳计算的分布式负载均衡方法,包括以下步骤:

创建一个优先级队列q,将网络拓扑节点中的目的地址节点d加入到优先级队列q;

从队列中取出第一个节点,将该节点存储在变量u中,将节点u的访问属性标记为已访问;

查询节点u的邻居节点v的访问属性,如果节点u的所有邻居的访问属性均为已访问,则计算节点u与邻居节点v组成的链路(v,u)的代价w(v,u);

如果节点u到目的地址节点d的最小代价c(u)与链路(v,u)的代价w(v,u)之和小于邻居节点v到目的地址节点d的最小代价c(ν),或者节点u到目的地址节点d的最小代价c(u)与链路(v,u)的代价w(v,u)之和等于邻居节点v到目的地址节点d的最小代价c(ν)之和,且邻居节点v到目的地址节点d的跳数小于节点u到目的地址节点d的跳数加1时,将邻居节点v加入到队列q中。

其中,在将目的地址节点d加入到优先级队列q的步骤之后,包括步骤:

初始化网络拓扑节点的节点参数;其中,节点参数包括三个参数,分别:该节点的父亲节点、该节点到目的地址节点d的代价,该节点到目的地址节点d的跳数。

其中,初始化网络拓扑节点的节点参数的步骤包括:将网络拓扑节点到目的地址节点d的最小代价设置为无穷大,将目的地址节点d到目的地址节点d的最小代价设置为0,将所有节点到目的地址节点d的最小跳数设置为无穷大,将目的地址节点d到目的地址节点d的最小跳数设置为0,将所有节点的访问属性标记为未访问,将所有节点的父亲节点设置为null。

其中,初始化后,目的地址节点表示为d(d,null,0,0)。

其中,计算链路(v,u)的代价w(v,u)方法为:对于目的地址节点d,给该节点设置一个虚拟流量t(d),该流量的大小为与其直接相连的链路的带宽总和的0.2倍,链路(v,u)的虚拟流量可以表示为t(v,u)=0.2*t(d)*(h(u)+1)0.1,其中h(u)表示节点u到d的最小跳数;链路(v,u)的链路利用率表示为μ(v,u)=t(v,u)/c(v,u),其中c(v,u)表示链路(v,u)的带宽;链路(v,u)的代价w(v,u)表示为

区别于现有技术,本发明的基于逐跳计算的分布式负载均衡方法具有如下优点:为所有节点设置虚拟流量,然后根据虚拟流量计算所有链路的代价,最后采用分布式算法计算最优路由;该方法不需要实际流量矩阵,采用分布式计算方法,可在没有流量矩阵的前提下实现分布式载均衡。

附图说明

图1是本发明提供的一种基于逐跳计算的分布式负载均衡方法的流程示意图。

图2是本发明提供的一种基于逐跳计算的分布式负载均衡方法的逻辑示意图。

图3是本发明提供的一种基于逐跳计算的分布式负载均衡方法的具体实施例的网络拓扑结构。

具体实施方式

下面结合具体实施方式对本发明的技术方案作进一步更详细的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

参阅图1,图1是本发明提供的一种基于逐跳计算的分布式负载均衡方法,该方法的步骤包括:

s1:创建一个优先级队列q,将网络拓扑节点中的目的地址节点d加入到优先级队列q。

s2:从队列中取出第一个节点,将该节点存储在变量u中,将节点u的访问属性标记为已访问。

s3:查询节点u的邻居节点v的访问属性,如果节点u的所有邻居的访问属性均为已访问,则计算节点u与邻居节点v组成的链路(v,u)的代价w(v,u)。

s4:如果节点u到目的地址节点d的最小代价c(u)与链路(v,u)的代价w(v,u)之和小于邻居节点v到目的地址节点d的最小代价c(ν),或者节点u到目的地址节点d的最小代价c(u)与链路(v,u)的代价w(v,u)之和等于邻居节点v到目的地址节点d的最小代价c(ν)之和,且邻居节点v到目的地址节点d的跳数小于节点u到目的地址节点d的跳数加1时,将邻居节点v加入到队列q中。

优选的,在将目的地址节点d加入到优先级队列q的步骤之后,包括步骤:

初始化网络拓扑节点的节点参数;其中,节点参数包括四个参数,分别:节点本身、该节点的父亲节点、该节点到目的地址节点d的代价,该节点到目的地址节点d的跳数。

优选的,初始化网络拓扑节点的节点参数的步骤包括:将网络拓扑节点到目的地址节点d的最小代价设置为无穷大,将目的地址节点d到目的地址节点d的最小代价设置为0,将所有节点到目的地址节点d的最小跳数设置为无穷大,将目的地址节点d到目的地址节点d的最小跳数设置为0,将所有节点的访问属性标记为未访问,将所有节点的父亲节点设置为null。

优选的,初始化后,目的地址节点表示为d(d,null,0,0)。

优选的,计算链路(v,u)的代价w(v,u)方法为:对于目的地址节点d,给该节点设置一个虚拟流量t(d),该流量的大小为与其直接相连的链路的带宽总和的0.2倍,链路(v,u)的虚拟流量可以表示为t(v,u)=0.2*t(d)*(h(u)+1)0.1,其中h(u)表示节点u到d的最小跳数;链路(v,u)的链路利用率表示为μ(v,u)=t(v,u)/c(v,u),其中c(v,u)表示链路(v,u)的带宽;链路(v,u)的代价w(v,u)表示为

由于互联网中的域内路由协议一般采用分布式方法,因此本文研究如何采用分布式方法进行负载均衡,降低网络拥塞。因为本发明利用的是分布式解决方法,所以下面仅仅讨论计算节点为c,目的节点为d的计算过程。本发明需要维护一个优先级队列q。示例的,以下结合附图对本发明作进一步地详细说明。下面详细说明本实施例的各个步骤,因为该实施例的过程比较多,下面列出计算节点为2,目的节点为5的计算过程。其网络拓扑结构如图3所示。

步骤1:初始化节点参数,将所有节点(除去5)到5的最小代价设置为无穷大,将5到5的最小代价设置为0,将所有节点(除去5)到5的最小跳数设置为无穷大,将5到5的最小跳数设置为0,将所有节点的访问属性标记为未访问,创建一个优先级队列q,将5加入到优先级队列q;其中,5是目的地址节点;

步骤2:判断队列q是否为空,此时队列不为空,则执行步骤3;

步骤3:从队列中取出第一个元素5,此时u=5;

步骤4:判断u的数值是否为0,因为该值不为0,所以执行步骤5;

步骤5:将节点5到5的最小代价设置为0,将节点5到5的最小跳数设置为0,将节点5的访问属性标记为已访问;

步骤6:访问节点5的邻居节点1;

步骤7:因为节点1的访问标记属性为未访问,所以执行步骤8;

步骤8:对于目的地址5,给该节点设置一个虚拟流量t(5),该流量的大小为与其直接相连的链路的带宽总和的0.2倍,即t(5)=(9920000+2480000+9920000)*0.2=2480000,则链路(1,5)的虚拟流量可以表示为t(1,5)=0.2*t(5)*(h(5)+1)0.1=4464000,链路(1,5)的链路利用率可以表示为μ(1,5)=t(1,5)/c(1,5)=4464000/2480000=1.8,则w(1,5)=5000;

步骤6:访问节点5的邻居节点2;

步骤7:因为节点2的访问标记属性为未访问,所以执行步骤8;

步骤8:则链路(2,5)的虚拟流量可以表示为t(2,5)=0.2*t(d)*(h(d)+1)0.1=4464000,链路(2,5)的链路利用率可以表示为μ(2,5)=t(2,5)/c(2,5)=4464000/9920000=0.45,则w(2,5)=3

步骤9:因为c(5)+w(5,2)=3<c(2),计算tc=3,th←h(u)+1=1,将2加入到队列q中,执行步骤6;

步骤6:访问节点5的邻居节点6;;

步骤7:因为节点6的访问标记属性为未访问,所以执行步骤8;

步骤8:则链路(6,5)的虚拟流量可以表示为t(6,5)=0.2*t(d)*(h(d)+1)0.1=4464000,链路(6,5)的链路利用率可以表示为μ(6,5)=t(6,5)/c(6,5)=4464000/9920000=0.45,则w(6,5)=3;

步骤9:因为c(5)+w(5,6)=3<c(1),计算tc=3,th←h(u)+1=1,将6加入到队列q中,执行步骤6;

步骤6:因为节点5的所有邻居节点的访问属性就为已访问,因此执行步骤2;

步骤2:判断队列q是否为空,此时队列不为空,则执行步骤3;

步骤3:从队列中取出第一个元素2,此时u=2;

步骤4:判断u的数值是否为2,因为该值是2,,返回2到5的最优下一跳,即2的父亲节点5。

区别于现有技术,本发明的基于逐跳计算的分布式负载均衡方法具有如下优点:为所有节点设置虚拟流量,然后根据虚拟流量计算所有链路的代价,最后采用分布式算法计算最优路由;该方法不需要实际流量矩阵,采用分布式计算方法,可在没有流量矩阵的前提下实现分布式载均衡。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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