Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and proposed text
Markku Kojo <kojo@cs.helsinki.fi> Wed, 20 July 2022 00:13 UTC
Return-Path: <kojo@cs.helsinki.fi>
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 67225C131921 for <tcpm@ietfa.amsl.com>; Tue, 19 Jul 2022 17:13:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.007
X-Spam-Level:
X-Spam-Status: No, score=-2.007 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_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 (1024-bit key) header.d=cs.helsinki.fi
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 ouLAIYvYy8BV for <tcpm@ietfa.amsl.com>; Tue, 19 Jul 2022 17:13:32 -0700 (PDT)
Received: from script.cs.helsinki.fi (script.cs.helsinki.fi [128.214.11.1]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DE6BEC131920 for <tcpm@ietf.org>; Tue, 19 Jul 2022 17:13:29 -0700 (PDT)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Wed, 20 Jul 2022 03:13:26 +0300
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.helsinki.fi; h=date:from:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type; s=dkim20130528; bh=QsF6RCJcI8T/hv4Dg WdAH3PdpNnZa/ArFOn3fC/zMDQ=; b=ittA4vzUHvajYZnH0IVKP/IOZNNOPVGCQ TbiyxrWKt9dGvOyXpw3VJgZkvmsGbS+dWcACiv7w0hxTl30TWX1HoW09loS9zNAt A1vGnuvkbnDaEgNKMk/D/pXXS1g+LDeTW1M/4st4t5MlvjaocKuv4HKqmHULbCjR BSKTrtWkZI=
Received: from hp8x-60 (85-76-46-2-nat.elisa-mobile.fi [85.76.46.2]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Wed, 20 Jul 2022 03:13:25 +0300 id 00000000005A011D.0000000062D748A5.000058DE
Date: Wed, 20 Jul 2022 03:13:25 +0300
From: Markku Kojo <kojo@cs.helsinki.fi>
To: Vidhi Goel <vidhi_goel=40apple.com@dmarc.ietf.org>
cc: Yuchung Cheng <ycheng@google.com>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>, Neal Cardwell <ncardwell@google.com>, Gorry Fairhurst <gorry@erg.abdn.ac.uk>
In-Reply-To: <alpine.DEB.2.21.2207200157150.7292@hp8x-60.cs.helsinki.fi>
Message-ID: <alpine.DEB.2.21.2207200309010.7292@hp8x-60.cs.helsinki.fi>
References: <alpine.DEB.2.21.2207112026000.7292@hp8x-60.cs.helsinki.fi> <31DCA869-30FA-41C6-B21F-3D71E600FFF2@apple.com> <CAK6E8=ddwJK+e8f5Jxe8AW6CmHhvRFyPxb6nhpJ-jdEtXxp5UQ@mail.gmail.com> <alpine.DEB.2.21.2207150152210.7292@hp8x-60.cs.helsinki.fi> <CAK6E8=f63vORKoqDHTkXS=jiaHD_GM0Gw31CzdKbbdhmVeexmA@mail.gmail.com> <alpine.DEB.2.21.2207150229250.7292@hp8x-60.cs.helsinki.fi> <CAK6E8=djxYk4zMAyCGM+zhmXuZ25WvGLB1jA95Y24i2KMvK4+w@mail.gmail.com> <1A95963E-1BEB-4868-9C4F-0C75A4E5B904@apple.com> <alpine.DEB.2.21.2207200157150.7292@hp8x-60.cs.helsinki.fi>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_script-22772-1658276006-0001-2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/edyctZ3JiipqbVP6W1YlOG7TVMc>
Subject: Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and proposed text
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: Wed, 20 Jul 2022 00:13:36 -0000
Hi, just wanted to add one question: I'm not sure if the following piece of text correctly characterizes RFC 7661 behaviour (Gorry?): "it would allow using a value between _cwnd_ and _flight_size_ to calculate the new _ssthresh_" Thanks, /Markku On Wed, 20 Jul 2022, Markku Kojo wrote: > Hi Vidhi (Cc'ing also Gorry because he has better insight into RFC 7661), > > Thanks for the text. I'll reply here to keep the discussion on the wg list so > that anyone interested can more easily follow the discussion (jumping back > and worth between ML and github may become intractable). > > First, I want to stress that I am not expecting nor insisting to stick with > my proposed text (with necessary changes to address the comments on the list) > but it could possibly result in faster conclusion(?). > > Second, I'd like to highlight that my proposed additional text was intended > just to bring up the caveats of simply using cwnd and give advise that is in > line with other standards track CC RFCs. It was not intended to specify any > algorithm (or a part of an algorithm). > > The new text in github IMO has the following issues: > > 1. It does not mention the caveat of letting cwnd to grow > beyond rwnd which is a known implementation problem in > the past (so it can easily be repeated by some new > implementors) nor does it explain why simply using > cwnd is incorrect. > > 2. Even though this draft is intended to be applicable > with QUIC, it misses the pointer to RFC 9002 that > articulates the corresponding requirement for QUIC. > > 3. It tries to create an ad-hoc algorithm in a single > sentence that captures the RFC 7661 algorithm for > those using cwnd. RFC 7661 is some 20 pages of which > several pages are used to specify the algorithm. > That is, the proposed text ignores several crucial > actions of RFC 7661. And, my proposal was not to > provide an algorithm for those using cwnd. > > 4. The sentence / rule "when flight_size is less than 1/2 > of the cwnd" is not capturing what was discussed earlier > in github and now on the wg list, and it is also in > conflict with RFC 9002 and effectively also with RFC > 5681. None of these effectively allows the sender not > reacting to a congestion event but the "new" rule would > allow it once the cwnd has grown more than 43% above the > flightsize. > > Apologies for finding so many issues with the proposed text. > > Thanks, > > /Markku > > On Sun, 17 Jul 2022, Vidhi Goel wrote: > >> Thank you everyone for the discussion. Since some of the text was becoming >> duplicate, I moved the below text a >> few lines up and added a restriction for using cwnd directly. And the >> recommendation to use RFC 7661 now >> applies to both approaches. >> Some implementations of CUBIC currently >> use *cwnd* …. >> >> >> Here is the PR - https://github.com/NTAP/rfc8312bis/pull/148 >> >> I would really appreciate if folks can review it so that we can close this >> issue before meeting at IETF 114 >> next week. >> >> Thanks, >> Vidhi >> >> On Jul 17, 2022, at 8:33 AM, Yuchung Cheng <ycheng@google.com> wrote: >> >> Glad we agree on improving the text. I think Vidhi will come up with a good >> diff that captures our >> discussion. >> >> On Thu, Jul 14, 2022 at 4:47 PM Markku Kojo >> <kojo=40cs.helsinki.fi@dmarc.ietf.org> wrote: >> On Thu, 14 Jul 2022, Yuchung Cheng wrote: >> >> > On Thu, Jul 14, 2022 at 4:12 PM Markku Kojo >> > <kojo=40cs.helsinki.fi@dmarc.ietf.org> wrote: >> >> >> >> Hi Yuchung, >> >> >> >> On Tue, 12 Jul 2022, Yuchung Cheng wrote: >> >> >> >>> AFAIK, the latest (and previous) Linux Cubic implementation does >> not follow >> >>> "The implementations that use _cwnd_ MUST use other measures to >> avoid >> >>> _cwnd_ from growing beyond the receive window" >> >>> >> >>> I don't see the need to add that check in Linux as the effective >> >>> window is always the min of cwnd and rwnd. >> >> >> >> That does not help. If cwnd is allowed to grow way beyond rwnd >> (more than >> >> 43% for CUBIC or more than 100% for Reno CC), a sender would not >> respond >> >> to an arriving congestion signal effectively at all (and may even >> >> increase the cwnd). That is against the very basic rule in >> congestion >> >> control principles we have. >> >> >> >>> On the other hand, Linux does restrict cwnd growth if flight size >> is >> >>> below cwnd but the >> >>> actual logic is more sophisticated than a "cwnd < inflight" check >> to >> >>> work w/ TSO chunking issue well. >> >>> >> https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_output.c#L1881 >> >>> (Neal cc'd here is the inventor of the advanced check) >> >> >> >> I'm not sure I follow your logic. Doesn't that effectively >> restrict cwnd >> >> from growing beyond rwnd? To my understanding with that check >> Linux >> >> applies "other measures to avoid _cwnd_ from growing beyond the >> receive >> >> window". It does not matter whether the conncetion is >> >> receiver-application limited via rwnd or sender-application >> limited. If >> >> rwnd limits flight size, cwnd will not grow more. Maybe I am >> missing >> >> something? >> > That's right. Limiting cwnd growth on flight size automatically >> > prevents cwnd goes far beyond rwnd for the congestion case you are >> > concerned about. >> > >> > Your suggested text "The implementations that use _cwnd_ MUST use >> > other measures to avoid _cwnd_ from growing beyond the receive >> window" >> > is easily interpreted as a line of code "cwnd = min(cwnd, rwnd)" >> >> That was not the intent. So, I think we agree. >> >> > What I am saying is that this sentence is not necessary and overly >> > strict. Limiting cwnd growth based on inflight which is based on >> the >> > effective sending window (= min(cwnd, rwnd)) already prevents cwnd >> > bloats over rwnd. >> >> Sure, I misinterepted your previous text ;) >> >> > I don't see why Cubic needs to have more strict >> > rules than other C.C.s. >> >> It does not have to be more strict rule. So, to my understanding we >> just >> need to tweak the text such that it is not misinterpreted the way you >> thought but still clearly involves the message that the sender needs >> to >> prevent cwnd to grow beyond rwnd. >> >> Maybe(?): >> >> "... The implementations that use _cwnd_ MUST use >> [other|alternative] >> measures to not allow _cwnd_ to grow when bytes in flight is >> smaller than cwnd_. That also effectively avoids _cwnd_ from >> growing beyond the receive window. Such measures are important >> to prevent a CUBIC sender from using an arbitrarily ..." >> >> Thanks, >> >> /Markku >> >> >> >> >> Thanks, >> >> >> >> /Markku >> >> >> >>> Just want to reflect a major implementation status. >> >>> >> >>> >> >>> On Tue, Jul 12, 2022 at 2:01 PM Vidhi Goel >> >>> <vidhi_goel=40apple.com@dmarc.ietf.org> wrote: >> >>>> >> >>>> Thank you Markku for proposing the text. Some of this is already >> covered in the latest >> draft but I can do some edits to your proposed text and create a PR. >> >>>> I spoke to other co-authors about this suggestion as well and we >> are mostly ok with it. >> >>>> >> >>>> >> >>>> Vidhi >> >>>> >> >>>>> On Jul 11, 2022, at 5:37 PM, Markku Kojo >> <kojo=40cs.helsinki.fi@dmarc.ietf.org> wrote: >> >>>>> >> >>>>> Hi all, >> >>>>> >> >>>>> I promised to propose some text to some of the remaining >> issues. >> >>>>> This thread starts the discussion on the issue 6 and proposes >> text to solve the issue: >> >>>>> >> >>>>> Issue 6) Flightsize: >> >>>>> >> >>>>> The current text in Sec 4.6 w.r.t using FlightSize vs. cwnd >> for >> >>>>> calculating multiplicative decrease is fine except that it >> does >> >>>>> not quite correcly reflect what stacks that use cwnd instead >> of >> >>>>> flightsize should do and actually do. AFAIK and what was >> >>>>> discussed in github all stacks apply some sort of >> restrictions >> >>>>> to not allow cwnd to grow beyond rwnd and to not use an >> >>>>> arbitrarily high (old) cwnd value to calculate new cwnd >> >>>>> when a congestion event occurs. >> >>>>> >> >>>>> >> >>>>> Current text in Sec 4.6:: >> >>>>> >> >>>>> Some implementations of CUBIC currently use _cwnd_ instead >> >>>>> of _flight_size_ when calculating a new _ssthresh_ using >> Figure 5. >> >>>>> >> >>>>> Proposed new text: >> >>>>> >> >>>>> Some implementations of CUBIC currently use _cwnd_ instead >> >>>>> of _flight_size_ when calculating a new _ssthresh_ using >> Figure 5. >> >>>>> The implementations that use _cwnd_ MUST use other measures to >> >>>>> avoid _cwnd_ from growing beyond the receive window and to not >> >>>>> allow _cwnd_ to grow when bytes in flight is smaller than >> >>>>> _cwnd_. This prevents a CUBIC sender from using an arbitrarily >> >>>>> high _cwnd_ value in calculating the new value for _ssthresh_ >> >>>>> and _cwnd_ when a congestion event is signalled, but it is not >> >>>>> as robust as the mechanisms described in [RFC7661]. >> >>>>> [Many|Most|All] TCP implementations of CUBIC that use _cwnd_ >> apply >> >>>>> such measures. Likewise, a QUIC sender that also uses >> congestion >> >>>>> window to calculate a new value for the congestion window and >> >>>>> slow-start threshold is required to apply similar mechanisms >> >>>>> [RFC 9002]. >> >>>>> >> >>>>> >> >>>>> Any comments and help in formulating the text are welcome. >> >>>>> >> >>>>> Need also some guidance from TCP implementations of CUBIC to >> finish up the second but >> last sentence. >> >>>>> >> >>>>> Thanks, >> >>>>> >> >>>>> /Markku >> >>>>> >> >>>>> _______________________________________________ >> >>>>> 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 >> >>> >> > >> >> >> >
- [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and propos… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Vidhi Goel
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Yuchung Cheng
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Vidhi Goel
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Yuchung Cheng
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Yuchung Cheng
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Vidhi Goel
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Vidhi Goel
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Markku Kojo
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Vidhi Goel
- Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and pr… Yuchung Cheng