zoukankan      html  css  js  c++  java
  • 2019 SDN上机第2次作业

    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抓包,分析验证特定报文,有了不少的收获!

  • 相关阅读:
    Good Subarrays(思维)
    Just h-index(主席树裸题)
    强联通入门
    Fragrant numbers(dfs爆搜+区间dp+stoi)
    Mr. Panda and Kakin (RSA 解密+解同余方程+O(1)快速乘)
    Balance of the Force (枚举+线段树+二分图)
    2019 ICPC上海站K.Color Graph
    Wi Know (思维+线段树)
    Linux zookeeper 安装
    javaBIO
  • 原文地址:https://www.cnblogs.com/chenyoukun/p/11811834.html
Copyright © 2011-2022 走看看