Subject: Re: [quicwg/base-drafts] Mandate allowing peer to create enough unidirectional streams for HTTP and QPACK (#2762)

From: Kazuho Oku <[email-masked]>
Date: Sun, 02 Jun 2019 22:31:05 -0700

kazuho commented on this pull request.

> @@ -912,10 +912,20 @@ Endpoints that set low values for the QUIC transport parameters
 chance that the remote peer reaches the limit early and becomes blocked. In
 particular, the value chosen for `initial_max_uni_streams` should consider that
 remote peers may wish to exercise reserved stream behaviour ({{stream-grease}}).
-To reduce the likelihood of blocking, both clients and servers SHOULD send a
-value of three or greater for the QUIC transport parameter
-`initial_max_uni_streams`, and a value of 1,024 or greater for the QUIC
-transport parameter `initial_max_stream_data_uni`.
+To reduce the likelihood of blocking, both clients and servers MUST allow
+the peer to create one unidirectional stream for the HTTP control stream plus

Maybe it would be better to state "create _at least_", to avoid the confusion that the endpoints are expected to allow creation *exactly* three streams.

> @@ -912,10 +912,20 @@ Endpoints that set low values for the QUIC transport parameters
 chance that the remote peer reaches the limit early and becomes blocked. In
 particular, the value chosen for `initial_max_uni_streams` should consider that
 remote peers may wish to exercise reserved stream behaviour ({{stream-grease}}).
-To reduce the likelihood of blocking, both clients and servers SHOULD send a
-value of three or greater for the QUIC transport parameter
-`initial_max_uni_streams`, and a value of 1,024 or greater for the QUIC
-transport parameter `initial_max_stream_data_uni`.
+To reduce the likelihood of blocking, both clients and servers MUST allow

Maybe replacing "To reduce the likelihood of blocking" with "To avoid blocking" might make sense.

This is because there is in practice no chance of seeing the connection being blocked now that the text mandates endpoints allow the necessary number of streams to be open-able. The only case where blocking might still happen is when the peer might grease a unidirectional stream before creating the mandatory streams. But that causing blocking is unrelated to the provision of this paragraph.

-- 
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/2762#pullrequestreview-244684013

---

From: Mike Bishop <[email-masked]>
Date: Thu, 06 Jun 2019 11:17:23 -0700

MikeBishop approved this pull request.

There's one nit which implies a design question; once that's settled one way or another, I'm happy with this.

+the number of unidirectional streams required by mandatory extensions (such as
+QPACK), by setting an appropriate value for the QUIC transport parameter

This comma doesn't flow as-is.  I'd try one of the following:
- remove it ("...MUST allow ... by setting an appropriate value....")
- make it a lead-in to options ("...MUST allow [...], either by setting an appropriate value for [...] or by sending a MAX_STREAMS frame immediately after opening the connection.")
- split into a new sentence ("...MUST allow [...].  This can be done by setting....")

The implicit question in those options is whether omitting the TP and immediately sending a MAX_STREAMS frame is acceptable behavior.

-- 
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/2762#pullrequestreview-246735104

---

From: afrind <[email-masked]>
Date: Thu, 06 Jun 2019 12:43:53 -0700

afrind commented on this pull request.

I'd say you have to put it in the TP.  What is the possible reason an implementation would have for setting inital_max_uni_streams to less than 3 and making up for it with MAX_STREAMS?  What if the packet containing MAX_STREAMS is lost?

-- 
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/2762#discussion_r291342259

---

From: Lucas Pardue <[email-masked]>
Date: Thu, 06 Jun 2019 14:16:51 -0700

It's acceptable but not ideal.

Didnt we just remove a mandatory TP in some unrelated change?

-- 
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/2762#issuecomment-499670910

---

From: Alessandro Ghedini <[email-masked]>
Date: Fri, 07 Jun 2019 11:08:15 -0700

@ghedo pushed 1 commit.

3bb8f40008a8bf114291e5e87789a371d06c3403  More review comments

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/2762/files/bb7e09e3e1b5325ac167b6f3f19e6e10b0c23734..3bb8f40008a8bf114291e5e87789a371d06c3403

---

From: Alessandro Ghedini <[email-masked]>
Date: Fri, 07 Jun 2019 11:08:31 -0700

ghedo commented on this pull request.

Updated, thanks!

-- 
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/2762#discussion_r291698917

---

From: Alessandro Ghedini <[email-masked]>
Date: Fri, 07 Jun 2019 11:09:00 -0700

Also updated.

-- 
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/2762#discussion_r291699086

---

From: Alessandro Ghedini <[email-masked]>
Date: Fri, 07 Jun 2019 11:10:33 -0700

I went with option 1. I also agree that the TP is the best way. Also because the paragraph now starts with "To avoid blocking", and sending MAX_STREAMS is not a great way to avoid blocking.

-- 
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/2762#discussion_r291699561

---

From: Alessandro Ghedini <[email-masked]>
Date: Fri, 07 Jun 2019 11:13:57 -0700

Also rebased to fix conflict.

-- 
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/2762#issuecomment-499986439

---

From: Mike Bishop <[email-masked]>
Date: Fri, 07 Jun 2019 15:32:22 -0700

That is an exceptionally long sentence.  But I think the text is correct.

-- 
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/2762#issuecomment-500059493

---

From: Mike Bishop <[email-masked]>
Date: Wed, 12 Jun 2019 20:28:14 +0000 (UTC)

Merged #2762 into master.

-- 
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/2762#event-2408626519