Re: [tcpm] Errata RFC9438 (Cubic)

Richard Scheffenegger <rs.ietf@gmx.at> Fri, 23 February 2024 15:43 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 E0548C14F6A0 for <tcpm@ietfa.amsl.com>; Fri, 23 Feb 2024 07:43:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.103
X-Spam-Level:
X-Spam-Status: No, score=-7.103 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_FROM=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=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.at
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 NFBi2eoE7xFQ for <tcpm@ietfa.amsl.com>; Fri, 23 Feb 2024 07:43:39 -0800 (PST)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 C4BCCC14F6A1 for <tcpm@ietf.org>; Fri, 23 Feb 2024 07:43:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1708703011; x=1709307811; i=rs.ietf@gmx.at; bh=NbV/VYSU9YKI3RtldTIftOHmmcBknGIzvFZ1J/IMPA0=; h=X-UI-Sender-Class:Date:From:Reply-To:Subject:To:Cc:References: In-Reply-To; b=eikiAsGuglfUQrbtEQXSu8KC+/kQ7NHcU/y1l7YUnm5Ovq8Jsf4CfxdhlOHz5hff i4DHGbpevKg0qZEl6AEKAtrkB6xvm/8BAJc16DD7raMt/PgdYu5CJ7GCYDs83z0bd cKrzOaofcP9yE8vvlW7OcFdPBFKNfQkOd+nsOBL1BYBcXA1McaQVAbcfS7mSH03le 8FjW7U37tLB9u6twBw4V+EvNsHYzHjyioKfyFhfpBPTMGE4NvjKlH6wnr1PWBfN+m zRec/YrNSDM+lHNED5uBhUWbPAMZ06jElnBMfDTTJ/Pm61o4Lh7Wu/KB/HfQIWS8V zbiE4nyhx5KpHHj9/g==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.233.122] ([185.236.167.136]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MXGrE-1rPng43jag-00YfA1; Fri, 23 Feb 2024 16:43:30 +0100
Message-ID: <31f6feb7-72ff-4912-b958-be897f058c59@gmx.at>
Date: Fri, 23 Feb 2024 16:43:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Richard Scheffenegger <rs.ietf@gmx.at>
Reply-To: rs.ietf@gmx.at
To: Vidhi Goel <vidhi_goel@apple.com>
Cc: Yoshifumi Nishida <nsd.ietf@gmail.com>, "tcpm@ietf.org" <tcpm@ietf.org>, rfc9438@ietf.org
References: <60ba9be5-6738-409a-af34-2ff6e5ec5fd9@gmx.at> <CAAK044SgBF0H8x=hJfNAMvGszLdqsoQZQA0oVmTwhcz8kh=whg@mail.gmail.com> <be6ed0a4-feb9-4b5e-9559-98cdaf0ff94a@gmx.at> <AA461342-65AB-40CA-8716-3C9BE1D3E04D@apple.com>
In-Reply-To: <AA461342-65AB-40CA-8716-3C9BE1D3E04D@apple.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:Fsbl2AFBp8N2KdMfHdweWGFtz3XUvjPkSdm2zA4KmusLQhqoJtV wkvNtSOe/OMLX473WGlY2+964GNcW9i1d8pRFlGGiZUtftGbpG53ihIP3Sx0D80Xnc/CEV9 lFNyFwWmGP9yrtsOy2IIVQ9SdD/5mtxL21FO0Y+W6xruHfmZAR+myBklwplGxQxIDB9ks+B TNgC/FYvkxKmTgxOJL12w==
UI-OutboundReport: notjunk:1;M01:P0:5Sj4RiIzJp8=;XtZ+Qz0jvEeZJEj2sUe9HFy1mpN smtQlPnvx4sOyGizGbIOuO+4OrS5+uVfTV7zVJewLuigEvKsOTpjoL6lYRjfVxUrEzfJTMHt8 cPHZGSoo7fyzZTxjawdU0EHipCrCiTtk2wKujnHzlkNqQCvvC/zlvebamyDHyvL+RW8V1IW6J SGjL2PDuinoEpITYcf25RSQG6lscr9KPkXT18i+/Ke+az01iTnypfJWZ1hxmfb1owuv7TcxEd M0reegYhIZNVNd7Gd9Oeil60DphsYXdHy9y2cvUnA+9s4sczYNVQpouMwPn2Q1Trx0ZPMpG9v fxWgkC4vlauhjjkzuPjziG32lERhqpMxb0CxlHWLv6MERbCwVnrw6U6KdzZ0afZbWBN2Bn79Y ucGNXbWoHu8fhNAnk70MF8hYTbAi1hRhcp+PGIABqz3/GvV2x0XB3UvQRhpL+Ucko7C8uSGIu hTMbXdisv9X4uAEdt7eIYgVxq0+/oYS+pIvRGCgaVHza6mcqyQB7LGf2dB/dYsQtap7f+t7GX P5wEE5qf2PS9d6omJ4eaAtfDRBbMDEIOW13VxZOpu2a0/V1ccUe5c0RNs9XDBXtnDGJZ0bSWw bQ0ymZGH7vjQoTbIQkwEenk16uh8kvVypYrq5g0BiNwFAkjDt+6u20AkTb2N+HkPFjOQO+PUZ l0Ai+NUhDOhjOiTj4Zg+lJ3d96/JbJo/BRjxhgiWl51f0JNqJj8G319Wyg2vGVcYU4dPp5c2N oeaKcEaTiAHzZVDIimqk0NptGh/NtUdIFPPUpf/lHQeWuYVXojEAaMkDMBGSV5jGvPyD7mqwX GJUM4ZJ7fNKdZrx11jC+M6UHIDWVEx8Z8Nq9A6OiOpnmE=
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/mKIxdr-lniwe6Hnwa9X-Mb0vI0w>
Subject: Re: [tcpm] Errata RFC9438 (Cubic)
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: Fri, 23 Feb 2024 15:43:43 -0000

Thanks Vidhi,

Now that you point my nose into this, its clear - don't know why I
wasn't able to properly read this before; clearly some of the code I've
been looking at is incorrect here.

Best regards,
   Richard


Am 22.02.2024 um 21:10 schrieb Vidhi Goel:
> Hi Richard,
>
>> The stack I'm familiar with does CC processing first (with the old value
>> for snd_una, not yet updated by th_ack, and flight size is the expected
>> value of 10 mss at that moment...
>
> For the case that Yoshi described, once the ACK arrives, the flight size
> is 0. Also, we don’t control when the different implementations update
> their snd_una.
>
> Regarding using flightsize vs cwnd, we had a long discussion about this
> before. We tried to make sure that we are not getting cornered by using
> very low flight size (in some scenarios) as well as we are not setting
> ssthresh to a high value for app limited cases. Please see
> https://datatracker.ietf.org/doc/html/rfc9438#name-multiplicative-decrease <https://datatracker.ietf.org/doc/html/rfc9438#name-multiplicative-decrease>
>
> Let me know if that section is not clear.
>
> Vidhi
>
>
>
>> On Feb 10, 2024, at 5:23 AM, rs.ietf=40gmx.at@dmarc.ietf.org wrote:
>>
>>
>> Hi Yoshi,
>>
>> Well, that probably comes down to the order in which snd_una is updated
>> vs. ssthresh being set - and at what stage Flight Size is calculated
>> during the processing of the incoming packet.
>>
>> If th_ack is first updating snd_una, then the flight size calculation
>> would probably end up with the incorrect, deflated value.
>>
>> The stack I'm familiar with does CC processing first (with the old value
>> for snd_una, not yet updated by th_ack, and flight size is the expected
>> value of 10 mss at that moment...
>>
>> Capturing all that nuance would need more text; I believe the critical
>> aspect is to no blindly use cwnd, when adjusting ssthresh, since that
>> may not reflect the (expected) flight size under all circumstances, e.g.
>> RTO during the initial Fast Retransmission...
>>
>> Hope that makes sense.
>>
>> Best regards,
>>  Richard
>>
>>
>>
>>
>> Am 10.02.2024 um 12:53 schrieb Yoshifumi Nishida:
>>> Hi Richard,
>>>
>>> I am wondering about cases like this.
>>> Say a sender sends 10 packets (cwnd=10) during slow-start and the
>>> receiver sends back a single ack that acknowledges all packets.
>>> Then,  hystart or hystart++ at the sender decides to exit slow-starts
>>> from the RTT and set ssthresh.
>>> I think flighsize will be 0 in this situation, but would it be OK?
>>> --
>>> Yoshi
>>>
>>>
>>> On Fri, Feb 9, 2024 at 8:23 AM Scheffenegger, Richard
>>> <rs.ietf=40gmx.at@dmarc.ietf.org <mailto:40gmx.at@dmarc.ietf.org>> wrote:
>>>
>>>    Hi,
>>>
>>>    Lately I've been looking at the TCP behavior when multiple events
>>>    overlap (e.g. RTO while loss recovery is not complete; or
>>> duplicate ACKs
>>>    immediately after RTO before snd_nxt reaches snd_max again).
>>>
>>>    I believe there is an implicit assumption in the Cubic RFC around
>>>    cwnd_prior to track Flight Size - which does not always hold (but
>>>    depends also on the specific implementation).
>>>
>>>    RFC5681 is quite clear, that ssthresh is to be adjusted after an RTO,
>>>    not by taking cwnd, but rather the FlightSize.
>>>
>>>    The wording in RFC9438 appears to overrule this (as it updates
>>> RFC5681)
>>>    and reverts back to how ssthresh got set prior to RFC5681, using cwnd
>>>    directly again.
>>>
>>>
>>>    As mentioned, cwnd does not always reliably track Flight Size (in
>>>    particular, early on after initiating Loss Recovery, it may only be 1
>>>    MSS). If an RTO happens and the text in RFC9438 is followed verbatim,
>>>    ssthresh may end up being updated to cwnd * beta_cubic (0.7),
>>> instead of
>>>    the Flight Size at this stage of Loss Recovery...
>>>
>>>
>>>    I hope the errata, to clear up that the RFC5681 guidance as how to
>>>    adjust ssthresh on an RTO based on Flight Size, not cwnd, is found
>>>    useful - since it appears to me that this was clearly the intent.
>>>
>>>    Best regards,
>>>        Richard
>>>
>>>    _______________________________________________
>>>    tcpm mailing list
>>>    tcpm@ietf.org <mailto:tcpm@ietf.org>
>>>    https://www.ietf.org/mailman/listinfo/tcpm
>>>    <https://www.ietf.org/mailman/listinfo/tcpm>
>>>
>>
>> _______________________________________________
>> tcpm mailing list
>> tcpm@ietf.org
>> https://www.ietf.org/mailman/listinfo/tcpm
>