Add Multipath TCP (MPTCP) Support to the Java Networking API
Alan Bateman
alan.bateman at oracle.com
Fri Sep 5 09:28:59 UTC 2025
On 05/09/2025 09:43, Geliang Tang wrote:
> :
>
> 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.
(moving the discussion to nio-dev and net-dev).
Adding new constructors to legacy Socket/ServerSocket may work for your
initial prototype but would be problematic to propose as it would bake
non-standard features into the standard API. Also many high performance
servers use SocketChannel rather than Socket.
One suggestion for a next prototype is to model the enablement of
MultiPath TCP as as a JDK-specific socket option (see
jdk.net.ExtendingSocketOptions). All of the standard APIs for networking
sockets define a setOption method for setting socket options. If modeled
as a socket option then enabling can create a new
AF_INET6/SOCK_STREAM/IPPROTO_MPTCP socket and then dup2 it into place so
that the original AF_INET6/SOCK_STREAM/0 socket is closed. Enabling can
be made to fail if the socket is already bound. It could copy over
existing socket options if needed. Look at the built-in (and no longer
used) SDP support for an example that does similar with
AF_INET_SDP/SOCK_STREAM/0. The only API surface would be a socket option
defined in jdk.net.ExtendingSocketOptions.
-Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/net-dev/attachments/20250905/9f32cf3c/attachment.htm>
More information about the net-dev
mailing list