RE: #38 - HTTP2 min value for server supported max_concurrent_streams

Osama Mazahir <OSAMAM@microsoft.com> Fri, 22 February 2013 23:49 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5741821F8EB5 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 22 Feb 2013 15:49:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.572
X-Spam-Level:
X-Spam-Status: No, score=-9.572 tagged_above=-999 required=5 tests=[AWL=-1.027, BAYES_00=-2.599, HTML_MESSAGE=0.001, MIME_8BIT_HEADER=0.3, MIME_BASE64_TEXT=1.753, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Hntr-e6U6rKL for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 22 Feb 2013 15:49:12 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 3656021F8EA0 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 22 Feb 2013 15:49:12 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U92Jy-0000OR-A6 for ietf-http-wg-dist@listhub.w3.org; Fri, 22 Feb 2013 23:46:30 +0000
Resent-Date: Fri, 22 Feb 2013 23:46:30 +0000
Resent-Message-Id: <E1U92Jy-0000OR-A6@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <OSAMAM@microsoft.com>) id 1U92Je-0000Ne-0S for ietf-http-wg@listhub.w3.org; Fri, 22 Feb 2013 23:46:10 +0000
Received: from na01-bl2-obe.ptr.protection.outlook.com ([65.55.169.32] helo=na01-bl2-obe.outbound.protection.outlook.com) by lisa.w3.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <OSAMAM@microsoft.com>) id 1U92Ja-0003G8-OF for ietf-http-wg@w3.org; Fri, 22 Feb 2013 23:46:09 +0000
Received: from BY2FFO11FD006.protection.gbl (10.1.15.200) by BY2FFO11HUB006.protection.gbl (10.1.14.164) with Microsoft SMTP Server (TLS) id 15.0.620.12; Fri, 22 Feb 2013 23:45:20 +0000
Received: from TK5EX14MLTC103.redmond.corp.microsoft.com (131.107.125.37) by BY2FFO11FD006.mail.protection.outlook.com (10.1.14.127) with Microsoft SMTP Server (TLS) id 15.0.620.12 via Frontend Transport; Fri, 22 Feb 2013 23:45:20 +0000
Received: from TK5EX14MLTW653.wingroup.windeploy.ntdev.microsoft.com (157.54.24.14) by TK5EX14MLTC103.redmond.corp.microsoft.com (157.54.79.174) with Microsoft SMTP Server (TLS) id 14.2.318.3; Fri, 22 Feb 2013 23:45:18 +0000
Received: from TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com ([169.254.1.82]) by TK5EX14MLTW653.wingroup.windeploy.ntdev.microsoft.com ([157.54.24.14]) with mapi id 14.02.0328.011; Fri, 22 Feb 2013 15:45:18 -0800
From: Osama Mazahir <OSAMAM@microsoft.com>
To: "William Chan (陈智昌)" <willchan@chromium.org>, Yoav Nir <ynir@checkpoint.com>
CC: Martin Thomson <martin.thomson@gmail.com>, Roberto Peon <grmocg@gmail.com>, "ietf-http-wg@w3.org Group" <ietf-http-wg@w3.org>
Thread-Topic: #38 - HTTP2 min value for server supported max_concurrent_streams
Thread-Index: Ac4P5gZgxDRDnLAbSrC7mc4s04qeKQA00NdwAAXhR4AAHFRlgAAGPRyAAAytBgAAAJEjAAAPjNCw
Date: Fri, 22 Feb 2013 23:45:17 +0000
Message-ID: <B33F11E188FEAB49A7FAF38BAB08A2C001D32B31@TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com>
References: <B33F11E188FEAB49A7FAF38BAB08A2C001D31EBA@TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com> <7D5CB237-97F8-4C6C-93F4-79E2C42D0EFF@checkpoint.com> <CAP+FsNcpbpXP8yAtTa4PgUhSrBjERDULyrHeOdjh-c70Ccu3Gg@mail.gmail.com> <CABkgnnXHuO-rYJ0buBzpFdF=eBCj2Lq_RzCf8p2wsVHf3ZUsCA@mail.gmail.com> <1E0AFABE-9300-41B8-9E0D-5FFCDEA574F3@checkpoint.com> <CAA4WUYhCLv5vv9tnm9TbYGaF5do-BzKNmuHv17XJ_GM7zFwSaA@mail.gmail.com>
In-Reply-To: <CAA4WUYhCLv5vv9tnm9TbYGaF5do-BzKNmuHv17XJ_GM7zFwSaA@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [157.54.51.90]
Content-Type: multipart/alternative; boundary="_000_B33F11E188FEAB49A7FAF38BAB08A2C001D32B31TK5EX14MBXW601w_"
MIME-Version: 1.0
X-Forefront-Antispam-Report: CIP:131.107.125.37; CTRY:US; IPV:CAL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(51704002)(24454001)(189002)(199002)(377454001)(63696002)(49866001)(47736001)(79102001)(31966008)(56816002)(55846006)(54356001)(80022001)(20776003)(512914002)(44976002)(77982001)(51856001)(54316002)(56776001)(59766001)(47976001)(50986001)(65816001)(15202345001)(4396001)(53806001)(16236675001)(76482001)(16406001)(16234385001)(74502001)(46102001)(33656001)(5343655001)(5343635001)(66066001)(74662001)(47446002); DIR:OUT; SFP:; SCL:1; SRVR:BY2FFO11HUB006; H:TK5EX14MLTC103.redmond.corp.microsoft.com; RD:InfoDomainNonexistent; MX:1; A:1; LANG:en;
X-OriginatorOrg: microsoft.onmicrosoft.com
X-Forefront-PRVS: 07658B8EA3
Received-SPF: pass client-ip=65.55.169.32; envelope-from=OSAMAM@microsoft.com; helo=na01-bl2-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-3.450, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1U92Ja-0003G8-OF b3de3a1ee775d0b40583ac17d7a464de
X-Original-To: ietf-http-wg@w3.org
Subject: RE: #38 - HTTP2 min value for server supported max_concurrent_streams
Archived-At: <http://www.w3.org/mid/B33F11E188FEAB49A7FAF38BAB08A2C001D32B31@TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16780
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

