[tcpm] Re: About growing cwnd when the sender is rate-limited

Christian Huitema <huitema@huitema.net> Sun, 21 July 2024 04:11 UTC

Return-Path: <huitema@huitema.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 B1EA6C14F6B5 for <tcpm@ietfa.amsl.com>; Sat, 20 Jul 2024 21:11:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.904
X-Spam-Level:
X-Spam-Status: No, score=-1.904 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, 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
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 vRat8pIwdyaK for <tcpm@ietfa.amsl.com>; Sat, 20 Jul 2024 21:11:04 -0700 (PDT)
Received: from semf06.mfg.siteprotect.com (semf06.mfg.siteprotect.com [64.26.60.169]) (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 18BDEC14F5F6 for <tcpm@ietf.org>; Sat, 20 Jul 2024 21:11:03 -0700 (PDT)
Received: from smtpauth02.mfg.siteprotect.com ([64.26.60.151]) by se02.mfg.siteprotect.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1sVNuU-000frE-7W; Sun, 21 Jul 2024 00:10:59 -0400
Received: from [192.168.1.106] (unknown [172.56.168.249]) (Authenticated sender: huitema@huitema.net) by smtpauth02.mfg.siteprotect.com (Postfix) with ESMTPSA id 4WRVMC2828z2YQR6Z; Sun, 21 Jul 2024 00:10:46 -0400 (EDT)
Message-ID: <7cbb769a-eeb0-4a24-8226-3aa690e81397@huitema.net>
Date: Sat, 20 Jul 2024 21:10:47 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Michael Welzl <michawe@ifi.uio.no>, Neal Cardwell <ncardwell@google.com>
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>
Content-Language: en-US
From: Christian Huitema <huitema@huitema.net>
Autocrypt: addr=huitema@huitema.net; keydata= xjMEXtavGxYJKwYBBAHaRw8BAQdA1ou9A5MHTP9N3jfsWzlDZ+jPnQkusmc7sfLmWVz1RmvN J0NocmlzdGlhbiBIdWl0ZW1hIDxodWl0ZW1hQGh1aXRlbWEubmV0PsKWBBMWCAA+FiEEw3G4 Nwi4QEpAAXUUELAmqKBYtJQFAl7WrxsCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgEC F4AACgkQELAmqKBYtJQbMwD/ebj/qnSbthC/5kD5DxZ/Ip0CGJw5QBz/+fJp3R8iAlsBAMjK r2tmyWyJz0CUkVG24WaR5EAJDvgwDv8h22U6QVkAzjgEXtavGxIKKwYBBAGXVQEFAQEHQJoM 6MUAIqpoqdCIiACiEynZf7nlJg2Eu0pXIhbUGONdAwEIB8J+BBgWCAAmFiEEw3G4Nwi4QEpA AXUUELAmqKBYtJQFAl7WrxsCGwwFCQlmAYAACgkQELAmqKBYtJRm2wD7BzeK5gEXSmBcBf0j BYdSaJcXNzx4yPLbP4GnUMAyl2cBAJzcsR4RkwO4dCRqM9CHpVJCwHtbUDJaa55//E0kp+gH
In-Reply-To: <6D295DCA-8F25-40DC-A97A-8FCC4C1BF9D6@ifi.uio.no>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Authentication-Results: mfg.siteprotect.com; auth=pass smtp.auth=huitema@huitema.net
X-Originating-IP: 64.26.60.151
X-SpamExperts-Domain: mfg.outbound
X-SpamExperts-Username: 64.26.60.150/31
Authentication-Results: mfg.siteprotect.com; auth=pass smtp.auth=64.26.60.150/31@mfg.outbound
X-SpamExperts-Outgoing-Class: ham
X-SpamExperts-Outgoing-Evidence: Combined (0.03)
X-Recommended-Action: accept
X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT/bJ9YU1n5FBzsySkTi9LAlPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5w6NjMh0Y3pwaIiJMmuMpCZXSblQ/4hk5tNWmVuvkfkpj15 N9hiCqznkG/pq/acMaJahudigwf1iJYtXept9XnleJ4C89nVwHIjlti55WiGruv0Nb/ilc2IXJTS OxyXbIZlC1xPZWv9oWC8Qv486Hi50LcPqK8S82eAaQFTpiMB2GZ+ip0zQkT4ruQLoIukSOs1CZQ6 HBxNrghAa4DP++SAIOUR1RSpzDyCN2WG26IuYWQp6HCvsnAZIphRw6PL5/Lz5WII1Z6TfVcq4Ezy 3IFn4foC0XFeKJLYiYMzIYJZG3Pkbc+2zfLb8PAj5RF6wmCgRlj3BsW6HU0je8Rg5nUOViOn7q0x +FkRsRb62Wru4wIkcl5ZStgldgNAGmV1WnCtIihMSfG2aUcoH0kFEz0wGBZ9WqzVCVc3XCLdApIl vv8K7PBrSlICqgE0Sf1ANLRyuzqhjwTfFldzpSHfbII7tB5rMnpQ7UikVPLM9p/Kxd/bQC+K+3Xc varhJ2ukbSQypALVAxV3deOHykI/YvRrPwTaysjUqGuhrcukFnI272rxEaaKeSxe0Wrx6M4G5/Wl /PEtRXabbCxP+8bfV6JcTknSXQ26IJcMUHm3EngxQfGrBW/S7gXCWA/848C+BaQf0y7Tjtx8Krnr QqJOrLwq6IvX2VXUloedRxoHAT0T+d+qMm02aQeFr+hJck2VPHPEyUcEb8NgBFQ9ultxkA4lzu7o xnQkD6AGtNvxxs2KkTIIWVL7UF2vDHzKjJmktBsjsNCTLO5CYRwg3jm04dScJiCpCHUrhfySZMfW DdMO32YY/jwBkm3WsW+Zs2vuk6Fv6Udu+FLbtvUoR2FpQ9H79uCvPkVaA/qdau8qghiySRe3Obto 2MK53ayj2wWWl9bij9F0mD8xy6yW5ef25SQ1PG84Wxm2K6aHS67wHdCgkY1dEmMsouZnmYPuCWOn 8FVEdsvwndtT43ChDo83aYt0F7cKpfJHmrZN6AZLpOcrLHSFE+BGkBaqg7rMm0ncWoGASfe0e8LZ l0iNdR0UyvMp9R/2gMGq0KWAzmMf+ibVDsplqA+/R+5bnVqh4bVXsZAA5OZ1iIiHLYXU2qLZCGq0 v13G/RpoQwWtoYRnjJmO51lXSR0/OkqvTHbCrmvgNhxR7gKuJOz6hvTOYnc+46EeIT6uxXhTWBwA B1AoIBqBc4p8HS0f5f6QJMcMZymTT1j2OKHH5lr9xXvSM4nM3avg
X-Report-Abuse-To: spam@se02.mfg.siteprotect.com
Message-ID-Hash: L56NLCIGIF73Y73HSWC6C3Z4H35HQD3O
X-Message-ID-Hash: L56NLCIGIF73Y73HSWC6C3Z4H35HQD3O
X-MailFrom: huitema@huitema.net
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/zaWQmyiYH9-FFI3dXHfclKcz00M>
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>

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