Re: TCP loopback socket fusing

From: Andre Oppermann <oppermann_at_networx.ch>
Date: Tue, 14 Sep 2010 18:07:18 +0200
On 14.09.2010 12:35, Maxim Dounin wrote:
> 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.

I saw something like that while glancing over the Linux code some
time ago.  Couldn't make much sense out of the code snipped because
their TCP code split into a myriad of small functions and thus hard
to follow in the beginning.  Not the ours is much easier on a beginner.

-- 
Andre
Received on Tue Sep 14 2010 - 14:07:18 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:07 UTC