Commit 7b2d64f9 authored by Ido Schimmel's avatar Ido Schimmel Committed by Jakub Kicinski
Browse files

selftests: forwarding: Remove IPv6 L3 multipath hash tests



The multipath tests currently test both the L3 and L4 multipath hash
policies for IPv6, but only the L4 policy for IPv4. The reason is mostly
historic: When the initial multipath test was added
(router_multipath.sh) the IPv6 L4 policy did not exist and was later
added to the test. The other multipath tests copied this pattern
although there is little value in testing both policies.

Align the IPv4 and IPv6 tests and only test the L4 policy. On my system,
this reduces the run time of router_multipath.sh by 89% because of the
repeated ping6 invocations to randomize the flow label.

Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/20240304095612.462900-2-idosch@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 00af2aa9
Loading
Loading
Loading
Loading
+0 −37
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ ALL_TESTS="
	ping_ipv6
	multipath_ipv4
	multipath_ipv6
	multipath_ipv6_l4
"

NUM_NETIFS=6
@@ -264,34 +263,6 @@ multipath6_test()
	local weight1=$1; shift
	local weight2=$1; shift

	sysctl_set net.ipv6.fib_multipath_hash_policy 0
	ip nexthop replace id 103 group 101,$weight1/102,$weight2

	local t0_111=$(tc_rule_stats_get $ul2 111 ingress)
	local t0_222=$(tc_rule_stats_get $ul2 222 ingress)

	# Generate 16384 echo requests, each with a random flow label.
	for ((i=0; i < 16384; ++i)); do
		ip vrf exec v$h1 $PING6 2001:db8:2::2 -F 0 -c 1 -q &> /dev/null
	done

	local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
	local t1_222=$(tc_rule_stats_get $ul2 222 ingress)

	local d111=$((t1_111 - t0_111))
	local d222=$((t1_222 - t0_222))
	multipath_eval "$what" $weight1 $weight2 $d111 $d222

	ip nexthop replace id 103 group 101/102
	sysctl_restore net.ipv6.fib_multipath_hash_policy
}

multipath6_l4_test()
{
	local what=$1; shift
	local weight1=$1; shift
	local weight2=$1; shift

	sysctl_set net.ipv6.fib_multipath_hash_policy 1
	ip nexthop replace id 103 group 101,$weight1/102,$weight2

@@ -339,14 +310,6 @@ multipath_ipv6()
	multipath6_test "Weighted MP 11:45" 11 45
}

multipath_ipv6_l4()
{
	log_info "Running IPv6 L4 hash multipath tests"
	multipath6_l4_test "ECMP" 1 1
	multipath6_l4_test "Weighted MP 2:1" 2 1
	multipath6_l4_test "Weighted MP 11:45" 11 45
}

trap cleanup EXIT

setup_prepare
+0 −38
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ ALL_TESTS="
	ping_ipv6
	multipath_ipv4
	multipath_ipv6
	multipath_ipv6_l4
"

NUM_NETIFS=6
@@ -267,35 +266,6 @@ multipath6_test()
	local weight1=$1; shift
	local weight2=$1; shift

	sysctl_set net.ipv6.fib_multipath_hash_policy 0
	ip nexthop replace id 103 group 101,$weight1/102,$weight2 \
		type resilient

	local t0_111=$(tc_rule_stats_get $ul2 111 ingress)
	local t0_222=$(tc_rule_stats_get $ul2 222 ingress)

	# Generate 16384 echo requests, each with a random flow label.
	for ((i=0; i < 16384; ++i)); do
		ip vrf exec v$h1 $PING6 2001:db8:2::2 -F 0 -c 1 -q &> /dev/null
	done

	local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
	local t1_222=$(tc_rule_stats_get $ul2 222 ingress)

	local d111=$((t1_111 - t0_111))
	local d222=$((t1_222 - t0_222))
	multipath_eval "$what" $weight1 $weight2 $d111 $d222

	ip nexthop replace id 103 group 101/102 type resilient
	sysctl_restore net.ipv6.fib_multipath_hash_policy
}

multipath6_l4_test()
{
	local what=$1; shift
	local weight1=$1; shift
	local weight2=$1; shift

	sysctl_set net.ipv6.fib_multipath_hash_policy 1
	ip nexthop replace id 103 group 101,$weight1/102,$weight2 \
		type resilient
@@ -344,14 +314,6 @@ multipath_ipv6()
	multipath6_test "Weighted MP 11:45" 11 45
}

