Skip to content

Commit 937eeb3

Browse files
idoschdavem330
authored andcommitted
selftests: forwarding: Create test topology for multipath routing
Create a topology with two hosts, each directly connected to a different router. Both routers are connected using two links, enabling multipath routing. Test IPv4 and IPv6 ping using default MTU and large MTU. Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 7b7bc87 commit 937eeb3

File tree

1 file changed

+209
-0
lines changed

1 file changed

+209
-0
lines changed
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
NUM_NETIFS=8
5+
source lib.sh
6+
7+
h1_create()
8+
{
9+
vrf_create "vrf-h1"
10+
ip link set dev $h1 master vrf-h1
11+
12+
ip link set dev vrf-h1 up
13+
ip link set dev $h1 up
14+
15+
ip address add 192.0.2.2/24 dev $h1
16+
ip address add 2001:db8:1::2/64 dev $h1
17+
18+
ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.1
19+
ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::1
20+
}
21+
22+
h1_destroy()
23+
{
24+
ip route del 2001:db8:2::/64 vrf vrf-h1
25+
ip route del 198.51.100.0/24 vrf vrf-h1
26+
27+
ip address del 2001:db8:1::2/64 dev $h1
28+
ip address del 192.0.2.2/24 dev $h1
29+
30+
ip link set dev $h1 down
31+
vrf_destroy "vrf-h1"
32+
}
33+
34+
h2_create()
35+
{
36+
vrf_create "vrf-h2"
37+
ip link set dev $h2 master vrf-h2
38+
39+
ip link set dev vrf-h2 up
40+
ip link set dev $h2 up
41+
42+
ip address add 198.51.100.2/24 dev $h2
43+
ip address add 2001:db8:2::2/64 dev $h2
44+
45+
ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.1
46+
ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::1
47+
}
48+
49+
h2_destroy()
50+
{
51+
ip route del 2001:db8:1::/64 vrf vrf-h2
52+
ip route del 192.0.2.0/24 vrf vrf-h2
53+
54+
ip address del 2001:db8:2::2/64 dev $h2
55+
ip address del 198.51.100.2/24 dev $h2
56+
57+
ip link set dev $h2 down
58+
vrf_destroy "vrf-h2"
59+
}
60+
61+
router1_create()
62+
{
63+
vrf_create "vrf-r1"
64+
ip link set dev $rp11 master vrf-r1
65+
ip link set dev $rp12 master vrf-r1
66+
ip link set dev $rp13 master vrf-r1
67+
68+
ip link set dev vrf-r1 up
69+
ip link set dev $rp11 up
70+
ip link set dev $rp12 up
71+
ip link set dev $rp13 up
72+
73+
ip address add 192.0.2.1/24 dev $rp11
74+
ip address add 2001:db8:1::1/64 dev $rp11
75+
76+
ip address add 169.254.2.12/24 dev $rp12
77+
ip address add fe80:2::12/64 dev $rp12
78+
79+
ip address add 169.254.3.13/24 dev $rp13
80+
ip address add fe80:3::13/64 dev $rp13
81+
82+
ip route add 198.51.100.0/24 vrf vrf-r1 \
83+
nexthop via 169.254.2.22 dev $rp12 \
84+
nexthop via 169.254.3.23 dev $rp13
85+
ip route add 2001:db8:2::/64 vrf vrf-r1 \
86+
nexthop via fe80:2::22 dev $rp12 \
87+
nexthop via fe80:3::23 dev $rp13
88+
}
89+
90+
router1_destroy()
91+
{
92+
ip route del 2001:db8:2::/64 vrf vrf-r1
93+
ip route del 198.51.100.0/24 vrf vrf-r1
94+
95+
ip address del fe80:3::13/64 dev $rp13
96+
ip address del 169.254.3.13/24 dev $rp13
97+
98+
ip address del fe80:2::12/64 dev $rp12
99+
ip address del 169.254.2.12/24 dev $rp12
100+
101+
ip address del 2001:db8:1::1/64 dev $rp11
102+
ip address del 192.0.2.1/24 dev $rp11
103+
104+
ip link set dev $rp13 down
105+
ip link set dev $rp12 down
106+
ip link set dev $rp11 down
107+
108+
vrf_destroy "vrf-r1"
109+
}
110+
111+
router2_create()
112+
{
113+
vrf_create "vrf-r2"
114+
ip link set dev $rp21 master vrf-r2
115+
ip link set dev $rp22 master vrf-r2
116+
ip link set dev $rp23 master vrf-r2
117+
118+
ip link set dev vrf-r2 up
119+
ip link set dev $rp21 up
120+
ip link set dev $rp22 up
121+
ip link set dev $rp23 up
122+
123+
ip address add 198.51.100.1/24 dev $rp21
124+
ip address add 2001:db8:2::1/64 dev $rp21
125+
126+
ip address add 169.254.2.22/24 dev $rp22
127+
ip address add fe80:2::22/64 dev $rp22
128+
129+
ip address add 169.254.3.23/24 dev $rp23
130+
ip address add fe80:3::23/64 dev $rp23
131+
132+
ip route add 192.0.2.0/24 vrf vrf-r2 \
133+
nexthop via 169.254.2.12 dev $rp22 \
134+
nexthop via 169.254.3.13 dev $rp23
135+
ip route add 2001:db8:1::/64 vrf vrf-r2 \
136+
nexthop via fe80:2::12 dev $rp22 \
137+
nexthop via fe80:3::13 dev $rp23
138+
}
139+
140+
router2_destroy()
141+
{
142+
ip route del 2001:db8:1::/64 vrf vrf-r2
143+
ip route del 192.0.2.0/24 vrf vrf-r2
144+
145+
ip address del fe80:3::23/64 dev $rp23
146+
ip address del 169.254.3.23/24 dev $rp23
147+
148+
ip address del fe80:2::22/64 dev $rp22
149+
ip address del 169.254.2.22/24 dev $rp22
150+
151+
ip address del 2001:db8:2::1/64 dev $rp21
152+
ip address del 198.51.100.1/24 dev $rp21
153+
154+
ip link set dev $rp23 down
155+
ip link set dev $rp22 down
156+
ip link set dev $rp21 down
157+
158+
vrf_destroy "vrf-r2"
159+
}
160+
161+
setup_prepare()
162+
{
163+
h1=${NETIFS[p1]}
164+
rp11=${NETIFS[p2]}
165+
166+
rp12=${NETIFS[p3]}
167+
rp22=${NETIFS[p4]}
168+
169+
rp13=${NETIFS[p5]}
170+
rp23=${NETIFS[p6]}
171+
172+
rp21=${NETIFS[p7]}
173+
h2=${NETIFS[p8]}
174+
175+
vrf_prepare
176+
177+
h1_create
178+
h2_create
179+
180+
router1_create
181+
router2_create
182+
183+
forwarding_enable
184+
}
185+
186+
cleanup()
187+
{
188+
pre_cleanup
189+
190+
forwarding_restore
191+
192+
router2_destroy
193+
router1_destroy
194+
195+
h2_destroy
196+
h1_destroy
197+
198+
vrf_cleanup
199+
}
200+
201+
trap cleanup EXIT
202+
203+
setup_prepare
204+
setup_wait
205+
206+
ping_test $h1 198.51.100.2
207+
ping6_test $h1 2001:db8:2::2
208+
209+
exit $EXIT_STATUS

0 commit comments

Comments
 (0)