在nctu交換,學到了SDN實驗。
實驗目的:
•在mininet裡面建立網路拓樸, 將最短路徑搜尋演算法加上QoS (即建立的最短路徑要符合一頻寬需求)的程式執行在另一VM當作一NFV.
•NFV VM會根據拓樸找出路徑, 然後透過REST API告訴Floodlight controller要如何設定flow table
首先先使用了Mininet。
•Mininet是一個強大的網路仿真平台,通過這個平台,可以很方便的模擬真實環境中的網路操作與架構。
•Mininet自帶switch、host、controller,在mininet上也可安裝OpenvSwitch、多種controller(NOX\POX\RYU\Floodlight\OpenDaylight等)
Mininet的安裝配置也較為簡單
1. Update the machine
$ sudoapt-get update
2. Install git
$ sudo apt-get install git
3. Download Mininet from Github
$ gitclone git://github.com/mininet/mininet
4. Install mininet
$ sudo mininet/util/install.sh -a
輸入 mn 可以建構出mininet最基本的虛擬拓樸
$ sudo mn --test pingall
然後除了使用默認的topo網絡外我們可以使用兩種方式去自定義topo。
方法一:編寫一個python 腳本
# !/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.log import setLogLevel, info # 印出LOG資訊
from mininet.node import RemoteController
from mininet.cli import CLI
from mininet.node import Node
def BuildTree():
#Add controller, switch, hos link
net.start()
return net
if __name__='__main__':
setLogLevel('info')
net = BuildTree() # Call BuildTree function
CLI(net) # command line
net.stop()
我們需要在BuildTree()中添加自己的topo結構。
#Add a controller
net=Mininet(topo=None, build=False)
c0=net.addController(name=‘c0’)
ip = '127.0.0.1', port = 6633
#Add a host
h1=net.addHost(‘h1’)
mac=’00:00:00:00:00:01’, ip=’10.0.0.1’
#Add a switch
s1=net.addSwitch(‘s1’)
dpid=‘0000000000000001’
#Add a link
net.addLink(s1,s2)
$ sudo python your_topology.py
方法二:則是使用mininet command line創建,這樣創建的一個不好的地方是沒法很方便的制定每個host和switch的詳細配置。
我是參考的下面這篇文章
http://www.jianshu.com/p/31511e691c65
更多關於 mininet的知識可以參考官方文檔
傳送門:mininet中文文檔
這次實驗的目的用mininet command line去創建一個topo
得到了如下結果
測試結果如下