forked from DPDK/grout
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsrv6_frr_test.sh
More file actions
executable file
·65 lines (51 loc) · 1.7 KB
/
Copy pathsrv6_frr_test.sh
File metadata and controls
executable file
·65 lines (51 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2025 Maxime Leroy, Free Mobile
. $(dirname $0)/_init_frr.sh
create_interface p0
create_interface p1
for n in 0 1; do
p=x-p$n
ns=n$n
netns_add $ns
move_to_netns $p $ns
done
ip -n n0 addr add 192.168.61.2/24 dev x-p0
ip -n n1 addr add fd00:102::2/32 dev x-p1
set_ip_address p0 192.168.61.1/24
set_ip_address p1 fd00:102::1/32
sleep 3
#
# network layout:
# (client) p0(netns) <--> p0 <grout> p1 <---> p1(netns) (public: 192.168.60.1/24 on p0)
# ipv4 ---------------| srv6 |-- ipv4
#
# test case:
# - (1) send ipv4 ping from p0
# - (2) grout encap in srv6, send to sid fd00:202:200::
# - (3) linux p1 decap it
# - (4) reply to ping
# - (5) linux p1 reencap in srv6, send to grout sid fd00:202::100,
# - (6) grout decap it, reply back in ipv4 to p0
#
# only linux's p1 will see srv6
ip netns exec n1 sysctl -w net.ipv6.conf.x-p1.seg6_enabled=1
ip netns exec n1 sysctl -w net.ipv6.conf.x-p1.forwarding=1
# (1) send ipv4 to grout
ip -n n0 route add default via 192.168.61.1 dev x-p0
# (2)
set_srv6_route 192.168.0.0/16 p1 fd00:202:200::
set_ip_route fd00:202::/32 fd00:102::2
# (3)
ip -n n1 -6 route add fd00:202:200:: encap seg6local action End.DX4 nh4 192.168.60.1 count dev x-p1
# (4) 192.168.60.0/24 is our 'public' network
ip -n n1 addr add 192.168.60.1/24 dev x-p1
# (5)
ip -n n1 route add 192.168.61.0/24 encap seg6 mode encap segs fd00:202:100:: dev x-p1
ip -n n1 -6 route add fd00:202::/32 via fd00:102::1 dev x-p1
# (6)
set_srv6_localsid locator_grout fd00:202 fd00:202:100::
# test
ip netns exec n0 ping -i0.01 -c3 -n 192.168.60.1
# check that sid is reachable
ip netns exec n1 ping6 -i0.01 -c3 -n fd00:202:100::