multipath_ipv6_l4()
{
	log_info "Running IPv6 L4 hash multipath tests"
	multipath6_l4_test "ECMP" 1 1
	multipath6_l4_test "Weighted MP 2:1" 2 1
	multipath6_l4_test "Weighted MP 11:45" 11 45
}

trap cleanup EXIT

setup_prepare
+1 −34
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ multipath4_test()
	sysctl_restore net.ipv4.fib_multipath_hash_policy
}

multipath6_l4_test()
multipath6_test()
{
	local desc="$1"
	local weight_rp12=$2
@@ -251,34 +251,6 @@ multipath6_l4_test()
	sysctl_restore net.ipv6.fib_multipath_hash_policy
}

multipath6_test()
{
	local desc="$1"
	local weight_rp12=$2
	local weight_rp13=$3
	local t0_rp12 t0_rp13 t1_rp12 t1_rp13
	local packets_rp12 packets_rp13

	ip nexthop replace id 106 group 104,$weight_rp12/105,$weight_rp13

	t0_rp12=$(link_stats_tx_packets_get $rp12)
	t0_rp13=$(link_stats_tx_packets_get $rp13)

	# Generate 16384 echo requests, each with a random flow label.
	for _ in $(seq 1 16384); do
		ip vrf exec vrf-h1 $PING6 2001:db8:2::2 -F 0 -c 1 -q >/dev/null 2>&1
	done

	t1_rp12=$(link_stats_tx_packets_get $rp12)
	t1_rp13=$(link_stats_tx_packets_get $rp13)

	let "packets_rp12 = $t1_rp12 - $t0_rp12"
	let "packets_rp13 = $t1_rp13 - $t0_rp13"
	multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13

	ip nexthop replace id 106 group 104/105
}

multipath_test()
{
	log_info "Running IPv4 multipath tests"
@@ -301,11 +273,6 @@ multipath_test()
	multipath6_test "ECMP" 1 1
	multipath6_test "Weighted MP 2:1" 2 1
	multipath6_test "Weighted MP 11:45" 11 45

	log_info "Running IPv6 L4 hash multipath tests"
	multipath6_l4_test "ECMP" 1 1
	multipath6_l4_test "Weighted MP 2:1" 2 1
	multipath6_l4_test "Weighted MP 11:45" 11 45
}

ping_ipv4_blackhole()
+1 −38
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@ multipath4_test()
       sysctl_restore net.ipv4.fib_multipath_hash_policy
}

multipath6_l4_test()
multipath6_test()
{
       local desc="$1"
       local weight_rp12=$2
@@ -232,38 +232,6 @@ multipath6_l4_test()
       sysctl_restore net.ipv6.fib_multipath_hash_policy
}

multipath6_test()
{
       local desc="$1"
       local weight_rp12=$2
       local weight_rp13=$3
       local t0_rp12 t0_rp13 t1_rp12 t1_rp13
       local packets_rp12 packets_rp13

       ip route replace 2001:db8:2::/64 vrf vrf-r1 \
	       nexthop via fe80:2::22 dev $rp12 weight $weight_rp12 \
	       nexthop via fe80:3::23 dev $rp13 weight $weight_rp13

       t0_rp12=$(link_stats_tx_packets_get $rp12)
       t0_rp13=$(link_stats_tx_packets_get $rp13)

       # Generate 16384 echo requests, each with a random flow label.
       for _ in $(seq 1 16384); do
	       ip vrf exec vrf-h1 $PING6 2001:db8:2::2 -F 0 -c 1 -q &> /dev/null
       done

       t1_rp12=$(link_stats_tx_packets_get $rp12)
       t1_rp13=$(link_stats_tx_packets_get $rp13)

       let "packets_rp12 = $t1_rp12 - $t0_rp12"
       let "packets_rp13 = $t1_rp13 - $t0_rp13"
       multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13

       ip route replace 2001:db8:2::/64 vrf vrf-r1 \
	       nexthop via fe80:2::22 dev $rp12 \
	       nexthop via fe80:3::23 dev $rp13
}

multipath_test()
{
	log_info "Running IPv4 multipath tests"
@@ -275,11 +243,6 @@ multipath_test()
	multipath6_test "ECMP" 1 1
	multipath6_test "Weighted MP 2:1" 2 1
	multipath6_test "Weighted MP 11:45" 11 45

	log_info "Running IPv6 L4 hash multipath tests"
	multipath6_l4_test "ECMP" 1 1
	multipath6_l4_test "Weighted MP 2:1" 2 1
	multipath6_l4_test "Weighted MP 11:45" 11 45
}

setup_prepare()