From owner-freebsd-net@FreeBSD.ORG Tue Mar 4 19:39:35 2014 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 ESMTPS id 410D9DC6; Tue, 4 Mar 2014 19:39:35 +0000 (UTC) Received: from mail-ee0-x230.google.com (mail-ee0-x230.google.com [IPv6:2a00:1450:4013:c00::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 82A4CE57; Tue, 4 Mar 2014 19:39:34 +0000 (UTC) Received: by mail-ee0-f48.google.com with SMTP id e51so3873063eek.35 for ; Tue, 04 Mar 2014 11:39:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=mNfRPKizHTuNrR+wt7tNgWZ7s9V/qsgFY4DYjPaNlis=; b=VRfIiUGHLLtDzbP3Ap9aCgCeThXuZePD5NTV9mLG6NQLsYDTB1ENynxdw1QwUvOc8a jRmPGxZICU6DqihGeXhSf61V2aYUuY7xY5c9sHI4t6GA7BPV1hwQQ9PCQrp28N6dnvHc 5bDZljZlHg/3trYpha1NaicymLIAK+XRTpIZR7ZYnXCVk8+c4zEA97FrHgLL7Ucaz+Mq hZh8YxOFxLbB5OrXSQmxatCDPNX24MOPV/gIAhmicLmDxhg87FYtYeeUVHyxXjeiceQL GerXHlVji8ADOMFRKC4HY2r9OCLeESpDlMXh5p4Z+ST4fvU5Uu3ZgQu8YMK3+VXpzVYu jlmA== MIME-Version: 1.0 X-Received: by 10.15.61.7 with SMTP id h7mr1189436eex.49.1393961972706; Tue, 04 Mar 2014 11:39:32 -0800 (PST) Received: by 10.14.65.4 with HTTP; Tue, 4 Mar 2014 11:39:32 -0800 (PST) In-Reply-To: <520C4F03.9040601@freebsd.org> References: <201307051458.r65EwObo066269@svn.freebsd.org> <520AED2F.4050001@freebsd.org> <520BB3F0.4020506@freebsd.org> <520C4F03.9040601@freebsd.org> Date: Tue, 4 Mar 2014 11:39:32 -0800 Message-ID: Subject: Re: TCP Initial Window 10 MFC From: hiren panchasara To: Lawrence Stewart Content-Type: text/plain; charset=UTF-8 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: Tue, 04 Mar 2014 19:39:35 -0000 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