Re: [tsvwg] [Technical Errata Reported] RFC7141 (7237)

Sebastian Moeller <moeller0@gmx.de> Fri, 04 November 2022 12:42 UTC

Return-Path: <moeller0@gmx.de>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 33CB4C14F73E for <tsvwg@ietfa.amsl.com>; Fri, 4 Nov 2022 05:42:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.856
X-Spam-Level:
X-Spam-Status: No, score=-1.856 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, GB_SUMOF=5, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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 (2048-bit key) header.d=gmx.de
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 VOMaTx42ffvF for <tsvwg@ietfa.amsl.com>; Fri, 4 Nov 2022 05:42:49 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B7F89C14CE22 for <tsvwg@ietf.org>; Fri, 4 Nov 2022 05:42:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1667565758; bh=ove82L4on8yTGohXU1vZ9dFHj/lnVNYUfP4d7x8S4Ds=; h=X-UI-Sender-Class:Subject:From:In-Reply-To:Date:Cc:References:To; b=jWrbc5Tr3NJ+ibEePGZaZNb1l2JfT7PW8PZ/KP9BB5+nLrD6D3KcubQp33sZgrOX2 q7OZunlxvHfAc4oVEbP2uNHepf/4fG1m7ElBAgvI6vUYDkLmncK+Q5xWpE2x0sWjWj nVUwxfOKgo9vKhoCs4rgHVXBpGVopIj8cZ0Ra/fPGcSVxs/kUtUuTLz2rHa/x7x0kR rcNqtYr3bGu0k+vBMWvgTWyYIXZIuPCFJxeZRJPmIJlfzK+LSWI3b8FQEpuFp3Cd9j Py/MbqYhjScN0FICOliCPk5CFtovjAKelxIF3dzVC8q4Kn1fL2n4JAISD1+/R6GiJL P/eJTN08JdHHw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from smtpclient.apple ([77.10.103.199]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N9Mta-1p3IOv3GS4-015J7w; Fri, 04 Nov 2022 13:42:37 +0100
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
From: Sebastian Moeller <moeller0@gmx.de>
In-Reply-To: <6672b32e-19b6-b295-1460-904481de2c83@erg.abdn.ac.uk>
Date: Fri, 04 Nov 2022 13:42:32 +0100
Cc: RFC Errata System <rfc-editor@rfc-editor.org>, bob.briscoe@bt.com, jukka.manner@aalto.fi, martin.h.duke@gmail.com, Zaheduzzaman.Sarker@ericsson.com, david.black@dell.com, martenseemann@gmail.com, tsvwg@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <1351054E-7647-40CA-B2FA-7A566DE09E24@gmx.de>
References: <20221104094005.747A455F68@rfcpa.amsl.com> <4aef3037-fae5-68c9-661f-4ce89b1ce7e7@erg.abdn.ac.uk> <273A82C1-E675-4950-A7E0-E8C564B09834@gmx.de> <6672b32e-19b6-b295-1460-904481de2c83@erg.abdn.ac.uk>
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
X-Mailer: Apple Mail (2.3696.120.41.1.1)
X-Provags-ID: V03:K1:QIbcIM2TgbzrPb2jrCW+8AmYPPKW9MUNP3SCPjSvLXDq+gqPhmr 0BKbRnKTcW22NsQrQRVpjPpHBX2syNmLfaZ0f74BzFX+yG+e7XxAMR+lyh5W1ovtU9Y2bVJ 0mzu2nCfgxA8eSJE2h+iesrk/FBbp6YdlAXYCfmW+cAJpeL0vj//BCTP8K2viG44eVms/Hz IR++hAmDAUedz4yhlPYQw==
UI-OutboundReport: notjunk:1;M01:P0:l57bZCs/IAk=;kt8oh1BVgwWhriIDKXr1XKMwEZg xMTLeExt5SktvRBqQKlm5u3yD2QmFHwGkocqxstXMjFkF6GaoGPZ2roZRsdkxMJRjoVFwNla1 dAAVhQLs2ifsmI9aYorw9R7f6sMprCcQl1BkvzwEyhHvwRkQAIYGRlAZeMWgJXZWuVy13daSO 2nDCo1SZgceUnkfyORmHIVIbP3hsN4s0T95Jp+Svv56cBIcxVXUZC3HXoAAdoNLnMYpX/gShi khRjg8zpZp5KfenMUf7QxOHtAfSXWtiUH4uV+ZJypqP3B/3R1MHvdcAvjWRVMGEkn7lR5BSso zBcFHR5kRdyu5G2XZCGdZO0JLeeBhugXRqu6e9BVUD7yeupY9OuWMaUmGC07IB1gOz/Z/iJeG 7/G07uaX3J0/WAUIyX1qEiQzPRLinTSazXZ9Or9oAqUoSEEi0aXti6/ws6zeUuFDp3qFyOvQb N5zVWtq+NLGuDsqEyrJhZrxmwRciPBYXzKwtHEiQZMeCzKcuo3R/alhHAbsDeZ4YWul+ddavh d8ckZg9cU4BAY8Rzqcet9LTa3QNou4PhWDdTl1fWBAiTzuoCA0XgUYOsYOMhChjB5ybTYxYFX M6c298AVWUdHrGuLVC9/5HK01qRZFRtnC0p0faCjTUSo/FUwpSL6/dn/MeG+nLKA/Uxjwh0ng Sc1SQ0hZLjZUa9yOMVCcm5pCTre0PyYfjM7QKYdhhLt+GPDM6FQDSBdAGO27Lkq0S3GfEZdAs 0ym1C1n7LRhouILVjJI1cYCUnwQdcQJNB9EG71QRWPJY8W6JA9B+wwV/OtlcPpD9/GnSsCw8W pFyzqZmmmmZ14dFOPp8g1XXN3PGTZwoZUr86BzV02DiO75arUFU9nwO7elWeem3+X5VWLSpBh 4MtPsOjtaOO83lFLnE0FHlcvVL+8aYXF4eezZxXVXD9lBRoYYpvpFyBsYxLvslU2qjf2KsmwV 6yx7lYc5HNA3YaEwyoOh5uSZI4A=
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/dXWzFRauhfLrtYvoFcPy9x0pvVA>
Subject: Re: [tsvwg] [Technical Errata Reported] RFC7141 (7237)
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Nov 2022 12:42:53 -0000

Hi Gorry,


> On Nov 4, 2022, at 11:56, Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
> 
> On 04/11/2022 10:43, Sebastian Moeller wrote:
>> Hi Gorry,
>> 
>> See [SM] below.
>> 
>> On 4 November 2022 11:20:56 CET, Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
>>> Commenting as an individual on the Errata filing:
>>> 
>>> On 04/11/2022 09:40, RFC Errata System wrote:
>>>> The following errata report has been submitted for RFC7141,
>>>> "Byte and Packet Congestion Notification".
>>>> 
>>>> --------------------------------------
>>>> You may review the report below and at:
>>>> https://www.rfc-editor.org/errata/eid7237
>>>> 
>>>> --------------------------------------
>>>> Type: Technical
>>>> Reported by: Sebastian Moeller <moeller0@gmx.de>
>>>> 
>>>> Section: 2
>>>> 
>>>> Original Text
>>>> -------------
>>>> 2.2.  Recommendation on Encoding Congestion Notification
>>>> 
>>>>     When encoding congestion notification (e.g., by drop, ECN, or PCN),
>>>>     the probability that network equipment drops or marks a particular
>>>>     packet to notify congestion SHOULD NOT depend on the size of the
>>>>     packet in question.
>>>> [...]
>>>> 2.3.  Recommendation on Responding to Congestion
>>>> 
>>>>     When a transport detects that a packet has been lost or congestion
>>>>     marked, it SHOULD consider the strength of the congestion indication
>>>>     as proportionate to the size in octets (bytes) of the missing or
>>>>     marked packet.
>>>> 
>>>>     In other words, when a packet indicates congestion (by being lost or
>>>>     marked), it can be considered conceptually as if there is a
>>>>     congestion indication on every octet of the packet, not just one
>>>>     indication per packet.
>>>> 
>>>>     To be clear, the above recommendation solely describes how a
>>>>     transport should interpret the meaning of a congestion indication, as
>>>>     a long term goal.  It makes no recommendation on whether a transport
>>>>     should act differently based on this interpretation.  It merely aids
>>>>     interoperability between transports, if they choose to make their
>>>>     actions depend on the strength of congestion indications.
>>>> 
>>>> Corrected Text
>>>> --------------
>>>> I am not sure the text is actually salvageable, as it appears ti be a logic disconnect at the core of the recommendations.
>>>> 
>>>> Notes
>>>> -----
>>>> The recommendations seem not self consistent:
>>>> A) Section 2.2.  recommends that CE marking should be made independent of packet size, so a CE-mark carries no information about packet size.
>>> I did not understood that it needed to. This RFC I think was intended to be independent of the transport.  I see the transport sender as responsible for determining the packetisation of the transport segments, and the (S)ACKs can often identify segments, hence the sender can determine the segments that have been acknoweldged or times when ECN marking was seen.
>> [SM] This assumes that relevant segment size does not change along the path. Which generally is not true. Just think fragmentation, if the sender sends a packet that gets fragmented along the path and only a single fragment gets CE marked the sender will see this as the whole packet being marked. Or from the other side of the issue, if say a Linux router uses GRO/GSO and queues a larger meta packet and CE marks that, receiver and sender at best see a sequence of CE marked packets. So the recommendation would need to be changed to calculate the consecutive sequence of CE marked octets and take these as correlate for congestion strength. So no, the sender really has no reliable knowledge about the size of the data unit the marking node marked.
>> 
> I suggest IETF transports treat all IP fragments as one unit of retransmission/congestion at the transport layer.

	[SM2] But what if the re-segmentation does not happen at the receiver, but say a fragmenting and CE-marking path tries to act transparently. According to the rules both in RFC3168 and RFC7141 a re-segmented packet containing even a single CE-marked fragment is to be CE-marked (or dropped). So the AQM might have marked a 576 octet segment but all the endpoint sees is a marked ~1460 octet segment.
	This also illustrates how section 2.4 of RFC7141 proposes a method that does not achieve its aim, of giving veridical "number of market octets" information. It simply is impossible to do so generally (often it will work, but the endpoints can not even know when it was correct and when not).
