linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust
@ 2023-05-10 11:16 Andrea Mayer
  2023-05-10 11:16 ` [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test Andrea Mayer
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Andrea Mayer @ 2023-05-10 11:16 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	David Ahern, Shuah Khan, linux-kernel, netdev, linux-kselftest
  Cc: Stefano Salsano, Paolo Lungaroni, Ahmed Abdelsalam, Hangbin Liu,
	Andrea Mayer

This pachset aims to improve and make more robust the selftests performed to
check whether SRv6 End.DT4 beahvior works as expected under different system
configurations.
Some Linux distributions enable Deduplication Address Detection and Reverse
Path Filtering mechanisms by default which can interfere with SRv6 End.DT4
behavior and cause selftests to fail.

The following patches improve selftests for End.DT4 by taking these two
mechanisms into account. Specifically:
 - patch 1/2: selftests: seg6: disable DAD on IPv6 router cfg for
              srv6_end_dt4_l3vpn_test
 - patch 2/2: selftets: seg6: disable rp_filter by default in
              srv6_end_dt4_l3vpn_test 

Thank you all,
Andrea

Andrea Mayer (2):
  selftests: seg6: disable DAD on IPv6 router cfg for
    srv6_end_dt4_l3vpn_test
  selftets: seg6: disable rp_filter by default in
    srv6_end_dt4_l3vpn_test

 .../selftests/net/srv6_end_dt4_l3vpn_test.sh    | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test
  2023-05-10 11:16 [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust Andrea Mayer
@ 2023-05-10 11:16 ` Andrea Mayer
  2023-05-10 19:55   ` David Ahern
  2023-05-10 11:16 ` [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test Andrea Mayer
  2023-05-12  1:10 ` [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Andrea Mayer @ 2023-05-10 11:16 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	David Ahern, Shuah Khan, linux-kernel, netdev, linux-kselftest
  Cc: Stefano Salsano, Paolo Lungaroni, Ahmed Abdelsalam, Hangbin Liu,
	Andrea Mayer

The srv6_end_dt4_l3vpn_test instantiates a virtual network consisting of
several routers (rt-1, rt-2) and hosts.
When the IPv6 addresses of rt-{1,2} routers are configured, the Deduplicate
Address Detection (DAD) kicks in when enabled in the Linux distros running
the selftests. DAD is used to check whether an IPv6 address is already
assigned in a network. Such a mechanism consists of sending an ICMPv6 Echo
Request and waiting for a reply.
As the DAD process could take too long to complete, it may cause the
failing of some tests carried out by the srv6_end_dt4_l3vpn_test script.

To make the srv6_end_dt4_l3vpn_test more robust, we disable DAD on routers
since we configure the virtual network manually and do not need any address
deduplication mechanism at all.

Fixes: 2195444e09b4 ("selftests: add selftest for the SRv6 End.DT4 behavior")
Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
---
 tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh b/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
index 1003119773e5..37f08d582d2f 100755
--- a/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
+++ b/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
@@ -232,10 +232,14 @@ setup_rt_networking()
 	local nsname=rt-${rt}
 
 	ip netns add ${nsname}
+
+	ip netns exec ${nsname} sysctl -wq net.ipv6.conf.all.accept_dad=0
+	ip netns exec ${nsname} sysctl -wq net.ipv6.conf.default.accept_dad=0
+
 	ip link set veth-rt-${rt} netns ${nsname}
 	ip -netns ${nsname} link set veth-rt-${rt} name veth0
 
-	ip -netns ${nsname} addr add ${IPv6_RT_NETWORK}::${rt}/64 dev veth0
+	ip -netns ${nsname} addr add ${IPv6_RT_NETWORK}::${rt}/64 dev veth0 nodad
 	ip -netns ${nsname} link set veth0 up
 	ip -netns ${nsname} link set lo up
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test
  2023-05-10 11:16 [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust Andrea Mayer
  2023-05-10 11:16 ` [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test Andrea Mayer
@ 2023-05-10 11:16 ` Andrea Mayer
  2023-05-10 19:56   ` David Ahern
  2023-05-12  1:10 ` [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Andrea Mayer @ 2023-05-10 11:16 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	David Ahern, Shuah Khan, linux-kernel, netdev, linux-kselftest
  Cc: Stefano Salsano, Paolo Lungaroni, Ahmed Abdelsalam, Hangbin Liu,
	Andrea Mayer

On some distributions, the rp_filter is automatically set (=1) by
default on a netdev basis (also on VRFs).
In an SRv6 End.DT4 behavior, decapsulated IPv4 packets are routed using
the table associated with the VRF bound to that tunnel. During lookup
operations, the rp_filter can lead to packet loss when activated on the
VRF.
Therefore, we chose to make this selftest more robust by explicitly
disabling the rp_filter during tests (as it is automatically set by some
Linux distributions).

Fixes: 2195444e09b4 ("selftests: add selftest for the SRv6 End.DT4 behavior")
Reported-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Tested-by: Hangbin Liu <liuhangbin@gmail.com>
---
 .../testing/selftests/net/srv6_end_dt4_l3vpn_test.sh  | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh b/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
index 37f08d582d2f..f96282362811 100755
--- a/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
+++ b/tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
@@ -258,6 +258,12 @@ setup_hs()
 
 	# set the networking for the host
 	ip netns add ${hsname}
+
+	# disable the rp_filter otherwise the kernel gets confused about how
+	# to route decap ipv4 packets.
+	ip netns exec ${rtname} sysctl -wq net.ipv4.conf.all.rp_filter=0
+	ip netns exec ${rtname} sysctl -wq net.ipv4.conf.default.rp_filter=0
+
 	ip -netns ${hsname} link add veth0 type veth peer name ${rtveth}
 	ip -netns ${hsname} link set ${rtveth} netns ${rtname}
 	ip -netns ${hsname} addr add ${IPv4_HS_NETWORK}.${hs}/24 dev veth0
@@ -276,11 +282,6 @@ setup_hs()
 
 	ip netns exec ${rtname} sysctl -wq net.ipv4.conf.${rtveth}.proxy_arp=1
 
-	# disable the rp_filter otherwise the kernel gets confused about how
-	# to route decap ipv4 packets.
-	ip netns exec ${rtname} sysctl -wq net.ipv4.conf.all.rp_filter=0
-	ip netns exec ${rtname} sysctl -wq net.ipv4.conf.${rtveth}.rp_filter=0
-
 	ip netns exec ${rtname} sh -c "echo 1 > /proc/sys/net/vrf/strict_mode"
 }
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test
  2023-05-10 11:16 ` [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test Andrea Mayer
@ 2023-05-10 19:55   ` David Ahern
  0 siblings, 0 replies; 6+ messages in thread
From: David Ahern @ 2023-05-10 19:55 UTC (permalink / raw)
  To: Andrea Mayer, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Shuah Khan, linux-kernel, netdev, linux-kselftest
  Cc: Stefano Salsano, Paolo Lungaroni, Ahmed Abdelsalam, Hangbin Liu

On 5/10/23 5:16 AM, Andrea Mayer wrote:
> The srv6_end_dt4_l3vpn_test instantiates a virtual network consisting of
> several routers (rt-1, rt-2) and hosts.
> When the IPv6 addresses of rt-{1,2} routers are configured, the Deduplicate
> Address Detection (DAD) kicks in when enabled in the Linux distros running
> the selftests. DAD is used to check whether an IPv6 address is already
> assigned in a network. Such a mechanism consists of sending an ICMPv6 Echo
> Request and waiting for a reply.
> As the DAD process could take too long to complete, it may cause the
> failing of some tests carried out by the srv6_end_dt4_l3vpn_test script.
> 
> To make the srv6_end_dt4_l3vpn_test more robust, we disable DAD on routers
> since we configure the virtual network manually and do not need any address
> deduplication mechanism at all.
> 
> Fixes: 2195444e09b4 ("selftests: add selftest for the SRv6 End.DT4 behavior")
> Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
> ---
>  tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 

Reviewed-by: David Ahern <dsahern@kernel.org>



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test
  2023-05-10 11:16 ` [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test Andrea Mayer
@ 2023-05-10 19:56   ` David Ahern
  0 siblings, 0 replies; 6+ messages in thread
From: David Ahern @ 2023-05-10 19:56 UTC (permalink / raw)
  To: Andrea Mayer, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Shuah Khan, linux-kernel, netdev, linux-kselftest
  Cc: Stefano Salsano, Paolo Lungaroni, Ahmed Abdelsalam, Hangbin Liu

On 5/10/23 5:16 AM, Andrea Mayer wrote:
> On some distributions, the rp_filter is automatically set (=1) by
> default on a netdev basis (also on VRFs).
> In an SRv6 End.DT4 behavior, decapsulated IPv4 packets are routed using
> the table associated with the VRF bound to that tunnel. During lookup
> operations, the rp_filter can lead to packet loss when activated on the
> VRF.
> Therefore, we chose to make this selftest more robust by explicitly
> disabling the rp_filter during tests (as it is automatically set by some
> Linux distributions).
> 
> Fixes: 2195444e09b4 ("selftests: add selftest for the SRv6 End.DT4 behavior")
> Reported-by: Hangbin Liu <liuhangbin@gmail.com>
> Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
> Tested-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
>  .../testing/selftests/net/srv6_end_dt4_l3vpn_test.sh  | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 

Reviewed-by: David Ahern <dsahern@kernel.org>



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust
  2023-05-10 11:16 [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust Andrea Mayer
  2023-05-10 11:16 ` [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test Andrea Mayer
  2023-05-10 11:16 ` [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test Andrea Mayer
@ 2023-05-12  1:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-05-12  1:10 UTC (permalink / raw)
  To: Andrea Mayer
  Cc: davem, edumazet, kuba, pabeni, dsahern, shuah, linux-kernel,
	netdev, linux-kselftest, stefano.salsano, paolo.lungaroni,
	ahabdels.dev, liuhangbin

Hello:

This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 10 May 2023 13:16:36 +0200 you wrote:
> This pachset aims to improve and make more robust the selftests performed to
> check whether SRv6 End.DT4 beahvior works as expected under different system
> configurations.
> Some Linux distributions enable Deduplication Address Detection and Reverse
> Path Filtering mechanisms by default which can interfere with SRv6 End.DT4
> behavior and cause selftests to fail.
> 
> [...]

Here is the summary with links:
  - [net,1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test
    https://git.kernel.org/netdev/net/c/21a933c79a33
  - [net,2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test
    https://git.kernel.org/netdev/net/c/f97b8401e0de

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-05-12  1:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-10 11:16 [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust Andrea Mayer
2023-05-10 11:16 ` [net 1/2] selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test Andrea Mayer
2023-05-10 19:55   ` David Ahern
2023-05-10 11:16 ` [net 2/2] selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test Andrea Mayer
2023-05-10 19:56   ` David Ahern
2023-05-12  1:10 ` [net 0/2] selftests: seg6: make srv6_end_dt4_l3vpn_test more robust patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).