The MPTCP protocol is described in RFC 8684, and also in the MPTCP Doc, but neither of those describe the internals of the MPTCP implementation in the Linux kernel.

A new socket type has been added for MPTCP for the userspace-facing socket. The kernel is in charge of creating subflow sockets: they are TCP sockets where the behavior is modified using TCP-ULP.

MPTCP listen sockets will create “plain” accepted TCP sockets if the connection request from the client didn’t ask for MPTCP.

If you are interested by contributing to the kernel, please check the Contributing page and this MPTCP Upstream Virtme Docker repo.

This page needs to be improved, feel free to contribute.