Subject: [quicwg/base-drafts] 820dd8: Identify unidirectional streams by the 2nd bit in ...

From: Mike Bishop <[email-masked]>
Date: Sat, 11 Nov 2017 00:24:15 -0800

Branch: refs/heads/improve-goaway
  Home:   https://github.com/quicwg/base-drafts
  Commit: 820dd817c6842379c4cccd99c3d842097e6b1567
      https://github.com/quicwg/base-drafts/commit/820dd817c6842379c4cccd99c3d842097e6b1567
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-12 (Thu, 12 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Identify unidirectional streams by the 2nd bit in the stream ID

  Commit: 5eca32c8958efb02b936a00c759d50d9913c07b9
      https://github.com/quicwg/base-drafts/commit/5eca32c8958efb02b936a00c759d50d9913c07b9
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Tweaks for the draining period

This makes the 3RTO timer advisory (SHOULD).

It also adds a note about leaving early.  If you can be sure that the other
side isn't going to send you more packets indefinitely, then you can end early
if you are OK with receiving reordered or delayed packets.

I also removed a residual mention of sending ACK frames in this state.

  Commit: 9ead47479272bdc252ae0ae9363e46a558d61a0f
      https://github.com/quicwg/base-drafts/commit/9ead47479272bdc252ae0ae9363e46a558d61a0f
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Stateless reset works for early exit too

  Commit: 5061a15eb804b1c090fda3439fadbc12c58dfd3e
      https://github.com/quicwg/base-drafts/commit/5061a15eb804b1c090fda3439fadbc12c58dfd3e
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Address nits

  Commit: a9b13de5d57ea4ffb82ac507931109275336cd3f
      https://github.com/quicwg/base-drafts/commit/a9b13de5d57ea4ffb82ac507931109275336cd3f
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  invert

  Commit: 41372597f7ee9b7bb0cbb5d11690cfc6b84a5f70
      https://github.com/quicwg/base-drafts/commit/41372597f7ee9b7bb0cbb5d11690cfc6b84a5f70
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  clarify

  Commit: 07403710273bd18f1f5962b924b75344b3d70722
      https://github.com/quicwg/base-drafts/commit/07403710273bd18f1f5962b924b75344b3d70722
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  more

  Commit: afabe8a7596999ab4d49463cc144a618e4e184dc
      https://github.com/quicwg/base-drafts/commit/afabe8a7596999ab4d49463cc144a618e4e184dc
  Author: Ryan Hamilton <[email-masked]>
  Date:   2017-10-13 (Fri, 13 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Remove unnecessary language

  Commit: 8fe436777d03444e06a04b9817a7b94b9a3489e6
      https://github.com/quicwg/base-drafts/commit/8fe436777d03444e06a04b9817a7b94b9a3489e6
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge branch 'Unidirectional' of https://github.com/RyanAtGoogle/base-drafts into biuni-wat

  Commit: 82f6b8750cc02f33102778536d95bd22c088bd2f
      https://github.com/quicwg/base-drafts/commit/82f6b8750cc02f33102778536d95bd22c088bd2f
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Unidirection and bidirectional streams

This is #872 with some additional exposition and one significant change.

Client-initiated streams are now EVEN.

Server initiated streams are now ODD.

This is a pretty noticeable change, because it inverts the current sign, and
might cause some disruption in implementations.  However, it makes stream 0
work within the framework better.  It wasn't clear what Ryan's intent was with
respect to numbering, but I wouldn't have noticed this until I noticed a
conflict between prose and the table.

Closes #643, #656, #720, #872, #175.

This does not close the other issues that were addressed by #643, because this
doesn't include any changes in the HTTP draft.  I'll create a follow-up PR for
that.

  Commit: f5b735a861075fbe261d0f8482e205d7cd558894
      https://github.com/quicwg/base-drafts/commit/f5b735a861075fbe261d0f8482e205d7cd558894
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Fixup

  Commit: 473d9e7fe1845931528c0bbcc039175bd51a3bf5
      https://github.com/quicwg/base-drafts/commit/473d9e7fe1845931528c0bbcc039175bd51a3bf5
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Transport integer encoding proposal

This proposal replaces all integer encodings in frames with a unified
variable-length encoding format.  It simplifies the encoding considerably, most
noticeably in the ACK frame, which I have largely rewritten.

This change increases the number of streams to 2^62, but reduces the number of
packets and octets per stream to that same number.  Both are very large values
anyway.  I kept the 2^10 scaling on the connection-level flow control window,
so that goes to 2^72 now.

The cost for ACK is a negligible decrease in efficiency for larger gaps or
ACK blocks (mainly between 64 and 255 in length).  This is counteracted by an
increase in efficiency if there are occasional ranges or gaps larger than 255,
which were previously very difficult to encode correctly.

As previously discussed, the timestamp format is removed.  In its place, we use
the same integer encoding, but with a scaling value, or exponent, that is
signaled in transport parameters, that should allow common ACK delays to be
expressed in fewer octets (an exponent of 0 only allows for 16ms to be encoded
in two octets, but the default exponent is 8, allowing up to 128ms of ACK delay
to be encoded on two octets with an 8us resolution).

I haven't made any changes for HTTP yet, I plan to do that in a separate PR.

  Commit: 06112c66869ae5cb7b1e741cf46417cad9ca7477
      https://github.com/quicwg/base-drafts/commit/06112c66869ae5cb7b1e741cf46417cad9ca7477
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Review comments

  Commit: 66c5285f8e84786b7cb99dcab744f227c7f16843
      https://github.com/quicwg/base-drafts/commit/66c5285f8e84786b7cb99dcab744f227c7f16843
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Add a length field to ACK

  Commit: fd78bccd18ebb8fdca9fc6a0cb963d8e992b12b5
      https://github.com/quicwg/base-drafts/commit/fd78bccd18ebb8fdca9fc6a0cb963d8e992b12b5
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-18 (Wed, 18 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Use a count rather than a length

  Commit: 442dc99647bfb200ac1534328008aa4d16fa7bb3
      https://github.com/quicwg/base-drafts/commit/442dc99647bfb200ac1534328008aa4d16fa7bb3
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-19 (Thu, 19 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Add article

  Commit: 3541a42a346b6c42b931b895ec5c31dbc2b68c66
      https://github.com/quicwg/base-drafts/commit/3541a42a346b6c42b931b895ec5c31dbc2b68c66
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-19 (Thu, 19 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Detail

  Commit: 5c120d002958013b939db714517d98ddebfc97a3
      https://github.com/quicwg/base-drafts/commit/5c120d002958013b939db714517d98ddebfc97a3
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-19 (Thu, 19 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Subtract one from ranges

  Commit: 7be15c0a449392c2843a35792209bad600829eec
      https://github.com/quicwg/base-drafts/commit/7be15c0a449392c2843a35792209bad600829eec
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-20 (Fri, 20 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Editorial fixup

  Commit: cc9d717bab0253868572a3a759501f1157c37055
      https://github.com/quicwg/base-drafts/commit/cc9d717bab0253868572a3a759501f1157c37055
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-25 (Wed, 25 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Editorial tweak

  Commit: 1ca1af9eb21e7f0a53d168a51bab9740bf57b361
      https://github.com/quicwg/base-drafts/commit/1ca1af9eb21e7f0a53d168a51bab9740bf57b361
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-25 (Wed, 25 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge pull request #870 from quicwg/draining-applicability

 Tweaks for the draining period

  Commit: d190077ee547de3a02974dc2693f3d722f56adf1
      https://github.com/quicwg/base-drafts/commit/d190077ee547de3a02974dc2693f3d722f56adf1
  Author: Marten Seemann <[email-masked]>
  Date:   2017-10-27 (Fri, 27 Oct 2017)

  Changed paths:
    M draft-ietf-quic-tls.md

  Log Message:
  -----------
  fix KEY_PHASE bit on long header

  Commit: 5b662dedc38138043ea2eb4cb217c485d73a761a
      https://github.com/quicwg/base-drafts/commit/5b662dedc38138043ea2eb4cb217c485d73a761a
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-27 (Fri, 27 Oct 2017)

  Changed paths:
    M draft-ietf-quic-tls.md

  Log Message:
  -----------
  Merge pull request #902 from marten-seemann/fix-key-phase-long-header

fix KEY_PHASE bit on long header

  Commit: 665dc8b62955fd5115e83808143b1821bfa18ee0
      https://github.com/quicwg/base-drafts/commit/665dc8b62955fd5115e83808143b1821bfa18ee0
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Remove duplication

  Commit: 20ce92f6843b85dd5a9b20b5330eee3ea25de3de
      https://github.com/quicwg/base-drafts/commit/20ce92f6843b85dd5a9b20b5330eee3ea25de3de
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge pull request #885 from quicwg/biuni-wat

 Unidirectional and bidirectional streams

  Commit: 12d0946ccaba1bab42b8d3bbb0f12214d13dbc8c
      https://github.com/quicwg/base-drafts/commit/12d0946ccaba1bab42b8d3bbb0f12214d13dbc8c
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Maximal change for HTTP integer encoding

This didn't turn out to be that disruptive.  I'm somewhat worried that I missed
something actually.  Given that the changes are small, I think that I would
prefer this over #887 for #877.

The most interesting change here is that extension frame types that mention
Stream IDs will have to change.  I am not aware of any proposed thus far, so
maybe it's not too much of a cost to bear.  It further confirms my view that we
shouldn't be using Stream IDs at this layer anyway.

Based on this, I don't see any need for a middle-ground change.  The biggest
cost here is in taking the larger Stream ID space, not in taking the integer
encoding.

  Commit: cdae8c393e691843e9e6efc939c2f398e2811312
      https://github.com/quicwg/base-drafts/commit/cdae8c393e691843e9e6efc939c2f398e2811312
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Missed a few fixed-size integers

And a nit

  Commit: 8aaa5e076bbf745f3d36c1f032fbd641860fe899
      https://github.com/quicwg/base-drafts/commit/8aaa5e076bbf745f3d36c1f032fbd641860fe899
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  More fixed-size integer residue

  Commit: 89c99638de57e4bb58c36c6309c7647daf3648f6
      https://github.com/quicwg/base-drafts/commit/89c99638de57e4bb58c36c6309c7647daf3648f6
  Author: Mike Bishop <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Redundant duplication is unnecessary

  Commit: 149b2b8346ba368ea0b203f4e80d84b4cc7fe293
      https://github.com/quicwg/base-drafts/commit/149b2b8346ba368ea0b203f4e80d84b4cc7fe293
  Author: Mike Bishop <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-tls.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into integers

  Commit: 90b2054a61c791dc1c93aaab6cd6ba606c011583
      https://github.com/quicwg/base-drafts/commit/90b2054a61c791dc1c93aaab6cd6ba606c011583
  Author: Mike Bishop <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge pull request #877 from quicwg/integers

Variable-length integer encoding

  Commit: 56bb044ea13160274e2c831a919b8546068e0a08
      https://github.com/quicwg/base-drafts/commit/56bb044ea13160274e2c831a919b8546068e0a08
  Author: Mike Bishop <[email-masked]>
  Date:   2017-10-30 (Mon, 30 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  -08 changelog

  Commit: 8971eb39ca2ddd77f0db4b0c7cf30112a8b377bb
      https://github.com/quicwg/base-drafts/commit/8971eb39ca2ddd77f0db4b0c7cf30112a8b377bb
  Author: Mike Bishop <[email-masked]>
  Date:   2017-10-31 (Tue, 31 Oct 2017)

  Changed paths:
    M draft-ietf-quic-http.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Minor typos

  Commit: 503b694528cb8e5481c3f8cabecb7da5c30ed696
      https://github.com/quicwg/base-drafts/commit/503b694528cb8e5481c3f8cabecb7da5c30ed696
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-31 (Tue, 31 Oct 2017)

  Changed paths:
    M draft-ietf-quic-tls.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Rename and consolidate packet types (#847)

* Rename and consolidate packet types

The two cleartext types are no longer needed to distinguish between client and
server.  Server packets are protected with a different key to that used for
client packets, so a server will be unable to process a packet from another
server as though it were a client packet (not that this was possible anyway
given that we have a different type for the initial packet).

Consequently, I have renamed packets to use shorter names and to better fit
their roles:

* Client Initial -> Initial
* Server Stateless Retry -> Retry (also avoids confusion with Stateless Reset)
* Server Cleartext -> Handshake
* Client Cleartext -> Handshake

I've rephrased the text in the TLS spec to match.

The only functional change here is to consolidate Server and Client Cleartext
into a single codepoint.  I did renumber the 0-RTT and 1-RTT protected packets
as a result.

Closes #846.

* Handshake, not connection setup

* Nits

* Rewrap

* Reflow, fix links, Closes #822

  Commit: ec132f546f8b2853a52543066564b95e2a42b8b2
      https://github.com/quicwg/base-drafts/commit/ec132f546f8b2853a52543066564b95e2a42b8b2
  Author: Martin Thomson <[email-masked]>
  Date:   2017-11-01 (Wed, 01 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Variable-length HTTP/QUIC frames

This removes END_HEADERS as it is no longer needed.  Strangely, the flag on
PUSH_PROMISE was already removed.

Closes #76.

  Commit: 7e49733ad45861f2f741b07c5ff262a751264eca
      https://github.com/quicwg/base-drafts/commit/7e49733ad45861f2f741b07c5ff262a751264eca
  Author: Mike Bishop <[email-masked]>
  Date:   2017-11-07 (Tue, 07 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Rebranded

  Commit: 46565d50feb45b2d3975a4fc80ac559f0d9bbfec
      https://github.com/quicwg/base-drafts/commit/46565d50feb45b2d3975a4fc80ac559f0d9bbfec
  Author: ianswett <[email-masked]>
  Date:   2017-11-11 (Sat, 11 Nov 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Clarify when to send acks (#907)

* Clarify when to send acks
* Update draft-ietf-quic-transport.md
* Comments
* Add '-'

  Commit: 213dc0b812833f2a721f14f37c68f848c156492d
      https://github.com/quicwg/base-drafts/commit/213dc0b812833f2a721f14f37c68f848c156492d
  Author: ianswett <[email-masked]>
  Date:   2017-11-11 (Sat, 11 Nov 2017)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Update changelog

  Commit: 709332a75a7947985802c2475d4cd6c50e7483ad
      https://github.com/quicwg/base-drafts/commit/709332a75a7947985802c2475d4cd6c50e7483ad
  Author: Mike Bishop <[email-masked]>
  Date:   2017-11-11 (Sat, 11 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  ASCII art reflow

  Commit: bf43a11594a686270535e59b8bf03c4c3fd034ce
      https://github.com/quicwg/base-drafts/commit/bf43a11594a686270535e59b8bf03c4c3fd034ce
  Author: Mike Bishop <[email-masked]>
  Date:   2017-11-10 (Fri, 10 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Merge pull request #905 from quicwg/frame-length-varint

Variable-length HTTP/QUIC frames

  Commit: dad07686a38274c01666afb828ae3fbfba195e75
      https://github.com/quicwg/base-drafts/commit/dad07686a38274c01666afb828ae3fbfba195e75
  Author: Mike Bishop <[email-masked]>
  Date:   2017-11-11 (Sat, 11 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md

  Log Message:
  -----------
  Changelog update

  Commit: 83087ce6f71f4608574edfed9cea074731fe53a7
      https://github.com/quicwg/base-drafts/commit/83087ce6f71f4608574edfed9cea074731fe53a7
  Author: Mike Bishop <[email-masked]>
  Date:   2017-11-11 (Sat, 11 Nov 2017)

  Changed paths:
    M draft-ietf-quic-http.md
    M draft-ietf-quic-tls.md
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into improve-goaway

Compare: https://github.com/quicwg/base-drafts/compare/187114796561...83087ce6f71f