Subject: [quicwg/base-drafts] Skip a packet number when sending one PTO packet (#2952)

From: ianswett <[email-masked]>
Date: Fri, 02 Aug 2019 10:25:01 -0700

Indicates that peers can skip a packet number when sending a single PTO packet to elicit a faster ACK.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Skip a packet number when sending one PTO packet

-- File Changes --

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

-- Patch Links --

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

---

From: MikkelFJ <[email-masked]>
Date: Mon, 05 Aug 2019 22:31:31 -0700

mikkelfj commented on this pull request.

> @@ -601,7 +601,9 @@ removed from bytes in flight when the Initial and Handshake keys are discarded.
 When a PTO timer expires, a sender MUST send at least one ack-eliciting packet
 as a probe, unless there is no data available to send.  An endpoint MAY send up
 to two full-sized datagrams containing ack-eliciting packets, to avoid an
-expensive consecutive PTO expiration due to a single lost datagram.
+expensive consecutive PTO expiration due to a single lost datagram.  When only
+sending a single packet on PTO, senders can skip a packet number to elicit a
+faster acknowledgement.

I don't understand this: while packet numbers are usually incremental, that does not carry any semantics to my knowledge. PN's are skipped to guard against optimistic ACK attacks. It would be unfortunate if that praxis affects retransmission?

That said, I think it would be great if PN's could be assumed to be incremental, but there is no good solution to the optimistic ACK attack so far.

-- 
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/2952#pullrequestreview-271122358

---

From: Kazuho Oku <[email-masked]>
Date: Mon, 05 Aug 2019 23:43:06 -0700

kazuho commented on this pull request.

IIUC, skipping a packet number is a way to elicit an immediate ACK.

Quoting from section 4: _In order to accelerate loss recovery and reduce timeouts, the receiver SHOULD send an immediate ACK after it receives an out-of-order packet._

-- 
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/2952#discussion_r310902191

---

From: Kazuho Oku <[email-masked]>
Date: Mon, 05 Aug 2019 23:44:56 -0700

I think that this is a good advice. OTOH, I wonder if it might be better to suggest that such approach is possible for all tails, not just PTOs.

-- 
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/2952#pullrequestreview-271142361

---

From: MikkelFJ <[email-masked]>
Date: Mon, 05 Aug 2019 23:56:57 -0700

But how is "out-of-order" defined?

-- 
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/2952#discussion_r310906187

---

From: MikkelFJ <[email-masked]>
Date: Tue, 06 Aug 2019 00:01:06 -0700

So if both endpoints skip every second packet number early in the connection, in order to aggressively detect optimistic ACK's, would that lead to an ACK flood?

-- 
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/2952#discussion_r310907459

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 06 Aug 2019 00:11:41 -0700

The term is defined in [section 2](https://quicwg.org/base-drafts/draft-ietf-quic-recovery.html#rfc.section.2).

-- 
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/2952#discussion_r310910804

---

From: Lars Eggert <[email-masked]>
Date: Tue, 06 Aug 2019 00:12:50 -0700

larseggert commented on this pull request.

Why are we recommending to skip packet numbers over just including a PING? The former causes more overhead in the reverse direction.

-- 
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/2952#discussion_r310911132

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 06 Aug 2019 00:20:59 -0700

@larseggert IIUC, the receiver of a PING is not required to send an ACK immediately.

My slight preference goes to handling the issue below the framing layer, because it'd be only after you've generated the payload of a packet (by gathering frames) that you discover that the packet that is going to be sent is a tail.

-- 
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/2952#discussion_r310913779