如何配置流表使數據包返回發送來的節點

假設有如圖所示的拓撲,由 Mininet 創建,鏈路都是雙向的,交換機通過控制器下發的流表控制數據包流向。

若需要配置這樣一條路徑:s1→s2→s4→s2→s3。s1→s2 與 s2→s3 的流表無需贅述,關鍵是 s2→s4→s2 這一段,怎麼才能讓 s4 發回到 s2 呢?

試過的不可行方法

單純地給 s4 配置這樣一條流表是行不通的:

 cookie=0x0, duration=22.849s, table=0, n_packets=0, n_bytes=0, idle_age=22, 
priority=3,udp,in_port=1,nw_src=10.0.0.18,nw_dst=10.0.0.26 actions=output:1

出端口等於入端口,交換機能接收到數據包,並不會保存這份數據包然後將它從入端口轉發出去。

同理設置流表中的動作爲 OFPP_IN_PORT 也不行(所以這個選項到底是用在哪的)。

可行的方法

把需要折返的鏈路看作單向鏈路,在 s2 與 s4 之間建立兩條連線,如圖所示。

給 s4 配置流表:

 cookie=0x0, duration=22.849s, table=0, n_packets=0, n_bytes=0, idle_age=22, 
priority=3,udp,in_port=2,nw_src=10.0.0.18,nw_dst=10.0.0.26 actions=output:1

給 s2 配置流表:

 cookie=0x0, duration=22.849s, table=0, n_packets=0, n_bytes=0, idle_age=22, 
priority=3,udp,in_port=1,nw_src=10.0.0.18,nw_dst=10.0.0.26 actions=output:3
 cookie=0x0, duration=22.849s, table=0, n_packets=0, n_bytes=0, idle_age=22, 
priority=3,udp,in_port=2,nw_src=10.0.0.18,nw_dst=10.0.0.26 actions=output:4

這樣纔可以實現數據流的折返。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章