From owner-freebsd-net@FreeBSD.ORG Thu Aug 15 03:46:20 2013 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F1F6F9EC; Thu, 15 Aug 2013 03:46:19 +0000 (UTC) (envelope-from lstewart@freebsd.org) Received: from lauren.room52.net (lauren.room52.net [210.50.193.198]) by mx1.freebsd.org (Postfix) with ESMTP id 80B1F2F5B; Thu, 15 Aug 2013 03:46:19 +0000 (UTC) Received: from lstewart1.loshell.room52.net (ppp59-167-184-191.static.internode.on.net [59.167.184.191]) by lauren.room52.net (Postfix) with ESMTPSA id 6881B7E81E; Thu, 15 Aug 2013 13:46:11 +1000 (EST) Message-ID: <520C4F03.9040601@freebsd.org> Date: Thu, 15 Aug 2013 13:46:11 +1000 From: Lawrence Stewart User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:13.0) Gecko/20120613 Thunderbird/13.0 MIME-Version: 1.0 To: Andre Oppermann Subject: Re: TCP Initial Window 10 MFC References: <201307051458.r65EwObo066269@svn.freebsd.org> <520AED2F.4050001@freebsd.org> <520BB3F0.4020506@freebsd.org> In-Reply-To: <520BB3F0.4020506@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: "freebsd-net@freebsd.org" 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, 15 Aug 2013 03:46:20 -0000 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. Cheers, Lawrence