Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Jun 2008 18:19:26 +1000
From:      Jerahmy Pocott <quakenet1@optusnet.com.au>
To:        freebsd-stable@freebsd.org
Subject:   Re: Sysctl knob(s) to set TCP 'nagle' time-out?
Message-ID:  <25CC6491-DB3F-4B06-A17F-E6C93A3CAD5D@optusnet.com.au>
In-Reply-To: <200806231642.m5NGggV8089156@apollo.backplane.com>
References:  <0222EAC1-A278-41D2-9566-C9CF19811068@optusnet.com.au> <200806230827.m5N8RBlW085475@apollo.backplane.com> <485F7576.5070104@freebsd.org> <200806231642.m5NGggV8089156@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help

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..



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?25CC6491-DB3F-4B06-A17F-E6C93A3CAD5D>