之前的文章中,已經有介紹過如何利用Ryu的Rest API來設定Switch的Flow Entry,

不過那些都是沒有mask的下法,現在要來介紹有match filed有mask時,應該怎麼下。

1. 啟動Ryu。

Screenshot 2014-10-15 02.21.24

2. 啟動mininet

Screenshot 2014-10-15 02.22.18

3. 觀察Switch的Flow Entry狀況

Screenshot 2014-10-15 02.22.31

4. 打開wireshark

5. 用Rest API推送二筆Flow Entry到Switch的Flow Table中

5.1 #curl -X POST -d '{"cookie":1,"dpid":"0000000000000001", "priority":"65533","match":{"eth_type":0x0800,"ipv4_src":"10.0.0.1/31"}, "actions":[{"type":"DROP"}]}' http://127.0.0.1:8080/stats/flowentry/add

5.2 #curl -X POST -d '{"cookie":1,"dpid":"0000000000000001", "priority":"65534","match":{"eth_type":0x0800,"ipv4_src":"10.0.0.0/31"}, "actions":[{"type":"DROP"}]}' http://127.0.0.1:8080/stats/flowentry/add

Screenshot 2014-10-15 23.33.33  

Screenshot 2014-10-15 23.33.39  

6. 新增了二筆帶Mask的Flow Entry

Screenshot 2014-10-15 02.24.31  

6. 檢視Pcap檔。[下載]

 Screenshot 2014-10-16 00.11.08  

7. 為什麼要特別送"ipv4_src":"10.0.0.0/31" & "ipv4_src":"10.0.0.1/31"這二個flow entry 上去呢?

OpenFlow Spec. 1.3.2 的P. 49有一張表,

Screenshot 2014-10-16 00.13.22  

我的理解是當oxm_mask =0的時候,oxm_value不可以等於1,

所以我故意送了"ipv4_src":"10.0.0.1/31"上去,還抓了封包看看究竟是送了什麼flow_mod給Switch

結果看起來mininet的switch有在這方面作一點修飾,不論是"ipv4_src":"10.0.0.0/31" 還是"ipv4_src":"10.0.0.1/31"

到了switch裡都是"ipv4_src":"10.0.0.0/31",符合spec所寫。

qmaw 發表在 痞客邦 留言(0) 人氣()