天天看點

Ryu學習之實作簡單的程式

 在之前知道了簡單的流程後,将實作一個簡單的程式。

 首先,我們需要啟動mininet,指令為:

Ryu學習之實作簡單的程式

其中,

 topo single,3 建立一個有三個host,一個switch的拓撲。

 mac的值為None表示自動為各個host設定mac位址

 switch ovsk 使用的是Open vSwitch

 controller remote 使用外部的控制器

 x表示開啟xterm

 之後,我們需要将Openflow版本設定成1.3,因為預設是1.0

ovs-vsctl set Bridge s1 protocols=OpenFlow13
           

 我們先檢視一下現在交換機s1中的流表,發現是空的

ovs-ofctl -O OpenFlow13 dump-flows s1
           
Ryu學習之實作簡單的程式

 mininet準備工作就緒後,就可以運作ryu程式了。我們可以進入控制器的xterm,然後執行下面指令

ryu-manager --verbose ryu.app.example_switch_13
           
Ryu學習之實作簡單的程式

 等待一段時間後,則連接配接成功,并且table-miss項也已經添加到流表中了,控制器處于一種等待packet-in的狀态。我們可以再次檢視一下switch中的流表,發現已經有一條table-miss流表項了

Ryu學習之實作簡單的程式

 在host1 ping host2時,會有下面的流程發生:

Ryu學習之實作簡單的程式

 我們可以通過tcpdump指令來檢視每個host接收到的資料包。例如:

 之後,可以在剛開始輸入mn指令的地方輸入指令

h1 ping -c1 h2
           
Ryu學習之實作簡單的程式

 我們再次檢視流表,發現又多出了兩個流表項,也可以檢視各個host的資料包的接收發送狀态,也可以檢視控制器的輸出,其中,in後面的四個數按順序表示分别為datapath,src,dst,in_port

Ryu學習之實作簡單的程式
Ryu學習之實作簡單的程式
Ryu