Draft: draft-ietf-quic-recovery

Commentary: Clarifies a few points and moves the initial window recommendation from the pseudocode to the text . I could take this a bit farther , but I 'd like suggestions on what 's currently missing in this PR . 
 LGTM 
 It starts like this : The next sections below roughly describe the behavior of different phases of congestion control . More concrete pseudo - code is only given in the Appendix later on but it 's not linked from the original section . On first reading , I missed the Appendix and felt the text lacking for concrete enough explanations to implement the feature . The question is what to describe where and what the authoritative definitions should be . If you know the NewReno RFC by heart you can probably make the right inferences to figure out how everything should work in comparison but is that how it should be ? An alternative ( more convenient for the reader / skimmer ) approach could be to mention NewReno only in passing and then provide a complete and self - contained description of the algorithms in the congestion control section directly , maybe even inlining the pseudo - code . If that is deemed to verbose and would bore readers that know enough about those algorithms already , it would be good to provide some guidance how to read the algorithm and what the assumptions are in the introductory paragraph about congestion control . 
 The intent is that the text is complete without reading the referenced RFCs or pseudocode , so I think this section needs more text and possibly some inlined pseudo - code . 
 Hi I wrote which fixes some obvious errors I found , but I think more could be done . Can you take a look and tell me what other points you 'd like or moved up from the pseudocode ? 
 Looks good ! Thanks !
Paragraph (version A):
This document specifies a Reno congestion controller for QUIC
RFC6582.
Paragraph (version B):
This document specifies a congestion controller for QUIC similar to
TCP NewReno RFC6582.
Paragraph (version A):
QUIC begins every connection in slow start and exits slow start upon
loss or upon increase in the ECN-CE counter.  QUIC re-enters slow
start any time the congestion window is less than ssthresh, which
only occurs after persistent congestion is declared.  While in slow
start, QUIC increases the congestion window by the number of bytes
acknowledged when each acknowledgment is processed.
Paragraph (version A):
Slow start exits to congestion avoidance.  Congestion avoidance in
NewReno uses an additive increase multiplicative decrease (AIMD)
approach that increases the congestion window by one maximum packet
size per congestion window acknowledged.  When a loss is detected,
NewReno halves the congestion window and sets the slow start
threshold to the new congestion window.
Paragraph (version B):
QUIC begins every connection in slow start with the congestion window
set to an initial value.  Endpoints SHOULD use an initial congestion
window of 10 times the maximum datagram size (max_datagram_size),
limited to the larger of 14720 or twice the maximum datagram size.
This follows the analysis and recommendations in RFC6928, increasing
the byte limit to account for the smaller 8 byte overhead of UDP
compared to the 20 byte overhead for TCP.
Paragraph (version B):
The minimum congestion window is the smallest value the congestion
window can decrease to as a response to loss, ECN-CE, or persistent
congestion.  The RECOMMENDED value is 2 * max_datagram_size.
Paragraph (version B):
While in slow start, QUIC increases the congestion window by the
number of bytes acknowledged when each acknowledgment is processed,
resulting in exponential growth of the congestion window.
Paragraph (version B):
QUIC exits slow start upon loss or upon increase in the ECN-CE
counter.  When slow start is exited, the congestion window halves and
the slow start threshold is set to the new congestion window.  QUIC
re-enters slow start any time the congestion window is less than the
slow start threshold, which only occurs after persistent congestion
is declared.
Paragraph (version B):
Slow start exits to congestion avoidance.  Congestion avoidance uses
an additive increase multiplicative decrease (AIMD) approach that
increases the congestion window by one maximum packet size per
congestion window acknowledged.  When a loss or ECN-CE marking is
detected, NewReno halves the congestion window and sets the slow
start threshold to the new congestion window.