Skip to content
Mat Martineau edited this page Mar 4, 2020 · 18 revisions

Ongoing Work

  • Matthieu is handling pre-netdev-list patch integration with the shared topgit tree.

  • Ossama is continuing mptcpd development.

  • Paolo is working on path manager functionality.

  • Peter is working on MPTCPv1 ADD_ADDR changes

  • Mat is working on DATA_FIN support

  • Main items for v5.7 multiple-subflow functionality:

    • Path manager
    • DATA_FIN handling
    • Shared receive window. This may be full handling or some workarounds to protect against exceeding the window expected by the peer.
  • Matthieu and Christoph keep the multipath-tcp.org kernel merged with recent stable kernel releases as part of their maintainer roles for the multipath-tcp.org project.

Future Work

  • Fallback to TCP
  • monitoring: is a good idea with socket diag
  • monitoring: is MPTCP working? → ss could answer that
  • monitoring: also an entry in /proc/net/mptcp_net/mptcp (like the mptcp.org implem)
  • scheduling (via eBPF)
  • path-management (via Netlink)
  • documentation: Feature roadmap (initial upstream functionality, follow-on features)
  • consolidate token trees?

Previous Work

  • Community collaborated to merge single-subflow MPTCP for Linux v5.6

  • Florian contributed kselftests

  • Paolo worked on multiple subflow support, MPTCP-level reassembly, and MPTCP-level retransmissions.

  • Ossama released an mptcpd beta

  • Peter developed initial MP_JOIN support

  • Ossama updated mptcpd to match the generic netlink path management API used in mptcp_trunk

  • Matthieu set up code review and build automation using gerrithub.io

  • Paolo enhanced mptcp_sendmsg() to be faster, more efficient, and more robust.

  • Published RFC patch set to netdev.

  • Peter and Mat have published a patch set showing an MPTCP architecture with a separate socket type for the MPTCP connection and using in-kernel TCP sockets for subflows. This prototype can connect, receive, and transmit using a single-subflow IPv4 MPTCP connection. Patches are in git and gerrit (in gerrit, look at the "relation chain" in the upper left part of the page for the patch listing). RFCv10 was the basis for the code in https://github.com/multipath-tcp/mptcp_net-next, and we are now adding fixes and new functionality as additional commits. Fixes will be squashed later on to prepare for submission to netdev.

  • Florian has contributed a kselftest implementation.

  • Ossama has developed a userspace path manager implementation: https://github.com/intel/mptcpd

  • Florian merged skb extension capability in the upstream kernel.

  • Matthieu shared a Tessares-authored generic netlink path manager patch set to mptcp-dev, and it has been merged to mptcp_trunk.

  • Ossama shared a generic netlink path management API proposal, which has been discussed and refined to align better with the generic netlink implementation on mptcp_trunk.

  • Stephan shared a userspace path manager draft implementation at https://github.com/brenns10/pathmand

  • Mat developed an extensible TCP option framework patch, and Christoph refactored upstream TCP-MD5 and SMC functionality to use it. The idea was to integrate some extensions in to TCP that had utility for existing functionality, but would also help integrate MPTCP. This RFC patch set was turned down by Dave Miller, but did give us useful guidance. (Patches in git)

  • Mat published a proposal for optionally extending sk_buff shared_info to carry MPTCP metadata. This was dropped in favor of skb extensions.

  • Rao has published an RFC patch set based on the multipath-tcp.org MPTCP implementation and the current upstream kernel, with modifications to make the TCP implementation extensible in a way that's useful for MPTCP.

Clone this wiki locally