我知道可以添加或修改 OpenFlow 交换机的单个流以减少 TTL(IPv4) 或跳数限制 (IPv6)。
我使用泛光灯 Controller 和以下流程条目对其进行了测试
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 Controller ,也不想自己实现所有流程。我只是希望交换机减少每个 UDP IPv6 数据包通过的 ttl/hop 限制。
最佳答案
您可以使用流仅匹配 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
关于ipv6 - 如何减少 OpenFlow 交换机上数据包的 ttl/hoplimit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35216801/