2014-07-16 200 views
0

我有一個虛擬網絡這樣支持OpenFlow-:修改IP和MAC-地址的網絡

http://imgur.com/wjPf2AG

開關是一種開放vswitch,然後整個網絡是由大轉變泛光燈控制器控制。

我試圖設置兩個流至交換機1:

1)捕獲來自H1任何分組至h2和改變他們的DST-IP和DST-MAC -addresses到H3的。 2)捕獲從h3到h1的任何數據包,並將它們的src-IP和src-MAC -addresses更改爲h2。

(檢查是否有確切泛光燈REST API請求的問題的底部)

所以,當從H1平我的ping H2應該改爲向H3和背部,但到目前爲止,我還沒有成功的。

可以這樣做嗎?如果是這樣,我錯過了什麼?提前致謝!

Mininet設置:

sudo mn --topo single,3 --controller remote 

泛光燈REST API請求:

查找IP地址和MAC地址,並與JQ解析:

curl localhost:8080/wm/device/ | jq '.[]|{mac,ipv4}' 

設置第一流(注意,如果你嘗試這個由你自己,MAC地址可能會不同):

curl -d '{"switch": "00:00:00:00:00:00:00:01", "name":"redirection", "src-ip":"10.0.0.1", "dst-ip":"10.0.0.2", "src-mac":"7a:b9:87:ee:d2:b7","dst-mac":"a6:77:bf:8f:c4:db", "ether-type":"0x0800","active":"true","actions":"set-dst-ip=10.0.0.3,set-dst-mac=c2:65:e3:d3:6c:11"}' localhost:8080/wm/staticflowentrypusher/json 

設置第二流動:

curl -d '{"switch": "00:00:00:00:00:00:00:01", "name":"redirection2", "src-ip":"10.0.0.3", "dst-ip":"10.0.0.1", "src-mac":"c2:65:e3:d3:6c:11","dst-mac":"7a:b9:87:ee:d2:b7", "ether-type":"0x0800","active":"true","actions":"set-src-ip=10.0.0.2,set-src-mac=a6:77:bf:8f:c4:db"}' http://localhost:8080/wm/staticflowentrypusher/json 

回答

0

你的流動沒有指定的任何轉發動作(即「輸出:2」)。因此Mac/IP在數據包中被修改,然後數據包被交換機丟棄。 OVS是一個簡單的openflow交換機,不會做任何傳統的交換/路由。

爲了您的流量做你想實現什麼,你需要如下指定輸出動作:

curl -d '{"switch": "00:00:00:00:00:00:00:01", "name":"redirection", "src-ip":"10.0.0.1", "dst-ip":"10.0.0.2", "src-mac":"7a:b9:87:ee:d2:b7","dst-mac":"a6:77:bf:8f:c4:db", "ether-type":"0x0800","active":"true","actions":"set-dst-ip=10.0.0.3,set-dst-mac=c2:65:e3:d3:6c:11,output=2"}' localhost:8080/wm/staticflowentrypusher/json 

其中2爲端口ID上所需的主機(10.0.0.3)已連接。

0

每個OpenFlow規則都有一個匹配和一個動作。您需要爲符合規則的數據包指定操作。