2017-09-28 7 views
1

ホスト間の複数のリンクで接続することはできません。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は、理想的には、ネットワークエミュレーションでループをサポートしていないため

+0

私はmininetについて何も知らないが、現実世界のネットワークであなたは、ループを作ったし、あなたのネットワークトラフィック(と思う)ARPを使用してリンクを限界いっぱいまでと正当なトラフィックをブロックしているブロードキャストストームが苦しんでいます。 RSTP(Rapid Spanning-Tree Protocol)を設定するか、リンクの一部を手動でシャットダウンする必要があります。そのため、接続されているのは1つだけです。それはFAQに – TessellatingHeckler

+0

'--switch lxbr、stp = 1'を使うべきだと言っています、あなたはpythonスクリプトでSTPを有効にする方法を知っていますか? – TessellatingHeckler

答えて

2

これが起こります。この問題を解決するには、スパニングツリーアルゴリズムについてthis linkを読んでください。また、hereを参照してください。

+0

ドキュメントだ - https://github.com/mininet/mininet/wiki/FAQ#ethernet-loops - 潜在的mininetええ、そこにあなたがいるループネットワークから何らかの方法で苦しんでいる。..や苦しみをシミュレートします。.. – localhost

+0

Mininetトポロジーを開くコマンドのパラメータとして '--switch lxbr、stp = 1'を試しましたか? – Marievi

+0

私は '。/ topology.py'を実行しました.pinthonスクリプトで実行されるmininetはcmdパラメータを読み込みますか? 'sudoのMN --custom〜/ mininet /カスタム/ topo-2sw-2host.py --topo mytopo' http://mininet.org/walkthrough/から: – localhost

関連する問題