Subject: [quicwg/base-drafts] RTT sample should be taken only once for each largest_acked (#2569)

From: Jana Iyengar <[email-masked]>
Date: Sat, 30 Mar 2019 14:21:43 -0700

The pseudo code in [Section A.6](https://quicwg.org/base-drafts/draft-ietf-quic-recovery.html#on-ack-received) ends up taking an RTT sample on every ack, which can result in multiple RTT samples per largest_acked. The code should check to see if the largest_acked is newly acked.

The text does say that an RTT sample MUST NOT be taken on a packet that is not newly_acked, but pseudo code needs to match.

-- 
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/issues/2569

---

From: Nick Banks <[email-masked]>
Date: Sat, 30 Mar 2019 15:45:16 -0700

To be fair, the comment in the pseudo code does say only to update the rtt if it's newly acked:
```
  // If the largest acknowledged is newly acked and
  // ack-eliciting, update the RTT.
  if (sent_packets[pn_space][ack.largest_acked] &&
      sent_packets[pn_space][ack.largest_acked].ack_eliciting):
```
Personally, I'd solve this by always setting `sent_packets[pn_space][#] = null` once it has been acknowledged. Then the pseudo code above would be correct.

-- 
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/issues/2569#issuecomment-478295940

---

From: ianswett <[email-masked]>
Date: Sun, 31 Mar 2019 04:16:44 -0700

@nibanks That's what remove() is supposed to do, which is called when a packet is acked or lost.

As with #2571, this may be a matter of more clearly defining what remove() does.

-- 
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/issues/2569#issuecomment-478332541