Sysctl knob(s) to set TCP 'nagle' time-out?

Jerahmy Pocott quakenet1 at optusnet.com.au
Tue Jun 24 08:19:36 UTC 2008


On 24/06/2008, at 2:42 AM, Matthew Dillon wrote:

>  It should be noted that Nagle can cause high latencies even when
>    delayed acks are turned off.  Nagle's delay is not timed... in its
>    simplest description it prevents packets from being transmitted
>    for new data coming from userland if the data already in the
>    sockbuf (and presumably already transmitted) has not yet been
>    acknowledged.

Assuming that a full data packet can't be constructed in the time it
takes for the acknowledgement. If you CAN construct a whole packet
in that time then Nagle is either doing a good job or you're sending
large amounts of data..

Perhaps nagle a) needs a time out, though I don't really think that
would help, or b) uses a dynamic 'in-flight' count where it tries to
maintain x packets in-flight and only holds packets up when that
value is reached.. The idea being that you get the ack on your first
packet at the same time as the host should be getting your second
packet..

That way you still get to concatenate lots of small packets being
generated in a short space of time, but don't hold up sending data
because of the ack latency. It should also be possible to detect if
the remote host is using delayed acks and compensate for that?

Though I'v not considered it in much detail..


More information about the freebsd-stable mailing list