Re: [tcpm] Errata RFC9438 (Cubic)

"Rodney W. Grimes" <ietf@gndrsh.dnsmgr.net> Fri, 23 February 2024 15:58 UTC

Return-Path: <ietf@gndrsh.dnsmgr.net>
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 53D3EC151069 for <tcpm@ietfa.amsl.com>; Fri, 23 Feb 2024 07:58:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.904
X-Spam-Level:
X-Spam-Status: No, score=-6.904 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=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
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 16PAEZpPKrVN for <tcpm@ietfa.amsl.com>; Fri, 23 Feb 2024 07:58:45 -0800 (PST)
Received: from gndrsh.dnsmgr.net (pdx.rh.CN85.dnsmgr.net [65.75.216.6]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A9A12C14F6B5 for <tcpm@ietf.org>; Fri, 23 Feb 2024 07:58:45 -0800 (PST)
Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id 41NFrYIV015847; Fri, 23 Feb 2024 07:53:34 -0800 (PST) (envelope-from ietf@gndrsh.dnsmgr.net)
Received: (from ietf@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id 41NFrYxQ015846; Fri, 23 Feb 2024 07:53:34 -0800 (PST) (envelope-from ietf)
From: "Rodney W. Grimes" <ietf@gndrsh.dnsmgr.net>
Message-Id: <202402231553.41NFrYxQ015846@gndrsh.dnsmgr.net>
In-Reply-To: <31f6feb7-72ff-4912-b958-be897f058c59@gmx.at>
To: rs.ietf@gmx.at
Date: Fri, 23 Feb 2024 07:53:34 -0800
CC: Vidhi Goel <vidhi_goel@apple.com>, rfc9438@ietf.org, "tcpm@ietf.org" <tcpm@ietf.org>
X-Mailer: ELM [version 2.4ME+ PL121h (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/HKeueETsJ86b258k1MjeKZg6Rjg>
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:58:50 -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.

If one person implemented it wrong, and a second person trying to
understand it and see that it was implemented correctly both failed
at getting to the correct solution by reading the RFC that is to
specify these operations I would conclude "The RFC is flawed.".

Having to ask on a list for clarity, for me, indicates the RFC could
probably use some improvements.  This is not he first time I have
seen a thread similiar to this one on various topics in tsvwg and
tcpm.

> 
> 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
> >
> 
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
> 
> 

-- 
Rod Grimes                                                 rgrimes@freebsd.org