Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-23
Markku Kojo <kojo@cs.helsinki.fi> Sun, 26 March 2023 07:53 UTC
Return-Path: <kojo@cs.helsinki.fi>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D63E6C151B23 for <tcpm@ietfa.amsl.com>; Sun, 26 Mar 2023 00:53:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Level:
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cs.helsinki.fi
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0To-CDJXpT6E for <tcpm@ietfa.amsl.com>; Sun, 26 Mar 2023 00:53:05 -0700 (PDT)
Received: from script.cs.helsinki.fi (script.cs.helsinki.fi [128.214.11.1]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8AE22C1516F2 for <tcpm@ietf.org>; Sun, 26 Mar 2023 00:53:00 -0700 (PDT)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Sun, 26 Mar 2023 10:52:57 +0300
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.helsinki.fi; h=date:from:to:subject:in-reply-to:message-id:references :mime-version:content-type; s=dkim20130528; bh=VhbaB/kLrTV7NTpdX 70XNe6q9IlWgRSPOpq8sLzyWEo=; b=ZfNTOH5aSq6oew384LMCIp+Ghb6ow3g6Y xIxUZYs1QUiyu1RvKGuI6Bqq87a/xlqOm9AM09wKgiViIIOFlitfPbEx8hYzK/od msDCjLd4n71VLfHQtKATUUOiwpIODVgTdT+ACSlXDTycMnydingKoggOvx6BoMvA FSRV/gkrQs=
Received: from hp8x-60 (p4139178-ipxg22701hodogaya.kanagawa.ocn.ne.jp [153.129.207.178]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Sun, 26 Mar 2023 10:52:56 +0300 id 00000000005A00CF.00000000641FF9D8.00005E1F
Date: Sun, 26 Mar 2023 10:52:51 +0300
From: Markku Kojo <kojo@cs.helsinki.fi>
To: tcpm <tcpm@ietf.org>
In-Reply-To: <7EC77745-BA44-4CA5-8B14-9430988B7510@fh-muenster.de>
Message-ID: <alpine.DEB.2.21.2303260458560.4394@hp8x-60.cs.helsinki.fi>
References: <7EC77745-BA44-4CA5-8B14-9430988B7510@fh-muenster.de>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"; charset="US-ASCII"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/ad9wFAbYDoRF-XEzp5Qnu2qpEr8>
Subject: Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-23
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 26 Mar 2023 07:53:09 -0000
Dear all, I have reviewed the doc. I didn't pass through all the details that I believe are in good shape. The doc reads well and is very thorough in most part. It is useful and good to have it published. However, there are a few of issues I am concerned about: 1. IANA considerations on allocating/using ECN flags. The design of the ECN negotiation and particularly how it takes into account potential any future ECN alternatives is the correct approach and very much appreciated. However, it is not made explicit in the draft. Instead, the draft hides this important information in the appendix B and discusses elsewhere in the draft, including the Sec 6 on IANA consideration, on the allocation of the AE flag in such a way that it is easily intrepeted as if the AC flag is solely for AccECN use (now and in the future). I'd suggest that the draft and the IANA assignment makes it explicit what the design actually does: it allocates (reassigns) the bit 7 of the TCP header flags to extend the use of the existing ECE and CWR flags in a backwards compatible way. That is, it specifies a three-bit TCP ECN Field out of the AE, ECE, and CWR flags and assigns the codepoint 111 to AccECN for negotiating ECN Capability in its initial SYN of 3whs. For backwards compability codepoint 011 is kept for negotiating Classic ECN in the initial SYN (and 000 for Not-ECN Capability) . After the initial SYN, the use of the TCP ECN Field depends solely on the variant of ECN Capability negotiated, i.e., the TCP ECN Field is overloaded to complete the 3whs as well as to provide ECN feedback during the TCP connection. Consequently, the IANA assignment is best modified to reflect this by introducing a three-bit TCP ECN Field and allocating codepoints 000 (non-ECN-setup SYN), 011 (RFC 3168 ECN-setup SYN), 111 (AccECN ECN-setup SYN) for the ECN-Capability negotiation in the initial SYN segment. I'd also suggest renaming the AE flag to EE (Extended ECN) to better cover also any ECN alternative beyond Classic ECN and not to be tied by name to AccECN only. IMHO, this would make it all much clearer for everyone as well as easier to allocate new codepoints (by IANA) to any future ECN variant negotiation. ==== 2. The requirement for AccECN servers to interpret all ECN codepoints other than 000, 011, and 111 in the initial SYN same as 111, i.e., requesting AccECN. The draft reads in Sec. 3.1.3: If a TCP server that implements AccECN receives a SYN with the three TCP header flags (AE, CWR and ECE) set to any combination other than 000, 011 or 111, it MUST negotiate the use of AccECN as if they had been set to 111. Is this really what it meant to say, or was the intention to say: If a TCP server that implements AccECN receives a SYN with the three TCP header flags (AE, CWR and ECE) set to any combination other than 000, 011 or 111 *and does not understand such a combination*, it MUST negotiate the use of AccECN as if they had been set to 111. If not, then this sounds like too restrictive as in this case any future alternative spec that uses any of the other flag combinations and also supports AccECN would unnecessarily need to update this spec to allow negotiating other than AccECN behaviour. In addition, the crucial pieces from Appendix B explaining the availability of the unused five codepoints for (any) future use is useful to include in the Sec 3.1.3. ==== 3. Acking pure acks. Current text is on the correct track but badly incomplete. The feature of acking Pure Acks in AccECN is introduced kinda as a sidenote in Sec 3.2.2.5.1 when discussing potential side-effects of ECN-marked pure ACKs that may trigger further ACKs. This is not quite appropriate because this would be a fundamental change to TCP that does not ack pure Acks. And there is no normative spec that says taht Pure Acks (with CE) MAY/SHOULD/MUST be acked. This also involves numerous caveats that has not been fully recognized (see below). The draft says: "Therefore, a host in AccECN mode that is sending ECN-capable pure ACKs SHOULD add one of the following additional checks when it tests whether an incoming pure ACK is a duplicate: -If SACK has been negotatiated for the connection, but there is no SACK option on the incoming pure ACK, it is not a duplicate;" [MK]: Cite RFC 6675 which already states this. But the actual problem of using this rule is that there is no normative spec available how a SACK-enabled receiver is supposed to ack a Pure Ack. The draft makes an well-educated assumption but in fact an implementator cannot implement this without a normative specthat is cited here to tell how to ack. "-If timestamps are in use, and the incoming pure ACK echoes a timestamp older than the oldest unacknowledged data, it is not a duplicate. In the unlikely event that neither SACK nor timestamps are in use, or if the implementation has opted not to include either of the above two checks, it SHOULD NOT send ECN-capable pure ACKs. If it does, it could lead to false detection of duplicate ACKs, causing spurious retransmission(s) with a resulting unnecessary reduction in congestion window; but only in certain circumstances." [MK]: False Fast Retransmits are not the only problem although it alone necessitates MUST NOT, not just SHOULD NOT. Each extra dupack is subject to trigger an extra data segment in a numerous heuristics that are based on the packet conservation principle and will confuse these algorithms, including Limited Transmit, Fast Recovery, PRR, etc. For this very reason RFC 5681 prevents (MUST NOT) a data receiver from acking more than once per incoming data packet. Ackinf Pure ACKs was not known by that time but this rule extends to cover acking of Pure AKCs because the consequence is the same. In addition, acking Pure Acks will break F-RTO and potentially also other algos. Even with Timestamps we are not on the safe side as this would also break Eifel detection. So, I hesitate a lot to introduce any algo for acking Pure acks in a standards track spec as unmature. In general, I don't see any benefit for Acking Pure acks for ack congestion control purposes because such feedback has no effect until the sender send data again. That is, postponing the feedback until there is data again has the same effect when used for controlling ack rate. Moreover, I find draft-ietf-tcpm-ack-rate-request much beter suited for this purpose. For the case where CE on Pure ACKs are mixed with data from the same sender, it is not at all clear how the sender should respond, or whether the ack CC should be handled separate from data CC. IMO, these are clearly research questions, definitely not ready for standards track. ==== 4. Updates 3168: Make it clear that this does not obsolete/replace nor does require anyone who may want to implement Classic ECN to implement the updates in this doc. That is, this draft updates RFC 3168 solely to allow implementing AccECN specified in this doc. Nits: "flag available for use by the AccECN experiment instead." - Experiment is leftover from the time when targetting Experimental? There are a few other such occurances. Might want to consider deleting. "RST packet" -> "RST segment" "SYN packett" -> "SYN segment" - there are a number of such intanses. If you want to use packet instead of segment, then it might be better to make this explicit early in the draft similar to RFC 3168 does: "In a mild abuse of terminology, in this document we refer to `TCP packets' instead of `TCP segments'. Hope this is helpful. Best regards, /Markku
- [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-23 tuexen
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Markku Kojo
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Bob Briscoe
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… rs.ietf
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… rs.ietf
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Bob Briscoe
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Bob Briscoe
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Markku Kojo
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… rs.ietf
- Re: [tcpm] WGLC for draft-ietf-tcpm-accurate-ecn-… Markku Kojo