From nobody Fri Jul 29 10:13:09 2022
Return-Path: <ycheng@google.com>
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 7899BC15A732
 for <tcpm@ietfa.amsl.com>; Fri, 29 Jul 2022 10:13:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.605
X-Spam-Level: 
X-Spam-Status: No, score=-17.605 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_BLOCKED=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, USER_IN_DEF_DKIM_WL=-7.5,
 USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=google.com
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 3_ndOF0PcY92 for <tcpm@ietfa.amsl.com>;
 Fri, 29 Jul 2022 10:13:04 -0700 (PDT)
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [IPv6:2a00:1450:4864:20::331])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 9BF0EC15A72F
 for <tcpm@ietf.org>; Fri, 29 Jul 2022 10:13:04 -0700 (PDT)
Received: by mail-wm1-x331.google.com with SMTP id c22so2865302wmr.2
 for <tcpm@ietf.org>; Fri, 29 Jul 2022 10:13:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=81CvW9U2d7O+YlMSwq/vmNAzIieItImmUGgUOY2oAvo=;
 b=YISkZ7lf1BmafEP25cd9q+OavIWiFzCR3MWz1aMo5FCutblcmDcqLhS8KJH++kO511
 MrKXI4VQ5OnrV/0BfUQf62f0e09Mu6X4z/XBaIm4bVMQeZXtBzhwPX4iWTyDpVtXVYGy
 yg4kyWsPFEPXxwJGmZb5zvdYOvbgg68UxegY/OTPxYXc9bYu8eDzEsBMO4di83JEgF3t
 1je2CxFTRwrZhDgE0HnMMPjPPcZGHOlZ8JYQFbV/F+UBRM8UU9WiwMjNpwpaZ9mbaG8i
 2TPQYmamWWIWlmdajZ4Rocak4f9i3shTGiOHScSx6QCXzqHOBOMHO5DKFkamG97XMWvW
 I3hw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=81CvW9U2d7O+YlMSwq/vmNAzIieItImmUGgUOY2oAvo=;
 b=qlQPn5fskK2lH+mGXQivbe4qpSObXtAJyh5W6pORivroGg8e2dWlgpZIYTR8+xAmCk
 lS1VSCUxtSMyEgWgqw32hGXNrV7IylG62ca6YPnZJ1u5s5kdjLNmogrQCuUj6L8X5Ahm
 8qFbQEKrPG3DftrlJagyfHM7zBWtfJ9fOsp9trO7UepPpONgzDA3/dwZEH5/M0X5zLe3
 c0j/Do5VTImyGqzDv85C/3P7Du1mtzmoQdeTPSM/c/2qD7GQhsy93qISgCU3Eu4pg2bf
 aY1IEHTuoKrdfmn3Bl2PFxtnGDTXk7Rze6hmxoQr//m7mLFwP3YPCxijGCycpc040rKs
 frgw==
X-Gm-Message-State: AJIora91dPT72MDc7aGBfFSh21EERD6FwylyB5+yK0Tn3ggNBBaTp5Rn
 RUpNDeFbQ+lj1TypHrZ/7KoNODCP9YZcv4ir0nEDfg==
X-Google-Smtp-Source: AGRyM1t99Be4iHuDq6btQIHs7yh+bKqbgqhnnEl1hjDDOAQQyGL0UxNCj5XlY/XpPl+qrdp93eA9k1d3TJaV5FVCdIY=
X-Received: by 2002:a05:600c:154c:b0:3a3:4383:e13f with SMTP id
 f12-20020a05600c154c00b003a34383e13fmr3114272wmg.16.1659114782816; Fri, 29
 Jul 2022 10:13:02 -0700 (PDT)
MIME-Version: 1.0
References: <391FCCC9-5653-4F0F-8C5F-73B1B4A997AF@apple.com>
 <C1342BC5-CADA-4798-9A1E-52F953E71588@apple.com>
 <alpine.DEB.2.21.2207282334570.7292@hp8x-60.cs.helsinki.fi>
