---
# System prepended metadata

title: RYU程式開發流程
tags: [SDN]

---

---
tags: SDN
---

# RYU程式開發流程

![](https://i.imgur.com/cQNhOZj.png)
![](https://i.imgur.com/elPbpY1.png)


## 環境準備

- Ubuntu 20.04
- Mininet
- RYU

### 安裝方式

先準備一台Linux Server，然後下以下指令安裝RYU和Mininet

- RYU
```shell=
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install git -y
sudo apt-get install python3-pip -y
sudo pip3 install --upgrade pip
git clone git://github.com/osrg/ryu.git
cd ryu
sudo pip3 install -r tools/pip-requires
sudo python3 setup.py install
```

- Mininet
```shell=
git clone git://github.com/mininet/mininet 
mininet/util/install.sh -a
```

- 測試是否能夠正常運行

```shell=
#mininet
sudo mn
#ryu
ryu-manager
```

## RYU學習流程

### Mininet基本操作

Mininet可以虛擬出網路環境，要先熟悉如何使用。

[熟悉mininet以及簡單的測試](https://sites.google.com/site/sdnruantidingyiwanglu/xing-dong-kuan-pin-jian-duan-ji-shu-tui-guang-ji-hua/shu-ximininet-yi-ji-jian-dan-de-ce-shi)


### RYU基本APP(Simple Switch)

要使用RYU，首先要了解如何利用RYU對Mininet的OVS下達Flow，RYU所提供的範例(Simple Switch)為最簡單上手方式。

[Simple Switch教學影片](https://www.youtube.com/watch?v=2VRsituJ6a8)

[Simple Switch介紹網站](https://osrg.github.io/ryu-book/zh_tw/html/switching_hub.html)

[Simple Switch原始碼](https://github.com/faucetsdn/ryu/blob/master/ryu/app/simple_switch_13.py)


### RYU新增Flow

了解RYU基本運作後，接著可以試著自己建立Flow規則，讓Mininet的Host能根據Flow而Ping通。

[RYU Controller with Mininet](https://myweb.ntut.edu.tw/~phtseng/SDN/LAB2.pdf)

[ryu add flow程式碼](https://github.com/uccuz/sdnHandout/tree/master/3.ryu_addFlow)


### RYU流量監控

在RYU APP中，經常會透過網路流量的不同來下達Flow(如最短路徑、特權路徑)，所以需要學習如何進行流量監控，RYU所提供的範例(Simple Monitor)為最簡單上手方式。

[Simple Monitor介紹網站](https://osrg.github.io/ryu-book/zh_tw/html/traffic_monitor.html)

[Simple Monitor原始碼](https://github.com/faucetsdn/ryu/blob/master/ryu/app/simple_monitor_13.py)


### RYU-exercises

大致了解RYU的應用方式，試著跑看看這個LAB裡的程式並讀懂程式碼，可以理解各種如何使用RYU來設置Flow的技巧。

[ryu-exercises](https://github.com/knetsolutions/learn-sdn-with-ryu/tree/master/ryu-exercises)


## RYU專題開發


### 專題發想

- 可以翻翻網路上的論文得到靈感


### Raspberry Pi OVS

- 若要建置實體網路，會需要使用PI來建立OVS，安裝過程複雜，可以參考教學。

[Open vSwitch (OVS) on Raspberry PI](https://myweb.ntut.edu.tw/~phtseng/SDN/LAB3.pdf)