APP下载

一种基于吞吐量变化的OpenFlow网络自适应测量算法*

2019-03-14王巍振张安琳黄道颖谢兆贤

火力与指挥控制 2019年2期
关键词:网络流量周期性交换机

王巍振,张安琳,黄道颖,谢兆贤,陈 慧

(郑州轻工业学院计算机与通信工程学院,郑州 450000)

0 引言

软件定义网络(Software-Defined Network,SDN)作为一种新型的网络体系结构,引起了学术和工业界高度关注,其基本思想是将控制平面与数据平面分离。控制平面通过交换机集中控制数据包的转发。2008年出现的OpenFlow[1]已被业界默认为控制平面和转发平面之间的协议,OpenFlow通过Packer-in消息和Per-Port计数器,控制器可以定期轮询交换机以获取网络流量信息,包括每流字节数、数量以及持续时间。利用OpenFlow这种特性可以定制测量策略,但通常会存在以下问题:如果对所有流进行细粒度的测量,这会对控制器和交换机带来巨大的负担。此外,由于数据中心的网络流量存在许多对延迟敏感的老鼠流,频繁的测量会使到达交换机的新流产生TCP超时,因此,细粒度的测量通常在数据中心中不可行[2]。其中的一个解决办法是对网络进行周期性测量,例如每隔一秒测量一次以减少控制器的负担[3]。网络通常具有突发性和波动性且在数据中心这种特点尤为明显,周期性测量可能在网络波动时无法准确地捕获测量数据。

因此,为解决细粒度测量控制器负载较高,周期性测量不准确的问题,本文提出一种基于吞吐量变化的OpenFlow网络自适应测量算法,该算法可根据网络状态自适应地调整测量周期,在网络波动时,缩短测量周期,以获得更为精确的测量指标,在网络平稳时,延长测量周期,来降低控制器的开销。

1 背景及相关工作

网络测量根据测量方式不同可以分为主动测量和被动测量。主动测量通常需要向网络中注入探测包来监测它们的行为,比如ping和iperf,但由于需要注入探测包,可能对测量结果产生影响;被动测量通常不会对网络增加负载,但需要大量的前期部署和协议支持。通常来说,主动测量在获取网络性能指标应用上比被动测量更为普遍。

SDN架构如图1所示,主要包含3个部分,转发层、控制层和应用层[4]。转发层通常负责数据转发,处理和收集流的状态;控制层包含一系列控制器[5-6],用来集中控制网络;应用层包含一系列应用程序。在转发层和控制层中间,目前使用最为广泛的协议为OpenFlow协议。根据OpenFlow中(Request和Reply)的消息机制,可获取流统计信息、端口统计信息及队列信息。统计信息通常包含了字节数、数据包数和持续时间,通过这些信息,可在控制器上开发更为复杂的流量测量系统来监控网络。

图1 SDN架构图

在基于 OpenFlow 的测量研究中,flowSense[7]利用Packet-in和Flow-Removed消息来评估流的链路利用率,但因其使用了定期推送方式牺牲了测量准确性;OpenSketch[8]提出了在 OpenFlow 中并行新协议,以高精度和低延迟支持各种测量任务,但需要增加新协议于现有网络,增加了网络部署成本;文献[9]提出了一种基于队列测量的方法,利用QoS参数队列来进行网络测量,但该方法仅仅降低了网络开销,并不能适应网络状态变化;SDN-Mon[10]将测量与部分转发表分离,把部分测量任务交给交换机,从而减少测量开销;文献[11]通过从交换机计数器中分析流量自相关的特性,利用随机抽样方法来完成细粒度测量同时减少测量的开销。与现有测量方法不同,本文主要针对网络的突发和波动使用的周期性测量方法进行改进。由于大多数基于OpenFlow的测量框架中,统计收集数据的精确度和测量开销之间存在着长期的折中,如何在不同网络状态下保持测量精度,同时尽量减少控制器开销是本文主要解决的问题。

2 算法设计

2.1 基本思想

利用周期性测量方法可以获取相应的测量数据,但设定测量周期较长时会降低测量准确性,测量周期较短会导致控制器负载过大。

借鉴于无线传感器网络中自适应调整来减少网络开销[12],本文在OpenFlow网络周期性测量的基础上提出了一种自适应测量算法,增加了网络状态判定和更改测量周期,当网络流量突发和波动时缩短测量周期;当网络平稳时延长测量周期。其中重点包括两个方面,第1点为如何判断网络为突发状态,第2点为探测周期如何调整,自适应测量模型流程如下页图2所示。

图2 自适应测量模型

2.2 网络流量突发和波动判断

