Я пытаюсь заставить узлы в этой топологии пинговать друг друга, но я получаю «Целевой узел недоступен». Я полагаю, что это может быть проблема цикличности из-за количества трафика, который, кажется, проходил через интерфейсы (как сообщает ifconfig), но я не смог найти как , чтобы исправить это должным образом (или достаточно точно) ). Указатели приветствуются!
Это топология, которую я хочу достичь:
![Desired topology][1](https://i.stack.imgur.com/NiY2v.png)
Вот скрипт, который я использую:
#!/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