如何在OpenFlow交换机上减少数据包的ttl / hoplimit?

时间:2016-02-05 05:21:41

标签: ipv6 ttl mininet openflow sdn

我知道可以添加或修改单个OpenFlow交换机流来减少TTL(IPv4)或跳数限制(IPv6)。

我使用泛光灯控制器和以下流程

测试了它
ovs-ofctl -O OpenFlow13 add-flow s1 "priority=1,ip,in_port=2,dl_src=<src_mac>,dl_dst=<dst-mac>,nw_src=10.0.0.1,nw_dst=10.0.0.2 actions=dec_ttl,output:1"

但是如何通过交换机的所有UDP IPv6数据包执行此操作? 我无法一直更新所有流量。

我想模拟ttl / hoplimit的减少,就像在带有SDN交换机的IP路由器中完成的那样。我正在使用的测试平台是在内核模式下运行的Mininet和Open vSwitch交换机构建的。

我不想编写整个SDN控制器,我也不想自己实现所有流程。我只是希望交换机减少每个UDP IPv6数据包传递的ttl / hop限制。

1 个答案:

答案 0 :(得分:3)

您可以使用流仅匹配UDP数据包,如下所示:

$ sudo ovs-ofctl -O OpenFlow13 add-flow s1 "priority=1,dl_type=0x86DD,nw_proto=17 actions=dec_ttl"

你可以在dump-flow的输出中看到它将匹配ipv6数据包上的udp:

$ sudo ovs-ofctl  dump-flows s1 -O OpenFlow13
cookie=0x0, duration=4.103s, table=0, n_packets=0, n_bytes=0, priority=1,udp6 actions=dec_ttl