SDN网络中使用分布式域控制器实现的动态负载均衡方法与流程

文档序号:14612709发布日期:2018-06-05 21:14阅读:197来源:国知局
SDN网络中使用分布式域控制器实现的动态负载均衡方法与流程

本发明属于无线通讯技术领域,更具体地,涉及一种SDN网络中使用分布式域控制器实现的动态负载均衡方法。



背景技术:

软件定义网络(Software defined network,简称SDN)作为一种新型的网络架构,正日渐成为通信行业关注的焦点。当SDN网络的规模增大时,单个集中式的控制器在短时间内处理大量网络请求时会遇到瓶颈,为了解决该问题,人们开发出分布式的控制器,其使得整个网络被划分成多个不同的域(Domain),这些域中的控制器具有物理上分布、逻辑上集中的特性,从而能够实现更好的可扩展性和可用性。

然而,现有的这种分布式域控制器的架构,由于控制器和交换机之间的连接是静态的,这样会导致分布式域控制器之间负载不均衡的问题,进而影响SDN网络的性能。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种SDN网络中使用分布式域控制器实现的动态负载均衡方法,其目的在于,解决现有SDN网络中由于控制器和交换机之间的连接是静态的而导致的分布式域控制器之间负载不均衡问题。

为实现上述目的,按照本发明的一个方面,提供了一种SDN网络中使用分布式域控制器实现的动态负载均衡方法,是应用在包括根控制器、多个域控制器、以及多个交换机的SDN网络中,所述方法包括步骤:

(1)当前SDN网络中的所有域控制器获取其各自的状态信息、以及其管理的所有交换机的输入负载,根据获取的状态信息和输入负载计算当前综合负载,并将获取的当前综合负载传递到根控制器;

(2)根控制器根据接收到的来自SDN网络中所有域控制器的当前综合负载获取所有域控制器的负载均衡程度;

(3)根控制器根据获取的负载均衡程度判断是否需要执行负载均衡操作,如果是则进入步骤(4),否则表示当前SDN网络中负载均衡,过程结束。

(4)根控制器从来自所有域控制器的当前综合负载中分别选择最大值和最小值对应的域控制器,并将该综合负载最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下。

优选地,域控制器的状态信息包括CPU使用率、带宽使用率、内存使用率、以及磁盘读写速率,所有交换机的输入负载就是对所有交换机中的请求数据包消息到达率进行归一化后的结果。

优选地,步骤(1)中计算当前综合负载具体是采用以下公式:

其中Ci表示第i个域控制器,Lcurrent(Ci)表示第i个域控制器的当前综合负载,Lcpu(Ci)表示第i个域控制器的CPU使用率,Lband(Ci)表示第i个域控制器的带宽使用率,Lmem(Ci)表示第i个域控制器的内存使用率,Ldisk(Ci)表示第i个域控制器的磁盘读写速率,Lswitch(Ci)表示第i个域控制器管理的所有交换机的输入负载,w1、w2、w3、w4和w5表示上述五个指标对应的权值。

优选地,第i个域控制器管理的所有交换机的输入负载等于:

其中Rmsg(Ci)表示第i个域控制器中所有交换机中的请求数据包消息到达率,N表示SDN网络中域控制器的总数。

优选地,域控制器将获取的当前综合负载传递到根控制器这一过程,是在当前综合负载和域控制器上一次传递给根控制器的综合负载之间的差值大于负载阈值的5%到10%时,如果差值小于等于负载阈值的5%到10%,则域控制器不传递其当前综合负载。

优选地,步骤(2)是采用以下公式进行计算:

其中Γ表示负载均衡程度,表示所有域控制器传递给根控制器的当前综合负载的平均值。

优选地,步骤(3)中,当负载均衡程度大于负载均衡程度阈值时,表示需要执行负载均衡操作,否则表示不需要执行负载均衡操作。

优选地,步骤(4)中,将该最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下这一过程具体为:

首先,计算综合负载最大值对应的域控制器管理的各个交换机的负载值:

Lgen=α*Rpacket+β*Tround

其中α和β均为权值系数,其中α>β,且有α+β=1,Rpacket表示交换机请求数据包的消息发送速率,Tround表示交换机与域控制器之间的消息往返时间;

