Subject: [quicwg/base-drafts] Implicitly acknowledging table updates by acknowleding header blocks (#1370)

From: Martin Thomson <[email-masked]>
Date: Tue, 22 May 2018 06:11:54 -0700

When you acknowledge a header block, you also implicitly acknowledge the largest reference used in that header block.  You can't acknowledge it otherwise.

Should we require that an encoder track this information so that a decoder can reduce the number of acknowledgments that it sends?  It's more complicated to do that, but it can save some bytes and the associated churn.  I haven't implemented delayed acknowledgments for QPACK, but this would possibly make that more effective.

-- 
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/1370

---

From: afrind <[email-masked]>
Date: Tue, 22 May 2018 09:17:07 -0700

The encoder must already know the set of headers referenced in a block, so it can trivially compute the largest reference without keeping any additional state.  I think we can say that acknowledging a header block implicitly acknowledges its largest reference and save the bytes on the wire.

-- 
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/1370#issuecomment-391051410

---

From: Mike Bishop <[email-masked]>
Date: Tue, 22 May 2018 19:08:09 +0000 (UTC)

Given that the entries are usually added to the table precisely because a header block is going to use them, this would probably cover acknowledgements most of the time.  I'd be okay with that; you're already having to track which entries the block referenced, so this really isn't much additional state, if any.  Just an additional action with that state when you pull a block out of the queue.

-- 
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/1370#issuecomment-391106455

---

From: Martin Thomson <[email-masked]>
Date: Wed, 23 May 2018 18:01:44 -0700

It sounds like this is OK.  However, I would caution that if you are avoiding blocking for new insertions, then this could deadlock.  Decoders need to be aware of 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/issues/1370#issuecomment-391554283

---

From: afrind <[email-masked]>
Date: Fri, 25 May 2018 15:55:03 -0700

@martinthomson : are you saying that a decoder can't rely exclusively on this ack mechanism or risk deadlock -- eg: if largest reference is less than base index the decoder should be sure to ack the remainder.  Or something else?

-- 
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/1370#issuecomment-392207915

---

From: Martin Thomson <[email-masked]>
Date: Sun, 27 May 2018 02:38:16 -0700

My point was that unless we require encoders to understand this "implicit" or indirect acknowledgement, then we risk them getting into a situation where the decoder thinks that it acknowledged something, but the encoder still believes it to be outstanding.

-- 
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/1370#issuecomment-392318151

---

From: afrind <[email-masked]>
Date: Mon, 28 May 2018 16:45:02 -0700

Yes, if we allow decoders to do this then it's a MUST for encoders to support it.

-- 
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/1370#issuecomment-392617942