Я запускаю Mininet (сетевой эмулятор) на Ubuntu 16.04.2. Я создал файл Python для создания эмулируемой сети (как показано на диаграммах в строках 6 и 7 в файле) с именем topo001.py, который содержит следующий код: """
Topology001 created by zim7563
Three directly connected switches plus a host for only two switches:
host1 --- switch1 --- switch2 --- host2
\--switch3--/
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
In command line, enter: sudo mn --custom /home/network-research/Desktop/topo001.py --topo mytopo --controller=remote,ip=127.0.0.1 --link=tc
"""
import pdb
from mininet.topo import Topo
# Next two provide performance limiting and isolation features
from mininet.node import CPULimitedHost
from mininet.link import TCLink
# Additional (testing to see what may be needed to make it work)
#from mininet.net import Mininet
#from mininet.util import dumpNodeConnections
#from mininet.log import setLogLevel
class MyTopo( Topo ):
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts and switches
S1 = self.addSwitch( 's1' )
S2 = self.addSwitch( 's2' )
S3 = self.addSwitch( 's3' )
H1 = self.addHost( 'h1' )
H2 = self.addHost( 'h2' )
SwitchList = (S1,S2,S3)
# Add links
self.addLink( H1, S1 )
self.addLink( S1, S2, bw=10)#, delay='5ms', loss=2, max_queue_size=1000, use_htb=True )
self.addLink( S1, S3 )#, bw=20 )
self.addLink( S2, S3 )
self.addLink( H2, S2 )
topos = { 'mytopo': ( lambda: MyTopo() ) }
Чтобы запустить этот файл в Mininet, я вхожу в команду sudo mn --custom /home/network-research/Desktop/topo001.py --topo mytopo --controller=remote,ip=127.0.0.1 --link=tc прямо в терминал (файл сохраняется на моем рабочем столе). После этого Mininet запускает и предоставляет мне следующее:
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1 s2 s3
*** Adding links:
(h1, s1) (h2, s2) (10.00Mbit) *** Error: RTNETLINK answers: No such file or directory
(10.00Mbit) *** Error: RTNETLINK answers: No such file or directory
(s1, s2) (s1, s3) (s2, s3)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 3 switches
s1 s2 s3 ...(10.00Mbit) (10.00Mbit)
*** Starting CLI:
Сообщение об ошибке *** Error: RTNETLINK answers: No such file or directory указывается, когда также заданы другие параметры связи. (Другие параметры связи, которые я пробовал, закомментированы после символа фунта (#) в файле.) Единственный способ предотвратить это сообщение об ошибке - удалить все параметры ссылки. Однако это не вариант, потому что мне нужно установить определенные параметры для каждой ссылки в сети.
Я все время пытался найти ответ, но ничего не разрешило эту проблему. Я удалил Mininet и переустановил его с использованием исходного кода, и я перезагрузил свой компьютер несколько раз (до и после установки версии исходного кода).
Когда я выполняю pingall, все пинги успешно завершены отправлено и получено:
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
Мой вопрос к вам: каким образом я могу разрешить это сообщение об ошибке? Ответ приведен ниже, а дополнительные примечания приведены в обновленном разделе внизу этого сообщения.
Вторичный вопрос: Каким образом я могу разрешить это сообщение об ошибке? Ответ неизвестен .
Пошаговое решение:
Решение, приведенное ниже, работало для меня. Спасибо, юецзян! Я удалил свою текущую версию Mininet и отправился в ведущую ветку на GitHub, где нашел Mininet и выполнил инструкции в части 3.1 о «Исходной установке из источника на Ubuntu 12.04+».
По завершении установки я перезагрузил свой компьютер, запустил мой контроллер OpenDaylight и запустил Mininet с моей собственной топологией. Ниже приведен результат без ошибок:
*** Creating network
*** Adding controller
Connecting to remote controller at 127.0.0.1:6653
*** Adding hosts:
h1 h2
*** Adding switches:
s1 s2 s3
*** Adding links:
(h1, s1) (h2, s2) (10.00Mbit) (10.00Mbit) (s1, s2) (s1, s3) (s2, s3)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 3 switches
s1 s2 s3 ...(10.00Mbit) (10.00Mbit)
*** Starting CLI:
Затем я выполнил команду pingall и получил следующее:
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
Еще раз спасибо juejiang!
Я столкнулся с этой проблемой и в ubuntu 14.04. После того, как я переустановил mininet из источника (главная ветка), сообщение об ошибке не появляется. проверьте следующую строку в link.py, чтобы убедиться, что код обновлен. - если «priomap» не в tcoutput: + если «priomap» не в tcoutput и «noqueue» не в tcoutput:
https://github.com/mininet/mininet/pull/603
https://github.com/mininet/mininet/pull/629
Я столкнулся с этой проблемой и в ubuntu 14.04. После того, как я переустановил mininet из источника (главная ветка), сообщение об ошибке не появляется. проверьте следующую строку в link.py, чтобы убедиться, что код обновлен. - если «priomap» не в tcoutput: + если «priomap» не в tcoutput и «noqueue» не в tcoutput:
https://github.com/mininet/mininet/pull/603
https://github.com/mininet/mininet/pull/629
Я столкнулся с этой проблемой и в ubuntu 14.04. После того, как я переустановил mininet из источника (главная ветка), сообщение об ошибке не появляется. проверьте следующую строку в link.py, чтобы убедиться, что код обновлен. - если «priomap» не в tcoutput: + если «priomap» не в tcoutput и «noqueue» не в tcoutput:
https://github.com/mininet/mininet/pull/603
https://github.com/mininet/mininet/pull/629