Subject: [quicwg/base-drafts] Call OnPacketAckedCC() for in-flight packets, not just ack-eliciting (#2584)

From: Alessandro Ghedini <[email-masked]>
Date: Tue, 02 Apr 2019 05:45:56 -0700

`OnPacketAcked()` calls `OnPacketAckedCC()` (which decreases `bytes_in_flight`)
only when `ack_eliciting` is true, however `OnPacketSentCC()` (which increases
`bytes_in_flight`) is called when `in_flight` is true.

Additionally, `OnPacketsLost()` decreases `bytes_in_flight` for in-flight
lost packets (not just ack-eliciting ones).

So it seems to follow that `OnPacketAcked()` should call `OnPacketAckedCC()`
for all in-flight packets.

---

The whole ack-eliciting vs in-flight distinction is pretty confusing to me (the only difference seems to be that in-flight includes packets with just PADDING, which are not ack-eliciting, is that correct?) so I may be totally wrong here.

But `bytes_in_flight` is increased and decreased based on two different conditions (`ack_eliciting` vs `in_flight`) which seems like a bug in the pseudo-code.

However if this is the intended behaviour, it's be useful to have a clarification as to why it is like that (the text doesn't seem to mention this) or a pointer to a previous discussion about this.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Call OnPacketAckedCC() for in-flight packets, not just ack-eliciting

-- File Changes --

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

-- Patch Links --

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

---

From: ianswett <[email-masked]>
Date: Tue, 02 Apr 2019 07:31:58 -0700

ianswett 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/2584#pullrequestreview-221697561

---

From: ianswett <[email-masked]>
Date: Tue, 02 Apr 2019 14:32:05 +0000 (UTC)

Merged #2584 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/2584#event-2246723910

---

From: ianswett <[email-masked]>
Date: Tue, 02 Apr 2019 07:34:04 -0700

Thanks for the fix.  I agree the difference between in-flight and ack-eliciting is small and potentially confusing.  I'm open to editorial PRs to clarify it.

The WG decided it was important that padding wasn't ack-eliciting, and making padding not congestion controlled is extremely scary, so we end up with a single frame that is congestion controlled but doesn't elicit an ACK.

-- 
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/2584#issuecomment-479025521

---

From: Alessandro Ghedini <[email-masked]>
Date: Tue, 02 Apr 2019 14:48:33 -0700

In retrospect, the "Design of the QUIC Transmission Machinery" section that says "PADDING frames cause packets to contribute toward bytes in flight without directly causing an acknowledgment to be sent" already explains that, I just need to pay more attention :)

-- 
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/2584#issuecomment-479218772