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

William Chan (陈智昌) <willchan@chromium.org> Fri, 22 February 2013 23:58 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 1013C21E808E for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 22 Feb 2013 15:58:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.41
X-Spam-Level:
X-Spam-Status: No, score=-9.41 tagged_above=-999 required=5 tests=[AWL=0.266, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, MIME_8BIT_HEADER=0.3, 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 2FPvwRcaTAEw for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 22 Feb 2013 15:58:50 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id B1B6A21E8048 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 22 Feb 2013 15:58:50 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U92UM-0003EZ-7C for ietf-http-wg-dist@listhub.w3.org; Fri, 22 Feb 2013 23:57:14 +0000
Resent-Date: Fri, 22 Feb 2013 23:57:14 +0000
Resent-Message-Id: <E1U92UM-0003EZ-7C@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <willchan@google.com>) id 1U92U9-0003Cl-R2 for ietf-http-wg@listhub.w3.org; Fri, 22 Feb 2013 23:57:01 +0000
Received: from mail-oa0-f53.google.com ([209.85.219.53]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <willchan@google.com>) id 1U92U5-0003ok-3u for ietf-http-wg@w3.org; Fri, 22 Feb 2013 23:57:01 +0000
Received: by mail-oa0-f53.google.com with SMTP id m1so1128675oag.26 for <ietf-http-wg@w3.org>; Fri, 22 Feb 2013 15:56:30 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=AW/qZPmAHwmC9U0wQWSmMFBuU7jfHgBV8wr1ad7YsFE=; b=NZSBXfPNw36H1he0OWufYu6sr/3S8Pb3Oy3NGzI0RfTNjNy49KYCakQn0uby5ya/Yd 2SEu+CBYVKviDZvzkWfErFVqcm6UaeE72CwZ/8pi/0B5i0tSQVX5fUharDFOUo5HvCae 3p9SJM3MaXUa1desqQAUdQBpyhhb3cVXKp69zphctxYSOHHK7+Z439NfH4DgxlM4JjDu neCh9R6ZAPLBZGElU/0AuFSxTOHAvq2o8kdgPsBljuyUcLGx5eIjlr3BWqX3Xm854Jly lW91xFhk/33e//WV7CYznx0M8ngRwNJLziQIXFqcmt6zsEK9+Zp00O2QPliy4PPFoii2 z6/Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=AW/qZPmAHwmC9U0wQWSmMFBuU7jfHgBV8wr1ad7YsFE=; b=NuIJovuLf0NkCpZW6KLfFUSPYARntDGj15FVWOJqKACMo0CHlPhrtIuQRXcGTfNDzz tmNKKosEtjJ6RMLyUjm8gKvvuKEwu7ZhIdbhKgkbyzhbmhwKqyCbqWVgMUOnQ9dXLTuA IAa5xgljATFGFCzSS/HBxdVMNFwG6YL7XbwbY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=AW/qZPmAHwmC9U0wQWSmMFBuU7jfHgBV8wr1ad7YsFE=; b=NZHRqdYwT38g/nUV9i0cEiQbkrGf1WH+CfjW9pTgseqa7j6Y13+QRVPV6SuQQiLAFh +ql8NhifL3AnmuXfHqVcSiprFvppcjXHQlmh1BKDZo85zeeB8/ZqPnzcJR3B6PGimjlN lIly70RM/pCCNEeJklHxlNiGn4Fs686b5I13RfMLYOt0CDlT7lzuxDKcZvjyTmbr5aIg V0YqvzHbRXnGi5dKgBOxnX5HJh0gAfYWbs/QVTxI4jc8pml9x1b2/Cmi6TgLMTfwfPAF vfmmiIKIpFEZ2W6KJHPX303mNbN3rmM3TBKYhrlQeGdJIw0dQ5+Sxzyy6LroYeuo9WTE ueHQ==
MIME-Version: 1.0
X-Received: by 10.182.180.113 with SMTP id dn17mr1546241obc.5.1361577390769; Fri, 22 Feb 2013 15:56:30 -0800 (PST)
Sender: willchan@google.com
Received: by 10.182.186.6 with HTTP; Fri, 22 Feb 2013 15:56:30 -0800 (PST)
In-Reply-To: <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> <B33F11E188FEAB49A7FAF38BAB08A2C001D32B31@TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com>
Date: Fri, 22 Feb 2013 15:56:30 -0800
X-Google-Sender-Auth: 1EBJs4gXbzBLRFGh_BaM8HCGUbw
Message-ID: <CAA4WUYhTqzxLgrzoVGsKxbU=XqPgD=GexX0Mnq3m8HiZJSKBcw@mail.gmail.com>
From: "William Chan (陈智昌)" <willchan@chromium.org>
To: Osama Mazahir <OSAMAM@microsoft.com>
Cc: Yoav Nir <ynir@checkpoint.com>, Martin Thomson <martin.thomson@gmail.com>, Roberto Peon <grmocg@gmail.com>, "ietf-http-wg@w3.org Group" <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="f46d04182734b6058604d658f026"
X-Gm-Message-State: ALoCoQl1Zluihl272Abc3+x9aTy1vkVrAPkMSqFPOGYcKYA5CFhBUgwfelxfQs6Zr7okdg8B3VorihB5xKv3LzoUNf+nte1Qt08rf26dDTK20I3zsk/BxiDMlbiWelcgG7dOAl4AIZvHivRWD4Np+AK9bsHI6lyNQImlOeCW5f3OBFVGUNdmD6jUo0MD1+OI7G2Jznec/Hyu
Received-SPF: pass client-ip=209.85.219.53; envelope-from=willchan@google.com; helo=mail-oa0-f53.google.com
X-W3C-Hub-Spam-Status: No, score=-4.7
X-W3C-Hub-Spam-Report: AWL=-1.356, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.691, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1U92U5-0003ok-3u 0c1de43aac51709b0e7c8f0e32e45fd9
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/CAA4WUYhTqzxLgrzoVGsKxbU=XqPgD=GexX0Mnq3m8HiZJSKBcw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16782
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>

On Fri, Feb 22, 2013 at 3:45 PM, Osama Mazahir <OSAMAM@microsoft.com> wrote:

>  ** **
>
> 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.
>

Do you feel like the complexity is that bad? In my experience, from
implementing SPDY, it is not.


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

Isn't this easy? The client always has to track how many outstanding
streams it has in order to respect the limit.


> ****
>
> **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
>

Since RST_STREAM has an error code, this is easy to define.


> ****
>
> **3.       **Client will have to resubmit the request into its queue to
> be sent when the allowance opens up
>
Clients already have to know how to do this due to the GOAWAY race. They
also have to handle this in HTTP/1.X today. For example, if we get an error
when reusing a persistent HTTP connection (e.g. TCP RST), we will resend
the HTTP request over a new connection.

> ****
>
> **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
>

Again, clients already have to handle this.


> ****
>
> ** **
>
> 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.
>

As someone with experience implementing a SPDY client, I do not believe
this is a big burden. If you believe it is, I would like to hear why.


> ****
>
> ** **
>
> ** **
>
> *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.orgGroup
> *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> wrote:****
>
>
> On Feb 22, 2013, at 6:16 PM, Martin Thomson <martin.thomson@gmail.com>
> wrote:
>
> > On 22 February 2013 05:18, Roberto Peon <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****
>
>  ** **
>