Re: Proposal: New Frame Size Text (was: Re: Design Issue: Frame Size Items)
James M Snell <jasnell@gmail.com> Fri, 10 May 2013 17:09 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 10B1F21F8D7A for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 10 May 2013 10:09:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.422
X-Spam-Level:
X-Spam-Status: No, score=-10.422 tagged_above=-999 required=5 tests=[AWL=-0.123, BAYES_00=-2.599, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t6C5uB4Jebh9 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 10 May 2013 10:09:23 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 997BC21F8972 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 10 May 2013 10:09:23 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UaqoC-00075J-A6 for ietf-http-wg-dist@listhub.w3.org; Fri, 10 May 2013 17:08:40 +0000
Resent-Date: Fri, 10 May 2013 17:08:40 +0000
Resent-Message-Id: <E1UaqoC-00075J-A6@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1Uaqo1-00074Z-To for ietf-http-wg@listhub.w3.org; Fri, 10 May 2013 17:08:29 +0000
Received: from mail-oa0-f41.google.com ([209.85.219.41]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1Uaqo0-0003o7-O7 for ietf-http-wg@w3.org; Fri, 10 May 2013 17:08:29 +0000
Received: by mail-oa0-f41.google.com with SMTP id n9so926876oag.0 for <ietf-http-wg@w3.org>; Fri, 10 May 2013 10:08:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=t5sIqVAP/q27kQj9dq3j7kA5ltx3fIVP0ycPUfWMorU=; b=0EmkCp7najdwyU15SiPf4MohxQnM2SQTFkPKrV3NtZlR/iN5hYmE2WHLHEIvOLpxmF vSAkJgrhL6EDU3TusdKNur3olUAYMzwBjpcKsmIY0sJn/n09KPlOIgwD82QLTRqb859S jEXPXwmW6sSJCDUe8H3SfuQa66RCB4rQ85cIhy/DUB+uMYS1AGOkSAC/rTUIRU38yqIX F3h/8SZXLOCCfSO8bRUiK86vxjuh8Xx13Op+vZnFpq3D9DEO3ma5Vw3yAQFbE//LcBp9 NtTw9NKn608HDx6+U7TYb9WoSldB5zyiB8FqPgR/sF/nbszPWqWs5OJa87zos7oAhHL8 W7CQ==
X-Received: by 10.60.55.231 with SMTP id v7mr7301423oep.135.1368205682824; Fri, 10 May 2013 10:08:02 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.60.3.137 with HTTP; Fri, 10 May 2013 10:07:42 -0700 (PDT)
In-Reply-To: <CABP7RbdqnH0JK-UaMiaR5rLvZo8txywEcXXSUXa_y95hrLC5yA@mail.gmail.com>
References: <CABP7RbcfTjN5QFFuGm-P-rQMpAR3FGSC58WCy3qKn+29YCjn+w@mail.gmail.com> <CAA4WUYiwNSzvrY1LF_Sex_82TSDwMbTvYqo7LyKfBAOu0j4pfQ@mail.gmail.com> <CABP7RbdqnH0JK-UaMiaR5rLvZo8txywEcXXSUXa_y95hrLC5yA@mail.gmail.com>
From: James M Snell <jasnell@gmail.com>
Date: Fri, 10 May 2013 10:07:42 -0700
Message-ID: <CABP7Rbd-VfTFYurZ-JEKjHKOeKvZCKoYLGMXf+0mi-_wbdKYqA@mail.gmail.com>
To: "William Chan (陈智昌)" <willchan@chromium.org>
Cc: Poul-Henning Kamp <phk@phk.freebsd.dk>, Martin Thomson <martin.thomson@gmail.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>, Roberto Peon <grmocg@gmail.com>, Hasan Khalil <hkhalil@google.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=209.85.219.41; envelope-from=jasnell@gmail.com; helo=mail-oa0-f41.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.702, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1Uaqo0-0003o7-O7 bd20960242ed33d7006be0c61bf89590
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Proposal: New Frame Size Text (was: Re: Design Issue: Frame Size Items)
Archived-At: <http://www.w3.org/mid/CABP7Rbd-VfTFYurZ-JEKjHKOeKvZCKoYLGMXf+0mi-_wbdKYqA@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17915
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>
This is now pull request #92: https://github.com/http2/http2-spec/pull/92 On Thu, May 9, 2013 at 2:20 PM, James M Snell <jasnell@gmail.com> wrote: > On Thu, May 9, 2013 at 2:01 PM, William Chan (陈智昌) > <willchan@chromium.org> wrote: >> I discussed this with Roberto and Hasan. Here are some thoughts on including >> header blocks within flow control: >> > > Note that my proposal does not explicitly state that the header blocks > would be put covered by flow control, only that the current window > size be used to limit the maximum allowed size of those frames. > Whether or not headers count towards the flow control limits is a > separate (but definitely related) question... with that in mind, some > responses below... > >> * In the proposed text, it appears that only the compressed header block is >> counting towards the window. Is that really what's desirable in order to >> properly control memory? Processing the header block requires decompressing >> it, and that's what will be kept in memory buffers until drained by the >> sink. > > Yes, I think it is desirable. The memory management for the > decompressor state is separate from the notion of how much data the > receiver is willing to accept over the network. It's likely, for > instance, that the data in a DATA frame could be compressed as well. > It would not really make sense to count the decompressed bytes there > towards the flow control limits. > >> * One problem with having headers count toward the per-stream flow control >> window is that, in non-HTTP semantic layering, the header metadata could be >> used as a control channel for the stream. Similar to how it would be >> unfortunate to block connection control frames with the session flow control >> window, it might also be unfortunate to block stream header/control frames >> on the per-stream flow control window. > > Agreed. That said, however, because header blocks contain user > provided data, not including these in flow control opens the distinct > likelihood for abuse. For instance, if an application is not able to > get it's data passed through in DATA frames because of flow control > issues, they could simply bypass flow control by packaging the data up > into headers frames. Whether that's a realistic risk or not, I don't > know, but I've learned to never underestimate the ingenuity of > developers who are motivated enough to work around MUST and SHOULD > level requirements. :-) > > - James > >> * As previously noted in other threads, it's unfortunate that stream headers >> aren't counted toward any flow control windows, since that means we may have >> to use the last-resort option to prevent further memory consumption - stop >> calling read(). >> >> >> On Wed, May 8, 2013 at 9:12 PM, James M Snell <jasnell@gmail.com> wrote: >>> >>> Suggested replacement text for the current "Frame Size" discussion in >>> the spec... >>> >>> ... >>> While the flow control protocol and framing mechanisms defined by >>> this specification are largely independent of one another, the flow >>> control WINDOW_SIZE places an upper limit on the total amount of data >>> an endpoint can send to a peer at any given time. DATA, HEADERS, >>> HEADERS+PRIORITY and PUSH_PROMISE frame sizes MUST NOT exceed the >>> current WINDOW_SIZE for the stream or connection and MUST NOT be >>> greater than 65,535 bytes. The 8 bytes of the frame header are not >>> counted toward this limit. >>> >>> When a new connection is established, both endpoints are permitted >>> to begin sending frames prior to the establishment of an initial flow >>> control WINDOW_SIZE. Accordingly, there is a risk that an endpoint >>> might initially send frames that are too large for the peer to handle. >>> To mitigate this risk, it is RECOMMENDED that, until the initial >>> WINDOW_SIZE is established, the total size of individual >>> header-bearing frames not exceed the current TCP Maximum Segment Size >>> (MSS) and that individual DATA frames are no larger than 4096 bytes. >>> The 8-byte frame header is included in these limits. >>> >>> If an endpoint is unable to process a frame due to its size and the >>> frame specifies any stream identifier field value other than 0x0, the >>> endpoint MUST respond with a <xref target="StreamErrorHandler">stream >>> error</xref> using the FRAME_TOO_LARGE error code. If the stream >>> identifier field value is 0x0, the endpoint MUST send a <xref >>> target="ConnectionErrorHandler">connection error</xref> using the >>> FRAME_TOO_LARGE error code. >>> ... >>> >>> - James >>> >>> >>> >>> On Wed, May 8, 2013 at 1:56 PM, Poul-Henning Kamp <phk@phk.freebsd.dk> >>> wrote: >>> > In message >>> > <CABP7Rbc8rs4-ktyGKwVxVC4MztcvYtARqBDoyEBYujfcpo4YDw@mail.gmail.com> >>> > , James M Snell writes: >>> > >>> >>Going back through this, here's a counter proposal: >>> >> >>> >>Let's get rid of the 8192 frame size rule and simply say that the >>> >>maximum size for all DATA, HEADERS, HEADERS+PRIORITY and PUSH_PROMISE >>> >>frames is either 65,535 or the current flow control WINDOW_SIZE, >>> >>whichever is less. >>> > >>> > Hmm, *now* you're talking... >>> > >>> > I like it. >>> > >>> > -- >>> > Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 >>> > phk@FreeBSD.ORG | TCP/IP since RFC 956 >>> > FreeBSD committer | BSD since 4.3-tahoe >>> > Never attribute to malice what can adequately be explained by >>> > incompetence. >> >>
- Proposal: New Frame Size Text (was: Re: Design Is… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… Roberto Peon
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… Martin Thomson
- Re: Proposal: New Frame Size Text (was: Re: Desig… Martin Thomson
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… Martin Thomson
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… Poul-Henning Kamp
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… Roberto Peon
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… Roberto Peon
- Re: Proposal: New Frame Size Text (was: Re: Desig… Poul-Henning Kamp
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text Martin J. Dürst
- Re: Proposal: New Frame Size Text (was: Re: Desig… Roberto Peon
- Re: Proposal: New Frame Size Text (was: Re: Desig… Martin Thomson
- Re: Proposal: New Frame Size Text (was: Re: Desig… Roberto Peon
- Re: Proposal: New Frame Size Text Poul-Henning Kamp
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… Ben Niven-Jenkins
- Re: Proposal: New Frame Size Text (was: Re: Desig… Poul-Henning Kamp
- Re: Proposal: New Frame Size Text (was: Re: Desig… William Chan (陈智昌)
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… Poul-Henning Kamp
- Re: Proposal: New Frame Size Text (was: Re: Desig… Martin Thomson
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… James M Snell
- Re: Proposal: New Frame Size Text (was: Re: Desig… Patrick McManus