This patch series brings together all the required changes to
flexibly manage paths/subflows over MPTCP connections
from path manager implementations running in userspace. Path
management decisions may be made on either end of MPTCP
connections based on state captured through MPTCP netlink events.
The series starts with a set of general fixes and enhancements
in the related kernel code. It is followed with base functionality
and new netlink APIs for handling userspace path management. Further,
it extends the MPTCP self-test framework with the new netlink APIs,
along with the ability to capture MPTCP netlink events to aid in
functional/behavioral validations. Lastly, it adds a new self-test
script with a suite of test cases covering all the userspace path
management capabilities.
v1 -> v2:
fixed formatting, check for 3rd ACK retransmission only on passive side of
the MPJ handshake, fixed build error when IPv6 is not enabled
Florian Westphal (2):
mptcp: netlink: split mptcp_pm_parse_addr into two functions
mptcp: netlink: allow userspace-driven subflow establishment
Kishen Maloor (19):
mptcp: do not restrict subflows with non-kernel PMs
mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
mptcp: reflect remote port (not 0) in ANNOUNCED events
mptcp: establish subflows from either end of connection
mptcp: netlink: store per namespace list of refcounted listen socks
mptcp: netlink: store lsk ref in mptcp_pm_addr_entry
mptcp: netlink: process IPv6 addrs in creating listening sockets
mptcp: attempt to add listening sockets for announced addrs
mptcp: allow ADD_ADDR reissuance by userspace PMs
mptcp: handle local addrs announced by userspace PMs
mptcp: read attributes of addr entries managed by userspace PMs
mptcp: netlink: Add MPTCP_PM_CMD_ANNOUNCE
mptcp: selftests: support MPTCP_PM_CMD_ANNOUNCE
mptcp: netlink: Add MPTCP_PM_CMD_REMOVE
mptcp: selftests: support MPTCP_PM_CMD_REMOVE
mptcp: selftests: support MPTCP_PM_CMD_SUBFLOW_CREATE
mptcp: selftests: support MPTCP_PM_CMD_SUBFLOW_DESTROY
mptcp: selftests: capture netlink events
selftests: mptcp: functional tests for the userspace PM type
include/uapi/linux/mptcp.h | 7 +
net/mptcp/options.c | 6 +-
net/mptcp/pm.c | 12 +-
net/mptcp/pm_netlink.c | 844 ++++++++++++++++--
net/mptcp/protocol.c | 7 +-
net/mptcp/protocol.h | 12 +-
net/mptcp/subflow.c | 6 +-
tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 587 +++++++++++-
.../selftests/net/mptcp/userspace_pm.sh | 561 ++++++++++++
9 files changed, 1938 insertions(+), 104 deletions(-)
create mode 100755 tools/testing/selftests/net/mptcp/userspace_pm.sh
base-commit: f81a8b95bfe9cae8ff02739e3e263d9310422af7
--
2.31.1