Subject: [quicwg/base-drafts] transport: MUST vs MAY (#4332)

From: Kazu Yamamoto <[email-masked]>
Date: Wed, 04 Nov 2020 21:08:02 -0800

Sec 12.4 uses MUST:

> An endpoint MUST treat receipt of a frame in a packet type that is not permitted as a connection error of type PROTOCOL_VIOLATION.

Sec 12.5 uses MAY:

> Note that it is not possible to send the following frames in 0-RTT packets for various reasons: ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID. A server MAY treat receipt of these frames in 0-RTT packets as a connection error of type PROTOCOL_VIOLATION.

Aren't they contradictory?

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

---

From: Martin Thomson <[email-masked]>
Date: Wed, 04 Nov 2020 21:44:49 -0800

Not contradictory.  These are not impermissible, they are instead impossible.  An endpoint is required (MUST) to reject impermissible frames, but merely allows (MAY) to reject impossible frames.

-- 
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/4332#issuecomment-722155920

---

From: Kazu Yamamoto <[email-masked]>
Date: Wed, 04 Nov 2020 22:05:24 -0800

How we can distinguish impermissible and impossible?

-- 
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/4332#issuecomment-722163027

---

From: Martin Thomson <[email-masked]>
Date: Wed, 04 Nov 2020 22:11:56 -0800

What is permitted is in the bullet list in S12.5.  Anything else is impermissible.  What is impossible is noted in the paragraph after that.  If you don't care to distinguish the two (which is entirely reasonable), then treat them all as connection errors.

(I think that our code has a mixed stance because we don't care to police based on endpoint role.)

-- 
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/4332#issuecomment-722165467

---

From: Kazu Yamamoto <[email-masked]>
Date: Wed, 04 Nov 2020 22:33:03 -0800

I'm still puzzled in Section 12.4 and 12.5. Which does "Pkts" in the Table 3 mean, permissible or possible?

I guess it's "possible". ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID are impossible in 0-RTT. But PATH_RESPONSE and RETIRE_CONNECTION_ID are marked with "0".

-- 
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/4332#issuecomment-722173412

---

From: Martin Thomson <[email-masked]>
Date: Wed, 04 Nov 2020 22:42:42 -0800

Yes, possible.

-- 
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/4332#issuecomment-722177369

---

From: Lars Eggert <[email-masked]>
Date: Mon, 09 Nov 2020 06:34:24 -0800

@kazu-yamamoto can this be closed?

-- 
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/4332#issuecomment-724051077

---

From: Kazu Yamamoto <[email-masked]>
Date: Tue, 10 Nov 2020 17:44:45 -0800

@larseggert No. I'm still confused.

-- 
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/4332#issuecomment-725074467

---

From: Kazu Yamamoto <[email-masked]>
Date: Tue, 10 Nov 2020 17:59:45 -0800

@martinthomson 

> Note that it is not possible to send the following frames in 0-RTT packets for various reasons: ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID. A server MAY treat r…

This talks about "impossible". This text should be moved to Sec 12.4. And if this text is correct, the 0 mark of NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID should be removed.

-- 
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/4332#issuecomment-725078869

---

From: Kazu Yamamoto <[email-masked]>
Date: Tue, 10 Nov 2020 18:01:17 -0800

Sec 12.4 talks about "possible" and Sec 12.5 talks about "permissible":

So, "An endpoint MUST treat receipt of a frame in a packet type that is not permitted as a connection error of type PROTOCOL_VIOLATION" should be moved from Sec 12.4 to Sec 12.5.

-- 
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/4332#issuecomment-725079431