From owner-freebsd-net@FreeBSD.ORG Wed Mar 5 03:38:13 2014 Return-Path: Delivered-To: net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DE125512; Wed, 5 Mar 2014 03:38:13 +0000 (UTC) Received: from lauren.room52.net (lauren.room52.net [210.50.193.198]) by mx1.freebsd.org (Postfix) with ESMTP id 45B28858; Wed, 5 Mar 2014 03:38:13 +0000 (UTC) Received: from lgwl-lstewart2.corp.netflix.com (unknown [69.53.237.72]) by lauren.room52.net (Postfix) with ESMTPSA id 106747E820; Wed, 5 Mar 2014 14:38:03 +1100 (EST) Message-ID: <53169C19.5020008@freebsd.org> Date: Tue, 04 Mar 2014 19:38:01 -0800 From: Lawrence Stewart User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: koobs@FreeBSD.org, hiren panchasara Subject: Re: TCP Initial Window 10 MFC References: <201307051458.r65EwObo066269@svn.freebsd.org> <520AED2F.4050001@freebsd.org> <520BB3F0.4020506@freebsd.org> <520C4F03.9040601@freebsd.org> <5316413D.7050000@FreeBSD.org> In-Reply-To: <5316413D.7050000@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=unavailable version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on lauren.room52.net Cc: Andre Oppermann , "freebsd-net@freebsd.org" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Mar 2014 03:38:13 -0000 On 03/04/14 13:10, Kubilay Kocak wrote: > On 5/03/2014 6:39 AM, hiren panchasara wrote: >> On Wed, Aug 14, 2013 at 8:46 PM, Lawrence Stewart wrote: >>> On 08/15/13 02:44, Andre Oppermann wrote: >>>> On 14.08.2013 04:36, Lawrence Stewart wrote: >>>>> Hi Andre, >>>>> >>>>> [RE team is BCCed so they're aware of this discussion] >>>>> >>>>> On 07/06/13 00:58, Andre Oppermann wrote: >>>>>> Author: andre >>>>>> Date: Fri Jul 5 14:58:24 2013 >>>>>> New Revision: 252789 >>>>>> URL: http://svnweb.freebsd.org/changeset/base/252789 >>>>>> >>>>>> Log: >>>>>> MFC r242266: >>>>>> >>>>>> Increase the initial CWND to 10 segments as defined in IETF TCPM >>>>>> draft-ietf-tcpm-initcwnd-05. It explains why the increased initial >>>>>> window improves the overall performance of many web services without >>>>>> risking congestion collapse. >>>>>> >>>>>> As long as it remains a draft it is placed under a sysctl marking it >>>>>> as experimental: >>>>>> net.inet.tcp.experimental.initcwnd10 = 1 >>>>>> When it becomes an official RFC soon the sysctl will be changed to >>>>>> the RFC number and moved to net.inet.tcp. >>>>>> >>>>>> This implementation differs from the RFC draft in that it is a bit >>>>>> more conservative in the case of packet loss on SYN or SYN|ACK >>>>>> because >>>>>> we haven't reduced the default RTO to 1 second yet. Also the >>>>>> restart >>>>>> window isn't yet increased as allowed. Both will be adjusted with >>>>>> upcoming changes. >>>>>> >>>>>> Is is enabled by default. In Linux it is enabled since kernel 3.0. >>>>> >>>>> I haven't been fully alert to FreeBSD happenings this year so apologies >>>>> for bringing this up so long after the MFC. >>>>> >>>>> I don't think this change should have been MFCed, at least not in its >>>>> current form. Enabling the switch to IW=10 on a stable branch is >>>>> inappropriate IMO. I also think the "net.inet.tcp.experimental" sysctl >>>>> branch is poorly named as per the important discussion we had back in >>>>> February [1]. I would really prefer we didn't get stuck having to keep >>>>> it around by making a stable release with it being present. >>>>> >>>>> I think this commit should be backed out of stable/9 and more >>>>> importantly, 9.2-RELEASE. >>>> >>>> Backing out the patch isn't really necessary, just flip the switch to >>>> off having it revert to the RFC5681 defaults. Those who want it anyway >>>> can simply enable it again. >>> >>> That doesn't address the sysctl tree naming concern or mechanism issue - >>> please refer back to the Feb discussion; specifically the proposal to >>> rename the experimental branch to "net.inet.tcp.nonstandard" and add an >>> "allowed" leaf which takes a list of non-standard behaviours to allow >>> tweaking in the stack. >>> >>> Leaving the sysctl branch named "experimental" conveys that the things >>> which live under the branch are being evaluated in some way for becoming >>> a default, which is very different to "nonstandard" which conveys that >>> the user is twiddling things in a way which normally shouldn't be. IW=10 >>> may become a FreeBSD default at some point, but the mechanism for >>> enabling it should be to specify the initial window as a value in >>> segments, and as such by allowing any non-standard value (IW=7, IW=50), >>> I strongly argue in favour for changing the branch name from >>> "experimental" to "nonstandard". >>> >>> In order to continue this discussion in the context of what we started >>> in Feb, I still request that this change be backed out of releng/9.2 so >>> that 9.2-RELEASE doesn't ship with it. We can continue discussion for >>> it's future in stable/9 and head after the backout so that 9.2 isn't >>> held up. >>> >>>> IW10 has become RFC6928 (experimental) in April 2013. >>> >>> Great for the draft authors, but irrelevant for this discussion. >>> >>>>> As an aside, I am intending to follow up to the Feb discussion with a >>>>> patch that implements the basic infrastructure I proposed so that we can >>>>> continue that discussion. >>>> >>>> Again I'm deeply concerned and opposed to giving end users direct control >>>> over the IW value. I've had and seen too many cases of totally bogus >>>> "tuning" >>>> by cranking up random sysctls to insane values and then complaining about >>>> FreeBSD being slow compared to Linux (and then ditching FreeBSD). >>> >>> Sorry, but referring to unspecified cases of stupidity resulting in loss >>> of unquantified numbers of users as a reason against providing a >>> controlled mechanism to change a default system parameter in a >>> potentially harmful way is not a rational argument. >> >> I do not subscribe to the idea of "Let's not make life of 98% of users >> better because 2% may do something stupid". >> >> I am revisiting this thread because at $work, we need to tweak >> initcwnd (other than 10) to see how it behaves but there is no easy >> way to tune it. (or am I missing something?) >> >> Can we please make initcwnd a sysctl tunable? >> >> cheers, >> Hiren > > +1 - We'd like to at least be able to measure the difference and impact > of different values @ work, with the choice to make informed > configuration decisions too. I lost the battle of wills on this topic and 10.0 shipped with IW10 enabled by default :( As for having it configurable, it is a trivial patch which perhaps, Hiren, you might be willing to take a stab at? I obviously did not manage to carve out the time last year to push forward with the agenda I proposed in this thread, but I will get back to it at some point. Cheers, Lawrence