论文阅读三:基于改进人工蜂群算法的SDN负载均衡策略研究

名词解释:

Artificial Bee Colony Algorithm, ABC:人工蜂群算法

Load balancing algorithm based on improved artificial bee colony algorithm, IALB:基于改进的人工蜂群算法的负载均衡算法

Load balancing algorithm based on flow table resource and controller resource, FCLB:基于流表资源和控制器资源的负载均衡算法

“摘要:由于传统数据中心网络具有可控性差、网络设备封闭等问题,研究者们考虑将SDN技术应用于数据中心网络,因此研究的关键就是如何规避SDN集中的控制方式带来的一些问题并充分发挥SDN在流量调度方面的优势。本文从链路和交换机两个方向切入:

1.针对传统方法调度大象流时会造成数据中心网络不稳定以及链路拥塞等问题提出一种基于改进的人工蜂群算法的负载均衡算法IALB。IALB算法基于人工蜂群算法设计,定义了链路稳定度的概念,基于链路实时剩余带宽、大流数目以及链路稳定度重定义人工蜂群算法的适应度函数gif.latex (39×19),通过对人工蜂群算法的这种改进得到大象流的近似最优调度方案。仿真实验表明,IALB算法在网络吞吐量与链路利用率性能指标上优于ECMP、Hedera和PureSDN算法,在随机模式和交错模式两种流量模式下都有明显的提升。 

2.针对现有算法无法充分地利用SDN网络中的流表资源和控制器资源的问题,提出了一种基于流表资源和控制器资源的负载均衡算法FCLB。FCLB算法使用流表项的无效时间来表示流表资源消耗,使用packet-in消息数量表示控制器资源消耗,并定义了资源偏好因子的概念,基于资源偏好因子 建立了idle_timeout与资源消耗的关系式,算法通过动态设置idle_timeout的值实现流表资源和控制器资源的均衡利用。仿真实验表明,FCLB算法在流表资源利用率和数据流命中率方面都优于原始方案。”

第一章 绪论

1.1 数据中心网络:一方面数据中心网络的流量规模逐年猛增;另一方面数据中心网络中的流量类型也发生了巨大变化,传统数据中心网络内部的服务器之间的通信流量越来越多,导致数据中心的流量类型逐渐由南北向转变为东西向。通过集中采集网络信息、动态调整转发策略等方式实现流量的调度,从而提高网络吞吐量,均衡利用网络资源,尽可能地降低调度成本,提升网络性能。

1.2 基于数据中心的传统网络:传统网络暴露出的三个问题:可控性差、网络设备封闭、拓展性差

1.3 SDN的产生:与传统网络不同的是,SDN控制器记录整个网络的状态信息,基于SDN的网络由控制器负责网络资源的统一分配和调度,而SDN交换机只按照流表中的指令完成对数据流的处理,不再部署路由转发算法 ,从而使数据流的传输效率得到提升。

1.4 基于SDN的数据中心网络:SDN三层网络架构包括对网络可编程的应用层、掌握整个网络状态信息并管理整个网络的控制层、只负责简单的流量转发的基础设施层。

1.5 数据中心网络结构:传统数据中心网络主要采用多根树拓扑结构,有三层交换机相互连接组成,分别为核心层、汇聚层和接入层。

 随着数据中心网络规模的扩张,树形结构需要通过垂直的方式扩大规模,使得网络需要大量高性能的交换机,大大增加了硬件成本;除此之外树形结构冗余度不高,容易导致网络单点失效,网络性能得不到保障。同时,树形结构很难做到流量负载均衡,大量的数据流都需要由核心层交换机转发,顶层网络设备容易成为网络性能的瓶颈。

新型网络拓扑Fat-Tree依旧采用三层架构,即直接与主机相连的接入层、位于最上层的核心层以及介于二者之间的汇聚层。与树形结构不同的是,Fat-Tree结构将汇聚层和接入层的交换机整合并拆分成很多个集群,并且保证一个集群内的交换机实现全连接,但汇聚层和核心层只要满足集群与核心层交换机之间实现全连接即可。

1.6 SDN在数据中心网络的应用:用SDN交换机取代传统数据中心网络中的路由器,并将控制功能转交给SDN控制器,由SDN控制器统一管理网络,实现全局性的网络状态信息采集和各种资源的均衡利用。

1.7 国内外研究现状:目前适用于当前数据中心网络的负载均衡算法大概分成三类,基于交换机的负载均衡策略,基于主机端的负载均衡策略以及基于链路的负载均衡策略。

1.8 论文内容:本文从交换机和链路两个方向切入:在基于链路的层面,提出一种基于改进的人工蜂群算法的负载均衡算法IALB,该算法引入链路稳定度的概念,根据链路上的大流数目、链路实时负载以及链路稳定度重定义适应度函数,在路径长度、链路负载以及链路稳定性的多约束条件下为数据流选择最佳传输路径;在基于交换机的层面,提出了一种基于流表资源和控制器资源的负载均衡算法FCLB,FCLB算法根据数据流特征以及网络带宽、大流数目等信息建立优化模型,求解最优的idle_timeout的值,实时动态地设置idle_timeout的值,从而更好地分配流表资源和控制器资源。

第二章 SDN/OpenFlow网络相关技术背景

第三章 IALB:基于改进的人工蜂群算法的负载均衡算法

人工蜂群算法ABC是一种新型群智能优化算法,它根据蜜蜂采蜜的行为设计,具有参数少、实现简单、寻优能力强的特点。

3.1 人工蜂群算法的生物模型:工蜂采蜜时并不是所有的工蜂全部出动,而是会先派出少部分工蜂去搜索蜜源,它们搜索到花蜜浓度更高的蜜源时,会将相关信息进行记录,包含蜜源的详细位置、形状、颜色、浓度等,随后这些工蜂会返回巢穴,并将记录的蜜源信息用跳舞的形式发送给其他工蜂。留在巢穴的工蜂就能够获取舞蹈所传递的信息,并陆续出动一部分前往相对优质的蜜源。除此之外,当蜜源不足时,蜂群还会派出侦查工蜂去重新寻求更好的蜜源。

3.2.1 人工蜂群算法的基本原理:蜂群中的每个单一个体都在进行局部的寻优,使得整个蜂群能够找到全局最优解,寻找最佳蜜源的过程就是一个反复迭代并找到最优解的过程。

蜜蜂采蜜过程优化问题求解过程
可开采蜜源可行解
蜜源丰富度可行解的适应度值
采蜜速度优化问题的求解速度
最优蜜源丰富度最大适应度值

3.2.2 人工蜂群算法的流程:算法大致分为四个阶段

(1)种群初始化阶段:初始化蜂群总数、迭代次数、蜜源更新限制次数等参数,并在搜索范围内随机生成初始解,gif.latex (153×19)表示生成的蜜源,N 是解的维度。

x_{ij}=x_{min}+\left ( x_{max}-x_{min} \right )\times r \ \ j=1,2,3,...,N,i=1,2,3,...,K

其中 gif.latex (67×19)区间内的随机数,x_{min}是维度gif.latex (9×16)的下界,gif.latex (35×11)为上界。 

(2)引领蜂阶段:将上述生成的K个蜜源分别安排给K个引领峰,并且计算对应蜜源x_{i}的丰富度。然后x_{i}为中心搜寻新蜜源​​​​​​​gif.latex (13×11),并且对比新的蜜源​​​​​​​gif.latex (13×11)和旧的蜜源x_{i}两者的质量,保留丰富度更大的蜜源。

 v_{i}=x_{ij}+\left ( x_{ij}-x_{kj} \right )\times r \ \ j \epsilon \left\{ 1,2,3,..., N \right\},k\epsilon \left\{ 1,2,3,...,K \right\}\cap k\neq i

 其中 gif.latex (67×19)区间内的随机数,x_{k} 是不同于 x_{i} 的解。

(3)跟随蜂阶段:跟随蜂收集到引领蜂或侦查蜂传递的蜜源信息后,按照一定的概率挑选将要开采的蜜源,具体方式是根据蜜源的适应度的值,采用轮盘赌算法计算开采某个蜜源的概率。

p_{i}=\frac{f_{i}}{\sum_{j-1}^{P}f_{i}}

