Manage Multipath TCP (MPTCP)
What
With MPTCP now enabled in distribution shipped kernels (eg. Debian's 5.14.6-2 in testing / bookworm), please consider whether NetworkManager is a suitable place to set MPTCP parameters. In particular, something in the system needs to decide which addresses are to be advertised on applications that opt in to MPTCP. (While applications should have a say in that, MPTCP should give good defaults according to the MPTCP interface considerations, and Linux does not advertise any addresses on its own).
Right now, addresses available for MPTCP are managed either
- manually by using
ip mptcp endpoint
, or - through mptcpd
Why
Having MPTCP available is particularly helpful for users in handover situations. It's particularly advertised for participants in cellular networks (to seamlessly roam from WiFi to cellular) but is also useful for laptop computers (leaving the docking station), and for applications that suffer actual interruptions from TCP connections breaking. (HTTP copes well as it doesn't need long-lived connections, but file transfers, backups and SSH can be painful to lose. Streaming media can also be affected).
I think that NetworkManager would be in a good position to manage these addresses (probably by managing mptcpd): It knows how the user wants their addresses handled (eg. whether privacy extensions are to be used), can make informed choices on relevant limits (which are recent an which are old addresses; maybe to stop advertising ULA or private-v4 addresses when reaching the limit on how many addresses the kernel accepts, which is currently MPTCP_PM_ADDR_MAX=8), can relay any decisions that are to be taken to advanced users, and pick a good set of defaults for its use cases.
How
I don't have a roadmap. Good first steps are probably to look into whether NetworkManager is really the right place, and whether mptcpd is something that can run under NetworkManager (like dhcpcd or dnsmasq do). Discussing privacy implications can be an important early step too (especially given that the relevant RFCs don't have sections on privacy).