Estou executando o Mininet (um emulador de rede) no Ubuntu 16.04.2. Eu criei um arquivo Python para criar uma rede emulada (como o diagrama mostra nas linhas 6 e 7 do arquivo), chamado topo001.py
que contém o seguinte código:
"""
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() ) }
Para executar este arquivo no Mininet, eu insiro o comando sudo mn --custom /home/network-research/Desktop/topo001.py --topo mytopo --controller=remote,ip=127.0.0.1 --link=tc
diretamente no terminal (o arquivo é salvo na minha área de trabalho). Ao fazer isso, Mininet começa e me fornece o seguinte:
*** 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:
A mensagem de erro *** Error: RTNETLINK answers: No such file or directory
é fornecida quando outros parâmetros de link são definidos, também. (Outros parâmetros de link que tentei são comentados após o símbolo de libra (#) no arquivo.) A única maneira de evitar que essa mensagem de erro ocorra é remover todos os parâmetros de link. Isso não é uma opção, no entanto, porque preciso definir certos parâmetros para cada link na rede.
Eu vasculhei tudo tentando encontrar uma resposta, mas nada resolveu esse problema ainda. Eu desinstalei o Mininet e, em seguida, reinstalei-o usando o código-fonte e reiniciei o computador várias vezes (antes e depois de instalar a versão do código-fonte).
Quando executo um pingall
, todos os pings são enviados e recebidos com êxito:
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
A minha pergunta é: De que formas posso resolver esta mensagem de erro? A resposta é dada abaixo e as notas adicionais são fornecidas na secção actualizada na parte inferior desta mensagem.
Pergunta secundária: Esse erro impede que os links ajam como deveriam, dadas as restrições de parâmetros? A resposta é desconhecida.
Atualização da solução passo-a-passo:
A solução listada abaixo funcionou para mim. Obrigado juejiang! Eu desinstalei minha versão atual do Mininet e fui até a ramificação principal no GitHub, encontrei aqui e segui as instruções em parte 3.1 sobre a "instalação nativa da fonte no Ubuntu 12.04+".
Após a conclusão da instalação, reiniciei meu computador, iniciei meu controlador OpenDaylight e executei o Mininet com minha topologia personalizada. O seguinte é o resultado livre de erros :
*** 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:
Em seguida, executei um comando pingall
e recebi o seguinte:
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
Obrigado mais uma vez juejiang!