使ping在此自定义微型网络拓扑中起作用(圆形性问题?)

时间:2019-03-24 19:55:10

标签: python networking mininet

我正在尝试使此拓扑内的主机相互ping通,但出现“目标主机不可达”。我相信这可能是一个循环性问题,因为似乎有大量流量通过接口流动(如ifconfig报告的那样),但我找不到正确解决(或精确地)解决问题的 how 足够)。欢迎指针!

这是我要实现的拓扑: Desired topology][1

这是我使用的脚本:

#!/usr/bin/python.

from mininet.net import Mininet
from mininet.node import Node
from mininet.link import Link
from mininet.log import setLogLevel, info
from mininet.cli import CLI
#from mininet.link import TCLink


class DC:
    def __init__(self, net, dc_id, host_count):
        self.hosts = []
        self.switch = net.addSwitch('sd%d' % dc_id)
        for i in range(host_count):
            h = net.addHost('h%d_%d' % (dc_id, i))
            net.addLink(h, self.switch)
            self.hosts.append(h)



if __name__ == '__main__':
    setLogLevel('info')
    info('*** Test\n')
    # Mininet.init()
    net = Mininet() #link=TCLink)
    dc0 = DC(net, 0, 3)
    dc1 = DC(net, 1, 3)
    dc2 = DC(net, 2, 3)

    bss0 = net.addSwitch('bss0')
    bss1 = net.addSwitch('bss1')

    net.addLink(bss0, dc0.switch)#, delay='5ms')
    net.addLink(bss0, dc1.switch)#, delay='10ms')
    net.addLink(bss0, dc2.switch)#, delay='15ms')
    net.addLink(bss1, dc0.switch)#, delay='15ms')
    net.addLink(bss1, dc1.switch)#, delay='10ms')
    net.addLink(bss1, dc2.switch)#, delay='5ms')

    cc0 = net.addHost('cc0')
    net.addLink(bss0, cc0)

    cc1 = net.addHost('cc1')
    net.addLink(bss1, cc1)

    c0 = net.addController('cm0')

    net.start()
    # print h1.cmd('ping -c1', h2.IP())
    CLI(net)
    net.stop()

运行脚本时,我无法从cc0 ping到h0_0:

mininet> cc0 ping h0_0
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
From 10.0.0.10 icmp_seq=10 Destination Host Unreachable

关于为什么我认为这可能是一个循环性问题:

mininet> cc0 ifconfig
cc0-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.10  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::3c21:40ff:febc:452e  prefixlen 64  scopeid 0x20<link>
        ether 3e:21:40:bc:45:2e  txqueuelen 1000  (Ethernet)
        RX packets 2974099  bytes 232235782 (232.2 MB)

该接口收到了232 MB的ping数据包,这有点儿多了,所以我认为网络是由于圆形性问题而泛滥的,该问题可能是由于网络高度连接这一事实造成的。

通过注释掉一些链接来简化网络拓扑可以解决此问题,并且似乎可以确认问题出在循环中:

net.addLink(bss0, dc0.switch)#, delay='5ms')
# net.addLink(bss0, dc1.switch)#, delay='10ms')
# net.addLink(bss0, dc2.switch)#, delay='15ms')
# net.addLink(bss1, dc0.switch)#, delay='15ms')
net.addLink(bss1, dc1.switch)#, delay='10ms')
net.addLink(bss1, dc2.switch)#, delay='5ms')

仍然,我想保留这些多个链接和拓扑。 Mininet中处理此类路由的首选方法是什么?一个例子将是最受欢迎的。

感谢您的帮助, 约安娜

0 个答案:

没有答案