http2 draft feedback on flow control

Patrick McManus <> Wed, 22 May 2013 19:35 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 9992D21F8D69 for <>; Wed, 22 May 2013 12:35:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.671
X-Spam-Status: No, score=-9.671 tagged_above=-999 required=5 tests=[AWL=0.305, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id o+nuncI6Lul1 for <>; Wed, 22 May 2013 12:34:56 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id B87CA21F9193 for <>; Wed, 22 May 2013 12:34:53 -0700 (PDT)
Received: from lists by with local (Exim 4.72) (envelope-from <>) id 1UfEmM-00060N-T3 for; Wed, 22 May 2013 19:32:54 +0000
Resent-Date: Wed, 22 May 2013 19:32:54 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtp (Exim 4.72) (envelope-from <>) id 1UfEm4-0005zW-8R for; Wed, 22 May 2013 19:32:36 +0000
Received: from ([]) by with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <>) id 1UfElz-0006ku-6Y for; Wed, 22 May 2013 19:32:36 +0000
Received: by with SMTP id dn14so2858246obc.40 for <>; Wed, 22 May 2013 12:32:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=2zyaKsd2QuXJ/rFUPSjBDzRvonhncfGfddP+1IAEDhA=; b=iDiKYxWE5PBkrkys8VAYIuhC3hLnT++88yz0qrPb+h2YP4dLZPIiI9wxQDi3j+/Yht nVp0+Ve7+ypOojtrCthiKhRV4cwoffjAbjfziF+w1fe+MzJeUTJENDVzmMdfUNdYY9FB 1WqGktGL8E+0dFnK+pvNDsowV2BybWBt+xD/CWgsgq/mkOE4M0dVq4fPD9sDX/T2FJTC LpIvC5GXRsTGaAmd/kl1+WCa9dNDwqjeBIJwe9KG2VuIwoHNpI3p+i1S785hu8WpaYBN VnoqdH7JiiKpvm0hqYTj1P6bmkyq/WMdNXnNVbl1LI4qxyXy18OLPgajH0QjBAw3qAZI arPw==
MIME-Version: 1.0
X-Received: by with SMTP id tz3mr6159401obc.23.1369251125221; Wed, 22 May 2013 12:32:05 -0700 (PDT)
Received: by with HTTP; Wed, 22 May 2013 12:32:05 -0700 (PDT)
Date: Wed, 22 May 2013 15:32:05 -0400
X-Google-Sender-Auth: W1gooTU0ZkVEDgNMfF3XVxEsmNs
Message-ID: <>
From: Patrick McManus <>
To: HTTP Working Group <>
Content-Type: multipart/alternative; boundary=001a11c2029aed6b1404dd539ef0
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-3.3
X-W3C-Hub-Spam-Report: AWL=-2.645, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: 1UfElz-0006ku-6Y 4aea51d6caa57b9aca782b1a9d010306
Subject: http2 draft feedback on flow control
Archived-At: <>
X-Mailing-List: <> archive/latest/18085
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>


While reading the flow control text again there was some ambiguity in my
mind about whether or not the SETTINGS_INITIAL_WINDOW_SIZE adjusted the
connection window or just all current and future stream windows. I've
decided the text is really going for "just stream windows - connection
windows are only adjusted by WINDOW_UPDATE with stream=0" (an
interpretation I favor)..

I think it would be nice if it said that explicitly to clear up confusion.
There are some PoC implementations of this floating around out on them thar
Internets (admittedly they may predate the current spec language) and I've
seen different interpretations of what is logical.. so it makes sense to be

A couple related followup tweaks to the text:


* *

*"When a HTTP/2.0 connection is first established, new streams are created
with an initial flow control window size of 65535 bytes. The connection
flow control window is 65536 bytes. Both endpoints can adjust the initial
window size for new streams by including a value for
SETTINGS_INITIAL_WINDOW_SIZE in the SETTINGS frame that forms part of the
connection header. *"

I suggest s/in the SETTINGS frame that forms part of the connection
header/with a SETTINGS frame/ .. The section is titled "Initial Flow
Control Window Size" so the existing text could be ok if we mean initial to
be at connection establishment time, but I think it more clearly applies to
the life cycle of each stream (at least when talking about stream windows).



*When the value of SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST
adjust the size of all flow control windows that it maintains by the
difference between the new value and the old value. *

uh-Oh.. "all flow control windows that it maintains" definitely includes
the connection window :( I suggest s/flow control windows/stream flow
control windows/