To verify that everything is working correctly, or to debug issues, multiple tools can be used.

ss

The ss command line tool on Linux systems has an option to list MPTCP sockets: -M. The recommended options are: ss -Mani.

  • M, MPTCP sockets
  • a, display all socket not just “established” ones
  • n, prevent the port number to protocol conversion
  • i, connection info matching that from Netlink Diag interface: TCP_INFO, MPTCP_INFO, etc.

Note that technically, each subflow (path) is a TCP connection. To see subflows, ss -tani can be executed as root: subflows will be marked with tcp-ulp-mptcp.

ss can be used with extra filters, e.g. to restrict by connection states, IP addresses, ports, devices, marks, CGroup, etc.

ip mptcp

ip mptcp can be used to configure the MPTCP path-manager, but also to monitor path-manager events:

ip mptcp monitor

nstat

nstat can list kernel MIB counters. MPTCP has a bunch of them, e.g.

nstat -asz | grep MPTcpExt

For more details about these counters, see: MPTCP Doc.

When encountering an issue with MPTCP, it is often interesting to run nstat -n before, and nstat | grep Tcp after the issue.

TCPDump and WireShark

TCPDump and WireShark support MPTCP: they can be use to take packet traces, and recent enough versions will show MPTCP options in TCP packets if present.