基於OpenDaylight和Mininet的試驗床平台搭建


版權聲明:本文為Heriam博主原創文章,遵循CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

博客主頁:https://jiang-hao.com

相關論文:https://www.researchgate.net/publication/305277465_A_Secure_Multi-Tenant_Framework_for_SDN

 

######################################平台架構#######################################

 

 

一、虛擬機安裝和鏡像加載

*本部分過程非常簡單,所以不詳細描述,基本流程稍微提一下。

1. 虛擬機軟件:安裝虛擬機軟件主要有VMware Station, VirtualBox等,后者免費,下載網址為:https://www.virtualbox.org/wiki/Downloads,本文以VMware Station為例。請自行下載安裝,這里不多做贅述。

 

2. Ubuntu系統加載:到Ubuntu官網下載自身操作系統對應的最新版Ubuntu桌面鏡像,通過VMware加載Ubuntu鏡像。

 

3. Mininet VM加載:到Mininet官網:http://mininet.org/vm-setup-notes/下載鏡像文件(打開網頁后有相關指南,可以參照其進行加載安裝,懶得看英文的話就只用先把Mininet鏡像導入VMware,不用啟動,后文會對這里接下來的操作進行詳述)。

 

4. 最后Ubuntu部分的相關配置參數如下圖,Mininet的導入不需要進行任何參數配置,至少在啟動前不用。注意虛擬機網卡都是默認的NAT模式不用更改。

 

 

二、Ubuntu系統下OpenDaylight安裝

*本部分操作比較多,因此針對每一步都另文給出詳細步驟:

1. Ubuntu系統中搭建Java開發環境:《Linux Ubuntu系統下Java開發環境搭建》

2. Ubuntu系統中安裝Apache Maven:《Linux Ubuntu系統下Apache Maven的安裝和配置》

3. Ubuntu系統中安裝OpenDaylight:《SDN開發之Linux Ubuntu系統下OpenDaylight源碼編譯安裝和調試》

 

 

三、OpenDaylight功能組件安裝和調試

*本部分解決OpenDaylight控制器和Mininet的連接,並且通過OpenDaylight DLUX的Web GUI顯示。

*本部分基於上文步驟全部完成,已經搭建了一個初步裝好OpenDaylight的Ubuntu虛擬機。

*下文用ODL指代OpenDaylight。

 

1. 一鍵啟動控制器:ODL每次啟動controller需要cd目錄十分麻煩。這里同樣可以自己寫一個啟動腳本來管理ODL控制器的運行:

  vim odl
  <Insert>
  !#/bin/bash
  /home/<usrname>/developApps/openDayLight/integration/distributions/karaf/target/assembly/bin/karaf
  <Esc>
  :wq!
  sudo mv odl /usr/local/bin
  sudo chmod 755 /usr/local/bin/odl

  這樣在任何地方都只用輸入(sudo -i) odl就可以運行控制器了。

 

2. OpenDaylight的Features安裝和調試。

  現在就可以輸入odl命令來啟動控制器了,先進入如下界面:

  

安裝支持REST API的組件:

feature:install odl-restconf

 

安裝L2 switch和OpenFlow插件:

feature:install odl-l2switch-switch

feature:install odl-openflowplugin-all

 

安裝基於karaf控制台的md-sal控制器功能,包括nodes、yang UI、Topology:

feature:install odl-mdsal-apidocs    #此組件寫錯 很容易無法登錄

 

安裝DLUX功能:

feature:install odl-dlux-all

 

安裝基於karaf控制台的ad-sal功能,包括Connection manager、Container、Network、Flows:

feature:install odl-adsal-northbound

 

*注意:請按照一定的順序安裝,安裝順序不合理的話,會導致后面Web界面無法訪問!且記錄遇到的一個問題:在沒有按照順序安裝組件的情況下,無法登錄進入ODL主界面。解決方法是通過logout退出karaf平台,進入上級目錄,刪除data目錄:rm –r data,進入bin目錄:cd bin,執行./karaf clean,再次重復上面的安裝組件操作。

(本部分摘自:《OpenDaylight的Helium(氦)版本安裝》@君子一諾 )

 

 

Web界面訪問:此時可以登錄ODL的Web UI界面進行訪問。用瀏覽器訪問網址:http://<ODL的IP>:8181/dlux/index.html,<ODL_IP>為安裝ODL所在的主機IP地址,特別注意的是此版本的ODL訪問端口為8181,因8080端口被karaf控制台進程所占用。某些情況下不需要進入/dlux目錄而直接訪問http://<ODL的IP>:8181/index.html。

登陸用戶名為admin,密碼為admin,如下圖:

 

