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 socketsa
, display all socket not just “established” onesn
, prevent the port number to protocol conversioni
, 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.