Subject: [quicwg/base-drafts] c26a6f: Transport integer encoding proposal

From: Martin Thomson <[email-masked]>
Date: Sun, 15 Oct 2017 17:27:14 -0700

Branch: refs/heads/integers
  Home:   https://github.com/quicwg/base-drafts
  Commit: c26a6fa41ec0be34935905967d3cac9fe8b6ea93
      https://github.com/quicwg/base-drafts/commit/c26a6fa41ec0be34935905967d3cac9fe8b6ea93
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-16 (Mon, 16 Oct 2017)

  Changed paths:
    A .draft-ietf-quic-http-07.upload
    A .draft-ietf-quic-tls-07.upload
    A .draft-ietf-quic-transport-07.upload
    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: 1d37bb39263b359ca7f0c07a492edadaf9bccb90
      https://github.com/quicwg/base-drafts/commit/1d37bb39263b359ca7f0c07a492edadaf9bccb90
  Author: Martin Thomson <[email-masked]>
  Date:   2017-10-16 (Mon, 16 Oct 2017)

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

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

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

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

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

Compare: https://github.com/quicwg/base-drafts/compare/cf1c0a331298...2318887545df