From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 DAC6418C933; Thu, 28 May 2026 03:11:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779937888; cv=none; b=gcs/S+fsi5XI83nB2Tr2UpbE1z0fYG6Fq9RFGT2VUY6fsDI3XYLtAgHEv20ThBql2FWL1bu57exBbmAmKdx3XDs2Q/PMfFRqnwwSxbxTQ9/ojFn7Mdexa0lJSqIS5n9faP/B4t7HbFrmWuJvRdHFmUbsoiHm+y3oVttwpKo97ws= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779937888; c=relaxed/simple; bh=1y02pKwUZldBzTkxXv+DoJFfjLlZ+TQQncVV4iSp8BE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ae4kSzPunAG9ZHInPFvAHjye3dlZL3PANAfQwddU3vr+sWFMjCINYU+nX/ZWQLB728ZVbs+t8k7QRJqkT/W5leSy+bEkbusl9GoOSSKRdsU9w39gdOA+mYSEaV7VaDNztGNIeYZ7vmcVPtVs9KFhYEWF+uGlFeEZ1pDeQ6gCWtI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Dejd0qhb; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Dejd0qhb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D65E11F000E9; Thu, 28 May 2026 03:11:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779937886; bh=2LJir5NYveamozdEogI+01xu/ZbFXYpoE1MTH8bCSu8=; h=From:To:Cc:Subject:Date; b=Dejd0qhbEWMn6LN2R0CyuK49/u5lyOIhBYROqn3lwGDQ6OU9B48kD+Ow3PGcbdQna kha0836A0cQNMi3SHjvBSLHdoUUZGPKKD+1rNli9fhE01MZCh2lFgzikkyITxKAj4F xAsUcVdNkkfASv1Z54YGvrHVXlKilinraqZdhHeh8ZFonFNzRPNJZnoI1fleN3nZpX PMbM6Xjb+6iA1t/hJ+7nWTgvPx2XvsT8KFZpCED4/FIPoz/TtDvbyejEHjBi+cCpil EuMQzUEV737HxzZLxEj1GFT/cjGtqkjPj5CguYmHYPf1ISkj7e9LiM/gnHmv5OxnxW YmVdLlrSMJWxQ== From: Geliang Tang To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , Chaitanya Kulkarni , Matthieu Baerts , Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: Geliang Tang , linux-nvme@lists.infradead.org, netdev@vger.kernel.org, mptcp@lists.linux.dev, linux-kselftest@vger.kernel.org, Hannes Reinecke , John Meneghini , Randy Jennings , Nilay Shroff , zhenwei pi , Hui Zhu , Gang Yan Subject: [PATCH 00/11] NVMe over MPTCP Date: Thu, 28 May 2026 11:10:34 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Geliang Tang This series (previously named "MPTCP support to NVMe over TCP") had three RFC versions sent to Hannes in May 2025, with subsequent revisions based on his input. Following that, I initiated the process of upstreaming the dependent "mptcp: implement .read_sock" series, which was merged into the Linux kernel in February 2026. After several rounds of iteration on the MPTCP mailing list, this set addresses all the reviewer comments (including Sashiko's) and fixes the identified issues. This topic was presented as a discussion item at LSF/MM/BPF 2026. During the "NVMe over MPTCP" [1] discussion at the conference, it was concluded that MPTCP should be treated as a new transport type, rather than a TCP variant. A request will be submitted to the NVMe working group to officially allocate a transport value for MPTCP. This series runs without any user space changes (libnvme, nvme-cli). Later, MPTCP KTLS support will be added, and a follow-up series will be sent to enable TLS for NVMe over MPTCP. Based on NVMe Multipath and Block Multiqueue, each TCP queue is converted into one MPTCP queue. This is achieved by abstracting six socket helpers (set_nodelay, set_reuseaddr, no_linger, etc.) into per-transport structures. Inside each MPTCP queue, multiple subflows using different IP addresses aggregate multi-NIC bandwidth and provide fail-over resilience. Patch 10 demonstrates that with a single NVMe multipath configuration and four network interfaces, MPTCP achieves four times the bandwidth of TCP. Patch 11 demonstrates that with four NVMe multipath paths, using the round-robin I/O policy and a lossy four-interface environment, MPTCP still achieves four times the bandwidth of TCP. [1] https://lore.kernel.org/linux-nvme/a9f115aa5719e1088702a3fdeee766a3166611b1.camel@kernel.org/ Cc: Hannes Reinecke Cc: John Meneghini Cc: Randy Jennings Cc: Nilay Shroff Co-developed-by: zhenwei pi Signed-off-by: zhenwei pi Co-developed-by: Hui Zhu Signed-off-by: Hui Zhu Co-developed-by: Gang Yan Signed-off-by: Gang Yan Signed-off-by: Geliang Tang Geliang Tang (11): nvmet-tcp: define accept tcp_proto struct nvmet-tcp: implement accept mptcp proto nvmet-tcp: define listen socket ops nvmet-tcp: register target mptcp transport nvmet-tcp: implement mptcp listen socket ops nvme-fabrics: compare transport in ip_options_match nvme-tcp: define host tcp_proto struct nvme-tcp: register host mptcp transport nvme-tcp: implement host mptcp proto selftests: mptcp: add nvme over mptcp test selftests: mptcp: nvme: add iopolicy tests drivers/nvme/host/fabrics.c | 1 + drivers/nvme/host/tcp.c | 101 ++++- drivers/nvme/target/configfs.c | 1 + drivers/nvme/target/tcp.c | 128 +++++- include/linux/nvme.h | 1 + include/net/mptcp.h | 31 ++ net/mptcp/sockopt.c | 149 +++++++ tools/testing/selftests/net/mptcp/Makefile | 1 + tools/testing/selftests/net/mptcp/config | 8 + .../testing/selftests/net/mptcp/mptcp_lib.sh | 12 + .../testing/selftests/net/mptcp/mptcp_nvme.sh | 397 ++++++++++++++++++ 11 files changed, 813 insertions(+), 17 deletions(-) create mode 100755 tools/testing/selftests/net/mptcp/mptcp_nvme.sh -- 2.53.0