lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0583/1017] selftests/bpf: Make test_lwt_ip_encap more stable and faster
    Date
    From: Felix Maurer <fmaurer@redhat.com>

    [ Upstream commit d23a8720327d33616f584d76c80824bfa4699be6 ]

    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: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/test_lwt_ip_encap.sh | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    diff --git a/tools/testing/selftests/bpf/test_lwt_ip_encap.sh b/tools/testing/selftests/bpf/test_lwt_ip_encap.sh
    index b497bb85b667..6c69c42b1d60 100755
    --- a/tools/testing/selftests/bpf/test_lwt_ip_encap.sh
    +++ b/tools/testing/selftests/bpf/test_lwt_ip_encap.sh
    @@ -120,6 +120,14 @@ setup()
    ip netns exec ${NS2} sysctl -wq net.ipv4.conf.default.rp_filter=0
    ip netns exec ${NS3} sysctl -wq net.ipv4.conf.default.rp_filter=0

    + # disable IPv6 DAD because it sometimes takes too long and fails tests
    + ip netns exec ${NS1} sysctl -wq net.ipv6.conf.all.accept_dad=0
    + ip netns exec ${NS2} sysctl -wq net.ipv6.conf.all.accept_dad=0
    + ip netns exec ${NS3} sysctl -wq net.ipv6.conf.all.accept_dad=0
    + ip netns exec ${NS1} sysctl -wq net.ipv6.conf.default.accept_dad=0
    + ip netns exec ${NS2} sysctl -wq net.ipv6.conf.default.accept_dad=0
    + ip netns exec ${NS3} sysctl -wq net.ipv6.conf.default.accept_dad=0
    +
    ip link add veth1 type veth peer name veth2
    ip link add veth3 type veth peer name veth4
    ip link add veth5 type veth peer name veth6
    @@ -289,7 +297,7 @@ test_ping()
    ip netns exec ${NS1} ping -c 1 -W 1 -I veth1 ${IPv4_DST} 2>&1 > /dev/null
    RET=$?
    elif [ "${PROTO}" == "IPv6" ] ; then
    - ip netns exec ${NS1} ping6 -c 1 -W 6 -I veth1 ${IPv6_DST} 2>&1 > /dev/null
    + ip netns exec ${NS1} ping6 -c 1 -W 1 -I veth1 ${IPv6_DST} 2>&1 > /dev/null
    RET=$?
    else
    echo " test_ping: unknown PROTO: ${PROTO}"
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-05 15:25    [W:3.058 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site