tcp: restrict F-RTO to work-around broken middle-boxes
authorYuchung Cheng <ycheng@google.com>
Fri, 7 Apr 2017 18:42:05 +0000 (11:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Apr 2017 18:44:00 +0000 (11:44 -0700)
commitcc663f4d4c97b7297fb45135ab23cfd508b35a77
treefd04acd46637db063b4b2ea1528c7b43e1542461
parent16cf72bb085626ae1323e59985d6cbb58a8f71d8
tcp: restrict F-RTO to work-around broken middle-boxes

The recent extension of F-RTO 89fe18e44 ("tcp: extend F-RTO
to catch more spurious timeouts") interacts badly with certain
broken middle-boxes.  These broken boxes modify and falsely raise
the receive window on the ACKs. During a timeout induced recovery,
F-RTO would send new data packets to probe if the timeout is false
or not. Since the receive window is falsely raised, the receiver
would silently drop these F-RTO packets. The recovery would take N
(exponentially backoff) timeouts to repair N packet losses.  A TCP
performance killer.

Due to this unfortunate situation, this patch removes this extension
to revert F-RTO back to the RFC specification.

Fixes: 89fe18e44f7e ("tcp: extend F-RTO to catch more spurious timeouts")
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c