Multipath TCP for Linux
Multipath TCP (MPTCP) builds on top of TCP to improve connection redundancy and performance by sharing a network data stream across multiple underlying TCP sessions. The MPTCP v1 protocol is defined in RFC 8684.
The Linux MPTCP community develops and maintains the MPTCP v1 stack in the Linux kernel (v5.6 or later) and associated userspace tools and libraries.
This site is new and still evolving, so please refer to the Linux MPTCP Upstream Project wiki for additional information.
For out-of-tree kernels before v5.6 and an implementation of the experimental MPTCP v0 protocol, see https://multipath-tcp.org/
Features
As of Linux v5.19, major features of MPTCP include:
- Support of the
IPPROTO_MPTCP
protocol insocket()
system calls. - Fallback from MPTCP to TCP if the peer or a middlebox do not support MPTCP.
- Path management using either an in-kernel or userspace path manager.
- Socket options that are commonly used with TCP sockets.
- Debug features including MIB counters, diag support (used by the
ss
command), and tracepoints.
See the ChangeLog for more details.
Communication
- Mailing List: mptcp@lists.linux.dev (and archives)
- IRC: #mptcp on libera.chat
- Online Meetings
Projects
- Maintained by MPTCP community members
- Kernel development on GitHub: https://github.com/multipath-tcp/mptcp_net-next/
- Multipath TCP Daemon: https://github.com/intel/mptcpd
- The
mptcpd
daemon can do full userspace path management or control the in-kernel path manager. - Includes the
mptcpize
utility to allow legacy TCP binaries to use MPTCP.
- The
- Packetdrill with MPTCP enhancements: https://github.com/multipath-tcp/packetdrill
- Projects with MPTCP-related enhancements
- iproute2 (for the
ip mptcp
command) - Network Manager: MPTCP features are included starting with v1.40.
- Multipath TCP applications: A project to coordinate MPTCP updates for popular TCP applications.
- iproute2 (for the