TCP Receive buffer scaling without Timestamps

Steven Hartland steven.hartland at multiplay.co.uk
Fri Feb 17 22:37:41 UTC 2017


While investigating a recent thread on freebsd-net@ I became aware of 
the fact that FreeBSD's receive buffer scaling doesn't work when the TCP 
session fails to negotiate timestamp support.

The result of this when downloading content from Amazon S3 and likely 
other locations Linux is significantly faster without manual tuning.

In my tests with a latency of ~17ms on a 1Gbps connection FreeBSD 
downloaded from AWS S3 at only 3MB/s where the same spec Linux box got 
30MB/s.

Manually increasing net.inet.tcp.recvspace FreeBSD easily matched Linux 
performance, but obviously that's clunky, not everyone will do it and 
hence....

Initial research seems to indicate Linux receive buffer scaling will use 
timestamps, if they are available, but also falls back to RTT estimates 
to provide buffer scaling.

The benefits of this are clear, so I wanted to kick of thread to 
highlight this and see if this is something we could address, given its 
highly likely this is going to be having a marked impact on a 
significant amount of our users.

So the questions:

 1. Has anyone looked at this issue before or is working on it?
 2. Do people think we could add support for RTT estimates and enable
    receive scaling without major tcp stack changes?

The original thread can be seen here:
https://lists.freebsd.org/pipermail/freebsd-net/2017-February/047234.html

     Regards
     Steve


More information about the freebsd-transport mailing list