随后,对所有交换机的负载值按照降序排序,从中选择最大负载值所对应的交换机,并判断是否有以下公式成立:

其中Loverloaded表示综合负载最大值对应的域控制器的当前综合负载,Ltarget表示综合负载最小值对应的域控制器的当前综合负载,θ表示综合负载最大值对应的域控制器和综合负载最小值对应的域控制器之间的负载偏差率,如果成立,则将该综合负载最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下,否则过程结束。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明能够通过交换机迁移的方式,动态地将负载从发生过载的域控制器迁移到未发生过载的域控制器上,从而能够实现SDN网络中分布式域控制器之间的负载均衡,从而提高SDN网络的性能,增大SDN网络的吞吐量,降低SDN网络的延时。

(2)本发明通过步骤(1)精确地获取域控制器的当前综合负载,从而能够精确地反映SDN网络的当前负载状态。

(3)本发明通过步骤(1)中对于当前综合负载和域控制器上一次传递给根控制器的综合负载之间差值的判断,进而确定域控制器是否需要传递其当前综合负载。从而能够减轻域控制器与根控制器之间的通讯次数,避免不必要的通讯浪费SDN网络资源。

附图说明

图1是本发明SDN网络中使用分布式域控制器实现的动态负载均衡方法的应用网络环境图;

图2是本发明方法与传统的静态配置方法在平均吞吐量方面的比较曲线图;

图3是本发明采用不同域控制器时的平均请求数据包到达率的比较曲线图;

图4是本发明SDN网络中使用分布式域控制器实现的动态负载均衡方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1和图4所示,本发明SDN网络中使用分布式域控制器实现的动态负载均衡方法,是应用在包括根控制器、多个域控制器、以及多个交换机的SDN网络中,所述方法包括以下步骤:

(1)当前SDN网络中的所有域控制器(Domain controller)获取其各自的状态信息、以及其管理的所有交换机的输入负载,根据获取的状态信息和输入负载计算当前综合负载,并将获取的当前综合负载传递到根控制器(Root controller);

具体而言,域控制器的状态信息包括CPU使用率、带宽使用率、内存使用率、以及磁盘读写速率,所有交换机的输入负载就是对所有交换机中的请求数据包消息到达率(packet-in message arrival rate)进行归一化后的结果。

本步骤中计算当前综合负载具体是采用以下公式:

其中Ci表示第i个域控制器,Lcurrent(Ci)表示第i个域控制器的当前综合负载,Lcpu(Ci)表示第i个域控制器的CPU使用率,Lband(Ci)表示第i个域控制器的带宽使用率,Lmem(Ci)表示第i个域控制器的内存使用率,Ldisk(Ci)表示第i个域控制器的磁盘读写速率,Lswitch(Ci)表示第i个域控制器管理的所有交换机的输入负载,w1、w2、w3、w4和w5表示上述五个指标对应的权值,w1、w2、w3以及w4的取值范围是0到0.2之间,w5的取值范围是0.8到1之间,且有w1+w2+w3+w4+w5=1。

在上式中,

其中Rmsg(Ci)表示第i个域控制器中所有交换机中的请求数据包消息到达率,N表示SDN网络中域控制器的总数。

域控制器将获取的当前综合负载传递到根控制器这一过程,是基于当前综合负载和域控制器上一次传递给根控制器的综合负载之间的差值大于负载阈值(其取值为0.8)的5%到10%这一前提,如果差值小于等于负载阈值的5%到10%,则域控制器不传递其当前综合负载。这样做的优点在于,减轻域控制器与根控制器之间的通讯次数,避免不必要的通讯浪费SDN网络资源。

(2)根控制器根据接收到的来自SDN网络中所有域控制器的当前综合负载获取所有域控制器的负载均衡程度;

具体而言,本步骤是采用以下公式进行计算:

其中Γ表示负载均衡程度,表示所有域控制器传递给根控制器的当前综合负载的平均值。

(3)根控制器根据获取的负载均衡程度判断是否需要执行负载均衡操作,如果是则进入步骤(4),否则表示当前SDN网络中负载均衡,过程结束。

具体而言,当负载均衡程度大于负载均衡程度阈值时,表示需要执行负载均衡操作,否则表示不需要执行负载均衡操作。在本发明中,负载均衡程度阈值取值范围是0.1到0.2之间。

