The limits have been recently increased, it is required to validate that
having 64 subflows is allowed.
Here, both the client and the server have 8 network interfaces. The
server has 8 endpoints marked as 'signal' to announce all its v4
addresses. The client also has 8 endpoints, but marked as 'subflow' and
'fullmesh' in order to create 8 subflows to each address announced by
the server. This means 63 additional subflows will be created after the
initial one.
If it is not possible to increase the limits to 64, it means an older
kernel version is being used, and the test is skipped.
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 28da9df797ae..8d6a9c031e0e 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -513,6 +513,19 @@ reset_with_tcp_filter()
fi
}
+# For kernel supporting limits above 8
+# $1: title ; $2,4: addrs limit ns1,2 ; $3,5: subflows limit ns1,2
+reset_with_high_limits()
+{
+ reset "${1}" || return 1
+
+ if ! pm_nl_set_limits "${ns1}" "${2}" "${3}" 2>/dev/null ||
+ ! pm_nl_set_limits "${ns2}" "${4}" "${5}" 2>/dev/null; then
+ mark_as_skipped "unable to set the limits to ${*:2}"
+ return 1
+ fi
+}
+
# $1: err msg
fail_test()
{
@@ -3670,6 +3683,21 @@ fullmesh_tests()
chk_prio_nr 0 1 1 0
chk_rm_nr 0 1
fi
+
+ # fullmesh in 8x8 to create 63 additional subflows
+ if ifaces_nr=8 reset_with_high_limits "fullmesh 8x8" 64 64 64 64; then
+ # higher chance to loose ADD_ADDR: allow retransmissions
+ ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
+ local i
+ for i in $(seq 1 8); do
+ pm_nl_add_endpoint $ns2 10.0.$i.2 flags subflow,fullmesh
+ pm_nl_add_endpoint $ns1 10.0.$i.1 flags signal
+ done
+ speed=slow \
+ run_tests $ns1 $ns2 10.0.1.1
+ chk_join_nr 63 63 63
+ fi
+
}
fastclose_tests()
--
2.53.0