一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于SDN的数据中心网络流量调度方法

2022-05-08 06:44:32 来源:中国专利 TAG:

一种基于sdn的数据中心网络流量调度方法
技术领域
1.本发明涉及网络技术领域,具体而言涉及一种基于sdn的数据中心网络流量调度方法。


背景技术:

2.近几年来,随着大数据、云计算、虚拟化等技术的快速发展,越来越多的数据及相关应用被汇合到数据中心进行处理,数据中心网络中的流量呈现出迅速增长的趋势,并且也表现出一些新的流量特征,主要体现在数据中心网络的“东西向”流量增多,而“南北向”流量减少,并且同时存在着大象流和老鼠流两种不同类型的流量。其中,大象流一般是由带宽敏感型应用所产生的流量,数量占比较小,但是却承载着网络中绝大部分的数据量,对网络吞吐量和带宽有较高要求;而老鼠流一般是由时延敏感型应用所产生的流量,数量占比较大,但是通常只携带少量的数据,对传输时延和丢包率有较高要求。两种不同类型的流量混合传输在数据中心网络中,如何根据现有数据中心网络的流量特征设计合理的流量调度策略,对保障数据流的服务质量,提高数据中心网络的性能都具有重要的意义。


技术实现要素:

3.本发明的目的在于提供一种基于sdn的数据中心网络流量调度方法,以解决现有技术中的针对数据中心中不同类型的流量分别进行有效控制,提高网络利用率,保证低时延和避免网络拥塞问题。
4.为实现上述目的,本发明提供如下技术方案:一种基于sdn的数据中心网络流量调度方法,网络中sdn控制器周期性向各个交换机发送的包含lldp帧的packet out消息,各个交换机接收所述packet out消息,并根据packet out消息收集其所在网络的拓扑信息,并将拓扑信息反馈至sdn控制器;sdn控制器周期性分析接收到的拓扑信息,并更新packet out消息,同时更新其所在网络的拓扑信息,进一步获得网络拓扑和链路状态信息;基于获得的网络拓扑和各个链路状态信息,由sdn控制器分别针对各个链路上的待分配数据流,通过执行以下步骤a至步骤f,完成待分配数据流的流量调度;步骤a:sdn控制器计算当前网络拓扑中存在待分配数据流的各个链路的链路带宽bf,并进一步计算当前网络拓扑该各个链路各自的链路带宽利用率c,并分别针对该各个链路,判断链路带宽利用率c是否大于预设网络拥塞阈值,是则判定该当前网络拓扑中该链路为拥塞状态,并针对该拥塞状态链路,进入步骤b,否则进入步骤c;步骤b:获得该条拥塞状态链路的待分配数据流类型,如果该待分配数据流类型为短流,则进入步骤d;如果该待分配数据流类型为长流,则进入步骤e;步骤c:选用ecmp路由算法进行路由,使用当前待分配数据流的第一个分组的五元组进行散列计算,获得运算结果,并将运算结果对一常数取余数,以该余数作为待分配数据流的传输路径,实现为待分配数据流分配传输路径,随后进入步骤f; 步骤d:选用ksp路由算法进行路由,并获得待分配数据流在所在链路上传输的k条路径,实现对待分配数据流分配传输路径,随后进入步骤f;步骤e:选用acits路由算法进行路由,并获得待分配数据流的传输路
径,实现对待分配数据流分配传输路径,随后进入步骤f;步骤f:sdn控制器基于当前网络拓扑,针对待分配数据流的传输路径,在其沿途路径中对各个交换机安装对应的流表项,完成待分配数据流的流量调度。
5.进一步地,前述步骤a中,按如下公式计算当前各个链路带宽: ;其中,为当前轮询的时间间隔,其中和分别是数据流流表项在t时刻和匹配字节数;按如下公式计算当前各个链路带宽利用率:,其中表示链路的总容量。
6.进一步地,前述步骤b中,按以下步骤b1至步骤b3,获得当前待分配数据流类型;步骤b1:计算当前网络拓扑所有可用链路的平均剩余带宽:,其中,表示网络中所有链路总数,表示所有可用链路集合,表示链路的总容量,表示链路上占用的链路带宽,随后进入步骤b2;步骤b2:计算数据流分类阈值:, ,其中,为流分类阈值系数,随后进入步骤b3;步骤b3:比较链路带宽的值与数据流分类阈值的值的大小,如果链路带宽的值大于数据流分类阈值的值,则当前数据流类型为长流,否则当前数据流类型为短流。
7.进一步地,前述步骤d中,选用ksp路由算法进行路由,通过步骤d1至步骤d2获得短流的传输路径,其中所述短流的传输路径为k条;步骤d1:通过dijkstra算法计算出源节点到目的节点的一条最短路径p(1),随后进入步骤d2:步骤d2:采用递推法求出其他的k-1条路径;其中,通过dijkstra算法求路径p (i 1)时,将路径p(i)经过的除目的节点外的其他节点作为偏离点,分别计算偏离点到目的节点的最短路径,并将其与源节点到偏离节点的路径进行拼接,构成偏离路径集合,从中选出最短偏离路径。
8.进一步地,前述步骤e中,根据acits路由算法进行路由,并执行步骤e1至步骤e5,获得最优路径,以此最优路径作为长流传输路径,具体包括以下步骤e1至步骤e5;步骤e1:根据链路的负载信息,对全网链路信息素进行差异初始化;随后进入步骤e2;步骤e2:设定蚂蚁数量为x,同时设定该算法最大迭代次数为i_max,以及设定蚂蚁寻找目的节点最多途经跳数n_max;设置每只蚂蚁a_k (k=1,2,

,x)所对应的一个禁忌表,用于避免该只蚂蚁重复访问同一个节点;且将所有蚂蚁放置在源节点,准备进入下一跳交换机节点,随后进入步骤e3;步骤e3:在最多途径跳数n_max内,各个蚂蚁a_k根据转移概率选择其下一跳交换
机节点,并且在转移完成后修改各自对应的禁忌表,以此为一次迭代;完成一次迭代则进入步骤e4,否则进入步骤e2,所述转移概率为:,其中,表示蚂蚁a_k从节点 i 转移到节点 j 的概率;代表信息素的重要程度;代表启发信息的重要程度;表示在t时刻链路的信息素含量;为综合启发函数,表示在t时刻链路上的启发信息;步骤e4:对各个蚂蚁a_k所经过其链路上的信息素按照如下更新规则进行更新,并判断是否达到预设最大迭代次数,达到预设最大迭代次数,则进入步骤e5,否则进入步骤e2;所述更新规则公式为:,其中,表示本轮迭代后链路上的信息素增量,表示本轮迭代链路上的信息素增量;为阶段性信息素挥发系数,具体公式为:其中,代表算法当前迭代次数,代表算法最大迭代次数,代表本轮迭代最优路径,代表至今为止最优路径;步骤e5:输出最大迭代次数时至今为止最优路径,并以所述至今为止最优路径作为长流传输路径。
9.进一步地,前述的步骤b2中,计算数据流分类阈值:,其中流分类阈值系数取5%。
10.进一步地,前述的sdn控制器包括topology核心模块、switches.py模块、dumper.py模块,所述topology核心模块用于获得网络拓扑、所述switches.py用于对交换机的监测,所述dumper.py用于调用switches.py监测结果,并传送检测结果至sdn控制器进行分析。
11.本发明所述一种基于sdn的数据中心网络流量调度方法 ,采用以上技术方案与现有技术相比,具有以下技术效果:(1)与传统流量调度算法相比,本发明结合初始路由及重路由算法,强化流量控制效果,缓解网络拥塞、减少丢包、提高链路利用率。
12.(2)本发明针对长短流采用不同的算法,既满足短流的低时延需求又满足长流的
高吞吐量需求。
13.(3)基于蚁群改进的流量调度算法从信息素初始化以及更新策略入手,重新定义了相关概念和操作,优化了目前已有的基于蚁群算法的流量调度方案存在的容易陷入局部最优且收敛速度慢等问题。
附图说明
14.图1是本发明所述数据中心网络拓扑图;图2是本发明实施的流程图;图3是本发明基于蚁群改进的流量调度算法流程图。
具体实施方式
15.为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
16.在本发明中参照附图来描述本发明的各方面,附图中示出了许多说明性实施例。本发明的实施例不局限于附图所示。应当理解,本发明通过上面介绍的多种构思和实施例,以及下面详细描述的构思和实施方式中的任意一种来实现,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
17.如图2本发明的流程图所示,sdn控制器的拓扑发现功能基于lldp实现,sdn控制器周期性向交换机发送包含lldp帧的packet out消息,交换机收到该数据包后将其收集到的拓扑信息发送给sdn控制器,sdn控制器将分析该信息得到全网拓扑。当网络拓扑发生变化时,将触发sdn控制器中相应的消息事件,并重新获取拓扑信息。进一步获得网络拓扑和链路状态信息;基于获得的网络拓扑和各个链路状态信息,由sdn控制器分别针对各个链路上的待分配数据流,通过执行以下步骤a至步骤f,完成待分配数据流的流量调度;sdn控制器将通过核心模块组件topology完成拓扑发现过程,switches.py用于交换机的监测,dumper.py用于调用switches.py监测结果,并传送至sdn控制器进行分析。链路状态获取功能主要用于动态监控链路情况,获取物理资源信息、流信息,包括接收数据包数量、字节数等端口信息以及流的数目、持续时间等流信息,sdn控制器周期性向交换机请求状态查询请求信息,并监听状态应答信息,通过对链路状态信息的分析与计算可以得知链路剩余带宽等信息。
18.步骤a:sdn控制器计算当前网络拓扑中存在待分配数据流的各个链路的链路带宽bf,并进一步计算当前网络拓扑该各个链路各自的带宽利用率c,并分别针对该各个链路,判断链路的带宽利用率c是否大于预设网络拥塞阈值,是则判定该当前网络拓扑中该链路为拥塞状态,并针对该拥塞状态链路,进入步骤b,否则进入步骤c;计算链路当前传输带宽公式为:,为当前轮询的时间间隔,其中和是数据流流表项在t时刻和匹配字节数,当前链路带宽利用率公式为:,其中表示链路的总容量。
19.步骤b:获得该条拥塞状态链路的待分配数据流类型,如果该待分配数据流类型为短流,则进入步骤d;如果该待分配数据流类型为长流,则进入步骤e;步骤b按以下步骤b1至b3,获得当前待分配数据流类型;步骤b1:计算当前网络拓扑所有可用链路的平均剩余带宽:, 其中,n表示网络中所有链路总数,e表示所有可用链路集合,表示链路的总容量, 表示链路上占用的带宽,随后进入步骤b2;步骤b2:计算流分类阈值:,其中,,随后进入步骤b3;步骤b3:比较的值与的值的大小,如果的值大于的值,则当前数据流类型为长流,否则当前数据流类型为短流。
20.分类阈值设置过高,会将长流错误地判断为短流,极易出现流量冲突,造成链路更严重的拥塞;分类阈值设置过低,会将短流错误判断成长流,增加sdn控制器的处理时间,也造成了链路带宽的浪费。所以,取5%作为本发明的一种优选方案,即设定当前数据流的带宽超过链路平均剩余带宽的5%时,被认定为长流,小于5%则设定为短流。
21.步骤c:选用ecmp路由算法进行路由,使用当前待分配数据流的第一个分组的五元组进行散列计算,获得运算结果,并将运算结果对一常数取余数,以该余数作为待分配数据流的传输路径,实现为待分配数据流分配传输路径,随后进入步骤f。
22.ecmp算法使用流第一个分组的五元组:源ip地址、目的ip地址、源端口号、目的端口号、协议号进行散列运算,并将运算结果对一常数取余,其余数即为所选路径。由于一条数据流的五元组是不变的,所以后续的分组会沿着已选定的路径转发;而不同数据流的五元组一般不同,所以不同数据流一般会选择不同的路径,这样就一定程度上平衡了各条路径的负载。
23.步骤d:选用ksp路由算法进行路由,并获得待分配数据流在所在链路上传输的k条路径,实现对待分配数据流分配传输路径,随后进入步骤f;步骤d中选用ksp路由算法进行路由,通过步骤d1至步骤d2获得短流的传输路径,其中所述短流的传输路径为k条;步骤d1:通过dijkstra算法计算出源节点到目的节点的一条最短路径p(1),随后进入步骤d2:步骤d2:采用递推法求出其他的k-1条路径;其中,通过dijkstra算法求路径p (i 1)时,将路径p(i)经过的除目的节点外的其他节点作为偏离点,分别计算偏离点到目的节点的最短路径,并将其与源节点到偏离节点的路径进行拼接,构成偏离路径集合,从中选出最短偏离路径。
24.ksp算法的基本思想是:首先通过dijkstra算法计算出源节点到目的节点的一条最短路径p(1),随后采用递推法求出其他的k-1条路径。算法在求路径p (i 1)时,将路径p(i)经过的除目的节点外的其他节点作为偏离点,分别计算偏离点到目的节点的最短路径,并将其与源节点到偏离节点的路径进行拼接,构成偏离路径集合,从中选出最短偏离路径。
25.下面将根据胖树拓扑结构举例说明ksp算法求主机h1和h7的k条短路径的过程,链
路代价均为假设值,本网络数据中心网络拓扑图及相关链路代价如图1所示,源主机h1向目的主机h7发送数据包,首先通过dijkstra算法计算得到最短路径p(h1-s7-s5-s1-s9-s12-h7),路径代价为8,记作p(1)。将p(1)作为迭代路径,进行第一次迭代:以偏离节点s7为起点,将s7-s5间的链路代价设置为无穷大,通过dijkstra算法求出此时的最短路径,将偏离节点之前的路径与此路径进行拼接,得到p(h1-s7-s6-s4-s10-s12-h7),路径代价为9,并将路径加入偏离路径集合b;以偏离节点s5为起点,将s5-s1间的链路代价设置为无穷大,求出最短路径并与偏离节点s5之前的路径拼接,得到p(h1-s7-s5-s2-s9-s12-h70),路径代价为19,并将路径加入偏离路径集合b;第一次迭代完成,偏离路径集合b中共有两条路径,选出代价最小的路径p(h1-s7-s6-s4-s10-s12-h7)记为p(2),并将其移出集合b。迭代过程以此类推,直至求出k条路径为止。
26.步骤e:选用蚁群算法acits路由算法进行路由,并获得待分配数据流的传输路径,实现对待分配数据流分配传输路径,随后进入步骤f;acits的核心思想是根据蚁群在觅食过程中释放在路径上的信息素去引导其找到最优路径。这里将蚂蚁经过的路径转化为长流调度的可行解,相应整个蚁群所组成的路径集合即为长流调度的解空间。其中,引导蚂蚁选择路径的启发信息可以抽象为网络状态信息,随着迭代次数的增加,路径越优信息素含量就越高。最终,在正反馈的作用下整个蚁群将收敛到最优路径上,相应此时得到的路径即为长流调度的最优路径。
27.如图3所示,本文设计了一种基于蚁群改进的流量调度算法ant colony improvement traffic scheduling,acits,用于长流的路由,以下为该算法的流程,包括步骤e1至步骤e5;步骤e1:根据链路的负载信息,对全网链路信息素进行差异初始化;随后进入步骤e2;步骤e2:设定蚂蚁数量为x,同时设定该算法最大迭代次数为i_max,以及设定蚂蚁寻找目的节点最多途经跳数为n_max;设置每只蚂蚁a_k (k=1,2,

,x)所对应的一个禁忌表,用于避免该只蚂蚁重复访问同一个节点;且将所有蚂蚁放置在源节点,准备进入下一跳交换机节点,随后进入步骤e3;步骤e3:在最多途经跳数n_max内,各个蚂蚁a_k根据转移概率选择其下一跳交换机节点,并且在转移完成后修改各自对应的禁忌表,以此为一次迭代;完成一次迭代则进入步骤e4,否则进入步骤e2,所述转移概率为:,其中,表示蚂蚁a_k从节点 i 转移到节点 j 的概率;代表信息素的重要程度;代表启发信息的重要程度;表示在t时刻链路的信息素含量;为综合启发函数,表示在t时刻链路上的启发信息;步骤e4:对各个蚂蚁a_k所经过其链路上的信息素按照如下更新规则进行更新,并判断是否达到预设最大迭代次数,达到预设最大迭代次数,则进入步骤e5,否则进入步骤
e2;所述更新规则公式为:,其中,表示本轮迭代后链路上的信息素增量,表示本轮迭代链路上的信息素增量;为阶段性信息素挥发系数,具体公式为:其中,代表算法当前迭代次数,代表算法最大迭代次数,代表本轮迭代最优路径,代表至今为止最优路径;步骤e5:输出最大迭代次数时至今为止最优路径,并以所述至今为止最优路径作为长流传输路径。
28.此外,这里采用对本轮迭代最优和最差的方案进行更新。其中,由于每轮迭代的结果可能不同,这使得更多路径上的信息素将会得到沉积,从而可以有效地防止搜索过早地陷入局部最优。
29.另外,关于信息素挥发系数,初期其值偏高,有利于蚂蚁对路径进行更加全面的搜索。随着迭代次数的增加,其值逐渐均匀地降低,可以让蚂蚁渐进地汇集到最优路径上,从而避免算法过早或过晚的收敛。其中,当本轮迭代最优路径和至今为止迭代最优路径相同时,则说明算法已有收敛趋势。如果该现象发生在算法初期,则说明其过早陷入了局部最优,理应保持其相对较高的挥发值。
30.步骤f:sdn控制器基于当前网络拓扑,针对待分配数据流的传输路径,在其沿途路径中对各个交换机安装对应的流表项,完成待分配数据流的流量调度。
31.本发明与传统流量调度算法相比,结合初始路由及重路由算法,强化流量控制效果,缓解网络拥塞、减少丢包、提高链路利用率。本发明针对长短流采用不同的算法,既满足短流的低时延需求又满足长流的高吞吐量需求。基于蚁群改进的流量调度算法从信息素初始化以及更新策略入手,重新定义了相关概念和操作,优化了目前已有的基于蚁群算法的流量调度方案存在的容易陷入局部最优且收敛速度慢等问题。
32.虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献