Commit 0c8b9a68 authored by Petr Machata's avatar Petr Machata Committed by Jakub Kicinski
Browse files

selftests: forwarding: vxlan_bridge_1q_mc_ul: Fix flakiness



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: default avatarPetr Machata <petrm@nvidia.com>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/6438cb1613a2a667d3ff64089eb5994778f247af.1765289566.git.petrm@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 0842e348
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+9 −4
Original line number Diff line number Diff line
@@ -138,12 +138,17 @@ 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" \
	   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" \
	   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
}