SDN多控制器网络中基于交换机迁移的动态负载均衡策略∗

2021-08-08 11:11黄泰铭李道全
计算机与数字工程 2021年7期
关键词:数据包交换机控制器

黄泰铭 王 雪 于 波 李道全

(青岛理工大学信息与控制工程学院 青岛266520)

1 引言

软件定义网络(Software Defined Network)[1]是一种新型网络体系架构,将传统的网络架构划分为数据平面、控制平面和应用平面,具备数据转发与规则控制相分离、软件可编程等特点,成功地解决了传统网络的设计僵化问题。然而随着网络的规模日益增大,单一控制器的SDN架构无法满足可扩展性需求,从而出现了逻辑上集中,物理上分布多控制器SDN网络架构[2]。

在SDN多控制[3]架构中,每一个物理上分布的SDN控制器都可控制多个SDN交换机,而各个控制器之间是逻辑上集中的。然而,流量的变化易导致各个控制器之间的负载不平衡,这会严重影响多控制器SDN网络架构的整体性能。如何实施多控制器之间的交换机迁移从而实现负载均衡目标,是未来网络发展的重要研究方向[4]。

2 相关研究工作

在初期阶段,SDN架构通常只部署了单控制器来管理所有交换机,此架构虽然解决了网络状态的一致性问题,但是仅限用于小规模网络环境,可扩展性低[5]。为解决此问题,近年来已有部分学者提出了多控制器的SDN架构,例如HyperFlow与Onix[6~7]。这些文献研究了如何实现分布式的控制平面以及如何给应用平面提供一个全局的网络拓扑,在一定程度上提高了多控制器的扩展性和稳定性。但在多控制器SDN环境下,如何有效预防并解决多控制器之间的负载均衡,又是该领域所面对的新挑战。

综合近年来国内外研究现状,针对多控制器SDN环境下的控制器负载均衡策略,主要以交换机迁移为主。文献[5]设计了一个“超级控制器”来调度流量,从而达到多控制器之间的负载均衡。文献[9]提出了COLBAS算法,每个控制器通过定期发布自己的负载,并与其它控制器相互配合来实现多控制器负载均衡。以上两篇文献虽然都对多控制器SDN的负载均衡问题提出了解决方案,但在收集负载信息和各控制器的交互方面有着较大的通信代价。在文献[10]中,Advait等设计了名为Elasti⁃Con的分布式SDN控制器架构,并提出了一种符合OpenFlow标准的交换机迁移协议,该架构根据控制器负载阈值将交换机就近迁移至邻居控制器。但其只考虑了单控制器过载的情况,若邻居控制器也处于过载状况,此架构将会失效。文献[11]中,胡等提出了一种以交换机迁移策略为主的阶段式控制器负载均衡策略,通过选取交换机迁入和迁出域,设定子域迁移度和交换机有效期的阶段式算法实现了对交换机迁移的优化,然而此策略提出的静态负载信息采集方案会产生较大的通信代价和资源浪费。

总体来说,设计一个更好的交换机迁移策略来解决多控制器SDN的负载均衡问题,不但需要降低控制器之间的通信代价和资源消耗,而且需要提出合理的交换机迁移算法,避免迁移选择僵化与迁移冲突问题。

针对多控制器SDN环境,本文提出了一种基于交换机迁移的动态负载均衡策略,能够有效地解决多控制器SDN环境下的负载均衡问题。本文的贡献和创新工作如下:

1)提出了一种自适应数据波动的动态负载信息采集算法,该算法能够根据控制器的负载状态自适应地调整数据收集的时间间隔,从而降低了负载信息采集的开销。

2)构建具有中央控制器的分布式SDN网络环境,并提出了更为高效的迁移交换机和迁移目标控制器的选取算法,提高了交换机的迁移效率,避免了迁移冲突。

3 基于交换机迁移的动态负载均衡策略设计

在多域多控制器的SDN网络环境下,各个分布式的控制器在时间和空间上会出现流量分布不均匀的情况,因此会出现个别控制器子域流量请求激增、控制器过载的情况,而其他控制器子域处理的流量请求较少,从而导致整个网络的负载不均衡的问题。

