Subject: Re: [quicwg/base-drafts] Rewrite section on ack range limiting (#3315)
From: Kazuho Oku <[email-masked]>
To: quicwg/base-drafts <[email-masked]>
Cc: Subscribed <[email-masked]>
Date: Wed, 01 Jan 2020 16:54:05 -0800
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>

kazuho commented on this pull request.

LGTM modulo one paragraph.

> -
-To limit receiver state or the size of ACK frames, a receiver MAY limit the
-number of ACK Ranges it sends.  A receiver can do this even without receiving
-acknowledgment of its ACK frames, with the knowledge this could cause the sender
-to unnecessarily retransmit some data.  Standard QUIC algorithms
-({{QUIC-RECOVERY}}) declare packets lost after sufficiently newer packets are
-acknowledged.  Therefore, the receiver SHOULD repeatedly acknowledge newly
-received packets in preference to packets received in the past.
+A receiver MAY limit the number of ACK Ranges it sends to limit receiver state
+and the size of ACK frames.  A receiver SHOULD track which ACK frames have been
+acknowledged by its peer, so that it can limit ACK Ranges ({{ack-ranges}}) to
+those not yet acknowledged by the sender.
+
+It is possible that the ACK frame is too large, despite limiting ACK Ranges to
+those not yet acknowledged. A receiver can stop repeating unacknowledged ACK
+Ranges to further limit the size of the ACK frame.  When doing so, a receiver

I am confused by this sentence due to the following two reasons:

* It talks about repeating "unacked ranges". But actually, a receiver does not repeatedly transmit the same ranges. For example, when the receiver first transmits an ACK range of 1 to 3, then receives PN 4, the ACK frame transmitted the next time will contain an ACK range of 1 to 4 instead of 1 to 3. Therefore, I think we'd better talk about "packet numbers" rather than "ACK ranges."
* The sentence, due to the use of the term "repeating," might be read to imply that the receiver should emit an acknowledgement of a received packet at least once. But there is not such a requirement - it might be a good idea to drop "repeating."

> -number of ACK Ranges it sends.  A receiver can do this even without receiving
-acknowledgment of its ACK frames, with the knowledge this could cause the sender
-to unnecessarily retransmit some data.  Standard QUIC algorithms
-({{QUIC-RECOVERY}}) declare packets lost after sufficiently newer packets are
-acknowledged.  Therefore, the receiver SHOULD repeatedly acknowledge newly
-received packets in preference to packets received in the past.
+A receiver MAY limit the number of ACK Ranges it sends to limit receiver state
+and the size of ACK frames.  A receiver SHOULD track which ACK frames have been
+acknowledged by its peer, so that it can limit ACK Ranges ({{ack-ranges}}) to
+those not yet acknowledged by the sender.
+
+It is possible that the ACK frame is too large, despite limiting ACK Ranges to
+those not yet acknowledged. A receiver can stop repeating unacknowledged ACK
+Ranges to further limit the size of the ACK frame.  When doing so, a receiver
+SHOULD give preference to acknowledging newly received packets to those received
+earlier.  It is possible that such ACK Ranges are not received by the sender

I understand that this sentence is a copy from existing text, but I am not sure "prefer newly received packets" is the correct advice. Shouldn't we better suggest "prefer greater packet numbers"?

The answer might depend on if we assume an endpoint to emit an acknowledgement for a newly received packet at least once, but as stated above, I do not think it is a good idea to assume 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/pull/3315#pullrequestreview-337512763