Re: [tsvwg] SCE / L4S and fragmentation

Bob Briscoe <> Sun, 15 March 2020 18:14 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 77B4D3A1A0F for <>; Sun, 15 Mar 2020 11:14:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8cuvyKf9zfJw for <>; Sun, 15 Mar 2020 11:14:35 -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 BD84F3A1A0C for <>; Sun, 15 Mar 2020 11:14:34 -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=DSNqXNP2PCBHTxwyVGK2RscscxzrZBG9VfK0dUdyyg4=; b=nrAo1ZTlEY/iti7LA9DquVnWc o3WF1OOwPqLiPEAoqybc8r05vZFgnjc4kWTdJhqHcbxzr5Q9A2Xd+fYXsxqfOmvXJ7P7MIWvN91SQ cI7WKuFKEVIgKVsPxfAv/VM1yQa3RsM6aiB/qiepzQfroBRp+cZpL3J08GfO75cnyU7FeHAzYMg6T QUdOtUhxnQkYFTlcfrr20+QGLldj0WMxfLPxiymFEGLy+CaWtpuRNhus/uJSpWJQvv+C1iiIBQepc Bof+jCSueX86JTHMxijL6h3BjKy7tIIxWcdy5vUv4puXeKT6cvHRiwv6akEHF5m9IC25H5PTJDB+h RSbw0Ya9A==;
Received: from [] (port=41644 helo=[]) by with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <>) id 1jDXmS-003asO-8c; Sun, 15 Mar 2020 18:14:32 +0000
To: Jonathan Morton <>
Cc: "" <>, "Black, David" <>
References: <> <> <> <> <> <> <>
From: Bob Briscoe <>
Message-ID: <>
Date: Sun, 15 Mar 2020 18:14:31 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: multipart/alternative; boundary="------------013A1E41A43136468FCC3FB3"
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: [tsvwg] SCE / L4S and fragmentation
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sun, 15 Mar 2020 18:14:37 -0000


On 15/03/2020 16:15, Jonathan Morton wrote:
> I had hoped that a thread with this title represented an opportunity to discuss the effects of fragmentation on L4S and SCE, *without* immediately descending into tribalism and ad-hominem attacks.  Accordingly, I will decline to quote *any* of Bob Briscoe's latest post, in favour of summarising the technical content.

[BB] Readers on this list will see that you've used this as an excuse to 
snip (and not address) the cases where SCE doesn't work (again).

When you are indulging in attention deflection tactics and get called 
out, attacking the person who called you out is even less polite than 
the original behaviour.

> Firstly, we have apparently agreed that fragmentation has no deleterious effects on ECN codepoints applied prior to fragmentation.  I do not understand why I am being attacked for expressing that agreement.

[BB] I asked to retract the untruthful statement you had made that L4S 
was equally deficient in this respect. You were being called out (not 
attacked) for snipping that request.

> On the subject of IPv6 fragmentation, Bob previously asserted that RFC-3168 has nothing to say about IPv6.

[BB] Bob actually said RFC3168 "does not seem to recognize that IPv6 
*e2e fragmentation* exists."

> This is demonstrably false by a simple text search over RFC-3168, in which the IPv6 Traffic Class Octet is repeatedly equated with the IPv4 TOS Byte.  In §5.3 dealing with fragmentation, neither IPv4 nor IPv6 are explicitly mentioned, implying that the language therein applies equally to both.  I have not personally verified that any given IPv6 receiver correctly implements these rules, but I would expect that they generally do.

[BB] You would not be able to verify anything, because RFC3168 offers no 
rules to verify. It explicitly says that it offers no rules for how to 
reassemble a mixture of ECT(0) and ECT(1) fragments.

The remedy that RFC3168 offers for the lack of guidance on how to 
reassemble a mixture of ECT(0) and ECT(1) fragments is to set DF. No 
remedy is offered for IPv6 e2e fragmentation, which has no DF flag.

