一、Several Utilities

OpenFlow Tutorial VM 中预装了一些OpenFlow特性的工具和一般通用网络的工具。

1、Openflow Controller:处于Openflow南向接口上层。Controller又称NOS(Network Operating Systems),是SDN架构中十分重要的一层,用于支持控制逻辑在高层制定的策略的基础上配置网络。在后面会NOX、Beacon等平台上编写自己的Controller。

2、OpenFlow Switch:处于OpenFlow接口之下。

3、ovs-ofctl:命令行工具,用于快捷地发送Openflow消息,在查看交换机端口、查看流量统计和手动插入流表项方面十分有用。

4、wireshark。

5、iperf:通用命令行工具,用于测试单个TCP连接的速度。

6、mininet:网络仿真平台,用于搭建OpenFlow网络(controller,switches,hosts and links)。

7、cbench:性能测试工具。

二、搭建网络:

1、拓扑:

在SSH terminal中输入:   $ sudo mn --topo single,3 --mac --switch ovsk --controller remote

通过该命令,在mininet中建立起如图拓扑,并使其MAC地址与IP地址相同(用IP地址主机号设置MAC地址),并使用远端Controller。

三、Ping Test

1、在mininet提示符后输入:h1 ping -c3 h2

发现不能ping通。因为此时switch的流表是空的,ping命令的数据包到达switch时发现没有匹配项,需要用packet-in数据包上传至controller,由于controller决定其处理策略,而此时switch还没有连接到controller,故无法ping通。

2、使用ovs-ofctl手动添加流表项:

再打开一个SSH terminal,同样连接到VM,在其中输入命令:

# sudo ovs-ofctl add-flow s1 in_port=1,actions=output:2

# sudo ovs-ofctl add-flow s1 in_port=2,actions=output:1

查看switch流表项,输入命令:# sudo ovs-ofctl dump-flows s1

3、再次使用ping命令,能够ping通:

四、启动Wireshark:

在SSH terminal中输入:sudo wireshark & 启动。(确保主机系统GUI与ubuntu14.04兼容,ubuntu18.04不能正常使用)

五、启动控制器并抓包:

1、在wireshark中选择loopback接口为监听接口,并在过滤器中输入过滤规则:"openflow_v1"。

2、在SSH terminal中输入命令:sudo controller ptcp:  启动一个类似具有学习能力的交换机的controller。

各种数据包的类型如下:

六、观察ping命令的openflow数据包:

1、首先修改过滤规则,忽略掉用于保持Switch和Controller之间连接活性的echo-request/reply数据包。

从上图中可以得到过滤规则:openflow_v1 && openflow_1_0.type!=2 && openflow_1_0.type!=3

2、为了观察ping命令的openflow数据包,需删掉之前添加的流表项,之外还建议删掉host上的ARP cache。

在SSH terminal中输入:sudo ovs-ofctl del-flow s1

在mininet terminal中输入:

  h1 ip -s -s neigh flush all

  h2 ip -s -s neigh flush all

3、再次执行ping命令,发现可以ping通,且Wireshark捕获到相关openflow数据包。

No.623:一个ARP请求在流表中失配,产生一个目的地址为广播地址的Packet-In数据包。

No.624:由ARP miss产生的一个广播Packet-Out数据包,用于查找相应IP地址主机的MAC地址。

No.626:当相应IP地址接收到广播Packet-Out数据包时,向源MAC地址返回一个点播告诉其自己的MAC地址。

No.627:Controller一个Flow-Mod数据包给Switch,在Switch的流表中添加一个特定数据流的流表项。

No.628:ping命令发送ICMP(Internet Control Message Protocol)数据包,Switch流表中无匹配项,因而通过Packet-In数据包上传至Controller。

No.629:将流表项添加到switch的流表中。

No.630:从h2返回的ICMP数据包,Switch流表中无匹配项,因而通过Packet-In数据包上传至Controller。

No.631:将流表项添加到switch的流表中。

其后数据包从序号和时间戳来看,应该不是本次ping命令产生的数据包。

ping命令发送三次ICMP数据包,后两次因为switch的流表中已有相应匹配项,因而不会产生Openflow数据包。

一定时间后流表项会超时作废。

该实验中这种使用Openflow的方式称为reactive mode(响应模式);还有一种在数据包到达switch之前就下发流表项的模式称为proactive mode(主动模式),这种模式可以避免swtich到controller之间的一个往返时间延迟(round-trip time)和添加流表项的时间。

    

图中各种数据包类型如下图解释:

七、Benchmark Controller w/iperf (衡量、检测)

1、iperf是用来检测两个主机间速度的命令行工具。

该命令在一个主机上运行一个iperf TCP server,在另一个主机上运行一个iperf client,建立连接以后双方相互发送大量数据包(blast packets)并报告结果。

2、与user-space switch比较:

关闭之前的拓扑,新建使用user-space switch的拓扑:

输入命令:sudo mn --topo single,3 --controller remote --switch user

运行iperf:

可以发送数据传输的速率慢了很多。因为使用user-space switch时,数据包在每一跳都需要从user-space进入kernel-space,再从kernel-space回到user-space,而不是在kernel-space中进行传输。user-space switch更容易修改,但是慢很多。

OpenFlow_tutorial_3_Learn_Development_Tools的更多相关文章

随机推荐

  1. leetcode 400 Add to List 400. Nth Digit

    Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note:n is ...

  2. jqplot配置参考

    jqPlot整的来说有三个地方需要配置.格式如:    $.jqplot(‘target’, data, options);target:要显示的位置.data:显示的数据.options:其它配置 ...

  3. sql 指删除表,改表名,改字段名

    删除表: DECLARE @Table NVARCHAR(30) DECLARE tmpCur CURSOR FOR SELECT name FROM sys.objects WHERE TYPE=' ...

  4. SDL2:封装媒体显示播放Csdl2

    Github https://github.com/gongluck/SDL2-study/tree/master/Csdl2 Csdl2.h #ifndef __CSDL2_H__ #define ...

  5. Tomcat闪退的解决办法

    1 首先考虑的是端口占用 2 现在讲的是这一种方法 (1)找到解压缩的文件的bin目录 找到startup.bat 记事本打开 开头加上两句话 SET JAVA_HOME=C:\Program Fil ...

  6. bzoj 3930: [CQOI2015]选数【快速幂+容斥】

    参考:https://www.cnblogs.com/iwtwiioi/p/4986316.html 注意区间长度为1e5级别. 则假设n个数不全相同,那么他们的gcd小于最大数-最小数,证明:则gc ...

  7. React 事件 传参

    绑定事件用 bind方法,第一个参数是 this,第二个参数是需要传入的值如下: <a onClick={this.updateLabel.bind(this,'参数1','参数2')} > ...

  8. [CF997E] Good SubSegment

    Description Transmission Gate 给你一个长度为n的排列P,定义一段子区间是好的,当且仅当这个子区间内的值构成了连续的一段.例如对于排列\(\{1,3,2\}\),\([1, ...

  9. [CTSC2000]丘比特的烦恼

    Description 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是 ...

  10. TCP/IP网络协议基础

    实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...