您的位置:首页 > 其它

基于流表项删除的测试与分析

2015-10-28 12:43 239 查看
一测试目的
本测试的目的是为了得知在运行openflow协议的SDN网络中,交换机上的流表项的生存时间问题,即流表项被生成后在流表中持续时间的问题。我们知道流表项中的timeout字段为流表项维护了最大空闲时间(idle_timeout),也就是一条流表项不再匹配数据包时能够持续的最大时间。那么这个idle_timeout的默认值是多少,当这个时间计数器结束后流表项是否被删除,以及能否手动配置这个时间字段是本测试的主要目的。
二分析方法
可以通过软件实现本次测试。Floodlight是一个SDN控制器,可以获取数据层的链路以及流信息。Mininet是一个软件虚拟化平台,可以用来模拟SDN中的网络拓扑,可以灵活地构件自定义的网络拓扑,并连接到控制器,形成一个SDN网络环境。OpenvSwitch(OVS)是一个虚拟交换机,支持Openflow协议,在其上可以灵活地进行配置,比如增加或者删除一条流表项等,并可以通过控制器来远程获取交换机上的数据信息。因此本次实验就是基于以上的虚拟化平台进行的。
三过程与结果
3.1Floodlight+Mininet实验
3.1.1实验目的:本实验的目的是为了得到idle_timeout的默认值,并且通过实验观察该计数器结束后,流表项是否被删除。
3.1.2实验过程

在mininet环境下创建一个depth=3,fanout=2的树形拓扑结构,如下图所示



图3-1-1拓扑环境建立图

首先,在网络初始时,通过控制器的RESTAPI查看当前所有交换机中的流信息,入下所示:



图3-1-2

可以看到,网络中的7台交换机都是没有流数据的。

接下来,对主机h1和h5进行ping连接,:





图3-1-3主机h1和h2PING连接图
此时立即通过控制器的RESTAPI查看当前所有的交换机中的流信息:



图3-1-4当前所有交换机中流信息显示
接下来断开PING连接,立即查看控制器的web端口所显示的数据,通过反复的刷新界面,以及重复实验,发现在平均5s之后,流表数据完全被删除。



图3-1-5约5s后所有交换机中流信息显示

3.2Floodlight+OVS实验
3.2.1实验目的:
在OVS上新建流表项,并设置好这些流表的idle_timeout时间,并在Floodlight控制器提供的web端口上观察流表信息,验证idle_timeout时间结束以后这些流表是否结束。

3.2.2实验过程:
1)实验环境搭建:
在640服务器上安装OVS和Floodlight控制器,并由Floodlight实现对OVS的控制。查看目前OVS上的配置信息(Floodlight所在的服务器的ip为:10.103.24.66;网桥BYOD的IP为:10.103.26.148)






图3-2-1网桥BYOD的配置信息

2)在OVS上添加流表项:
在OVS上可以手动添加流表项,并且自定义流表项的字段信息。为了实验验证,主要对idle_timeout字段进行配置。

2.1首先添加一条流表项,而不配置其idle_timeout字段,发现这条流表项会一直存在于流表中而不被删除。如下所示:
添加一条流表项“priority=1,in_port=12,actions=output:1”



图3-2-2添加一条流表项
通过Floodlight提供的RESTAPI,获取流表信息,如下:
{"00:00:b8:2a:72:d1:a1:bd":{"flows":[{"version":"OF_10","cookie":"0","tableId":"0x0","packetCount":"0","byteCount":"0","durationSeconds":"1077","priority":"1","idleTimeoutSec":"0","hardTimeoutSec":"0","match":{"in_port":"12"},"actions":{"output":"1"}}]}}
发现这条流表项的默认idletime被设置为0,当下的持续存在时间为:1077s,并且这条流会一直存在而不被删除。

2.2添加两条流表项,配置其idle_timeout分别为10s和20s。过程如下:
添加一条流表项“priority=1,in_port=12,actions=output:1”
添加一条流表项“priority=1,in_port=12,idle_time=20,actions=output:1”



图3-2-3添加一条流表项
在添加流表项之前,通过FloodlightRESTAPI得到的流表集合信息如下:
{"00:00:b8:2a:72:d1:a1:bd":{"flows":[]}}

说明此时网络中没有流表项。

在添加完以上两条流表以后,可以看到Floodlight的RESTAPI上的流表集合为:
{"00:00:b8:2a:72:d1:a1:bd":{"flows":[{"version":"OF_10","cookie":"0","tableId":"0x0","packetCount":"0","byteCount":"0","durationSeconds":"2","priority":"1","idleTimeoutSec":"10","hardTimeoutSec":"0","match":{"in_port":"12"},"actions":{"output":"1"}},{"version":"OF_10","cookie":"0","tableId":"0x0","packetCount":"0","byteCount":"0","durationSeconds":"1","priority":"1","idleTimeoutSec":"20","hardTimeoutSec":"0","match":{"in_port":"11"},"actions":{"output":"1"}}]}}


在10s过后,流表集合的信息如下:

{"00:00:b8:2a:72:d1:a1:bd":{"flows":[{"version":"OF_10","cookie":"0","tableId":"0x0","packetCount":"0","byteCount":"0","durationSeconds":"11","priority":"1","idleTimeoutSec":"20","hardTimeoutSec":"0","match":{"in_port":"11"},"actions":{"output":"1"}}]}}


20s过后,信息如下:

{"00:00:b8:2a:72:d1:a1:bd":{"flows":[]}}

这说明,在idle_timeout计数结束之后,这条流表项就会被删除。


四分析与结论
通过以上的实验,可以发现。在Floodlight和mininet实验结果中发现默认的idle_timeout字段的值为5s,并且这个计数器结束后,流表项即刻被删除。在Floodlight和OVS的实验结果中,可以发现OVS可以手动配置流表项的idle_timeout字段,并且该字段维护的时间结束后,流表项即刻被删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: