Пакеты падают - сеть треугольника топо - PullRequest
1 голос
/ 18 апреля 2020

Предполагается, что этот код воссоздает сеть, показанную на прилагаемой диаграмме, однако, когда я запускаю команду 'pingall', это результат:

r1 -> X r3 XXX

r2 -> r1 r3 XXX

r3 -> r1 XXXX

h1 -> r1 X r3 XX

h2 -> r1 X r3 XX

h3 -> r1 X r3 XX

*** Результаты: 66% отброшено (получено 10/30)

Почему отбрасывается большинство моих пакетов? Я считаю, что все ссылки и маршрутизация верны, но, возможно, я что-то неправильно понял, любая помощь будет принята с благодарностью!

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( controller=Controller, topo=None, build=False, ipBase='0.0.0.0/0')
    net.addController('c0')

    # Add routers
    info( '*** Add routers\n')
    r1 = net.addHost('r1', cls=Node, ip='0.0.0.0')
    r1.cmd('sysctl -w net.ipv4.ip_forward=1')
    r2 = net.addHost('r2', cls=Node, ip='0.0.0.0')
    r2.cmd('sysctl -w net.ipv4.ip_forward=1')
    r3 = net.addHost('r3', cls=Node, ip='0.0.0.0')
    r3.cmd('sysctl -w net.ipv4.ip_forward=1')

    # Add hosts
    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.1.1/24', defaultRoute='via 10.1.1.3')
    h2 = net.addHost('h2', cls=Host, ip='10.0.2.1/24', defaultRoute='via 10.1.2.6')
    h3 = net.addHost('h3', cls=Host, ip='10.0.3.1/24', defaultRoute='via 10.1.3.27')

    # Add Links
    info( '*** Add links\n')
    net.addLink(h1, r1)
    net.addLink(h2, r2)
    net.addLink(h3, r3)
    net.addLink(r1, r2)
    net.addLink(r1, r3)
    net.addLink(r2, r3)

    # Start the network
    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    # Set IP addresses on router interfaces
    info( '*** Post configure switches and hosts\n')

    r1.cmd('ifconfig r1-eth0 inet 10.1.1.3 netmask 255.255.255.0')
    r1.cmd('ifconfig r1-eth1 inet 10.1.7.2 netmask 255.255.255.0')
    r1.cmd('ifconfig r1-eth2 inet 10.1.9.2 netmask 255.255.255.0')
    r2.cmd('ifconfig r2-eth0 inet 10.1.3.27 netmask 255.255.255.0')
    r2.cmd('ifconfig r2-eth1 inet 10.1.7.1 netmask 255.255.255.0')
    r2.cmd('ifconfig r2-eth2 inet 10.1.8.2 netmask 255.255.255.0')
    r3.cmd('ifconfig r3-eth0 inet 10.1.2.6 netmask 255.255.255.0')
    r3.cmd('ifconfig r3-eth1 inet 10.1.9.1 netmask 255.255.255.0')
    r3.cmd('ifconfig r3-eth2 inet 10.1.9.2 netmask 255.255.255.0')

    info( '*** Adding static routes\n')
    r1.cmd('ip route add 10.1.9.1/24 via 10.1.9.2 dev r1-eth1')
    r1.cmd('ip route add 10.1.7.1/24 via 10.1.7.2 dev r1-eth2')
    r3.cmd('ip route add 10.1.9.2/24 via 10.1.9.1 dev r3-eth0')
    r3.cmd('ip route add 10.1.8.2/24 via 10.1.8.1 dev r3-eth1')
    r2.cmd('ip route add 10.1.7.2/24 via 10.1.7.1 dev r2-eth0')
    r2.cmd('ip route add 10.1.8.1/24 via 10.1.8.2 dev r2-eth1')

    # Run CLI
    CLI(net)

    # Shutdown the topology when user exits the CLI
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

enter image description here

...