tcp: improve PRR loss recovery
authorYuchung Cheng <ycheng@google.com>
Thu, 19 May 2022 00:34:10 +0000 (17:34 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 20 May 2022 01:49:50 +0000 (18:49 -0700)
commit9ad084d666194c20a30e3589cbfaf971dae55c24
tree59657475684dfced6cdf223b3eddbdea038396dd
parent7ebe52f555de21a1f239b963aa49972a6916a49a
tcp: improve PRR loss recovery

This patch improves TCP PRR loss recovery behavior for a corner
case. Previously during PRR conservation-bound mode, it strictly
sends the amount equals to the amount newly acked or s/acked.

The patch changes s.t. PRR may send additional amount that was banked
previously (e.g. application-limited) in the conservation-bound
mode, similar to the slow-start mode. This unifies and simplifies the
algorithm further and may improve the recovery latency. This change
still follow the general packet conservation design principle and
always keep inflight/cwnd below the slow start threshold set
by the congestion control module.

PRR is described in RFC 6937. We'll include this change in the
latest revision rfc6937-bis as well.

Reported-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20220519003410.2531936-1-ycheng@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_input.c