Использование метода addHost() в Python API Mininet

У меня возникают проблемы с подключением при добавлении хостов в топологию путем вызова метода addHost() в Mininet. Хосты не могут пропинговать друг друга или какой-либо внешний IP-адрес (через NAT). Простым примером того, что я пытаюсь сделать, будет следующее:

from mininet.net import Mininet
from mininet.cli import CLI

net = Mininet()
h1 = net.addHost('h1')
h2 = net.addHost('h2')
s1 = net.addSwitch('s1')

net.addLink(s1,h1)
net.addLink(s1,h2)
net.addNAT().configDefault()
net.build()

CLI(net)  

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

Изменить: я должен отметить, что я использую Mininet 2.2.1 внутри предоставленного образа виртуальной машины.


person user2149890    schedule 03.11.2016    source источник


Ответы (2)


изменить порядок net.addLink(s1,h1) на net.addLink( h1, s1 ) сначала хост, чем коммутатор, API среднего уровня: Сетевой объект

person Ari Gold    schedule 03.11.2016
comment
Я изменил порядок, но хосты по-прежнему не могут подключиться друг к другу. - person user2149890; 03.11.2016
comment
есть еще отсутствующие аргументы, проверьте, пожалуйста, «как подключить разные коммутаторы к разным удаленным контроллерам в мининете»> stackoverflow.com/questions/23677291/ - person Ari Gold; 03.11.2016
comment
Я считаю, что эти аргументы необязательны. Даже при их добавлении я испытываю ту же проблему. Я также должен отметить, что у самого коммутатора нет проблем с подключением к NAT, он просто не может подключиться к хостам. Следовательно, хосты не могут подключаться друг к другу. - person user2149890; 03.11.2016

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

net.addController('c0')
person user2149890    schedule 03.11.2016