From: Yuchung Cheng <ych...@google.com> Date: Mon, 29 Apr 2019 15:46:12 -0700
> Linux TCP currently uses the initial congestion window of 1 packet > if multiple SYN or SYNACK timeouts per RFC6298. However such > timeouts are often spurious on wireless or cellular networks that > experience high delay variances (e.g. ramping up dormant radios or > local link retransmission). Another case is when the underlying > path is longer than the default SYN timeout (e.g. 1 second). In > these cases starting the transfer with a minimal congestion window > is detrimental to the performance for short flows. > > One naive approach is to simply ignore SYN or SYNACK timeouts and > always use a larger or default initial window. This approach however > risks pouring gas to the fire when the network is already highly > congested. This is particularly true in data center where application > could start thousands to millions of connections over a single or > multiple hosts resulting in high SYN drops (e.g. incast). > > This patch-set detects spurious SYN and SYNACK timeouts upon > completing the handshake via the widely-supported TCP timestamp > options. Upon such events the sender reverts to the default > initial window to start the data transfer so it gets best of both > worlds. This patch-set supports this feature for both active and > passive as well as Fast Open or regular connections. Series applied, thanks.