OpenFlow中基于X形拓扑的网络测量研究
2017-09-20程炜高志鑫徐天奇吴海峰
◆程炜 高志鑫 徐天奇 李 琰 吴海峰
(云南民族大学电气信息工程学院 云南 650500)
OpenFlow中基于X形拓扑的网络测量研究
◆程炜 高志鑫 徐天奇 李 琰 吴海峰
(云南民族大学电气信息工程学院 云南 650500)
OpenFlow是一种控制和转发分离的新型架构,是目前学术界最热门的研究话题之一。在本文中,我们将通过搭建Mininet与Floodlight的实验环境作为OpenFlow协议的仿真平台,以X形拓扑为测量对象,分别引入Mininet中的随机流量模型与概率模型,实现路径损耗率、网络时延以及带宽的测量。
OpenFlow;X拓扑;网络测量
0 引言
随着时代的发展,人们对生活品质有了更高的要求与更广的追求,这直接体现在网络新业务的不断涌现和日益复杂上,对于这样一个承载着庞大需求的互联网,其运行状态是否能够有条不紊地保持,网络测量与评估方法的研究与发展就显得至关重要。传统IP网络修修补补的缓兵之计使得人们在网络测量技术方面达到了一个瓶颈。新兴的OpenFlow技术正好可以打破网络测量这一瓶颈的突破口。OpenFlow[1][2]是一种控制和转发分离的新型架构,并被许多人视为“推倒重来的全新设计”理论的先驱。它将控制逻辑从网络设备盒子中引出来,供研究者对其进行任意的编程从而实现新型的网络协议、拓扑架构而无需改动网络设备本身,是目前学术界最热门的研究话题之一[3][4]。
在本文中,我们将通过搭建Mininet与Floodlight的实验环境作为OpenFlow协议的仿真平台,以X形拓扑为测量对象,分别引入Mininet中的随机流量模型与概率模型,实现路径损耗率、网络时延以及带宽的测量。
1 实验测量方案
为了相对准确地测出各个网络状态的参数,考虑尽可能减少复杂结构带来的影响,我们创建一个较为通用的X形拓扑,其中包含两台交换机和四台主机,结构如图1所示。并向该拓扑导入随机流量模型和概率模型,如图2和图3所示。
图1 用于网络测量的X形拓扑
图2 随机流量模型的引入
图3 概率模型的引入
2 路径损耗率的测量
我们根据两种流量模型下主机与服务器匹配后确定的总链路,如h1向h2发送数据包,然后通过Floodlight控制器来计算s3与s4之间的路径损耗速率。Floodlight控制器向s3和s4发送端口状态改变请求,当接收到来自s3和s4的答复时,将各自的特定流的数据包数对应保存在txPackets与rxPackets中,然后计算得出路径损耗率。
在Floodlight中完成路径损耗率模块的添加后,在Mininet中调用path-loss.py文件即可得到图1中的测试拓扑,接着执行“iperfmulti”命令引入随机流量模型,即“iperfmulti 100m 30”设置带宽为100Mbps,测试时长为30S,相对应在Floodlight中得出测试结果,如图4所示:
图4 随机流量模型的路径损耗测量结果
同样地,将上述测试中的“iperfmulti”命令换成“iperfPb”命令引入概率模型,即“iperfPb 100m 30”设置带宽为100Mbps,测试时长为30S,相对应在Floodlight中得出测试结果,实验结果如图5:
图5 概率模型的路径损耗测量结果
从两种流量模型的引入结果可以看出数据传输路径的平均损耗速率均在10%,这与在path-loss.py脚本中设置的s3与s4之间的损耗速率吻合,说明该方案下测量的路劲损耗率数值还是相对准确的。
3 网络时延
通常意义上的网络传输时延测量是指测量报文往返的时延测量,即测量报文从发送方开始发送时计时,接收方在接收到该报文后立即返回给发送方,发送方接收到该测量报文后停止计时,此时发送方所得的时间间隔即为往返时延。网络时延的测量步骤如下[5]:
步骤1:控制器向交换机A发送一个packet_out报文。报文的数据段携带了任意一个约定好的协议报文,其报文的数据段携带了控制器下发报文时的时间戳。packet_out报文的动作指示交换机将其泛洪或者转发到某端口。
步骤2:交换机B收到了交换机A发送过来的数据包,无法匹配对应流表项,从而发送packet_in到控制器。控制器接收到这个数据包之后,和当下时间相减,得到时间差T1。其时间差约等于数据包从控制器到交换机A加上交换机A到交换机B再加上交换机B到控制器的时延。
步骤3:同理,控制器向交换机B发送一个类似的报文。然后控制器从交换机A收到Packet_in报文,记录下时间差T2。T1与T2的和等于控制器到交换机A的往返时延加上控制器到交换机B的往返时延,再加上交换机A到交换机B的往返时延。
步骤4:控制器向交换机A和交换机B分别发送带有时间戳的echo_request。交换机收到之后即刻回复携带echo_request时间戳的echo_reply消息。所以控制器可以通过echo_reply的时间戳减去echo_reply携带的时间,从而得到对应交换机和控制器之间的往返时延。通过这种方法测得控制器到交换机A和交换机B的往返时延分别为Ta,Tb。
步骤5:T1与T2的和减去Ta与Tb的和可以得到交换机A到交换机B的往返时延。假设往返时间一样,则交换机A到交换机B的链路时延为该往返时延的一半。
在Floodlight中添加时延测量模块的代码得到随机流量模型的实验结果和概率模型的实验结果如下:
图6 随机流量模型的时延测量结果
图7 概率模型的时延测量结果
在path-loss.py脚本中设置的单条链路时延理论值为2ms,经过三条链路的往返后理论值的总和为12ms,从图6与图7可以看到在引入随机流量模型与概率模型后,主机与服务器之间匹配的三个链路的往返时延总和的测量结果在9ms到12ms之间,这与总的理论值大体接近,说明该方案下测量的网络时延数值较为可信。
4 带宽测量
带宽数据是网络状态中的重要数据。一般而言,一条链路的带宽是由两个端口的能力决定的。因此可以通过获取端口的流量来得到链路的流量。OpenFlow协议中可以通过统计报文来获取端口、流表、流表项、组表和meter表的统计信息。以端口的统计信息为例,控制器通过周期下发Port statistics消息可以获得交换机端口的统计信息从该统计消息格式中可以获取到收发的包数、字节数以及这个统计持续的时间。此时只要把两个不同时间的统计消息的字节数相减,再除以两个消息的统计时间差则可以得到统计流量速度。如果想得到端口剩余带宽,则可以用端口最大带宽减去当前流量带宽,即可得到该数值。随机流量模型的实验结果和概率模型的实验结果如下所示:
图8 随机流量模型的带宽测量结果
图9 概率模型的带宽测量结果
从图8与图9可以看到,在两种流量模型下,测量得出的带宽结果均为100Mbps左右,这与path-loss.py脚本中设置的带宽理论值相吻合,说明该方案下测量的带宽数值是准确的。
5 总结
在整个OpenFlow网络架构中,Floodlight控制器的决策取决于路径损耗率、时延以及带宽等网络状态。我们搭建X型拓扑的的测量实验环境中,以Floodlight控制器已经添加好的各个模块为测量工具,在Mininet中创建用于本次实验的拓扑脚本,与此同时,设置交换机之间的路径损耗率的理论值为10%,单条链路时延的理论值为2ms,带宽的理论值为100Mbps。接着向该拓扑导入随机流量模型和概率模型,分别通过该拓扑得出路径损耗率、时延以及带宽的测量结果。最后将测量结果与脚本中设置好的理论值进行比较,从而对该实验方案进行可靠性评估。
[1] McKeown N,Software-defined networking.[C].//INFO COM keynote talk/.2009.
[2] MCKEOWN N,ANDERSON T,BALAKRISHNAN H,etal.OpenFlow:enabling innovation in campus network[J]. ACM SIGCOMM Computer Communication Review,/.2008.
[3]Floodlight:aJava.basedOpenFlow Controller.[CP/OL].http://floodlight.openflowhub.org/.2012.
[4] 左青云,陈鸣,赵广松等.基于OpenFlow的SDN技术研究.[J].软件学报,2013.
[5] Thomas D.Nadeau,Ken Gray,毕军,张绍宇,姚广等.软件定义网络:SDN与OpenFlow解析.[M].北京:人民邮电出版社,2014.
本文受国家自然科学基金(61461055,61761049)与云南省高校科技创新团队支持计划资助(通讯作者:李琰)。