2

我知道可以添加或修改 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 限制。

4

1 回答 1

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
于 2016-02-09T17:15:59.337 回答