Subject: [quicwg/base-drafts] Remove mandatory in-order delivery (#1070)

From: Martin Thomson <[email-masked]>
Date: Thu, 25 Jan 2018 02:52:03 +0000 (UTC)

Pursuant to what seemed to be the agreement in Melbourne, this makes it
possible for an endpoint to deliver bytes out of order.  To @ianswett's
request, it also makes it mandatory for endpoints to provide the ability
to deliver in order.

Closes #252, #257.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Remove mandatory in-order delivery

-- File Changes --

    M draft-ietf-quic-transport.md (27)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/1070.patch
https://github.com/quicwg/base-drafts/pull/1070.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/1070

---

From: ianswett <[email-masked]>
Date: Wed, 24 Jan 2018 19:02:42 -0800

ianswett commented on this pull request.

Thanks Martin, looking good.

> @@ -2860,9 +2860,10 @@ between streams that are initiated by the client and server (see {{stream-id}}).
 Either type of stream can be created by either endpoint, can concurrently send
 data interleaved with other streams, and can be cancelled.
 
-Data that is received on a stream is delivered in order within that stream, but
-there is no particular delivery order across streams.  Transmit ordering among
-streams is left to the implementation.
+Stream offsets allow for the octets on a stream to be placed in order.  An
+endpoint MUST be capable of delivering data received on a stream in order.
+Implementations MAY choose to offer the ability to deliver data out of order.
+There is means of ensuring ordering between octets on different streams.

I'm not clear on this sentence.

> @@ -3099,10 +3100,10 @@ stream and is providing flow control credit.  A MAX_STREAM_DATA frame might
 arrive before a STREAM or STREAM_BLOCKED frame if packets are lost or reordered.
 
 In the "Recv" state, the endpoint receives STREAM and STREAM_BLOCKED frames.
-Incoming data is buffered and reassembled into the correct order for delivery to
-the application.  As data is consumed by the application and buffer space
-becomes available, the endpoint sends MAX_STREAM_DATA frames to allow the peer
-to send more data.
+Incoming data is buffered and can be reassembled into the correct order for

I'd argue it's always reassembled, even if we deliver out of order, so I'd keep this as is, but I can see it both ways.

-- 
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/1070#pullrequestreview-91400159

---

From: Mike Bishop <[email-masked]>
Date: Thu, 25 Jan 2018 03:03:02 +0000 (UTC)

MikeBishop approved this pull request.

Yep.

"There is means"?  Is this supposed to be "There is no means"?

-- 
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/1070#pullrequestreview-91401352

---

From: jpinner-lyft <[email-masked]>
Date: Thu, 25 Jan 2018 03:25:15 +0000 (UTC)

jpinner-lyft commented on this pull request.

> @@ -3266,7 +3267,7 @@ sender or during delivery to the application at the receiver.
 
 When new data is to be sent on a stream, a sender MUST set the encapsulating
 STREAM frame's offset field to the stream offset of the first byte of this new
-data.  The first byte of data that is sent on a stream has the stream offset 0.
+data.  The first byte of data that is sent on a stream has an offset of 0.

I think this should read `The first byte of data on a stream has an offset of 0.`

What you send first depends on what your receive and if you're a proxy you don't want to have to necessarily buffer data until you receive offset 0 just to forward it.

-- 
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/1070#pullrequestreview-91404004

---

From: Martin Thomson <[email-masked]>
Date: Wed, 24 Jan 2018 20:13:43 -0800

@martinthomson pushed 1 commit.

dc9774a  Review tweaks

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

---

From: ianswett <[email-masked]>
Date: Thu, 25 Jan 2018 04:14:54 +0000 (UTC)

ianswett 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/1070#pullrequestreview-91408970

---

From: Martin Thomson <[email-masked]>
Date: Mon, 29 Jan 2018 19:16:27 -0800

Merged #1070.

-- 
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/1070#event-1447714596