TCP loopback socket fusing
Maxim Dounin
mdounin at mdounin.ru
Tue Sep 14 10:35:52 UTC 2010
Hello!
On Tue, Sep 14, 2010 at 12:12:03PM +0200, Ian FREISLICH wrote:
> Fabien Thomas wrote:
> > Great,
> >
> > This will maybe kill the long time debate about "my loopback is slow vs
> > linux"
> > To have the best of both world what about a socket option to
> > enable/disable fusing:
> > can be useful when you need to see some connection "packetized".
>
> To chime in, I had a "slow" loopback issue earlier this week. It
> turned out the problem was caused by delayed ack on the loopback
> where the client didn't need to transmit any data to the server.
> It delayed each packet from the server by 100ms. After patching
> the server to:
>
> setsockopt(desc->accept_fd, IPPROTO_TCP, TCP_NODELAY, &x, sizeof(x));
>
> It's now faster than on linux.
>
> Perhaps this is one of the causes of "my loopback is slow vs linux".
>
> FWIW, I couldn't find a way to turn off dealyed_ack on just loopback
> interface.
AFAIK in linux delayed ack behaves a bit more gently and doesn't
delay first ack(s) in a connection. As a result linux hides some
classic delayed ack vs. Nagle problems.
Something similar probably should be adapted.
Maxim Dounin
More information about the freebsd-net
mailing list