Re: [tcpm] CUBIC rfc8312bis / WGLC Issue 6 and proposed text

Markku Kojo <kojo@cs.helsinki.fi> Thu, 14 July 2022 23:12 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 7FF6AC16ED0F for <tcpm@ietfa.amsl.com>; Thu, 14 Jul 2022 16:12:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.007
X-Spam-Level:
X-Spam-Status: No, score=-7.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_DNSWL_HI=-5, 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 IUVB-xcPtCK1 for <tcpm@ietfa.amsl.com>; Thu, 14 Jul 2022 16:12:26 -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 2BD5AC16ED0B for <tcpm@ietf.org>; Thu, 14 Jul 2022 16:12:25 -0700 (PDT)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Fri, 15 Jul 2022 02:12:19 +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=7p470YpXzXbhP42Wp ju4v9jfdIU0R15MLoRIJmLQJHA=; b=RzNZl2etnFkBF7P1aaE0LX5exJ8WC+YFw TkFld0IX0HtfsIE2syD3xHvYQdJuKrrYMqena9Pnhlhxf4hore6++6SR6v1TZ1Zo XbwcUDXziQmGpLAXwM7Zj8h/XalMVmxxKaIlTvy7dfifB1K4OCWdauk3kFc8i6wQ mX2zTHenwQ=
Received: from hp8x-60 (85-76-46-15-nat.elisa-mobile.fi [85.76.46.15]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Fri, 15 Jul 2022 02:12:19 +0300 id 00000000005A0218.0000000062D0A2D3.00003CDD
Date: Fri, 15 Jul 2022 02:12:17 +0300
From: Markku Kojo <kojo@cs.helsinki.fi>
To: Yuchung Cheng <ycheng=40google.com@dmarc.ietf.org>
cc: Vidhi Goel <vidhi_goel@apple.com>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>, Neal Cardwell <ncardwell@google.com>
In-Reply-To: <CAK6E8=ddwJK+e8f5Jxe8AW6CmHhvRFyPxb6nhpJ-jdEtXxp5UQ@mail.gmail.com>
Message-ID: <alpine.DEB.2.21.2207150152210.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>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"; charset="US-ASCII"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/TBOvMuz5SuOZnG_xrqMYJx0KDCY>
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: Thu, 14 Jul 2022 23:12:30 -0000

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?

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
>