SDN ryu 專題安裝

Preview:

Citation preview

SDN ryu 及其應用SDN & Application

專題成果董承樺、張廷謙、林展逸2014/10 – 2015/12

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

環境架設(Environment Setting)

• 作業系統: Ubuntu Linux ( 使用虛擬機 )• 模擬網路環境: Mininet• 控制器: Ryu Controller• 套件: Python 、 Git…

Ubuntu Linux ( 使用虛擬機 )

• 新增

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

開啟 Linux

Ubuntu Linux ( 使用虛擬機 )

Ubuntu Linux ( 使用虛擬機 )

• 安裝完成

基本指令• Ctrl + Alt + T :開啟終端機• $ clear :清除畫面• $ cd { 目錄 } :資料夾移動

開啟終端機• Ctrl + Alt + T

更新系統• $ sudo apt-get update• $ sudo apt-get upgrade

Mininet 安裝• $ sudo apt-get install -y git• $ git clone git://github.com/mininet/mininet• $ cd mininet• $ util/install.sh -nfv• $ cd

Mininet 安裝• $ sudo mn --test pingall ( 測試 )• 安裝成功圖

Python 安裝• $ sudo apt-get install python-pip python-dev

build-essential• $ sudo pip install --upgrade pip

Ryu 安裝• $ sudo apt-get update• $ sudo apt-get install python-eventlet python-

routes python-webob python-paramiko• $ git clone https://github.com/osrg/ryu.git• $ cd ryu; python ./setup.py install• $ sudo pip install ryu• $ sudo pip install six --upgrade• $ sudo pip install oslo.config

Ryu 測試• $ ryu-manager• 成功圖

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

軟體定義網路Soft Defined Network

• 由 Controller 控制網路

軟體定義網路Soft Defined Network

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

Ryu Controller

• Python 語言, Open Source

Ryu Controller

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

胖樹拓樸Fat Tree

• Mininet 模擬, Python Script• 三層 | 任兩點多重路徑

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

應用:多重路徑Application(Multipath)

• 目的:利用多重路徑,避免壅塞

新 HostB 加入

AB

Controller 下發規則給 Switch

AB

B 送達 A

AB

四種路徑

流量監控選擇 bottleneck 剩餘流量最大

規則 Time Out

AB

Controller 下發規則給 Switch

AB

B 送達 A

AB

3001 3002 3003 3004 3005 3006 3007 3008

2001 2002 2003 2004 2005 2006 2007 2008

1001 1002 1003 1004

h001h002 h003h004 h005h006 h007h008 h009 h010 h011h012 h013h014 h015h016

A small experiment

• All host ping to h008• wireshark

All host ping to h008

s1001 s1002 s1003 s10040

5

10

15

20

25

30

35

Traffic monitor Destination hash

Switch

Pack

et

大綱Outline

• 環境架設 (Environment Setting)• 軟體定義網路 (Soft Defined Network)• 控制器 Ryu (Ryu Controller)• 胖樹拓樸 (Fat Tree)• 應用:多重路徑 (Application:Multipath)• 實驗操作 (Demo)

開啟終端機 (Ryu Controller+ App)

• 將程式碼存在” ryu/ryu/myapp/”

• $ ryu-manager –observe-links ryu/ryu/myapp/fatTreeMultipath.py

• 執行 Ryu Controller + App

另一個終端機 (Mininet)

• 將 Fat Tree 產生腳本下載• $ sudo ./fatTreeTopology.py

Mininet 終端機• H1 ping H5 30 次• $ h001 ping –c30 h005

Ryu Controller 終端機• Controller 收到 s3001 Packet In 事件• 1. 找 Host5• 2. Host5 收到,回封包給 Host1• 3. Host1 在送封包給, Host5

找 Host5

找到 Host5( 用 Group Table)

H5→H1

H1→H5

Ryu Controller 終端機• 結束 Controller• Ctrl + C

Mininet 終端機• 關閉 Mininet 後• $ sudo mn –c ( 關閉 Mininet 都要下這個指令 )

重啟 Mininet 和 Ryu Controller

• $ ryu-manager –observe-links ryu/ryu/myapp/fatTreeMultipath.py

• $ sudo ./fatTreeTopology.py

Mininet 終端機• 觀察 h001 ,跳出一個新的終端機• $ xterm h001

H001 終端機• Ping H8 (10.0.0.8)• $ ping 10.0.0.8

Ryu Controller 終端機• H1→H8 成功

開啟每一個 Host ping Host8

• $ xterm hxxx• 重複剛剛步驟

完成實驗

Recommended