- 執行 mn 命令未指定一個控制器的話,它會默認采用 ovsc 控制,ovs-controller
- Mininet-wifi如何和ryu配合?
ryu-manager ryu.app.simple_switch_13 先要啟動ryu,然后啟動mininet-wifi去連接ryu。
mn --topo=linear --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
ryu可以指定其它端口:
ryu-manager --ofp-listen-host '192.168.0.127' --ofp-ssl-listen-port 11884 --ofp-tcp-listen-port 11884 ryu.app.simple_switch_13
- 目前已經有的網絡拓撲(下面都是使用的RYU控制器和ofsoftswitch交換機):
- minimal
創建兩個host,一個switch,拓撲不能指定個數。
mn --topo=minimal --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- single
創建兩個host,一個switch,可以指定參數,如果參數輸入3,表示創建3個host,一個switch。
mn --topo=single,3 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- reversed
reversed(反向拓撲) 和 single的效果是一樣的。
mn --topo=reversed,5 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- linear
創建5個AP,創建5個station,組成一條線
mn --wifi --topo=linear,5 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- tree
--topo=tree,3,2 : 拓撲模型,交換機的深度或者層數,每個交換機下連接的主機或者交換機個數。
--topo=tree,3,2 : 三層,第一層1個交換機,第二層2個交換機,第三層4個交換機,主機:4 x 2 = 8
--topo=tree,3,3 : 三層,第一層1個交換機,第二層3個交換機,第三層9個交換機,主機:9 x 3 = 27
--topo=tree,3 : 和--topo=tree,3,2效果一樣。
創建tree型拓撲不能帶--wifi參數,帶--wifi參數創建不起來。
tree 測試過10層網絡拓撲,創建了1024個host,1023個switch,最終的結果是創建不起來,可能大概要耗時一天,cpu全都占用完了。
mn --topo=tree,3 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- torus
創建一個圓環面型拓撲,創建不起來。
mn --topo=torus --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- 5個switch的線型組網:
- 3層樹形拓撲組網:
- 自定義網絡拓撲
- 我是在mininet-wifi的工程目錄下面增加一個custom目錄,這里存放新增的網絡拓撲文件。
- 在custom目錄下新增mytopo.py文件。新增一個子類繼承 Topo_WiFi,新增的拓撲類的 __init__ 函數里面 創建各個站點和link,文件代碼如下:
frommn_wifi.topoimportTopo_WiFi
classMyTopo(Topo_WiFi):
"Simpletopologyexample."
def__init__(self):
"Createcustomtopo."
#Initializetopology
Topo_WiFi.__init__(self)
#addstationsandaccesspoints
sta1=self.addStation('sta1')
sta2=self.addStation('sta2')
sta3=self.addStation('sta3')
sta4=self.addStation('sta4')
sta5=self.addStation('sta5')
ap1=self.addAccessPoint('ap1')
ap2=self.addAccessPoint('ap2')
ap3=self.addAccessPoint('ap3')
ap4=self.addAccessPoint('ap4')
ap5=self.addAccessPoint('ap5')
ap6=self.addAccessPoint('ap6')
#addlinks
self.addLink(ap1,ap2)
self.addLink(ap1,ap3)
self.addLink(ap2,ap4)
self.addLink(ap2,sta2)
self.addLink(ap3,ap5)
self.addLink(ap3,ap6)
self.addLink(ap4,sta1)
self.addLink(ap5,sta3)
self.addLink(ap5,sta4)
self.addLink(ap6,sta5)
#addtotopo
topos={'mytopo':(lambda:MyTopo())}
- 指定mn的參數如下:
--wifi --custom ./custom/mytopo.py --topo=mytopo --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653
- 最后創建出來的拓撲圖如下:
- 執行pingall,可以看到所以節點都可以ping通。