Mininet link error: “Erro ***: RTNETLINK responde: Não existe tal arquivo ou diretório”

0

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!

    
por zim7563 01.10.2017 / 14:48

1 resposta

0
Eu também enfrentei esse problema no Ubuntu 14.04.
Depois de reinstalar mininet da origem (o ramo principal), a mensagem de erro não aparece. verifique a seguinte linha no link.py para se certificar de que o código está atualizado.
 - se "priomap" não está no tcoutput:
 + se "priomap" não estiver em tcoutput e "noqueue" não estiver em tcoutput:

https://github.com/mininet/mininet/pull/603
https://github.com/mininet/mininet/pull/629
    
por juejiang 05.10.2017 / 15:08