MPTCPD(8)

πŸ’– MPTCPD β€” the multipath TCP daemon, bestie edition πŸ’–

okay so this is the manual page for mptcpd (that's section 8 of the System Management Commands manual, iykyk) and I am so excited to tell you about it because this little daemon is genuinely doing the most πŸ’…


✨ NAME ✨

mptcpd β€” multipath TCP daemon πŸ¦‹


🌸 SYNOPSIS 🌸

mptcpd [-d?V] [-l DEST] [--debug] [--addr-flags=FLAGS]
       [--notify-flags=FLAGS] [--plugin-dir=DIR] [--path-manager=PLUGIN]
       [--load-plugins=PLUGINS] [--help] [--usage] [--log=DEST]
       [--version]

πŸ‘‘ DESCRIPTION πŸ‘‘

So mptcpd is a daemon for Linux based operating systems, and what it does is handle multipath TCP path management stuff β€” you know, multipath TCP, the thing from IETF RFC 8684 β€” but it does all of that in user space, not in the kernel. no cap.

The way it talks to the Linux kernel is through a generic netlink connection, and through that connection it:

  • tracks per-connection information πŸ‘€
  • keeps up with the available network interfaces 🌐
  • requests new MPTCP subflows πŸš€
  • handles requests for subflows πŸ™‹
  • etc. (yes the original says etc., we love an open-ended list) ✨

πŸ’… OPTIONS πŸ’…

mptcpd accepts the following command line options, and bestie, I'm listing every single one:

  • -d, --debug β€” turn on debug log messages. the receipts, basically πŸ›
  • -?, --help β€” show the mptcpd help information
  • --usage β€” show the short-and-sweet mptcpd usage information
  • -l DEST, --log=DEST β€” send log output to DEST, where DEST can be stderr, syslog or journal πŸ“
  • --addr-flags=FLAGS β€” set the flags for the announced address, where FLAGS is a comma separated list holding one or more of the flags subflow, signal, backup, fullmesh, and laminar. these are the ones plugins that deal with the in-kernel path manager may use when advertising addresses. like, for example:
--addr-flags=subflow
  • --notify-flags=FLAGS β€” the address notification flags, where FLAGS is a comma separated list holding one or more of these:
    • existing β€” notify plugins about the addresses that already exist at the moment mptcpd starts up 🌱
    • skip_link_local β€” ignore (so, do not notify about) [ipv6] link local address updates πŸ™ˆ
    • skip_loopback β€” ignore (so, do not notify about) host (loopback) address updates πŸ”
    • check_route β€” only notify about an address if a default route is actually available from that address and the related device. if the route check fails, it gets re-done after a little timeout, which is there to let e.g. DHCP configure the host properly. heads up though: complex policy routing configuration may confuse or circumvent this check 😭

These flags decide whether mptcpd plugins get notified when the related addresses are updated. for example:

--notify-flags=existing,skip_link_local,skip_loopback,check_route
  • --plugin-dir=DIR β€” set the plugin directory to DIR.
⚠️ DIR should not be world writable, for security reasons. periodt, don't do it πŸ”’
  • --path-manager=PLUGIN β€” set the default path manager plugin to PLUGIN, which overrides plugin priorities πŸ‘‘
  • --load-plugins=PLUGINS β€” set the plugins to load on startup, where PLUGINS is a comma separated list holding one or more plugin names 🧚
  • -V, --version β€” show the mptcpd version information ⭐

πŸŽ€ FILES πŸŽ€

  • /etc/mptcpd/mptcpd.conf β€” the location of the mptcpd system configuration file. that's where the vibes live πŸ’œ

😭 REPORTING BUGS 😭

Report bugs to mptcp@lists.linux.dev. fr fr, they want to hear about it 🫢


🌈 SEE ALSO 🌈

ip-mptcp(8) β€” go read that one too bestie, it's giving related content ✨


and that's the whole page!! it's the Multipath TCP Daemon manual, dated 2022-08-19, from the MPTCPD(8) page, and honestly? iconic. go manage some paths, you main character πŸ¦‹πŸ’–

πŸ“¦ where this page comes from