1386e3792SIdo Schimmel#!/bin/bash 2386e3792SIdo Schimmel# SPDX-License-Identifier: GPL-2.0 3386e3792SIdo Schimmel 4*b51a94b2SPetr Machata# +-------------------------+ 5*b51a94b2SPetr Machata# | H1 | 6*b51a94b2SPetr Machata# | $h1 + | 7*b51a94b2SPetr Machata# | 192.0.2.2/24 | | 8*b51a94b2SPetr Machata# | 2001:db8:1::2/64 | | 9*b51a94b2SPetr Machata# +-------------------|-----+ 10*b51a94b2SPetr Machata# | 11*b51a94b2SPetr Machata# +-------------------|----------------------+ 12*b51a94b2SPetr Machata# | | R1 | 13*b51a94b2SPetr Machata# | $rp11 + | 14*b51a94b2SPetr Machata# | 192.0.2.1/24 | 15*b51a94b2SPetr Machata# | 2001:db8:1::1/64 | 16*b51a94b2SPetr Machata# | | 17*b51a94b2SPetr Machata# | + $rp12 + $rp13 | 18*b51a94b2SPetr Machata# | | 169.254.2.12/24 | 169.254.3.13/24 | 19*b51a94b2SPetr Machata# | | fe80:2::12/64 | fe80:3::13/64 | 20*b51a94b2SPetr Machata# +--|--------------------|------------------+ 21*b51a94b2SPetr Machata# | | 22*b51a94b2SPetr Machata# +--|--------------------|------------------+ 23*b51a94b2SPetr Machata# | + $rp22 + $rp23 | 24*b51a94b2SPetr Machata# | 169.254.2.22/24 169.254.3.23/24 | 25*b51a94b2SPetr Machata# | fe80:2::22/64 fe80:3::23/64 | 26*b51a94b2SPetr Machata# | | 27*b51a94b2SPetr Machata# | $rp21 + | 28*b51a94b2SPetr Machata# | 198.51.100.1/24 | | 29*b51a94b2SPetr Machata# | 2001:db8:2::1/64 | R2 | 30*b51a94b2SPetr Machata# +-------------------|----------------------+ 31*b51a94b2SPetr Machata# | 32*b51a94b2SPetr Machata# +-------------------|-----+ 33*b51a94b2SPetr Machata# | | | 34*b51a94b2SPetr Machata# | $h2 + | 35*b51a94b2SPetr Machata# | 198.51.100.2/24 | 36*b51a94b2SPetr Machata# | 2001:db8:2::2/64 H2 | 37*b51a94b2SPetr Machata# +-------------------------+ 38*b51a94b2SPetr Machata 39386e3792SIdo SchimmelALL_TESTS=" 40386e3792SIdo Schimmel ping_ipv4 41386e3792SIdo Schimmel ping_ipv6 42386e3792SIdo Schimmel multipath_test 43a22b0426SPetr Machata nh_stats_test_v4 44a22b0426SPetr Machata nh_stats_test_v6 45386e3792SIdo Schimmel" 46386e3792SIdo SchimmelNUM_NETIFS=8 47386e3792SIdo Schimmelsource lib.sh 48a22b0426SPetr Machatasource router_mpath_nh_lib.sh 49386e3792SIdo Schimmel 50386e3792SIdo Schimmelh1_create() 51386e3792SIdo Schimmel{ 52386e3792SIdo Schimmel vrf_create "vrf-h1" 53386e3792SIdo Schimmel ip link set dev $h1 master vrf-h1 54386e3792SIdo Schimmel 55386e3792SIdo Schimmel ip link set dev vrf-h1 up 56386e3792SIdo Schimmel ip link set dev $h1 up 57386e3792SIdo Schimmel 58386e3792SIdo Schimmel ip address add 192.0.2.2/24 dev $h1 59386e3792SIdo Schimmel ip address add 2001:db8:1::2/64 dev $h1 60386e3792SIdo Schimmel 61386e3792SIdo Schimmel ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.1 62386e3792SIdo Schimmel ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::1 63386e3792SIdo Schimmel} 64386e3792SIdo Schimmel 65386e3792SIdo Schimmelh1_destroy() 66386e3792SIdo Schimmel{ 67386e3792SIdo Schimmel ip route del 2001:db8:2::/64 vrf vrf-h1 68386e3792SIdo Schimmel ip route del 198.51.100.0/24 vrf vrf-h1 69386e3792SIdo Schimmel 70386e3792SIdo Schimmel ip address del 2001:db8:1::2/64 dev $h1 71386e3792SIdo Schimmel ip address del 192.0.2.2/24 dev $h1 72386e3792SIdo Schimmel 73386e3792SIdo Schimmel ip link set dev $h1 down 74386e3792SIdo Schimmel vrf_destroy "vrf-h1" 75386e3792SIdo Schimmel} 76386e3792SIdo Schimmel 77386e3792SIdo Schimmelh2_create() 78386e3792SIdo Schimmel{ 79386e3792SIdo Schimmel vrf_create "vrf-h2" 80386e3792SIdo Schimmel ip link set dev $h2 master vrf-h2 81386e3792SIdo Schimmel 82386e3792SIdo Schimmel ip link set dev vrf-h2 up 83386e3792SIdo Schimmel ip link set dev $h2 up 84386e3792SIdo Schimmel 85386e3792SIdo Schimmel ip address add 198.51.100.2/24 dev $h2 86386e3792SIdo Schimmel ip address add 2001:db8:2::2/64 dev $h2 87386e3792SIdo Schimmel 88386e3792SIdo Schimmel ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.1 89386e3792SIdo Schimmel ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::1 90386e3792SIdo Schimmel} 91386e3792SIdo Schimmel 92386e3792SIdo Schimmelh2_destroy() 93386e3792SIdo Schimmel{ 94386e3792SIdo Schimmel ip route del 2001:db8:1::/64 vrf vrf-h2 95386e3792SIdo Schimmel ip route del 192.0.2.0/24 vrf vrf-h2 96386e3792SIdo Schimmel 97386e3792SIdo Schimmel ip address del 2001:db8:2::2/64 dev $h2 98386e3792SIdo Schimmel ip address del 198.51.100.2/24 dev $h2 99386e3792SIdo Schimmel 100386e3792SIdo Schimmel ip link set dev $h2 down 101386e3792SIdo Schimmel vrf_destroy "vrf-h2" 102386e3792SIdo Schimmel} 103386e3792SIdo Schimmel 104386e3792SIdo Schimmelrouter1_create() 105386e3792SIdo Schimmel{ 106386e3792SIdo Schimmel vrf_create "vrf-r1" 107386e3792SIdo Schimmel ip link set dev $rp11 master vrf-r1 108386e3792SIdo Schimmel ip link set dev $rp12 master vrf-r1 109386e3792SIdo Schimmel ip link set dev $rp13 master vrf-r1 110386e3792SIdo Schimmel 111386e3792SIdo Schimmel ip link set dev vrf-r1 up 112386e3792SIdo Schimmel ip link set dev $rp11 up 113386e3792SIdo Schimmel ip link set dev $rp12 up 114386e3792SIdo Schimmel ip link set dev $rp13 up 115386e3792SIdo Schimmel 116386e3792SIdo Schimmel ip address add 192.0.2.1/24 dev $rp11 117386e3792SIdo Schimmel ip address add 2001:db8:1::1/64 dev $rp11 118386e3792SIdo Schimmel 119386e3792SIdo Schimmel ip address add 169.254.2.12/24 dev $rp12 120386e3792SIdo Schimmel ip address add fe80:2::12/64 dev $rp12 121386e3792SIdo Schimmel 122386e3792SIdo Schimmel ip address add 169.254.3.13/24 dev $rp13 123386e3792SIdo Schimmel ip address add fe80:3::13/64 dev $rp13 124386e3792SIdo Schimmel} 125386e3792SIdo Schimmel 126386e3792SIdo Schimmelrouter1_destroy() 127386e3792SIdo Schimmel{ 128386e3792SIdo Schimmel ip route del 2001:db8:2::/64 vrf vrf-r1 129386e3792SIdo Schimmel ip route del 198.51.100.0/24 vrf vrf-r1 130386e3792SIdo Schimmel 131386e3792SIdo Schimmel ip address del fe80:3::13/64 dev $rp13 132386e3792SIdo Schimmel ip address del 169.254.3.13/24 dev $rp13 133386e3792SIdo Schimmel 134386e3792SIdo Schimmel ip address del fe80:2::12/64 dev $rp12 135386e3792SIdo Schimmel ip address del 169.254.2.12/24 dev $rp12 136386e3792SIdo Schimmel 137386e3792SIdo Schimmel ip address del 2001:db8:1::1/64 dev $rp11 138386e3792SIdo Schimmel ip address del 192.0.2.1/24 dev $rp11 139386e3792SIdo Schimmel 140386e3792SIdo Schimmel ip nexthop del id 103 141386e3792SIdo Schimmel ip nexthop del id 101 142386e3792SIdo Schimmel ip nexthop del id 102 143386e3792SIdo Schimmel ip nexthop del id 106 144386e3792SIdo Schimmel ip nexthop del id 104 145386e3792SIdo Schimmel ip nexthop del id 105 146386e3792SIdo Schimmel 147386e3792SIdo Schimmel ip link set dev $rp13 down 148386e3792SIdo Schimmel ip link set dev $rp12 down 149386e3792SIdo Schimmel ip link set dev $rp11 down 150386e3792SIdo Schimmel 151386e3792SIdo Schimmel vrf_destroy "vrf-r1" 152386e3792SIdo Schimmel} 153386e3792SIdo Schimmel 154386e3792SIdo Schimmelrouter2_create() 155386e3792SIdo Schimmel{ 156386e3792SIdo Schimmel vrf_create "vrf-r2" 157386e3792SIdo Schimmel ip link set dev $rp21 master vrf-r2 158386e3792SIdo Schimmel ip link set dev $rp22 master vrf-r2 159386e3792SIdo Schimmel ip link set dev $rp23 master vrf-r2 160386e3792SIdo Schimmel 161386e3792SIdo Schimmel ip link set dev vrf-r2 up 162386e3792SIdo Schimmel ip link set dev $rp21 up 163386e3792SIdo Schimmel ip link set dev $rp22 up 164386e3792SIdo Schimmel ip link set dev $rp23 up 165386e3792SIdo Schimmel 166386e3792SIdo Schimmel ip address add 198.51.100.1/24 dev $rp21 167386e3792SIdo Schimmel ip address add 2001:db8:2::1/64 dev $rp21 168386e3792SIdo Schimmel 169386e3792SIdo Schimmel ip address add 169.254.2.22/24 dev $rp22 170386e3792SIdo Schimmel ip address add fe80:2::22/64 dev $rp22 171386e3792SIdo Schimmel 172386e3792SIdo Schimmel ip address add 169.254.3.23/24 dev $rp23 173386e3792SIdo Schimmel ip address add fe80:3::23/64 dev $rp23 174386e3792SIdo Schimmel} 175386e3792SIdo Schimmel 176386e3792SIdo Schimmelrouter2_destroy() 177386e3792SIdo Schimmel{ 178386e3792SIdo Schimmel ip route del 2001:db8:1::/64 vrf vrf-r2 179386e3792SIdo Schimmel ip route del 192.0.2.0/24 vrf vrf-r2 180386e3792SIdo Schimmel 181386e3792SIdo Schimmel ip address del fe80:3::23/64 dev $rp23 182386e3792SIdo Schimmel ip address del 169.254.3.23/24 dev $rp23 183386e3792SIdo Schimmel 184386e3792SIdo Schimmel ip address del fe80:2::22/64 dev $rp22 185386e3792SIdo Schimmel ip address del 169.254.2.22/24 dev $rp22 186386e3792SIdo Schimmel 187386e3792SIdo Schimmel ip address del 2001:db8:2::1/64 dev $rp21 188386e3792SIdo Schimmel ip address del 198.51.100.1/24 dev $rp21 189386e3792SIdo Schimmel 190386e3792SIdo Schimmel ip nexthop del id 201 191386e3792SIdo Schimmel ip nexthop del id 202 192386e3792SIdo Schimmel ip nexthop del id 204 193386e3792SIdo Schimmel ip nexthop del id 205 194386e3792SIdo Schimmel 195386e3792SIdo Schimmel ip link set dev $rp23 down 196386e3792SIdo Schimmel ip link set dev $rp22 down 197386e3792SIdo Schimmel ip link set dev $rp21 down 198386e3792SIdo Schimmel 199386e3792SIdo Schimmel vrf_destroy "vrf-r2" 200386e3792SIdo Schimmel} 201386e3792SIdo Schimmel 202386e3792SIdo Schimmelrouting_nh_obj() 203386e3792SIdo Schimmel{ 204386e3792SIdo Schimmel ip nexthop add id 101 via 169.254.2.22 dev $rp12 205386e3792SIdo Schimmel ip nexthop add id 102 via 169.254.3.23 dev $rp13 206386e3792SIdo Schimmel ip nexthop add id 103 group 101/102 type resilient buckets 512 \ 207386e3792SIdo Schimmel idle_timer 0 208386e3792SIdo Schimmel ip route add 198.51.100.0/24 vrf vrf-r1 nhid 103 209386e3792SIdo Schimmel 210386e3792SIdo Schimmel ip nexthop add id 104 via fe80:2::22 dev $rp12 211386e3792SIdo Schimmel ip nexthop add id 105 via fe80:3::23 dev $rp13 212386e3792SIdo Schimmel ip nexthop add id 106 group 104/105 type resilient buckets 512 \ 213386e3792SIdo Schimmel idle_timer 0 214386e3792SIdo Schimmel ip route add 2001:db8:2::/64 vrf vrf-r1 nhid 106 215386e3792SIdo Schimmel 216386e3792SIdo Schimmel ip nexthop add id 201 via 169.254.2.12 dev $rp22 217386e3792SIdo Schimmel ip nexthop add id 202 via 169.254.3.13 dev $rp23 218386e3792SIdo Schimmel ip nexthop add id 203 group 201/202 type resilient buckets 512 \ 219386e3792SIdo Schimmel idle_timer 0 220386e3792SIdo Schimmel ip route add 192.0.2.0/24 vrf vrf-r2 nhid 203 221386e3792SIdo Schimmel 222386e3792SIdo Schimmel ip nexthop add id 204 via fe80:2::12 dev $rp22 223386e3792SIdo Schimmel ip nexthop add id 205 via fe80:3::13 dev $rp23 224386e3792SIdo Schimmel ip nexthop add id 206 group 204/205 type resilient buckets 512 \ 225386e3792SIdo Schimmel idle_timer 0 226386e3792SIdo Schimmel ip route add 2001:db8:1::/64 vrf vrf-r2 nhid 206 227386e3792SIdo Schimmel} 228386e3792SIdo Schimmel 229386e3792SIdo Schimmelmultipath4_test() 230386e3792SIdo Schimmel{ 231386e3792SIdo Schimmel local desc="$1" 232386e3792SIdo Schimmel local weight_rp12=$2 233386e3792SIdo Schimmel local weight_rp13=$3 234386e3792SIdo Schimmel local t0_rp12 t0_rp13 t1_rp12 t1_rp13 235386e3792SIdo Schimmel local packets_rp12 packets_rp13 236386e3792SIdo Schimmel 237386e3792SIdo Schimmel # Transmit multiple flows from h1 to h2 and make sure they are 238386e3792SIdo Schimmel # distributed between both multipath links (rp12 and rp13) 239386e3792SIdo Schimmel # according to the provided weights. 240386e3792SIdo Schimmel sysctl_set net.ipv4.fib_multipath_hash_policy 1 241386e3792SIdo Schimmel 242386e3792SIdo Schimmel t0_rp12=$(link_stats_tx_packets_get $rp12) 243386e3792SIdo Schimmel t0_rp13=$(link_stats_tx_packets_get $rp13) 244386e3792SIdo Schimmel 245386e3792SIdo Schimmel ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ 246748d2744SIdo Schimmel -d $MZ_DELAY -t udp "sp=1024,dp=0-32768" 247386e3792SIdo Schimmel 248386e3792SIdo Schimmel t1_rp12=$(link_stats_tx_packets_get $rp12) 249386e3792SIdo Schimmel t1_rp13=$(link_stats_tx_packets_get $rp13) 250386e3792SIdo Schimmel 251386e3792SIdo Schimmel let "packets_rp12 = $t1_rp12 - $t0_rp12" 252386e3792SIdo Schimmel let "packets_rp13 = $t1_rp13 - $t0_rp13" 253386e3792SIdo Schimmel multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13 254386e3792SIdo Schimmel 255386e3792SIdo Schimmel # Restore settings. 256386e3792SIdo Schimmel sysctl_restore net.ipv4.fib_multipath_hash_policy 257386e3792SIdo Schimmel} 258386e3792SIdo Schimmel 259386e3792SIdo Schimmelmultipath6_l4_test() 260386e3792SIdo Schimmel{ 261386e3792SIdo Schimmel local desc="$1" 262386e3792SIdo Schimmel local weight_rp12=$2 263386e3792SIdo Schimmel local weight_rp13=$3 264386e3792SIdo Schimmel local t0_rp12 t0_rp13 t1_rp12 t1_rp13 265386e3792SIdo Schimmel local packets_rp12 packets_rp13 266386e3792SIdo Schimmel 267386e3792SIdo Schimmel # Transmit multiple flows from h1 to h2 and make sure they are 268386e3792SIdo Schimmel # distributed between both multipath links (rp12 and rp13) 269386e3792SIdo Schimmel # according to the provided weights. 270386e3792SIdo Schimmel sysctl_set net.ipv6.fib_multipath_hash_policy 1 271386e3792SIdo Schimmel 272386e3792SIdo Schimmel t0_rp12=$(link_stats_tx_packets_get $rp12) 273386e3792SIdo Schimmel t0_rp13=$(link_stats_tx_packets_get $rp13) 274386e3792SIdo Schimmel 275386e3792SIdo Schimmel $MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \ 276748d2744SIdo Schimmel -d $MZ_DELAY -t udp "sp=1024,dp=0-32768" 277386e3792SIdo Schimmel 278386e3792SIdo Schimmel t1_rp12=$(link_stats_tx_packets_get $rp12) 279386e3792SIdo Schimmel t1_rp13=$(link_stats_tx_packets_get $rp13) 280386e3792SIdo Schimmel 281386e3792SIdo Schimmel let "packets_rp12 = $t1_rp12 - $t0_rp12" 282386e3792SIdo Schimmel let "packets_rp13 = $t1_rp13 - $t0_rp13" 283386e3792SIdo Schimmel multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13 284386e3792SIdo Schimmel 285386e3792SIdo Schimmel sysctl_restore net.ipv6.fib_multipath_hash_policy 286386e3792SIdo Schimmel} 287386e3792SIdo Schimmel 288386e3792SIdo Schimmelmultipath_test() 289386e3792SIdo Schimmel{ 290386e3792SIdo Schimmel # Without an idle timer, weight replacement should happen immediately. 291386e3792SIdo Schimmel log_info "Running multipath tests without an idle timer" 292386e3792SIdo Schimmel ip nexthop replace id 103 group 101/102 type resilient idle_timer 0 293386e3792SIdo Schimmel ip nexthop replace id 106 group 104/105 type resilient idle_timer 0 294386e3792SIdo Schimmel 295386e3792SIdo Schimmel log_info "Running IPv4 multipath tests" 296386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 297386e3792SIdo Schimmel multipath4_test "ECMP" 1 1 298386e3792SIdo Schimmel ip nexthop replace id 103 group 101,2/102,1 type resilient 299386e3792SIdo Schimmel multipath4_test "Weighted MP 2:1" 2 1 300386e3792SIdo Schimmel ip nexthop replace id 103 group 101,11/102,45 type resilient 301386e3792SIdo Schimmel multipath4_test "Weighted MP 11:45" 11 45 302386e3792SIdo Schimmel 303386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 304386e3792SIdo Schimmel 305386e3792SIdo Schimmel log_info "Running IPv6 L4 hash multipath tests" 306386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 307386e3792SIdo Schimmel multipath6_l4_test "ECMP" 1 1 308386e3792SIdo Schimmel ip nexthop replace id 106 group 104,2/105,1 type resilient 309386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 2:1" 2 1 310386e3792SIdo Schimmel ip nexthop replace id 106 group 104,11/105,45 type resilient 311386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 11:45" 11 45 312386e3792SIdo Schimmel 313386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 314386e3792SIdo Schimmel 315386e3792SIdo Schimmel # With an idle timer, weight replacement should not happen, so the 316386e3792SIdo Schimmel # expected ratio should always be the initial one (1:1). 317386e3792SIdo Schimmel log_info "Running multipath tests with an idle timer of 120 seconds" 318386e3792SIdo Schimmel ip nexthop replace id 103 group 101/102 type resilient idle_timer 120 319386e3792SIdo Schimmel ip nexthop replace id 106 group 104/105 type resilient idle_timer 120 320386e3792SIdo Schimmel 321386e3792SIdo Schimmel log_info "Running IPv4 multipath tests" 322386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 323386e3792SIdo Schimmel multipath4_test "ECMP" 1 1 324386e3792SIdo Schimmel ip nexthop replace id 103 group 101,2/102,1 type resilient 325386e3792SIdo Schimmel multipath4_test "Weighted MP 2:1" 1 1 326386e3792SIdo Schimmel ip nexthop replace id 103 group 101,11/102,45 type resilient 327386e3792SIdo Schimmel multipath4_test "Weighted MP 11:45" 1 1 328386e3792SIdo Schimmel 329386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 330386e3792SIdo Schimmel 331386e3792SIdo Schimmel log_info "Running IPv6 L4 hash multipath tests" 332386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 333386e3792SIdo Schimmel multipath6_l4_test "ECMP" 1 1 334386e3792SIdo Schimmel ip nexthop replace id 106 group 104,2/105,1 type resilient 335386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 2:1" 1 1 336386e3792SIdo Schimmel ip nexthop replace id 106 group 104,11/105,45 type resilient 337386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 11:45" 1 1 338386e3792SIdo Schimmel 339386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 340386e3792SIdo Schimmel 341386e3792SIdo Schimmel # With a short idle timer and enough idle time, weight replacement 342386e3792SIdo Schimmel # should happen. 343386e3792SIdo Schimmel log_info "Running multipath tests with an idle timer of 5 seconds" 344386e3792SIdo Schimmel ip nexthop replace id 103 group 101/102 type resilient idle_timer 5 345386e3792SIdo Schimmel ip nexthop replace id 106 group 104/105 type resilient idle_timer 5 346386e3792SIdo Schimmel 347386e3792SIdo Schimmel log_info "Running IPv4 multipath tests" 348386e3792SIdo Schimmel sleep 10 349386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 350386e3792SIdo Schimmel multipath4_test "ECMP" 1 1 351386e3792SIdo Schimmel sleep 10 352386e3792SIdo Schimmel ip nexthop replace id 103 group 101,2/102,1 type resilient 353386e3792SIdo Schimmel multipath4_test "Weighted MP 2:1" 2 1 354386e3792SIdo Schimmel sleep 10 355386e3792SIdo Schimmel ip nexthop replace id 103 group 101,11/102,45 type resilient 356386e3792SIdo Schimmel multipath4_test "Weighted MP 11:45" 11 45 357386e3792SIdo Schimmel 358386e3792SIdo Schimmel ip nexthop replace id 103 group 101,1/102,1 type resilient 359386e3792SIdo Schimmel 360386e3792SIdo Schimmel log_info "Running IPv6 L4 hash multipath tests" 361386e3792SIdo Schimmel sleep 10 362386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 363386e3792SIdo Schimmel multipath6_l4_test "ECMP" 1 1 364386e3792SIdo Schimmel sleep 10 365386e3792SIdo Schimmel ip nexthop replace id 106 group 104,2/105,1 type resilient 366386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 2:1" 2 1 367386e3792SIdo Schimmel sleep 10 368386e3792SIdo Schimmel ip nexthop replace id 106 group 104,11/105,45 type resilient 369386e3792SIdo Schimmel multipath6_l4_test "Weighted MP 11:45" 11 45 370386e3792SIdo Schimmel 371386e3792SIdo Schimmel ip nexthop replace id 106 group 104,1/105,1 type resilient 372386e3792SIdo Schimmel} 373386e3792SIdo Schimmel 374a22b0426SPetr Machatanh_stats_test_v4() 375a22b0426SPetr Machata{ 376a22b0426SPetr Machata __nh_stats_test_v4 resilient 377a22b0426SPetr Machata} 378a22b0426SPetr Machata 379a22b0426SPetr Machatanh_stats_test_v6() 380a22b0426SPetr Machata{ 381a22b0426SPetr Machata __nh_stats_test_v6 resilient 382a22b0426SPetr Machata} 383a22b0426SPetr Machata 384386e3792SIdo Schimmelsetup_prepare() 385386e3792SIdo Schimmel{ 386386e3792SIdo Schimmel h1=${NETIFS[p1]} 387386e3792SIdo Schimmel rp11=${NETIFS[p2]} 388386e3792SIdo Schimmel 389386e3792SIdo Schimmel rp12=${NETIFS[p3]} 390386e3792SIdo Schimmel rp22=${NETIFS[p4]} 391386e3792SIdo Schimmel 392386e3792SIdo Schimmel rp13=${NETIFS[p5]} 393386e3792SIdo Schimmel rp23=${NETIFS[p6]} 394386e3792SIdo Schimmel 395386e3792SIdo Schimmel rp21=${NETIFS[p7]} 396386e3792SIdo Schimmel h2=${NETIFS[p8]} 397386e3792SIdo Schimmel 398386e3792SIdo Schimmel vrf_prepare 399386e3792SIdo Schimmel 400386e3792SIdo Schimmel h1_create 401386e3792SIdo Schimmel h2_create 402386e3792SIdo Schimmel 403386e3792SIdo Schimmel router1_create 404386e3792SIdo Schimmel router2_create 405386e3792SIdo Schimmel 406386e3792SIdo Schimmel forwarding_enable 407386e3792SIdo Schimmel} 408386e3792SIdo Schimmel 409386e3792SIdo Schimmelcleanup() 410386e3792SIdo Schimmel{ 411386e3792SIdo Schimmel pre_cleanup 412386e3792SIdo Schimmel 413386e3792SIdo Schimmel forwarding_restore 414386e3792SIdo Schimmel 415386e3792SIdo Schimmel router2_destroy 416386e3792SIdo Schimmel router1_destroy 417386e3792SIdo Schimmel 418386e3792SIdo Schimmel h2_destroy 419386e3792SIdo Schimmel h1_destroy 420386e3792SIdo Schimmel 421386e3792SIdo Schimmel vrf_cleanup 422386e3792SIdo Schimmel} 423386e3792SIdo Schimmel 424386e3792SIdo Schimmelping_ipv4() 425386e3792SIdo Schimmel{ 426386e3792SIdo Schimmel ping_test $h1 198.51.100.2 427386e3792SIdo Schimmel} 428386e3792SIdo Schimmel 429386e3792SIdo Schimmelping_ipv6() 430386e3792SIdo Schimmel{ 431386e3792SIdo Schimmel ping6_test $h1 2001:db8:2::2 432386e3792SIdo Schimmel} 433386e3792SIdo Schimmel 434386e3792SIdo Schimmelip nexthop ls >/dev/null 2>&1 435386e3792SIdo Schimmelif [ $? -ne 0 ]; then 436386e3792SIdo Schimmel echo "Nexthop objects not supported; skipping tests" 4377844ec21SPo-Hsu Lin exit $ksft_skip 438386e3792SIdo Schimmelfi 439386e3792SIdo Schimmel 440386e3792SIdo Schimmeltrap cleanup EXIT 441386e3792SIdo Schimmel 442386e3792SIdo Schimmelsetup_prepare 443386e3792SIdo Schimmelsetup_wait 444386e3792SIdo Schimmelrouting_nh_obj 445386e3792SIdo Schimmel 446386e3792SIdo Schimmeltests_run 447386e3792SIdo Schimmel 448386e3792SIdo Schimmelexit $EXIT_STATUS 449