Subject: [tcpm] [Editorial Errata Reported] RFC5681 (6233)

From: RFC Errata System <[email-masked]>
Date: Mon, 20 Jul 2020 07:43:03 -0700 (PDT)

The following errata report has been submitted for RFC5681,
"TCP Congestion Control".

--------------------------------------
You may review the report below and at:
https://www.rfc-editor.org/errata/eid6233

--------------------------------------
Type: Editorial
Reported by: Charles Deng <[email-masked]>

Section: 4.3

Original Text
-------------
Finally, after all loss in the given window of segments
has been successfully retransmitted, cwnd MUST be set to no more than
ssthresh and congestion avoidance MUST be used to further increase
cwnd.

Corrected Text
--------------
Finally, after all loss in the given window of segments
has been successfully retransmitted, cwnd MUST be set to no less than
ssthresh and congestion avoidance MUST be used to further increase
cwnd.

Notes
-----
if set cwnd no more than ssthresh, it will using slow start algorithm instead of congestion avoidance algorithm. so it should say "cwnd no less than ..." instead of "cwnd no more than ...".

Instructions:
-------------
This erratum is currently posted as "Reported". If necessary, please
use "Reply All" to discuss whether it should be verified or
rejected. When a decision is reached, the verifying party  
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC5681 (draft-ietf-tcpm-rfc2581bis-07)
--------------------------------------
Title               : TCP Congestion Control
Publication Date    : September 2009
Author(s)           : M. Allman, V. Paxson, E. Blanton
Category            : DRAFT STANDARD
Source              : TCP Maintenance and Minor Extensions
Area                : Transport
Stream              : IETF
Verifying Party     : IESG

---

From: "Mark Allman" <[email-masked]>
Date: Mon, 20 Jul 2020 11:08:32 -0400

> "TCP Congestion Control".

This is not editorial as it would change the allowed operation of
the algorithms.

> if set cwnd no more than ssthresh, it will using slow start
> algorithm instead of congestion avoidance algorithm. so it should
> say "cwnd no less than ..." instead of "cwnd no more than ...".

This is incorrect and the errata should be rejected.

The wording isn't particularly great, but the idea is that at the
end of the loss period we want cwnd to be half of the outstanding
data when we first detected loss.  And, in particular, we
**certainly do not want** cwnd to be LARGER than half the
outstanding data when loss occurred.  And, by saying "cwnd MUST be
no **LESS**" we are specifying that it must be larger-than-half.
So, this language is a clearly both (a) a non-editorial algorithm
change and (b) wrong.

The wording leads to the confusion, however, I think.  If one were
to set cwnd to less than ssthresh (hence being more conservative)
then we'd probably slow start to ssthresh before entering congestion
avoidance, as the proposed errata notes.

If I were to do anything here I think I'd strike "and congestion
avoidance MUST be used to further increase cwnd" from the end of the
sentence.  I.e., just let what naturally happens happen.  But, the
current text is conservative.  And, it may well be that we actually
meant to use CA in this case even if cwnd < ssthresh for some reason
I am mis-remembering.  So, I'd want to page all that back in before
agreeing with any errata.  I am not sure it's really that big of a
problem to worry about.

allman

---

From: "Vern Paxson" <[email-masked]>
Date: Mon, 20 Jul 2020 08:11:12 -0700

On 20 Jul 2020, at 8:08, Mark Allman wrote:

> [stuff that all matches my read, too]

-- Vern

---

From: Ethan Blanton <[email-masked]>
Date: Mon, 20 Jul 2020 11:21:09 -0400

> This is incorrect and the errata should be rejected.

Agreed, for the reasons Mark mentioned.

> agreeing with any errata.  I am not sure it's really that big of a

I do not recall any reason that we must use CA instead of SS for the
case of cwnd < ssthresh, but I also know that these things are very
subtle and required a lot of discussion, so I am not too keen on
trying to amend this errata or propose a new errata to handle that
case.  I believe that the current document is correct in this point,
and that while it could possibly be clarified, a careful reading is
still adequate to understand the intent.

