代码之家  ›  专栏  ›  技术社区  ›  Simon Schürg

如何减少OpenFlow交换机上数据包的ttl/hop限制?

  •  2
  • Simon Schürg  · 技术社区  · 9 年前

    我知道可以添加或修改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/hopslimit的递减,就像在带有SDN交换机的IP路由器中一样。我正在使用的测试台是用运行在内核模式下的Mininet和Open vSwitch交换机构建的。

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

    1 回复  |  直到 9 年前
        1
  •  3
  •   ederlf    9 年前

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

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

    您可以在转储流的输出中看到,它将匹配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