In-Reply-To: <alpine.DEB.2.21.2207282334570.7292@hp8x-60.cs.helsinki.fi>
From: Yuchung Cheng <ycheng@google.com>
Date: Fri, 29 Jul 2022 10:12:52 -0700
Message-ID: <CAK6E8=cjsQM+yFj+TQy5DBFE4F6MC0KhpZjTk2BgfY9Z2GjF4g@mail.gmail.com>
To: Markku Kojo <kojo=40cs.helsinki.fi@dmarc.ietf.org>
Cc: Vidhi Goel <vidhi_goel=40apple.com@dmarc.ietf.org>, 
 "tcpm@ietf.org Extensions" <tcpm@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000004635c905e4f4c369"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/M9M1YjXPN_vgfXI_b1vgylxne5U>
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: Fri, 29 Jul 2022 17:13:08 -0000

--0000000000004635c905e4f4c369
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

The latest text looks good to me.

On Thu, Jul 28, 2022, 3:29 PM Markku Kojo <kojo=3D
40cs.helsinki.fi@dmarc.ietf.org> wrote:

> Hi Vidhi,
>
> On Thu, 28 Jul 2022, Vidhi Goel wrote:
>
> >
> >
> > Hi Markku,
> > Can you review the PR? As I have adopted the change that you suggested,
> it might be an easy one. We would like to converge on
> > this soon.
>
> I'm fine with the text except the sentence that I spotted only after
> re-reading the text later and already commented on the wg mailing list:
>
>   "the mechanisms described in [RFC7661] can be used to mitigate this
>    issue as it would allow using a value between _cwnd_ and
>    _flight_size_ to calculate the new _ssthresh_ in Figure 5."
>
> AFAIK "using a value between _cwnd_ and _flight_size_ to calculate the ne=
w
> _ssthresh_" does not correctly capture the algo in RFC 7661. In the
> non-validated RFC 7661 uses
>
>   (Max(pipeACK,LossFlightSize))/2
>
> and adjusts it with R (=3Dretransmitted data) in the end of recovery phas=
e.
> And, in the validated phase RFC 7661 uses FlightSize/2.
>
> It would be good to have Gorry to review this piece of text as the text
> seems to have been modified from what Gorry originally wrote.
>
> Good to check that Yuchung also is fine with all the latest text.
>
> Thanks,
>
> /Markku
>
>
>
> >
> [png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACne=
j3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAA
> > AAASUVORK5CYII=3D]
> > restrict use of cwnd directly on a congestion event by goelvidhi =C2=B7=
 Pull
