Re: [tcpm] Comments on draft-ietf-tcpm-accurate-ecn-14

Bob Briscoe <> Mon, 22 March 2021 12:04 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E50273A12BD for <>; Mon, 22 Mar 2021 05:04:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 0.774
X-Spam-Status: No, score=0.774 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.972, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id yL6uo9V2T5_Q for <>; Mon, 22 Mar 2021 05:04:42 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 4D6B03A12BC for <>; Mon, 22 Mar 2021 05:04:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;; s=default; h=Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=t0cyDaDwDiMdWGhagscE5IInSigx3eKJG4ML7eAZPc4=; b=zZJ/s/8KmzRvkcQsnIODpRQn2 yzSrWKOfSBUDnkFBq2nsKVqahzjIKQGn07GWqwzTXT26GXbR9cWMsgShGSITFrYxas2IL/s/HSzO+ /2JlXMIGx15JClkHbVLDGVbc8BWRLNUiSPwZ5BIlWpOXHEmfebuSHaRxNvPZkZZVfI56cn6H80QNC mm9+KIXdx1qL1TiiRVgtveoZjN+vO2MQBWUrOY6tNdIpbZYBGjn3c7IGmCN9iWlQuC16hpYQk1GGF V1SdrzEKiCqUBYxraY6/7TRHY7r5Zvm/E17z65vnE0DrppXkXXYPia0aU07LcLTfs6bIxQafazxYT FJGvd4/EA==;
Received: from ([]:45588 helo=[]) by with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <>) id 1lOJIW-0005r8-BJ; Mon, 22 Mar 2021 12:04:40 +0000
To: Gorry Fairhurst <>, tcpm IETF list <>
Cc: Mirja Kuehlewind <>
References: <>
From: Bob Briscoe <>
Message-ID: <>
Date: Mon, 22 Mar 2021 12:04:38 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: multipart/alternative; boundary="------------4AAA6D6FF637B0B1511E5C4C"
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
X-Get-Message-Sender-Via: authenticated_id:
Archived-At: <>
Subject: Re: [tcpm] Comments on draft-ietf-tcpm-accurate-ecn-14
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 22 Mar 2021 12:04:48 -0000


Thank you for this additional review.

On 12/03/2021 11:50, Gorry Fairhurst wrote:
> Abstract:
> /Given TCP header
>    space is scarce, this allocates a reserved header bit, that was
>    previously used for the ECN-Nonce which has now been declared
>    historic. /
> - English: /which/that/ /that/which/ perhaps??
> - However, I wonder if this is necessary in the abstract, surely a 
> reader of the abstract in future would only need to know:
> /This allocates a reserved header bit, previously used for the 
> ECN-Nonce./

[BB] Done, except I've said:
"previously assigned to the ECN-Nonce" rather than "used by", since it's 
unclear how much actual use it got.

I also thought the following would be better, now that this updates 
s/ECN is specified for TCP in such a way that only one feedback signal 
can be transmitted per Round-Trip Time (RTT)./
  /ECN was originally specified for TCP in such a way that only one 
feedback signal can be transmitted per Round-Trip Time (RTT)./

> I also do wonder if the abstract still rather complicated (aka long)?

[BB] It's 202 words. I'd rather leave it as it is if your objection 
isn't particularly strong.

> ——
> Section 2.5:
> /According to [RFC3168] the Data Sender is meant to
>    set control packets to Not-ECT.  However, mechanisms in certain
>    private networks (e.g. data centres) set control packets to be ECN
>    capable because they are precisely the packets that performance
>    depends on most./
> - I think /set/ is rather odd.
> - Can we talk about the /ECN IP field/ being set (as used later) ?

[BB] I don't think 'set' is odd. IMO, it seems like the most natural 
word to use. Do you have a preferred alternative?

But I agree it's useful to distinguish the IP-ECN field from TCP ECN 
flags. Indeed, I've run through the whole of section 2, and clarified 
where it is talking about the IP-ECN field.

> ——
> Two questions in the same sentence on p16, starting /So, without these 
> rules/:
> /could end up/
> - this seems possibly one of those phrases that confuses non-native 
> speakers?

[BB] I'm not sure what you think the problem is.
Possibly the two 'withouts'?
I tried this:

/So, without these rules, the two peers could end up using different 
feedback modes without knowing it./
Option 1:
/So, without these rules, the two peers could end up using different 
feedback modes unknowingly./
Option 2:
/So, in the absence of these rules, the two peers could end up using 
different feedback modes without knowing it./

A US-English speaker might use 'absent these rules', but I think the 
longer British English above is equally understood in the US. Can 
someone confirm that?

I tried unwittingly instead of unknowingly, but I think that is a bit 
obscure for non-native English speakers.

I've gone for Option 2, but pls suggest something else, if you'd prefer it.

> /using difference feedback modes/
> - is that word really difference not different?

[BB] Thx - different was meant.

> ——
> Section 3.2
> /3.3.2.  Requirements for TCP Normalizers/
> I like the introduction of subheadings within 3.2, because it helps 
> people find the part of the spec they need to see - especially 
> important when the implementer only needs to understand one aspect in 
> detail, however, I wonder if this second part needs a separate heading:
> /A middlebox claiming to be transparent/
> … really only for normalisers? - I expected this to be relevant to any 
> “transparent” middlebox”
> - would it be better with a separate subsection for this important point?

[BB] Just before your review, I had proposed to my co-authors that we 
should change this para. Now, from your comments, I see that the scope 
of the whole section needs clarifying. The idea was that a set of TCP 
headers that complies with the RFCs can either
a) remain completely unchanged (e.g. transparent performance enhancement)
b) be 'normalized' to a narrower interpretation of the RFCs, which might 
not always be up to date (e.g. an intrusion detection system).

