Re: [tcpm] Errata RFC9438 (Cubic)

Vidhi Goel <vidhi_goel@apple.com> Thu, 22 February 2024 20:10 UTC

Return-Path: <vidhi_goel@apple.com>
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 4956FC15109A for <tcpm@ietfa.amsl.com>; Thu, 22 Feb 2024 12:10:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.104
X-Spam-Level:
X-Spam-Status: No, score=-7.104 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=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_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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=apple.com
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 dHBfiGa6sqfu for <tcpm@ietfa.amsl.com>; Thu, 22 Feb 2024 12:10:45 -0800 (PST)
Received: from ma-mailsvcp-mx-lapp01.apple.com (ma-mailsvcp-mx-lapp01.apple.com [17.32.222.22]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6A41FC14F738 for <tcpm@ietf.org>; Thu, 22 Feb 2024 12:10:45 -0800 (PST)
Received: from rn-mailsvcp-mta-lapp04.rno.apple.com (rn-mailsvcp-mta-lapp04.rno.apple.com [10.225.203.152]) by ma-mailsvcp-mx-lapp01.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) with ESMTPS id <0S9900X62XDVXQ20@ma-mailsvcp-mx-lapp01.apple.com> for tcpm@ietf.org; Thu, 22 Feb 2024 12:10:44 -0800 (PST)
X-Proofpoint-ORIG-GUID: yXygG0XVi_UU_-ceGInzFtUTae6vpRze
X-Proofpoint-GUID: yXygG0XVi_UU_-ceGInzFtUTae6vpRze
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.619, 18.0.1011 definitions=2024-02-22_15:2024-02-22, 2024-02-22 signatures=0
X-Proofpoint-Spam-Details: rule=interactive_user_notspam policy=interactive_user score=0 bulkscore=0 phishscore=0 mlxscore=0 suspectscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402220157
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=byeZFawjwEfcsF/KbggGiw7gAfYoMrHUS1xT0nKV2Hs=; b=aEqN46q0tCymiOkRB9VWuWfsJ+JHhKGeI7pk0whYmEWF5EwdivGXo/RyTmoAjOI0fVXV XAa3Yty7TCQpquFuAEhK/J30TOplZURpkSIewtmVZIHi4GgZ6IOnnxZ3ZWyf6XXvVPHn YGlkoA7xFnqhDauV2nVBbQanH+x21IWB/j7wBoemvS1VTG8HI4UTp9MKgNNEO6b9Zoj4 PGLGLteMZ71kbKoRTW50lMoi/FVLAjFJ8+jTaQpDPO2Jh4XJ5X5WIPG+N2b1LM5cdwHQ gpO5Tc+McZli7evmnCmtx1OwWKrWE9KS7AQGkeT+6PD23DIZqAy2hPorQLl8bjJZznRB lg==
Received: from rn-mailsvcp-mmp-lapp02.rno.apple.com (rn-mailsvcp-mmp-lapp02.rno.apple.com [17.179.253.15]) by rn-mailsvcp-mta-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) with ESMTPS id <0S9900QCOXDVVDE0@rn-mailsvcp-mta-lapp04.rno.apple.com>; Thu, 22 Feb 2024 12:10:43 -0800 (PST)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp02.rno.apple.com by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) id <0S9900Q00WYB9N00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 22 Feb 2024 12:10:43 -0800 (PST)
X-Va-A:
X-Va-T-CD: 4ac0b9ee2b6eb3d59bdb96f41fec390f
X-Va-E-CD: 6b18846a8341f0ddddbeec0c9b3d22b1
X-Va-R-CD: 93fa3cf8bf698789704e2efab13f7b3d
X-Va-ID: c0e1c89f-028a-4a33-9d4a-6351a8388fec
X-Va-CD: 0
X-V-A:
X-V-T-CD: 4ac0b9ee2b6eb3d59bdb96f41fec390f
X-V-E-CD: 6b18846a8341f0ddddbeec0c9b3d22b1
X-V-R-CD: 93fa3cf8bf698789704e2efab13f7b3d
X-V-ID: 9f893d36-7788-439f-aead-d6c73ed595a6
X-V-CD: 0
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-22_15,2024-02-22_01,2023-05-22_02
Received: from smtpclient.apple (vmini.scv.apple.com [17.192.154.43]) by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) with ESMTPSA id <0S9900940XDUJA00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 22 Feb 2024 12:10:42 -0800 (PST)
From: Vidhi Goel <vidhi_goel@apple.com>
Message-id: <AA461342-65AB-40CA-8716-3C9BE1D3E04D@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_0A08E876-8D74-49A9-BC8E-5B59FE29781A"
MIME-version: 1.0 (Mac OS X Mail 16.0 \(3731.700.2\))
Date: Thu, 22 Feb 2024 12:10:32 -0800
In-reply-to: <be6ed0a4-feb9-4b5e-9559-98cdaf0ff94a@gmx.at>
Cc: Yoshifumi Nishida <nsd.ietf@gmail.com>, "tcpm@ietf.org" <tcpm@ietf.org>, rfc9438@ietf.org
To: Richard Scheffenegger <rs.ietf@gmx.at>
References: <60ba9be5-6738-409a-af34-2ff6e5ec5fd9@gmx.at> <CAAK044SgBF0H8x=hJfNAMvGszLdqsoQZQA0oVmTwhcz8kh=whg@mail.gmail.com> <be6ed0a4-feb9-4b5e-9559-98cdaf0ff94a@gmx.at>
X-Mailer: Apple Mail (2.3731.700.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/nwnOIUmO1Bm2K0LVbhQE_C08Pcc>
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: Thu, 22 Feb 2024 20:10:49 -0000

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

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