Re: [tcpm] ECN++

"Scheffenegger, Richard" <rs.ietf@gmx.at> Sat, 25 January 2020 10:41 UTC

Return-Path: <rs.ietf@gmx.at>
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 BB0B8120089; Sat, 25 Jan 2020 02:41:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=gmx.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gA4CO6A1NRvS; Sat, 25 Jan 2020 02:41:32 -0800 (PST)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CC64E120072; Sat, 25 Jan 2020 02:41:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1579948878; bh=I5SztyzGmiwJb2U2aQx5dTwK+xQEXprJN8a3841DXWM=; h=X-UI-Sender-Class:Subject:From:To:References:Date:In-Reply-To; b=Fd6bd8Ch+sUz4xty4KfOjPbcfo2gecSocJWxjm+twwc9hUypvRS/rCZqwedqobdGC YiZhjBpF/c23pQzZ09FTqC/PiPXAhJ3UbieeVJhwTnMlM8Wwe3ZsSCn3ylaS+vlqEO dLUsnIkc/7aKFsH5COidsOvWiWH1iJlzXHOR6vNo=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [10.249.64.52] ([217.70.211.10]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MPokD-1jIAv701Hn-00MvIq; Sat, 25 Jan 2020 11:41:18 +0100
From: "Scheffenegger, Richard" <rs.ietf@gmx.at>
To: "tcpm@ietf.org" <tcpm@ietf.org>, draft-ietf-tcpm-generalized-ecn@ietf.org, FreeBSD Transport <freebsd-transport@freebsd.org>, Neal Cardwell <ncardwell@google.com>, Christoph Paasch <cpaasch@apple.com>, Vidhi Goel <vidhi_goel@apple.com>, Rodney Grimes <rgrimes@freebsd.org>, Michael Tuexen <tuexen@freebsd.org>
References: <6f6f4c2f-b72f-b7fb-55aa-c6985862d061@gmx.at> <3cd59a2f-d926-769c-175e-91938b962463@gmx.at>
Message-ID: <bb340dfe-d957-6675-81a4-dc00a1c71bca@gmx.at>
Date: Sat, 25 Jan 2020 11:41:16 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <3cd59a2f-d926-769c-175e-91938b962463@gmx.at>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:v4ptnx/ebscp41id6r+EjVbn4v4AQtSwm8WkATgtOJn7+lY1SCM OFY7aYDn6KFPtFgotqi7DVKnDkJuaui5QrOTFBgDhAis1odgHFgM8aX38NmrX/hIAkfJCRR 2T1AQ/Q7brt/MfrycHZGdQ6PSn6bvoGj/us4Sd9mVSMpJwkko7xaVy4xzq2AvDAW27sLnys onYAGdTIFbYI+nyitEIog==
X-UI-Out-Filterresults: notjunk:1;V03:K0:nOUA/135oJw=:woihVO0nYhQYldf5R41LzS rzbrUObSegyJR2kk+u4OclrPombyJkNhfyDnm9+67EVZu94hXR2By51zdNaqMop2mC2IzAC4D 3fNdP2svbx5y/yzLZMwbZYbjnhAS4xM10UcQo6lzPjjFoj/e1qN0/f6tFP+s44b6XTs/JVJ4n VW9KUZYqqaZluov/1M0acBHOZ5d/MS/b9owyXIhRauoIYJaESAwMkmDUx+lIcb2Q6fF0HvNqw 9dNUBDbhSgT1EkdzaIR76fEk1USHtkqOnVS7WoED9ZSO1kyy+bpsbv2+YfoHupcam4Mm4HhlX 8Io51FcqSxzgz92AbSHjZ8e/y6gUYFg9GsnkTGJL8LANpBsJ+E4fqz8DlgPaREQyY29sYe4kP QyG9gAiOvXfx/COzXYbV4/4AQZweA8wT1mEeqXRmjThsg9Nvp7v8TKuVeHCWn4gzriqOKuDnr GB4+TW4zAt5lIVMrf1oJuT5OfQVGRDH9TNxeHMNM90vpCRvfRtCyLCu4jvQxs63qAi0/1iMOc 9NtZDzNoD7HvP77j4Q29D8PiqSJpp3J2jllQ2+xigzepKAfWIu9tZiTRCIgxiuafZQCFpZ3GU AzZeosRk0TsXb0ag2vsxPb0COV3qWf5BB7Rs9XEYSkiNkkLKagh9MVYmaENfkq1KFGN1bwqpx 3gX0sSHwgzC4ue6Z8GMW6eO7JGx7BEJV2KHYPwUXvu9ZScYJ1mpeRE+RMdHDrBIfaxOXtAZaK yJ6mFcDoumI7D1In1BprsFbKeyyADB026pRqUE7vz9KDgmU6sfNbCeVXMLmVSs/YuvQI5hINh nFnZIBhUFIiV9OMm4rLdgZ1bIH07wtEDg9IXkHbLXm1ysuwb93dQ5488chnGRm3cYbDX0NsR6 MOpi6KWxWpiCgL+K0jmttZwSj3PfXs+FSaQxUGgvscCm7JjkjzI4TcE3sWKsRfHVyePJpZ+QC MQawY4K84DTfKuyI9yVG1yMNO5xeO02Tun+Jn5BpEtqJrv8uehsFfXi+RcOsAG04pjGV8rS4M vOh2nEoIuZ9Imfl3sCsCV85NLXdGcwf7PVh1Bb02wWgxzucszJ+uwm9YT8FbniDShybT5Xru9 TauZu/Xrf3OrvYWuB9ZCq34BY/N77gq3KYoiaspf+mZ+uRVYLkpxNiC1KrkNhbfv14pH3Zp7I Z+Tu7MGzlnBojLuaNOHlLG7wsH7a5XeMD9Gx7010bbGKKMQA75hkfoS6qnW4E+xFU9MW556sl n7gyr9CSBphKTvBqf
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/9xE0Lz3DxAZRVAB2d_Fypeu1j34>
Subject: Re: [tcpm] ECN++
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
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: Sat, 25 Jan 2020 10:41:35 -0000

Hi Group, Marcelo, Bob,


Another update in this context, which IMHO may be discussed as an actual
change of mechanism with ECN++.

I was looking into the very poor interaction of ECN between a Linux
client and a BSD server, with request-response workload. That is, where
each side sends out less than MSS data, before the application waits for
the other side to respond to this.

Neal pointed out this statement in RFC3168:

    ...the TCP sender sets the CWR flag in
    the TCP header of the first new data packet sent after the window
    reduction.  ...
    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.

However, BSD is sending out the CWR as soon as possible - while Linux
interprets the SHOULD overly strictly (IMHO) and ignores CWR unless it
is received with (new) data.

But binding the CWR flag to a new data segment delays the ECN signaling
loop artificially (for long runs of unidirectional transmitted data),
and it is not clear what the benefit there would be, as the CWR flag is
not retransmitted anyway (thus not bound to a point in the sequence
number space).

I therefore propose a change in the Generalized ECN draft, to lift the
above restriction (while it is "only" a SHOULD, this is one more example
of an overly strict receiving-side implementation), and no longer
artificially delay the CWR signal - to become also more useful for
passive measurements.


Richard

For those interested: The effect of ignoring the CWR on non-new-data
segments by Linux is, that the ECE flag is left latched. Thus BSD
continues window-after-window with cwnd reductions, and due to another
bug where the ECN-induced reduction has no lower bound, eventually cwnd
ends up at 0 Byte and is only increased to 1 Byte by a Timer - until by
pure chance, the CWR is sent together with 1 new byte of data. But in
the preceeding minutes, the session only saw progress by less than 1
byte / RTT...


Am 15.01.2020 um 21:42 schrieb Scheffenegger, Richard:
>
> Hi,
>
> Yet another interesting observation – as fbsd currently doesn’t refrain
> from marking SACK-retransmission to be not-ECT, you can actually end up
> getting a CE mark on a retransmission across a ECN-enabled congestion
> point.
>
> Obviously this is better than loss…
>
> What happens next is, that fbsd "honors" that ECE mark, since it is in
> loss-recovery, not congestion-recovery. It adjusts the recovery_point to
> the current snd_max (rightmost sent segment), and adjusts ssthresh and
> cwnd by multiplicative decrease factor...
>
> Furthermore, it appears that it also resets the traversal of the SACK
> scoreboard (incidential a "good" thing, as a few earlier retransmissions
> also got dropped, not marked, and are being resent without an RTO).
>
> But in the context of ECN++, what would be the expected response here?
>
> I assume, that with the exception of the fresh traversal of the SACK
> scoreboard, the above steps seem sensible.
>
> Any thoughts on this interesting interaction between ECE (during SACK
> loss recovery)?
>
> Best regards,
>     Richard
>
>
>
> Am 10.01.2020 um 01:08 schrieb Scheffenegger, Richard:
>> Marcelo, Bob,
>>
>> I just noted that there is a slight oversight in FreeBSD currently,
>> which results in all session that are simultaneously ECN-enabled and
>> SACK-permitted to effectively send out retransmissions with the ECT0
>> codepoint.
>>
>> Strictly speaking, this is in violation of RFC3168, but might also be a
>> good (nearly a decade long) validation of the performance of ECN++ for
>> all types of data segments (new and retransmitted ones), although at a
>> low and implicit exposure...
>>
>>
>> On that note, since I think ECN++ is quite valuable (with a number of
>> published research finding this change to be crucial), perhaps you can
>> summarize the outstanding issues (other than more reviewers required; I
>> admit I still haven't gone through all the delta between -04 and -05).
>>
>> Best regards,
>>    Richard
>>
>> _______________________________________________
>> tcpm mailing list
>> tcpm@ietf.org
>> https://www.ietf.org/mailman/listinfo/tcpm
>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm