Subject: Re: [tsvwg] [Editorial Errata Reported] RFC3168 (5966)

From: Mirja Kuehlewind <[email-masked]>
Date: Wed, 4 Mar 2020 11:12:02 +0100

Hi tsvwg,

Another errata on RFC3168.

I think this whole errata is a change that goes beyond just being an errata, therefore I would suggest to mark this as “Held for Document Update”.

I guess we could have an errata for only adding the word “new” in section 6.1 but that would need to be a separate errata then. 

Any opinions?

Mirja

> On 26. Jan 2020, at 01:57, RFC Errata System <[email-masked]> wrote:
> 
> The following errata report has been submitted for RFC3168,
> "The Addition of Explicit Congestion Notification (ECN) to IP".
> 
> --------------------------------------
> You may review the report below and at:
> https://www.rfc-editor.org/errata/eid5966
> 
> --------------------------------------
> Type: Editorial
> Reported by: Richard Scheffenegger <[email-masked]>
> 
> Section: 6.1
> 
> Original Text
> -------------
> Section 6.1 states:
> 
>      * The sender sets the CWR flag in the TCP header of the next
>        packet sent to the receiver to acknowledge its receipt of and
>        reaction to the ECN-Echo flag.
> 
> section 6.1.2 clarifies:
> 
> 
>   We ensure that the "Congestion Window Reduced" information is
>   reliably delivered to the TCP receiver.  This comes about from the
>   fact that if the new data packet carrying the CWR flag is dropped,
>   then the TCP sender will have to again reduce its congestion window,
>   and send another new data packet with the CWR flag set.  Thus, the
>   CWR bit in the TCP header SHOULD NOT be set on retransmitted packets.
> 
>   When the TCP data sender is ready to set the CWR bit after reducing
>   the congestion window, it SHOULD set the CWR bit only on the first
>   new data packet that it transmits.
> 
> Corrected Text
> --------------
> Section 6.1 should say:
> 
> 
>      * The sender sets the CWR flag in the TCP header of the next new 
>        data packet sent to the receiver to acknowledge its receipt of and
>        reaction to the ECN-Echo flag.
> 
> Section 6.1.2 should clarify, that a receiver MUST process an incoming CWR 
> on any incoming segment, and not exclude non-new-data segments.
> 
> This clarification allows new semantics to be used by a sender-side only 
> change, and should be taken into account by all documents updating RFC3168.  
> 
> Notes
> -----
> Discrepancies in the above text lead to poorly interoperating implementations. In NetBSD (and derived implementationd), the "SHOULD set CWR on new data" was used liberal in setting CWR on the very next packet to be sent, regardless of type. While at the same time the Linux implementation performed very stingent tests on the receiver side, if the sender was complying with the "SHOULD" like a "MUST". In request-response session with frequently changing data direction, this leads to a collapse of the congestion window, as the *BSD side will continue to interpret the still latched ECE flag as an indication of another RTT of congestion.
> 
> 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. 
> 
> --------------------------------------
> RFC3168 (draft-ietf-tsvwg-ecn-04)
> --------------------------------------
> Title               : The Addition of Explicit Congestion Notification (ECN) to IP
> Publication Date    : September 2001
> Author(s)           : K. Ramakrishnan, S. Floyd, D. Black
> Category            : PROPOSED STANDARD
> Source              : Transport Area Working Group
> Area                : Transport
> Stream              : IETF
> Verifying Party     : IESG
>

---

From: "Richard Scheffenegger" <[email-masked]>
Date: Wed, 4 Mar 2020 11:45:48 +0100

I think clarification of the CWR handling should also be mentioned in ECN++,
since ECT setting there is allowed on every packet.

In the fbsd environment, as 3168 allows ECT only on new data packets while
sending, it is easy to send out CWR only when ECT is also set (in the same
check).

Simply enhancing this in ECN++ to allow setting ECT on any packet, may
result in also sending CWR on control packets without data. And Bob made a
compelling case, a sender needs to reliably know when a window, during which
congestion occured, ends (that is, sending cwr only with new data, or
differently, setting cwr when the octete snd_max+1 is sent in the stream.

E.g. in ecn++, the below corrected text would be prudent to have.

Best regards,
   Richard

----- Original Message -----
From: "Mirja Kuehlewind" <[email-masked]>
To: <[email-masked]>
Cc: <[email-masked]>; <[email-masked]>; "Magnus Westerlund"
<[email-masked]>; <[email-masked]>; "Gorry Fairhurst"
<[email-masked]>; "Wesley Eddy" <[email-masked]>; "Richard
Scheffenegger" <[email-masked]>
Sent: Wednesday, March 04, 2020 11:12 AM
Subject: Re: [Editorial Errata Reported] RFC3168 (5966)

Hi tsvwg,

I think this whole errata is a change that goes beyond just being an errata,
therefore I would suggest to mark this as “Held for Document Update”.

I guess we could have an errata for only adding the word “new” in section
6.1 but that would need to be a separate errata then.

Any opinions?

Mirja

> Discrepancies in the above text lead to poorly interoperating
> implementations. In NetBSD (and derived implementationd), the "SHOULD set
> CWR on new data" was used liberal in setting CWR on the very next packet
> to be sent, regardless of type. While at the same time the Linux
> implementation performed very stingent tests on the receiver side, if the
> sender was complying with the "SHOULD" like a "MUST". In request-response
> session with frequently changing data direction, this leads to a collapse
> of the congestion window, as the *BSD side will continue to interpret the
> still latched ECE flag as an indication of another RTT of congestion.
>
> Instructions:
> -------------