Subject: [quicwg/base-drafts] Must small VN packets be dropped? (#4395)

From: Ryan Hamilton <[email-masked]>
Date: Thu, 19 Nov 2020 13:00:44 -0800

Currently section 10.3 of the transport doc says:

> Endpoints MUST discard packets that are too small to be valid QUIC packets. With the set of AEAD functions defined in [QUIC-TLS], packets that are smaller than 21 bytes are never valid.

However, Version Negotiation packets are not guaranteed to be larger than 21 bytes. For example, a VN packet with an 0-byte destination connection ID, 8 byte source connection ID and single version would be 19 bytes. If a client receives such a packet, must it be dropped? This text suggests it must. But it's not clear to mean (or the slack channel) that this interpretation is expected.

Of course, a server could work around this issue by appending a sufficient number of GREASE'd versions to make the packet large enough. But I'm not sure if that is mandatory?

-- 
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/4395

---

From: Kazuho Oku <[email-masked]>
Date: Thu, 19 Nov 2020 15:15:25 -0800

The second sentence merely points out that QUIC packets *that use AEAD* can never be smaller than 21 bytes.

VN packets do not use AEAD, hence that 21 byte limit does not apply. Of course, endpoints can do their own maths to figure out the minimal size of VN packets that they might receive.

Just my two cents. We might want to clarify the italic part ("that use AEAD") in the specification.

-- 
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/4395#issuecomment-730696788

---

From: David Schinazi <[email-masked]>
Date: Thu, 19 Nov 2020 15:18:17 -0800

I agree with @kazuho that the spec isn't technically wrong, but I find it unclear. It wouldn't surprise me if someone were to read this and add `IF packet.length < 21 THEN DROP` to their packet ingestion code. I think all we need here is an editorial clarification such as `Note that version negotiation packets do not use AEAD and can therefore be smaller that 21 bytes.`

-- 
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/4395#issuecomment-730697874

---

From: Kazuho Oku <[email-masked]>
Date: Thu, 19 Nov 2020 15:29:16 -0800

I'm not sure if 21 is correct. Isn't it 20 for 1-RTT packets; i.e. 1 (header) + 0 (CID) + 1 (PN) + 1 (frame) + 16 (AEAD tag)?

-- 
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/4395#issuecomment-730701883

---

From: Jana Iyengar <[email-masked]>
Date: Fri, 20 Nov 2020 17:25:09 -0800

Closed #4395 via #4396.

-- 
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/4395#event-4023316047