I'd rather draw this fine line within a single section, because it's too 
difficult for two section headings to describe the difference well 
enough. I've also removed some gratuitous criticism of middleboxes, 
which won't encourage middlebox vendors to comply. Here's the whole 
rewritten subsection (I avoided a full diff which was too hard to follow):

+3.3.2.  Requirements for Transparent Middleboxes and TCP Normalizers

     Another large class of middleboxes intervenes to some degree at the
     transport layer, but attempts to be transparent (invisible) to the
     end-to-end connection.  A subset of this class of middleboxes
     attempts to `normalize' the TCP wire protocol by checking that all
+   values in header fields comply with a rather narrow interpretation
+   of the TCP specifications that is also not always up to date.

+   A middlebox that is not normalizing the TCP protocol and does not
+   itself act as a back-to-back pair of TCP endpoints (i.e. a middlebox
+   that intends to be transparent or invisible at the transport layer) ought to
     forward the AccECN TCP Option unaltered, whether or not the length
     value matches one of those specified inSection 3.2.3  <>, and whether or
     not the initial values of the byte-counter fields
+   match those inSection 3.2.1  <>.  This is because blocking apparently
+   invalid values prevents the standardized set of values being
     extended in future (given outdated normalizers would block updated
     hosts from using the extended AccECN standard).

+   A TCP normalizer is likely to block or alter an AccECN TCP Option
+   if the length value or the initial values of its byte-counter fields
+   do not match one of those specified inSection 3.2.3  <>  orSection 3.2.1  <>.
+                                                  However, to comply with
+   the present AccECN specification, a middlebox MUST NOT change
+   the ACE field; or those fields of the AccECN Option that are currently
+   specified inSection 3.2.3  <>; or any AccECN field covered by integrity
+   protection (e.g. [RFC5925  <>]).

Note that I've changed the 'MUST' to 'ought to', because this is really 
clarification advice (although the line between advice and protocol 
interop is blurred with middleboxes). I can revert to MUST if the WG 
would prefer.

> —
> I have re-read /3.3.3. Requirements for TCP ACK Filtering/ in -14, and 
> although I am not yet sure of the speculation that using ECN in future 
> is sufficient to regulate the ratio of ACKs to Data, I believe the 
> text is correct in its interpretation of RFC3449, and that the present 
> design is anyway robust to ACK mitigation methods.
> ——
> /Once DCTCP offload hardware supports AccECN/
> … I’m not sure this para is perfected yet, because it is directed at 
> DCTCP. I’d like to consider a reordering that is more like:
> /The above process has been designed to enable a continuing
>  incremental deployment path - to more highly dynamic congestion
>  control.  Once offload hardware supports AccECN, it will be
> able to coalesce efficiently for any sequence of marks, instead of
>  relying for efficiency on the long marking sequences from step
>  marking.  In the next stage, marking can evolve from a step to
> a ramp function.  That in turn will allow host congestion control
> algorithms to respond faster to dynamics, while being backwards
> compatible with existing host algorithms./
> … i.e., do we really have to directly discuss DCTCP here, doesn’t it 
> in general refer to AccECN rather?

[BB] You're right, thank you. Done.

> ——
> Security Considerations:
> The “downgrade attack” regarding a receiver deciding/accidentally 
> omitting an option in the Security Considerations seems incorrect to me.
> To me, the text is written in a way that sounds like it impacts the 
> “security” of the connection. I do not agree with that interpretation. 
> To me, this is a performance reduction, and the degrade does not 
> impact the ability to communicate or security properties. I suggest 
> some rewording here.


    No known way can yet be contrived to take advantage of
    this downgrade attack, but it is mentioned here in case someone else
    can contrive one.


    No known way can yet be contrived for a receiver to take advantage of
    this behaviour, which seems to always degrade its own performance.
    However, the concern is mentioned here for completeness.

> ——
> Security Considerations:
> There’s now also a Security Considerations include a ToDo, that I do 
> not yet understand, look forward to this!

I propose to clarify and cut down the existing text, and to replace the 
"{ToDo}" with the two new sentences below:


    InSection 3.2.3  <>  a Data Sender is allowed to ignore an unrecognized
    TCP AccECN Option length and read as many whole 3-octet fields from
    it as possible up to a maximum of 3, treating the remainder as
    padding.  This opens up a potential covert channel of up to 29B (40 -
    (2+3*3))B. {ToDo...}


    InSection 3.2.3  <>  a Data Sender is allowed to ignore an unrecognized
    TCP AccECN Option length and treat extra octets as padding.  This is
    noted here in case it could be used as a covert channel. The size is
    up to 29 B (40 - (2+3*3)) per packet. However, it is really an overt
    channel (not hidden) and it is no different to the use of unknown
    TCP options with unknown option lengths in general. Therefore, where
    such a channel is of concern, it can already be adequately mitigated
    by regular TCP normalizer technology (see Section 3.3.2).

This also requires the final para to be updated


    The AccECN protocol is not believed to introduce any new privacy
    concerns, because it merely counts and feeds back signals at the
    transport layer that had already been visible at the IP layer.


    The AccECN protocol is not believed to introduce any new privacy
    concerns, because it merely counts and feeds back signals at the
    transport layer that had already been visible at the IP layer. A
    covert channel can be used to compromise privacy. However, as
    explained above, undefined TCP options generally open up such
    channels and common techniques are available to close them off.

I shall also shift this para up one, so that is comes straight after the 
previous discussion of covert channels.

> ——
> Best wishes,
> Gorry

[BB] As always, thank you very much for your continued diligence.


> (P.S. I will send one more specific question in a separate email).

Bob Briscoe