Subject: [quicwg/base-drafts] Added normative text to invariants (#3774)

From: martinduke <[email-masked]>
Date: Wed, 17 Jun 2020 17:15:43 -0700

Fixes #3773. As some who&#39;s writing a spec for a QUIC intermediary, I hope this covers most of the ground here.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/3774

-- Commit Summary --

  * Added normative text to invariants

-- File Changes --

    M draft-ietf-quic-invariants.md (43)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3774.patch
https://github.com/quicwg/base-drafts/pull/3774.diff

-- 
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/pull/3774

---

From: martinduke <[email-masked]>
Date: Wed, 17 Jun 2020 17:20:36 -0700

@martinduke pushed 1 commit.

30954246938ac5ff728b4b3ba50b62d033dde76a  Fixed line break.

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3774/files/74aa5cb628027717c33b5b029f591c79eee500ec..30954246938ac5ff728b4b3ba50b62d033dde76a

---

From: Igor Lubashev <[email-masked]>
Date: Thu, 18 Jun 2020 06:45:20 -0700

@igorlord commented on this pull request.

> +# Requirements for Intermediaries
+
+An intermediary MAY observe the QUIC version in certain packets, statefully note
+the version associated with the connection IDs (see {{connection-id}}) in the
+packet, and if it understands that version, parse and process packets with one
+of those connection IDs without regard for the invariants in this document.
+
+Intermediaries MUST implement a mode that, if they cannot associate a version
+with a packet's connection ID or do not understand the associated QUIC version,
+uses only the invariant fields described in this document to execute its
+function(s). This might mean that the intermediary cannot accomplish its
+function(s) at all, or that it implements a default behavior.
+
+Intermediaries MUST NOT implement a default behavior of dropping packets of QUIC
+versions they do not understand, or packets that have a connection ID they
+cannot associate with a QUIC version.

You probably meant that intermediaries MUST NOT drop packets of unknown or unidentified version BECAUSE of the version being unknown or unidentified. The intermediaries should be able to (and will, regardless of what we say her) drop such packets for other reasons. 

> +An intermediary MAY observe the QUIC version in certain packets, statefully note
+the version associated with the connection IDs (see {{connection-id}}) in the
+packet, and if it understands that version, parse and process packets with one
+of those connection IDs without regard for the invariants in this document.
+
+Intermediaries MUST implement a mode that, if they cannot associate a version
+with a packet's connection ID or do not understand the associated QUIC version,
+uses only the invariant fields described in this document to execute its
+function(s). This might mean that the intermediary cannot accomplish its
+function(s) at all, or that it implements a default behavior.
+
+Intermediaries MUST NOT implement a default behavior of dropping packets of QUIC
+versions they do not understand, or packets that have a connection ID they
+cannot associate with a QUIC version.
+
+Future specifications for intermediaries SHOULD document any implicit

Remove "Future". It is confusing. 

-- 
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/pull/3774#pullrequestreview-433294519

---

From: martinduke <[email-masked]>
Date: Thu, 18 Jun 2020 09:03:36 -0700

4f6747fd4265ea7001de2c5eaa0128b5a6098059  Update draft-ietf-quic-invariants.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3774/files/30954246938ac5ff728b4b3ba50b62d033dde76a..4f6747fd4265ea7001de2c5eaa0128b5a6098059

---

From: martinduke <[email-masked]>
Date: Thu, 18 Jun 2020 09:06:46 -0700

@martinduke commented on this pull request.

+

The word "default" here is doing a lot of work, and I think it's communicating what you want.

I agree that people may violate this spec, even if they read it, though ignoring this provision is going to break both address migration and whatever version ossification mitigation we end up deploying.

-- 
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/pull/3774#discussion_r442339226

---

From: martinduke <[email-masked]>
Date: Thu, 18 Jun 2020 16:30:32 +0000 (UTC)

92c25240019bccd8882918023bd821bd78bf82f7  MT's comments

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3774/files/4f6747fd4265ea7001de2c5eaa0128b5a6098059..92c25240019bccd8882918023bd821bd78bf82f7

---

From: Mike Bishop <[email-masked]>
Date: Mon, 22 Jun 2020 11:34:04 -0700

@MikeBishop approved this pull request.

+

Perhaps "MUST NOT drop packets on the basis of..." would be avoid the wiggles of "default"?

+of those connection IDs without regard for the invariants in this document.
+
+Intermediaries MUST implement a mode that, if they cannot associate a version
+with a packet's connection ID or do not understand the associated QUIC version,
+uses only the invariant fields described in this document to execute its
+function(s). This might mean that the intermediary cannot accomplish its
+function(s) at all, or that it implements a default behavior.
+
+Intermediaries MUST NOT implement a default behavior of dropping packets of QUIC
+versions they do not understand, or packets that have a connection ID they
+cannot associate with a QUIC version.
+
+Specifications for intermediaries SHOULD document any implicit assumptions they
+are making about endpoint behavior beyond the invariants in this document, and
+the impact if future versions of QUIC violate those assumptions.

```suggestion
the impact if future versions of QUIC do not conform to those assumptions.
```
"Violate" has a negative connotation, and behavior changes aren't something we want to discourage.

> @@ -234,7 +281,7 @@ and is not constrained by this specification.
 The remainder of the packet has version-specific semantics.

-## Connection ID
+## Connection ID {#connection-id}

Nothing wrong with doing this, but it's pointless since this would be the default anchor generated for this section title anyway.

-- 
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/pull/3774#pullrequestreview-435175866

---

From: martinduke <[email-masked]>
Date: Mon, 22 Jun 2020 11:41:33 -0700

504669f295d9ad65b77003aa742becbc365c36fc  Update draft-ietf-quic-invariants.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3774/files/92c25240019bccd8882918023bd821bd78bf82f7..504669f295d9ad65b77003aa742becbc365c36fc

---

From: martinduke <[email-masked]>
Date: Mon, 22 Jun 2020 12:17:16 -0700

@martinduke pushed 2 commits.

ca0bfe10d0a8c9fda04f501dc1ab52a210a3a558  Igor and Mike's suggestion
21723da0042bcde6e0dc8cc2aa49f36a9191c49a  Merge branch 'normative-invariants' of https://github.com/martinduke/base-drafts into normative-invariants

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3774/files/504669f295d9ad65b77003aa742becbc365c36fc..21723da0042bcde6e0dc8cc2aa49f36a9191c49a

---

From: Igor Lubashev <[email-masked]>
Date: Mon, 22 Jun 2020 18:47:16 -0700

Or "deviate from", depending on your taste.

-- 
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/pull/3774#discussion_r443915185