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>