[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210813221548.111990-1-mathew.j.martineau@linux.intel.com>
Date: Fri, 13 Aug 2021 15:15:40 -0700
From: Mat Martineau <mathew.j.martineau@...ux.intel.com>
To: netdev@...r.kernel.org
Cc: Mat Martineau <mathew.j.martineau@...ux.intel.com>,
davem@...emloft.net, kuba@...nel.org, matthieu.baerts@...sares.net,
mptcp@...ts.linux.dev, pabeni@...hat.com
Subject: [PATCH net-next 0/8] mptcp: Improve use of backup subflows
Multipath TCP combines multiple TCP subflows in to one stream, and the
MPTCP-level socket must decide which subflow to use when sending (or
resending) chunks of data. The choice of the "best" subflow to transmit
on can vary depending on the priority (normal or backup) for each
subflow and how well the subflow is performing.
In order to improve MPTCP performance when some subflows are failing,
this patch set changes how backup subflows are utilized and introduces
tracking of "stale" subflows that are still connected but not making
progress.
Patch 1 adjusts MPTCP-level retransmit timeouts to use data from all
subflows.
Patch 2 makes MPTCP-level retransmissions less aggressive to avoid
resending data that's still queued at the TCP level.
Patch 3 changes the way pending data is handled when subflows are
closed. Unacked MPTCP-level data still in the subflow tx queue is
immediately moved to another subflow for transmission instead of waiting
for MPTCP-level timeouts to trigger retransmission.
Patch 4 has some sysctl code cleanup.
Patches 5 and 6 add tracking of "stale" subflows, so only underlying TCP
subflow connections that appear to be making progress are considered
when selecting a subflow to (re)transmit data. How fast a subflow goes
stale is configurable with a per-namespace sysctl. Related MIBS are
added too.
Patch 7 makes sure the backup flag is always correctly recorded when the
MP_JOIN SYN/ACK is received for an added subflow.
Patch 8 adds more test cases for backup subflows and stale subflows.
Paolo Abeni (8):
mptcp: more accurate timeout
mptcp: less aggressive retransmission strategy
mptcp: handle pending data on closed subflow
mptcp: cleanup sysctl data and helpers
mptcp: faster active backup recovery
mptcp: add mibs for stale subflows processing
mptcp: backup flag from incoming MPJ ack option
selftests: mptcp: add testcase for active-back
Documentation/networking/mptcp-sysctl.rst | 12 +
net/mptcp/ctrl.c | 26 ++-
net/mptcp/mib.c | 2 +
net/mptcp/mib.h | 2 +
net/mptcp/options.c | 8 +-
net/mptcp/pm.c | 21 ++
net/mptcp/pm_netlink.c | 39 ++++
net/mptcp/protocol.c | 187 +++++++++++----
net/mptcp/protocol.h | 31 ++-
net/mptcp/subflow.c | 6 +-
.../testing/selftests/net/mptcp/mptcp_join.sh | 218 +++++++++++++++---
11 files changed, 464 insertions(+), 88 deletions(-)
base-commit: 876c14ad014d0e39c57cbfde53e13d17cdb6d645
--
2.32.0
Powered by blists - more mailing lists