From owner-freebsd-net@FreeBSD.ORG Tue Sep 14 16:07:18 2010 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D2BE106564A for ; Tue, 14 Sep 2010 16:07:18 +0000 (UTC) (envelope-from oppermann@networx.ch) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id B14398FC08 for ; Tue, 14 Sep 2010 16:07:17 +0000 (UTC) Received: (qmail 62745 invoked from network); 14 Sep 2010 16:02:15 -0000 Received: from localhost (HELO [127.0.0.1]) ([127.0.0.1]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 14 Sep 2010 16:02:15 -0000 Message-ID: <4C8F9DB6.4050309@networx.ch> Date: Tue, 14 Sep 2010 18:07:18 +0200 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Maxim Dounin References: <4C8E0C1E.2020707@networx.ch> <20100914103549.GI99657@mdounin.ru> In-Reply-To: <20100914103549.GI99657@mdounin.ru> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-net@freebsd.org, Ian FREISLICH , Fabien Thomas , freebsd-current@freebsd.org Subject: Re: TCP loopback socket fusing X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Sep 2010 16:07:18 -0000 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