MPTCP Linux Development
 help / color / mirror / Atom feed
From: Mat Martineau <mathew.j.martineau@linux.intel.com>
To: Matthieu Baerts <matthieu.baerts@tessares.net>
Cc: mptcp@lists.linux.dev
Subject: Re: Draft talk proposal for MPTCP @ Linux Plumbers '22 (3rd draft)
Date: Mon, 18 Jul 2022 18:17:50 -0700 (PDT)	[thread overview]
Message-ID: <38919512-f6f-1035-763f-67cd15a5febb@linux.intel.com> (raw)
In-Reply-To: <7cd436ad-6c05-d788-7af3-2ff08d647dfd@tessares.net>


Here's a new draft based on Matthieu's feedback for v2 
(https://lore.kernel.org/mptcp/7cd436ad-6c05-d788-7af3-2ff08d647dfd@tessares.net/).

The main goal was to frame the proposal as an illustration of tradeoffs 
between different kernel extensibility options (BPF & genl).


---

Multipath TCP (MPTCP) was initially supported in v5.6 of the Linux kernel. 
In subsequent releases, the MPTCP development community has steadily 
expanded from the initial baseline feature set to now support a broad 
range of MPTCP features on the wire and through the socket and generic 
netlink APIs.

With core MPTCP functionality established, our next goal is to make MPTCP 
more extensible and customizable at runtime. The two most common tools in 
the kernel's networking subsystem for these purposes are generic netlink 
and BPF. Each has tradeoffs that make them better suited for different 
scenarios. Our choices for extending MPTCP show some of those tradeoffs, 
and also leave our community with some open questions about how to best 
use these interfaces and frameworks.

As one example, we are extending the MPTCP packet scheduler using BPF. 
When there are multiple active TCP subflows in a MPTCP connection, the 
MPTCP stack must decide which of those subflows to use to transmit each 
data packet. This requires low latency and low overhead, and direct access 
to low-level TCP connection information. Customizable schedulers can 
optimize for latency, redundancy, cost, carrier policy, or other factors. 
We have patches implementing a proof-of-concept BPF packet scheduler, and 
hope to discuss with the netdev/BPF maintainers and audience how we might 
best structure the BPF/kernel API to balance long-term API stability, 
future evolution of MPTCP scheduler features, and usability for scheduler 
authors.

The next customization feature is the userspace path manager added in 
v5.19. MPTCP path managers advertise addresses available for multipath 
connections, and establish or close additional TCP subflows using the 
available interfaces. There are a limited number of interactions with a 
path manager during the life of a MPTCP connection. Operations are not 
very sensitive to latency, and may need access to data from userspace. 
This led us to expand the MPTCP generic netlink API and update the 
Multipath TCP Daemon (mptcpd) to support the new commands. Generic netlink 
has been a good fit for path manager commands and events, the concepts are 
familiar and the message format makes it possible to maintain forward and 
backward compatibility between different kernel versions and userspace 
binaries.

MPTCP development for the Linux kernel and mptcpd are public and open. You 
can find us at mptcp@lists.linux.dev, https://mptcp.dev, and 
https://github.com/intel/mptcpd



--
Mat Martineau
Intel

      parent reply	other threads:[~2022-07-19  1:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-30  0:16 Draft talk proposal for MPTCP @ Linux Plumbers '22 Mat Martineau
2022-07-14 22:50 ` Draft talk proposal for MPTCP @ Linux Plumbers '22 (2nd draft) Mat Martineau
2022-07-15 14:47   ` Matthieu Baerts
2022-07-17 22:01     ` Mat Martineau
2022-07-19  1:17     ` Mat Martineau [this message]

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=38919512-f6f-1035-763f-67cd15a5febb@linux.intel.com \
    --to=mathew.j.martineau@linux.intel.com \
    --cc=matthieu.baerts@tessares.net \
    --cc=mptcp@lists.linux.dev \
    /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