]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: use RTT from SACK for RTO
authorYuchung Cheng <ycheng@google.com>
Mon, 22 Jul 2013 23:20:48 +0000 (16:20 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Jul 2013 00:53:42 +0000 (17:53 -0700)
commite8dec16e09e99d45ae51e9ce02d23abb67b5806f
treeecbd6be76046918abb5a61941d0f845ea2c97b27
parent6c6a9754c4b9b99eb0636906cc6385b10d2a9b2f
tcp: use RTT from SACK for RTO

If RTT is not available because Karn's check has failed or no
new packet is acked, use the RTT measured from SACK to estimate
the RTO. The sender can continue to estimate the RTO during loss
recovery or reordering event upon receiving non-partial ACKs.

This also changes when the RTO is re-armed. Previously it is
only re-armed when some data is cummulatively acknowledged (i.e.,
SND.UNA advances), but now it is re-armed whenever RTT estimator
is updated. This feature is particularly useful to reduce spurious
timeout for buffer bloat including cellular carriers [1], and
RTT estimation on reordering events.

[1] "An In-depth Study of LTE: Effect of Network Protocol and
 Application Behavior on Performance", In Proc. of SIGCOMM 2013

Signed-off-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c