mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-17 11:21:05 -05:00
selftests: seg6: Add test cases for End.X with link-local nexthop
In the current test topology, all the routers are connected to each other via dedicated links with addresses of the form fcf0:0:x:y::/64. The test configures rt-3 with an adjacency with rt-4 and rt-4 with an adjacency with rt-1: # ip -n rt_3-IgWSBJ -6 route show tab 90 fcbb:0:300::/48 fcbb:0:300::/48 encap seg6local action End.X nh6 fcf0:0:3:4::4 flavors next-csid lblen 32 nflen 16 dev dum0 metric 1024 pref medium # ip -n rt_4-JdCunK -6 route show tab 90 fcbb:0:400::/48 fcbb:0:400::/48 encap seg6local action End.X nh6 fcf0:0:1:4::1 flavors next-csid lblen 32 nflen 16 dev dum0 metric 1024 pref medium The routes are used when pinging hs-2 from hs-1 and vice-versa. Extend the test to also cover End.X behavior with an IPv6 link-local nexthop address and an output interface. Configure every router interface with an IPv6 link-local address of the form fe80:❌y/64 and before re-running the ping tests, replace the previous End.X routes with routes that use the new IPv6 link-local addresses: # ip -n rt_3-IgWSBJ -6 route show tab 90 fcbb:0:300::/48 fcbb:0:300::/48 encap seg6local action End.X nh6 fe80::4:3 oif veth-rt-3-4 flavors next-csid lblen 32 nflen 16 dev dum0 metric 1024 pref medium # ip -n rt_4-JdCunK -6 route show tab 90 fcbb:0:400::/48 fcbb:0:400::/48 encap seg6local action End.X nh6 fe80::1:4 oif veth-rt-4-1 flavors next-csid lblen 32 nflen 16 dev dum0 metric 1024 pref medium The new test cases fail without the previous patch ("seg6: Allow End.X behavior to accept an oif"): # ./srv6_end_x_next_csid_l3vpn_test.sh [...] ################################################################################ TEST SECTION: SRv6 VPN connectivity test hosts (h1 <-> h2, IPv6), link-local ################################################################################ TEST: IPv6 Hosts connectivity: hs-1 -> hs-2 [FAIL] TEST: IPv6 Hosts connectivity: hs-2 -> hs-1 [FAIL] ################################################################################ TEST SECTION: SRv6 VPN connectivity test hosts (h1 <-> h2, IPv4), link-local ################################################################################ TEST: IPv4 Hosts connectivity: hs-1 -> hs-2 [FAIL] TEST: IPv4 Hosts connectivity: hs-2 -> hs-1 [FAIL] Tests passed: 40 Tests failed: 4 And pass with it: # ./srv6_end_x_next_csid_l3vpn_test.sh [...] ################################################################################ TEST SECTION: SRv6 VPN connectivity test hosts (h1 <-> h2, IPv6), link-local ################################################################################ TEST: IPv6 Hosts connectivity: hs-1 -> hs-2 [ OK ] TEST: IPv6 Hosts connectivity: hs-2 -> hs-1 [ OK ] ################################################################################ TEST SECTION: SRv6 VPN connectivity test hosts (h1 <-> h2, IPv4), link-local ################################################################################ TEST: IPv4 Hosts connectivity: hs-1 -> hs-2 [ OK ] TEST: IPv4 Hosts connectivity: hs-2 -> hs-1 [ OK ] Tests passed: 44 Tests failed: 0 Without the previous patch, rt-3 and rt-4 resolve the wrong routes for the link-local nexthops, with the output interface being the input interface: # perf script [...] ping 1067 [001] 37.554486: fib6:fib6_table_lookup: table 254 oif 0 iif 11 proto 41 cafe::254/0 -> fe80::4:3/0 flowlabel 0xb7973 tos 0 scope 0 flags 2 ==> dev veth-rt-3-1 gw :: err 0 [...] ping 1069 [002] 41.573360: fib6:fib6_table_lookup: table 254 oif 0 iif 12 proto 41 cafe::254/0 -> fe80::1:4/0 flowlabel 0xb7973 tos 0 scope 0 flags 2 ==> dev veth-rt-4-2 gw :: err 0 But the correct routes are resolved with the patch: # perf script [...] ping 1066 [006] 30.672355: fib6:fib6_table_lookup: table 254 oif 13 iif 1 proto 41 cafe::254/0 -> fe80::4:3/0 flowlabel 0x85941 tos 0 scope 0 flags 6 ==> dev veth-rt-3-4 gw :: err 0 [...] ping 1066 [006] 30.672411: fib6:fib6_table_lookup: table 254 oif 11 iif 1 proto 41 cafe::254/0 -> fe80::1:4/0 flowlabel 0x91de0 tos 0 scope 0 flags 6 ==> dev veth-rt-4-1 gw :: err 0 Reviewed-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Andrea Mayer <andrea.mayer@uniroma2.it> Link: https://patch.msgid.link/20250612122323.584113-5-idosch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
a2840d4e25
commit
04d752d60c
@@ -72,6 +72,9 @@
|
||||
# Every fcf0:0:x:y::/64 network interconnects the SRv6 routers rt-x with rt-y in
|
||||
# the selftest network.
|
||||
#
|
||||
# In addition, every router interface connecting rt-x to rt-y is assigned an
|
||||
# IPv6 link-local address fe80::x:y/64.
|
||||
#
|
||||
# Local SID/C-SID table
|
||||
# =====================
|
||||
#
|
||||
@@ -521,6 +524,9 @@ setup_rt_networking()
|
||||
ip -netns "${nsname}" addr \
|
||||
add "${net_prefix}::${rt}/64" dev "${devname}" nodad
|
||||
|
||||
ip -netns "${nsname}" addr \
|
||||
add "fe80::${rt}:${neigh}/64" dev "${devname}" nodad
|
||||
|
||||
ip -netns "${nsname}" link set "${devname}" up
|
||||
done
|
||||
|
||||
@@ -609,6 +615,27 @@ set_end_x_nextcsid()
|
||||
nflen "${LCNODEFUNC_BLEN}" dev "${DUMMY_DEVNAME}"
|
||||
}
|
||||
|
||||
set_end_x_ll_nextcsid()
|
||||
{
|
||||
local rt="$1"
|
||||
local adj="$2"
|
||||
|
||||
eval nsname=\${$(get_rtname "${rt}")}
|
||||
lcnode_func_prefix="$(build_lcnode_func_prefix "${rt}")"
|
||||
nh6_ll_addr="fe80::${adj}:${rt}"
|
||||
oifname="veth-rt-${rt}-${adj}"
|
||||
|
||||
# enabled NEXT-C-SID SRv6 End.X behavior via an IPv6 link-local nexthop
|
||||
# address (note that "dev" is the dummy dum0 device chosen for the sake
|
||||
# of simplicity).
|
||||
ip -netns "${nsname}" -6 route \
|
||||
replace "${lcnode_func_prefix}" \
|
||||
table "${LOCALSID_TABLE_ID}" \
|
||||
encap seg6local action End.X nh6 "${nh6_ll_addr}" \
|
||||
oif "${oifname}" flavors next-csid lblen "${LCBLOCK_BLEN}" \
|
||||
nflen "${LCNODEFUNC_BLEN}" dev "${DUMMY_DEVNAME}"
|
||||
}
|
||||
|
||||
set_underlay_sids_reachability()
|
||||
{
|
||||
local rt="$1"
|
||||
@@ -1016,6 +1043,27 @@ host_vpn_tests()
|
||||
|
||||
check_and_log_hs_ipv4_connectivity 1 2
|
||||
check_and_log_hs_ipv4_connectivity 2 1
|
||||
|
||||
# Setup the adjacencies in the SRv6 aware routers using IPv6 link-local
|
||||
# addresses.
|
||||
# - rt-3 SRv6 End.X adjacency with rt-4
|
||||
# - rt-4 SRv6 End.X adjacency with rt-1
|
||||
set_end_x_ll_nextcsid 3 4
|
||||
set_end_x_ll_nextcsid 4 1
|
||||
|
||||
log_section "SRv6 VPN connectivity test hosts (h1 <-> h2, IPv6), link-local"
|
||||
|
||||
check_and_log_hs_ipv6_connectivity 1 2
|
||||
check_and_log_hs_ipv6_connectivity 2 1
|
||||
|
||||
log_section "SRv6 VPN connectivity test hosts (h1 <-> h2, IPv4), link-local"
|
||||
|
||||
check_and_log_hs_ipv4_connectivity 1 2
|
||||
check_and_log_hs_ipv4_connectivity 2 1
|
||||
|
||||
# Restore the previous adjacencies.
|
||||
set_end_x_nextcsid 3 4
|
||||
set_end_x_nextcsid 4 1
|
||||
}
|
||||
|
||||
__nextcsid_end_x_behavior_test()
|
||||
|
||||
Reference in New Issue
Block a user