Files
linux/include/trace/events
Paolo Abeni d2000361e4 mptcp: better mptcp-level RTT estimator
The current MPTCP-level RTT estimator has several issues. On high speed
links, the MPTCP-level receive buffer auto-tuning happens with a
frequency well above the TCP-level's one. That in turn can cause
excessive/unneeded receive buffer increase.

On such links, the initial rtt_us value is considerably higher than the
actual delay, and the current mptcp_rcv_space_adjust() updates
msk->rcvq_space.rtt_us with a period equal to the such field previous
value. If the initial rtt_us is 40ms, its first update will happen after
40ms, even if the subflows see actual RTT orders of magnitude lower.

Additionally:
- setting the msk RTT to the maximum among all the subflows RTTs makes
  DRS constantly overshooting the rcvbuf size when a subflow has
  considerable higher latency than the other(s).

- during unidirectional bulk transfers with multiple active subflows,
  the TCP-level RTT estimator occasionally sees considerably higher
  value than the real link delay, i.e. when the packet scheduler reacts
  to an incoming ACK on given subflow pushing data on a different
  subflow.

- currently inactive but still open subflows (i.e. switched to backup
  mode) are always considered when computing the msk-level RTT.

Address the all the issues above with a more accurate RTT estimation
strategy: the MPTCP-level RTT is set to the minimum of all the subflows
actually feeding data into the MPTCP receive buffer, using a small
sliding window.

While at it, also use EWMA to compute the msk-level scaling_ratio, to
that MPTCP can avoid traversing the subflow list is
mptcp_rcv_space_adjust().

Use some care to avoid updating msk and ssk level fields too often.

Fixes: a6b118febb ("mptcp: add receive buffer auto-tuning")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260407-net-next-mptcp-reduce-rbuf-v2-1-0d1d135bf6f6@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-04-08 19:32:00 -07:00
..
2024-11-22 11:43:27 -07:00
2025-08-26 17:34:31 -07:00
2026-01-29 16:00:57 +01:00
2024-05-08 10:39:26 +01:00
2023-12-29 11:58:27 -08:00
2023-07-17 08:18:17 -06:00
2024-11-11 00:26:46 -08:00
2025-07-09 22:41:55 -07:00
2024-05-14 07:22:35 -06:00
2024-09-11 20:44:31 -07:00
2025-09-13 16:55:07 -07:00
2025-11-14 17:05:53 +01:00
2024-09-28 15:13:56 +02:00
2025-09-21 14:22:28 -07:00
2025-11-04 08:32:14 +01:00
2024-06-19 12:44:22 +01:00
2025-04-11 18:58:10 -07:00
2025-10-27 11:10:50 +00:00
2025-07-14 12:46:48 -04:00
2023-07-17 08:18:17 -06:00
2023-09-19 07:04:49 +02:00