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

标签 ipv6 ttl mininet openflow sdn

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

相关文章:

java - 在 Java 程序中启用/禁用 IPv6 Windows 设置

我可以 bind() 到 in6addr_any( ie::) 和 sendto() localhost

java - 在 Java 中将 Aerospike 与 Spark 结合使用时设置 TTL

C套接字发送UDP并处理来自路由器的ICMP回复

linux - 将 open vswitch 连接到两个虚拟机

python - 如何在 Mininet 中运行 sudo mn --custom 选项?

c++ - 不要使用 C++ 在 Linux 中为 IPv6 数据包分段标志

c# - 嵌套文档上的 MongoDb TTL 是可能的吗?

virtualenv - 没有在 virtualenv 中命名的模块

python - 是否可以将 Twisted 与 IPv6 一起使用?