其中 f_{i} 为蜜源 ​​​​​​​x_{i} 的适应度值。跟随蜂在选择好蜜源后,会在这个蜜源附近搜寻其他蜜源,找到其他蜜源后,依然会比较新旧蜜源并保留丰富度最高的蜜源。

(4)侦查蜂阶段:在寻优的过程中,如果某一个解持续 limit 次循环没有发生更新,就认为此解陷入局部最优,此时会将这个解关联的引领蜂转变成侦查蜂,开始对新蜜源进行随机搜索。

3.2.3 人工蜂群算法的特点:系统性(关联性、整体性、动态性)、分布式特征、自组织性、正负反馈机制 

3.3 IALB算法设计

IALB算法根据链路上的大流数目、链路实时负载以及链路稳定度重定义适应度函数,致力于在路径长度、链路负载以及链路稳定性的多约束条件下为数据流选择最佳传输路径。最后实验结果表明IALB算法在平均吞吐量及链路利用率两个指标上都有明显的改进。

3.3.2 IALB算法的具体步骤如下:

第一步,边缘交换机接收到数据包时,会先判断目的主机是否与自己直接相连,如果是就直接进行转发操作,不需要后续过程;

第二步,由于小流占用的带宽很少,持续时间也很短,如果对于每个小流都采用集中控制的方式计算转发路径并对其统一调度,会增加大量非必要的复杂度和时间,所以在选择转发路径之前需要检测此数据流是否为大象流。如果是最小流直接采用静态路由算法ECMP进行流量调度,如果是大流 就上传 packet-in 消息并等候控制器对其进行处理。

第三部,算法的核心就在于控制器计算转发路径的过程,首先会从源地址和目的地址之间的全部可达路径中计算跳数最少的k条作为候选路径集中选出最佳路径,并下发流表信息,继而交换机根据下发的流表对大流进行转发。

3.3.3 基于IALB算法的负载均衡系统架构:基于 Ryu 开源控制器设计并开发,即IALB算法模块以及为其提供支撑的拓扑信息模块、统计信息模块和流表信息模块。

3.3.4 IALB算法关键问题

(1)大象流检测:IALB算法规定如果数据流的平均传输速率达到链路带宽的5%,就认为此数据流是大象流,具体伪代码如下所示,其中第2、3行避免当数据流的传输字节很少但持续时间也很短的时候对其是否为大象流产生错判,第4行8.0和1000是单位转化。

(2)链路稳定度:使用链路的大流数量定义链路稳定性

E=\frac{\sum \left ( \left| Num- \overline{Num}\right| \right )}{m}

其中 Num 是路径上的大流数量,如果此路径上最小负载和最大负载差别不大,则说明将流调度至此不会造成过多的链路碎片化,说明此路径是合适路径,能有效保护数据安全也能提高利率路径上各链路的利用率,如果一条路径上的链路负载差别很大,那么进行路由很可能会造成路径中链路带宽的浪费。路径的稳定性越高意味着带宽碎片化代价越小,路径的可用性越高。

(3)适应度函数f(x_{i})的定义:第一项是路径x_{i}的最小剩余带宽,反映当前时刻的网络状态,第二项是路径x_{i}上的大流数目的倒数,大流数目越少,路径负载越小,第三项是路径x_{i}的路径稳定度。

