Received: by 2002:ab2:b82:0:b0:1f3:401:3cfb with SMTP id 2csp1024977lqh; Fri, 29 Mar 2024 05:09:59 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUDLC/lcZxlDuDSiEtHxNsdua9YWz8xfldIbvD+gLksH9xGMUFxDur2Y3SlDQC4hEo5wkJrK2EeHVF3YDjSMbq5Xu0qJn2WIQmaIRUgXA== X-Google-Smtp-Source: AGHT+IGSb35+NiARAaLC/3QUILbp9NAKQDCN8IFF8k41Eh9HNY6CMDSK6FzCjBZ5A8j8qcTkcALl X-Received: by 2002:a05:6a00:1413:b0:6ea:d114:5ea1 with SMTP id l19-20020a056a00141300b006ead1145ea1mr2291929pfu.17.1711714199651; Fri, 29 Mar 2024 05:09:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711714199; cv=pass; d=google.com; s=arc-20160816; b=iqVQR0KdZQglksgFqSDsh5fdVAMqHVOboegxT9Ujusz35sjiNK3nqLZzshTya4Ck4K cTrcBmusoepWaJebpOJh+aZl2yZ12Js2Fkc38ptqmZYlsvdvaTGCkkzPIriS0bV2cGR4 QZNMf38K1PQCLqw3/7xyJ/dkPJ22GMSbngdC8pBV/gE4C1z0lbrgO86iT2LNHJTxnTIr A4PHBKMMe1ypyCH5DlFmUEnw8rOHH9fGYHO/TU/zEfBJ8zwmio0b5lxt03Mz5mDGRdQY CHy0a2XElET4KThMxyM8sQBFkKq54z6r+Q8BOIE/lY7UJb1LvX4bYViprOVi8Pkv9Llw A4rg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:dkim-signature; bh=vJjI5XSAaI6hWrqXiO6Rj9C7gxb4pm6aA0TKm2Sw1NQ=; fh=U0ExelV0r3pqxfWMIUcbH7HWDEAxRLUB1LMX3B93JZE=; b=RM7JKU0YS5cqBOdM3cNc5N02d34k/p0gXnGam20a4b5bfrOSPKRW9SuResHdmkTDKZ bkzY1wgPHmUn1v55Z+NjEu1vPGEdskP6mzyphYX3Vx72CrBPq2I7hDBqrGQ+n20z2D/K cCFIaNDYPvZkjXaJ8o5rK0x+ENAae0BpFZwdKYPaLouAcpfAVJ8f7CwZnNVCMI7DyRYn zzU7ac9EhzlseGvjDKAt2V0SRGjV9Em4uPFxLEskpgUQPgKaV7XUxgNvKfZNf7l6jgEq bcJZqslrpl/xjm2Cj7yK2Dk0O0TQZZyDPr77Oy7aNsyL4DhJYMrR7tjdo5Z4rEbcyTjq eivg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=upNIFOWH; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-124460-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-124460-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id f4-20020a056a00228400b006eada9fe237si3520246pfe.188.2024.03.29.05.09.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Mar 2024 05:09:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-124460-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=upNIFOWH; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-124460-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-124460-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 22C41284A4B for ; Fri, 29 Mar 2024 12:09:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7895585946; Fri, 29 Mar 2024 12:09:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="upNIFOWH" 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 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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" -- 2.43.0