Ethan

---

From: "Charles Deng" <[email-masked]>
Date: Tue, 21 Jul 2020 18:33:56 +0800

Hi Mark,

&nbsp; &nbsp;Thanks for your clarification. I got understand that the cwnd should be set to no more than ssthresh.

&gt;&gt;And, it may well be that we actually meant to use CA in this case even if cwnd < ssthresh for some reason I am mis-remembering.&nbsp;

&nbsp; &nbsp;but can you kindly clarify that a scenario TCP need get following CA rules when cwnd < ssthresh ?&nbsp; if there is a such scenario, it means TCP cannot only following rules of CA or SS according to values of cwnd and ssthresh but state flags something like SS state and CA state.

Best wishes
charles
&nbsp;
------------------&nbsp;Original&nbsp;------------------
From: &nbsp;"Mark Allman"<[email-masked]&gt;;
Date: &nbsp;Mon, Jul 20, 2020 11:08 PM
To: &nbsp;"RFC Errata System"<[email-masked]&gt;; 
Cc: &nbsp;"vern"<[email-masked]&gt;; "eblanton"<[email-masked]&gt;; "martin.h.duke"<[email-masked]&gt;; "magnus.westerlund"<[email-masked]&gt;; "michael.scharf"<[email-masked]&gt;; "tuexen"<[email-masked]&gt;; "nsd.ietf"<[email-masked]&gt;; "cdeng"<[email-masked]&gt;; "tcpm"<[email-masked]&gt;; "Ethan Blanton"<[email-masked]&gt;; 
Subject: &nbsp;Re: [Editorial Errata Reported] RFC5681 (6233)

&nbsp;

&gt; The following errata report has been submitted for RFC5681,
&gt; "TCP Congestion Control".
&gt;
&gt; --------------------------------------
&gt; Type: Editorial
&gt; Reported by: Charles Deng <[email-masked]&gt;

&gt; Section: 4.3
&gt;
&gt; Original Text
&gt; -------------
&gt; Finally, after all loss in the given window of segments
&gt; has been successfully retransmitted, cwnd MUST be set to no more than
&gt; ssthresh and congestion avoidance MUST be used to further increase
&gt; cwnd.
&gt;
&gt; Corrected Text
&gt; --------------
&gt; Finally, after all loss in the given window of segments
&gt; has been successfully retransmitted, cwnd MUST be set to no less than
&gt; ssthresh and congestion avoidance MUST be used to further increase
&gt; cwnd.
&gt;
&gt; Notes
&gt; -----
&gt; if set cwnd no more than ssthresh, it will using slow start
&gt; algorithm instead of congestion avoidance algorithm. so it should
&gt; say "cwnd no less than ..." instead of "cwnd no more than ...".

The wording isn't particularly great, but the idea is that at the
end of the loss period we want cwnd to be half of the outstanding
data when we first detected loss.&nbsp; And, in particular, we
**certainly do not want** cwnd to be LARGER than half the
outstanding data when loss occurred.&nbsp; And, by saying "cwnd MUST be
no **LESS**" we are specifying that it must be larger-than-half.
So, this language is a clearly both (a) a non-editorial algorithm
change and (b) wrong.

The wording leads to the confusion, however, I think.&nbsp; If one were
to set cwnd to less than ssthresh (hence being more conservative)
then we'd probably slow start to ssthresh before entering congestion
avoidance, as the proposed errata notes.

If I were to do anything here I think I'd strike "and congestion
avoidance MUST be used to further increase cwnd" from the end of the
sentence.&nbsp; I.e., just let what naturally happens happen.&nbsp; But, the
current text is conservative.&nbsp; And, it may well be that we actually
meant to use CA in this case even if cwnd < ssthresh for some reason
I am mis-remembering.&nbsp; So, I'd want to page all that back in before
agreeing with any errata.&nbsp; I am not sure it's really that big of a
problem to worry about.

allman