SDN-tutorial

建置SDN環境,安裝 Mininet and Ryu

SDN (Software-defined networking 軟體定義網路),SDN是未來Software define anything中非常重要的起始點,因為它將改變過去封包透過硬體自行傳送的方式,SDN希望未來能透夠過軟體控制封包的流向,進而將整個網路拓撲變得更加Smart。

Ryu:SDN Framefork

Ryu是眾多SDN controller 的其中一個,其中著名的還包含ONOS,OpenDayLight等等,因為初次學習希望能選一個快速上手的環境,因此選擇Ryu controller,Ryu是透過Python做編輯,而另為兩個controller則是Java做coding,其中Ryu有GUI方便 開發者使用,但因為年久失修因版本問題不能使用了,之後我會再試試的。

Mininet 虛擬網路環境

學習網路時,總不能透過想像,去思考網路整體的流向,因此透過模擬網路環境,可以更加清晰了解我們的思緒是否有誤,常見的模擬環境有NS3、packet tracer、而packet tracer 沒有支援OpenFlow,NS3使用起來也不甚方便,Mininet有支援Python API,所以就是它了。

安裝Mininet

裝Mininet時與官網上的install方式沒有不同,所以想了解更深入的可以去他們的Official
http://mininet.org/download/

使用環境:Ubuntu 16.04 LTS

LTS指的是官方維護這個版本2年

1.將update upgrade

sudo apt update
sudo apt upgrade

2.利用 git 下載 Mininet

git clone git://github.com/mininet/mininet

如果忘了裝git的鄉親朋友

sudo apt-get install git

3.進入mininet後可以選擇你所需要的版本

cd mininet
git tag
git checkout -b 2.2.1 2.2.1

在寫文章的時候已經有 2.2.2b 版了,但因之後計畫的關係,所以必須選擇穩定版本的2.2.1

4.執行安裝

util/install.sh -a

-a 全部安裝
-nfv 安裝 mininet,Openflow 和 Open vSwitch
-s mydir 選擇之後想儲存的目錄,而並非主目錄

5.執行mininet

sudo mn

確定安裝成功。

Install Ryu

如果有上網找過許多人都不建議透過官方的版本安裝
但本身安裝完後其實不如別人說的那麼多的bug
有興趣的也可以跟我一樣試試

Ryu Official Download:https://github.com/osrg/ryu

1.Install Ryu

 pip install ryu

如果是完全乾淨的OS,必須先裝pip

sudo apt install python-pip

2.如果你喜歡從git下載

git clone git://github.com/osrg/ryu.git

3.安裝ryu

cd ryu
python ./setup.py install

如國發現setuptools沒有安裝

sudo apt-get install python-setuptools

4.執行ryu

ryu-manager

如果看到這串字

 loading app ryu.controller.ofp_handler
 instantiating app ryu.controller.ofp_hendler of OFPHandler

恭喜成功

但因為ryu 會需要裝python 的相關套件所以應該不會有人第一次就成功

5.安裝相依套件

如上述所說,要將Ryu Run起來需要幾個相依套件

sudo apt-get install python-eventlet
sudo apt-get install python-routes
sudo apt-get install python-webob
sudo apt-get install python-paramiko
sudo apt-get install python-essential
sudo apt-get install python-gevent

pip install lxml
pip install paramiko
pip install ovs

如果還是不行可以使用大絕招 將python 全部套件裝下去

sudo apt-get install autoconf binutils bison build-essential ccache flex gawk gettext git libncurses5-dev libssl-dev ncurses-term quilt sharutils subversion texinfo xsltproc zlib1g-dev libxml2-dev libxslt1-dev

6.解決問題

如果大絕招python全部裝完後,還是不行的話,就可以開始釐清另外一個問題,是不是有人把ryu的port號佔住了,現在我們就來看看吧。

sudo lsof -i

看看有沒有人把6653 or 6633 的Port號占走了,因為這兩個Port 是用來與ryu做溝通的,如果有的話把它刪除掉。

sudo kill $(sudo lsof -t -i:6633)
sudo kill $(sudo lsof -t -i:6653)

相信再command 一次

ryu-manager

一定可以看到了

 loading app ryu.controller.ofp_handler
 instantiating app ryu.controller.ofp_hendler of OFPHandler

恭喜成功

Ryu教學文件

使用實體跟虛擬差別

http://linton.tw/2014/05/15/learned-how-to-develop-sdn-openflow-applications/

Ryu入門教學

http://www.muzixing.com/pages/2014/09/20/ryuru-men-jiao-cheng.html

Ryu中文書

http://osrg.github.io/ryu-book/zh_tw/Ryubook.pdf

OpenFlow組件

http://geekwei.com/2014/11/08/RyuDoc3/

results matching ""

    No results matching ""