OpenFlow网络中的流量的突发和波动通常伴随着时延、丢包率和网络实际传输速率的变化。由于OpenFlow网络特性使得控制器可对同一条流进行分配不同的路径,选择时延来判定网络突发性需要对多条路径上交换机进行轮询,并且多条路径链路时延可能不一致,会使系统很难判定网络是否处于突发和波动状态;使用丢包率来判定网络突发也是不合适的,因为依据Benson等人的调查研究,大型网络中的流量呈现明显的不均匀分布[13],丢包率在核心层和边缘层会呈现不一致性,这显然会增加判定的复杂性,且高速网络中丢包概率非常小。

由于核心交换机通常带宽利用率都在80%以上,即使网络出现突发和波动也很难通过吞吐量变化来判断。因此,本文选择测量路径上最后一个边缘交换机的吞吐量变化来确定网络突发和网络波动。因为边缘交换机处理的流量要比核心交换机少,在边缘交换机上进行频繁的测量对网络影响较小,而且边缘交换机上的利用率通常不稳定,网络的突发和波动通过查询端口计数器很容易计算,因此,选择吞吐量变化更有利于对后续自适应测量的条件进行判定。

这里吞吐量用Tp表示,吞吐量的计算公式如式(1)所示:

其中,Δbyte是时间间隔内测得字节数的变化值,Δt表示两次测量时间间隔。

假设进行了N次测量,测量结果为队列为{Tp1,Tp2,…,Tpn},对于第 n 次探测到的结果为 Tpn,则预测下次吞吐量的变化的绝对值为 Tpn+1-Tpn。由于Tpn+1是一个未知的值,但由于网络流量突发时,测量周期会显著降低,可以 Tpn-Tpn-1来近似,后续的实验也表明该近似值能够很好地追踪吞吐量变化。吞吐量变化的绝对值用ΔTp来表示。

给定参数α,当ΔTp满足ΔTp<α时,表示网络较为平稳,当ΔTp满足公式ΔTp≥α时,网络存在流量突发。其中,α表示给定的可变化参数,这里可以事先规定一个精度来确定α的取值,但由于网络中可能存在多种突发流量,给定一个确定的精度不能够准确地反映网络的状态。本文利用吞吐量变化量其数量级相同的均值分散程度来表示该变化参数,如式(2)所示。

其中,Tpi为第i次测得的吞吐量,Tp为前面n次测得的吞吐量平均值。由于α的可变性,可以更好地跟踪和判断突发流量。这里注意到随着n值增大时,计算α的复杂度也逐渐增加。为解决这个问题,通过队列对n进行了限定,当n=128时,将最新的样本直接覆盖旧的样本,旧的样本将被移出队列,以保证在一定时间段内取值的稳定;同时,为了更为简便地计算,当n=128时,不需要每次计算样本偏差的总和,只需要计算出的上次样本总和加上此次测量样本减去队列中最旧的样本即可完成工作。

2.3 测量周期调整

对吞吐量变化进行判断后需要对测量周期进行调整。整体策略是当网络流量存在突发和波动时缩短测量周期,网络较平稳时延长测量周期。

测量周期实时性的调整将会对网络保持较小的测量误差和网络负载均衡有着关键性作用,自适应测量可以快速适应网络的变化。假设当前的测量周期为 TC,引入参数 γ,(γ1、γ2∈γ)。当网络流量突发波动较大时,测量周期调整为TC+1=TC/γ1,以提高测量精度;当网络较平稳时,测量周期调整为TC+1=TC* γ2,降低测量负载。

值得注意的是,γ1、γ2的取值可对采样策略进行较大的影响,当一定时间间隔内ΔTp的值一直保持一个较大值时,测量周期可能趋于0。相反当周期内ΔTp的值一直保持一个平稳时,测量周期可能增加到无穷大。这需要给定两个限定的边界值TMAX和TMIN。当求得的测量周期大于TMAX时,则认为该取值是不可取的,强制把TMAX作为下次的测量周期,当求得的测量周期小于TMIN时,强制把TMIN作为下次的测量周期。

2.4 自适应测量算法实现

通过对上两节关键问题的整合,自适应测量算法描述如下:1)首先测量周期初始化,确定流为活动流后向指定边缘交换机发送FlowStatsRequest请求,并收集端口信息;2)把计算出的吞吐量样本存入队列Q,计算α的值;3)通过相邻两次测得的吞吐量值计算出吞吐量的变化值,即ΔTp=Tpn-Tpn-1;4)比较ΔTp和α的值,当ΔTp<α时,调整测量周期 TC+1=min(TC*γ2,TMAX),当 ΔTp≥α 时,调整测量周期 TC+1=max(TC/γ1,TMIN);5)输出 TC+1,以TC+1作为下一个测量周期。

在上述算法描述中,γ1、γ2、TMIN和 TMAX都是可变的参数,可自行设置,在下节实验中对参数取值进行了分析。

3 仿真实验

3.1 实验准备和参数设定

