]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: change IPv6 flow-label upon receiving spurious retransmission
authorYuchung Cheng <ycheng@google.com>
Wed, 29 Aug 2018 21:53:56 +0000 (14:53 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 1 Sep 2018 06:03:00 +0000 (23:03 -0700)
commit711f23d6894f99b7a0f7cb1cd0a24fc6e4a1c5f1
treec22fbe4b578d94cf9e813fa8831a3bfb798717e8
parent067e65ceef162e1edef7f5001353c353ec375350
tcp: change IPv6 flow-label upon receiving spurious retransmission

Currently a Linux IPv6 TCP sender will change the flow label upon
timeouts to potentially steer away from a data path that has gone
bad. However this does not help if the problem is on the ACK path
and the data path is healthy. In this case the receiver is likely
to receive repeated spurious retransmission because the sender
couldn't get the ACKs in time and has recurring timeouts.

This patch adds another feature to mitigate this problem. It
leverages the DSACK states in the receiver to change the flow
label of the ACKs to speculatively re-route the ACK packets.
In order to allow triggering on the second consecutive spurious
RTO, the receiver changes the flow label upon sending a second
consecutive DSACK for a sequence number below RCV.NXT.

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