From: Geliang Tang <geliang@kernel.org>
To: Matthieu Baerts <matttbe@kernel.org>,
Mat Martineau <martineau@kernel.org>,
Gang Yan <yangang@kylinos.cn>, Xiang Gao <gaoxiang@kylinos.cn>
Cc: mptcp@lists.linux.dev
Subject: Re: Add Multipath TCP (MPTCP) Support to the Java Networking API
Date: Fri, 05 Sep 2025 17:00:20 +0800 [thread overview]
Message-ID: <cd91d2ed160abe3e5b99b06ed985c8d0dddf1b20.camel@kernel.org> (raw)
In-Reply-To: <00cc9a4fa008cd346c8c12a044d5c41b5af58a6f.camel@kernel.org>
Hi,
I just received a message that this email was not delivered: Your
message to net-dev awaits moderator approval, reason: Post by non-
member to a members-only list. So I had to subscribe to the openjdk
net-dev and core-libs-dev mailing lists and resend the email.
If you want to reply to this email in the future, please subscribe to
these two mailing lists before replying:
https://mail.openjdk.org/mailman/listinfo/net-dev
https://mail.openjdk.org/mailman/listinfo/core-libs-dev
Thanks,
-Geliang
On Fri, 2025-09-05 at 09:43 +0800, Geliang Tang wrote:
> Hi OpenJDK maintainers,
>
> I hope this message finds you well. The purpose of this letter is to
> propose the integration of Multipath TCP (MPTCP) support into
> OpenJDK.
> We have developed a set of patches to enable this functionality and
> are
> eager to submit it for upstream inclusion. We would greatly
> appreciate
> your feedback and opinions on this contribution.
>
> 1. Introduction
>
> Multipath TCP (MPTCP), as standardized in RFC 8684, is a major
> evolution of the TCP protocol. It enables a transport connection to
> use
> multiple network paths simultaneously for redundancy, resilience, and
> bandwidth aggregation. Since its introduction in Linux kernel v5.6,
> it
> has become a key technology for modern networking, particularly on
> mobile devices with multiple interfaces (e.g., Wi-Fi and cellular).
>
> Key benefits include:
>
> Bandwidth Aggregation: Combine the bandwidth of multiple network
> links.
>
> Seamless Handover: Maintain connections when switching networks
> without dropping the session.
>
> Improved Resilience: Traffic is automatically rerouted if one
> path
> fails.
>
> For more details, see the project website: https://mptcp.dev.
>
> 2. Technical Background
>
> On a supporting system like Linux, an MPTCP socket is created by
> specifying the IPPROTO_MPTCP protocol in the socket() system call
> instead of IPPROTO_TCP (or 0):
>
> int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP);
>
> This creates a socket that looks like a standard TCP socket to the
> application but uses the MPTCP protocol stack underneath.
>
> With the Java API, it is possible to create "stream" sockets, but it
> is
> not possible to change the last argument, which blocks apps to ask to
> use MPTCP.
>
> 3. Proposed Java API Changes
>
> The goal is to allow Java applications to opt-in to using MPTCP when
> creating sockets, without breaking existing code. The proposed
> changes
> are additive and backward-compatible.
>
> The core idea is to add a boolean mptcp parameter through the API
> layers, from the public Socket class down to the native system call.
>
> 4. Implementation Plan
>
> The implementation involves changes across four layers of the JDK:
>
> JNI Layer (sun.nio.ch.Net):
>
> Modify Java_sun_nio_ch_Net_socket0 to accept a new jboolean mptcp
> parameter.
>
> The native implementation will be updated to use this parameter:
>
> int protocol = mptcp == JNI_TRUE ? IPPROTO_MPTCP : 0;
> fd = socket(domain, type, protocol);
>
> NIO Layer (sun.nio.ch):
>
> Add the mptcp parameter to the Net.socket() and
> Net.serverSocket()
> methods.
>
> Propagate the parameter down to the JNI call.
>
> Socket Implementation Layer (java.net):
>
> Add the mptcp parameter to the constructor of NioSocketImpl.
>
> Within NioSocketImpl, pass the parameter to the Net.socket() or
> Net.serverSocket() calls.
>
> Public API Layer (java.net.Socket & java.net.ServerSocket):
>
> Add new constructors that accept the mptcp parameter.
>
> Example:
>
> // Proposed new constructor
> public Socket(String host, int port, boolean stream, boolean
> mptcp) throws IOException {
> // ... implementation that passes 'mptcp' to
> NioSocketImpl
> }
>
> 5. Full Implementation
>
> The complete working implementation for this proposal is available
> for
> review:
>
> https://github.com/openjdk/jdk/compare/master...geliangtang:jdk:master
>
> We look forward to your valuable feedback and suggestions on this
> proposal.
>
> we can create a new issue for this feature, and submit a proper pull
> request after if that's OK for you. We didn't do that yet because we
> noticed that it is recommended to send more explanations to this list
> first.
>
> Best regards,
> MPTCP Upstream Developers
next prev parent reply other threads:[~2025-09-05 9:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-05 1:43 Add Multipath TCP (MPTCP) Support to the Java Networking API Geliang Tang
2025-09-05 9:00 ` Geliang Tang [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-09-05 8:43 Geliang Tang
[not found] ` <7403952e-14c1-4ba2-871e-0e2174fd5167@oracle.com>
2025-09-05 10:05 ` Geliang Tang
2025-09-05 10:11 ` Geliang Tang
2025-09-18 7:36 ` Geliang Tang
[not found] ` <2b699d6c-d05b-4445-9448-99348eebdf4a@oracle.com>
2025-09-23 9:55 ` Geliang Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cd91d2ed160abe3e5b99b06ed985c8d0dddf1b20.camel@kernel.org \
--to=geliang@kernel.org \
--cc=gaoxiang@kylinos.cn \
--cc=martineau@kernel.org \
--cc=matttbe@kernel.org \
--cc=mptcp@lists.linux.dev \
--cc=yangang@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox