• Kevin(Yudong) Yang's avatar
    net-tcp: Disable TCP ssthresh metrics cache by default · 65e6d901
    Kevin(Yudong) Yang authored
    This patch introduces a sysctl knob "net.ipv4.tcp_no_ssthresh_metrics_save"
    that disables TCP ssthresh metrics cache by default. Other parts of TCP
    metrics cache, e.g. rtt, cwnd, remain unchanged.
    
    As modern networks becoming more and more dynamic, TCP metrics cache
    today often causes more harm than benefits. For example, the same IP
    address is often shared by different subscribers behind NAT in residential
    networks. Even if the IP address is not shared by different users,
    caching the slow-start threshold of a previous short flow using loss-based
    congestion control (e.g. cubic) often causes the future longer flows of
    the same network path to exit slow-start prematurely with abysmal
    throughput.
    
    Caching ssthresh is very risky and can lead to terrible performance.
    Therefore it makes sense to make disabling ssthresh caching by
    default and opt-in for specific networks by the administrators.
    This practice also has worked well for several years of deployment with
    CUBIC congestion control at Google.
    Acked-by: default avatarEric Dumazet <edumazet@google.com>
    Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
    Acked-by: default avatarYuchung Cheng <ycheng@google.com>
    Signed-off-by: default avatarKevin(Yudong) Yang <yyd@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    65e6d901
tcp_ipv4.c 72 KB