2014-07-16 199 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规则都有一个匹配和一个动作。您需要为符合规则的数据包指定操作。