\left\{\begin{matrix} f\left ( x_{i} \right )=\alpha \cdot B +\beta \cdot N+\gamma \cdot E \ \ e \ \epsilon \ x_{i} \\ \alpha +\beta +\gamma =1 \end{matrix}\right.

其中 \alpha,\beta , \gamma 是影响因子,B 是路径x_{i}的最小剩余带宽,N 定义为路径x_{i}大流数目的倒数,E 定义为路径x_{i}的稳定度。由于单位度量不同意,对每个参数进行归一化处理。

影响因子的大小说明个参数的重要性,本文将 (\alpha,\beta , \gamma) 设定为(0.4,0.4,0.2)。适应度函数f(x_{i})的值越大,对应的路径越应该被选择。

3.4 实验验证与分析

3.4.1 实验环境:CPU Inter Core i5-7500 3.4GHz,内存8G,操作系统Ubuntu 16.04,仿真平台Mininet 2.3.0d,控制器Ryu 4.3,交换机Open vSwitch 2.9.5,南向接口协议OpenFlow 1.3,编程语言python2.7.5、Shell。

3.4.2 实验设置:采用 k=4 的Fat-Tree拓扑,其中链路带宽为10Mbit/s,控制器对网络状态的健康周期设置为2秒,交换机流表项的两个超时时间计时器idle_timeout设定为5秒,hard_timeout设定为0秒。ABC模型中迭代次数设为50次,蜂群整体规模设定为120,引领蜂和跟随蜂的初始数量均设定为60,更新限制次数 limit 设定为5。

3.4.3 对比算法与流量模型:选取ECMP、Hedera以及PureSDN作为对比实验验证IALB的有效性。模拟五种流量模型并重复测试20次,计算平均值,random,stag(0.2,0,3),stag(0.4,0.3),stag(0.6,0.2),stag(0.8,0.1),stag(a,b)表示属于同一个接入层交换机的主机间发送的流量占a,向集群内主机发送的流量占b,向其他集群的主机发送的流量占1-a-b。

3.4.4 实验结果分析:选择网络平均吞吐率及链路利用率作为评估指标。

第四章 FCLB:基于流表资源和控制器资源的负载均衡算法 

 4.1 现有算法虽然考虑 idle_timeout 的设置对于流表资源和控制器资源的影响,但对于网络状态以及数据流特征考虑得不够充分。本文给出一种 动态设定 idle_timeout 的算法,力求在不同流特征以及网络状态的情况下找到闲置流表项的最佳清除时间并完成流表的更新。

4.2.1 数据流模型

(1)数据流的 ON/OFF 模型:对数据流进行抽象,ON 状态代表其正在进行数据包转发,传输的数据包长度分别为\left\{T_{1},T_{2},...,T_{i},...,T_{n} \right\}。OFF 状态表示数据流没有数据包正在进行传输,即流表项处于空闲状态的时间间隔,其时间间隔序列为\left\{t_{1},t_{2},...,t_{i},...,t_{n} \right\}

两种状态相互独立,并且均服从重尾分布。当数据流获得可用带宽并开始传输时称该流处于 ON 状态,ON 状态的每个数据包的长度 T_{1},T_{2},...,T_{n} 相互独立,服从 Pareto 分布:

P\left ( T_{i}> \tau \right )=\left ( \frac{\kappa}{\tau } \right )^{\alpha },\overline{T_{i}}=\frac{\kappa \alpha }{\alpha -1} \ \ \kappa ,\tau ,\alpha 是服从 Pareto 分布的参数

而当数据流没有获取到带宽,无法进行传输时,称此数据流处于 OFF 状态,此时流表项闲置的时间间隔 t_{1},t_{2},...,t_{n}服从负指数分布:

t_{\iota 1}\sim EXP\left ( \lambda \right ),\overline{t_{\iota }}=\lambda ^{-1} \ \ \lambda为非负参数

(2)idle_timeout 超时机制

第一种情况:由于一条数据流通常会被拆分成很多个数据包进行传输,如果 idle_timeout 设置的过小,和其匹配的流表项被过早的删除,会导致每一个数据包都需要经历一次查流表,无法找到匹配项以及向控制器发送请求的过程。一旦数据流的流量过大,拆分的数据包的数据量更多,每次都需要控制器来处理请求计算转发路径,浪费控制器资源。

第二种情况:当 idle_timeout 设置的过大,第一次向控制器发送请求计算出转发路径后,流表项一直存在流表中,一旦数据流的流量较小,交换机很快完成了该流的转达,该流表项会一直处于闲置状态,直到闲置时长达到 idle_timeout设定值才被清除,浪费了大量的流表资源。

因此,只要根据流的特征以及网络状态动态地设置 idle_timeout 才能更好地利用流表资源及控制器资源。定义 T_{idle} 表示  idle_timeout 的值,则需要发送 packet-in 消息的数量为:

Num\left ( t,T_{idle} \right )=\displaystyle \lim_{n \to \infty}\sum_{i=1}^{n}\varepsilon \left ( t_{i} -T_{idle} \right )

其中 \varepsilon\left ( \cdot \right ) 是单位阶跃函数。

4.2.2 资源消耗定量分析

(1)流表资源

流表的生存时间分为有效生存时间和无效生存时间,其中无效生存时间指流表项存在但没有匹配的数据包正在进行转发,即流表项处于空闲状态的时间:

Idle\left ( t,T_{idle} \right )= \displaystyle \lim_{n \to \infty }\sum_{i=1}^{n}t_{i}\cdot \varepsilon \left ( T_{idle}-t_{i} \right )+Num\left ( t,T_{idle} \right )\cdot T_{idle}

代入 packet-in 消息的数量 Num\left ( t,T_{idle} \right ) 可得:

Idle\left ( t,T_{idle} \right )= \displaystyle \lim_{n \to \infty }\sum_{i=1}^{n}t_{i}+ (T_{idle}-t_{i}) \cdot \varepsilon \left ( t_{i} -T_{idle} \right )

(2)控制器资源

假设处理一条 packet-in 消息需要消耗的控制器资源为 cost,则一条数据流需要消耗的控制器资源如下:

C\left ( t, T_{idle} \right )=cost\cdot Num\left ( t, T_{idle} \right )=\sum_{i=1}^{n}\varepsilon \left ( t_{i} -T_{idle}\right )\cdot cost

对其归一化得到平均一个数据包消耗的资源如下:

c\left ( t, T_{idle} \right )=\displaystyle \lim_{n \to \infty }\frac{c\left ( t,T_{idle} \right )}{n}=\displaystyle \lim_{n \to \infty }\frac{\sum_{i=1}^{n}\varepsilon \left ( t_{i}-T_{idle}\cdot cost \right )}{n}=e^{-\lambda T_{idle}^{}}\cdot cost

4.2.3 资源偏好因子

同时考虑流表资源和控制器资源的消耗,其总消耗量表示为:

z\left ( t, T_{idle} \right )=\left ( 1-a \right )\cdot o\left ( t, T_{idle} \right )+\alpha \cdot c\left ( t, T_{idle} \right )

其中\alpha值表示数据流对于流表资源和控制器资源的偏好程度,\alpha值越大表示此数据流更倾向于使用流表资源或是当前网络状况更倾向于让数据流使用流表资源,此时应该将 idle_timeout 调大,减少 packet-in 消息的产生,减少控制器资源的使用。反之则将 idle_timeout 调小,尽快清除空闲相应的流表项,流出更多可用的流表资源。其中0< \alpha < 1 。

 \alpha=f\left ( \frac{R\cdot p\cdot n}{b} \right )

其中 f 函数是偏好度系数函数,n 表示数据流分成n个数据包进行传输,p 表示这个数据流需要的网络带宽,b 表示网络的带宽,R 表示数据流所选路径上的大流数目。\alpha 默认为0.5,对于小流应当适当降低,对于 大流应该提高。

4.3 FCLB算法设计

算法优化目标:idle_timeout 设置过大会导致流表资源的浪费,设置过小会产生大量的 packet-in 消息,导致控制器资源的浪费。idle_timeout 最优值的求解可以转化为资源的消耗 z(t, T_{idle}) 最小的求优问题。

idle_{-} timeout=arg \ _{T_{idle}}^{min}\textrm{} \left\{ z\left ( t,T_{idle} \right )| T_{idle}> 0\right\}

算法流程:

4.4 实验验证与分析

4.4.1 实验环境:与第三章相同,假定交换机上的数据流不超过10000条,负指数分布\lambda设置为0.05,处理单挑 packet-in 消息消耗的控制器资源cost设定为0.05秒,交换机流表资源容量设定为1500。

4.4.2 实验结果分析

(1)流表资源利用率

(2)数据流命中率:数据流命中是指当数据流抵达交换机时,有与其匹配的流表项,即不需要占用控制器 资源计算转发路径,用来评价 idle_timeout 设置是否合理。

​​​​​​​

第五章 总结与展望

(1)基于改进的ABC算法的IALB算法:仿真实验主要是在单 Ryu 控制器网络下进行的,而单控制器网络可能会存在单点失效的问题,后续可以考虑扩大网络结构,在多 Ryu 控制器网络下测试算法的可行性和有效性。

(2)基于流表资源和控制器资源的FCLB算法:可以考虑对数据流进行分类建模,针对不同类别的数据流建立不同的流量模型,并以此研究各种流的流表项空闲时间的设定规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值