Subject: [quicwg/base-drafts] Execute the PTO alarm immediately if in the past (#4831)

From: ianswett <[email-masked]>
Date: Tue, 23 Feb 2021 08:48:47 -0800

Fixes #4830
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Execute the PTO alarm immediately if in the past

-- File Changes --

    M draft-ietf-quic-recovery.md (7)

-- Patch Links --

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

---

From: Nick Banks <[email-masked]>
Date: Tue, 23 Feb 2021 09:15:55 -0800

@nibanks 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/4831#pullrequestreview-596584936

---

From: David Schinazi <[email-masked]>
Date: Tue, 23 Feb 2021 12:39:49 -0800

@DavidSchinazi 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/4831#pullrequestreview-596775411

---

From: Lars Eggert <[email-masked]>
Date: Wed, 24 Feb 2021 01:32:34 -0800

@larseggert commented on this pull request.

> @@ -664,8 +664,11 @@ data it can send is limited to three times the amount of data received,
 as specified in {{Section 8.1 of QUIC-TRANSPORT}}. If no additional data can be
 sent, the server's PTO timer MUST NOT be armed until datagrams have been
 received from the client, because packets sent on PTO count against the
-anti-amplification limit. Note that the server could fail to validate the
-client's address even if 0-RTT is accepted.
+anti-amplification limit.  The server's PTO timer could be re-armed to a time
+in the past after being amplification limited, in which case it is executed
+immediately. Doing so avoids sending new packets in ApplicationData prior to

`ApplicationData` is so far only used in the pseudo code. Can we rephrase this?

-- 
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/4831#pullrequestreview-597272540

---

From: ianswett <[email-masked]>
Date: Wed, 24 Feb 2021 06:13:52 -0800

@ianswett pushed 1 commit.

54a3d93d983d4c55ca2cf1a52c63e92521c0f9d9  1-RTT, not ApplicationData

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/4831/files/56e4f68ff667b215c3c913747f129813728d9a24..54a3d93d983d4c55ca2cf1a52c63e92521c0f9d9

---

From: ianswett <[email-masked]>
Date: Wed, 24 Feb 2021 06:19:08 -0800

042a58b716d68b69e0f462cb7fa92be9fe8fedc4  Update the pseudocode

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/4831/files/54a3d93d983d4c55ca2cf1a52c63e92521c0f9d9..042a58b716d68b69e0f462cb7fa92be9fe8fedc4

---

From: ianswett <[email-masked]>
Date: Wed, 24 Feb 2021 06:20:19 -0800

I just updated the pseudocode as well, since it's quite straightforward.

-- 
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/4831#issuecomment-785108017

---

From: Lars Eggert <[email-masked]>
Date: Wed, 24 Feb 2021 07:10:32 -0800

@larseggert 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/4831#pullrequestreview-597586157

---

From: Anas198900 <[email-masked]>
Date: Wed, 24 Feb 2021 12:26:04 -0800

@Anas198900 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/4831#pullrequestreview-597893489

---

From: Anas198900 <[email-masked]>
Date: Wed, 24 Feb 2021 12:26:32 -0800

-- 
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/4831#pullrequestreview-597893867

---

From: Martin Thomson <[email-masked]>
Date: Sun, 28 Feb 2021 20:21:56 -0800

@martinthomson commented on this pull request.

 as specified in {{Section 8.1 of QUIC-TRANSPORT}}. If no additional data can be
 sent, the server's PTO timer MUST NOT be armed until datagrams have been
 received from the client, because packets sent on PTO count against the
-anti-amplification limit. Note that the server could fail to validate the
-client's address even if 0-RTT is accepted.
+anti-amplification limit.  The server's PTO timer could be re-armed to a time
+in the past after being amplification limited, in which case it is executed
+immediately. Doing so avoids sending new 1-RTT packets prior to packets
+critical to the completion of the handshake.  Note that the server could fail
+to validate the client's address even if 0-RTT is accepted.

This last sentence is now poorly connected to ... well ... anything.  I know that you are looking to avoid too many changes, but the instant you changed the pseudocode, any hope of that went out the window.  I think that we can cut this last sentence.

> +      // PTO would have already expired, execute it
+      // immediately.

```suggestion
      // Execute any PTO that might have expired
      // while the amplification limit applied.
```

+in the past after being amplification limited, in which case it is executed
+immediately. Doing so avoids sending new 1-RTT packets prior to packets
+critical to the completion of the handshake.  Note that the server could fail

What about a new paragraph instead:

> When the server receives a datagram from the client, the amplification limit is increased.  After an increase to the amplification limit, the server restarts any PTO timer that might have been suppressed.  If the timer would have expired during the time that the server was unable to send, the server immediately processes that event.  It is important that the server send any probes for Initial and Handshake packet number spaces before sending 1-RTT packets as the handshake might not complete otherwise.

Much more text, but clearer.

-- 
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/4831#pullrequestreview-598035201