Re: [quicwg/base-drafts] Define stream limits as counts (#1906)

Mike Bishop <notifications@github.com> Mon, 29 October 2018 17:53 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3D985131023 for <quic-issues@ietfa.amsl.com>; Mon, 29 Oct 2018 10:53:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.47
X-Spam-Level:
X-Spam-Status: No, score=-3.47 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Je3B0dk2Nzc5 for <quic-issues@ietfa.amsl.com>; Mon, 29 Oct 2018 10:53:54 -0700 (PDT)
Received: from o9.sgmail.github.com (o9.sgmail.github.com [167.89.101.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5775D124D68 for <quic-issues@ietf.org>; Mon, 29 Oct 2018 10:53:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=E2pDfOpztsE2Zn5bdJMmX3qAJLc=; b=CpGX5jQedY6U1bCS RcjamrUgUEp1jcGZP6RrA/Gq32C/dvsQy8tTXquzj6HAVAGTGQtUM0Lc8/3t6BrI 7hWDzkEC9BxdYxGzlMo9k4HCowt5rgVpzfDxCVZg/4rFMo4Yul8YCjBRseT6cDkG VU2rgmTom4FMAv43tBvbCmvdEkw=
Received: by filter1726p1mdw1.sendgrid.net with SMTP id filter1726p1mdw1-14070-5BD748FB-45 2018-10-29 17:52:59.991480504 +0000 UTC m=+243045.060527981
Received: from github-lowworker-f6df7df.cp1-iad.github.net (unknown [192.30.252.41]) by ismtpd0003p1iad2.sendgrid.net (SG) with ESMTP id yoP6d4k2QqSDyZoF2y3ISg for <quic-issues@ietf.org>; Mon, 29 Oct 2018 17:52:59.939 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-f6df7df.cp1-iad.github.net (Postfix) with ESMTP id DB2E13E02DF for <quic-issues@ietf.org>; Mon, 29 Oct 2018 10:52:59 -0700 (PDT)
Date: Mon, 29 Oct 2018 17:53:00 +0000
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab9a67dbee74a341202a3a0593a0aaa5fea893114d92cf0000000117ef0afb92a169ce1646c612@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1906/review/169428100@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1906@github.com>
References: <quicwg/base-drafts/pull/1906@github.com>
Subject: Re: [quicwg/base-drafts] Define stream limits as counts (#1906)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5bd748fbd8992_141c3fc6fced45c41105224"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak21D8mlgv9RC4wBthY1weyB6KVpEEaL5WPJ5L +UlCOVoAKhIJ/VwY491iqLScmekJHikd5+PnUbOONPoiryWzGX/m0lbFA23JZF+xKsOuCqKOP18min C/ka3B8KPoOoKu2rKPhFoxpW/JGbcthtSzr5cXoarv31+Jy8VKmO3P61wXEw6x4QHoWapvoOP28nHb k=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/r8l0KdVh_ndtGpXWH2W0Ao49X2Q>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 29 Oct 2018 17:53:57 -0000

MikeBishop approved this pull request.



> @@ -317,23 +317,23 @@ lower-numbered streams of the same type in the same direction.
 
 QUIC allows for an arbitrary number of streams to operate concurrently.  An
 endpoint limits the number of concurrently active incoming streams by limiting
-the maximum stream ID (see {{stream-limit-increment}}).
+the number of streams (see {{stream-limit-increment}}).

...of each type.

>  
-The maximum stream ID is specific to each endpoint and applies only to the peer
-that receives the setting. That is, clients specify the maximum stream ID the
-server can initiate, and servers specify the maximum stream ID the client can
+The stream limit is specific to each endpoint and applies only to the peer that
+receives the setting. That is, the client limits the number of streams the
+server can initiate, and the server limits the number of streams the client can

Probably want to mention "of each type" in this paragraph as well.

>  initiate.  Each endpoint may respond on streams initiated by the other peer,
 regardless of whether it is permitted to initiate new streams.
 
 Endpoints MUST NOT exceed the limit set by their peer.  An endpoint that
 receives a STREAM frame with an ID greater than the limit it has sent MUST treat
-this as a stream error of type STREAM_ID_ERROR ({{error-handling}}), unless this
-is a result of a change in the initial limits (see {{zerortt-parameters}}).
+this as a stream error of type STREAM_LIMIT_ERROR ({{error-handling}}), unless
+this is a result of a change in the initial limits (see {{zerortt-parameters}}).

Existing text, but....  We don't allow reductions in TPs after accepting 0-RTT, so how would it be the result of a change in the initial limits?

>  
-The STREAM_ID_BLOCKED frame ({{frame-stream-id-blocked}}) can be
-used to signal a shortage of available streams. Implementations will likely
-want to increase the maximum stream ID as peer-initiated streams close.
+The STREAMS_BLOCKED frame ({{frame-streams-blocked}}) signals that a new stream

Ugh.  So we now have STREAM_BLOCKED and STREAMS_BLOCKED?  No one is *ever* going to get those backward, no....

>  
-The STREAM_ID_BLOCKED frame ({{frame-stream-id-blocked}}) can be
-used to signal a shortage of available streams. Implementations will likely
-want to increase the maximum stream ID as peer-initiated streams close.

And since I see the text above, you've presumably done this.

>  
-The MAX_STREAM_ID frame (type=0x06) informs the peer of the maximum stream ID
-that they are permitted to open.
+The MAX_STREAMS frame (type=0x1c and 0x1d) informs the peer of the number of
+streams it is permitted to open.  A MAX_STREAMS frame with a type of 0x1c
+applies to bidirectional streams; a MAX_STREAMS frame with a type of 0x1d
+applies to unidirectional streams.

Would it be clearer to frame this as a flag?

> @@ -4247,11 +4247,11 @@ Loss or reordering can mean that a MAX_STREAMS frame can be received which
 states a lower stream limit than the client has previously received.
 MAX_STREAMS frames which do not increase the stream limit MUST be ignored.
 
-A peer MUST NOT initiate a stream with a higher stream ID than the largest limit
-it has received permits.  For instance, a server that receives a unidirectional
-stream limit of 3 is permitted to open stream 3, 7, and 11, but not stream 15.
-An endpoint MUST terminate a connection with a STREAM_LIMIT_ERROR error if a
-peer opens more streams than was permitted.
+A peer MUST NOT open more streams than the limit it received permits.  For

Yes, a correct albeit awkward one.  Perhaps "A peer MUST NOT open more streams than permitted by the current stream limit."?

> @@ -4341,36 +4334,40 @@ Stream ID:
 
 : A variable-length integer indicating the stream which is flow control blocked.
 
-Offset:
+Data Limit:
 
 : A variable-length integer indicating the offset of the stream at which the

Should we also use the term "stream-level limit" here?

>  
-A sender SHOULD send a STREAM_ID_BLOCKED frame (type=0x0a) when it wishes to
-open a stream, but is unable to due to the maximum stream ID limit set by its
-peer (see {{frame-max-stream-id}}).  This does not open the stream, but informs
-the peer that a new stream was needed, but the stream limit prevented the
-creation of the stream.
+A sender SHOULD send a STREAMS_BLOCKED frame (type=0x1e or 0x1f) when it wishes
+to open a stream, but is unable to due to the maximum stream ID limit set by its

s/ID//

>  
-A sender SHOULD send a STREAM_ID_BLOCKED frame (type=0x0a) when it wishes to
-open a stream, but is unable to due to the maximum stream ID limit set by its
-peer (see {{frame-max-stream-id}}).  This does not open the stream, but informs
-the peer that a new stream was needed, but the stream limit prevented the
-creation of the stream.
+A sender SHOULD send a STREAMS_BLOCKED frame (type=0x1e or 0x1f) when it wishes
+to open a stream, but is unable to due to the maximum stream ID limit set by its
+peer (see {{frame-max-streams}}).  A STREAMS_BLOCKED frame of type 0x1e is used
+to indicate reaching the bidirectional stream limit; a STREAMS_BLOCKED frame of
+type 0x1f indicates reaching the unidirectional stream limit.

Again, flag might be cleaner.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/1906#pullrequestreview-169428100