• 2019 SDN上机第2次作业


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

    可以使用miniedit创建相关拓扑也可以使用python代码编写拓扑的方式创建相关拓扑,本次采用miniedit

    端口连接情况如下(注意连线顺序):

    2. 直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义

    使用以下命令可以实现为主机1、2、3发送的报文分别打上不同的vlan_id并从交换机s1端口4发送出去

    add-flow需要注意的参数为 协议(OpenFlow13)、交换机(s1)、进端口(in_port)、对匹配报文执行的操作(actions=)、在报文外层压入一层vlan tag(push_vlan)、设置VLAN ID(set field值为4096+vlan_id)、出端口(output)
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=1,actions=push_vlan:0x8100,set_field:4097->vlan_vid,output:4//将交换机s1从端口1收到的报文打上vid = 1 的vlantag并从端口4发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=2,actions=push_vlan:0x8100,set_field:4098->vlan_vid,output:4//将交换机s1从端口2收到的报文打上vid = 2 的vlantag并从端口4发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=3,actions=push_vlan:0x8100,set_field:4099->vlan_vid,output:4//将交换机s1从端口3收到的报文打上vid = 3 的vlantag并从端口4发送出去
    

    使用以下命令可以实现为交换机s1从端口4收到的报文执行拆vlan_id操作并发送给对应的主机

    add-flow需要注意的参数为 协议(OpenFlow13)、进端口(in_port)、匹配VLAN ID(dl_vlan)、对匹配报文执行的操作(actions=)、拆除vlan(strip_vlan)、出端口(output)
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=1,actions=strip_vlan,output:1//将s1从端口4收到的vlan_id=1的报文拆除vlan_tag并从端口1发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=2,actions=strip_vlan,output:2//将s1从端口4收到的vlan_id=2的报文拆除vlan_tag并从端口2发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=4,dl_vlan=3,actions=strip_vlan,output:3//将s1从端口4收到的vlan_id=3的报文拆除vlan_tag并从端口3发送出去
    

    使用以下命令可以实现为主机4、5、6发送的报文分别打上不同的vlan_id并从交换机s2端口4发送出去

    add-flow需要注意的参数为 协议(OpenFlow13)、交换机(s2)、进端口(in_port)、对匹配报文执行的操作(actions=)、在报文外层压入一层vlan tag(push_vlan)、设置VLAN ID(set field值为4096+vlan_id)、出端口(output)
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=1,actions=push_vlan:0x8100,set_field:4097->vlan_vid,output:4//将交换机s2从端口1收到的报文打上vid = 1 的vlantag并从端口4发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=2,actions=push_vlan:0x8100,set_field:4098->vlan_vid,output:4//将交换机s2从端口2收到的报文打上vid = 2 的vlantag并从端口4发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=3,actions=push_vlan:0x8100,set_field:4099->vlan_vid,output:4//将交换机s2从端口3收到的报文打上vid = 3 的vlantag并从端口4发送出去
    

    使用以下命令可以实现为交换机s2从端口4收到的报文执行拆vlan_id操作并发送给对应的主机

    add-flow需要注意的参数为 协议(OpenFlow13)、进端口(in_port)、匹配VLAN ID(dl_vlan)、对匹配报文执行的操作(actions=)、拆除vlan(strip_vlan)、出端口(output)
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=1,actions=strip_vlan,output:1//将s2从端口4收到的vlan_id=1的报文拆除vlan_tag并从端口1发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=2,actions=strip_vlan,output:2//将s2从端口4收到的vlan_id=2的报文拆除vlan_tag并从端口2发送出去
    sudo ovs-ofctl add-flow -O OpenFlow13 s2 in_port=4,dl_vlan=3,actions=strip_vlan,output:3//将s2从端口4收到的vlan_id=3的报文拆除vlan_tag并从端口3发送出去
    

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


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

    5. 利用Wireshark抓包,分析验证特定报文

    抓取eth4端口报文,得到如下报文信息

    我们主要关注链路层的报文,这里的链路层报文是802.1q,注意观察他的vlan字段,如果观察所有报文的话就会发现,只有vlan_id相等才能实现主机间的交流(图中仅展出一例,是主机2和主机5的交互报文)

  • 相关阅读:
    java线程简要
    Unable to find explicit activity class
    用NetBeans生成jar文件
    Linux下三个可以修改环境变量的地方
    linux定时执行shell脚本
    sql server 性能调优之 SQL语句阻塞查询
    sql server 性能调优之 死锁排查
    IObit Advanced SystemCare 系统清理优化工具
    IDEA配置Maven
    maven的生命周期及常用命令的使用
  • 原文地址:https://www.cnblogs.com/fzu-lzh/p/11831218.html
Copyright © 2020-2023  润新知