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組件