SDN中的节点退火方法与流程

文档序号:11215649阅读:1312来源:国知局
SDN中的节点退火方法与流程

本发明属于下一代网络控制与管理和软件定义网络领域,是一种新颖的用于对软件定义网络合理分区以及控制器部署算法,涉及到一种在时延最小的情况下对软件定义网络整片网络进行分区,并保证每个控制器负载均衡的控制器部署算法。具体讲,涉及sdn中的节点退火方法。



背景技术:

软件定义网络(software-definednetwork,sdn)是一种新型的网络架构。它的主要思想是数据平面和控制平面的分离,从而支持集中化的网络控制。在这种结构下,交换机只负责数据转发,控制逻辑由控制器给出。

在广泛使用的sdn方案openflow中,数据转发以流为单位,一个流根据网络地址网络端口和协议类型等信息来进行定义。openflow交换机中存储着多个流表来指导流的转发。当数据流进入openflow交换机时,交换机会按照与该流匹配的流表项来转发数据。如果交换机的流表中没有与之匹配的转发项,则会向控制器发出查询。控制器做出决策之后,再将新的流表项下发到交换机。这套机制使得管理者可以更方便地管理整个网络。

与此同时,由于控制器负担着整个网络的工作,控制器的处理能力以及控制器与交换机之间通信的时延对整个网络的性能有着重要的影响。然而,控制器的容量也是有限的,随着sdn网络的快速发展,一个控制器已经负担不了一个巨大的sdn网络的业务。这就要求sdn网络有分布式的多个控制器来分担整个网络的压力。

因此,为了使sdn网络能够正常工作而且效率更高,要在保证负载均衡的情况下,对整个sdn网络进行合理的控制器部署。

文献[1]最早提出了控制器的部署问题,使用平均时延和最大时延作为衡量指标来分析控制器的部署问题,并使用贪心算法对其求解。文献[2]提出了k-critical算法,根据最大允许时延来计算所需控制器数量以及部署位置,但该文献同样没有考虑控制器的负载均衡问题。文献[3]在使用谱聚类算法来解决这个wan中的控制器部署问题,其算法有一定的负载均衡效果。文献[4]使用了粒子群算法来求解sdn的控制器部署问题,同时考虑了时延和负载均衡。

模拟退火算法[5]是用来求解最优化问题的算法。它模拟了热力学系统中的退火过程。它以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。受到该算法的启发,本发明提出了一种用于解决sdn控制器负载均衡问题的算法,并将其命名为节点退火算法。

[1]hellerb,sherwoodr,mckeownn.thecontrollerplacementproblem[c]//proceedingsofthefirstworkshoponhottopicsinsoftwaredefinednetworks.acm,2012:7-12

[2]y,c,garciaaj.onthecontrollerplacementfordesigningadistributedsdncontrollayer[c]//networkingconference,2014ifip.ieee,2014:1-9.

[3]xiaop,quw,qih,etal.thesdncontrollerplacementproblemforwan[c]//ieee/cicinternationalconferenceoncommunicationsinchina.ieee,2014:220-224.

[4]gaoc,wangh,zhuf,etal.aparticleswarmoptimizationalgorithmforcontrollerplacementprobleminsoftwaredefinednetwork[c]//internationalconferenceonalgorithmsandarchitecturesforparallelprocessing.springerinternationalpublishing,2015:44-54

[5]bertsimasd,tsitsiklisj.simulatedannealing[j].statisticalscience,1993,8(1):10-15。



技术实现要素:

为克服现有技术的不足,本发明旨在提出一种sdn中的节点退火算法,保证控制器的负载均衡。本发明采用的技术方案是,sdn中的节点退火方法,步骤如下:

步骤1:根据改进的k-medoids算法对网络进行初步的分类,返回分类结果中心点集合p和每个节点的标签集合q;

步骤2:设置迭代次数并且计算整个网络节点数的初始方差;

步骤3:遍历所有的节点,找到所有边界节点;

步骤4:在所有边界节点中,找一个没有操作过的边界节点进行重新分类操作,将其分给与其相邻节点的类;

步骤5:计算此时的方差,与前一次的方差进行比较:

若此时方差小于前一次的方差,则接受步骤4中的重新分类;

否则,不接受重新分类,重复步骤4;

步骤6:判断此时迭代次数是否达到:

若未达到迭代次数,返回步骤4;

否则,返回此时的分类结果,结束。

改进的k-medoids算法,步骤如下:

步骤1:从n个节点中任意选出一个节点作为初始中心点;

步骤2:根据k-medoids算法更新中心点;

步骤3:找到每个类中距离中心点最远的节点,将其存在一个集合中,选择该集合中到所有中心点距离之和最大的点作为一个新的中心点;

步骤4:重复步骤2,判断整个网络有没有被分成k个类:

如果没有分成k个类,重复步骤3并继续;

如果分成k个类,就返回分类结果,结束算法。

在一个实例中,具体步骤如下:

步骤1:根据改进的k-medoids算法对网络进行初始分类,分类结果分别为中心点的集合p和每个点标签的集合q;

步骤2:设置迭代次数为d,计算此时整个网络交换机节点数的初始方差t0;

步骤3:遍历q中所有点,找到所有的边界节点,将其存储在集合b中t1;

步骤4:计算此时方差t1,随机取一个集合b里面的边界节点bi,i=0,1,…,n-1,将bi的标签改变为相邻不同类节点的标签,即分到相邻不同类节点的类中,计算此时方差t2;

步骤5:计算δt=t2-t1。若δt<0,则接受bi的标签改变,更新q;否则,则不接受bi标签的改变,返回步骤4;

步骤6:判断是否达到迭代次数d:

若未达到迭代次数d,返回步骤4;

若已达到迭代次数d,返回此时的p和q,结束。

本发明的特点及有益效果是:

本发明优点主要是考虑的控制器的负载均衡问题,可以给出合理的控制器部署结果。

在对sdn控制器部署的研究中,大部分都是以交换机到控制器的时延作为部署目标。这种方法在控制器容量很大的情况下,是没有问题的。但是一旦网络变得大型,控制器容量是不可避免的问题。本算法使用节点退火算法对sdn控制器部署问题进行求解,保证sdn各子网控制器控制的交换机数保持平衡。求解过程复杂度较低,运行时间极其短。

在求解结果性能估计方面,本算法用节点数方差作为两个性能的衡量指标。结果如下图3所示,以美国internet2advancedlayer2services拓扑为例,假设k=3,其中节点7,16,30分别为中心节点,每个类的节点数分别为13,13,13,方差为0。

附图说明:

图1边界节点(1,5,6,7,8,9)。

图2算法流程图。

图3部署3个控制器时分类结果(中心点为7,16,30,方差为0)。

具体实施方式

目前虽然已有学者开始研究控制器部署问题,但是有效方案却还是很少。尤其是在控制器的负载均衡方面,极少有文献能够给出合理的解决方案。sdn中每个控制器的容量是有限的,一旦控制器的负荷超过了其容量,整个网络必然无法正常工作。本发明的目的在于提出一种保证负载均衡的sdn控制器部署算法,保证控制器部署在合理的位置。

本算法的主要过程是,首先对根据时延对整个网络进行初步的分类。再计算整个网络每个类的节点数方差。然后遍历所有节点,找到所有的边界节点(即在它自己类的边界而且与其他类直接相连的节点,见图1所示),存在一个集合中。对该集合中的某些节点进行重新分类。若重新分类后的方差小于原来的方差,则接受这种分类;否则不接受。一直重复上述过程直到达到迭代次数。

具体方案如下:

一种sdn中的节点退火算法:

首先基于时延最小对整个网络进行初始的分类。采用的是改进的k-medoids算法,步骤如下:

步骤1:从n个节点中任意选出一个节点作为初始中心点。

步骤2:根据k-medoids算法更新中心点。

步骤3:找到每个类中距离中心点最远的节点,将其存在一个集合中。选择该集合中到所有中心点距离之和最大的点作为一个新的中心点。

步骤4:重复步骤2。判断整个网络有没有被分成k个类:

如果没有分成k个类,重复步骤3并继续;

如果分成k个类,就返回分类结果,结束算法。

sdn中的节点退火算法:

步骤1:根据改进的k-medoids算法对网络进行初始分类,分类结果分别为p(中心点的集合)和q(每个点标签的集合)。

步骤2:设置迭代次数为d,计算此时整个网络交换机节点数的初始方差t0。

步骤3:遍历q中所有点,找到所有的边界节点,将其存储在集合b中t1。

步骤4:计算此时方差t1。随机取一个集合b里面的边界节点bi,i=0,1,…,n-1,将bi的标签改变为相邻不同类节点的标签,即分到相邻不同类节点的类中。计算此时方差t2。

步骤5:计算δt=t2-t1。若δt<0,则接受bi的标签改变,更新q;否则,则不接受bi标签的改变,返回步骤4。

步骤6:判断是否达到迭代次数d:

若未达到迭代次数d,返回步骤4;

若已达到迭代次数d,返回此时的p(中心点的集合)和q(每个点标签的集合),结束算法。

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