If we revisit this, maybe we should also revisit the style of the spec.
What to do on a PTO is a tradeoff. Send small probes to check trigger an
acknowledgement and possibly a packet number based retransmission is
efficient but a bit slow. Resend one of the missing packets may waste a
bit of bandwidth if that packet was in fact received, but saves 1 RTT.
resend all pending packets wastes even more bandwidth, etc.
Any of these options makes sense, in some conditions. What we see here
is the WG trying very hard to come with what they believe is the "best
tradeoff", and then writing a statement that "developers MUST do this".
I think it would be better to explain the tradeoffs, present the
downsides of various choices, and use tell the developers what they
SHOULD do in the general case.
On 4/24/2023 3:04 PM, Martin Thomson wrote:
I opened https://github.com/quicwg/base-drafts/issues/5000 to track this (it's
our only issue, but I see no reason not to save this).
On Tue, Apr 25, 2023, at 07:11, Ian Swett wrote:
You're correct that this sentence is in contrast to the first sentence
of the section:
"When a PTO timer expires, a sender MUST send at least one
ack-eliciting packet in the packet number space as a probe."
The intent was 2, that when there is no unsent or unacknowledged data
available, a sender MAY mark all packets in flight as lost. As an
individual, I would not recommend this, but in the same way we allow
retransmitting packet contents in their entirety, we allow this.
I agree this is slightly unclear and whenever we do 9002bis, it'd be
ideal to clarify this.
Ian
On Thu, Apr 20, 2023 at 3:13 AM Timo Völker <[email protected]> wrote:
Hi,
I wonder what the word “Alternatively” refers to in RFC9002 Section 6.2.4.
Sending Probe Packets.
I would summarize the Section before the word as follows:
"When a PTO timer expires, a sender MUST send at least one ack-eliciting packet
[...]
An endpoint SHOULD include new data in packets that are sent on PTO expiration.
Previously sent data MAY be sent if no new data can be sent. [...]
When there is no data to send, the sender SHOULD send a PING or other ack-eliciting
frame in a single packet, rearming the PTO timer."
Then, the sentence that confuses me:
"Alternatively, instead of sending an ack-eliciting packet, the sender MAY mark any
packets still in flight as lost."
Alternatively to what?
(1) Alternatively to send a probe packet at all.
Or
(2) Alternatively to send a probe packet in case the sender has no unsent or
previously sent data available?
Based on the history of the Section, my guess is (2). But, I can’t tell based
on the current text. Since both options are in contrast to the first sentence
of the Section, I might have missed something.
Timo