在之前知道了簡單的流程後,将實作一個簡單的程式。
首先,我們需要啟動mininet,指令為:
其中,
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
mininet準備工作就緒後,就可以運作ryu程式了。我們可以進入控制器的xterm,然後執行下面指令
ryu-manager --verbose ryu.app.example_switch_13
等待一段時間後,則連接配接成功,并且table-miss項也已經添加到流表中了,控制器處于一種等待packet-in的狀态。我們可以再次檢視一下switch中的流表,發現已經有一條table-miss流表項了
在host1 ping host2時,會有下面的流程發生:
我們可以通過tcpdump指令來檢視每個host接收到的資料包。例如:
之後,可以在剛開始輸入mn指令的地方輸入指令
h1 ping -c1 h2
我們再次檢視流表,發現又多出了兩個流表項,也可以檢視各個host的資料包的接收發送狀态,也可以檢視控制器的輸出,其中,in後面的四個數按順序表示分别為datapath,src,dst,in_port