1. 04 Aug, 2020 1 commit
    • Jianfeng Wang's avatar
      tcp: apply a floor of 1 for RTT samples from TCP timestamps · 730e700e
      Jianfeng Wang authored
      For retransmitted packets, TCP needs to resort to using TCP timestamps
      for computing RTT samples. In the common case where the data and ACK
      fall in the same 1-millisecond interval, TCP senders with millisecond-
      granularity TCP timestamps compute a ca_rtt_us of 0. This ca_rtt_us
      of 0 propagates to rs->rtt_us.
      
      This value of 0 can cause performance problems for congestion control
      modules. For example, in BBR, the zero min_rtt sample can bring the
      min_rtt and BDP estimate down to 0, reduce snd_cwnd and result in a
      low throughput. It would be hard to mitigate this with filtering in
      the congestion control module, because the proper floor to apply would
      depend on the method of RTT sampling (using timestamp options or
      internally-saved transmission timestamps).
      
      This fix applies a floor of 1 for the RTT sample delta from TCP
      timestamps, so that seq_rtt_us, ca_rtt_us, and rs->rtt_us will be at
      least 1 * (USEC_PER_SEC / TCP_TS_HZ).
      
      Note that the receiver RTT computation in tcp_rcv_rtt_measure() and
      min_rtt computation in tcp_update_rtt_min() both already apply a floor
      of 1 timestamp tick, so this commit makes the code more consistent in
      avoiding this edge case of a value of 0.
      Signed-off-by: default avatarJianfeng Wang <jfwang@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarKevin Yang <yyd@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      730e700e
  2. 03 Aug, 2020 39 commits