OpenDayLight學習之路(一):OpenDayLight基本環境搭建
事先聲明:本人為小白,第一次接觸OpenDayLight(以下簡稱ODL),本文僅為了記下學習經曆。
一、基本環境
OS:Debian testing/stretch x86_64 Linux 4.0.0-2-amd64
JVM:Oracle jdk 8u51
ODL:Lithium Pre-built
VM:Vmware for Linux
二、擷取和安裝ODL
1、下載下傳ODL并運作
因為是第一次接觸ODL,是以我選擇了下載下傳pre-built版本,并沒有自己編譯,需要自己編譯的可以檢視官方wiki相關頁面。
在ODL的網站http://www.opendaylight.org/software/downloads下載下傳最新版Lithium的zip或tar包:
- Pre-Built Zip
- Pre-Built Tar
Documentation:
- Getting Started Guide
- Developer Guide
- User Guide
- Using OpenDaylight with OpenStack
解壓出ODL後,cd進ODL目錄,執行"./bin/karaf"。
不過這裡會提示Exception in thread "JMX Connector Thread [service:jmx:rmi://0.0.0.0:44444/jndi/rmi://0.0.0.0:1099/karaf-root]" java.lang.RuntimeException: Could not start JMX connector server...等錯誤。
我們需要修改"./etc/org.apache.karaf.management.cfg"檔案,将
rmiRegistryHost = 0.0.0.0
rmiServerHost = 0.0.0.0
修改為:
rmiRegistryHost = 127.0.0.1
rmiServerHost = 127.0.0.1
按理說0.0.0.0在java網絡程式設計中代表的是本機所有ip,但是不知道為什麼會出現錯誤。
接下來再運作./bin/karaf看到如下界面,并沒有提示錯誤就對了。

2、安裝功能元件
ODL的許多功能需要一些相關元件來完成,比如說webUI。
安裝元件的command為:
feature:install <feature1-name> <feature2-name> ... <featureN-name>
列出可用元件:
feature:list
列出已經安裝的元件:
feature:list -i
同樣可以使用管道和grep篩選出你感興趣的内容,比如:
A.安裝REST APIs支援
REST APIs是SDN控制器北向接口的一個通用API。
feature:install odl-restconf
B.安裝DLUX web interface
具體可以參見wiki:https://wiki.opendaylight.org/view/OpenDaylight_DLUX:DLUX_Karaf_Feature
feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core
安裝完成後打開http://localhost:8181/index.html,就可以看到如下的登入界面:
使用者名和密碼都是admin
登入進去之後就可以看到如下界面:
注:如果你隻安裝了odl-dlux-core元件,就隻會看到Topology選項,要其他選項的可以安裝
odl-dlux-node odl-dlux-yangui odl-dlux-yangvisualizer 等
不過現在topology和node是沒有任何東西的,因為ODL Control沒有連接配接任何交換機。
有關更多的元件資訊可以參閱bk_getting_started_guide或者使用feature:list。需要注意的是:
In the table a compatibility value of all means that it can be run with other features. A
value of self+all indicates that the feature can be installed with other features with a value
of all, but may interact badly other features with a value of self+all.
即不要安裝多個标有self+all的元件。
二、使用Mininet搭建虛拟交換機
這部分可以參見wiki。
1. 這裡我選擇使用Mininet VM image,相關網站:http://mininet.org/download/
下載下傳好http://mininet.org/download/的zip檔案解壓後,導入到vmware,并啟動虛拟機,username和psw都是mininet。
最好修改虛拟機的網卡模式為橋接,使mininet和ODL在一個網段,友善mininet連接配接ODL。
2.在mininet上建立一個虛拟交換機網絡并連接配接到ODL
[email protected]:~$ sudo mn --controller=remote,ip=192.168.0.101 --topo tree,3
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8
*** Adding switches:
s1 s2 s3 s4 s5 s6 s7
*** Adding links:
(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7)
*** Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8
*** Starting controller
*** Starting 7 switches
s1 s2 s3 s4 s5 s6 s7
*** Starting CLI:
mininet>
上面的指令執行完成後就自動建立了一個交換機網絡并連接配接到了ODL,有關mininet的更多使用方法将會在以後學習。
現在打開webui就可以看到剛剛建立的網絡拓撲和節點資訊了。
總結:
用了半天的時間總算把opendaylight搞成這樣了,後面會學習一下mininet的使用,REAT APIs的使用,通過抓包分析openflow協定等,争取寫出一個自己的SDN控制器