From: Eric Dumazet <eduma...@google.com> Date: Tue, 23 Oct 2018 11:54:16 -0700
> With EDT model, SRTT no longer is inflated by pacing delays. > > This means that RTO and some other xmit timers might be setup > incorrectly. This is particularly visible with either : > > - Very small enforced pacing rates (SO_MAX_PACING_RATE) > - Reduced rto (from the default 200 ms) > > This can lead to TCP flows aborts in the worst case, > or spurious retransmits in other cases. > > For example, this session gets far more throughput > than the requested 80kbit : > > $ netperf -H 127.0.0.2 -l 100 -- -q 10000 > MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 127.0.0.2 > () port 0 AF_INET > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 540000 262144 262144 104.00 2.66 > > With the fix : > > $ netperf -H 127.0.0.2 -l 100 -- -q 10000 > MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 127.0.0.2 > () port 0 AF_INET > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 540000 262144 262144 104.00 0.12 > > EDT allows for better control of rtx timers, since TCP has > a better idea of the earliest departure time of each skb > in the rtx queue. We only have to eventually add to the > timer the difference of the EDT time with current time. > > Signed-off-by: Eric Dumazet <eduma...@google.com> Applied.