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..
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to