本发明涉及软件定义网络(sdn)技术领域,特别是一种软件定义网络中多控制器部署问题的改进粒子群算法。
背景技术:
从2016年到2021年,全球的ip网络数据流量将增长近三倍,由思科主导的网络流量预测项目表示,整体互联网的网络流量将从每年1000eb上升至每年2.3zb。
由于预测到未来网络流量大大增加,因此,传统ip网络架构已经不适应未来网络的需求。软件定义网络作为一个新近提出的网络架构,相比于传统网络具备许多优势,更能适应未来网络场景的挑战。
有关sdn发展的研究表明,在大型的广域网中,单个控制器不能满足网络的需求,因此,在2012年,heller等人提出了广域网中的多控制器部署问题。控制器部署问题通常指的是在软件定义网络中,如何确定控制器的数量,分配控制器的位置及控制器和交换机的映射关系,以优化网络性能。考虑到网络的可靠性、网络数据流在网络中的时延、控制器间的通信时延、控制器间的负载均衡性等性能指标,在多控制器环境中,控制器的不同部署位置将影响上述性能指标的表现。选择合适的控制器位置,确定控制器与交换机间合适的映射关系,可以有效提升网络的整体性能,优化用户体验。
多控制器部署问题是一个np-hard问题,对该问题的研究及其求解方案有穷举算法、贪婪算法、聚类算法、整数规划算法等,但是得到的解决方案均不是很理想。
技术实现要素:
为了克服现有技术的不足,本发明提供一种软件定义网络中多控制器部署问题的改进粒子群算法。
本发明解决其技术问题所采用的技术方案是:
一种软件定义网络中多控制器部署问题的改进粒子群算法,包括以下步骤:
步骤s1、获取网络拓扑g,以及其所需控制器的数量k和需要优化的性能指标函数f,随机生成多个粒子p,形成一个粒子群p,其中,每一个粒子p代表多控制器部署问题的一个解决方案(即每一个粒子代表一组控制器的位置);具体地,粒子群p的产生步骤包括:
步骤a1、对网络拓扑g进行整数编号,每一个编号代表一个节点,并计算各个节点之间的最短路径距离,存储到一个距离矩阵d中。
步骤a2、随机选取k个数量的编号,作为一个粒子p,也表示为一组控制器位置,在这些位置上同时部署控制器及交换机。
步骤a3、依据最短路径原则,为网络中的其他交换机分配控制器,确保每个交换机只与离其最近的控制器连接。
步骤a4、根据步骤a3确定的控制器位置、交换机位置及交换机与控制器之间的映射关系,结合距离矩阵d存储的网络中各个节点之间的最短路径距离,计算出控制器与交换机之间的总距离,取其平均值作为网络的平均延迟,作为评估粒子性能的指标。
步骤a5、循环步骤a2-a4,得到多个粒子p,组成粒子群p。
步骤s2、随机设定每一个粒子p的速度矢量,记为v,并将速度矢量v所形成的集合记为v,具体地,速度矢量v为1*k(把k看成一个一维向量)的矢量。
步骤s3、根据粒子p的当前位置及速度矢量,更新每个粒子p的位置,计算公式为:pnew=pold+v;
其中pnew为粒子p更新后的位置。
pold为粒子p当前的位置。
v为粒子p的速度矢量;进一步地,当速度矢量v不为整数时,对速度矢量v进行四舍五入取整处理。
步骤s4、寻找每个粒子p的历史最优值和历史最差值,记为pbest和pworst,同时寻找整个粒子群p中所有粒子p的历史最优值和历史最差值,并记为gbest和gworst。
步骤s5、更新粒子p的速度矢量,更新公式为:
vnew=w*vold
+c1*r1*(pbest-pold)+c2*r2(gbest-pold)
+c3*(1-r1)*(pold-pworst)+c4*(1-r2)*(pold-gworst);
其中,vnew为粒子p更新后的速度矢量。
w为粒子p更新速度矢量时的速度惯性矢量,计算公式为:
w=0.5+(fgbest-fgworst)/fgbest;
其中,fgbest为整个粒子群p中所有粒子p的历史最优值gbest所对应的性能指标函数。
fgworst为整个粒子群p中所有粒子p的历史最差值gworst所对应的性能指标函数。
c1、c2、c3和c4为1。
r1和r2为在区间[0,1]的随机数。
步骤s6、设置算法终止条件,循环迭代步骤s3-s6,并判断是否达到算法终止条件,若是,则终止循环迭代,并输出最后一次循环后的粒子p,即为多控制器部署问题的最优解决方案,若否,则将vnew作为步骤s3中的速度矢量v,继续循环迭代步骤s3-s6;本实施例中,当算法循环迭代次数超过50时,算法终止;或是当步骤s5中求得的gbest和gworst的数值相较于上一次循环迭代的gbest和gworst的数值,增幅均不超过10%时,算法终止。
本发明的有益效果是:本发明的方法具备以下优点:
1、本发明对粒子算法做了改进,可根据种群状态动态改变粒子的演进速度,同时也考虑到了粒子群中的最差值和最优值,将其作为粒子演进速度的参数之一,扩大了搜索空间,有效避免了粒子群算法陷入局部最优解,更有利于找到全局最优解;
2、采用该算法得到的解决方案,接近穷举算法所得到的最优值,能够有效降低网络的延迟;
3、算法运算复杂度低,能够快速得出解决方案,相较于穷举算法,有效降低了求解所需的时间;
4、用控制器的位置表示一个粒子,并依此计算粒子的性能表现,在更换其他性能指标时,如网络的可靠性等,该算法依然有效,适用于多种优化场景。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明的原理框图;
图2是本发明的流程图。
具体实施方式
参照图1、图2,一种软件定义网络中多控制器部署问题的改进粒子群算法,包括以下步骤:
步骤s1、获取网络拓扑g,以及其所需控制器的数量k和需要优化的性能指标函数f(本实施例中,性能指标函数选择为网络的平均时延),随机生成多个粒子p,形成一个粒子群p,其中,每一个粒子p代表多控制器部署问题的一个解决方案(即每一个粒子代表一组控制器的位置);具体地,粒子群p的产生步骤包括:
步骤a1、对网络拓扑g进行整数编号,每一个编号代表一个节点,并计算各个节点之间的最短路径距离,存储到一个距离矩阵d中。
步骤a2、随机选取k个数量的编号,作为一个粒子p,也表示为一组控制器位置,在这些位置上同时部署控制器及交换机。
步骤a3、依据最短路径原则,为网络中的其他交换机分配控制器,确保每个交换机只与离其最近的控制器连接。
步骤a4、根据步骤a3确定的控制器位置、交换机位置及交换机与控制器之间的映射关系,结合距离矩阵d存储的网络中各个节点之间的最短路径距离,计算出控制器与交换机之间的总距离,取其平均值作为网络的平均延迟,作为评估粒子性能的指标(即粒子的适应度)。
步骤a5、循环步骤a2-a4,得到多个粒子p,组成粒子群p。
步骤s2、随机设定每一个粒子p的速度矢量,记为v,并将速度矢量v所形成的集合记为v,具体地,速度矢量v为1*k(把k看成一个一维向量)的矢量。
步骤s3、根据粒子p的当前位置及速度矢量,更新每个粒子p的位置,计算公式为:pnew=pold+v;
其中pnew为粒子p更新后的位置。
pold为粒子p当前的位置。
v为粒子p的速度矢量;进一步地,由于在步骤a1中,以整数作为网络中的节点编号,本实施例中,当速度矢量v不为整数时,对速度矢量v进行四舍五入取整处理,以保证更新后的粒子位置仍然能够映射到对应的网络节点。
步骤s4、寻找每个粒子p的历史最优值和历史最差值,记为pbest和pworst,同时寻找整个粒子群p中所有粒子p的历史最优值和历史最差值,并记为gbest和gworst。
步骤s5、更新粒子p的速度矢量,更新公式为:
vnew=w*vold
+c1*r1*(pbest-pold)+c2*r2(gbest-pold)
+c3*(1-r1)*(pold-pworst)+c4*(1-r2)*(pold-gworst);
其中,vnew为粒子p更新后的速度矢量。
w为粒子p更新速度矢量时的速度惯性矢量,计算公式为:
w=0.5+(fgbest-fgworst)/fgbest;
其中,fgbest为整个粒子群p中所有粒子p的历史最优值gbest所对应的性能指标函数。
fgworst为整个粒子群p中所有粒子p的历史最差值gworst所对应的性能指标函数。
c1、c2、c3和c4为1。
r1和r2为在区间[0,1]的随机数。
同样地,当求得的vnew的值不是整数时,对vnew进行四舍五入取整处理,确保后续更新的粒子位置仍然能够映射到对应的网络节点。
步骤s6、设置算法终止条件,循环迭代步骤s3-s6,并判断是否达到算法终止条件,若是,则终止循环迭代,并输出最后一次循环后的粒子p,即为多控制器部署问题的最优解决方案,若否,则将vnew作为步骤s3中的速度矢量v,继续循环迭代步骤s3-s6;本实施例中,算法终止条件为:当算法循环迭代次数超过50时,算法终止;或是当步骤s5中求得的gbest和gworst的数值相较于上一次循环迭代的gbest和gworst的数值,增幅均不超过10%时,算法终止。
本发明通过生成随机的粒子及速度矢量,以每个粒子表示为多控制器部署问题的一个解决方案;在每一轮的迭代中,根据速度矢量更新粒子的位置,同时根据粒子群的全局最优值及最差值、粒子的历史全局最优值及最差值更新粒子的速度矢量,避免陷入全局最优解,能够有效提高输出结果的可靠性;最后在满足迭代条件后,输出粒子群中的最优粒子,对应的部署方案能有效提高相应的性能表现,有效提升网络的整体性能,优化用户体验。
以上的实施方式不能限定本发明创造的保护范围,专业技术领域的人员在不脱离本发明创造整体构思的情况下,所做的均等修饰与变化,均仍属于本发明创造涵盖的范围之内。