As Martin said, 1 seems overly restrictive.

My major concern is not the value of the number, but that we have a minimum value and the default be the same as the minimum.  Otherwise, we leave the race hole open then we are just increasing complexity.

1.       Client will have to track negative allowance (because it did not know how many requests it allowed to send)

2.       Server has to promise that RST_STREAM due to max_concurrent_stream overflow did not have any side effects

o   The server should verb agnostic (i.e. GET vs POST) and just look at some streamCount variable.

o   Otherwise, client will have to pend all non-idempotent requests until it gets the SETTINGS frame from the server

3.       Client will have to resubmit the request into its queue to be sent when the allowance opens up

4.       If the “blind” request(s) (i.e. sent before client received the SETTINGS frame) have entity-body then client

o   Must wait until the server’s SETTINGS frame before sending entity-body OR

o   Be able to regenerate the entity-body when the “blind” request is RST_STREAMed

§  This means the layer on top of client stack needs to be able to handle a “retry” error and resubmit the entity-body OR

§  The client stack buffers all the entity-body, as it converts it into DATA frames, until it knows that the request won’t get RST_STREAM due to max_concurrent_stream

o   Or just blow up and complain to the user

In general, I would prefer if we made HTTP/2.0 to not have such races to begin with instead of piling on complexity to react to the races.


From: willchan@google.com [mailto:willchan@google.com] On Behalf Of William Chan (???)
Sent: Friday, February 22, 2013 2:36 PM
To: Yoav Nir
Cc: Martin Thomson; Roberto Peon; Osama Mazahir; ietf-http-wg@w3.org Group
Subject: Re: #38 - HTTP2 min value for server supported max_concurrent_streams

We always have to examine what the choices end up being for which parties. If servers end up limiting parallelism, or requiring roundtrips to ramp up parallelism, then clients which want speed (browsers) will be incentivized to simply open up more connections to bypass the low parallelism limit or slow start.

Overall, I think it's better to tolerate the minor suboptimality of having servers RST_STREAM streams if they don't want so much parallelism, rather than incentivize browsers to open more connections.



On Fri, Feb 22, 2013 at 2:19 PM, Yoav Nir <ynir@checkpoint.com<mailto:ynir@checkpoint.com>> wrote:

On Feb 22, 2013, at 6:16 PM, Martin Thomson <martin.thomson@gmail.com<mailto:martin.thomson@gmail.com>> wrote:

> On 22 February 2013 05:18, Roberto Peon <grmocg@gmail.com<mailto:grmocg@gmail.com>> wrote:
>> Why 1?
>
> 1 seems a little restrictive, especially since 6 concurrent
> connections is the current expectation in many browsers.
Defaulting to 1 allows for a simple server that never has to handle multiple concurrent streams, one that can be implemented with much fewer lines of code, but is still compliant. Great for serving software updates, large files, CRLs, etc. Not so great for web pages.

Other servers will quickly raise the limit via a SETTINGS frame.

Yoav