Draft: draft-ietf-quic-recovery

Commentary: This essentially rewrites these small sections . The definitions are new . The text on how the congestion window increases is just tweaked . The reaction to loss is moved to the congestion avoidance section , to avoid repetition . 
 I 'll rebase this on when that lands . The only thing that I think this will clobber ( and so I need to capture ) are the MUST statements that define AIMD . 
 This is a very good change . Why do n't you include the diagram in . I drew the same diagram when I tried to understand the recovery draft . :-) 
 This rolls up the normative statements in , so why do n't we wait for that to land first . 
 These are not very crisply defined currently . The congestion controller starts in slow start . Slow start is where the congestion window is less than the slow start threshold . Congestion avoidance is where the congestion window is at least the slow start threshold . 
 BTW , do people prefer to think of this as a two - state system , or three states : ! 
 This would be excellent to add after we 've merged the normatives in . 
 FWIW , I think now that this really is 3 states . Your FSM works for me . 
 Having read this text , I think your comment on the issue is correct -- there are three states here . I think this is good to merge . ? ?
Paragraph (version A):
MUST ignore the ACK Delay field of the ACK frame for packets sent
in the Initial and Handshake packet number space.
Paragraph (version A):
MUST use the lesser of the value reported in ACK Delay field of
the ACK frame and the peer's max_ack_delay transport parameter.
Paragraph (version A):
MUST NOT apply the adjustment if the resulting RTT sample is
smaller than the min_rtt.  This limits the underestimation that a
misreporting peer can cause to the smoothed_rtt.
Paragraph (version B):
As with loss detection, the probe timeout is per packet number space.
That is, a PTO value is computed per packet number space.
Paragraph (version B):
The PTO algorithm used in QUIC implements the reliability functions
of Tail Loss Probe RACK, RTO RFC5681, and F-RTO algorithms for TCP
RFC5682.  The timeout computation is based on TCP's retransmission
timeout period RFC6298.
Paragraph (version A):
The PTO value MUST be set to at least kGranularity, to avoid the
timer expiring immediately.
Paragraph (version B):
The PTO period MUST be at least kGranularity, to avoid the timer
expiring immediately.
Paragraph (version B):
When ack-eliciting packets in multiple packet number spaces are in
flight, the timer MUST be set to the earlier value of the Initial and
Handshake packet number spaces.
Paragraph (version B):
A NewReno sender is in slow start any time the congestion window is
below the slow start threshold.  A sender begins in slow start
because the slow start threshold is initialized to an infinite value.
Paragraph (version B):
While a sender is in slow start, the congestion window increases by
the number of bytes acknowledged when each acknowledgment is
processed.  This results in exponential growth of the congestion
window.
Paragraph (version B):
A sender exits slow start and enters congestion avoidance when a
packet is lost or when the ECN-CE count increases.
Paragraph (version B):
A NewReno sender in congestion avoidance any time the congestion
window is at or above the slow start threshold.
Paragraph (version B):
Congestion avoidance uses an Additive Increase Multiplicative
Decrease (AIMD) approach that increases the congestion window by one
maximum datagram size per congestion window acknowledged.  A sender
MUST NOT increase the congestion window by more than this amount.
Paragraph (version B):
halve the congestion window,
Paragraph (version B):
enter the recovery period.
Paragraph (version B):
A NewReno sender enters the recovery period when it detects loss or
an ECN-CE mark is received.  A recovery period ends when a packet
sent during the recovery period is acknowledged.
Paragraph (version B):
On entering a recovery period, a sender MUST set the slow start
threshold to half the value of the congestion window at the moment
that loss is detected.  The congestion window MUST be set to the
reduced value of the slow start threshold before exiting the recovery
period.
Paragraph (version B):
Implementations MAY set the congestion window immediately on entering
a recovery period or use other mechanisms, such as Proportional Rate
Reduction (PRR), to reduce it more gradually.  If the congestion
window is reduced immediately, a single packet can be sent prior to
reduction.  This speeds up loss recovery if the data in the lost
packet is retransmitted and is similar to TCP as described in
Section 5 of RFC6675.