Subject: [quicwg/base-drafts] Exception for Retire Prior To (#3643)

From: Martin Thomson <[email-masked]>
Date: Mon, 11 May 2020 17:37:11 -0700

The rules for the active connection ID limit were such that the brief
bump that NEW_CONNECTION_ID + Retire Prior To could add was not
permitted.  Strictly speaking, if you requested retirement, the
connection IDs that you requested be retired are still active until you
receive a RETIRE_CONNECTION_ID frame.  That means that you were
technically violating this MUST in the spec.  Adding an exception for
this case was the best way I could see to fix this.

The other was to change the definition of &quot;active connection ID&quot;.  I
tried that and, while it was a smaller change, it made the definition
less crisp.  This approach seems best.

(This is not new normative requirements as this is already [in the spec](https://quicwg.org/base-drafts/draft-ietf-quic-transport.html#section-5.1.2-5).)
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Exception for Retire Prior To

-- File Changes --

    M draft-ietf-quic-transport.md (9)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3643.patch
https://github.com/quicwg/base-drafts/pull/3643.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/3643

---

From: ianswett <[email-masked]>
Date: Tue, 12 May 2020 06:18:23 -0700

@ianswett approved this pull request.

This is how I understood the existing design, thanks for the clarification.

-- 
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/3643#pullrequestreview-410030444

---

From: ianswett <[email-masked]>
Date: Tue, 12 May 2020 06:23:27 -0700

@ianswett commented on this pull request.

> +will stay within the limit.  An endpoint that receives more connection IDs than
+its advertised active_connection_id_limit MUST close the connection with an
+error of type CONNECTION_ID_LIMIT_ERROR.

```suggestion
will stay within the limit.  An endpoint that receives a NEW_CONNECTION_ID frame
with an Sequence Number more than its advertised active_connection_id_limit plus the Retire Prior To
in the frame MUST close the connection with an error of type
CONNECTION_ID_LIMIT_ERROR.
```

-- 
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/3643#pullrequestreview-410035220

---

From: Martin Thomson <[email-masked]>
Date: Tue, 12 May 2020 15:19:23 -0700

@martinthomson commented on this pull request.

Ahh, good.  But not quite.  You have to subtract any retired connection IDs from that.

-- 
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/3643#discussion_r424066470

---

From: Martin Thomson <[email-masked]>
Date: Tue, 12 May 2020 21:31:50 -0700

@martinthomson pushed 1 commit.

8c7e6033f60b5064780338971de611723f3c1c09  Attempt at rewording the NEW_CONNECITON_ID/Retire Prior To validation rule

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3643/files/b61358a381f7f6ce19f2432b500453aefa1ae257..8c7e6033f60b5064780338971de611723f3c1c09

---

From: Martin Thomson <[email-masked]>
Date: Tue, 12 May 2020 21:32:00 -0700

I took another tilt at this one.  It's very awkward though.

-- 
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/3643#discussion_r424166555

---

From: ianswett <[email-masked]>
Date: Wed, 13 May 2020 08:02:55 -0700

> +frame that increases the number of active connection IDs - without a Retire
+Prior To field that requests retirement of enough active connections to keep the
+total number of active connection IDs within the value the endpoint advertised
+in its active_connection_id_limit transport parameter - MUST close the
+connection with an error of type CONNECTION_ID_LIMIT_ERROR.

This is hard to write, here's my best shot.

```suggestion
frame that increases the number of active connection IDs above the value
advertised in its active_connection_id_limit transport parameter without a
Retire Prior To field that requests retirement of enough active connection IDs
to stay below the limit once retired MUST close the connection with an error
of type CONNECTION_ID_LIMIT_ERROR.
```

-- 
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/3643#pullrequestreview-411017530

---

From: Martin Thomson <[email-masked]>
Date: Wed, 13 May 2020 18:07:21 -0700

> +will stay within the limit.  An endpoint that receives a NEW_CONNECTION_ID
 connection with an error of type CONNECTION_ID_LIMIT_ERROR.

Maybe this is better:

```suggestion
will stay within the limit.  A NEW_CONNECTION_ID frame might cause an endpoint
might add some active connection IDs and retire others based on the value of the
Retire Prior To field.  After processing a NEW_CONNECTION_ID frame and adding a
retiring active connection IDs, if the number of active connections exceeds the
value advertised in its active_connection_id_limit transport parameter, an
endpoint MUST close the connection with an error of type
CONNECTION_ID_LIMIT_ERROR.
```

-- 
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/3643#pullrequestreview-411398917

---

From: Jana Iyengar <[email-masked]>
Date: Wed, 13 May 2020 20:17:54 -0700

@janaiyengar commented on this pull request.

> @@ -1050,8 +1050,14 @@ An endpoint SHOULD ensure that its peer has a sufficient number of available and
 unused connection IDs.  Endpoints store received connection IDs for future use
 and advertise the number of connection IDs they are willing to store with the
 active_connection_id_limit transport parameter.  An endpoint MUST NOT provide
-more connection IDs than the peer's limit.  An endpoint that receives more
-connection IDs than its advertised active_connection_id_limit MUST close the
+more connection IDs than the peer's limit, with the exception that connection

Both these sentences are onerous to read and super long... can you break them up a bit?

I can't comment on this change, so writing my comments here. The first sentence needs editorial fixing ("might cause an endpoint might add some active"). But I definitely prefer this version to the original.

-- 
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/3643#pullrequestreview-411436933

---

From: Martin Thomson <[email-masked]>
Date: Thu, 14 May 2020 00:18:58 -0700

67dc30dd88c4ceb82fc12343f122e91c17d8b61f  Attempt at making smaller sentences

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3643/files/8c7e6033f60b5064780338971de611723f3c1c09..67dc30dd88c4ceb82fc12343f122e91c17d8b61f

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 14 May 2020 00:30:30 -0700

@janaiyengar approved this pull request.

-- 
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/3643#pullrequestreview-411533593

---

From: ianswett <[email-masked]>
Date: Thu, 14 May 2020 07:30:24 -0700

> +A NEW_CONNECTION_ID frame might cause an endpoint to add some active connection
+IDs and retire others based on the value of the Retire Prior To field.  After

```suggestion
A NEW_CONNECTION_ID frame might cause an endpoint to add an active connection
ID and retire others based on the value of the Retire Prior To field.  After
```

-- 
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/3643#pullrequestreview-411863809

---

From: ianswett <[email-masked]>
Date: Thu, 14 May 2020 07:30:40 -0700

-- 
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/3643#pullrequestreview-411864122

---

From: Mike Bishop <[email-masked]>
Date: Fri, 15 May 2020 11:10:59 -0700

@MikeBishop approved this pull request.

Thanks for making (yet) another attempt to clarify this.  Looks good.

-- 
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/3643#pullrequestreview-412863464

---

From: ekr <[email-masked]>
Date: Fri, 15 May 2020 13:33:34 -0700

@ekr approved this pull request.

LGTM

-- 
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/3643#pullrequestreview-412949192

---

From: Martin Thomson <[email-masked]>
Date: Sun, 17 May 2020 23:57:56 +0000 (UTC)

Merged #3643 into master.

-- 
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/3643#event-3345069184