下圖是利用ryu加上mininet建立的一個自訂網路拓樸,在利用ryu的gui patch顯示在web介面上
首先要將安裝好的ryu加上GUI的patch (安裝ryu可以參考先前的文章)
由於目前Ryu的gui功能還沒包含在官方的版本裡面
因此需要下載patch來完成這個功能
由此 gui-patch-v3-rebase 下載 ZIP 解壓縮後在路徑 /gui-patch-v3-rebase/ryu/gui 將 gui 整個資料夾複製到原官方 Ryu 專案相同位置的地方(/ryu/ryu/)。
或是直接解壓縮覆蓋ryu資料夾也可以
接著要到 /ryu/ryu/topology 修改 switches.py 45行-53行的地方註解掉。
(這邊還不太確定為什麼要註解)
下載並安裝RYU with GUI的所需套件。
sudo apt-get install python-dev
sudo pip install ryu flask gevent-websocket
ryu-manager --verbose --observe-links ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch (2015/02/12註:加上這個simple_switch的話拓樸的連線沒辦法正常顯示,去掉就正常了)
開啟Ryu GUI server
./ryu/gui/controller.py
接著利用Mininet建立自己的網路拓樸
下面的mininet腳本描述了上面圖片所示的網路架構
可以寫在一個python 腳本裡面 (mytopo.py)
from mininet.topo import Topo
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts and switches
server = self.addHost( 'server' )
client = self.addHost( 'client' )
switch1 = self.addSwitch( 's1' )
switch2 = self.addSwitch( 's2' )
switch3 = self.addSwitch( 's3' )
switch4 = self.addSwitch( 's4' )
switch5 = self.addSwitch( 's5' )
switch6 = self.addSwitch( 's6' )
switch7 = self.addSwitch( 's7' )
# Add links
self.addLink( server , switch1 )
self.addLink( switch1, switch2 )
self.addLink( switch1, switch3 )
self.addLink( switch2, switch4 )
self.addLink( switch3, switch4 )
self.addLink( switch3, switch5 )
self.addLink( switch4, switch7 )
self.addLink( switch5, switch6 )
self.addLink( switch6, switch7 )
self.addLink( switch7, client )
topos = { 'mytopo': ( lambda: MyTopo() ) }
之後利用mininet建立我們創建的網路拓樸
mn --custom mytopo.py --topo mytopo --controller=remotecontroller=remote預設是在本機的ip 若是controller在其他機器的話則在後面加上,ip=xxx.xxx.xx.xx
例如 --controller=remote,ip=192.168.10.11
之後開啟瀏覽器 網址輸入http://localhost:8000
應該就會看到我們建立的網路拓樸
如果controller在其他機器的話則ip也要跟著改
參考資料
How to set up Ryu controller with GUI component?
[RYU] Try the RYU Web GUI with Mininet
Ryu 3.18 documentation TOPOLOGY VIEWER
Ryu gui wiki
沒有留言:
張貼留言