Section 2.4 has more issues BTW, it tries to give recommendation how to deal with splitting and merging but fails to achieve its goals of giving a veridical account of the marked octets:

Let's see what happens when applying the proposed counter method in regards to number of marked octets under the conditions this section addresses
Here let's look at a toy problem with 20 byte headers and a total payload of 1200 octets that is split in or merged out of 3 fragments/segments with 400 octets payload each 

Merging multiple segments pre-marking:
(20+400) + (20+400)-20 + (20+400)-20 -> 1220 total 1200 payload + CE
-> AQM marks 1220 or 1200 octets
(12+1200)+CE
receiver sees 1200 octets with CE and ACKs these with ECE
sender can assume 1200 octets where marked
CORRECT

Merging multiple segments post-marking ():
-> AQM marks segment 2 of 420 or 400 octets
(20+400) + (20+400+CE) + (20+400)
(20+400)+(20+400+CE)-20+(20+400)-20 = 1220 total 1200 payload + CE
receiver sees 1200 octets with CE and ACKs these with ECE
sender must assume 1200 octets where marked
FALSE

Fragmenting a segment pre-marking
1220 -> (20+400) + (20+400) + (20+400)
-> AQM marks segment 2 of 420 or 400 octets
(20+400) + (20+400+CE) + (20+400)
Resegmentation happens before protocol sees marking
(20+400) + (20+400+CE)-20 + (20+400)-20 -> 1220 total 1200 payload + CE
receiver sees 1200 octets with CE and ACKs these with ECE
sender must assume 1200 octets where marked
FALSE

