Невозможно добавить поток между двумя подсетями с помощью переключателей (мин. inet). - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь пропинговать между двумя подсетями, которые подключены через разные коммутаторы, это трехуровневая топология, и s2 запрограммирован как мост, поэтому он может маршрутизировать трафик c в другую сеть (все маршруты добавлены).

Мой код и топология следующие, пожалуйста, сообщите, что я делаю неправильно?

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
from mininet.node import RemoteController,OVSKernelSwitch
from mininet.cli import CLI



def topology():
    fnss_topo = fnss.three_tier_topology(n_core=1, n_aggregation=1, n_edge=2, n_hosts=1)

    fnss.set_capacities_constant(fnss_topo, 10, 'Mbps')
    fnss.set_delays_constant(fnss_topo, 2, 'ms')
    fnss.set_buffer_sizes_constant(fnss_topo, 50, 'packets')
    mn_topo = fnss.to_mininet(fnss_topo, relabel_nodes=True)
    net = Mininet(topo=mn_topo, link=TCLink, controller=RemoteController,switch=OVSKernelSwitch)
    c1 = net.addController('c1',controller=RemoteController,ip='127.0.0.1',port = 6633)  

        # Add hosts and switches
    h1,h2 = net.get('h1','h2')
    s1,s2,s3,s4 = net.get('s1','s2','s3','s4')

    h1.setIP('10.0.1.10/24')
    h1.setMAC('00:00:00:00:00:01')
    h2.setIP('10.0.2.20/24')
    h2.setMAC('00:00:00:00:00:04')
    net.start()


    s2.cmd('ovs-vsctl set Bridge s2')
    s2.cmd("ifconfig s2-eth1 0")
    s2.cmd("ifconfig s2-eth3 0")
    s2.cmd("ifconfig s2-eth1 hw ether 00:00:00:00:01:01")
    s2.cmd("ifconfig s2-eth3 hw ether 00:00:00:00:01:02")

    s2.cmd("ovs-ofctl add-flow s2 priority=1000,in_port=1,actions=output:3")
    s2.cmd("ovs-ofctl add-flow s2 priority=1000,in_port=3,actions=output:1")
    s2.cmd("ip addr add 10.0.1.1/24 brd + dev s2-eth1")
    s2.cmd("ip addr add 10.0.2.1/24 brd + dev s2-eth3")
    s2.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")

    h1.cmd("ip route add default via 10.0.1.1")
    h2.cmd("ip route add default via 10.0.2.1")
    s3.cmd("ovs-ofctl add-flow s3 priority=1,arp,actions=flood")
    s3.cmd("ovs-ofctl add-flow s3 priority=65535,ip,dl_dst=00:00:00:00:01:01,actions=output:1")
    s3.cmd("ovs-ofctl add-flow s3 priority=10,ip,nw_dst=10.0.1.0/24,actions=output:2")
    s4.cmd("ovs-ofctl add-flow s4 priority=1,arp,actions=flood")
    s4.cmd("ovs-ofctl add-flow s4 priority=65535,ip,dl_dst=00:00:00:00:01:02,actions=output:1")
    s4.cmd("ovs-ofctl add-flow s4 priority=10,ip,nw_dst=10.0.2.0/24,actions=output:2")
    print "*** Running CLI"
    CLI( net )
    print "*** Stopping network"
    net.stop() 
              |switch| s1
                 |
              |switch|   s2
               /  \

       s3  |switch|  |switch|  s4
             |          |
           |Host|    |Host|
...