On Tue, 15 Oct 2002, Luigi Rizzo wrote:

> On Tue, Oct 15, 2002 at 08:52:49PM -0500, Mike Silbersack wrote:
> ...
> > NetBSD introduced a "fix" for this recently, it seems sorta hackish, but
> > maybe we need to do something similar.
>
> this helps you if the other side has delayed acks, but halves the
> throughput if you are being window limited and the other side does not
> use delayed acks (can you force immediate acks by setting the PUSH flag
> in the tcp header ?)
>
>       cheers
>       luigi

I think the comment is slightly misleading, and that it won't actually
cause any performance problems as you suggest.

>From what I recall, immediate acking of PUSH packets varies... Linux
appears to have changed back and forth on whether it does so or not.  I
also seem to recall Windows making a change too.  Either way, we probably
shouldn't rely on that behavior alone.

> > Never send more than half a socket buffer of data.  This insures that
> > we can always keep 2 packets on the wire, no matter what SO_SNDBUF is,
> > and therefore ACKs will never be delayed unless we run out of data to
> > transmit.  The problem is quite easy to tickle when the MTU of the
> > outgoing interface is larger than the socket buffer size (e.g. loopback).

If I'm reading the implementation correctly, what this means is that if
you have a single packet > .5*socketbuffer, you reduce the maximum
*segment* size, causing two smaller packets to be sent instead of one
large packet.  (Smaller still being 8K in size.)

While such a change might help with localhost, I have this sneaky
suspicion that it falls apart when applied to jumbo frames and 32K send
buffers.  Someone well motivated should be able to come up with a more
general heuristic.

Mike "Silby" Silbersack


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to