问题1:无法启动命令行接口
问题描述:使用mininet的自定义拓扑功能来生成拓扑。代码第一次运行的时候节点和链路都正常添加,但是在第二次运行的时候出现了错误提示。命令及代码如下:
说明:自定义的拓扑名字为MultiSwitchTopo.py
# sudo python MultiSwitchTopo.py
节点和链接都正常添加,但是最后提示warning:No packets sent ,之后无法正常进入mininet,开始的时候不明白这个问题是什么原因造成的,后来和可以正常进入mininet环境的代码进行了比较发现是因为在代码中没有CLI(net)来启动mininet的CLI环境,加上去就可以了。当然也可以把需要对网络进行的操作直接写在脚本的代码中,比如iperf进行带宽测试等。
文章图片
问题2:建立拓扑时出现错误提示:Exception: Error creating interface pair (s11-eth2,s12-eth2): RTNETLINK answers: File exists
之后再次运行自定义拓扑代码,结果出现如下错误提示。
后来发现就算通过exit或者quit命令来退出mininet环境再次运行建立拓扑的命令或者自定义拓扑的代码的时候也会出现这样的错误提示,原因是退出的时候(可能是软件bug也可能是其他原因)导致不能正常将之前建立好的网络clean掉,解决的办法是相同的。
Traceback (most recent call last):
File "MultiSwitchTopo.py", line 96, in
net = Mininet(topo = tp,link = TCLink)
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/net.py", line 172, in __init__
self.build()
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/net.py", line 444, in build
self.buildFromTopo( self.topo )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/net.py", line 431, in buildFromTopo
self.addLink( **params )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/net.py", line 366, in addLink
link = cls( node1, node2, **options )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/link.py", line 534, in __init__
params2=params )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/link.py", line 424, in __init__
node1, node2, deleteIntfs=False )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/link.py", line 468, in makeIntfPair
deleteIntfs=deleteIntfs )
File "/usr/local/lib/python2.7/dist-packages/mininet-2.2.1-py2.7.egg/mininet/util.py", line 194, in makeIntfPair
( intf1, intf2, cmdOutput ) )
Exception: Error creating interface pair (s11-eth2,s12-eth2): RTNETLINK answers: File exists
【mininet运行报错】重点是最后一句,请教了SDNlab上的伙伴之后被告知这是因为两次重复建立相同的拓扑而没有在第二次建立之前将原来的拓扑信息清除掉造成的,进行如下命令操作之后没有出现错误提醒。特此记录。
# sudo mn -c