本发明属于计算机应用技术领域,具体涉及一种基于sdn的云平台资源调度与管理系统及其应用方法。
背景技术:
随着互联网和数据中心的发展,实时系统越来越多地应用于各种分布式环境而形成的云计算已越来越受到科学界和商业领域的关注。云计算的主要思想是把互联网上的各种计算资源整合在一起,但是,大规模云计算系统使用的资源具有高度动态性和异构性,资源环境具有的不可靠状态,使得云计算系统出现大规模资源调度失败的可能性大大增加,因此有效管理云平台资源迫在眉睫。
sdn的提出,给了我们解决问题新方法,它将传统网络设备的数据平面和控制平面分离,将控制平面的功能集中放在控制器上实现,通过集中式的控制器,以标准化的接口对各种网络设备进行管理和配置。目前,如floodlight等均提供了用于数据帧转发的模块,采用dijkstra最短路算法。但是此算法容易导致数据流集中到同一条路径进行转发,造成网络拥塞。
技术实现要素:
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于sdn的云平台资源调度与管理系统及其应用方法,在sdn的平台上利用改进的蚁群算法进行路由,为云平台资源调度提供新思路。
技术方案:本发明的一种基于sdn的云平台资源调度与管理系统,包括网络拓扑学习模块、链路状态评估模块和算法路由模块,其中,网络拓扑学习模块学习记录全局的网络拓扑,链路状态评估模块对当前链路状态进行评估得到状态参数,路由模块在资源调度进行路由选择,用户基于sdn网络分别通过这三个模块完成拓扑学习、链路状态评估以及算法路由的选择。
本发明还公开了一种基于sdn的云平台资源调度与管理系统的应用方法,包括以下步骤:
(1)用户首先通过网络拓扑学习模块完成拓扑学习,此过程使用监听机制来实现,当控制器捕获到监听事件发生时,调用与上述时间对应的do()函数进行处理,记录拓扑信息,提供全局网络拓扑;
(2)通过链路状态评估模块对当前链路进行状态评估,了解当前链路的情况,评估参数包括剩余带宽,丢包率和跳数,然后通过查询当前交换机端口参数的方法来获取剩余带宽和丢包率,接着对参数进行处理得到带宽使用量和丢包率,并存储以备使用;
(3)通过路由模块对步骤(2)所得结果相乘得到当前链路的指数,调用路由算法得出到达目标资源的路径,在多条路径的情况下随机选取一条作为合适路径,对该路径上的交换机下发流表。
进一步的,所述步骤(1)的具体过程为:
(1.1)首先设置linkevent(链路事件)、connectionup(连接建立)、connectiondown(连接断开)和hostevent(用户事件)的监听;
(1.2)启动与上述事件对应的discovery、conn和host_tracker模块,其中connectionup与connectiondown均对应conn模块;
(1.3)判断是否触发上述事件,当sdn控制器监听到上述事件发生时,调用与上述时间相应的do()函数进行处理,通过函数处理来记录当前网络拓扑信息。
进一步的,所述步骤(2)的具体过程为:
(2.1)采用查询交换机端口状态的方法获取链路参数,因此设置portstatsreceived事件的监听,并启动相应的conn模块;
(2.2)当有新流到来时,通过调用一定时间间隔(例如1s或者0.5s)的交换机端口查询函数进行端口的状态查询,对所有连接到控制器的交换机的每个端口发送查询请求,得到端口的剩余带宽以及丢包率;
(2.3)利用模块中的处理函数对查询到的状态变量进行处理,记录相应的状态参数,计算该时间间隔内每条链路的带宽使用量及丢包率。
进一步的,所述步骤(3)的具体过程为:
(3.1)根据链路状态评估模块所获取的带宽使用量及丢包率相乘得到的结果评价当前链路状态,得到链路状态指数;
(3.2)路由算法(改进蚁群算法)初始化参数:设置最大循环次数nmax,初始化m只蚂蚁,初始化信息素列表,可选路径列表以及蚂蚁禁忌表;
(3.3)循环次数n=n+1;
(3.4)蚂蚁数目k=n+1;
(3.5)在蚁群算法的基础上对概率公式进行修改,添加一个稳定因子sij,sij=nj/(nj+1),其中nj表示第j个节点的访问次数。开始的稳定因子为1,一但某节点被访问过,稳定因子的值为当前的计算公式sij=nj/(nj+1)的结果,即概率公式修改如下:
然后根据概率公式选择下一跳路径;
公式中:t为路由时间;
(3.6)更新蚂蚁轨迹及禁忌表:每选择一条链路将该链路加入到蚂蚁轨迹中,将蚂蚁移动到下一节点,并将该节点加入禁忌表,若该节点不是目的节点且有下一跳可用链路,跳转到(3.5)步继续计算下一跳可用链路列表,若该节点是目的节点,则不再计算下一跳可用链路列表,当此蚂蚁轨迹不在路径列表中时将蚂蚁轨迹加入链路列表;
(3.7)当k≠m时,跳转到(3.4)步;
(3.8)当循环次数n=nmax时循环结束,清空禁忌表,跳转到(3.3)步,并更新每条链路上的信息素。对合法路径上的信息素浓度更新公式也进行修改,为达到一定的负载均衡,对于访问次数过多的节点降低其被选中的概率,即当某节点访问次数达到一定值,路径(i->j)可能不再被选择,从一定程度减少了某条路径的压力,故在更新信息素浓度时添加一个均衡因子bij来控制其信息素的增加过程,
τij(t+1)=(1-p)·τij(t)+△τij(t)·bij
公式中:p代表信息素的挥发系数;
通过对节点的访问次数nj记录可以体现出路径的动态变化过程,一旦某节点从网络中断开,此时的nj变为0,当然其选择概率就变为0,而且一旦nj达到控制值qj后可能会继续增加,但由于信息素τij(t)在一直减小,故增加到一定值后节点不再被访问;此时未被选中的节点的访问次数值重新赋值为0,同时sij设为初始值1,τij恢复为初始值,一直循环;
根据改进蚁群算法得出到达目标资源的路径,在有多条路径的情况下随机选取一条合适的,并对该路径上的交换机下发流表。
有益效果:与现有技术相比,本发明具有以下优点:
(1)本发明引入sdn技术,与传统技术相比,sdn控制平面与数据平面分离开来,使操作变得更加灵活方便,更利于全局网络拓扑的学习,尤其是在云平台资源巨大的情况下,为了解云中虚拟机资源的情况提供了很好的方法。
(2)本发明考虑面向sdn的改进蚁群算法路由,能够动态调整路由计算参数,有效解决链路拥塞问题,提高链路利用率,其中对蚁群算法中概率公式的改进,添加了一个稳定因子,使得在进行路径选择时避免一些不正确情况的发生。
(3)本发明考虑蚁群算法中信息素更新公式的改进,添加一个均衡因子,一定程度上解决了负载均衡问题,不会产生某些节点不被访问,而某些节点一直被访问的情况,从而使网络达到相对平衡的状态。
附图说明
图1为本发明的整体结构示意图;
图2为本发明中拓扑学习的流程示意图;
图3为本发明中状态评估的流程示意图;
图4为本发明中路由算法的流程示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图1所示,本发明是一种基于sdn的云平台资源调度与管理系统,包括网络拓扑学习模块、链路状态评估模块和算法路由模块。其中,网络拓扑学习模块学习记录全局的网络拓扑,链路状态评估模块对当前链路状态进行评估得到状态参数,路由模块在资源调度进行路由选择,用户基于sdn网络分别通过这三个模块完成拓扑学习、链路状态评估以及算法路由的选择。
上述系统中使用sdn网络架构,在sdn环境下实现云平台资源的调度。其中sdn将网络的控制平面与数据平面分离开来,使得sdn控制器在控制平面可为网络提供全局拓扑视图;利用sdn控制器,通过网络拓扑学习模块可以完成拓扑学习,获得云平台的网络拓扑,链路评估模块根据剩余带宽和丢包率评估链路状态,路由模块通过改进的蚁群算法查找目标资源,查找过程中若得到多条路径,则随机选择一条合适的路径进行资源的分配,然后对所选取的路径上的交换机下发流表完成资源调度,从而实现基于sdn的云平台资源的调度与管理。
本发明还公开了一种基于sdn的云平台资源调度与管理系统的应用方法,包括以下步骤:
(1)如图2所示,用户首先通过网络拓扑学习模块完成拓扑学习,此过程中使用监听机制来实现,当控制器捕获到监听事件发生时,调用相应函数进行处理,记录拓扑信息,提供全局网络拓扑。
首先设置linkevent(链路事件)、connectionup(连接建立)、connectiondown(连接断开)和hostevent(用户事件)的监听;启动与上述事件对应的discovery、conn和host_tracker模块;判断是否触发上述事件,当控制器监听到上述事件发生时,调用相应的函数进行处理,通过函数处理来记录当前网络拓扑信息(例如各个路由器的下一跳以及相邻路由器是哪些)。
(2)如图3所示,对每一个交换机的端口进行状态查询,调用查询函数,端口查询函数经过一定时间间隔(本系统设置为1s,可以根据要求进行一定调整)对交换机每一个端口发送一个查询请求,要求返回端口的状态变量。经过自定义的状态处理函数对得到的端口的状态变量进行处理,计算出这段时间间隔内带宽使用量及丢包率,并存储下来给算法路由模块使用;
(3)通过路由模块将带宽使用量及丢包率相乘得到当前链路的指数,调用路由算法得出到达目标资源的路径,在多条路径的情况下随机选取一条作为合适路径,对该路径上的交换机下发流表。
如图4所示,步骤(3)的具体过程为:
(3.1)根据链路状态评估模块所获取的参数相乘得到的结果评价当前链路状态,得到链路状态指数;
(3.2)路由算法(改进蚁群算法)初始化参数:可以设置最大循环次数nmax=50,初始化m=1500只蚂蚁,初始化循环次数及蚂蚁数目为0,初始化信息素列表,可选路径列表以及蚂蚁禁忌表;
(3.3)循环次数n=n+1;
(3.4)蚂蚁数目k=n+1;
(3.5)在蚁群算法的基础上对概率公式进行修改,添加一个稳定因子sij,即sij=nj/(nj+1),其中nj表示第j个节点的访问次数;开始的稳定因子为1,一但某节点被访问过,稳定因子的值为当前的计算公式sij=nj/(nj+1)的结果,即概率公式修改如下:
然后根据概率公式选择下一跳路径;
公式中:t为路由时间;
(3.6)更新蚂蚁轨迹及禁忌表:每选择一条链路将该链路加入到蚂蚁轨迹中,将蚂蚁移动到下一节点,并将该节点加入禁忌表,表示已经走过;若该节点不是目的节点且有下一跳可用链路,跳转到(3.4)步继续计算下一跳可用链路列表,若该节点是目的节点,则不再计算下一跳可用链路列表,当此蚂蚁轨迹不在路径列表中时将蚂蚁轨迹加入链路列表;
(3.7)当k≠m时,跳转到(3.4)步;若当前蚂蚁数量k没有达到初始化的蚂蚁数目m,可继续循环上述步骤,保证链路较高的利用率;
(3.8)当循环次数n=nmax时,循环结束,清空禁忌表,跳转到(3.3)步,并更新每条链路上的信息素,对合法路径上的信息素浓度更新公式也进行修改,保证了链路动态的更新;为达到一定的负载均衡,对于访问次数过多的节点降低其被选中的概率,即当某节点访问次数达到一定值,路径(i->j)可能不再被选择,从一定程度减少了某条路径的压力,故在更新信息素浓度时添加一个均衡因子bij来控制其信息素的增加过程,
τij(t+1)=(1-p)·τij(t)+△τij(t)·bij
公式中:p代表信息素的挥发系数;
通过对节点的访问次数nj记录可以体现出路径的动态变化过程,一旦某节点从网络中断开,此时的nj变为0,当然其选择概率就变为0,而且一旦nj达到控制值qj后可能会继续增加,但由于信息素τij(t)在一直减小,故增加到一定值后节点不再被访问;此时未被选中的节点的访问次数值重新赋值为0,同时sij设为初始值1,τij恢复为初始值,一直循环;
根据改进蚁群算法得出到达目标资源的路径,在有多条路径的情况下随机选取一条合适的,并对该路径上的交换机下发流表。
本发明中的均衡因子使得链路中不会有某些节点一直不被访问(即存在无用的节点)以及某些节点一直被访问(发生链路拥塞)的情况的发生,起到了一定的负载均衡的作用。
本实施例中,设置链路带宽为2m/s,路由模块令0<t<=100s,α设为1,β设为5,p设为0.5,q设为1,最大循环次数为50,每次循环蚂蚁个体数设为30;这里可以在mininet下建立网络拓扑,采用所述路由算法模拟资源调度进行路由,最终发现其在路由时延和丢包率方面具有很强的优越性。