[tcpm] Re: About growing cwnd when the sender is rate-limited
Michael Welzl <michawe@ifi.uio.no> Sun, 21 July 2024 17:34 UTC
Return-Path: <michawe@ifi.uio.no>
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 AF0C3C14F5F6 for <tcpm@ietfa.amsl.com>; Sun, 21 Jul 2024 10:34:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.008
X-Spam-Level:
X-Spam-Status: No, score=-2.008 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-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=ifi.uio.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 DCXQZC2hXsHW for <tcpm@ietfa.amsl.com>; Sun, 21 Jul 2024 10:34:52 -0700 (PDT)
Received: from mail-out01.uio.no (mail-out01.uio.no [IPv6:2001:700:100:10::50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 07E3EC14F6EF for <tcpm@ietf.org>; Sun, 21 Jul 2024 10:34:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ifi.uio.no; s=key2309; h=To:References:Message-Id:Content-Transfer-Encoding:Cc:Date: In-Reply-To:From:Subject:Mime-Version:Content-Type:Sender:Reply-To: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=4tdaFvqdJJgs5VLUneHym5srJFSScpkZjuJV9sPqHdU=; b=Fkba0S2N1lNXhQDOj36VWW/Xdk 6bSeZywPeehUTB2wl2XEJJIrVeJmRhmSIik2CsPXRgPm6RfDWLoOZOq1hhfzRyiRvzzXLk/ybosYC sGndo3fO/cgfIm8PWOsYbpBXd+HQVNXl4g6ChUFyymUGzqi8FBG20JvAPT0LWc9+KVbf8t/LW1o3H zn1uK2B6iRbDYQFxg9RveTcoiwPSF2hVMYg8lWNs/LLMgiOh1wDk9GQ3mknTQ6gtU3PGy0cDUal0v /nQkE7pX0w8D61JPo4gw8eC7w73TsPVJu6cA0X1mmnLC6J+N0kzdjVuucSokfw3T2wiAcZi1Jr4d0 pldTXIAA==;
Received: from mail-mx04.uio.no ([129.240.10.25]) by mail-out01.uio.no with esmtps (TLS1.2) tls TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from <michawe@ifi.uio.no>) id 1sVaSI-004k2e-0E; Sun, 21 Jul 2024 19:34:42 +0200
Received: from [64.114.255.114] (helo=smtpclient.apple) by mail-mx04.uio.no with esmtpsa (TLS1.2:ECDHE-ECDSA-AES256-GCM-SHA384:256) user michawe (Exim 4.96.2) (envelope-from <michawe@ifi.uio.no>) id 1sVaSG-000Ajl-0m; Sun, 21 Jul 2024 19:34:41 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <7cbb769a-eeb0-4a24-8226-3aa690e81397@huitema.net>
Date: Sun, 21 Jul 2024 10:34:21 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <25A28476-BEF3-487F-B92C-1D1A8DEE824B@ifi.uio.no>
References: <170896098131.16189.4842811868600508870@ietfa.amsl.com> <CAAK044QWL2xBvg4S_cvHFE_iTddSmnEOkhu33pftvUiUCCGZ_g@mail.gmail.com> <44e1fff-f915-fdd-6c8e-4cd1cc3a9df3@cs.helsinki.fi> <CAAK044TT93bBTkF_J8HgXxLNGnp+LLZvySf+4TOdsc=_yD8HKQ@mail.gmail.com> <9e3efc1f-e6e-8edb-d354-f442d78967ef@cs.helsinki.fi> <CAAK044SE46f6RaqcRgFOhPtOJcY77OZGEMCPEGoQMCy+2E51Ww@mail.gmail.com> <CADVnQymUztV8qV3SLeuWV1LxJRkO1SRQxxT_erqPa7owiMSCPw@mail.gmail.com> <CA+s1KQFVDbCiZDqjVfYG-feRztkUDjymV2fBy+-nGkGL8Zx9WA@mail.gmail.com> <CADVnQynAOS=ugQ6KWsORi1xqYNShH8jCp2fuVEP2ij3YvexFGQ@mail.gmail.com> <CA+s1KQEape0k1GJ+0ZRQT5BvsVd80N8F8kTJcKzGnaRods5VMg@mail.gmail.com> <EDD5465A-FE29-47D2-A1B7-5522111B9C93@ifi.uio.no> <CADVnQy=xvBmjVu6zgxuuW3QPFnxG7HgcOfxhEeJ+2PE_EyR8EQ@mail.gmail.com> <44A27685-98B7-4ACC-8B43-FE179AC0A805@ifi.uio.no> <CADVnQykGSYWQs_fn9JpAuzRuC+PNLQd4vv1pmNYGoGa2f+wQJw@mail.gmail.com> <6D295DCA-8F25-40DC-A97A-8FCC4C1BF9D6@ifi.uio.no> <7cbb769a-eeb0-4a24-8226-3aa690e81397@huitema.net>
To: Christian Huitema <huitema@huitema.net>
X-Mailer: Apple Mail (2.3774.600.62)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx04.uio.no: 64.114.255.114 is neither permitted nor denied by domain of ifi.uio.no) client-ip=64.114.255.114; envelope-from=michawe@ifi.uio.no; helo=smtpclient.apple;
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, AWL=-0.036,UIO_MAIL_IS_INTERNAL=-5)
X-UiO-Scanned: 523808D574817AD07F679AFEBBCBCC455F39EB03
X-UiOonly: 4F14BC63AC3E1BDE6C547A0A70076F44767060B1
Message-ID-Hash: EEVMOS5WW4JYLHYQPWQ6P7336UPJQVXP
X-Message-ID-Hash: EEVMOS5WW4JYLHYQPWQ6P7336UPJQVXP
X-MailFrom: michawe@ifi.uio.no
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tcpm.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Matt Mathis <matt.mathis@gmail.com>, Markku Kojo <kojo@cs.helsinki.fi>, Matt Mathis <ietf@mattmathis.net>, Matt Mathis <mattmathis@measurementlab.net>, tcpm@ietf.org
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [tcpm] Re: About growing cwnd when the sender is rate-limited
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/Sywo7Bvl0LqS7FMGM-H3p7upnfA>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Owner: <mailto:tcpm-owner@ietf.org>
List-Post: <mailto:tcpm@ietf.org>
List-Subscribe: <mailto:tcpm-join@ietf.org>
List-Unsubscribe: <mailto:tcpm-leave@ietf.org>
Absolutely, yes - the draft is targeting ccwg for that reason. Sorry for starting this here, and thanks for the note! I’ll follow up with an email to ccwg to avoid cross-posting. Let this be the latest message of that thread to TCPM. Cheers, Michael > On Jul 20, 2024, at 9:10 PM, Christian Huitema <huitema@huitema.net> wrote: > > > Should we not have this discussion in CCWG? The "sender limited" scenario is an issue with multiple transports, not just TCP. > > -- Christian Huitema > > > > On 7/20/2024 3:05 PM, Michael Welzl wrote: >> Hi ! >> Now, I can finally answer the third rationale - sorry for the interruption. In short, I don’t agree: >>> Rationale 3: justifying acceleration in the convex region of CA >>> ---------------- >>> >>> With the most widely deployed CC on the Internet, CUBIC, part of the rationale for the accelerating growth of cwnd in the convex region of congestion avoidance is: with cwnd above W_max, the longer a flow has proceeded in accelerating its sending rate without experiencing loss, the more confident we are that it is safe to grow cwnd with increasingly large increments. But AFAICT that rationale only makes sense if the cwnd is fully utilized, i.e., if the sender is actually accelerating. >> How is that rationale different from the rationale behind slow start? We’re in a state which is in some sense unexpected - something has happened: a routing change, many flows leaving, … and so we probe “into the unknown”. To me, this is quite the same. >>> For example, if we imagine a cwnd growing in a convex fashion (qualitatively similar to CUBIC) above W_max = 1,000 MSS, and if we imagine we use an approach like draft-welzl-ccwg-ratelimited-increase-02, and don't check whether cwnd is fully utilized, but allow cwnd to grow to 2x the max FlightSize, then we get an implict rationale of the flavor: >>> >>> [round #] : [FlightSize sent, CC decision for cwnd] >>> ------------------------------------------------------- >>> 1: FlightSize = 1,000 MSS worked, cwnd = 1,001 is fine >>> 2: FlightSize = 1,000 MSS worked, cwnd = 1,002 is fine >>> 3: FlightSize = 1,000 MSS worked, cwnd = 1,005 is fine >>> 4: FlightSize = 1,000 MSS worked, cwnd = 1,010 is fine >>> 5: FlightSize = 1,000 MSS worked, cwnd = 1,020 is fine >>> 6: FlightSize = 1,000 MSS worked, cwnd = 1,050 is fine >>> 7: FlightSize = 1,000 MSS worked, cwnd = 1,125 is fine >>> 8: FlightSize = 1,000 MSS worked, cwnd = 1,250 is fine >>> 9: FlightSize = 1,000 MSS worked, cwnd = 1,500 is fine >>> 10: FlightSize = 1,000 MSS worked, cwnd = 2,000 is fine >>> >>> (CUBIC grows more slowly than that, but this is the qualitative behavior. And AFAICT the argument holds for any CC with some phase of convex cwnd growth. BBRv2 / BBRv3 have qualitatively similar behavior in this regard.) >>> >>> IMHO that behavior does not make sense, or at least seems needlessly risky: >>> >>> (a) Why would a congestion control algorithm deem that it can safely accelerate its growth of cwnd above W_max = 1,000 in this way if FlightSize never gets above 1,000 packets? >> Congestion control works upon the state that it has seen (and contributed to) during the last RTT. Anything that happens after this RTT doesn’t affect that state. >> So, in your example above: we have sent 1,000 MSS, and as with slow start, we deem it appropriate to double cwnd within an RTT. If FlightSize has increased from round 1 to 10 (here, I presume, a round is a cwnd update upon an ACK arrival) or if it hasn’t increased at all, i.e. how much the sender has sent in response to these ACKs, is unsubstantial for this decision. With a slow start like increase, by the time we have reached cwnd = 2,000, we haven’t received any ACKs that could tell us anything about how the packets that were sent or not sent after round #1 have influenced the network. >>> (b) What is the expected level of loss in this scenario if the flow transitions back to fully utilizing its cwnd? If the "safe" (no-loss) FlightSize really is still 1,000 MSS, then the expected loss rate in this case when fully using this cwnd and sending 2,000 MSS is a 50% packet loss rate (1,000 MSS lost out of 2,000 MSS sent). >> Yes, 50%, as with slow start. That’s just because we double, it has nothing to do with whether we have sent more packets during that RTT or not. >>> ---------------- >>> >>> That said, I agree that it's worth further discussion of, and possibly experiments with, approaches more like draft-welzl-ccwg-ratelimited-increase-02, allowing cwnd to grow to 2 * max_packets_out in any state. Partly because it's easy to come up with theoretical arguments (like mine above) for why a CC approach is too aggressive, and sometimes aggressive approaches work surprisingly well in practice (I am thinking here of slow start...). >> We’re not proposing an experiment, we aim for PS. The arguments are: >> * If you dislike our specific “can increase, also in Congestion Avoidance, as the congestion control algorithm would normally do” rule, then that’s fine, because this rule is classified as SHOULD. The MUST only says: "MUST include a limit to the growth of cwnd when FlightSize < cwnd.” I think it’s hard to disagree with this specific statement? Limit it somehow, don’t allow to increase endlessly (as, e.g., ns-3 does, and perhaps Linux would also do in CA, I don’t know). Look at slide 2 here: >> https://datatracker.ietf.org/meeting/119/materials/slides-119-ccwg-slides-for-draft-welzl-ccwg-ratelimited-increase-01 >> => my point is, it should be hard to disagree with: “such an endless yet meaningless increase is terrible and should never happen”. >> * in one way or another, most implementations do something along these lines anyway, and specs say something along these lines too, but it’s all rather messy. We’re trying to clean this up. >> * I do think that our specific increase rule (the "SHOULD") just cleans up an oddity in the cc specs, it’s not really a “more aggressive” CC approach. Instead, I would argue that stopping to increase would seem like a departure from normal congestion control behavior: cc. algorithms measure the past RTT and react upon it - but by disallowing to increase for one RTT, all of a sudden, an event whose impact has not yet been measured would influence what the CC algorithm does. That just seems wrong. You can surely find situations where Cubic’s convex increase in general plays out badly, or where slow start is too aggressive, but that’s just the algorithms behavior. Whether we have sent new packets or not should be unsubstantial for the algorithm’s decision for one RTT (which is what we automatically get from maxFS). >> I hope this clears it up a little bit? >> Cheers, >> Michael >> _______________________________________________ >> tcpm mailing list -- tcpm@ietf.org >> To unsubscribe send an email to tcpm-leave@ietf.org
- [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc6937bis… internet-drafts
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Markku Kojo
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Markku Kojo
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Markku Kojo
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- [tcpm] Re: PRR behaviour on detecting loss of a r… Neal Cardwell
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Yoshifumi Nishida
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Matt Mathis
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Matt Mathis
- [tcpm] About growing cwnd when the sender is rate… Michael Welzl
- Re: [tcpm] I-D Action: draft-ietf-tcpm-prr-rfc693… Markku Kojo
- [tcpm] Re: PRR behaviour on detecting loss of a r… Markku Kojo
- [tcpm] Re: About growing cwnd when the sender is … Neal Cardwell
- [tcpm] Re: About growing cwnd when the sender is … Michael Welzl
- [tcpm] Re: About growing cwnd when the sender is … Neal Cardwell
- [tcpm] Re: About growing cwnd when the sender is … Michael Welzl
- [tcpm] Re: About growing cwnd when the sender is … Michael Welzl
- [tcpm] Re: About growing cwnd when the sender is … Christian Huitema
- [tcpm] Re: About growing cwnd when the sender is … Michael Welzl
- [tcpm] Re: I-D Action: draft-ietf-tcpm-prr-rfc693… Neal Cardwell