Fragmenting a segment post-marking
(20+1200)
-> AQM marks 1220 or 1200 octets
(12+1200)+CE
fragmentation happens:
(20+400+CE) + (20+400+CE) + (20+400+CE)
Resegmentation happens before protocol sees marking
(20+400=CE) + (20+400+CE)-20 + (20+400+C)-20 -> 1220 total 1200 payload + CE
receiver sees 1200 octets with CE and ACKs these with ECE
sender must assume 1200 octets where marked
CORRECT

So only in two out of four conditions does the proposed method actually achieves its goal.

Now add the complication that the RFC fails to mention what it considers marked octets, just the payload or payload+headers.
This is important as the sum of payload + headers of X fragments is larger than the sum payload + header of the single packet re-constituted out of these fragments. So the de-fragmenting process arguably needs to only look at payload size, but RFC7141 section 2.4 does not make that explicit.
If an implementation actually uses the full size instead of the payload size now the last condition also gets it wrong:

Fragmenting a segment post-marking
(20+1200)
-> AQM marks 1220 or 1200 octets
(12+1200)+CE
fragmentation happens:
(20+400+CE) + (20+400+CE) + (20+400+CE)
Resegmentation happens before protocol sees marking
(20+400+CE) + (20+400+CE) + (20+400+C) -> 1220 total 1200 payload + CE
but (20+400)*3 = 1260 marked octets
receiver sees 1200 octets with CE and ACKs these with ECE
sender must assume 1200 octets where marked
CORRECT
But now the left over 40 bytes in the marked-octet budget will result in CE feedback for the next (re-assembled) packet.
FALSE

