Re: [quicwg/base-drafts] Boolean blocked streams setting (#3073)

afrind <> Thu, 03 October 2019 16:08 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 543B8120129 for <>; Thu, 3 Oct 2019 09:08:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -7.898
X-Spam-Status: No, score=-7.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_IMAGE_ONLY_32=0.001, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id deyeMfC3yoWh for <>; Thu, 3 Oct 2019 09:08:39 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id D280A1200DF for <>; Thu, 3 Oct 2019 09:08:38 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 3B0339609DE for <>; Thu, 3 Oct 2019 09:08:38 -0700 (PDT)
Date: Thu, 03 Oct 2019 09:08:38 -0700
From: afrind <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/issues/3073/>
In-Reply-To: <quicwg/base-drafts/issues/>
References: <quicwg/base-drafts/issues/>
Subject: Re: [quicwg/base-drafts] Boolean blocked streams setting (#3073)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d961d062c4ce_2b9d3faff62cd9642334f9"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: afrind
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 03 Oct 2019 16:08:40 -0000

I didn't find the numeric setting significantly more complicated to implement than a boolean setting.  The [diff]( that converted it from a boolean to a number touched about 25 lines of code in the encoder.  I find that the bigger complexity comes from having the implementation allow both blocking and non-blocking.

proxygen uses the count, which is incremented when sending a header block with a potentially blocking reference and decremented on acks and cancellations.  I don't decrement the count on Insert Count Increment, and I count multiple potentially blocking blocks on the same stream individually.  Both of these make the implementation more conservative than necessary, but the code is pretty simple.

As for a use case, lately I've been working with our RPC over HTTP stack, which generally sets the stream limit in the 100k range.  There's more of a case to be made for keeping the QPACK blocking limit lower than the stream limit when you've got a bonkers stream limit.  When the stream limit is 100 or something else webish, 10 vs. 50 vs 100 doesn't seem super meaningful.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: