mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
Merge branch 'selftests-forwarding-various-improvements'
Ido Schimmel says: ==================== selftests: forwarding: Various improvements This patchset speeds up the multipath tests (patches #1-#2) and makes other tests more stable (patches #3-#6) so that they will not randomly fail in the netdev CI. On my system, after applying the first two patches, the run time of gre_multipath_nh_res.sh is reduced by over 90%. ==================== Link: https://lore.kernel.org/r/20240304095612.462900-1-idosch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
5ad051235c
@ -183,42 +183,42 @@ send_src_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A "198.51.100.2-198.51.100.253" -B 203.0.113.2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B "203.0.113.2-203.0.113.253" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_src_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
send_src_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A "2001:db8:1::2-2001:db8:1::fd" -B 2001:db8:4::2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B "2001:db8:4::2-2001:db8:4::fd" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_flowlabel()
|
||||
@ -234,14 +234,14 @@ send_src_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:4::2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:4::2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
custom_hash_test()
|
||||
|
@ -28,6 +28,8 @@ PING=ping
|
||||
PING6=ping6
|
||||
# Packet generator. Some distributions use 'mz'.
|
||||
MZ=mausezahn
|
||||
# mausezahn delay between transmissions in microseconds.
|
||||
MZ_DELAY=0
|
||||
# Time to wait after interfaces participating in the test are all UP
|
||||
WAIT_TIME=5
|
||||
# Whether to pause on failure or not.
|
||||
|
@ -278,42 +278,42 @@ send_src_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A "198.51.100.2-198.51.100.253" -B 203.0.113.2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B "203.0.113.2-203.0.113.253" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_src_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
send_src_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A "2001:db8:1::2-2001:db8:1::fd" -B 2001:db8:2::2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B "2001:db8:2::2-2001:db8:2::fd" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_flowlabel()
|
||||
@ -329,14 +329,14 @@ send_src_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
custom_hash_test()
|
||||
|
@ -267,7 +267,7 @@ multipath4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -q -p 64 -A "192.0.3.2-192.0.3.62" -B "192.0.4.2-192.0.4.62" \
|
||||
-d 1msec -c 50 -t udp "sp=1024,dp=1024"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=1024,dp=1024"
|
||||
sleep 1
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul32 111 ingress)
|
||||
|
@ -266,9 +266,9 @@ multipath6_test()
|
||||
local t0_222=$(tc_rule_stats_get $ul32 222 ingress)
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -6 -q -p 64 -A "2001:db8:1::2-2001:db8:1::1e" \
|
||||
-B "2001:db8:2::2-2001:db8:2::1e" \
|
||||
-d 1msec -c 50 -t udp "sp=1024,dp=1024"
|
||||
$MZ $h1 -6 -q -p 64 -A "2001:db8:1::2-2001:db8:1::3e" \
|
||||
-B "2001:db8:2::2-2001:db8:2::3e" \
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=1024,dp=1024"
|
||||
sleep 1
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul32 111 ingress)
|
||||
|
@ -220,7 +220,7 @@ multipath4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -q -p 64 -A 192.0.2.1 -B 192.0.2.18 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
|
||||
local t1_222=$(tc_rule_stats_get $ul2 222 ingress)
|
||||
|
@ -64,7 +64,6 @@ ALL_TESTS="
|
||||
ping_ipv6
|
||||
multipath_ipv4
|
||||
multipath_ipv6
|
||||
multipath_ipv6_l4
|
||||
"
|
||||
|
||||
NUM_NETIFS=6
|
||||
@ -245,7 +244,7 @@ multipath4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -q -p 64 -A 192.0.2.1 -B 192.0.2.18 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
|
||||
local t1_222=$(tc_rule_stats_get $ul2 222 ingress)
|
||||
@ -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
|
||||
|
||||
@ -300,7 +271,7 @@ multipath6_l4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::1 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
|
||||
local t1_222=$(tc_rule_stats_get $ul2 222 ingress)
|
||||
@ -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
|
||||
|
@ -64,7 +64,6 @@ ALL_TESTS="
|
||||
ping_ipv6
|
||||
multipath_ipv4
|
||||
multipath_ipv6
|
||||
multipath_ipv6_l4
|
||||
"
|
||||
|
||||
NUM_NETIFS=6
|
||||
@ -248,7 +247,7 @@ multipath4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -q -p 64 -A 192.0.2.1 -B 192.0.2.18 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
|
||||
local t1_222=$(tc_rule_stats_get $ul2 222 ingress)
|
||||
@ -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
|
||||
@ -305,7 +275,7 @@ multipath6_l4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::1 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul2 111 ingress)
|
||||
local t1_222=$(tc_rule_stats_get $ul2 222 ingress)
|
||||
@ -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
|
||||
|
@ -280,42 +280,42 @@ send_src_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A "198.51.100.2-198.51.100.253" -B 203.0.113.2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B "203.0.113.2-203.0.113.253" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_src_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp4()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ $h1 -q -p 64 \
|
||||
-A 198.51.100.2 -B 203.0.113.2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
send_src_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A "2001:db8:1::2-2001:db8:1::fd" -B 2001:db8:2::2 \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_ipv6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B "2001:db8:2::2-2001:db8:2::fd" \
|
||||
-d 1msec -c 50 -t udp "sp=20000,dp=30000"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=20000,dp=30000"
|
||||
}
|
||||
|
||||
send_flowlabel()
|
||||
@ -331,14 +331,14 @@ send_src_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=0-32768,dp=30000"
|
||||
-d $MZ_DELAY -t udp "sp=0-32768,dp=30000"
|
||||
}
|
||||
|
||||
send_dst_udp6()
|
||||
{
|
||||
ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \
|
||||
-A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=20000,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=20000,dp=0-32768"
|
||||
}
|
||||
|
||||
custom_hash_test()
|
||||
|
@ -266,7 +266,7 @@ multipath4_test()
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -q -p 64 -A "192.0.3.2-192.0.3.62" -B "192.0.4.2-192.0.4.62" \
|
||||
-d 1msec -c 50 -t udp "sp=1024,dp=1024"
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=1024,dp=1024"
|
||||
sleep 1
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul32 111 ingress)
|
||||
|
@ -265,9 +265,9 @@ multipath6_test()
|
||||
local t0_222=$(tc_rule_stats_get $ul32 222 ingress)
|
||||
|
||||
ip vrf exec v$h1 \
|
||||
$MZ $h1 -6 -q -p 64 -A "2001:db8:1::2-2001:db8:1::1e" \
|
||||
-B "2001:db8:2::2-2001:db8:2::1e" \
|
||||
-d 1msec -c 50 -t udp "sp=1024,dp=1024"
|
||||
$MZ $h1 -6 -q -p 64 -A "2001:db8:1::2-2001:db8:1::3e" \
|
||||
-B "2001:db8:2::2-2001:db8:2::3e" \
|
||||
-d $MZ_DELAY -c 50 -t udp "sp=1024,dp=1024"
|
||||
sleep 1
|
||||
|
||||
local t1_111=$(tc_rule_stats_get $ul32 111 ingress)
|
||||
|
@ -356,7 +356,7 @@ test_traffic_ip4ip6()
|
||||
flower $TC_FLAG dst_ip 203.0.113.1 action pass
|
||||
|
||||
$MZ $h1 -c 1000 -p 64 -a $h1mac -b $ol1mac -A 198.51.100.1 \
|
||||
-B 203.0.113.1 -t ip -q -d 1msec
|
||||
-B 203.0.113.1 -t ip -q -d $MZ_DELAY
|
||||
|
||||
# Check ports after encap and after decap.
|
||||
tc_check_at_least_x_packets "dev $ul1 egress" 101 1000
|
||||
@ -389,7 +389,7 @@ test_traffic_ip6ip6()
|
||||
flower $TC_FLAG dst_ip 2001:db8:2::1 action pass
|
||||
|
||||
$MZ -6 $h1 -c 1000 -p 64 -a $h1mac -b $ol1mac -A 2001:db8:1::1 \
|
||||
-B 2001:db8:2::1 -t ip -q -d 1msec
|
||||
-B 2001:db8:2::1 -t ip -q -d $MZ_DELAY
|
||||
|
||||
# Check ports after encap and after decap.
|
||||
tc_check_at_least_x_packets "dev $ul1 egress" 101 1000
|
||||
|
@ -8,6 +8,7 @@
|
||||
PING=${PING:=ping}
|
||||
PING6=${PING6:=ping6}
|
||||
MZ=${MZ:=mausezahn}
|
||||
MZ_DELAY=${MZ_DELAY:=0}
|
||||
ARPING=${ARPING:=arping}
|
||||
TEAMD=${TEAMD:=teamd}
|
||||
WAIT_TIME=${WAIT_TIME:=5}
|
||||
|
@ -204,7 +204,7 @@ multipath4_test()
|
||||
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 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
@ -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
|
||||
@ -237,7 +237,7 @@ multipath6_l4_test()
|
||||
t0_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
|
||||
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
@ -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()
|
||||
|
@ -205,7 +205,7 @@ multipath4_test()
|
||||
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 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
@ -235,7 +235,7 @@ multipath6_l4_test()
|
||||
t0_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
|
||||
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
|
@ -179,7 +179,7 @@ multipath4_test()
|
||||
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 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
@ -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
|
||||
@ -216,7 +216,7 @@ multipath6_l4_test()
|
||||
t0_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
|
||||
$MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \
|
||||
-d 1msec -t udp "sp=1024,dp=0-32768"
|
||||
-d $MZ_DELAY -t udp "sp=1024,dp=0-32768"
|
||||
|
||||
t1_rp12=$(link_stats_tx_packets_get $rp12)
|
||||
t1_rp13=$(link_stats_tx_packets_get $rp13)
|
||||
@ -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()
|
||||
|
@ -140,7 +140,7 @@ police_common_test()
|
||||
sleep 10
|
||||
local t1=$(tc_rule_stats_get $h2 1 ingress .bytes)
|
||||
|
||||
local er=$((80 * 1000 * 1000))
|
||||
local er=$((10 * 1000 * 1000))
|
||||
local nr=$(rate $t0 $t1 10)
|
||||
local nr_pct=$((100 * (nr - er) / er))
|
||||
((-10 <= nr_pct && nr_pct <= 10))
|
||||
@ -157,7 +157,7 @@ police_rx_test()
|
||||
# Rule to police traffic destined to $h2 on ingress of $rp1
|
||||
tc filter add dev $rp1 ingress protocol ip pref 1 handle 101 flower \
|
||||
dst_ip 198.51.100.1 ip_proto udp dst_port 54321 \
|
||||
action police rate 80mbit burst 16k conform-exceed drop/ok
|
||||
action police rate 10mbit burst 16k conform-exceed drop/ok
|
||||
|
||||
police_common_test "police on rx"
|
||||
|
||||
@ -169,7 +169,7 @@ police_tx_test()
|
||||
# Rule to police traffic destined to $h2 on egress of $rp2
|
||||
tc filter add dev $rp2 egress protocol ip pref 1 handle 101 flower \
|
||||
dst_ip 198.51.100.1 ip_proto udp dst_port 54321 \
|
||||
action police rate 80mbit burst 16k conform-exceed drop/ok
|
||||
action police rate 10mbit burst 16k conform-exceed drop/ok
|
||||
|
||||
police_common_test "police on tx"
|
||||
|
||||
@ -190,7 +190,7 @@ police_shared_common_test()
|
||||
sleep 10
|
||||
local t1=$(tc_rule_stats_get $h2 1 ingress .bytes)
|
||||
|
||||
local er=$((80 * 1000 * 1000))
|
||||
local er=$((10 * 1000 * 1000))
|
||||
local nr=$(rate $t0 $t1 10)
|
||||
local nr_pct=$((100 * (nr - er) / er))
|
||||
((-10 <= nr_pct && nr_pct <= 10))
|
||||
@ -211,7 +211,7 @@ police_shared_test()
|
||||
# Rule to police traffic destined to $h2 on ingress of $rp1
|
||||
tc filter add dev $rp1 ingress protocol ip pref 1 handle 101 flower \
|
||||
dst_ip 198.51.100.1 ip_proto udp dst_port 54321 \
|
||||
action police rate 80mbit burst 16k conform-exceed drop/ok \
|
||||
action police rate 10mbit burst 16k conform-exceed drop/ok \
|
||||
index 10
|
||||
|
||||
# Rule to police a different flow destined to $h2 on egress of $rp2
|
||||
@ -250,7 +250,7 @@ police_mirror_common_test()
|
||||
# Rule to police traffic destined to $h2 and mirror to $h3
|
||||
tc filter add dev $pol_if $dir protocol ip pref 1 handle 101 flower \
|
||||
dst_ip 198.51.100.1 ip_proto udp dst_port 54321 \
|
||||
action police rate 80mbit burst 16k conform-exceed drop/pipe \
|
||||
action police rate 10mbit burst 16k conform-exceed drop/pipe \
|
||||
action mirred egress mirror dev $rp3
|
||||
|
||||
mausezahn $h1 -a own -b $(mac_get $rp1) -A 192.0.2.1 -B 198.51.100.1 \
|
||||
@ -260,7 +260,7 @@ police_mirror_common_test()
|
||||
sleep 10
|
||||
local t1=$(tc_rule_stats_get $h2 1 ingress .bytes)
|
||||
|
||||
local er=$((80 * 1000 * 1000))
|
||||
local er=$((10 * 1000 * 1000))
|
||||
local nr=$(rate $t0 $t1 10)
|
||||
local nr_pct=$((100 * (nr - er) / er))
|
||||
((-10 <= nr_pct && nr_pct <= 10))
|
||||
@ -270,7 +270,7 @@ police_mirror_common_test()
|
||||
sleep 10
|
||||
local t1=$(tc_rule_stats_get $h3 1 ingress .bytes)
|
||||
|
||||
local er=$((80 * 1000 * 1000))
|
||||
local er=$((10 * 1000 * 1000))
|
||||
local nr=$(rate $t0 $t1 10)
|
||||
local nr_pct=$((100 * (nr - er) / er))
|
||||
((-10 <= nr_pct && nr_pct <= 10))
|
||||
|
@ -495,7 +495,7 @@ vxlan_ping_test()
|
||||
local delta=$((t1 - t0))
|
||||
|
||||
# Tolerate a couple stray extra packets.
|
||||
((expect <= delta && delta <= expect + 2))
|
||||
((expect <= delta && delta <= expect + 5))
|
||||
check_err $? "$capture_dev: Expected to capture $expect packets, got $delta."
|
||||
}
|
||||
|
||||
@ -532,7 +532,7 @@ __test_ecn_encap()
|
||||
RET=0
|
||||
|
||||
tc filter add dev v1 egress pref 77 prot ip \
|
||||
flower ip_tos $tos action pass
|
||||
flower ip_tos $tos ip_proto udp dst_port $VXPORT action pass
|
||||
sleep 1
|
||||
vxlan_ping_test $h1 192.0.2.3 "-Q $q" v1 egress 77 10
|
||||
tc filter del dev v1 egress pref 77 prot ip
|
||||
|
@ -616,7 +616,7 @@ vxlan_ping_test()
|
||||
local delta=$((t1 - t0))
|
||||
|
||||
# Tolerate a couple stray extra packets.
|
||||
((expect <= delta && delta <= expect + 2))
|
||||
((expect <= delta && delta <= expect + 5))
|
||||
check_err $? "$capture_dev: Expected to capture $expect packets, got $delta."
|
||||
}
|
||||
|
||||
@ -653,7 +653,7 @@ __test_ecn_encap()
|
||||
RET=0
|
||||
|
||||
tc filter add dev v1 egress pref 77 protocol ipv6 \
|
||||
flower ip_tos $tos action pass
|
||||
flower ip_tos $tos ip_proto udp dst_port $VXPORT action pass
|
||||
sleep 1
|
||||
vxlan_ping_test $h1 2001:db8:1::3 "-Q $q" v1 egress 77 10
|
||||
tc filter del dev v1 egress pref 77 protocol ipv6
|
||||
|
@ -750,7 +750,7 @@ __test_learning()
|
||||
expects[0]=0; expects[$idx1]=10; expects[$idx2]=0
|
||||
vxlan_flood_test $mac $dst $vid "${expects[@]}"
|
||||
|
||||
sleep 20
|
||||
sleep 60
|
||||
|
||||
bridge fdb show brport $vx | grep $mac | grep -q self
|
||||
check_fail $?
|
||||
@ -796,11 +796,11 @@ test_learning()
|
||||
local dst=192.0.2.100
|
||||
local vid=10
|
||||
|
||||
# Enable learning on the VxLAN devices and set ageing time to 10 seconds
|
||||
ip link set dev br1 type bridge ageing_time 1000
|
||||
ip link set dev vx10 type vxlan ageing 10
|
||||
# Enable learning on the VxLAN devices and set ageing time to 30 seconds
|
||||
ip link set dev br1 type bridge ageing_time 3000
|
||||
ip link set dev vx10 type vxlan ageing 30
|
||||
ip link set dev vx10 type vxlan learning
|
||||
ip link set dev vx20 type vxlan ageing 10
|
||||
ip link set dev vx20 type vxlan ageing 30
|
||||
ip link set dev vx20 type vxlan learning
|
||||
reapply_config
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user