mininet 如何創建有不同帶寬的鏈路


被問道如何在mininet中創建一個有不同帶寬的鏈路的時候,於是我就總結了一下我知道的方法:

在總結的時候,分別參考了如下的網址:

https://github.com/mininet/mininet/wiki/Introduction-to-Mininet

http://stackoverflow.com/questions/30496161/how-to-set-bandwidth-on-mininet-custom-topology


 

 

我總結的方法有以下的三種:

第一種,在創建的網絡拓撲的時候,使用 --link 這個選項:

sudo mn --topo linear,10 --link tc,bw=10

這一條命令,就可以創建出一個拓撲是線性的,並且每一條連接都是10m的帶寬。

這種創建的方法就是很簡單,但是不能夠模擬一種情況,不同的鏈路的帶寬不同。對與做網絡均衡負載的同學,就不能夠適用

 

第二種,適用 python 腳本來進行創建一個 mininet網絡。 使用這種腳本的方法是 python <your_mininet_creation_script.py> 就會創建出一個mininet的拓撲出來了。這種方法,如果要連接外部的控制器的時候,或許也要在里面寫,或許也可以在mn的命令行中設置。我那時候在里面進行連接外部控制器的時候,總是出錯,就沒有繼續用這種方式。我沒有試過在腳本里面創建拓撲,然后在命令行中連接外部控制器這種情況。

下面附上這種腳本的一個范例,取自於 https://github.com/mininet/mininet/wiki/Introduction-to-Mininet

#!/usr/bin/python

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel

class SingleSwitchTopo( Topo ):
    "Single switch connected to n hosts."
    def build( self, n=2 ):
    switch = self.addSwitch( 's1' )
    for h in range(n):
        # Each host gets 50%/n of system CPU
        host = self.addHost( 'h%s' % (h + 1),
                         cpu=.5/n )
        # 10 Mbps, 5ms delay, 2% loss, 1000 packet queue
        self.addLink( host, switch, bw=10, delay='5ms', loss=2,
                          max_queue_size=1000, use_htb=True )

def perfTest():
    "Create network and run simple performance test"
    topo = SingleSwitchTopo( n=4 )
    net = Mininet( topo=topo,
               host=CPULimitedHost, link=TCLink )
    net.start()
    print "Dumping host connections"
    dumpNodeConnections( net.hosts )
    print "Testing network connectivity"
    net.pingAll()
    print "Testing bandwidth between h1 and h4"
    h1, h4 = net.get( 'h1', 'h4' )
    net.iperf( (h1, h4) )
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    perfTest()

 

第三種,是我自己也在用的方法,是適用 mininet walkthrough 中的創建拓撲的方法:腳本的適用方法是

sudo mn --custom <your_mininet_topo_creation_script.py> --topo <topo_class_in_your_script>

但是直接在你的腳本中添加語句

self.addLink( host, switch, bw=10, delay='5ms', loss=2, max_queue_size=1000, use_htb=True )

會導致出現沒有 bw 這個參數的錯誤。這是因為沒有適用 TCLink class。解決的方法,是在

http://stackoverflow.com/questions/30496161/how-to-set-bandwidth-on-mininet-custom-topology

中得到的啟示。只要運行的時候,加上 --link 選項就可以,完整的運行的命令是

sudo mn --custom <your_mininet_topo_creation_script.py> --topo <topo_class_in_your_script> --link tc

 

OK, That is the end. Happy hacking.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM