]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: temporarily disable Fast Open on SYN timeout
authorYuchung Cheng <ycheng@google.com>
Tue, 29 Oct 2013 17:09:05 +0000 (10:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Oct 2013 02:50:41 +0000 (22:50 -0400)
commitad2006344e1719699f9b5d8f81d3636fb2ab02df
treeba4605fa37ed4d0a8f47bd49c3cb53929285ebf3
parentc0ddeb1030b6253773a609398fb73c048dbd4c3a
tcp: temporarily disable Fast Open on SYN timeout

Fast Open currently has a fall back feature to address SYN-data being
dropped but it requires the middle-box to pass on regular SYN retry
after SYN-data. This is implemented in commit 484500802 ("net-tcp:
Fast Open client - detecting SYN-data drops")

However some NAT boxes will drop all subsequent packets after first
SYN-data and blackholes the entire connections.  An example is in
commit 7fffe9d "netfilter: nf_conntrack: fix tcp_in_window for Fast
Open".

The sender should note such incidents and fall back to use the regular
TCP handshake on subsequent attempts temporarily as well: after the
second SYN timeouts the original Fast Open SYN is most likely lost.
When such an event recurs Fast Open is disabled based on the number of
recurrences exponentially.

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_metrics.c
net/ipv4/tcp_timer.c