]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
mptcp: enforce HoL-blocking estimation
authorPaolo Abeni <pabeni@redhat.com>
Fri, 17 Dec 2021 23:37:00 +0000 (15:37 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 18 Dec 2021 03:27:04 +0000 (19:27 -0800)
commit3ce0852c86b926aed7bb8c69b09c5ad4ba0a9dfb
treeeba6743dcbe8ca41c57282f32ffb8d332745f81c
parentab9d0e2171be56bb3bcd0fe4bd8ae5d2f24e5a80
mptcp: enforce HoL-blocking estimation

The MPTCP packet scheduler has sub-optimal behavior with asymmetric
subflows: if the faster subflow-level cwin is closed, the packet
scheduler can enqueue "too much" data on a slower subflow.

When all the data on the faster subflow is acked, if the mptcp-level
cwin is closed, and link utilization becomes suboptimal.

The solution is implementing blest-like[1] HoL-blocking estimation,
transmitting only on the subflow with the shorter estimated time to
flush the queued memory. If such subflows cwin is closed, we wait
even if other subflows are available.

This is quite simpler than the original blest implementation, as we
leverage the pacing rate provided by the TCP socket. To get a more
accurate estimation for the subflow linger-time, we maintain a
per-subflow weighted average of such info.

Additionally drop magic numbers usage in favor of newly defined
macros and use more meaningful names for status variable.

[1] http://dl.ifip.org/db/conf/networking/networking2016/1570234725.pdf

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/137
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/protocol.c
net/mptcp/protocol.h