From patchwork Fri Mar 29 12:08:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Matthieu Baerts \(NGI0\)" X-Patchwork-Id: 784285 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7192785627; Fri, 29 Mar 2024 12:09:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711714171; cv=none; b=IgvGW3X1dS9wfmUKsqzwlkS2FB/zg4IpdR6Z5mxYoUG9I0XgEIeRSlQDLPBbfPPNvI0YffJJtJZ4fqIN+0Xae9fvGEjh83FmttKPT34Sj8yMji2NLTsHNuQgo1D/4sIGQycEPqI8IQyq16Heu584Bef7APZV9Pe1qC2vY+2PTWI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711714171; c=relaxed/simple; bh=obJlusCKO+aBYVZ+i1x3VClG9Vg+uztrKe0aVWem1RY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c85U7OHmxH5ii5ZpJ6acbN4VyJniExSdKQIJzkL3rv4YjQJ94ZXNXWYw7aY8chQOKVLxeszq8UaLEnLI4NvjWs4M6oB6MmM9QM02uL7ENi53mdVMHjMG9genXO8EiJhOviutLJLi5k7EEDk26vlWA1bj1OpW8WvZGLfvhhtbWb8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=upNIFOWH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="upNIFOWH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 18DCFC43390; Fri, 29 Mar 2024 12:09:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711714170; bh=obJlusCKO+aBYVZ+i1x3VClG9Vg+uztrKe0aVWem1RY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=upNIFOWHxhhnBYjAVXxlMjEx2qopiNxMBczsvGnsQ+6puhXtiEgQzwzniCCj7y3ca PE+4WKqjbcapvtWTY1moeCiEZnNaEhe54soLv+XAxAF/U+aJT+2gmxD8ortCZ58YJf owKf4Vn9v6ejKcJBvD54ij/UcGmiFCtjqZYV+K2zYcX/KcWJyGwmu9knc0EAg+wiLG acnD6dAGYZFEpQXtc8qjarZb80KNWDM595WbG1xE2ws4l0Zylqd57ax1wGzTI6RLHM prieuNYnTpw81Cf8gil82xgkUiE90XEo2EBJeFf1PZNUcz4pWH7Hn/6VAdv6sQvzNv bNftOPWetJ0dw== From: "Matthieu Baerts (NGI0)" Date: Fri, 29 Mar 2024 13:08:52 +0100 Subject: [PATCH net 1/2] mptcp: don't account accept() of non-MPC client as fallback to TCP Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240329-upstream-net-20240329-fallback-mib-v1-1-324a8981da48@kernel.org> References: <20240329-upstream-net-20240329-fallback-mib-v1-0-324a8981da48@kernel.org> In-Reply-To: <20240329-upstream-net-20240329-fallback-mib-v1-0-324a8981da48@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Davide Caratti , stable@vger.kernel.org, Christoph Paasch X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4403; i=matttbe@kernel.org; h=from:subject:message-id; bh=uIT1YFuZreybFhf23UwWyib0d2owauuM4ktB3kWuvgg=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmBq9yVMeY8O4/CWfhbfoWjtO83lDFkK2ICh05b ayDkyx0uU+JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZgavcgAKCRD2t4JPQmmg czZAD/4wPMFT1XAIgaI4hsXrsFZl4ZWOHs95nHoQKiYOo4y4iJ6DChL7LizuGSY2bnW6xM5g6Yr 5fRJ/ig5/ksBPCwkMoPsiWjbJc8yZT2DKzN2+9iTNfhrrp0KauxUss3YsjyyJhnSVrhKFwzP2Wx dZKqb8ZtcZQB/X3rww3y77h4qK+ShOuu5Fz7np4JZlkaY95R5ullTRXSUMEN8qMxHqWwdGkFSws n1k9J2bcVmFcugNsgPVT2GAG0gs5enM51TbSgKZDiBGMFFZ3R4YUApBcxa+VFcwtWOFkRwcf9wX scODVky/RH74xcnrThzORa4CSBpz2h+DL3bWSiu5EQgbCSI0PyZTAHW6eySgrFCZXbNs+MmqCLs amJGgpUwoVDXiNAI8a+yY9GBY80ooYPk/KCYQVOHHlOcKLxMg6coKeIMN3GMpidvaZBwqujtJmw WxL2sOSfBe1uJz5iAlyOABu7wHJJTWf2FWer/R2B/JdA2+0d6q26b2BqgQBh/42Ft6Kz5ED4KKR jWyrPkGzSkutm0KxgdDwAUX60RNgVXAh7ZuvvmRJtakxTrG0cG2Sm52Zah7C0pWaSw+xasXonxK TQc8eNAmKbvL/915gOqrnLxM5q5mAbQBAWmUR7gQrkLuN8zqpzKUiQBaQPdufVtkWiUDbM+zwLF mD5+0yd951ExA8w== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Davide Caratti Current MPTCP servers increment MPTcpExtMPCapableFallbackACK when they accept non-MPC connections. As reported by Christoph, this is "surprising" because the counter might become greater than MPTcpExtMPCapableSYNRX. MPTcpExtMPCapableFallbackACK counter's name suggests it should only be incremented when a connection was seen using MPTCP options, then a fallback to TCP has been done. Let's do that by incrementing it when the subflow context of an inbound MPC connection attempt is dropped. Also, update mptcp_connect.sh kselftest, to ensure that the above MIB does not increment in case a pure TCP client connects to a MPTCP server. Fixes: fc518953bc9c ("mptcp: add and use MIB counter infrastructure") Cc: stable@vger.kernel.org Reported-by: Christoph Paasch Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/449 Signed-off-by: Davide Caratti Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 2 -- net/mptcp/subflow.c | 2 ++ tools/testing/selftests/net/mptcp/mptcp_connect.sh | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 3a1967bc7bad..7e74b812e366 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3937,8 +3937,6 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, mptcp_set_state(newsk, TCP_CLOSE); } } else { - MPTCP_INC_STATS(sock_net(ssk), - MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); tcpfallback: newsk->sk_kern_sock = kern; lock_sock(newsk); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 1626dd20c68f..6042a47da61b 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -905,6 +905,8 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, return child; fallback: + if (fallback) + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); mptcp_subflow_drop_ctx(child); return child; } diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh index 4c4248554826..4131f3263a48 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -383,12 +383,14 @@ do_transfer() local stat_cookierx_last local stat_csum_err_s local stat_csum_err_c + local stat_tcpfb_last_l stat_synrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX") stat_ackrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX") stat_cookietx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent") stat_cookierx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv") stat_csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr") stat_csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr") + stat_tcpfb_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") timeout ${timeout_test} \ ip netns exec ${listener_ns} \ @@ -457,11 +459,13 @@ do_transfer() local stat_cookietx_now local stat_cookierx_now local stat_ooo_now + local stat_tcpfb_now_l stat_synrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX") stat_ackrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX") stat_cookietx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent") stat_cookierx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv") stat_ooo_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue") + stat_tcpfb_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") expect_synrx=$((stat_synrx_last_l)) expect_ackrx=$((stat_ackrx_last_l)) @@ -508,6 +512,11 @@ do_transfer() fi fi + if [ ${stat_ooo_now} -eq 0 ] && [ ${stat_tcpfb_last_l} -ne ${stat_tcpfb_now_l} ]; then + mptcp_lib_pr_fail "unexpected fallback to TCP" + rets=1 + fi + if [ $cookies -eq 2 ];then if [ $stat_cookietx_last -ge $stat_cookietx_now ] ;then extra+=" WARN: CookieSent: did not advance" From patchwork Fri Mar 29 12:08:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Matthieu Baerts \(NGI0\)" X-Patchwork-Id: 784650 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AA4F85C61; Fri, 29 Mar 2024 12:09:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711714174; cv=none; b=bDsLNoS5HuhOS+B27T4ZSI0pDDnziMRWRaBUwWQrfsz8X//F76srDhfG2FXBRCYOVyxHolw8QTVL1j8s36x9Z18eHBkHecAUT7Le/gpw9Po8tHQ0ek15Z3ze5U9t+OpSUPijdbHSotZ+6Ie9VyLjYuMNVjybYgtZKzvyFCGM7yM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711714174; c=relaxed/simple; bh=c1vtujffcN4qAMoRTIoYkCUUIFjdmgIs6rF3ALOV3hY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b1OR4xghSMO1bvzqO6QHC8VfaM86c8+J/3iK/8GMEmtSgo6KGOqSjPuMnfNsq1IrdkcIvs+9Ys4XUTQem3TqcPZ3Y5pj8K3lSgYX0oqcvTsgsnkB41WpMyqY/ekNVrT8+NZLbHPIG9+sKcBHuRhBcOkAwDbesLdfPIkYtlYr4dY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jRYHvtK1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jRYHvtK1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3A66C433C7; Fri, 29 Mar 2024 12:09:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711714173; bh=c1vtujffcN4qAMoRTIoYkCUUIFjdmgIs6rF3ALOV3hY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jRYHvtK1j7Za7E1ZwbAZfu718vlA6rXtHfbnjej2VpOxC1Chs4dsSjbs4Kigthl// j9vg7Gg7V9EDGsOFixuUcRu7r91cHwDI8UMcH0zsjB56AhgTF71+56hm08326C1x9J y2hKQoKV9nEcJRw02qOEAL3H4wBlFAQ7lhNfaZxMatvS+9qpS9FWzz0QTQLKcd1yi2 TisP8arukJvcXj7cpspONYqRGq/AvD7qsNM866yBuS0O3xn17rAOQOjpaILrkdhiLw 2EfdzzM3KW8x832C+Y4DGvsli3YVQOS1cwN+Twg/gvMgy6KVdmeo/Vl4b9+rXOtMqB /dBpJp5LzYKUA== From: "Matthieu Baerts (NGI0)" Date: Fri, 29 Mar 2024 13:08:53 +0100 Subject: [PATCH net 2/2] selftests: mptcp: join: fix dev in check_endpoint Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20240329-upstream-net-20240329-fallback-mib-v1-2-324a8981da48@kernel.org> References: <20240329-upstream-net-20240329-fallback-mib-v1-0-324a8981da48@kernel.org> In-Reply-To: <20240329-upstream-net-20240329-fallback-mib-v1-0-324a8981da48@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Shuah Khan , Florian Westphal Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang , stable@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1539; i=matttbe@kernel.org; h=from:subject:message-id; bh=CG3/mlos+ef5k7KNLzfPX4+PsklI6wPoeaw8MLwrud4=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmBq9ybOsiuCWb5DCppU2p1oFh1Opo5xshrkxij LiDXPKR6/qJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZgavcgAKCRD2t4JPQmmg czY9D/9OnksBcpV96oDSwJcZUsXdvV1bR6rbZkJQK4NBf6TDRrGZHQrOb3mvkS9pI/SGzK+DSPn OFbA5vWXTH51PAChiKMeYg9LPXcd3F3rG6NuHKQ/LUQevvs3Vv95a1DTQMRYS2yb/NEl21DjPKQ SEzZ0/ungq0k4vTCvNpUTNFz1/vIkezkWN241Vxinwl80MC5QfpCsjSgtr1wHIX+FEbWQK7Jc91 vMIygXOpeboDeDo0sMz9oFqwHS6hFxav7pKnMexuwtwrRalKDfxgvEhIyVeIbxZ1M9Ob1+NHl01 4kA1iFBbRJuUAInLQzhVp5XIp/nQAjttYKrPrk+rcDSXGI0vzSjB2DRQMY56cOdcsFfaitOnCCZ ZKaqh9TAOjz4bNII1wAZ7I9+rG8fwIWWXQlvphbXPSgu1PSKzsCHG79Af2O+hAsFwjy+nvInpP/ Xu3qGAVrMUIuy3XhesKlSwPNyfeEnRbhRbi77xPLvHxJpp/p+SlFbAq2xiyDibQFEQ6WN+HCWJs Sw3wM67lE8Q6Gu9eL8BurWm0zonKqsWFUYRnP2PEjxm/Mn0bXOTEeNpiU+IzDDzz6kNN67VZ8A3 0DH4V8i6QSzkLenLuQpXpgAS6Pr6BntWv48OtTFMYMUCKylBETifhHuD7k2wHmv9IJtbXiJW/G+ 53QzYK2MQ4VG0MQ== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 From: Geliang Tang There's a bug in pm_nl_check_endpoint(), 'dev' didn't be parsed correctly. If calling it in the 2nd test of endpoint_tests() too, it fails with an error like this: creation [FAIL] expected '10.0.2.2 id 2 subflow dev dev' \ found '10.0.2.2 id 2 subflow dev ns2eth2' The reason is '$2' should be set to 'dev', not '$1'. This patch fixes it. Fixes: 69c6ce7b6eca ("selftests: mptcp: add implicit endpoint test case") Cc: stable@vger.kernel.org Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index 5e9211e89825..e4403236f655 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -729,7 +729,7 @@ pm_nl_check_endpoint() [ -n "$_flags" ]; flags="flags $_flags" shift elif [ $1 = "dev" ]; then - [ -n "$2" ]; dev="dev $1" + [ -n "$2" ]; dev="dev $2" shift elif [ $1 = "id" ]; then _id=$2 @@ -3610,6 +3610,8 @@ endpoint_tests() local tests_pid=$! wait_mpj $ns2 + pm_nl_check_endpoint "creation" \ + $ns2 10.0.2.2 id 2 flags subflow dev ns2eth2 chk_subflow_nr "before delete" 2 chk_mptcp_info subflows 1 subflows 1