Subject: Versions numbers in invariants

From: "Martin Thomson" <[email-masked]>
Date: Wed, 01 Jul 2020 12:33:24 +1000

In my review of QUIC Invariants, I think that I found a promise we might not want to keep:

> QUIC versions are identified with a 32-bit integer, encoded in network byte order.

Implicit in this is that a packet containing version X is necessarily QUIC version X.  That's already not-true in some proposals.

I think that this would be better defined as a field for use by endpoints:

> The Version field contains a 32-bit integer, encoded in network byte order.
> This value can be used by endpoints to identify a QUIC Version.

This is an almost-cosmetic change, but it is a substantive change.  The intent is to wind back this promise and allow for the sorts of mappings contemplated by the version aliasing proposal.

https://github.com/quicwg/base-drafts/issues/3808 is the issue, with some more details.
https://github.com/quicwg/base-drafts/issues/3785 contains the proposed change.