2015年11月6日 星期五

Mininet custom topology and simple test

Mininet custom topology and simple test

本篇主要是建立基本拓樸以及簡單的自定義拓樸





以下是最基本的拓樸,一台Switch對兩台Host
#!/usr/bin/python
#coding:utf-8
from mininet.net import Mininet
from mininet.topo import Topo

topo = Topo()  # 建立一個新拓樸
topo.addSwitch("s1")  # 增加Switch
topo.addHost("h1")    # 增加Host
topo.addHost("h2")
topo.addLink("h1", "s1") # 連接Host到S1上
topo.addLink("h2", "s1")
net = Mininet(topo)  # 開啟mininet並執行上面Topo,下面則是執行相關測試
net.start()
net.pingAll()
net.iperf()
net.stop()


以下這個則使用mininet中Link 類別裡面的TCLink,這個類別主要使用Linux的流量控制能力,讓我們可以設定個別Link的頻寬以及延遲。
這邊的拓樸是2台Switch各別連接一台Host
#!/usr/bin/python
#coding:utf-8

from mininet.net import Mininet
from mininet.topo import Topo
from mininet.link import TCLink  # 匯入該類別後可以控制頻寬與延遲
from mininet.cli import CLI  # 這邊只是要使用CLI

topo = Topo()  # Create an empty topology
topo.addSwitch("s1")  # 增加Switch
topo.addSwitch("s2")
topo.addHost("h1")    # 增加Host
topo.addHost("h2")

# 連接Host與Switch,並加上延遲時間
topo.addLink("h1", "s1", bw=10.0, delay='10ms', use_htb=True)
topo.addLink("h2", "s2", bw=15.0, delay='10ms', use_htb=True)
topo.addLink("s1", "s2", bw=10.0, delay='20ms', use_htb=True)
net = Mininet(topo=topo, link=TCLink)   #這邊Link要定義為TCLink形式
net.start()
CLI(net)  # 這邊是把mininet的CLI叫出來
net.stop()

參考的程式碼中常有use_htb,htb代表 hierarchical token bucket

沒有留言:

張貼留言