Re: [quicwg/base-drafts] suggest easier way of initiating graceful shutdown from the server-side (#3341)

Kazuho Oku <> Thu, 16 January 2020 02:49 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id BF53D120855 for <>; Wed, 15 Jan 2020 18:49:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -7.739
X-Spam-Status: No, score=-7.739 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, HTML_OBFUSCATE_05_10=0.26, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ytWnYRe5v9Qc for <>; Wed, 15 Jan 2020 18:49:40 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C03BD12002F for <>; Wed, 15 Jan 2020 18:49:40 -0800 (PST)
Date: Wed, 15 Jan 2020 18:49:40 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1579142980; bh=so2oW4DC9lcFn/ifeO4ktgaCO8PvQf4H4y8BU/fzVK0=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=OZNtuO2dGV0dNTCSL/+kaaKBPTfkCt1oMnbIekuIbiNK0tIgEkuMgGsTqff/F5Z+Y X5q7LdmqK+2SCrsYXj//wxtqtnqN+wJy7YKEmUk7Pa4oauI5EjXGPmgUD7qeiatPVH NLLvtcGxo9c2yqjt8fOlJ8o+HjRZYvjMVCdC7vzs=
From: Kazuho Oku <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/issues/3341/>
In-Reply-To: <quicwg/base-drafts/issues/>
References: <quicwg/base-drafts/issues/>
Subject: Re: [quicwg/base-drafts] suggest easier way of initiating graceful shutdown from the server-side (#3341)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e1fcf442557a_2ad93f9b074cd95c47280"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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, 16 Jan 2020 02:49:43 -0000

In, @martinthomson points out that we can drop the recommendation to stop sending MAX_STREAMS once the server sends the first GOAWAY.

Reading his comment, I now think that it might be better simply stop recommending the server sending GOAWAY with last Stream ID set to the current maximum, and instead recommend sending 2<sup>62</sup> - 4 (the theoretical maximum). Even if such a change makes this issue a design issue.

Let me explain why.

Quoting from [section 5.2](, the status quo is:
> A server that is attempting to gracefully shut down a connection SHOULD send an initial GOAWAY frame with the last Stream ID set to the maximum value allowed by QUIC's MAX_STREAMS and SHOULD NOT increase the MAX_STREAMS limit thereafter.

People might (or would) read that the second SHOULD is merely a recommendation, and consider that just send GOAWAY with last Stream ID set to the current maximum is okay.

The reality is that it is not. This is because there is no guarantee that the GOAWAY frame reaches the client before a MAX_STREAMS frame that the QUIC stack might generate reaches the client.

Therefore, if the server is to send a GOAWAY frame with last Stream ID set to the current maximum, it MUST stop sending MAX_STREAMS that grant additional concurrency credit.

However, as @martinthomson points out, such requirement is not necessary in terms of gracefully shutting down the connection. Just sending GOAWAY with last Stream ID set to 2<sup>62</sup>-4 is sufficient.

Considering that, I think just recommending 2<sup>62</sup>-4 is the best way forward.

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