Subject: Re: [quicwg/base-drafts] Does a timestamp for a packet implicity ACK it (#698)

From: martinduke <[email-masked]>
Date: Wed, 06 Sep 2017 19:12:58 +0000 (UTC)

> to say that one MUST not specify timestamps that don't have corresponding ack blocks

I actually would go the other way on this. If we are expected to send timestamps in most cases anyway, there is zero information added to also have a sack block for that data. If the ACK frame is lost, it's perfectly fine to later represent the receipt of that packet as an ack block.

But IMO receivers MUST interpret timestamps as an acknowledgement. Senders:
- MUST represent receipt of a packet as either a timestamp OR an ack block in a single ACK frame.
- SHOULD represent it as a timestamp when first attempting to ack the 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/issues/698#issuecomment-327584965

---

From: martinduke <[email-masked]>
Date: Wed, 06 Sep 2017 13:50:33 -0700

@mnot Can we mark this for "needs discussion?" There are a lot of issues (which I need to write up) with norms and formatting for the ACK frame, but this fundamental issue is key to resolving those issues.

-- 
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/698#issuecomment-327608956

---

From: janaiyengar <[email-masked]>
Date: Wed, 06 Sep 2017 14:06:52 -0700

@martinduke: I agree with you in theory that a timestamp semantically is an ack. That said, I can't see why a receiver would send a timestamp but not an ack for it -- that seems backwards. Timestamps are advisory in that they may or may not be received, and they tend to be sent just once. 

Acks are the "primary" information here. It is much simpler to write out all the ack blocks and then fit all the timestamps you can within a frame, than to have rules that mix and match both. Making the receiver never send timestamps for packets that are not being acked in the frame makes it clear what the expected behavior is, and simplifies parsing the ack frame.

-- 
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/698#issuecomment-327612919

---

From: martinduke <[email-masked]>
Date: Wed, 06 Sep 2017 14:13:38 -0700

I'm not suggesting that we get rid of ack blocks. But if recommend that people send timestamps once, making them also send an ack block in that frame is perverse. It is very easy for a receiver to cross off a packet if it sees either one. Making it check for both also makes things harder.

When the timestamp is lost, I am all for the retransmission including just ack blocks.

-- 
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/698#issuecomment-327614368

---

From: ekr <[email-masked]>
Date: Wed, 06 Sep 2017 14:18:24 -0700

I agree with @martinduke that we should discuss this. I would prefer one of two choices:

- Merge them (so you only have to say it once)
- Make it impossible to say inconsistent things (e.g., by having an optional Timestamp attached to each ACK block that refers to the highest numbered ACK in each block or something)

-- 
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/698#issuecomment-327615368