netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 00/10] mptcp: Prepare MPTCP packet scheduler for BPF extension
@ 2023-08-21 22:25 Mat Martineau
  2023-08-21 22:25 ` [PATCH net-next 01/10] mptcp: refactor push_pending logic Mat Martineau
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Mat Martineau @ 2023-08-21 22:25 UTC (permalink / raw)
  To: Matthieu Baerts, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni
  Cc: netdev, mptcp, Geliang Tang, Mat Martineau

The kernel's MPTCP packet scheduler has, to date, been a one-size-fits
all algorithm that is hard-coded. It attempts to balance latency and
throughput when transmitting data across multiple TCP subflows, and has
some limited tunability through sysctls. It has been a long-term goal of
the Linux MPTCP community to support customizable packet schedulers for
use cases that need to make different trade-offs regarding latency,
throughput, redundancy, and other metrics. BPF is well-suited for
configuring customized, per-packet scheduling decisions without having
to modify the kernel or manage out-of-tree kernel modules.

The first steps toward implementing BPF packet schedulers are to update
the existing MPTCP transmit loops to allow more flexible scheduling
decisions, and to add infrastructure for swappable packet schedulers.
The existing scheduling algorithm remains the default. BPF-related
changes will be in a future patch series.

This code has been in the MPTCP development tree for quite a while,
undergoing testing in our CI and community.

Patches 1 and 2 refactor the transmit code and do some related cleanup.

Patches 3-9 add infrastructure for registering and calling multiple
schedulers.

Patch 10 connects the in-kernel default scheduler to the new
infrastructure.

Signed-off-by: Mat Martineau <martineau@kernel.org>
---
Geliang Tang (10):
      mptcp: refactor push_pending logic
      mptcp: drop last_snd and MPTCP_RESET_SCHEDULER
      mptcp: add struct mptcp_sched_ops
      mptcp: add a new sysctl scheduler
      mptcp: add sched in mptcp_sock
      mptcp: add scheduled in mptcp_subflow_context
      mptcp: add scheduler wrappers
      mptcp: use get_send wrapper
      mptcp: use get_retrans wrapper
      mptcp: register default scheduler

 Documentation/networking/mptcp-sysctl.rst |   8 +
 include/net/mptcp.h                       |  21 +++
 net/mptcp/Makefile                        |   2 +-
 net/mptcp/ctrl.c                          |  14 ++
 net/mptcp/pm.c                            |   9 +-
 net/mptcp/pm_netlink.c                    |   3 -
 net/mptcp/protocol.c                      | 277 +++++++++++++++++-------------
 net/mptcp/protocol.h                      |  18 +-
 net/mptcp/sched.c                         | 173 +++++++++++++++++++
 9 files changed, 393 insertions(+), 132 deletions(-)
---
base-commit: 7eb6deb3f55678216a6a0e956846c04958093ea5
change-id: 20230818-upstream-net-next-20230818-2d1199315465

Best regards,
-- 
Mat Martineau <martineau@kernel.org>


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-08-23  1:40 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-21 22:25 [PATCH net-next 00/10] mptcp: Prepare MPTCP packet scheduler for BPF extension Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 01/10] mptcp: refactor push_pending logic Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 02/10] mptcp: drop last_snd and MPTCP_RESET_SCHEDULER Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 03/10] mptcp: add struct mptcp_sched_ops Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 04/10] mptcp: add a new sysctl scheduler Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 05/10] mptcp: add sched in mptcp_sock Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 06/10] mptcp: add scheduled in mptcp_subflow_context Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 07/10] mptcp: add scheduler wrappers Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 08/10] mptcp: use get_send wrapper Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 09/10] mptcp: use get_retrans wrapper Mat Martineau
2023-08-21 22:25 ` [PATCH net-next 10/10] mptcp: register default scheduler Mat Martineau
2023-08-23  1:40 ` [PATCH net-next 00/10] mptcp: Prepare MPTCP packet scheduler for BPF extension patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).