2015年2月11日 星期三

Set Ryu controller with Web-GUI and custom Mininet topology

下圖是利用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 GUI所需的應用程式

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=remote
controller=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

沒有留言:

張貼留言