针对此问题,本文提出了基于交换机迁移的动态负载均衡策略,流程如图1所示,此策略共分为三个阶段。首先通过动态信息采集算法(DIA)收集各控制器间的负载信息,以决定需要实施交换机迁移算法的过载控制器;随后依据本文定义的迁移域及迁移交换机选取算法(MSS)决定迁移目标控制器以及需要迁移的交换机;最后依据交换机迁移协议完成交换机迁移,实现多控制器下的负载均衡。本部分内容将针对此策略的三个阶段进行具体的算法设计与原理论证。

图1 多控制器SDN中基于交换机迁移的动态负载均衡策略流程图

3.1 控制器负载信息采集与过载判定

在传统负载信息采集方法中,SDN控制器的数据采集模块通常采用固定的时间间隔来收集负载信息,此方法的缺点在于当各控制器负载均较低时,容易造成不必要的信息采集开销。为避免频繁采集控制器负载信息造成的资源浪费,本部分提出了动态负载信息采集算法(DIA),部署并运行于中央控制器。该算法会根据各控制器在一定时间间隔内的负载变化而自适应地调整负载信息采集的时间间隔。在各控制器负载均较低时,增加负载信息采集的时间间隔;在各控制器出现负载波动较大时,降低负载信息采集的时间间隔,由此精确各控制器的实时负载情况,同时避免了频繁采集控制器负载信息造成的资源浪费。

3.1.1 多控制SDN网络模型

OpenFlow 1.3协议[12]中为SDN控制器定义了三种模式:master、slave和equal。该协议规定,任意一台OpenFlow交换机可以与多台SDN控制器相连,限制条件为该交换机有且仅有一台master控制器,但同时可以存在多台equal和slave控制器与其相连。其中,slave控制器对交换机仅有只读权限,不能接受诸如Packet_in的同步消息。然而master和equal控制器可以更改交换机的状态并接收交换机的同步消息。

为确保SDN网络的可靠性,网络中的每台OpenFlow交换机在默认情况下连接一台master控制器和一台slave控制器,同时也拥有多台不相连的equal控制器并存于整个多控制器网络中[13]。在任意一台OpenFlow交换机的master控制器出现过载或故障时,可通过实现交换机迁移,来实现负载均衡或故障恢复,其过程为更改当前交换机的mas⁃ter控制器角色为slave,同时将负载较低的equal控制器变更为其master控制器。

在多控制器SDN网络中,为实时监测各控制器的负载情况并动态地采集负载信息,本文部署了如图2所示的简单网络模型,其中部署了一台中央控制器来实现对各个SDN控制器负载信息的采集与交互。

图2 多控制器SDN网络模型,部署“中央控制器”来收集各控制器的负载信息

3.1.2 动态负载信息采集算法(DIA)

动态负载信息采集算法的原理是在中央控制器部署一个负载监测模块,周期性地收集各SDN控制器的负载数据以判定是否存在过载控制器。在SDN控制器中,对Packet_in消息的处理是影响其负载的主要因素。OpenFlow交换机若在本地预存的流表中找不到与收到的数据包相匹配的流表项,则会按照OpenFlow协议,把收到的数据包封装到Packet_in消息中,并将Packet_in消息上传到SDN控制器。控制器收到报文后决定如何处理当前流,并通过OpenFlow协议将处理结果转化为新的流表,下发至OpenFlow交换机。其中控制器的CPU负责处理所有数据及接收到的Packet_in消息,控制器的内存负责数据的存储。控制器接收的Pack⁃et_in消息越多,其CPU、内存和带宽的使用率就越高,控制器的负载也会越大。因此DIA算法需要获取SDN控制器的三种可直接收集到的负载数据:CPU负载lcpu、内存负载lmem和带宽使用率lbr。

DIA算法根据以上信息定义了SDN控制器的负载L由式(1)所示,ω1、ω2、ω3分别表示lcpu、lmem、lbr所占权重。

随后定义任意SDN控制器m的负载信息采集的时间间隔Tm,如式(5)所示,其中t代表预设的负载信息采集的时间间隔,预设值为15s。

根据式(1)~(5),在DIA算法中,控制器m的时间间隔动态调整可如式(6)表示。一般情况下,网络设备的负载在80%以上时会出现丢包现象,因此算法规定在控制器负载值Lm在不超过0.8时为正常负载情况,当负载值大于0.8时会判定该控制器处于过载情况,并运行后文提出的迁移域及迁移交换机选取算法。

