]> 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)
commit21669a164d358939b754e819c1d7b3319e287e60
treec22fbe4b578d94cf9e813fa8831a3bfb798717e8
parent5feb7e6f8a218b8841448895b86a5f6d8ec73c1d
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