Skip to content

selftests/bpf: Make test_lwt_ip_encap more stable and faster

Felix Maurer requested to merge fmaurer-rh/centos-stream-9:bz2019496 into main

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2019496
Tested: Fixed test was running for more than 24 hours without failing.
Upstream Status: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git

commit d23a8720327d33616f584d76c80824bfa4699be6
Author: Felix Maurer fmaurer@redhat.com
Date: Thu Mar 3 12:15:26 2022 +0100

selftests/bpf: Make test_lwt_ip_encap more stable and faster    

In test_lwt_ip_encap, the ingress IPv6 encap test failed from time to    
time. The failure occured when an IPv4 ping through the IPv6 GRE    
encapsulation did not receive a reply within the timeout. The IPv4 ping    
and the IPv6 ping in the test used different timeouts (1 sec for IPv4    
and 6 sec for IPv6), probably taking into account that IPv6 might need    
longer to successfully complete. However, when IPv4 pings (with the    
short timeout) are encapsulated into the IPv6 tunnel, the delays of IPv6    
apply.    

The actual reason for the long delays with IPv6 was that the IPv6    
neighbor discovery sometimes did not complete in time. This was caused    
by the outgoing interface only having a tentative link local address,    
i.e., not having completed DAD for that lladdr. The ND was successfully    
retried after 1 sec but that was too late for the ping timeout.    

The IPv6 addresses for the test were already added with nodad. However,    
for the lladdrs, DAD was still performed. We now disable DAD in the test    
netns completely and just assume that the two lladdrs on each veth pair    
do not collide. This removes all the delays for IPv6 traffic in the    
test.    

Without the delays, we can now also reduce the delay of the IPv6 ping to    
1 sec. This makes the whole test complete faster because we don't need    
to wait for the excessive timeout for each IPv6 ping that is supposed    
to fail.    

Fixes: 0fde56e4385b0 ("selftests: bpf: add test_lwt_ip_encap selftest")    
Signed-off-by: Felix Maurer <fmaurer@redhat.com>    
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>    
Link: https://lore.kernel.org/bpf/4987d549d48b4e316cd5b3936de69c8d4bc75a4f.1646305899.git.fmaurer@redhat.com    

Signed-off-by: Felix Maurer fmaurer@redhat.com

Edited by Felix Maurer

Merge request reports