Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?
Yoshifumi Nishida <nsd.ietf@gmail.com> Mon, 01 May 2023 21:22 UTC
Return-Path: <nsd.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 49D9EC151993 for <tcpm@ietfa.amsl.com>; Mon, 1 May 2023 14:22:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.994
X-Spam-Level:
X-Spam-Status: No, score=-6.994 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, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable 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 m8kw845ylnH4 for <tcpm@ietfa.amsl.com>; Mon, 1 May 2023 14:22:36 -0700 (PDT)
Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com [IPv6:2001:4860:4864:20::2e]) (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 8FB9AC151522 for <tcpm@ietf.org>; Mon, 1 May 2023 14:22:36 -0700 (PDT)
Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-18b1c643219so1117347fac.2 for <tcpm@ietf.org>; Mon, 01 May 2023 14:22:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682976155; x=1685568155; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Cufe65io7cOgW1aNgBcYCceEJ9mXOyDJ6G+O4JBHAgg=; b=BpDPo5nQB1OxzmcWgCNidLQqyI/L0L0dgRukwzPebwNUuCnKzSqkbyjr6xqpjYV2ZE NJrrunMmVRU2dl4AxxUxkKIn/w9TnFom8yO9zhGonaD5d+3rPU0mtMOwm6P+v7lpso+C AWbD2hUWP8EkMbWRS/5oqqamrH4lnn9Vo//FnUgMvYghrNQZlrMMrA60V/imVFyIwBqX OD8/ESnZqyOvJLj+d5xVncPC9EI/WXGY0D94cN2r53n1MNmCWjIUCyMAfrRdGZvHfhOh 5zKcGPuoeBcvT+5D5nDJcNIP18HhNnfEqCORIb2wmeycj7i+Vb+8w5cEDnKAvbMChTXE xQ1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682976155; x=1685568155; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Cufe65io7cOgW1aNgBcYCceEJ9mXOyDJ6G+O4JBHAgg=; b=DEx08Om16N/6iu7k0Y1rrO6IYvUhZjxZUh8f7ydzIInzkUMFbNn7ePkuoHtLU9P+6B /HEJHNV7QzKFnUFd1r7YrpVxcOz2XcxY3+yeHXZ88r9f+3bxSqcLiOQBuTKaNYZMC/Ks G/6b2MbCSbCAPhWSvtwsWFFo7XwOlWXaFxybeJiC0HgDHjg9HxtFpVA7QiUgnXKxnfwr 7UCmUwm4pP7Ww9OPdRhCljug89KP47QC3wfdw7JWOhr6V57XFTgn0jXepx6gsMs+rnmp T0f0TD+orzLcBMnyiQwxq5GF9PeLaDaiRbv5BdHQkqq/XmjXaqCtCww7V8U4aFqapaY6 80dQ==
X-Gm-Message-State: AC+VfDzqiPE2Ls8sLolcbT35IlhxCseuUnmW9y/vR17sTwohu7gQXxCx zLjKCsfj4+pYOnNPwVB+yDvS2SrVZmc1aG3jrCw=
X-Google-Smtp-Source: ACHHUZ57vIuzuJJg5/ANFW/yqgxBauzdAqY3SYd3TQ1j5ebnMzVHaOqjwHgVBDt+M2gmu4A1l5euHYFEkQV3FZ0hlTc=
X-Received: by 2002:a05:6871:5c5:b0:18e:2c9f:ec38 with SMTP id v5-20020a05687105c500b0018e2c9fec38mr6539979oan.42.1682976155193; Mon, 01 May 2023 14:22:35 -0700 (PDT)
MIME-Version: 1.0
References: <CADVnQy=rbTc1rb5PKA1mvSJm61UTb=T5xzOkMBBB2Yadoe691A@mail.gmail.com> <CAK6E8=ckFHoiRTmLEy6ZH8z2ovv9+7S_UzUqnO3W4xcumyA1Gg@mail.gmail.com> <CADVnQyk7nxmaoTHh5qo9XvhrWojoB2R78FK0zX5CcwoZq6c=hg@mail.gmail.com> <CAK6E8=cXXWfHd+T3GkDEhJ6TmbstygL=qD4nns3w50DTe2eaZw@mail.gmail.com> <CADVnQy=Q5cvN_+Fa0rbNc2a_Aqe=haROOd4SNpk9TbvE1MXVvQ@mail.gmail.com> <CADVnQymCZkqRw6f8JTuFXhNXEo1KJx4S48gXaBaOPRasOVCg+Q@mail.gmail.com> <CAAK044QCh_KyFugteUo1eaez_6LipCXtJKW1rxaHqhidfRRGmQ@mail.gmail.com> <F24D815E-4932-4A84-B6C6-ECBCEB487199@netflix.com>
In-Reply-To: <F24D815E-4932-4A84-B6C6-ECBCEB487199@netflix.com>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Mon, 01 May 2023 14:22:24 -0700
Message-ID: <CAAK044QvbVHs+eFfitxpDUQOM2_vtBei-p5+ZUcatXTyYYE++g@mail.gmail.com>
To: Randall Stewart <rrs@netflix.com>
Cc: Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>, tcpm <tcpm@ietf.org>, Matt Mathis <mattmathis@measurementlab.net>
Content-Type: multipart/alternative; boundary="000000000000e55a3005faa86b8b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/Bkikklqh5yovZYSpMpAbuRec-2g>
Subject: Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?
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, 01 May 2023 21:22:38 -0000
Hi Randall, I might miss something, but here's what I've thought.. If we lost many packets in a RTT such as the Figure 5 in the 6937bis draft, I think the window growth during the recovery period will be bound by PRR-CRB or PRR-SSRB. Hence, I think the cwnd at the end of recovery can be smaller than we expect as shown in figure 5. -- Yoshi On Mon, May 1, 2023 at 4:17 AM Randall Stewart <rrs@netflix.com> wrote: > Hi Neal and Yoshi: > > Neal: So the FreeBSD implementation in rack, like linux, does the same > exact thing set cwnd to ssthresh at > exit from recovery. > > Yoshi: I don’t see how this would cause cwnd to be larger, since at the > entry to recovery you set ssthresh = cwnd * Beta. But > maybe I am missing something, can you give an example like Neal > did below? > > > Thanks > > R > > On May 1, 2023, at 5:32 AM, Yoshifumi Nishida <nsd.ietf@gmail.com> wrote: > > Hi Neal, > > If we always set cwnd to ssthresh at the end of recovery, I am guessing > there will be some cases where cwnd jumps up drastically at the end of the > recovery. For example, many packets were lost before entering recovery. > Or, am I missing something? > -- > Yoshi > > On Wed, Apr 19, 2023 at 7:37 PM Neal Cardwell <ncardwell= > 40google.com@dmarc.ietf.org> wrote: > >> Working through examples for the "draft-ietf-tcpm-prr-rfc6937bis-03 and >> RecoverFS initialization" thread this evening, I ran into another potential >> issue. >> >> The Linux TCP implementation of PRR explicitly/directly sets cwnd to >> ssthresh at the end of fast recovery (in tcp_end_cwnd_reduction()). But >> this behavior is not in the algorithm in the PRR RFC or draft, at least in >> the figures in section 6, Algorithms. Maybe it is in the prose somewhere >> and I missed it; but in that case I'd argue strongly to put this in the >> figures in section 6, Algorithms. >> >> AFAICT in some cases this is strictly necessary to get cwnd to grow to >> reach ssthresh. Without such a direct step, cwnd could end up far below >> ssthresh at the end of recovery. Here's an example to illustrate: >> >> CC = CUBIC >> >> cwnd = 10 >> >> The reordering degree was estimated to be large, so the connection will >> wait for more than 3 packets to be SACKed before entering fast recovery. >> >> --- Application writes 10*MSS. >> >> TCP sends packets P1 .. P10. >> pipe = 10 packets in flight (P1 .. P10) >> >> --- P2..P9 SACKed -> do nothing >> >> (Because the reordering degree was previously estimated to be large.) >> >> --- P10 SACKed -> mark P1 as lost and enter fast recovery >> >> PRR: >> ssthresh = CongCtrlAlg() = 7 packets // CUBIC >> prr_delivered = 0 >> prr_out = 0 >> RecoverFS = snd.nxt - snd.una = 10 packets (P1..P10) >> >> DeliveredData = 1 (P10 was SACKed) >> >> prr_delivered += DeliveredData ==> prr_delivered = 1 >> >> pipe = 0 (all packets are SACKed or lost; P1 is lost, rest are SACKed) >> >> safeACK = false (snd.una did not advance) >> >> if (pipe > ssthresh) => if (0 > 7) => false >> else >> // PRR-CRB by default >> sndcnt = MAX(prr_delivered - prr_out, DeliveredData) >> = MAX(1 - 0, 1) >> = 1 >> >> sndcnt = MIN(ssthresh - pipe, sndcnt) >> = MIN(7 - 0, 1) >> = 1 >> >> cwnd = pipe + sndcnt >> = 0 + 1 >> = 1 >> >> retransmit P1 >> >> prr_out += 1 ==> prr_out = 1 >> >> --- P1 retransmit plugs hole; receive cumulative ACK for P1..P10 >> >> DeliveredData = 1 (P1 was newly ACKed) >> >> prr_delivered += DeliveredData ==> prr_delivered = 2 >> >> pipe = 0 (all packets are cumuatively ACKed) >> >> safeACK = (snd.una advances and no further loss indicated) >> safeACK = true >> >> if (pipe > ssthresh) => if (0 > 7) => false >> else >> // PRR-CRB by default >> sndcnt = MAX(prr_delivered - prr_out, DeliveredData) >> = MAX(2 - 1, 1) >> = 1 >> if (safeACK) => true >> // PRR-SSRB when recovery is in good progress >> sndcnt += 1 ==> sndcnt = 2 >> >> sndcnt = MIN(ssthresh - pipe, sndcnt) >> = MIN(7 - 0, 2) >> = 2 >> >> cwnd = pipe + sndcnt >> = 0 + 2 >> = 2 >> >> So we exit fast recovery with cwnd=2 even though ssthresh is 7. >> >> As noted above, the Linux TCP implementation does not suffer this problem >> because it explicitly/directly sets cwnd to ssthresh at the end of fast >> recovery. >> >> I would recommend including this cwnd=ssthresh step at the end of >> recovery in the draft, to ensure that cwnd reaches ssthresh at the end of >> fast recovery, even in cases like this where there will be insufficient >> delivered data in fast recovery to allow pipe to incrementally grow to >> reach ssthresh using PRR-SSRB. >> >> Best regards, >> neal >> >> _______________________________________________ >> tcpm mailing list >> tcpm@ietf.org >> https://www.ietf.org/mailman/listinfo/tcpm >> <https://www.google.com/url?q=https://www.ietf.org/mailman/listinfo/tcpm&source=gmail-imap&ust=1683538345000000&usg=AOvVaw2cOITQpYcuP_M95396rEmw> >> > _______________________________________________ > tcpm mailing list > tcpm@ietf.org > > https://www.google.com/url?q=https://www.ietf.org/mailman/listinfo/tcpm&source=gmail-imap&ust=1683538345000000&usg=AOvVaw2cOITQpYcuP_M95396rEmw > > > ------ > Randall Stewart > rrs@netflix.com > > > >
- [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and Reco… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Neal Cardwell
- [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwn… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Randall Stewart
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Yoshifumi Nishida
- Re: [tcpm] [EXTERNAL] Re: draft-ietf-tcpm-prr-rfc… Yi Huang
- Re: [tcpm] [EXTERNAL] Re: draft-ietf-tcpm-prr-rfc… Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: draft-ietf-tcpm-prr-rfc… Yi Huang
- Re: [tcpm] [EXTERNAL] Re: draft-ietf-tcpm-prr-rfc… Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Neal Cardwell
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set… Randall Stewart
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Yoshifumi Nishida
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Yuchung Cheng
- Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03 and … Yoshifumi Nishida