Re: [tcpm] AD Review of draft-ietf-tcpm-hystartplusplus-09

Praveen Balasubramanian <pravb.ietf@gmail.com> Mon, 26 September 2022 03:20 UTC

Return-Path: <pravb.ietf@gmail.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 B3817C14F727; Sun, 25 Sep 2022 20:20:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.105
X-Spam-Level:
X-Spam-Status: No, score=-2.105 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=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=gmail.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 TcKJKeDZSKvj; Sun, 25 Sep 2022 20:20:15 -0700 (PDT)
Received: from mail-vk1-xa41.google.com (mail-vk1-xa41.google.com [IPv6:2607:f8b0:4864:20::a41]) (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 DF887C14F6EC; Sun, 25 Sep 2022 20:20:14 -0700 (PDT)
Received: by mail-vk1-xa41.google.com with SMTP id s192so2793966vkb.9; Sun, 25 Sep 2022 20:20:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=PazUJa+NCPJCZ9Tq3yNE6HrkufO7E31+/JV6VR3+vOM=; b=Vw9ZxzAHlDz2ZHvO2SxwVOdsN7QUiY2wFnootWkhPJiO6NowQ+vfDVeLAzsl7F1hUP sGwhzXyi5gkmM1j5FpZZ5Vo+aDs1jSa7V1vxT8xltxGkHSHSBvg9jYmGSQdLkBfXU26D Gk73uK9YrxvEaXeqg/grbCihRMURo/kGF9Vqc3RSxuI1JKFBX3Fr4PAlCOuPdsmhw645 lwOv7Eu/We+TWZsU1WyQ4UlER1fxaidvnzSMpr1S4uH3uE2G5piGaSBl4pOsVmyxcNq+ LRzawE0wiIIAOAS+BzxZotqbNVxkVbg/5fyRUpy+1kJ/eM+VrjSDjo4jgdoBBvko8LiD e5cQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=PazUJa+NCPJCZ9Tq3yNE6HrkufO7E31+/JV6VR3+vOM=; b=hlwYfTdLimrVnz1Zkp2NNtSp2aeXA7jjSONIGqEgtwEGQ/6KHnc+ODQubU8sfXzHFG AD3SZ1iHpVOUIeawkEyDgrbNNHLVX425ckZ/sW+ZD/POk7q1n6K/njnNvO1g4auuwZP/ sInABbrO7ZLhReNVylNhvap0E0ZpyZ/ksM4GA7SzzMzWLGx6HT7H1DWjGM43aZkDU9EH 2MNuv3mUVsRYO7CquUAAOhe5NnDHjfd+oZ1cbWnRqQhrsm49jcwAbhxlMKDjw0s++9Y7 M87mdrJQMK2yB5dAVADwJ7uVRk5QZJ7pGct3zHClSZY7vqfhwu4yiAsJMKMFDPHSszhK MBYQ==
X-Gm-Message-State: ACrzQf0p5XeK0U3EGGqP/pKUP6smWdmI4rP3RUOLPftX1R7Z26p1ODh0 E3m03neb8l2giqg21+gmaA5+tOE6/BfRzfSDyTbGMg9i
X-Google-Smtp-Source: AMsMyM4O6mQNCq107VSEq5NewKkeWzYuxkmrpedv/qT6w27CcdVBhdavQUDDqLoYp4ZlrQ2OxpxUJ+iZ4HSEGmh0pIs=
X-Received: by 2002:a1f:b250:0:b0:3a2:cddc:834d with SMTP id b77-20020a1fb250000000b003a2cddc834dmr8032051vkf.34.1664162413547; Sun, 25 Sep 2022 20:20:13 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxTikRRRLOtmO4bezXvjjDiQ3cpRNqtT_2YaEUQrFUrECw@mail.gmail.com> <0E94A985-516C-4287-9789-50D3A682211B@fh-muenster.de> <CAM4esxS-3kZDLp-1n3JM3jOH=4ZLNaf0vsszMgqrJ7ss=jxcCg@mail.gmail.com> <D98D5BA8-B5B8-42F7-AF61-352235D8BC39@fh-muenster.de> <CAM4esxQNfuMKq+pj0v2+mO8Mxq8nbpgmVDai-WgLvgCfXrtibQ@mail.gmail.com> <741E2E66-0EC9-48E3-BF8E-4EFE000567D2@fh-muenster.de> <CADVnQym61GQ5zqE8+VpkB9=D03UYwWyVodbJECY319vkP9qDjQ@mail.gmail.com> <CAM4esxSobvx4yiYkGe0xgPEO7=s_tCo4-ieWHNedai+xmeZiOA@mail.gmail.com> <E4EE4022-9956-46B4-8118-456ED4800EF9@fh-muenster.de> <CAM4esxQmF1GU+OO-GoyAn_aZnhvoZC86vpPq=kWxpMUdV54fvg@mail.gmail.com> <CAL=F3yKsaXWET4MTmNL+UAxDcWVas8c3Sri5eTz-rPqemoJJhQ@mail.gmail.com> <CADVnQy=o_PFEyOS5U-H40fZh+kHzNxZRh6e78JDuY0EzRgooPg@mail.gmail.com>
In-Reply-To: <CADVnQy=o_PFEyOS5U-H40fZh+kHzNxZRh6e78JDuY0EzRgooPg@mail.gmail.com>
From: Praveen Balasubramanian <pravb.ietf@gmail.com>
Date: Sun, 25 Sep 2022 20:20:02 -0700
Message-ID: <CAL=F3yKZrY91Gop8mOPsCes_f_FC5vfuJy=vv_VBi0tgNQ3hmw@mail.gmail.com>
To: Neal Cardwell <ncardwell@google.com>
Cc: Martin Duke <martin.h.duke@gmail.com>, Michael Tuexen <tuexen@fh-muenster.de>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>, draft-ietf-tcpm-hystartplusplus.all@ietf.org
Content-Type: multipart/alternative; boundary="00000000000082145005e98c0119"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/aHkxHkoaUemGpIYuukk7aGXt2Ps>
Subject: Re: [tcpm] AD Review of draft-ietf-tcpm-hystartplusplus-09
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: Mon, 26 Sep 2022 03:20:18 -0000

That text looks good to me. I am for removing the reference to RFC3465.

Re. L>=2 I am fine with it. The only reason I used L>=1 is because RFC 5681
unfortunately has this text:

We note that [RFC3465 <https://www.rfc-editor.org/rfc/rfc3465>] allows
for cwnd increases of more than SMSS
   bytes for incoming acknowledgments during slow start on an
   experimental basis; however, such behavior is not allowed as part of
   the standard.


We can publish a new revision with these changes.




On Thu, Sep 8, 2022 at 7:52 PM Neal Cardwell <ncardwell@google.com> wrote:

>
>
> On Thu, Sep 8, 2022 at 10:03 PM Praveen Balasubramanian <
> pravb.ietf@gmail.com> wrote:
>
>> Thanks for the review and the comments. I agree with Neal that burst
>> control, pacing, and L limits should be separated from Hystart++, and
>> should have their own RFC. One path forward would be to still refer to
>> RFC3465 for context on ABC and origin of the L parameter but provide an
>> updated recommendation for L based on deployment experience. Would the
>> following updates be acceptable?
>>
>> In Section 4.2
>>
>> The following pseudocode integrates Appropriate Byte Counting as
>>    described in [RFC3465 <https://datatracker.ietf.org/doc/html/rfc3465>]. See section 4.3 for an updated recommendation of variable L based on deployment experience.
>>
>>
> I think Martin is suggesting that it would be nice to not have the
> Hystart++ RFC depend on ABC in any direct way, and I like that direction.
>
> What do folks think about something like the following text, which Martin
> and I have been collaborating on:
> """
> 4.2. Algorithm Details
>
> The following pseudocode uses a limit, L, to control the aggressiveness of
> the cwnd increase during both standard slow start and CSS. While an
> arriving ACK may newly acknowledge an arbitrary number of bytes, the
> Hystart++ algorithm limits the number of those bytes applied to increase
> the cwnd to L*MSS bytes.
> """
>
>
>> In Section 4.3
>>
>> A paced TCP implementation SHOULD use L=Infinity. Burst concerns are mitigated by pacing and this setting allows for optimal cwnd growth on modern networks.
>>
>> A non-paced TCP implementation SHOULD use L >=1 and L <=8. L values larger than 8 can cause increase in burstiness and loss rates and result in poor performance.
>>
>>
> This sounds good to me, although I would recommend "L >=2 and L <=8".
>
> RFC3465 already says: "This document specifies that TCP implementations
> MAY use L=2*SMSS bytes", so based on that and experience with Linux's
> L=infinity I think it's definitely fine to have Hystart++ say stacks MAY
> use L=2. I would argue that stacks SHOULD use at least 2, given delayed
> ACKs.
>
> In Section 4.3, how about something like:
>
>
> """
>
> A paced TCP implementation SHOULD use L=Infinity. Burst concerns are mitigated by pacing and this setting allows for optimal cwnd growth on modern networks.
>
>
> A non-paced TCP implementation SHOULD use L >=2 and L <=8. L values
> smaller than 2 can suffer performance problems from the negative impact of
> the standard delayed acknowledgment algorithm, which often sends one
> acknowledgment per 2*SMSS bytes. L values larger than 8 can cause
> increases in burstiness and loss rates and result in poor performance.
> """
>
>
>> This draft is already updating slow start behavior from RFC 5681, so I
>> think its within scope to update the recommendation on use of L based on
>> deployment experience on the Internet and modern networks.
>>
>> Suggestions are welcome.
>>
>
> I agree it makes sense to consider an update to the recommendation on L
> values, but I like Martin's idea to try to avoid dependencies on ABC, so
> that ABC can be retired at some point.
>
> cheers,
> neal
>
>
>
>>
>> On Thu, Sep 8, 2022 at 2:24 PM Martin Duke <martin.h.duke@gmail.com>
>> wrote:
>>
>>> I am happy with that formulation, but want community consensus for the
>>> numbers (1 and infinity)
>>>
>>> On Thu, Sep 8, 2022 at 2:12 PM <tuexen@fh-muenster.de> wrote:
>>>
>>>> > On 8. Sep 2022, at 18:53, Martin Duke <martin.h.duke@gmail.com>
>>>> wrote:
>>>> >
>>>> > Hi Neal, thanks for the data.
>>>> >
>>>> > Given its wide deployment, I'm happy for the spec to allow L_max =
>>>> infinity, assuming the community is fine with it.
>>>> So would you be happy with:
>>>>
>>>> The positive integer L SHOULD be 1 and MAY be larger than 1.
>>>>
>>>> Best regards
>>>> Michael
>>>> >
>>>> > I don't care that much, in theory, whether L limits are defined in
>>>> this document or in another one. However, in practice adding about 2
>>>> paragraphs to this document would allow us to obsolete 3465. If we can
>>>> rapidly reach consensus on this, it seems like the expeditious thing to do.
>>>> >
>>>> > The alternative is to simply eliminate L from Hystart++, and we
>>>> "really know" what people will do in production.
>>>> >
>>>> > On Thu, Sep 8, 2022 at 9:42 AM Neal Cardwell <ncardwell@google.com>
>>>> wrote:
>>>> >
>>>> >
>>>> > On Wed, Sep 7, 2022 at 5:46 PM <tuexen@fh-muenster.de> wrote:
>>>> > > On 7. Sep 2022, at 22:44, Martin Duke <martin.h.duke@gmail.com>
>>>> wrote:
>>>> > >
>>>> > >
>>>> > >
>>>> > > On Wed, Sep 7, 2022 at 1:15 PM <tuexen@fh-muenster.de> wrote:
>>>> > > > On 7. Sep 2022, at 21:40, Martin Duke <martin.h.duke@gmail.com>
>>>> wrote:
>>>> > > >
>>>> > > > I would be happier with some sort of limit on L. Maybe: the
>>>> positive integer L SHOULD be 2 and MUST be no more than 8(?) But whatever
>>>> numbers the community is comfortable with are fine with me.
>>>> > > Hi Martin,
>>>> > >
>>>> > > the crucial point here is that we know that MS used L = 8. But we
>>>> don't have any information,
>>>> > > whether other values of L are worse or better, what the tradeoffs
>>>> are and in particular
>>>> > > what traffic patterns impact the choice of L. Wouldn't we need such
>>>> an analysis / results
>>>> > > from an experiment for selecting an upper limit L_MAX? I would
>>>> assume that it might
>>>> > > have an impact whether pacing is used or not.
>>>> > >
>>>> > > Well the community has at least some data that L = 8 is safe on the
>>>> internet. Maybe some other practitioners have data for 16 or 32 or
>>>> whatever. It would be reasonable to set some sort of limit based on the
>>>> limits of our empirical limit.
>>>> > Sure. My point was just that the results provided my MS show that
>>>> L_MAX <= 8 seems to
>>>> > be safe in the scenario they looked at. But there is no statement
>>>> that L_MAX > 8 is
>>>> > bad...
>>>> > >
>>>> > > It would be fine to say "one SHOULD NOT exceed L = foo if you're
>>>> not pacing"
>>>> > >
>>>> > >
>>>> > > >
>>>> > > > I'd also be happier with a cut-and-paste of those considerations
>>>> from 3465, which should not be a lot of work.
>>>> > > >
>>>> > > > The lower-effort approach is just to strike L from the document
>>>> and let people do what they've doing, which is use Ls well in excess of 2.
>>>> But I'd prefer we'd actually write it down because
>>>> > > > (1) our standards are better if they reflect widespread behavior
>>>> in the internet; and
>>>> > > I agree with the above.
>>>> > > > (2) it means we can finally make 3465 historic, as we have
>>>> standards-track documents that cover virtually all of its material.
>>>> > > >
>>>> > > > If the community really cannot converge on sensible limits for L,
>>>> then I'd rather publish with no L than wait for a deadlock to resolve.
>>>> > > In my view, the selection of L is not part of the core of the
>>>> document.
>>>> > >
>>>> > > This document standardizes a new slow start algorithm, which
>>>> includes L as a parameter, for which there is no standard.
>>>> > My point was that there is no L_MAX given here.
>>>> > >
>>>> > > >
>>>> > > > But as a way forward, I'd suggest:
>>>> > > > 1) the authors propose text that sets bounds on L (a SHOULD and a
>>>> MUST) and cut-and-pastes the considerations.
>>>> > > Aren't the consideration in RFC 3465 coming to the conclusion: L
>>>> SHOULD be 1, MAY be 2, MUST NOT be larger than 2?
>>>> > > How to use the same considerations to come to a different
>>>> conclusion: L SHOULD be 2, MUST NOT be larger than L_MAX
>>>> > > for L_MAX > 2?
>>>> > >
>>>> > > Re: SHOULD 1 or 2, I don't have a strong opinion but I feel like
>>>> the 3465 experiment shows that 2 is safe, and somewhat beneficial given the
>>>> prevalence of ack thinning? If there is no consensus for this, I'm happy to
>>>> go with 1.
>>>> > >
>>>> > > L_MAX: My preference is to set a value that is widely deployed with
>>>> good data that it is safe to do so
>>>> > Let us see if people provide data which values are good and which
>>>> values are bad...
>>>> >
>>>> > FWIW, Linux TCP has been using L_MAX=infinity since 2013:
>>>> >
>>>> >
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f9843a751d0a2
>>>> >
>>>> > IMHO trying to limit bursts with an L parameter is misguided:
>>>> >
>>>> > + AN L limit is only a partial solution; TCP RFCs still allow massive
>>>> line-rate bursts of cwnd when restarting from idle, which is super-common
>>>> in some very common Internet workloads: web traffic, streaming video, RPC.
>>>> >
>>>> > + To avoid such bursts, whether restarting from idle or not, TCP
>>>> stacks should enable pacing.
>>>> >
>>>> > + Once pacing is enabled, having an L limit purely shoots your flow
>>>> in the foot, causing it to fail to double cwnd each round trip in slow
>>>> start in the very common case of the many ubiquitous aggregation mechanisms
>>>> that cause ACKs to arrive for dozens of packets at a time (e.g.. Linux
>>>> GRO/LRO commonly aggregate 45 packets into a single unit that is processed
>>>> and ACKed as a unit).
>>>> >
>>>> > IMHO ideally burst control, pacing, and L limits should be separated
>>>> from Hystart++, and should have their own RFC.
>>>> >
>>>> > And whatever is done, at a minimum Hystart++ should not depend on
>>>> RFC3465 (ABC) (though it could mention it in passing to provide context).
>>>> >
>>>> > my two cents,
>>>> > neal
>>>> >
>>>> > _______________________________________________
>>>> > tcpm mailing list
>>>> > tcpm@ietf.org
>>>> > https://www.ietf.org/mailman/listinfo/tcpm
>>>>
>>>>