Mininet 链接错误:“*** 错误:RTNETLINK 答案:没有此文件或目录”

Mininet 链接错误:“*** 错误:RTNETLINK 答案:没有此文件或目录”

我在跑步迷你网(网络模拟器)在 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,所有 ping 都已成功发送和接收:

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 
h2 -> h1 
*** Results: 0% dropped (2/2 received)

我的问题是:我该用什么方法解决这个错误信息?答案如下,并在本文底部的更新部分提供了附加说明。

次要问题:在给定参数限制的情况下,这个错误是否会阻止链接按预期运行?答案是未知的。


逐步解决方案更新:

下面列出的解决方案对我有用。谢谢 juejiang!我卸载了当前版本的 Mininet,然后转到 GitHub 上的 master 分支,发现这里并按照第 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!

答案1

我在 ubuntu 14.04 中也遇到过这个问题。
从源代码(主分支)重新安装 mininet 后,错误消息不再出现。
检查 link.py 中的以下行以确保代码已更新。-
if "priomap" not in tcoutput:
+ if "priomap" not in tcoutput and "noqueue" not in tcoutput:

https://github.com/mininet/mininet/pull/603
https://github.com/mininet/mininet/pull/629

相关内容