> Request #148 =C2=B7 NTAP/rfc8312bis
> > github.com
> >
> >
> > Thanks,
> > Vidhi
> >
> >       On Jul 24, 2022, at 2:09 PM, Vidhi Goel <vidhi_goel@apple.com>
> wrote:
> >
> >       =EF=BB=BFHi Markku,
> > I have updated the PR with your suggested text to converge faster. Can
> you take a look
> > - https://github.com/NTAP/rfc8312bis/pull/148/
> >
> > Vidhi
> >
> >       On Jul 19, 2022, at 8:03 PM, Markku Kojo <kojo=3D
> 40cs.helsinki.fi@dmarc.ietf.org> 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 C=
C
> 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* =E2=80=A6.
> >       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.co=
m>
> 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=3D
> 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=3D40cs.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 i=
n
> 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#L188=
1
> >            >>> (Neal cc'd here is the inventor of the advanced check)
> >            >>
> >            >> I'm not sure I follow your logic. Doesn't that effectivel=
y
> 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 =3D min(cwnd=
,
> rwnd)"
> >
> >            That was not the intent. So, I think we agree.
> >
> >            > What I am saying is that this sentence is not necessary an=
d
> overly
> >            > strict. Limiting cwnd growth based on inflight which is
> based on the
> >            > effective sending window (=3D 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 th=
e
> 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=3D40apple.com@dmarc.ietf.org> wrote:
> >            >>>>
> >            >>>> Thank you Markku for proposing the text. Some of this i=
s
> 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=3D
> 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 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
>

--0000000000004635c905e4f4c369
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">The latest text looks good to me.=C2=A0</div><br><div cla=
ss=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Jul 28, 20=
22, 3:29 PM Markku Kojo &lt;kojo=3D<a href=3D"mailto:40cs.helsinki.fi@dmarc=
.ietf.org">40cs.helsinki.fi@dmarc.ietf.org</a>&gt; wrote:<br></div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">Hi Vidhi,<br>
<br>
On Thu, 28 Jul 2022, Vidhi Goel wrote:<br>
<br>
&gt; <br>
&gt; <br>
&gt; Hi Markku,<br>
&gt; Can you review the PR? As I have adopted the change that you suggested=
, it might be an easy one. We would like to converge on<br>
&gt; this soon.<br>
<br>
I&#39;m fine with the text except the sentence that I spotted only after <b=
r>
re-reading the text later and already commented on the wg mailing list:<br>
<br>
=C2=A0 &quot;the mechanisms described in [RFC7661] can be used to mitigate =
this<br>
=C2=A0 =C2=A0issue as it would allow using a value between _cwnd_ and<br>
=C2=A0 =C2=A0_flight_size_ to calculate the new _ssthresh_ in Figure 5.&quo=
t;<br>
<br>
AFAIK &quot;using a value between _cwnd_ and _flight_size_ to calculate the=
 new <br>
_ssthresh_&quot; does not correctly capture the algo in RFC 7661. In the <b=
r>
non-validated RFC 7661 uses<br>
<br>
=C2=A0 (Max(pipeACK,LossFlightSize))/2<br>
<br>
and adjusts it with R (=3Dretransmitted data) in the end of recovery phase.=
<br>
And, in the validated phase RFC 7661 uses FlightSize/2.<br>
<br>
It would be good to have Gorry to review this piece of text as the text <br=
>
seems to have been modified from what Gorry originally wrote.<br>
<br>
Good to check that Yuchung also is fine with all the latest text.<br>
<br>
Thanks,<br>
<br>
/Markku<br>
<br>
<br>
<br>
&gt; [png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAA=
Cnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAA<br>
&gt; AAASUVORK5CYII=3D]<br>
&gt; restrict use of cwnd directly on a congestion event by goelvidhi =C2=
=B7 Pull Request #148 =C2=B7 NTAP/rfc8312bis<br>
&gt; <a href=3D"http://github.com" rel=3D"noreferrer noreferrer" target=3D"=
_blank">github.com</a><br>
&gt; <br>
&gt; <br>
&gt; Thanks,<br>
&gt; Vidhi<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0On Jul 24, 2022, at 2:09 PM, Vidhi Goel &lt;=
<a href=3D"mailto:vidhi_goel@apple.com" target=3D"_blank" rel=3D"noreferrer=
">vidhi_goel@apple.com</a>&gt; wrote:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=EF=BB=BFHi Markku,<br>
&gt; I have updated the PR with your suggested text to converge faster. Can=
 you take a look<br>
&gt; -=C2=A0<a href=3D"https://github.com/NTAP/rfc8312bis/pull/148/" rel=3D=
"noreferrer noreferrer" target=3D"_blank">https://github.com/NTAP/rfc8312bi=
s/pull/148/</a><br>
&gt; <br>
&gt; Vidhi<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0On Jul 19, 2022, at 8:03 PM, Markku Kojo &lt=
;kojo=3D<a href=3D"mailto:40cs.helsinki.fi@dmarc.ietf.org" target=3D"_blank=
" rel=3D"noreferrer">40cs.helsinki.fi@dmarc.ietf.org</a>&gt; wrote:<br>
&gt; <br>
&gt; Hi Vidhi (Cc&#39;ing also Gorry because he has better insight into RFC=
 7661),<br>
&gt; <br>
&gt; Thanks for the text. I&#39;ll reply here to keep the discussion on the=
 wg list so that anyone interested can more<br>
&gt; easily follow the discussion (jumping back and worth between ML and gi=
thub may become intractable).<br>
&gt; <br>
&gt; First, I want to stress that I am not expecting nor insisting to stick=
 with my proposed text (with necessary<br>
&gt; changes to address the comments on the list) but it could possibly res=
ult in faster conclusion(?).<br>
&gt; <br>
&gt; Second, I&#39;d like to highlight that my proposed additional text was=
 intended just to bring up the caveats of simply<br>
&gt; using cwnd and give advise that is in line with other standards track =
CC RFCs. It was not intended to specify any<br>
&gt; algorithm (or a part of an algorithm).<br>
&gt; <br>
&gt; The new text in github IMO has the following issues:<br>
&gt; <br>
&gt; 1. It does not mention the caveat of letting cwnd to grow<br>
&gt; =C2=A0=C2=A0beyond rwnd which is a known implementation problem in<br>
&gt; =C2=A0=C2=A0the past (so it can easily be repeated by some new<br>
&gt; =C2=A0=C2=A0implementors) nor does it explain why simply using<br>
&gt; =C2=A0=C2=A0cwnd is incorrect.<br>
&gt; <br>
&gt; 2. Even though this draft is intended to be applicable<br>
&gt; =C2=A0=C2=A0with QUIC, it misses the pointer to RFC 9002 that<br>
&gt; =C2=A0=C2=A0articulates the corresponding requirement for QUIC.<br>
&gt; <br>
&gt; 3. It tries to create an ad-hoc algorithm in a single<br>
&gt; =C2=A0=C2=A0sentence that captures the RFC 7661 algorithm for<br>
&gt; =C2=A0=C2=A0those using cwnd. RFC 7661 is some 20 pages of which<br>
&gt; =C2=A0=C2=A0several pages are used to specify the algorithm.<br>
&gt; =C2=A0=C2=A0That is, the proposed text ignores several crucial<br>
&gt; =C2=A0=C2=A0actions of RFC 7661. And, my proposal was not to<br>
&gt; =C2=A0=C2=A0provide an algorithm for those using cwnd.<br>
&gt; <br>
&gt; 4. The sentence / rule &quot;when flight_size is less than 1/2<br>
&gt; =C2=A0=C2=A0of the cwnd&quot; is not capturing what was discussed earl=
ier<br>
&gt; =C2=A0=C2=A0in github and now on the wg list, and it is also in<br>
&gt; =C2=A0=C2=A0conflict with RFC 9002 and effectively also with RFC<br>
&gt; =C2=A0=C2=A05681. None of these effectively allows the sender not<br>
&gt; =C2=A0=C2=A0reacting to a congestion event but the &quot;new&quot; rul=
e would<br>
&gt; =C2=A0=C2=A0allow it once the cwnd has grown more than 43% above the<b=
r>
&gt; =C2=A0=C2=A0flightsize.<br>
&gt; <br>
&gt; Apologies for finding so many issues with the proposed text.<br>
&gt; <br>
&gt; Thanks,<br>
&gt; <br>
&gt; /Markku<br>
&gt; <br>
&gt; On Sun, 17 Jul 2022, Vidhi Goel wrote:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Thank you everyone for the discussion. Since=
 some of the text was becoming duplicate, I moved the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0below text a<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0few lines up and added a restriction for usi=
ng cwnd directly. And the recommendation to use RFC 7661<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0now<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0applies to both approaches.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Some implementations of CUBIC currently<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0use *cwnd*=C2=A0=E2=80=A6.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Here is the PR -=C2=A0<a href=3D"https://git=
hub.com/NTAP/rfc8312bis/pull/148" rel=3D"noreferrer noreferrer" target=3D"_=
blank">https://github.com/NTAP/rfc8312bis/pull/148</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0I would really appreciate if folks can revie=
w it so that we can close this issue before meeting at<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0IETF 114<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0next week.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Thanks,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Vidhi<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0On Jul 17, 202=
2, at 8:33 AM, Yuchung Cheng &lt;<a href=3D"mailto:ycheng@google.com" targe=
t=3D"_blank" rel=3D"noreferrer">ycheng@google.com</a>&gt; wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Glad we agree on improving the text. I think=
 Vidhi will come up with a good diff that captures our<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0discussion.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0On Thu, Jul 14, 2022 at 4:47 PM Markku Kojo =
&lt;kojo=3D<a href=3D"mailto:40cs.helsinki.fi@dmarc.ietf.org" target=3D"_bl=
ank" rel=3D"noreferrer">40cs.helsinki.fi@dmarc.ietf.org</a>&gt; wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0On Thu, 14 Jul=
 2022, Yuchung Cheng wrote:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; On Thu, J=
ul 14, 2022 at 4:12 PM Markku Kojo<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; &lt;kojo=
=3D<a href=3D"mailto:40cs.helsinki.fi@dmarc.ietf.org" target=3D"_blank" rel=
=3D"noreferrer">40cs.helsinki.fi@dmarc.ietf.org</a>&gt; wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; Hi Yu=
chung,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; On Tu=
e, 12 Jul 2022, Yuchung Cheng wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; A=
FAIK, the latest (and previous) Linux Cubic implementation does not follow<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; &=
quot;The implementations that use _cwnd_ MUST use other measures to avoid<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; _=
cwnd_ from growing beyond the receive window&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; I=
 don&#39;t see the need to add that check in Linux as the effective<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; w=
indow is always the min of cwnd and rwnd.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; That =
does not help. If cwnd is allowed to grow way beyond rwnd (more than<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; 43% f=
or CUBIC or more than 100% for Reno CC), a sender would not respond<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; to an=
 arriving congestion signal effectively at all (and may even<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; incre=
ase the cwnd). That is against the very basic rule in congestion<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; contr=
ol principles we have.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; O=
n the other hand, Linux does restrict cwnd growth if flight size is<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; b=
elow cwnd but the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; a=
ctual logic is more sophisticated than a &quot;cwnd &lt; inflight&quot; che=
ck to<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; w=
ork w/ TSO chunking issue well.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; <=
a href=3D"https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_outpu=
t.c#L1881" rel=3D"noreferrer noreferrer" target=3D"_blank">https://elixir.b=
ootlin.com/linux/latest/source/net/ipv4/tcp_output.c#L1881</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; (=
Neal cc&#39;d here is the inventor of the advanced check)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; I&#39=
;m not sure I follow your logic. Doesn&#39;t that effectively restrict cwnd=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; from =
growing beyond rwnd? To my understanding with that check Linux<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; appli=
es &quot;other measures to avoid _cwnd_ from growing beyond the receive<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; windo=
w&quot;. It does not matter whether the conncetion is<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; recei=
ver-application limited via rwnd or sender-application limited. If<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; rwnd =
limits flight size, cwnd will not grow more. Maybe I am missing<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; somet=
hing?<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; That&#39;=
s right. Limiting cwnd growth on flight size automatically<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; prevents =
cwnd goes far beyond rwnd for the congestion case you are<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; concerned=
 about.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; Your sugg=
ested text &quot;The implementations that use _cwnd_ MUST use<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; other mea=
sures to avoid _cwnd_ from growing beyond the receive window&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; is easily=
 interpreted as a line of code &quot;cwnd =3D min(cwnd, rwnd)&quot;<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0That was not t=
he intent. So, I think we agree.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; What I am=
 saying is that this sentence is not necessary and overly<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; strict. L=
imiting cwnd growth based on inflight which is based on the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; effective=
 sending window (=3D min(cwnd, rwnd)) already prevents cwnd<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; bloats ov=
er rwnd.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Sure, I misint=
erepted your previous text ;)<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; I don&#39=
;t see why Cubic needs to have more strict<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt; rules tha=
n other C.C.s.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0It does not ha=
ve to be more strict rule. So, to my understanding we just<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0need to tweak =
the text such that it is not misinterpreted the way you<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0thought but st=
ill clearly involves the message that the sender needs to<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0prevent cwnd t=
o grow beyond rwnd.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Maybe(?):<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 &quot;.=
.. The implementations that use _cwnd_ MUST use [other|alternative]<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0m=
easures to not allow _cwnd_ to grow when bytes in flight is<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0s=
maller than cwnd_. That also effectively avoids _cwnd_ from<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0g=
rowing beyond the receive window. Such measures are important<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0t=
o prevent a CUBIC sender from using an arbitrarily ...&quot;<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Thanks,<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/Markku<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; Thank=
s,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt; /Mark=
ku<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; J=
ust want to reflect a major implementation status.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; O=
n Tue, Jul 12, 2022 at 2:01 PM Vidhi Goel<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt; &=
lt;vidhi_goel=3D<a href=3D"mailto:40apple.com@dmarc.ietf.org" target=3D"_bl=
ank" rel=3D"noreferrer">40apple.com@dmarc.ietf.org</a>&gt; wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; Thank you Markku for proposing the text. Some of this is already covered=
 in the latest<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0draft but I ca=
n do some edits to your proposed text and create a PR.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; I spoke to other co-authors about this suggestion as well and we are mos=
tly ok with it.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; Vidhi<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; On Jul 11, 2022, at 5:37 PM, Markku Kojo &lt;kojo=3D<a href=3D"mailt=
o:40cs.helsinki.fi@dmarc.ietf.org" target=3D"_blank" rel=3D"noreferrer">40c=
s.helsinki.fi@dmarc.ietf.org</a>&gt; wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Hi all,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; I promised to propose some text to some of the remaining issues.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; This thread starts the discussion on the issue 6 and proposes text t=
o solve the issue:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Issue 6) Flightsize:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0The current text in Sec 4.6 w.r.t using FlightSize vs. c=
wnd for<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0calculating multiplicative decrease is fine except that =
it does<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0not quite correcly reflect what stacks that use cwnd ins=
tead of<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0flightsize should do and actually do. AFAIK and what was=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0discussed in github all stacks apply some sort of restri=
ctions<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0to not allow cwnd to grow beyond rwnd and to not use an<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0arbitrarily high (old) cwnd value to calculate new cwnd<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 =C2=A0when a congestion event occurs.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Current text in Sec 4.6::<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 Some implementations of CUBIC currently use _cwnd_ instead<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 of _flight_size_ when calculating a new _ssthresh_ using Figur=
e 5.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Proposed new text:<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 Some implementations of CUBIC currently use _cwnd_ instead<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 of _flight_size_ when calculating a new _ssthresh_ using Figur=
e 5.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 The implementations that use _cwnd_ MUST use other measures to=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 avoid _cwnd_ from growing beyond the receive window and to not=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 allow _cwnd_ to grow when bytes in flight is smaller than<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 _cwnd_. This prevents a CUBIC sender from using an arbitrarily=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 high _cwnd_ value in calculating the new value for _ssthresh_<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 and _cwnd_ when a congestion event is signalled, but it is not=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 as robust as the mechanisms described in [RFC7661].<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 [Many|Most|All] TCP implementations of CUBIC that use _cwnd_ a=
pply<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 such measures. Likewise, a QUIC sender that also uses congesti=
on<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 window to calculate a new value for the congestion window and<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 slow-start threshold is required to apply similar mechanisms<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;=C2=A0 [RFC 9002].<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Any comments and help in formulating the text are welcome.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Need also some guidance from TCP implementations of CUBIC to finish =
up the second but<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0last sentence.=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; Thanks,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; /Markku<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; _______________________________________________<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; tcpm mailing list<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; <a href=3D"mailto:tcpm@ietf.org" target=3D"_blank" rel=3D"noreferrer=
">tcpm@ietf.org</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/tcpm" rel=3D"norefe=
rrer noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/tc=
pm</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; _______________________________________________<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; tcpm mailing list<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; <a href=3D"mailto:tcpm@ietf.org" target=3D"_blank" rel=3D"noreferrer">tc=
pm@ietf.org</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;&g=
t; <a href=3D"https://www.ietf.org/mailman/listinfo/tcpm" rel=3D"noreferrer=
 noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/tcpm</=
a><br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;&gt;&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0&gt;<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; tcpm mailing list<br>
&gt; <a href=3D"mailto:tcpm@ietf.org" target=3D"_blank" rel=3D"noreferrer">=
tcpm@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/tcpm" rel=3D"noreferr=
er noreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/tcpm=
</a><br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt;_______________________________________________<br>
tcpm mailing list<br>
<a href=3D"mailto:tcpm@ietf.org" target=3D"_blank" rel=3D"noreferrer">tcpm@=
ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/tcpm" rel=3D"noreferrer no=
referrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/tcpm</a><=
br>
</blockquote></div>

--0000000000004635c905e4f4c369--

