2015年8月16日 星期日

OpenDaylight安裝與Mininet拓樸

Mininet與OpenDaylight

在Ryu GUI呈現的結果中可以發現,Ryu GUI呈現結果其實蠻陽春的,Host的部分也沒有顯示出來,此次我們將使用OpenDaylight,使呈現的拓樸能夠更加完整。



SDN Hub對於OpenDaylight的介紹相當充實,連映像檔中所存在的OpenDaylight也不同於其他Controller,網站的頁面上也有相當詳細的教學與說明。

這邊所使用的是OpenDaylight的第二代SDN Framework - OpenDaylight Helium (第一代為Hydrogen)
(筆者OS: 第一代氫 第二代氦 接下來應該是鋰鈹硼了)



SDN Hub已經內建OpenDaylight,這邊我們就不討論從無到有的安裝,直接進入使用階段。
基本上都還是依照網站的教學進行,因此想要獲得更詳細資訊的可以直接前往網頁查看
SDN Hub OpenDaylight Helium : http://sdnhub.org/tutorials/opendaylight-helium/
(2015/08/16)此時的OpenDaylight已經釋出Lithium版本(穩定版為Helium)
不想使用的可以到官方網站下載Li版本嘗試(建議以官方版本為主)
https://www.opendaylight.org/downloads

設定步驟

  1. 架構mininet拓墣
    若是要測試結果,可採用網站提供的預設拓樸指令
    sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13 --controller remote

    也可以使用自定義的拓墣(在此檔名為testtopo.py 檔案位置~/mininet/examples)
    cd ~/mininet/examples
    nano YourTopoFileName.py
    

    Topo寫完後,需要進行編譯
    sudo chmod +x YourTopoFileName.py

    接下來就可以執行了 (如果程式有錯在此會出現訊息)
    sudo ./YourTopoFileName.py


  2. 接下來開啟另一個Terminal,用於執行OpenDaylight
    SDN Hub已經內建包含OpenDaylight在內的許多Controller
    私心建議還是建議下載官方版本安裝會比較好
    如果還是採用SDN Hub版本的話,首先重新編譯一下專案
    cd SDNHub_Opendaylight_Tutorial
    mvn clean install
    
  3. 這邊可以發現到網站教學指示要找到 run.sh

    完全找不到RR


    好的,這邊因為與第一版不一樣,所以執行檔也略有更動,改名叫karaf,但是教學似乎沒有隨著版本更新的樣子。我們可以發現目錄裡很貼心的放了run所在位置的捷徑資料夾(run-location)

    該資料夾的實際路徑是(執行檔在bin目錄下)
    /home/ubuntu/SDNHub_Opendaylight_Tutorial/distribution/opendaylight-karaf/target/assembly/
    
  4. 都準備好之後就可以正式執行OpenDaylight了
  5. cd SDNHub_Opendaylight_Tutorial/run-location
    cd bin
    ./karaf
    

    如果是自行下載官方版本的,karaf就不那麼深了
    cd distribution-karaf-0.3.0-Lithium.zip
    cd bin
    ./karaf

    成功後可以看到以下畫面(若非SDN Hub,則會出現OpenDaylight圖案)
     



  6. OpenDaylight GUI
    進入OpenDaylight的頁面 http://localhost:8181/index.html
    這邊使用8181的原因是因為8080被karaf控制佔用了
    我們可以發現無法存取

    我們需要額外安裝附加的功能
    OpenDaylight的features相容性上對我來說相當...複雜
    基本上測試了一段時間才終於成功
    首先,feature的安裝順序有一些先後順序,
    有些feature在沒有安裝前置feature之前就安裝的話可能會發生錯誤。


    各種feature的相容性可以參考官方文件(以下是Lithium版本)
    https://www.opendaylight.org/software/downloads/lithium
    根據OpenDaylight官方文件,在安裝其他feature之前,必需先安裝 MD-SAL clustering

    接下來就可以安裝DLUX的Web介面了
    如果要一次安裝多種feature,可以使用以下指令
    feature:install [feature name] [feature name] ...
    這邊為了以免發生錯誤什麼的 就一條一條下了
    feature:install odl-mdsal-clustering
    feature:install odl-restconf
    feature:install odl-l2switch-switch
    feature:install odl-openflowplugin-all
    feature:install odl-dlux-all
    feature:install odl-mdsal-all
    feature:install odl-adsal-northbound

    筆者在使用SDN Hub版本的OpenDaylight時,
    安裝odl-adsal-northbound時,有發生Error executing command: No feature matching odl-adsal-northbound/0.0.0錯誤
    我個人的解法是不要使用SDN Hub版本的OpenDaylight,直接採用官方版本(Lithium)


    最後大概是這樣的畫面
  7. Mininet拓樸與OpenDaylight
    完成前面的步驟後,就可以登入Web介面了
    網址為: http://ODL安裝的主機位址:8181/index.html
    帳號與密碼皆為admin (如果發生帳密錯誤,請重裝feature)

    這邊用預設的拓墣先測試一下,一開始會發現只有一顆switch (controller就真的只知道switch而已)

    讓mininet pingall之後,Controller獲得網路狀態,再Reload一次,host就會出現了


Note :如果GUI介面顯示有任何問題

    將與bin同目錄下的data資料夾刪除
    執行 ./karaf clean
    重新安裝所有feature


Note:如果發生No route to host錯誤。

對org.apache.karaf.management.cfg進行修改。
cd SDNHub_Opendaylight_Tutorial/run-location/etc/
nano org.apache.karaf.management.cfg 
將第42行rmiServerHost = 0.0.0.0
更改為
rmiServerHost = 127.0.0.1(或者是你要安裝的主機位址) 





沒有留言:

張貼留言