]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: forwarding: vxlan_bridge_1q_mc_ul: Fix flakiness
authorPetr Machata <petrm@nvidia.com>
Tue, 9 Dec 2025 15:29:02 +0000 (16:29 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 11 Dec 2025 08:53:15 +0000 (00:53 -0800)
This test runs an overlay traffic, forwarded over a multicast-routed VXLAN
underlay. In order to determine whether packets reach their intended
destination, it uses a TC match. For convenience, it uses a flower match,
which however does not allow matching on the encapsulated packet. So
various service traffic ends up being indistinguishable from the test
packets, and ends up confusing the test. To alleviate the problem, the test
uses sleep to allow the necessary service traffic to run and clear the
channel, before running the test traffic. This worked for a while, but
lately we have nevertheless seen flakiness of the test in the CI.

Fix the issue by using u32 to match the encapsulated packet as well. The
confusing packets seem to always be IPv6 multicast listener reports.
Realistically they could be ARP or other ICMP6 traffic as well. Therefore
look for ethertype IPv4 in the IPv4 traffic test, and for IPv6 / UDP
combination in the IPv6 traffic test.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/6438cb1613a2a667d3ff64089eb5994778f247af.1765289566.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/forwarding/config
tools/testing/selftests/net/forwarding/vxlan_bridge_1q_mc_ul.sh

index ce64518aaa11133e2b915a8d6deb68e7b54d6176..75a6c3d3c1da3dce8634e6cb221a767aa969b46f 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_NET_ACT_VLAN=m
 CONFIG_NET_CLS_BASIC=m
 CONFIG_NET_CLS_FLOWER=m
 CONFIG_NET_CLS_MATCHALL=m
+CONFIG_NET_CLS_U32=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_META=m
 CONFIG_NETFILTER=y
index 6a570d256e07be9c0721b6c7a5f2231f7b523729..5ce19ca08846156614f27fee4d6693e44fc6225b 100755 (executable)
@@ -138,13 +138,18 @@ install_capture()
        defer tc qdisc del dev "$dev" clsact
 
        tc filter add dev "$dev" ingress proto ip pref 104 \
-          flower skip_hw ip_proto udp dst_port "$VXPORT" \
-          action pass
+          u32 match ip protocol 0x11 0xff \
+              match u16 "$VXPORT" 0xffff at 0x16 \
+              match u16 0x0800 0xffff at 0x30 \
+              action pass
        defer tc filter del dev "$dev" ingress proto ip pref 104
 
        tc filter add dev "$dev" ingress proto ipv6 pref 106 \
-          flower skip_hw ip_proto udp dst_port "$VXPORT" \
-          action pass
+          u32 match ip6 protocol 0x11 0xff \
+              match u16 "$VXPORT" 0xffff at 0x2a \
+              match u16 0x86dd 0xffff at 0x44 \
+              match u8 0x11 0xff at 0x4c \
+              action pass
        defer tc filter del dev "$dev" ingress proto ipv6 pref 106
 }