For rfc3168 that will not matter much as ECE is sustained until CWR is received anyway, but L4S style signaling now acquired an erroneous CE mark.


> 
> GSO/GRO and variants would/could change the fragmentation, that is true and need to be considered.

	[SM2] I am confused? How do GRO/GSO affect fragmentation, IMHO these two will cause larger aggregates that exist only locally (Linux will segment meta-packets in the sending process and will not sent out say a large 64K TCP packet in fragments, but will re-segment the meta-packet into a neat sequence of complete self-sustained TCP packets)? IMHO they affect primarily the unit size the AQM might CE-mark on, in a way that is in-transparent to the end points. My point is the unit size an AQM acts on is generally unknowable precisely be the end-points. At which point making the end-points pretend that congestion strength somehow correlates with size of marked packets really stops making sense.


> 
>>>> B) Section 2.3 then recommends to use the size of marked packets as direct indicators of congestion strength.
>>>> 
>>>> C) Section 2.3 then later clarifies that transports should interpret the size of CE-marked packets as correlate for congestion strength but are in no way required to take this interpretation into account when acting based on the congestion signal.
>>>> 
>>>> 
>>>> This has several problems:
>>>> 1) A) and B) are in direct contradiction to each other. If we ask marking nodes to ignore packet size while marking, but end nodes to take it into account we basically create random congestion strength "information" by the pure chance of a specific packet of a specific size "catching" a CE mark. At which point we might as well simply draw a random number at the end-point to interpret congestion strength (except that packet sizes are not distributed randomly).
>>>> 
>>>> 2) Asking endpoints to interpret CE_marks in this way but not act on it, is hardly actionable advice for potential implementers. If we can not recommend a specific way, we should refrain from offering recommendations at all to keep things as simple as reasonably possible.
>>> This doesn't appear to be textual errata, it seems more like the request is for more clarification or motivating an alternative?
>> [SM] What alternatives to changing incorrect text do exist? I do not think changing the status to historic is a realistic option in spite of the text recommending the impossible.
>> 
> Put simply:
> 
> An Erratum would normally specify either:
> 
>     a direct change of text to fix a mistake in production, but a change of the spec from the original intended method;
> 
>     or specify something to inform a future revision.
> 
> An update in a new RFC is needed to change the method, or a process request to mark an RFC as historic.

	[SM2] Would it also be possible to request to re-classify as informative? This RFC with its impossible recommendations is causing issues with other RFCs and I think it would help if this could be ameliorated by moving away from BCP status.


> 
> Gorry
> 
>>>> 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.
>>>> 
>>>> --------------------------------------
>>>> RFC7141 (draft-ietf-tsvwg-byte-pkt-congest-12)
>>>> --------------------------------------
>>>> Title               : Byte and Packet Congestion Notification
>>>> Publication Date    : February 2014
>>>> Author(s)           : B. Briscoe, J. Manner
>>>> Category            : BEST CURRENT PRACTICE
>>>> Source              : Transport Area Working Group
>>>> Area                : Transport
>>>> Stream              : IETF
>>>> Verifying Party     : IESG