MPTCP Linux Development
 help / color / mirror / Atom feed
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

  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