*關於Features出問題,可以vim查看/developApps/openDayLight/integration/distributions/karaf/target/assembly/etc目錄下的org.apache.karaf.features.cfg

*由於還沒有連接數據面Mininet的交換機,因此登陸進去后還不會顯示任何拓撲。

 

 

四、Mininet虛擬機的安裝和登錄調試

*本部分接着第一部分下載好Mininet鏡像后,解決Mininet導入虛擬機后的加載配置並重點闡述遠程免密碼自動登錄的設置。

 

1. 在虛擬機成功導入.OVF后綴的mininet文件后,直接啟動。

 

2. 啟動完成后,進入到登錄界面,賬號密碼都是mininet(注意密碼敲了不會有顯示很正常,敲完再敲回車就行)。

mininet-vm login: mininet                   
Password: mininet                               

 

3. 好,重點來了,接下來說明如何從Ubuntu的虛擬機"遠程"SSH登錄到Mininet,這樣做的目的是可以避免在兩個虛擬機之間切來切去的麻煩。

a)首先,需要找到Mininet虛擬機的IP地址,一般是192.168.x.y格式的地址。在Mininet的命令行界面輸入:

ifconfig eth0                                          

b)如果你不希望每次從Ubuntu虛擬機SSH登錄Mininet的時候都輸一遍這個 IP地址,可以在Ubuntu虛擬機端修改一下/etc/hosts文件:

sudo gedit /etc/hosts                           

然后在文檔末尾添加以下內容后保存退出:

192.168.x.y minivm

這樣就可以在每次登陸的時候用“minivm”代替IP地址。

c)接下來就可以從Ubuntu虛擬機端SSH到Mininet了。在Ubuntu端終端輸入以下命令(沒有修改hosts文件的話就用mininet的IP地址代替minivm):

ssh -Y mininet@minivm                     

d)登陸后輸入賬號mininet密碼mininet,就到了Mininet的命令行界面了。

 

4.(可選)寫腳本一鍵SSH免密碼自動登錄Mininet。

每次都要手動敲命令還要輸入賬號密碼登陸Mininet稍顯麻煩,我們還可以做出如下簡化:

a)設置免密碼登陸:在Ubuntu端check一下是否已經有SSH密鑰:    ~/.ssh/id_rsa     或者     ~/.ssh/id_dsa      

       如果都不能找到任何文件的話,那么就需要通過命令生成SSH密鑰,同樣在Ubuntu端:       ssh-keygen -t rsa        

       為了加快以后SSH連接的速度,需要將你的公鑰添加給Mininet端。同樣在Ubuntu端:     scp ~/.ssh/id_rsa.pub mininet@minivm:~/     

       最后,在Ubuntu端先通過SSH登陸進Mininet,再在Mininet命令行模式下輸入:

                       cd ~/ && mkdir -p .ssh && chmod 700 .ssh && cd .ssh && touch authorized_keys2 && chmod 600 authorized_keys2 && cat ../id_rsa.pub >> authorized_keys2 && rm ../id_rsa.pub && cd ..                            

       操作完成后,以后每次登陸就不必輸入賬號密碼了。

 

b)寫一鍵登陸腳本:嫌輸命令麻煩的童鞋還可以繼續寫一個腳本,輸入:(其中<>表示按鍵)

    vim mininet
    <Insert>(在文檔內添加以下內容)
    !#/bin/bash
    ssh -Y mininet@minivm
    <Esc>
    :wq!
    sudo mv mininet /usr/local/bin
    sudo chmod 755 /usr/local/bin/mininet

    這樣以后在Ubuntu端每次只用通過mininet命令來一鍵登陸Mininet。

 

 

五、OpenDaylight+Mininet聯動

*本部分測試ODL和Mininet的連接,初步搭建好一個SDN試驗床。

 

 

1. 啟動MIninet和ODL。調試好網絡連接。首先通過一端Ping另一端測試網絡連通性。

 

2. 通過"minivm"命令運行腳本登陸Mininet:創建簡單實驗拓撲並指定遠程ODL作為控制器,簡單的命令可以嘗試:

sudo mn --controller=remote,ip=<ODL的IP>                        

完成后將輸出一下內容:

mininet@mininet-vm:~$ sudo mn --controller=remote,ip=192.168.174.128
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet>

 

3. 打開網頁登陸ODL的Web界面,看到如圖拓撲,聯動測試完成,一個基本的基於ODL+Mininet的SDN實驗平台就搭建好了!

 

祝順利!

 

版權聲明:本文為Heriam博主原創文章,遵循CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

博客主頁:https://jiang-hao.com

相關論文:https://www.researchgate.net/publication/305277465_A_Secure_Multi-Tenant_Framework_for_SDN


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM