在之前的文章中,已經有介紹過如何利用Ryu的Rest API來設定Switch的Flow Entry,
不過那些都是沒有mask的下法,現在要來介紹有match filed有mask時,應該怎麼下。
1. 啟動Ryu。
2. 啟動mininet
3. 觀察Switch的Flow Entry狀況
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
6. 新增了二筆帶Mask的Flow Entry
6. 檢視Pcap檔。[下載]
7. 為什麼要特別送"ipv4_src":"10.0.0.0/31" & "ipv4_src":"10.0.0.1/31"這二個flow entry 上去呢?
在OpenFlow Spec. 1.3.2 的P. 49有一張表,
我的理解是當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所寫。
留言列表