Subject: [quicwg/base-drafts] does version negotiation packet format need to be locked across versions (#569)

From: Patrick McManus <[email-masked]>
Date: Sat, 03 Jun 2017 07:08:10 -0700

I can't find any language that makes the version negotiation packet consistent across versions.. 5.9 does some of it:

```
the location of the header form flag,
the location and size of the Connection ID field in both header forms,
the location and size of the Version field in long headers, and
the location and size of the Packet Number field in long headers.
```

but specifically the interpretation of the type byte and the format of the version numbers in the packet itself does not appear to be fixed. Given that the server is generating a version negotiation packet marked with a version that it does not understand (it came from the peer and triggered this path) I think this whole packet may need to be more constrained.

-- 
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/issues/569

---

From: mirjak <[email-masked]>
Date: Sat, 03 Jun 2017 07:45:43 -0700

Yes, I agree that this is still unclear. For version negotiation you need to fix the header format bit, the header type field, the whole version negotiation header incl. it's type and either the version field of the long header or also the client initial packet type and the version field in that header as well as the mechanism that all quic connection have to start with a client initial. But probably it makes sense and is just easier for version negotiation to fix the whole long header (which mean future packets type in new version may extend the long header but all long header packets need to have at least these fields). If you want to make it possible to allow network nodes to use the connection or packet number in short header packets (even if they didn't see the handshake and therefore the used version), you of course also have to fix that in the short header as well. Which basically means all headers are fixed and future version can only add additional information. From my side, i think that's okay.

-- 
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/issues/569#issuecomment-305979415

---

From: Martin Thomson <[email-masked]>
Date: Mon, 05 Jun 2017 01:59:48 -0700

Yes, this is indeed unclear.  I don't think that the protocol works unless you fix Version Negotiation across versions somehow.

Marking this as editorial on the basis that this was assumed, not expressed, and that we merely failed to correctly write this down.  (I don't see any other interpretation for this that makes any sort of sense.)

-- 
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/issues/569#issuecomment-306138727