From owner-freebsd-net@FreeBSD.ORG Thu Feb 21 14:57:01 2013 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id EEE927CE; Thu, 21 Feb 2013 14:57:01 +0000 (UTC) (envelope-from sepherosa@gmail.com) Received: from mail-vb0-f49.google.com (mail-vb0-f49.google.com [209.85.212.49]) by mx1.freebsd.org (Postfix) with ESMTP id 77FF9A6C; Thu, 21 Feb 2013 14:57:01 +0000 (UTC) Received: by mail-vb0-f49.google.com with SMTP id s24so5758028vbi.36 for ; Thu, 21 Feb 2013 06:56:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=nnnNyJISK9kMGcbVigKXW3umKBrklZusviFCkQPXuY0=; b=cNXsG4Th/MVAoBOkABtSGyNqrGh7EyZg5GWu1SQ5oPTwih+IlxhktdAMvfpeI7giTk 4BeJ9QlOz1K7v3V4EKyJg+MIz1BOOKjA7N1S/e193hmPyUZAJnMR3BzbvnTlTN4agw2F gFhN97NgjSO7Qds5z0+WAQjlfXHi/uvJhCsVGv2fgOfqZuy2PJ+nv4VNdZs8NAP0ktBF /HrP3hI8vgtQTPUUe+h3HF4M0G4+rPjsYQIuDnd5auxXSr7JUThdSzgAWwKAbaz5hpQo fZo68QUqEJd0TVpIyaRlcIzPcCrJC/ejoRvfm8LFfdVnsFmZfkWuj4CuW8d8D03JqIQE PgVg== MIME-Version: 1.0 X-Received: by 10.52.99.42 with SMTP id en10mr18857440vdb.37.1361438400971; Thu, 21 Feb 2013 01:20:00 -0800 (PST) Received: by 10.58.143.73 with HTTP; Thu, 21 Feb 2013 01:20:00 -0800 (PST) In-Reply-To: <51244A0C.8000800@freebsd.org> References: <201301221511.02496.jhb@freebsd.org> <511B4DEF.8000500@freebsd.org> <511B6A87.5060000@freebsd.org> <511BA29E.5050501@freebsd.org> <511BA7D9.3050709@freebsd.org> <511C3FB8.40506@freebsd.org> <51242B05.1040003@room52.net> <51244A0C.8000800@freebsd.org> Date: Thu, 21 Feb 2013 17:20:00 +0800 Message-ID: Subject: Re: [PATCH] Add a new TCP_IGNOREIDLE socket option From: Sepherosa Ziehau To: Lawrence Stewart Content-Type: text/plain; charset=ISO-8859-1 Cc: Andre Oppermann , John Baldwin , "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, 21 Feb 2013 14:57:02 -0000 On Wed, Feb 20, 2013 at 11:59 AM, Lawrence Stewart wrote: > Hi Sephe, > > On 02/20/13 13:37, Sepherosa Ziehau wrote: >> On Wed, Feb 20, 2013 at 9:46 AM, Lawrence Stewart wrote: >>> *crickets chirping* >>> >>> Time to move this discussion forward... >>> >>> >>> If any robust counter-arguments exist, now is the time for us to hear >>> them. I haven't read anything thus far which convinces me that we should >>> not provide knobs to tune our stack's dynamics. >>> >>> In the absence of any compelling counter-arguments, I would like to >>> propose the following: >>> >>> - We rename the net.inet.tcp.experimental sysctl node introduced in >>> r242266 for IW10 support to net.inet.tcp.nonstandard, and re-parent the >>> initcwnd10 sysctl under this node. > > I should also add that I think initcwnd10 should be changed to initcwnd > and take the number of segments as a value. Yeah, I would suggest the same. > >>> - We introduce a new net.inet.tcp.nonstandard.allowed sysctl variable >>> and default it to 0. Only when it is changed to 1 will we allow starkly >>> non standards compliant behaviour to be enabled in the stack. As a more >>> complex but expressive alternative, we can make the sysctl take a bit >>> mask or CSV string which specifies which non-standard options the sys >>> admin permits (I'd prefer this as we can easily test non-standard >>> options like IW10 in head without blanket enabling all non standard >>> behaviour). > > To be clear, my proposal is that specifying an allowed option in > net.inet.tcp.nonstandard.allowed would not enable it as the default on > all connections, but would allow the per-application mechanism we define > to set the option. Setting net.inet.tcp.nonstandard.option_x to 1 would > enable the option as default for all connections. > >>> - We introduce a new net.inet.tcp.nonstandard.noidlereset sysctl >>> variable, and use it to enable/disable window-reset-after-idle behaviour >>> as proposed by John. >>> >>> - We don't introduce a TF_IGNOREIDLE sockopt, and instead introduce a >>> more generic sockopt and/or mechanism for per-application tuning of all >>> options which affect stack dynamics (both standard and non-standard >>> options). I'm open to suggestions on what this could/should look like. >> >> Lawrence, >> >> A route metric? BTW, as for IW10, it could also become a route metric >> (as proposed by the draft author's presentation >> http://www.ietf.org/proceedings/79/slides/tcpm-0.pdf) > > Are you suggesting having the ability to set knobs as route metrics in > addition to sysctl and a per-app mechanism? If so then I am very much in > favour of this. Assuming an option has been allowed in > net.inet.tcp.nonstandard.allowed, it should be able to be set by an > application or on a route, perhaps with a precedence hierarchy of app > request trumps route metric trumps system default setting? I suggest using route metrics in addition to the global sysctls; route metrics take precedence over global sysctls. I don't object the per-socket settings though. However, IMHO, these options (IW10 and ignoring idle restart, and probably others) are administrative, so applications probably should not mess with them. Best Regards, sephe -- Tomorrow Will Never Die