繁体   English   中英

在已启用OpenFlow的网络中修改IP和MAC地址

[英]Modifying IP and MAC-addresses in an OpenFlow-enabled Network

我有一个像这样的虚拟网络:

http://imgur.com/wjPf2AG

交换机是开放式VSwitch,整个网络由Big Switch Floodlight控制器控制。

我正在尝试为switch1设置两个流:

1)捕获从h1到h2的任何数据包,并将其dst-IP和dst-MAC地址更改为h3的数据包。

2)捕获从h3到h1的任何数据包,并将其src-IP和src-MAC地址更改为h2的数据包。

(请在问题底部检查确切的Floodlight REST API请求)

因此,当我从h1 ping h2时,应改为ping h3并返回,但到目前为止我还没有成功。

能做到吗? 如果是这样,我想念什么? 提前致谢!

微型网络设置:

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

Floodlight 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

您的流没有指定任何转发操作(即“ output:2”)。 因此,在数据包中修改了Mac / IP,然后交换机仅丢弃了该数据包。 OVS是一个简单的开放流交换机,不执行任何传统的切换/路由。

为了使流程完成您要实现的目标,您需要指定一个输出操作,如下所示:

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是连接所需主机(10.0.0.3)的端口ID。

每个OpenFlow规则都有一个匹配项和一个操作。 您需要为符合规则的数据包指定操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM