1511e8db5SIdo Schimmel#!/bin/bash 2511e8db5SIdo Schimmel# SPDX-License-Identifier: GPL-2.0 3511e8db5SIdo Schimmel# 4511e8db5SIdo Schimmel# Test traffic distribution between two paths when using custom hash policy. 5511e8db5SIdo Schimmel# 6511e8db5SIdo Schimmel# +--------------------------------+ 7511e8db5SIdo Schimmel# | H1 | 8511e8db5SIdo Schimmel# | $h1 + | 9511e8db5SIdo Schimmel# | 198.51.100.{2-253}/24 | | 10511e8db5SIdo Schimmel# | 2001:db8:1::{2-fd}/64 | | 11511e8db5SIdo Schimmel# +-------------------------|------+ 12511e8db5SIdo Schimmel# | 13511e8db5SIdo Schimmel# +-------------------------|-------------------------+ 14511e8db5SIdo Schimmel# | SW1 | | 15511e8db5SIdo Schimmel# | $rp1 + | 16511e8db5SIdo Schimmel# | 198.51.100.1/24 | 17511e8db5SIdo Schimmel# | 2001:db8:1::1/64 | 18511e8db5SIdo Schimmel# | | 19511e8db5SIdo Schimmel# | | 20511e8db5SIdo Schimmel# | $rp11 + + $rp12 | 21511e8db5SIdo Schimmel# | 192.0.2.1/28 | | 192.0.2.17/28 | 22511e8db5SIdo Schimmel# | 2001:db8:2::1/64 | | 2001:db8:3::1/64 | 23511e8db5SIdo Schimmel# +------------------|-------------|------------------+ 24511e8db5SIdo Schimmel# | | 25511e8db5SIdo Schimmel# +------------------|-------------|------------------+ 26511e8db5SIdo Schimmel# | SW2 | | | 27511e8db5SIdo Schimmel# | | | | 28511e8db5SIdo Schimmel# | $rp21 + + $rp22 | 29511e8db5SIdo Schimmel# | 192.0.2.2/28 192.0.2.18/28 | 30511e8db5SIdo Schimmel# | 2001:db8:2::2/64 2001:db8:3::2/64 | 31511e8db5SIdo Schimmel# | | 32511e8db5SIdo Schimmel# | | 33511e8db5SIdo Schimmel# | $rp2 + | 34511e8db5SIdo Schimmel# | 203.0.113.1/24 | | 35511e8db5SIdo Schimmel# | 2001:db8:4::1/64 | | 36511e8db5SIdo Schimmel# +-------------------------|-------------------------+ 37511e8db5SIdo Schimmel# | 38511e8db5SIdo Schimmel# +-------------------------|------+ 39511e8db5SIdo Schimmel# | H2 | | 40511e8db5SIdo Schimmel# | $h2 + | 41511e8db5SIdo Schimmel# | 203.0.113.{2-253}/24 | 42511e8db5SIdo Schimmel# | 2001:db8:4::{2-fd}/64 | 43511e8db5SIdo Schimmel# +--------------------------------+ 44511e8db5SIdo Schimmel 45511e8db5SIdo SchimmelALL_TESTS=" 46511e8db5SIdo Schimmel ping_ipv4 47511e8db5SIdo Schimmel ping_ipv6 48511e8db5SIdo Schimmel custom_hash 49511e8db5SIdo Schimmel" 50511e8db5SIdo Schimmel 51511e8db5SIdo SchimmelNUM_NETIFS=8 52511e8db5SIdo Schimmelsource lib.sh 53511e8db5SIdo Schimmel 54511e8db5SIdo Schimmelh1_create() 55511e8db5SIdo Schimmel{ 56511e8db5SIdo Schimmel simple_if_init $h1 198.51.100.2/24 2001:db8:1::2/64 57511e8db5SIdo Schimmel ip route add vrf v$h1 default via 198.51.100.1 dev $h1 58511e8db5SIdo Schimmel ip -6 route add vrf v$h1 default via 2001:db8:1::1 dev $h1 59511e8db5SIdo Schimmel} 60511e8db5SIdo Schimmel 61511e8db5SIdo Schimmelh1_destroy() 62511e8db5SIdo Schimmel{ 63511e8db5SIdo Schimmel ip -6 route del vrf v$h1 default 64511e8db5SIdo Schimmel ip route del vrf v$h1 default 65511e8db5SIdo Schimmel simple_if_fini $h1 198.51.100.2/24 2001:db8:1::2/64 66511e8db5SIdo Schimmel} 67511e8db5SIdo Schimmel 68511e8db5SIdo Schimmelsw1_create() 69511e8db5SIdo Schimmel{ 70511e8db5SIdo Schimmel simple_if_init $rp1 198.51.100.1/24 2001:db8:1::1/64 71511e8db5SIdo Schimmel __simple_if_init $rp11 v$rp1 192.0.2.1/28 2001:db8:2::1/64 72511e8db5SIdo Schimmel __simple_if_init $rp12 v$rp1 192.0.2.17/28 2001:db8:3::1/64 73511e8db5SIdo Schimmel 74511e8db5SIdo Schimmel ip route add vrf v$rp1 203.0.113.0/24 \ 75511e8db5SIdo Schimmel nexthop via 192.0.2.2 dev $rp11 \ 76511e8db5SIdo Schimmel nexthop via 192.0.2.18 dev $rp12 77511e8db5SIdo Schimmel 78511e8db5SIdo Schimmel ip -6 route add vrf v$rp1 2001:db8:4::/64 \ 79511e8db5SIdo Schimmel nexthop via 2001:db8:2::2 dev $rp11 \ 80511e8db5SIdo Schimmel nexthop via 2001:db8:3::2 dev $rp12 81511e8db5SIdo Schimmel} 82511e8db5SIdo Schimmel 83511e8db5SIdo Schimmelsw1_destroy() 84511e8db5SIdo Schimmel{ 85511e8db5SIdo Schimmel ip -6 route del vrf v$rp1 2001:db8:4::/64 86511e8db5SIdo Schimmel 87511e8db5SIdo Schimmel ip route del vrf v$rp1 203.0.113.0/24 88511e8db5SIdo Schimmel 89511e8db5SIdo Schimmel __simple_if_fini $rp12 192.0.2.17/28 2001:db8:3::1/64 90511e8db5SIdo Schimmel __simple_if_fini $rp11 192.0.2.1/28 2001:db8:2::1/64 91511e8db5SIdo Schimmel simple_if_fini $rp1 198.51.100.1/24 2001:db8:1::1/64 92511e8db5SIdo Schimmel} 93511e8db5SIdo Schimmel 94511e8db5SIdo Schimmelsw2_create() 95511e8db5SIdo Schimmel{ 96511e8db5SIdo Schimmel simple_if_init $rp2 203.0.113.1/24 2001:db8:4::1/64 97511e8db5SIdo Schimmel __simple_if_init $rp21 v$rp2 192.0.2.2/28 2001:db8:2::2/64 98511e8db5SIdo Schimmel __simple_if_init $rp22 v$rp2 192.0.2.18/28 2001:db8:3::2/64 99511e8db5SIdo Schimmel 100511e8db5SIdo Schimmel ip route add vrf v$rp2 198.51.100.0/24 \ 101511e8db5SIdo Schimmel nexthop via 192.0.2.1 dev $rp21 \ 102511e8db5SIdo Schimmel nexthop via 192.0.2.17 dev $rp22 103511e8db5SIdo Schimmel 104511e8db5SIdo Schimmel ip -6 route add vrf v$rp2 2001:db8:1::/64 \ 105511e8db5SIdo Schimmel nexthop via 2001:db8:2::1 dev $rp21 \ 106511e8db5SIdo Schimmel nexthop via 2001:db8:3::1 dev $rp22 107511e8db5SIdo Schimmel} 108511e8db5SIdo Schimmel 109511e8db5SIdo Schimmelsw2_destroy() 110511e8db5SIdo Schimmel{ 111511e8db5SIdo Schimmel ip -6 route del vrf v$rp2 2001:db8:1::/64 112511e8db5SIdo Schimmel 113511e8db5SIdo Schimmel ip route del vrf v$rp2 198.51.100.0/24 114511e8db5SIdo Schimmel 115511e8db5SIdo Schimmel __simple_if_fini $rp22 192.0.2.18/28 2001:db8:3::2/64 116511e8db5SIdo Schimmel __simple_if_fini $rp21 192.0.2.2/28 2001:db8:2::2/64 117511e8db5SIdo Schimmel simple_if_fini $rp2 203.0.113.1/24 2001:db8:4::1/64 118511e8db5SIdo Schimmel} 119511e8db5SIdo Schimmel 120511e8db5SIdo Schimmelh2_create() 121511e8db5SIdo Schimmel{ 122511e8db5SIdo Schimmel simple_if_init $h2 203.0.113.2/24 2001:db8:4::2/64 123511e8db5SIdo Schimmel ip route add vrf v$h2 default via 203.0.113.1 dev $h2 124511e8db5SIdo Schimmel ip -6 route add vrf v$h2 default via 2001:db8:4::1 dev $h2 125511e8db5SIdo Schimmel} 126511e8db5SIdo Schimmel 127511e8db5SIdo Schimmelh2_destroy() 128511e8db5SIdo Schimmel{ 129511e8db5SIdo Schimmel ip -6 route del vrf v$h2 default 130511e8db5SIdo Schimmel ip route del vrf v$h2 default 131511e8db5SIdo Schimmel simple_if_fini $h2 203.0.113.2/24 2001:db8:4::2/64 132511e8db5SIdo Schimmel} 133511e8db5SIdo Schimmel 134511e8db5SIdo Schimmelsetup_prepare() 135511e8db5SIdo Schimmel{ 136511e8db5SIdo Schimmel h1=${NETIFS[p1]} 137511e8db5SIdo Schimmel 138511e8db5SIdo Schimmel rp1=${NETIFS[p2]} 139511e8db5SIdo Schimmel 140511e8db5SIdo Schimmel rp11=${NETIFS[p3]} 141511e8db5SIdo Schimmel rp21=${NETIFS[p4]} 142511e8db5SIdo Schimmel 143511e8db5SIdo Schimmel rp12=${NETIFS[p5]} 144511e8db5SIdo Schimmel rp22=${NETIFS[p6]} 145511e8db5SIdo Schimmel 146511e8db5SIdo Schimmel rp2=${NETIFS[p7]} 147511e8db5SIdo Schimmel 148511e8db5SIdo Schimmel h2=${NETIFS[p8]} 149511e8db5SIdo Schimmel 150511e8db5SIdo Schimmel vrf_prepare 151511e8db5SIdo Schimmel h1_create 152511e8db5SIdo Schimmel sw1_create 153511e8db5SIdo Schimmel sw2_create 154511e8db5SIdo Schimmel h2_create 155511e8db5SIdo Schimmel 156511e8db5SIdo Schimmel forwarding_enable 157511e8db5SIdo Schimmel} 158511e8db5SIdo Schimmel 159511e8db5SIdo Schimmelcleanup() 160511e8db5SIdo Schimmel{ 161511e8db5SIdo Schimmel pre_cleanup 162511e8db5SIdo Schimmel 163511e8db5SIdo Schimmel forwarding_restore 164511e8db5SIdo Schimmel 165511e8db5SIdo Schimmel h2_destroy 166511e8db5SIdo Schimmel sw2_destroy 167511e8db5SIdo Schimmel sw1_destroy 168511e8db5SIdo Schimmel h1_destroy 169511e8db5SIdo Schimmel vrf_cleanup 170511e8db5SIdo Schimmel} 171511e8db5SIdo Schimmel 172511e8db5SIdo Schimmelping_ipv4() 173511e8db5SIdo Schimmel{ 174511e8db5SIdo Schimmel ping_test $h1 203.0.113.2 175511e8db5SIdo Schimmel} 176511e8db5SIdo Schimmel 177511e8db5SIdo Schimmelping_ipv6() 178511e8db5SIdo Schimmel{ 179511e8db5SIdo Schimmel ping6_test $h1 2001:db8:4::2 180511e8db5SIdo Schimmel} 181511e8db5SIdo Schimmel 182511e8db5SIdo Schimmelsend_src_ipv4() 183511e8db5SIdo Schimmel{ 1848b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ $h1 -q -p 64 \ 1858b7bf35dSIdo Schimmel -A "198.51.100.2-198.51.100.253" -B 203.0.113.2 \ 186511e8db5SIdo Schimmel -d 1msec -c 50 -t udp "sp=20000,dp=30000" 187511e8db5SIdo Schimmel} 188511e8db5SIdo Schimmel 189511e8db5SIdo Schimmelsend_dst_ipv4() 190511e8db5SIdo Schimmel{ 1918b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ $h1 -q -p 64 \ 1928b7bf35dSIdo Schimmel -A 198.51.100.2 -B "203.0.113.2-203.0.113.253" \ 193511e8db5SIdo Schimmel -d 1msec -c 50 -t udp "sp=20000,dp=30000" 194511e8db5SIdo Schimmel} 195511e8db5SIdo Schimmel 196511e8db5SIdo Schimmelsend_src_udp4() 197511e8db5SIdo Schimmel{ 1988b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ $h1 -q -p 64 \ 1998b7bf35dSIdo Schimmel -A 198.51.100.2 -B 203.0.113.2 \ 200511e8db5SIdo Schimmel -d 1msec -t udp "sp=0-32768,dp=30000" 201511e8db5SIdo Schimmel} 202511e8db5SIdo Schimmel 203511e8db5SIdo Schimmelsend_dst_udp4() 204511e8db5SIdo Schimmel{ 2058b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ $h1 -q -p 64 \ 2068b7bf35dSIdo Schimmel -A 198.51.100.2 -B 203.0.113.2 \ 207511e8db5SIdo Schimmel -d 1msec -t udp "sp=20000,dp=0-32768" 208511e8db5SIdo Schimmel} 209511e8db5SIdo Schimmel 210511e8db5SIdo Schimmelsend_src_ipv6() 211511e8db5SIdo Schimmel{ 2128b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \ 2138b7bf35dSIdo Schimmel -A "2001:db8:1::2-2001:db8:1::fd" -B 2001:db8:4::2 \ 214511e8db5SIdo Schimmel -d 1msec -c 50 -t udp "sp=20000,dp=30000" 215511e8db5SIdo Schimmel} 216511e8db5SIdo Schimmel 217511e8db5SIdo Schimmelsend_dst_ipv6() 218511e8db5SIdo Schimmel{ 2198b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \ 2208b7bf35dSIdo Schimmel -A 2001:db8:1::2 -B "2001:db8:4::2-2001:db8:4::fd" \ 221511e8db5SIdo Schimmel -d 1msec -c 50 -t udp "sp=20000,dp=30000" 222511e8db5SIdo Schimmel} 223511e8db5SIdo Schimmel 224511e8db5SIdo Schimmelsend_flowlabel() 225511e8db5SIdo Schimmel{ 226511e8db5SIdo Schimmel # Generate 16384 echo requests, each with a random flow label. 227511e8db5SIdo Schimmel for _ in $(seq 1 16384); do 228511e8db5SIdo Schimmel ip vrf exec v$h1 \ 229511e8db5SIdo Schimmel $PING6 2001:db8:4::2 -F 0 -c 1 -q >/dev/null 2>&1 230511e8db5SIdo Schimmel done 231511e8db5SIdo Schimmel} 232511e8db5SIdo Schimmel 233511e8db5SIdo Schimmelsend_src_udp6() 234511e8db5SIdo Schimmel{ 2358b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \ 2368b7bf35dSIdo Schimmel -A 2001:db8:1::2 -B 2001:db8:4::2 \ 237511e8db5SIdo Schimmel -d 1msec -t udp "sp=0-32768,dp=30000" 238511e8db5SIdo Schimmel} 239511e8db5SIdo Schimmel 240511e8db5SIdo Schimmelsend_dst_udp6() 241511e8db5SIdo Schimmel{ 2428b7bf35dSIdo Schimmel ip vrf exec v$h1 $MZ -6 $h1 -q -p 64 \ 2438b7bf35dSIdo Schimmel -A 2001:db8:1::2 -B 2001:db8:4::2 \ 244511e8db5SIdo Schimmel -d 1msec -t udp "sp=20000,dp=0-32768" 245511e8db5SIdo Schimmel} 246511e8db5SIdo Schimmel 247511e8db5SIdo Schimmelcustom_hash_test() 248511e8db5SIdo Schimmel{ 249511e8db5SIdo Schimmel local field="$1"; shift 250511e8db5SIdo Schimmel local balanced="$1"; shift 251511e8db5SIdo Schimmel local send_flows="$@" 252511e8db5SIdo Schimmel 253511e8db5SIdo Schimmel RET=0 254511e8db5SIdo Schimmel 255511e8db5SIdo Schimmel local t0_rp11=$(link_stats_tx_packets_get $rp11) 256511e8db5SIdo Schimmel local t0_rp12=$(link_stats_tx_packets_get $rp12) 257511e8db5SIdo Schimmel 258511e8db5SIdo Schimmel $send_flows 259511e8db5SIdo Schimmel 260511e8db5SIdo Schimmel local t1_rp11=$(link_stats_tx_packets_get $rp11) 261511e8db5SIdo Schimmel local t1_rp12=$(link_stats_tx_packets_get $rp12) 262511e8db5SIdo Schimmel 263511e8db5SIdo Schimmel local d_rp11=$((t1_rp11 - t0_rp11)) 264511e8db5SIdo Schimmel local d_rp12=$((t1_rp12 - t0_rp12)) 265511e8db5SIdo Schimmel 266511e8db5SIdo Schimmel local diff=$((d_rp12 - d_rp11)) 267511e8db5SIdo Schimmel local sum=$((d_rp11 + d_rp12)) 268511e8db5SIdo Schimmel 269511e8db5SIdo Schimmel local pct=$(echo "$diff / $sum * 100" | bc -l) 270511e8db5SIdo Schimmel local is_balanced=$(echo "-20 <= $pct && $pct <= 20" | bc) 271511e8db5SIdo Schimmel 272511e8db5SIdo Schimmel [[ ( $is_balanced -eq 1 && $balanced == "balanced" ) || 273511e8db5SIdo Schimmel ( $is_balanced -eq 0 && $balanced == "unbalanced" ) ]] 274511e8db5SIdo Schimmel check_err $? "Expected traffic to be $balanced, but it is not" 275511e8db5SIdo Schimmel 276511e8db5SIdo Schimmel log_test "Multipath hash field: $field ($balanced)" 277511e8db5SIdo Schimmel log_info "Packets sent on path1 / path2: $d_rp11 / $d_rp12" 278511e8db5SIdo Schimmel} 279511e8db5SIdo Schimmel 280511e8db5SIdo Schimmelcustom_hash_v4() 281511e8db5SIdo Schimmel{ 282511e8db5SIdo Schimmel log_info "Running IPv4 custom multipath hash tests" 283511e8db5SIdo Schimmel 284511e8db5SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_policy 3 285511e8db5SIdo Schimmel 286511e8db5SIdo Schimmel # Prevent the neighbour table from overflowing, as different neighbour 287511e8db5SIdo Schimmel # entries will be created on $ol4 when using different destination IPs. 288511e8db5SIdo Schimmel sysctl_set net.ipv4.neigh.default.gc_thresh1 1024 289511e8db5SIdo Schimmel sysctl_set net.ipv4.neigh.default.gc_thresh2 1024 290511e8db5SIdo Schimmel sysctl_set net.ipv4.neigh.default.gc_thresh3 1024 291511e8db5SIdo Schimmel 292511e8db5SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_fields 0x0001 293511e8db5SIdo Schimmel custom_hash_test "Source IP" "balanced" send_src_ipv4 294511e8db5SIdo Schimmel custom_hash_test "Source IP" "unbalanced" send_dst_ipv4 295511e8db5SIdo Schimmel 296511e8db5SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_fields 0x0002 297511e8db5SIdo Schimmel custom_hash_test "Destination IP" "balanced" send_dst_ipv4 298511e8db5SIdo Schimmel custom_hash_test "Destination IP" "unbalanced" send_src_ipv4 299511e8db5SIdo Schimmel 300511e8db5SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_fields 0x0010 301511e8db5SIdo Schimmel custom_hash_test "Source port" "balanced" send_src_udp4 302511e8db5SIdo Schimmel custom_hash_test "Source port" "unbalanced" send_dst_udp4 303511e8db5SIdo Schimmel 304511e8db5SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_fields 0x0020 305511e8db5SIdo Schimmel custom_hash_test "Destination port" "balanced" send_dst_udp4 306511e8db5SIdo Schimmel custom_hash_test "Destination port" "unbalanced" send_src_udp4 307511e8db5SIdo Schimmel 308511e8db5SIdo Schimmel sysctl_restore net.ipv4.neigh.default.gc_thresh3 309511e8db5SIdo Schimmel sysctl_restore net.ipv4.neigh.default.gc_thresh2 310511e8db5SIdo Schimmel sysctl_restore net.ipv4.neigh.default.gc_thresh1 311511e8db5SIdo Schimmel 312511e8db5SIdo Schimmel sysctl_restore net.ipv4.fib_multipath_hash_policy 313511e8db5SIdo Schimmel} 314511e8db5SIdo Schimmel 315511e8db5SIdo Schimmelcustom_hash_v6() 316511e8db5SIdo Schimmel{ 317511e8db5SIdo Schimmel log_info "Running IPv6 custom multipath hash tests" 318511e8db5SIdo Schimmel 319511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_policy 3 320511e8db5SIdo Schimmel 321511e8db5SIdo Schimmel # Prevent the neighbour table from overflowing, as different neighbour 322511e8db5SIdo Schimmel # entries will be created on $ol4 when using different destination IPs. 323511e8db5SIdo Schimmel sysctl_set net.ipv6.neigh.default.gc_thresh1 1024 324511e8db5SIdo Schimmel sysctl_set net.ipv6.neigh.default.gc_thresh2 1024 325511e8db5SIdo Schimmel sysctl_set net.ipv6.neigh.default.gc_thresh3 1024 326511e8db5SIdo Schimmel 327511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_fields 0x0001 328511e8db5SIdo Schimmel custom_hash_test "Source IP" "balanced" send_src_ipv6 329511e8db5SIdo Schimmel custom_hash_test "Source IP" "unbalanced" send_dst_ipv6 330511e8db5SIdo Schimmel 331511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_fields 0x0002 332511e8db5SIdo Schimmel custom_hash_test "Destination IP" "balanced" send_dst_ipv6 333511e8db5SIdo Schimmel custom_hash_test "Destination IP" "unbalanced" send_src_ipv6 334511e8db5SIdo Schimmel 335511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_fields 0x0008 336511e8db5SIdo Schimmel custom_hash_test "Flowlabel" "balanced" send_flowlabel 337511e8db5SIdo Schimmel custom_hash_test "Flowlabel" "unbalanced" send_src_ipv6 338511e8db5SIdo Schimmel 339511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_fields 0x0010 340511e8db5SIdo Schimmel custom_hash_test "Source port" "balanced" send_src_udp6 341511e8db5SIdo Schimmel custom_hash_test "Source port" "unbalanced" send_dst_udp6 342511e8db5SIdo Schimmel 343511e8db5SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_fields 0x0020 344511e8db5SIdo Schimmel custom_hash_test "Destination port" "balanced" send_dst_udp6 345511e8db5SIdo Schimmel custom_hash_test "Destination port" "unbalanced" send_src_udp6 346511e8db5SIdo Schimmel 347511e8db5SIdo Schimmel sysctl_restore net.ipv6.neigh.default.gc_thresh3 348511e8db5SIdo Schimmel sysctl_restore net.ipv6.neigh.default.gc_thresh2 349511e8db5SIdo Schimmel sysctl_restore net.ipv6.neigh.default.gc_thresh1 350511e8db5SIdo Schimmel 351511e8db5SIdo Schimmel sysctl_restore net.ipv6.fib_multipath_hash_policy 352511e8db5SIdo Schimmel} 353511e8db5SIdo Schimmel 354511e8db5SIdo Schimmelcustom_hash() 355511e8db5SIdo Schimmel{ 356511e8db5SIdo Schimmel # Test that when the hash policy is set to custom, traffic is 357511e8db5SIdo Schimmel # distributed only according to the fields set in the 358511e8db5SIdo Schimmel # fib_multipath_hash_fields sysctl. 359511e8db5SIdo Schimmel # 360511e8db5SIdo Schimmel # Each time set a different field and make sure traffic is only 361511e8db5SIdo Schimmel # distributed when the field is changed in the packet stream. 362511e8db5SIdo Schimmel custom_hash_v4 363511e8db5SIdo Schimmel custom_hash_v6 364511e8db5SIdo Schimmel} 365511e8db5SIdo Schimmel 366511e8db5SIdo Schimmeltrap cleanup EXIT 367511e8db5SIdo Schimmel 368511e8db5SIdo Schimmelsetup_prepare 369511e8db5SIdo Schimmelsetup_wait 370511e8db5SIdo Schimmeltests_run 371511e8db5SIdo Schimmel 372511e8db5SIdo Schimmelexit $EXIT_STATUS 373