Subject: [quicwg/base-drafts] Remove stream reservation (#280)

From: Martin Thomson <[email-masked]>
Date: Thu, 09 Feb 2017 19:12:50 -0800

This PR is based on the outcome of the discussion in #174.  The observation there is that using stream X implicitly opens stream X-2; since all streams are opened in sequence, it must just be that the packets that mention stream X-2 got delayed or lost somehow.

Once you accept that, it's also reasonable to allow a different order of stream creation (the point at which numbers are allocated) and stream *use* (when you send packets on a stream).  This neatly addresses the issue whereby server push can promise use of streams, but not use them in the order in which they were promised.

There's a catch here, and it's not one that was introduced by this change, if a server promises more streams than the client permits in its concurrent streams limit, the server cannot use streams beyond the limit.  I'll open a bug on that.

Closes #182 - that removed only a few of the application actions.  This removes all of them.
Closes #174.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/280

-- Commit Summary --

  * We don't need no reservations

-- File Changes --

    M draft-ietf-quic-http.md (6)
    M draft-ietf-quic-transport.md (103)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/280.patch
https://github.com/quicwg/base-drafts/pull/280.diff

-- 
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/280

---

From: Mike Bishop <[email-masked]>
Date: Mon, 13 Feb 2017 16:19:27 -0800

LGTM.

-- 
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/280#issuecomment-279567067

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 18:54:37 -0800

janaiyengar commented on this pull request.

A few small comments

> -       FIN: FIN flag in a STREAM frame
-       RST: RST_STREAM frame
-
-       app: application API signals to QUIC
-       reserve_stream: causes a StreamID to be reserved for later use
-       read_close: causes stream to be half-closed without a FIN
-       write_close: causes stream to be half-closed without a FIN
+                            +--------+
+                            |        |
+                            |  idle  |
+                            |        |
+                            +--------+
+                                 |
+                                 | send data/
+                                 | recv data/
+                                 | recv higher stream

What does "recv higher stream" mean?

> @@ -1575,20 +1570,15 @@ Sending or receiving a STREAM frame causes the stream to become "open".  The
 stream identifier is selected as described in {{stream-identifiers}}.  The same
 STREAM frame can also cause a stream to immediately become "half-closed".
 
-An application can reserve an idle stream for later use.  The stream state for
-the reserved stream transitions to "reserved".
+Receiving a STREAM frame on a peer-initiated stream (that is, a packet sent by a
+server on an even-numbered stream or a client packet on an odd-numbered stream)
+also causes all idle streams with lower numbers to become "open".  This could

This isn't accurate, since it's only odd/even streams that are marked open. How about '... also causes all lower-numbered idle streams in the same direction to become "open".' ?

> @@ -1697,9 +1687,10 @@ new stream.
 StreamID 1 (0x1) is reserved for the crypto handshake.  StreamID 1 MUST NOT be
 used for application data, and MUST be the first client-initiated stream.
 
-Streams MUST be created or reserved in sequential order, but MAY be used in
-arbitrary order.  A QUIC endpoint MUST NOT reuse a StreamID on a given
-connection.
+A QUIC endpoint cannot reuse a StreamID on a given connection.  Streams MUST be
+created in sequential order.  Open streams can be used in any order.  Streams
+that are used out of order result in lower-numbered streams being counted as

"lower-numbered streams in the same direction"

-- 
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/280#pullrequestreview-23388639

---

From: Martin Thomson <[email-masked]>
Date: Wed, 22 Feb 2017 18:56:35 -0800

martinthomson commented on this pull request.

-       RST: RST_STREAM frame
-

See below.

-- 
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/280#discussion_r102629451

---

From: Martin Thomson <[email-masked]>
Date: Wed, 22 Feb 2017 18:57:46 -0800

Yep, better.  This odds and evens thing is a real drag.

-- 
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/280#discussion_r102629579

---

From: Martin Thomson <[email-masked]>
Date: Wed, 22 Feb 2017 18:58:36 -0800

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/280#issuecomment-281878419

---

From: Martin Thomson <[email-masked]>
Date: Wed, 22 Feb 2017 18:58:37 -0800

@martinthomson pushed 1 commit.

bddbc4a  Lower-numbered streams need to be in the same direction

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/280/files/b098fb89faaf4891c2e8236a7437fcbeab675f77..bddbc4a3914c0460b1c0a3aa63671e7815daa10b

---

From: Martin Thomson <[email-masked]>
Date: Wed, 22 Feb 2017 19:36:45 -0800

-       RST: RST_STREAM frame
-

Just to be a little clearer, this is a shorthand for "receive a STREAM frame on a peer-initiated stream with a higher number, given that this is also a peer-initiated stream".

-- 
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/280#discussion_r102633504

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 22:49:59 -0800

janaiyengar approved this pull request.

-- 
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/280#pullrequestreview-23408448

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 22:50:08 -0800

Merged #280.

-- 
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/280#event-973872489