(4)根控制器从来自所有域控制器的当前综合负载中分别选择最大值和最小值对应的域控制器,并将该综合负载最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下。

在本步骤中,将该最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下这一过程具体为:

首先,根据以下公式计算综合负载最大值对应的域控制器管理的各个交换机的负载值:

Lgen=α*Rpacket+β*Tround

其中α和β均为权值系数,其中α>β,且有α+β=1,Rpacket表示交换机请求数据包的消息发送速率(packet-in message transmission rate),Tround表示交换机与域控制器之间的消息往返时间(Round-trip time);

随后,对所有交换机的负载值按照降序排序,从中选择最大负载值所对应的交换机,并判断是否有以下公式成立:

其中Loverloaded表示综合负载最大值对应的域控制器的当前综合负载,Ltarget表示综合负载最小值对应的域控制器的当前综合负载,θ表示综合负载最大值对应的域控制器和综合负载最小值对应的域控制器之间的负载偏差率,其取值范围是0.5到0.7。

如果成立,则将该综合负载最大值对应的域控制器下的一个交换机迁移到该最小值对应的域控制器下,否则过程结束。

实验结果

在实验中,使用基于Floodlight控制器实现了本发明中的分布式域控制器架构,该域控制器是基于Java开发且采用模块化设计,易于拓展。此外,采用Cassandra作为负载均衡层的分布式域控制器,Cassandra是一种NoSQL数据库,它的作用是用来同步主根控制器和从根控制器的数据。与此同时,采用Mininet来对本发明中的网络拓扑结构进行仿真。最后采用Cbench工具来评估一个控制器处理请求数据包的能力,实验设备的参数在下表1中给出。

表1

在这个网络拓扑结构中,采用了两个控制器来实现分布式的控制层面,每个控制器都作为主机(master)角色并连接数量不等的交换机。与此同时,每个控制器还作为从机(slave)角色并连接着其他的交换机设备,这样,在两个控制器之间便能够进行交换机迁移操作。数据平面被划分为两个域且这两个域分别包含4个和3个交换机设备。

A、吞吐量

吞吐量是衡量负载均衡的一个重要指标之一,使用Cbench去衡量一个控制器在基于上述的条件下,在单位时间内能够处理多少数量的请求数据包,结果是15806个请求数据包每秒(pps)。为了比较本发明和静态配置方法两个模型之间的表现,开始时,以6000pps的速率向每个控制器发送请求数据包。在30秒时,增加域控制器A的发送速率至17000pps,而域控制器B的速率保持不变。图2中示出了使用两个域控制器的方法的实验结果。

如图2所示,开始时,在改变发送请求数据包消息的发送速率之前,两个模型的总平均吞吐量都保持在同一水平,这是因为这两个控制器都没有发生过载,且保持正常工作状态。在30秒增加了域控制器A的发送速率之后,两者的平均吞吐量在短时间内都增加了,但是本发明的平均吞吐量要高于静态配置方法,产生这一结果的原因是,增加了域控制器A的消息发送速率后,域控制器A发生了过载现象,这就造成了丢包现象的发生,也就造成了吞吐量的下降,然后,在本发明中,负载会动态的从过载的域控制器A转移到没有过载的域控制器B上,经过负载均衡操作后,两个控制器都没有发生过载,所以相比于静态配置方法,平均吞吐量得到了增加。

B、负载均衡性能

为了评价本发明的表现,以不同的请求数据包消息发送速率向两个控制器发送请求数据包并得出算法的执行时间。在开始的60秒,以8000pps的速率向两个控制器发送请求数据包,这一速率不会触发负载均衡操作。60秒后,增加域控制器A的消息发送速率至16000pps时的域控制器A发生了过载并触发了负载均衡操作,实验结果如图3所示。

如图3所示,在0到60秒期间,两个控制器的请求数据包消息到达率几乎保持一致,60秒时,域控制器A的请求数据包消息到达率剧烈的增加,然而,两个控制器的消息到达率在短时间内趋向于平衡,这是因为,域控制器A发生了过载并触发了负载均衡操作,因此可以看到,在5秒时间内负载从域控制器A转移到了域控制器B上,这极大的提升了SDN网络的性能。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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