@@ -262,9 +262,42 @@ alarm for TCP as well, and this document incorporates this advancement.
262262
263263# # Timer-based Detection
264264
265- Timer-based loss detection implements the spirit of TCP's Tail Loss Probe
265+ Timer-based loss detection implements a handshake retransmission timer that
266+ is optimized for QUIC as well as the spirit of TCP's Tail Loss Probe
266267and Retransmission Timeout mechanisms.
267268
269+ # ## Handshake Timeout
270+
271+ Handshake packets, which contain STREAM frames for stream 0, are critical to
272+ QUIC transport and crypto negotiation, so a separate alarm is used for them.
273+
274+ The initial handshake timeout SHOULD be set to twice the initial RTT.
275+
276+ At the beginning, there are no prior RTT samples within a connection.
277+ Resumed connections over the same network SHOULD use the previous
278+ connection's final smoothed RTT value as the resumed connection's initial RTT.
279+
280+ If no previous RTT is available, or if the network changes, the initial RTT
281+ SHOULD be set to 100ms.
282+
283+ When a handshake packet is sent, the sender SHOULD set an alarm for the
284+ handshake timeout period.
285+
286+ When the alarm fires, the sender MUST retransmit all unacknowledged handshake
287+ data, by calling RetransmitAllUnackedHandshakeData(). On each consecutive
288+ firing of the handshake alarm, the sender SHOULD double the handshake timeout
289+ and set an alarm for this period.
290+
291+ When an acknowledgement is received for a handshake packet, the new RTT is
292+ computed and the alarm SHOULD be set for twice the newly computed smoothed RTT.
293+
294+ Handshake data may be cancelled by handshake state transitions. In particular,
295+ all non-protected data SHOULD no longer be transmitted once packet protection
296+ is available.
297+
298+ (TODO : Work this section some more. Add text on client vs. server, and on
299+ stateless retry.)
300+
268301# ## Tail Loss Probe {#tlp}
269302
270303The algorithm described in this section is an adaptation of the Tail Loss Probe
@@ -365,38 +398,6 @@ A packet sent on an RTO alarm MUST NOT be blocked by the sender's congestion
365398controller. A sender MUST however count these bytes as additional bytes in
366399flight, since this packet adds network load without establishing packet loss.
367400
368-
369- # ## Handshake Timeout
370-
371- Handshake packets, which contain STREAM frames for stream 0, are critical to
372- QUIC transport and crypto negotiation, so a separate alarm is used for them.
373-
374- The initial handshake timeout SHOULD be set to twice the initial RTT.
375-
376- At the beginning, there are no prior RTT samples within a connection.
377- Resumed connections over the same network SHOULD use the previous
378- connection's final smoothed RTT value as the resumed connection's initial RTT.
379-
380- If no previous RTT is available, or if the network changes, the initial RTT
381- SHOULD be set to 100ms.
382-
383- When a handshake packet is sent, the sender SHOULD set an alarm for the
384- handshake timeout period.
385-
386- When the alarm fires, the sender MUST retransmit all unacknowledged handshake
387- data. On each consecutive firing of the handshake alarm, the sender SHOULD
388- double the handshake timeout and set an alarm for this period.
389-
390- When an acknowledgement is received for a handshake packet, the new RTT is
391- computed and the alarm SHOULD be set for twice the newly computed smoothed RTT.
392-
393- Handshake data may be cancelled by handshake state transitions. In particular,
394- all non-protected data SHOULD no longer be transmitted once packet protection
395- is available.
396-
397- (TODO : Work this section some more. Add text on client vs. server, and on
398- stateless retry.)
399-
400401# # Generating Acknowledgements
401402
402403QUIC SHOULD delay sending acknowledgements in response to packets,
0 commit comments