ホスト間の複数のリンクで接続することはできません。Mininetホストは、ホストがお互いに接続できない、ホストからの2つのパスが異なるスイッチがトラフあるがあれば、私はmininetでトポロジを作成しようとしている
は、私は、ルーティング設定のいくつかの並べ替えをしないのですか?パスとルーティングを手動で作成する必要がありますか?私はコントローラーがそれを自分でやったと思った。
私が使用しているコードはexamplesフォルダから再目的とされ、コメントコードが相互に到達するのホストを防止するものである:
#!/usr/bin/python
"""
This example creates a multi-controller network from semi-scratch by
using the net.add*() API and manually starting the switches and controllers.
This is the "mid-level" API, which is an alternative to the "high-level"
Topo() API which supports parametrized topology classes.
Note that one could also create a custom switch class and pass it into
the Mininet() constructor.
"""
from mininet.net import Mininet
from mininet.node import Controller, OVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
def multiControllerNet():
"Create a network from semi-scratch with multiple controllers."
net = Mininet(controller=Controller, switch=OVSSwitch)
info("*** Creating (reference) controllers\n")
c1 = net.addController('c1', port=6633)
info("*** Creating switches\n")
sw1 = net.addSwitch('s1')
sw2 = net.addSwitch('s2')
sw3 = net.addSwitch('s3')
sw4 = net.addSwitch('s4')
sw5 = net.addSwitch('s5')
info("*** Creating hosts\n")
cl1 = net.addHost('c1')
cl2 = net.addHost('c2')
arca = net.addHost('arca')
ag1 = net.addHost('ag1')
ag2 = net.addHost('ag2')
ag3 = net.addHost('ag3')
tr1 = net.addHost('tr1')
tr2 = net.addHost('tr2')
info("*** Creating links\n")
net.addLink(cl1, sw1)
net.addLink(cl2, sw3)
net.addLink(arca, sw5)
# traffic generators
net.addLink(tr1, sw1)
net.addLink(tr2, sw5)
# aggregators
net.addLink(ag1, sw2)
net.addLink(ag2, sw2)
net.addLink(ag2, sw4)
net.addLink(ag3, sw4)
net.addLink(sw1, tr1)
net.addLink(sw5, tr2)
net.addLink(sw1, sw2)
#net.addLink(sw1, sw3)
net.addLink(sw2, sw3)
net.addLink(sw3, sw4)
#net.addLink(sw3, sw5)
net.addLink(sw4, sw5)
info("*** Starting network\n")
net.build()
c1.start()
sw1.start([ c1 ])
sw2.start([ c1 ])
sw3.start([ c1 ])
sw4.start([ c1 ])
sw5.start([ c1 ])
info("*** Testing network\n")
net.pingAll()
info("*** Starting apps\n")
info("*** Running CLI\n")
CLI(net)
info("*** Stopping network\n")
net.stop()
if __name__ == '__main__':
setLogLevel('info') # for CLI output
multiControllerNet()
私はここで何をしないのですか? Mininetは、理想的には、ネットワークエミュレーションでループをサポートしていないため
私はmininetについて何も知らないが、現実世界のネットワークであなたは、ループを作ったし、あなたのネットワークトラフィック(と思う)ARPを使用してリンクを限界いっぱいまでと正当なトラフィックをブロックしているブロードキャストストームが苦しんでいます。 RSTP(Rapid Spanning-Tree Protocol)を設定するか、リンクの一部を手動でシャットダウンする必要があります。そのため、接続されているのは1つだけです。それはFAQに – TessellatingHeckler
'--switch lxbr、stp = 1'を使うべきだと言っています、あなたはpythonスクリプトでSTPを有効にする方法を知っていますか? – TessellatingHeckler