zoukankan      html  css  js  c++  java
  • SDN实验2

    第二次sdn实验:

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

    本次使用python脚本fattree生成拓扑,这样方便设置路由器的转发端口号。

    python代码:

    """Custom topology example
    Adding the 'topos' dict with a key/value pair to generate our newly defined
    topology enables one to pass in '--topo=mytopo' from the command line.
    """
    
    from mininet.topo import Topo
    from mininet.net import Mininet
    from mininet.node import RemoteController, CPULimitedHost
    from mininet.link import TCLink
    from mininet.util import dumpNodeConnections
    
    class MyTopo(Topo):
        "Simple topology example."
        def __init__(self):
        	"Create custom topo."
    
            # Initialize topology
            Topo.__init__(self)
            host1 = self.addHost('h1')
            host2 = self.addHost('h2')
            host3 = self.addHost('h3')
            host4 = self.addHost('h4')
            host5 = self.addHost('h5')
            host6 = self.addHost('h6')
    
            switch1 = self.addSwitch('s1')
            switch2 = self.addSwitch('s2')
            self.addLink(host1, switch1, 1, 1)
            self.addLink(host2, switch1, 1, 2)
            self.addLink(host3, switch1, 1, 3)
            self.addLink(switch1, switch2, 4, 4)
            self.addLink(host4, switch2, 1, 1)
            self.addLink(host5, switch2, 1, 2)
            self.addLink(host6, switch2, 1, 3)
    topos = {'mytopo': (lambda: MyTopo())}
    

    运行以及端口连接展示:

    2.直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义。(需要再开启一个终端进行操作)

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

    ①使用如下OVS命令实现s1接收从h1、h2和h3传来的包,并从端口4发出

    sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096>vlan_vid,output:4//将h1进入s1的包打上vlan tag,从端口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//将h2进入s1的包打上vlan tag,从端口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//将h3进入s1的包打上vlan tag,从端口4发出
    

    ②使用如下OVS命令实现s2接收从h4、h5和h6传来的包,并从端口4发出

    sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096>vlan_vid,output:4//将h4进入s2的包打上vlan tag,从端口4发出
    sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097>vlan_vid,output:4//将h5进入s2的包打上vlan tag,从端口4发出
    sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098>vlan_vid,output:4//将h6进入s2的包打上vlan tag,从端口4发出
    

    ③使用如下OVS命令实现s1接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3

    sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=0,actions=pop_vlan,output:1
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口1
    sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=1,actions=pop_vlan,output:2
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口2
    sudo ovsofctlOOpenFlow13addflows1priority=1,dl_vlan=2,actions=pop_vlan,output:3
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口3
    

    ④使用如下OVS命令实现s2接收从端口4传来的包,并从端口1、2、3分别发给h1、h2、h3

    sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=0,actions=pop_vlan,output:1
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口1
    sudoovsofctlOOpenFlow13addflows2priority=1,dl_vlan=1,actions=pop_vlan,output:2
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口2
    sudo ovsofctlOOpenFlow13addflows2priority=1,dl_vlan=2,actions=pop_vlan,output:3
    //将从端口4的包去除vlan tag, 并根据tag进行转发端口3
    

    终端输入:

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

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

    5.利用Wireshark抓包,分析验证特定报文 。(此处应该选择转换器的第四个端口)

  • 相关阅读:
    Best Time to Buy and Sell Stock III
    Valid Palindrome
    Longest Substring Without Repeating Characters
    Copy List with Random Pointer
    Add Two Numbers
    Recover Binary Search Tree
    Anagrams
    ZigZag Conversion
    Merge k Sorted Lists
    Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/highwaytohell/p/11830463.html
Copyright © 2011-2022 走看看