实验所使用网络拓扑由4台交换机、1台控制器、1台服务器和1台客户机组成。如图3所示。

图3 实验拓扑图

测量框架部署在由POX控制器和mininet[14]组成的网络上。实验所用的操作系统为Ubuntu 14.04、实验平台为 Mininet 2.21、Open vSwitch 1.4.3、POX controller、OpenFlow 1.0。交换机(Open vSwitch)全部连接到支持OpenFlow协议的POX控制器上,交换机使用OpenFlow 1.0协议进行配置,带宽限制在10 Mb/s。查询s4的交换机计数器,因为s4是测量路径上的最后一个交换机。

发送稳定流量使用的工具为iperf,发送的包为TCP包,TCP协议是可靠的传输层协议,TCP数据包可以提高估计的精度。为了模拟网络突发,使用视频流来模拟网络突发,视频流所需的瞬时宽带在1 Mb/s到15 Mb/s之间变化。

本文设置测量周期最大间隔时间为5 s,最小间隔时间为0.1 s,因为实验设备有限,实验中若测量周期特别小,可能导致控制器负载过大。周期性测量的时间间隔为1 s。为了使测量周期有着明显的变化,使用乘半或倍增的周期调整策略,参数和的取值都被设定为2。控制器开销的大小可以通过控制器发送的FlowStatsRequest消息数量来计算。

3.2 实验结果分析

图4显示了周期性测量和自适应测量测得的吞吐量。吞吐量计算方式为测得的交换机1和交换机4吞吐量之和除以2来估计整个网络的吞吐量,周期性测量为固定的时间1 s,自适应测量参数如前文所述。

图4 吞吐量变化拟合图

由图4可以看出,周期性测量和自适应测量吞吐量随时间的拟合图大致相似,自适应测量比周期性测量拥有更高的波峰,尤其在40 s和50 s左右时,测得的吞吐量上升幅度大,这表明在网络存在突发和波动时,自适应测量通常比周期性测量捕获流量的能力更好。

图5 49 s~51 s吞吐量细节图

图5显示了49 s到51 s左右的细节散点图,在这2 s内周期性测量方案仅测量了3次,而使用自适应测量方案测量次数在8次。根据文献[15]表明,流量突发通常发生在1 s内,周期性测量的吞吐量仅仅在50 s到51 s之间有轻微的上升,并未捕获到2 s内流量突发状态。同时在49.3 s左右,自适应测量测得吞吐量大概为11.3*105B/s,而周期性测量测得的吞吐量只有在49 s的7.6*105B/s,和50 s的9.8*105B/s,在1 s内并未准确捕获到突发流量。表明自适应测量能够在流量突发时,能够准确捕获吞吐量的准确值,比周期性测量拥有更高的精度。

图6 Request请求对比图

图6显示了网络平稳状态下分别通过周期轮询和使用自适应测量请求个数。控制器可以通过发送FlowStatsRequest消息定期轮询交换机,交换机同时发送FlowStatsReply消息到控制器,通过获取Request请求消息个数来评估控制器负载。实验表明在测量周期的前30 s由于几乎流量都是未在交换机内具有流表项的新流,请求前期急速增长,随着时间的推移,在90 s时控制器负载达到稳定的状态,这表明大量的时间有助于网络负载平稳,降低波动。在网络状态平稳时控制器使用自适应测量的负载比周期测量方式降低近25%。

4 结论

周期性测量是目前OpenFlow网络常用的测量方式,但周期性测量无法自适应网络状态变化,在网络突发时无法准确捕获流量,在网络平稳时增加控制器负担。

本文提出基于吞吐量变化的自适应测量算法可以实时调整测量周期,在网络突发时缩短测量周期来提高精度,在网络平稳时延长测量周期来降低负载,同时自适应测量还在网络状态稳定时可以降低测量开销。总体上讲,由于网络通常保持在一个平稳的状态,而网络突发持续时间在1 s内,通常控制器负载会在瞬间提高,提高精度需要以增大负载为代价,为了局部测量精度产生的代价本文认为是合理的。网络测量的目的一是为了获取准确的网络状态,二是为了流量工程提供支撑。流量工程通常采取“抓大放小”思想,网络突发流量大多是因为出现了大象流,提高测量精度也有助于识别网络中的大象流,为后续的流量工程作出贡献。

猜你喜欢

网络流量周期性交换机
大数据驱动和分析的舰船通信网络流量智能估计
面向未来网络的白盒交换机体系综述
基于双向长短期记忆循环神经网络的网络流量预测
慢速抗阻训练:周期性增肌的新刺激模式
局域网交换机管理IP的规划与配置方案的探讨
新广告商:广告业周期性在弱化,而集中度在提升 精读
基于地铁交换机电源设计思考
一类整数递推数列的周期性
浅谈交换机CAN基本配置
一种用于敏感图像快速加密的图像注入技术仿真