Заставить ping работать в этой настраиваемой топологии мининетов (проблема с циклизацией?) - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь заставить узлы в этой топологии пинговать друг друга, но я получаю «Целевой узел недоступен». Я полагаю, что это может быть проблема цикличности из-за количества трафика, который, кажется, проходил через интерфейсы (как сообщает ifconfig), но я не смог найти как , чтобы исправить это должным образом (или достаточно точно) ). Указатели приветствуются!

Это топология, которую я хочу достичь: 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 до 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)

Этот интерфейс получил ping-пакеты стоимостью 232 МБ, что немного больше, поэтому я полагаю, что сеть переполнена из-за проблемы с циркуляцией, которая может быть вызвана тем, что сеть сильно подключена.

Упрощение топологии сети путем комментирования некоторых ссылок устраняет проблему и, кажется, подтверждает, что проблема заключается в цикличности:

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 для обработки такого рода маршрутизации? Пример будет очень кстати.

Спасибо за вашу помощь, Ioanna

...