2019 SDN上机第2次作业

倾然丶 夕夏残阳落幕 提交于 2019-12-03 23:48:44

1.作业要求:

  • 利用mininet创建给定的拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,并给出拓扑Mininet执行结果,展示端口连接情况
  • 直接在Open vSwitch下发流表,实现给定的连通性要求,并逐条说明所下发的流表含义
  • 直接在Open vSwitch查看流表,提交OVS命令执行结果
  • 提交主机连通性测试结果,验证流表的有效性
  • 利用Wireshark抓包,分析验证特定报文
  • 作业博客链接:https://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/9925

2.具体操作步骤与截图说明:

实验环境:VMware Workstation Pro14.1、ubuntu-16.04

(1)利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,给出拓扑Mininet执行结果,展示端口连接情况:

  • 给定的拓扑结构如下所示:

  • 操作步骤:

    a.利用可视化工具miniedit搭建如下拓扑结构:

​ b.进入edit->preferences,勾选OpenFlow1.3和start CLI两个功能项:

​ c.点击Run按钮,运行网络,并使用net命令查看网络拓扑:

​ 通过使用net命令,我们可以从网络拓扑结构中看出交换机s1的端口4与交换机s2的端口1相连接;主机h1、h2、h3分别与交换机s1的端口1、端口2、端口3相连;主机h4、h5、h6分别与交换机s2的端口2、端口3、端口4相连。

​ d.使用pingall命令进行连通性测试:

(2)在Open vSwitch下发流表,实现如下连通性要求,逐条说明所下发的流表含义:

  • h1 -- h4互通
  • h2 -- h5互通
  • h3 -- h6互通
  • 其余主机不通

a.将主机h1、h2、h3发送给交换机s1的数据包打上不同的vlan tag,并从s1的端口4向交换机s2转发:

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4
//输入端口为s1的1端口,输出端口为s1的4端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4
//输入端口为s1的2端口,输出端口为s1的4端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4
//输入端口为s1的3端口,输出端口为s1的4端口;

b.将发送给交换机s1端口4的数据包去除vlan tag,并根据不同的标签发送给相对应的主机:

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=2,actions=pop_vlan,output:3

c.将主机h4、h5、h6发送给交换机s2的数据包打上不同的vlan tag,并从s2的端口1向交换机s1转发:

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:1
//输入端口为s2的2端口,输出端口为s2的1端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:1
//输入端口为s2的3端口,输出端口为s2的1端口;
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=4,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:1
//输入端口为s2的4端口,输出端口为s2的1端口;

d.将发送给交换机s2端口1的数据包去除vlan tag,并根据不同的标签发送给相对应的主机:

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:3
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=2,actions=pop_vlan,output:4

完整实验过程的截图如下所示:

参考链接:https://blog.csdn.net/rocson001/article/details/73163041

(3)直接在Open vSwitch查看流表,提交OVS命令执行结果:

a.查看交换机s1的流表:

sudo ovs-ofctl -O OpenFlow13 dump-flows s1

提交OVS命令执行结果如下所示:

b.查看交换机s2的流表:

sudo ovs-ofctl -O OpenFlow13 dump-flows s2

提交OVS命令执行结果如下所示:

(4)提交主机连通性测试结果,验证流表的有效性:

通过pingall命令查看主机连通性,测试结果如下所示:

​ 从主机连通性测试结果中可以看出,主机h1只能与主机h4ping通,主机h2只能与主机h5ping通,主机h3只能与主机h6ping通,其余主机ping不通,从而验证了流表的有效性。

(5)利用Wireshark抓包,分析验证特定报文:

a.启动wireshark:

sudo wireshark

b.启动wireshark之后执行pingall命令,然后在wireshark中进行报文抓取,可通过过滤器选中ICMP报文,查看主机间的通信信息:

3.实验总结:

​ 通过这次实验,我熟悉了Open vSwitch这一工具的使用,了解了如何通过一些常用的OVS命令来下发流表和查看流表,如何检测主机的连通性测试效果以及如何利用Wireshark抓包,分析验证特定报文,有了不少的收获!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!