問題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 <module>
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
重點是最後一句,請教了SDNlab上的夥伴之後被告知這是因爲兩次重複建立相同的拓撲而沒有在第二次建立之前將原來的拓撲信息清除掉造成的,進行如下命令操作之後沒有出現錯誤提醒。特此記錄。
# sudo mn -c