> So the only material difference is that IPv6 behaves as if the DF (Don't Fragment) bit is always set, which limits the scope of the problem at hand (for most transports) to the case of an on-path tunnel which performs outer fragmentation.  The only exception is when a jumbo datagram needs to be sent, but most such protocols are not ECTs (ECN Capable Transports) and are therefore out of scope for this discussion.  We can of course still discuss any specific counterexamples that might be identified.

[BB] The additional important exception that Bob highlighted is where 
UDP datagrams are larger that the MTU, in which case IPv6 has to do e2e 
fragmentation and reassembly.

If you snip these two points again without addressing them, I will 
assume everyone on the list will notice. So I will not bother to ask the 
questions again.

> Most ECTs are expected to set DF (on IPv4) and implement PMTUD.  Indeed, most do.  If certain tunnel implementations interact badly with PMTUD, I think that is primarily a problem for the tunnel, not the transport.  It is still desirable that the transport functions reasonably well in difficult circumstances, and that is part of what I hope to discuss in this thread.
> Bob stated that the language I referred to in the quote below was present in an earlier draft of rfc6040update-shim:
>> ISTR, at some point in the past, interim language was suggested which would require taking the ECN codepoint from one of the fragments constituting the packet, with the behaviour being otherwise unspecified except by the existing rules.  This would be a worthwhile improvement from SCE's point of view, and is likely to match at least some existing implementations.
> That is not true, however.  What *is* present there is language which strongly advocates propagating marking on a byte-preserving basis, both for CE and ECT(1) codepoints, and that is what I have objected to, both recently and less recently.  What I referred to above is much simpler and less prescriptive, and can be summarised in the following proposed language updating RFC-3168 §5.3:

[BB] I thought your "interim language was suggested" phrase meant this 
text was in the draft. Hence why I thought you were referring to the 
byte-preserving text. It would have been straightforward for you to 
point to the place where you suggested some text.

As I said, in the latest revision, I took out the byte-preserving 
language at your request (i.e. this text *is not* present), and have 
since argued for it on the list instead, and only included least common 
denominator text in the draft.

>> …if any fragment of an IP packet to be reassembled has the Not-ECT codepoint set, then one of two actions MUST be taken:
>>   * Set the Not-ECT codepoint on the reassembled packet.  However, this MUST NOT occur if any of the other fragments contributing to this reassembly carries any ECN codepoint other than Not-ECT.
>>   * The packet is dropped.
>> If both actions are applicable, either MAY be chosen.
>> Reassembly of a fragmented packet MUST NOT change the ECN codepoint when all of the fragments carry the same codepoint.
>> Notwithstanding the above, if any fragment of an IP packet to be reassembled has the CE codepoint set, then one of two actions MUST be taken:
>>   * Set the CE codepoint on the reassembled packet.
>>   * The packet is dropped.
>> If neither the Not-ECT nor the CE codepoints appear on any of the fragments contributing to this reassembly, then the ECN codepoint set on the reassembled packet SHOULD be one of the ECN codepoints present on one of the fragments.  Any contributing fragment MAY be chosen as the source.
> I'm sure some wordsmithing is in order on the above, but I hope this makes my position clearer.

[BB] I (and David Black) have argued that a separate draft is needed to 
update fragment reassembly in RFC3168. Can you please accept that we are 
not going to update ECN fragmentation and reassembly in 
rfc6040update-shim. Then it can unblock and be published.

rfc6040update-shim is meant to be about encap and decap. It would allow 
this draft to become unstuck if it just said fragmentation and 
re-assembly is out of scope (which it is).

> In connection with this, Bob claims I'm asking for requirements to support SCE in a standards-track document.  If that is what I was actually asking for, then the final sentence in the above proposed language would be markedly different.  I would be asking for the existing requirement in RFC-3168 §5.3 that congestion information MUST NOT be lost during reassembly be interpreted to treat ECT(1) codepoints as congestion information.
> Mindful of SCE's current status in the WG, I am deliberately *not* asking for that at this time, even though it would improve the quality of SCE signalling over tunnelled paths.  Instead, I am asking for simple, easily-implemented language which is approximately neutral between L4S and SCE, but allows for the possibility of using ECT(1) as an output from the network at some point in the future.

[BB] Aside from the question of whether and where we update reassembly 
text, your suggested text would be incompatible with the standards track 
PCN RFCs. Whereas the previous text in the draft was compatible with 
PCN, and happened to support SCE as well.

I am aware that you haven't got your head around why byte-preserving 
produces a correct result for all of RFC3168, SCE and L4S style 
signalling. But let's continue that discussion in the other thread.


> Finally, I thank Bob for the link to a two-year-old slide deck containing a survey of existing tunnel protocols.  I infer from this that shimmed tunnels have typically considered RFC-6040 as out of scope, as the latter only explicitly covers tunnels without a shim layer.  But the rules in RFC-6040 for handling ECN are generally applicable, I think, and have nothing whatsoever to do with fragmentation.  This latter fact informs my support for the suggestion to separate the concerns of reassembly and decapsulation.
>   - Jonathan Morton

Bob Briscoe