TCP Receive buffer scaling without Timestamps
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
Manually increasing net.inet.tcp.recvspace FreeBSD easily matched Linux
performance, but obviously that's clunky, not everyone will do it and
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:
More information about the freebsd-transport