Commit bb89fdac authored by Petr Machata's avatar Petr Machata Committed by Jakub Kicinski

selftests: router_mpath_nh: Test 16-bit next hop weights

Add tests that exercise full 16 bits of NH weight.

To test the 255:65535, it is necessary to run more packets than for the
other tests. On a debug kernel, the test can take up to a minute, therefore
avoid the test when KSFT_MACHINE_SLOW.
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/c0c257c00ad30b07afc3fa5e2afd135925405544.1723036486.git.petrm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 110d3ffe
...@@ -509,6 +509,13 @@ xfail_on_slow() ...@@ -509,6 +509,13 @@ xfail_on_slow()
fi fi
} }
omit_on_slow()
{
if [[ $KSFT_MACHINE_SLOW != yes ]]; then
"$@"
fi
}
xfail_on_veth() xfail_on_veth()
{ {
local dev=$1; shift local dev=$1; shift
......
...@@ -40,6 +40,7 @@ ALL_TESTS=" ...@@ -40,6 +40,7 @@ ALL_TESTS="
ping_ipv4 ping_ipv4
ping_ipv6 ping_ipv6
multipath_test multipath_test
multipath16_test
ping_ipv4_blackhole ping_ipv4_blackhole
ping_ipv6_blackhole ping_ipv6_blackhole
nh_stats_test_v4 nh_stats_test_v4
...@@ -226,9 +227,11 @@ routing_nh_obj() ...@@ -226,9 +227,11 @@ routing_nh_obj()
multipath4_test() multipath4_test()
{ {
local desc="$1" local desc=$1; shift
local weight_rp12=$2 local weight_rp12=$1; shift
local weight_rp13=$3 local weight_rp13=$1; shift
local ports=${1-sp=1024,dp=0-32768}; shift
local t0_rp12 t0_rp13 t1_rp12 t1_rp13 local t0_rp12 t0_rp13 t1_rp12 t1_rp13
local packets_rp12 packets_rp13 local packets_rp12 packets_rp13
...@@ -242,7 +245,7 @@ multipath4_test() ...@@ -242,7 +245,7 @@ multipath4_test()
t0_rp13=$(link_stats_tx_packets_get $rp13) t0_rp13=$(link_stats_tx_packets_get $rp13)
ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768" -d $MZ_DELAY -t udp "$ports"
sleep 1 sleep 1
t1_rp12=$(link_stats_tx_packets_get $rp12) t1_rp12=$(link_stats_tx_packets_get $rp12)
...@@ -259,9 +262,11 @@ multipath4_test() ...@@ -259,9 +262,11 @@ multipath4_test()
multipath6_test() multipath6_test()
{ {
local desc="$1" local desc=$1; shift
local weight_rp12=$2 local weight_rp12=$1; shift
local weight_rp13=$3 local weight_rp13=$1; shift
local ports=${1-sp=1024,dp=0-32768}; shift
local t0_rp12 t0_rp13 t1_rp12 t1_rp13 local t0_rp12 t0_rp13 t1_rp12 t1_rp13
local packets_rp12 packets_rp13 local packets_rp12 packets_rp13
...@@ -276,7 +281,7 @@ multipath6_test() ...@@ -276,7 +281,7 @@ multipath6_test()
t0_rp13=$(link_stats_tx_packets_get $rp13) t0_rp13=$(link_stats_tx_packets_get $rp13)
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \ $MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768" -d $MZ_DELAY -t udp "$ports"
sleep 1 sleep 1
t1_rp12=$(link_stats_tx_packets_get $rp12) t1_rp12=$(link_stats_tx_packets_get $rp12)
...@@ -315,6 +320,23 @@ multipath_test() ...@@ -315,6 +320,23 @@ multipath_test()
multipath6_test "Weighted MP 11:45" 11 45 multipath6_test "Weighted MP 11:45" 11 45
} }
multipath16_test()
{
check_nhgw16 104 || return
log_info "Running 16-bit IPv4 multipath tests"
multipath4_test "65535:65535" 65535 65535
multipath4_test "128:512" 128 512
omit_on_slow \
multipath4_test "255:65535" 255 65535 sp=1024-1026,dp=0-65535
log_info "Running 16-bit IPv6 multipath tests"
multipath6_test "65535:65535" 65535 65535
multipath6_test "128:512" 128 512
omit_on_slow \
multipath6_test "255:65535" 255 65535 sp=1024-1026,dp=0-65535
}
ping_ipv4_blackhole() ping_ipv4_blackhole()
{ {
RET=0 RET=0
......
...@@ -117,3 +117,16 @@ __nh_stats_test_v6() ...@@ -117,3 +117,16 @@ __nh_stats_test_v6()
$MZ -6 $h1 -A 2001:db8:1::2 -B 2001:db8:2::2 $MZ -6 $h1 -A 2001:db8:1::2 -B 2001:db8:2::2
sysctl_restore net.ipv6.fib_multipath_hash_policy sysctl_restore net.ipv6.fib_multipath_hash_policy
} }
check_nhgw16()
{
local nhid=$1; shift
ip nexthop replace id 9999 group "$nhid,65535" &>/dev/null
if (( $? )); then
log_test_skip "16-bit multipath tests" \
"iproute2 or the kernel do not support 16-bit next hop weights"
return 1
fi
ip nexthop del id 9999 ||:
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment