版權聲明:本文為Heriam博主原創文章,遵循CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
相關論文: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://www.researchgate.net/publication/305277465_A_Secure_Multi-Tenant_Framework_for_SDN