3.2 迁移域及迁移交换机选取算法(MSS)

中央控制器运行DIA算法时,若未监测到过载控制器,将会持续动态收集负载信息,若监测并判断出过载的SDN控制器,此时根据图1所示流程,中央控制器会进行阶段2的迁移交换机及迁移域选取算法(MSS)。MSS算法分为两步:第一步是要确定交换机迁移的目标子域,也就是迁移域的选取;第二步是从过载SDN控制器子域中选择出负载较高的交换机来执行交换机迁移操作。

3.2.1 迁移域选取

传统交换机迁移方案在选择迁移域时多采用随机选取原则,没有综合考虑迁移域的负载,这样的交换机迁移过程容易出现迁移后再次过载的情况。本文提出的迁移域选取方案将设置并计算所有可迁移域的控制器负载值,优先选取负载值最低的控制器作为迁移域。控制器负载值定义如下。

对于一个包含M台控制器和N台OpenFlow交换机的多控制SDN网络,其控制器集合可表示为交 换 机 集 合 可 表 示 为。且由OpenFlow协议规定的连接关系可构造一个控制器与交换机的连接关系矩阵A=(aij)m×n,如图3所示,其中矩阵内元素aij的描述如式(7)所示:

对于图2所示的控制器与交换机的连接关系,可用图3所示的关系矩阵表示。

图3 控制器与交换机的连接关系矩阵

在多控制器环境下,每台SDN控制器对于Packet_in数据包的处理能力都不一样,其处理能力可以用单位时间内能处理Packet_in数据包的最大值来衡量,该数值可通过专业测试工具测得,本文假设该数值已知,并定义控制器i的负载值Ldi如式(8)所示:

其中Pi为控制器Ci在单位时间处理Packet_in数据包的最大值,pj为交换机Sj在单位时间内发送到控制器的Packet_in数据包数量。

完成该计算后,拥有最低负载值的控制器将被选取为迁移域。

3.2.2 迁移交换机选取

迁移交换机的选取范围是在过载控制器的子域内。控制器通过负载信息采集监测出每个交换机向过载控制器发出的Packet_in消息的平均请求速率来选取需要迁移的交换机,Packet_in消息的平均请求速率Rn定义如式(9)所示,其中MsgPacket_in代表交换机Sn每秒产生的Packet_in消息的数量。

Rn的值越大,则过载控制器需要处理的流表请求越多,表示该交换机在过载控制器子域内产生的负载越高。为了尽可能降低过载控制器的负载,中央控制器将Rn的值进行降序排序并优先选取Rn值最大的交换机作为迁移交换机。

3.3 完成交换机迁移操作

在交换机的迁移阶段,必须要注意的问题是:要始终保持有且只有一个控制器处理迁移交换机的消息,以保证迁移过程不丢包以及交换机迁移的安全性[14]。过载控制器与迁移目标控制器通过如图4所示的消息传递过程完成最终的交换机迁移,该过程可以保证交换机在迁移过程中不出现丢包情况。

图4 交换机迁移所需消息传递过程

首先,过载域控制器A发送一个交换机迁移请求消息给迁移域控制器B。在交换机迁移期间为了维持迁移交换机SA流表的一致性,保证一直有且只有一个控制器处理交换机的消息,控制器A下发一个伪流表给交换机SA。因为伪流表不匹配任何数据流,所以不会影响OpenFlow网络[15]。随后,控制器B发送一个更改器角色为equal的消息至交换机SA,且控制器B会收到交换机SA的回复消息,并告知A自己的角色已经变更为equal。为确保交换机中所有消息都已经处理完毕,A发送Barrier消息至交换机SA。交换机SA在处理完Barrier消息后回复A。最后,控制器A下发伪流表删除消息至交换机SA,SA删除伪流表后通知所有与之相连的控制器进行角色变更。在收到通知消息后,控制器A将变更其角色为slave,同时控制器B将变更其角色为master,并开始负责管理交换机SA。

4 仿真实验结果对比

4.1 实验环境与测试工具配置

为验证前面提出的SDN交换机迁移负载均衡策略,本部分对该策略进行了仿真实验与结果分析。本实验共使用了五台处理器为Intel i5 6500,主频为3.2GHz,4G内存的计算机,所有实验主机连接于同一局域网环境下。主机分配与实验环境配置信息如表1所示。实验使用Floodlight作为SDN控制器,miniedit软件搭建SDN网络拓扑,并借助思博伦测试工具(Spirent TestCenter),测试方案的吞吐量、带宽使用率和时延等性能参数。

表1 主机分配与实验环境配置

本实验采用的网络拓扑如图5所示,其中包含一个中央控制器,管控三个Ryu网络控制器C={C1,C2,C3},每个控制器域内包含三个交换机,交换机集合为S={S1,…S9},每个交换机下绑定一台虚拟主机,所有链路的带宽默认值为10Mbit/s。

图5 多控制器SDN实验拓扑

4.2 动态负载均衡性能测试

本实验主要分为两大测试内容:网络性能测试和控制器平均负载。实验操作及结果分析如下。

1)网络性能测试

本部分的网络性能测试目的在于对比动态负载均衡前后,SDN交换机吞吐率的变化,以此证明该动态负载均衡策略的优越性。

实验首先测试负载均衡前的网络性能。启动Floodlight+mininet的SDN环境后,在装有思博伦测试工具的主机上启动STCa(Spirent TestCenter Ap⁃plication),将 如 图6所 示 拓 扑 中 的S1_eth1和S2_eth1两个端口绑定为测试端口port1和port2。在STCa完成网络ARP学习后,启动STCa中的RFC2544性能中的吞吐率测试,给port1-port2端口间添加h1~h2的单向流量供给负载,以此观察S2交换机的吞吐率变化。测试参数配置如表2所示。由于流量负载是单向的,交换机S1会不断产生Packet_in数据包到控制器C1,到达一定时间会导致控制器C1过载,从而影响到其域内S2交换机的吞吐率。

图6 网络性能测试绑定端口

完成以上测试后,接下来开启动态负载均衡,并再次测试网络性能,测试参数配置与表2一致。测试完成后将负载均衡前后的吞吐率数据进行对比。如图7所示对比结果可以看出,动态负载均衡后,C1控制器在面临高流量负载的情况下,其域内S2交换机的吞吐率较负载均衡前显著提高。

图7 负载均衡前后S2交换机吞吐率对比

表2 RFC2544网络性能测试参数配置

2)控制器平均负载

控制器负载的主要来源是Packet_in数据包,要模拟出各控制器负载不均衡的情况需要在各控制器中产生不同数量的Packet_in数据包,因此本部分实验在图5所示拓扑基础上添加6台虚拟主机到C1控制器与内,分别绑定在S1-S3交换机上。随后使用mininet命令行持续执行pingall功能。此时SDN网络中会产生大量包含ICMP协议的Pack⁃et_in数据包。

在pingall的同时启用DIA算法,采集到各控制器的负载信息变化如图8所示。由图可发现,因C1控制器内主机数量大,随着互ping时间的增加,控制器的负载会远超C2和C3控制器。但伴随着交换机迁移策略的执行,C1控制器将负载高的交换机迁移至C2和C3控制器域内,其负载值逐渐降低,C2和C3控制器的负载值逐渐增高,且随时长增加,各控制器的负载逐渐趋于均衡。

图8 高负载下各控制器负载变化

5 结语

本文针对现有的多控制器SDN网络环境面临的负载均衡问题,提出了一种基于交换机迁移的动态负载均衡策略,主要包含了动态负载信息采集算法(DIA)和迁移域及迁移交换机选取算法(MSS)。结合使用了网络性能测试工具进行了模拟仿真实验,结果证明该策略可有效提高SDN交换机在高负载状态下的吞吐率,并均衡多个控制器的负载。

猜你喜欢
数据包交换机控制器
三转子式比例控制器设计与内泄漏分析
南京溧水电子3款控制器产品
二维隐蔽时间信道构建的研究*
基于NFV的分布式SDN控制器节能机制
C#串口高效可靠的接收方案设计
浅谈交换机CAN基本配置
网络数据包的抓取与识别
罗克韦尔发布Strat ix 5410分布式交换机
智能液位控制器在排水系统中的应用
信息网络中交换机的分类和功能