From owner-freebsd-net@FreeBSD.ORG Thu Jan 24 14:12:40 2013 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 1D40368C for ; Thu, 24 Jan 2013 14:12:40 +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 88E4F9CE for ; Thu, 24 Jan 2013 14:12:39 +0000 (UTC) Received: (qmail 3496 invoked from network); 24 Jan 2013 15:33:44 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 24 Jan 2013 15:33:44 -0000 Message-ID: <51014150.50101@networx.ch> Date: Thu, 24 Jan 2013 15:12:32 +0100 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 MIME-Version: 1.0 To: Lawrence Stewart Subject: Re: Some questions about the new TCP congestion control code References: <201301141604.29864.jhb@freebsd.org> <50F5137F.1060207@freebsd.org> <201301151427.50932.jhb@freebsd.org> <51013702.8040707@freebsd.org> In-Reply-To: <51013702.8040707@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-net@freebsd.org, John Baldwin X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jan 2013 14:12:40 -0000 On 24.01.2013 14:28, Lawrence Stewart wrote: > On 01/16/13 06:27, John Baldwin wrote: >> One other thing I noticed which is may or may not be odd during this, is that >> if you have a connection with TCP_NODELAY enabled and you fill your cwnd and >> then you get an ACK back for an earlier small segment (less than MSS), TCP >> will not send out a "short" segment for the amount of window space released. >> Instead, it will wait until a full MSS of space is available before sending >> a packet. I'm not sure if that is the correct behavior with TCP_NODELAY or >> if we should send "short" segments in that case. > > We try fairly hard not to send runt segments irrespective of NODELAY, > but I would be happy to see that change. I'm not aware of any "correct > behaviour" we have to adhere to - I think it would be perfectly > reasonable to have a sysctl set the lowest number of bytes we'd be > willing to send a runt segment for and then key off TCP_NODELAY as to > whether we try hard to send an MSS worth or send as soon as we have the > min number of bytes worth of window available. This is classic silly window syndrome prevention applied to the CWND. Sending a small segment when the window opens just a bit isn't going to help much and mostly clogs the network. This is actually a side effect of ABC (appropriate byte counting) where not the ACK's are counted but the bytes ACK'ed. Disabling ABC will solve this problem. -- Andre