Re: [tcpm] [EXTERNAL] Re: draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?

Yi Huang <huanyi@microsoft.com> Mon, 21 August 2023 18:20 UTC

Return-Path: <huanyi@microsoft.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 880B0C13AE4A for <tcpm@ietfa.amsl.com>; Mon, 21 Aug 2023 11:20:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.008
X-Spam-Level:
X-Spam-Status: No, score=-7.008 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-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_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=microsoft.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 y4NnMsbrHBbM for <tcpm@ietfa.amsl.com>; Mon, 21 Aug 2023 11:20:00 -0700 (PDT)
Received: from BN3PR00CU001.outbound.protection.outlook.com (mail-eastus2azon11020015.outbound.protection.outlook.com [52.101.56.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 11012C13AE48 for <tcpm@ietf.org>; Mon, 21 Aug 2023 11:19:59 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M8DDprRKMH27v9O3rkxNC1TeZm/NrkRVCxrunNZPXtjelqg8RbA2hNkuDDY/WTec34X0LVsl9fuRdwiNf16Dcwow0VB2ArcP0icP9NneX8gCrImMeu8UwxSjDjkowGXWcDfPV/8HKh5DQag3d8mkwDaYvm0EUkLkWRK366dqL3FCiG3Q5GSgewoo6OODgURoQtanzTx0oQSCw3QpowOG4jxKSplcuq4hihAWdOQBH0+AVb+tpUq+dwNannLQHpvql5+QkzKmcLpg/fOeCPYPrNn8x9Gq4+xjIYE5Z29JvgbfqBtCQnZVuVPqU1vGZx5+h4Ndvv1vQWQK6Q27d+dK3w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RIHLu38o6RpvZ1SD2X8NT/+FwE5ohZsyHBS466pe1UE=; b=Jhxe1BYFUwNTr2QYkQ2JZQsWx8yugyD+wtigFhTlMLduLGFlYmVElxcY7CSruLAbKTfsFnmCZ0qVC8zNCzUxsjLCNQJD7sPXXnVpz6yoimUhTuIaKgz2jTtH02KFoPZynuFZ8oOEtJBZHWbwnDMEERjHzBoB4u3Ij0QOm7BBMUT9U9aRLJ/7Rv9ebkHWnRZYZN65jtUt46LVRTFINObXYEP5bwhkebBaiiZIepVKgAHC5M5nfYx9qyx1DQLe0wk48fdKM/DpgbCryrazilYJaXKm5sweSGZJWAxdsGGGrN6r2eqHMBZRBBCmPjcMuvVMwmNy7WtHka7CR5kD0SkDIg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RIHLu38o6RpvZ1SD2X8NT/+FwE5ohZsyHBS466pe1UE=; b=jJqLb7v3m1tpiqZnfhvpUVtBoiIcL3LmgwNxcQrr5c9npXM4kpipNf0XsAHX73JlaCn4EnCE4evAAqXTI7Zrsmmk3QKiMcraGWV0MGOhlGHIoqFQsCccMzMy2vUSNT3IT2qw7tSvoANBnCJ9wquNaZjX5Jlt1lKpbqG+W7e2oSo=
Received: from MN2PR00MB0736.namprd00.prod.outlook.com (2603:10b6:208:1dc::17) by MW4PR00MB1478.namprd00.prod.outlook.com (2603:10b6:303:213::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6760.0; Mon, 21 Aug 2023 18:19:54 +0000
Received: from MN2PR00MB0736.namprd00.prod.outlook.com ([fe80::2e06:6c8f:73b:bbbf]) by MN2PR00MB0736.namprd00.prod.outlook.com ([fe80::2e06:6c8f:73b:bbbf%6]) with mapi id 15.20.6757.000; Mon, 21 Aug 2023 18:19:54 +0000
From: Yi Huang <huanyi@microsoft.com>
To: Yuchung Cheng <ycheng@google.com>
CC: Yoshifumi Nishida <nsd.ietf@gmail.com>, Neal Cardwell <ncardwell@google.com>, tcpm <tcpm@ietf.org>, Matt Olson <maolson@microsoft.com>
Thread-Topic: [EXTERNAL] Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?
Thread-Index: AQHZfA/YfxdndiF6wEaMGzO3HfsGOq9FRM6AgACpHQCAAWJ7AIAEvK6AgJSG/QCAAPPxAIAAoqKAgACDMwCAAAFSgIAACACAgAABmQCAAC1MAIASz0yAgAAEsjqAAAOwgIAAAKB9
Date: Mon, 21 Aug 2023 18:19:54 +0000
Message-ID: <BY5PR00MB0723A03249E35BB6F6EC49EFC31EA@BY5PR00MB0723.namprd00.prod.outlook.com>
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> <CAAK044QvbVHs+eFfitxpDUQOM2_vtBei-p5+ZUcatXTyYYE++g@mail.gmail.com> <CADVnQyn-Oi+0XpZMa9KLPdSMwCYpB-PQNYb0f6xRB6FeCMteoA@mail.gmail.com> <CAAK044RR1Vd3tNhsUXH4Ce66BVwg_z+O-vOrACmiOzf-+avS8A@mail.gmail.com> <CAAK044QDjUej5Z=Q32i+P6zJe72ZnSDF0JJjkqrEN5zSHtqwYQ@mail.gmail.com> <CAK6E8=depqAzh0FN0JYkXOWYsZU-bGfXybaqj4Jn2sySKb9_rg@mail.gmail.com> <CAAK044T6GX6mC0oX=f46PjJScx5ah4hivvhYAcZ_TbBUj1nMtw@mail.gmail.com> <CADVnQynwqhG+RCsO5mHyg-9jTRVGfhqgNpN5nqe5kx52VD5cEQ@mail.gmail.com> <CADVnQym3Jo2C9vKJ-Bt+UdBGmswLjjdZBy+Vf37q7ty85HBgyA@mail.gmail.com> <CAK6E8=eBSU3pz7VKrLasVAWtLm-Q=TV-r_bJ2jFZQhk3sLQErw@mail.gmail.com> <CADVnQy=_wqB-32Y7hr0wZHJ=RW9L8_Q4ddVBzCReJNgaqazoYA@mail.gmail.com> <CAAK044Q6DGQn9bFNNTTBUEDTnRVE=SaWLMmErHkiCgUyLSD4yQ@mail.gmail.com> <CAAK044TrCrtT7FBLaW=B=k00jghWx1-hD16xG_PpQDD2Nq9pEQ@mail.gmail.com> <BY5PR00MB07238DDA94A0A0933C1D4DF9C31EA@BY5PR00MB0723.namprd00.prod.outlook.com> <CAK6E8=emN82x95AaDPMyZw=Ug4mP6nrd5OXUD84n4X7_-Vj5sg@mail.gmail.com>
In-Reply-To: <CAK6E8=emN82x95AaDPMyZw=Ug4mP6nrd5OXUD84n4X7_-Vj5sg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2023-08-21T18:19:51.817Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: MN2PR00MB0736:EE_|MW4PR00MB1478:EE_
x-ms-office365-filtering-correlation-id: 4a94fb3a-de4a-4d84-bd2a-08dba27337dd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: sM0Uqbh1DgQyCk5xUXtrSMSkhnmwxef8fu+kqzZZRWFskQTF4IQgGZDEpwV+vjzwagU23omGywVjMS20inlwMkBw2SNBxXLlTHEmpyiOGIHFGW9Z7AzRZoV3c3LzN/me+971IU4XjRSpQM7cRKNX89a2yMWy94fzc8ireYDsLEK8zAWSNd/j6OiAcRO4SBogBsVtJIuYmERwfEGRS8NAxz57PVk4guHrFkn3hyFgRF/9OY6OK/1YNKiX4mAOkUdUDhLJ2iJjmMF2uZgyVEOVi870ZeYUgDRjgE6od/5YxydZJhVqFT5iYSKW/oR1F6+kUGvbzF8QkMq2s+bUeQTzPpv7dj1MjKUv+SLynL1TZJ7yjWObZq4iZhNZULbBe9N677bf/AM2uDjNZSxjc0ylr5MBGDhauv0wAX+r6n0BN8lZ3zkRzu2Zh0ESKd7lpuE2EuqklzJJtKzYr17F8s1yM8p+wrOG8imHRoM+we4d9mrK9bfe+s/6g1rCRwF/w7Bs4eODk8ZGbUrHRqJfsS/O8KqvZ+T3+Fo0sCgzX2TPEcJHnpMfq43FfjKVU2+/IZLIV2fSXTXjUN4VFpX9eljT9Q7UcSPMCndyf9SKe+kPsiTBZrNxYw+shLMvFNKzPq5LBF6QqSGeOotqDihAHlcxSgiF4Gzp4HakVvi8ApAuve7erlTqIRpcA2WXAd8ka8+/
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR00MB0736.namprd00.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(396003)(366004)(136003)(39860400002)(376002)(1800799009)(451199024)(186009)(38070700005)(38100700002)(66556008)(66476007)(66446008)(64756008)(54906003)(6916009)(316002)(91956017)(76116006)(66946007)(478600001)(10290500003)(966005)(82950400001)(82960400001)(122000001)(30864003)(2906002)(41300700001)(5660300002)(8936002)(8676002)(4326008)(52536014)(83380400001)(9686003)(6512007)(166002)(71200400001)(6486002)(6506007)(53546011)(26005)(107886003)(33656002)(86362001)(8990500004)(19627405001)(12101799020); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: V0r/4na8YEaiqHOYc6ulhtILnRtd/7QkHcK4PdF729lfpjVEgbmS21/DlUBGHkveB2NAlH958nHT+gAQfJ1rLXzn3EyDplEIZzwr2g106IZratq14k31bnqkxamDs0W9V38oZArhWix4PBJsJRzpOQrIq4Ex5GLAEeTUT1N5HIuLmMeZpjmmaa50ij8P3jg2gfJOQJIjzn94ghkf8o+g2uP48tEcVIQsWNm5BETsa+nCg/PomrVfdu9Bhf3YLFK7eW6O1GOSqt/xk2pF39lnzXEL+ZX915db2TbVVabXnAaMfnyQtZvQYOZcgIu3UyNCH6eUCqQM6NrgzqFALVPqrcKbmq+MrXJv0c1On5mCtSLcQQCMzafUWb+moc1zIQuyx+82tYk1IxyWCHcxzYIDIkDKuRJFId1Qdnq6XTYp271mWADdlgawuTt/Fuz28AB4i1y55XlVky1S6kYRLiueFd3vPULG+t7k7/ZqtRthQCbuOD/3KkBwQqGARR5iUxA4YeoJ7CZrK9kAkBffeaqG0cIzRCZjReGldF/hIPmJRojXDXvnGfPEPB969lfiOpa+PsefhMb9KOzu4EiwUkItB6xJuyLQg0Ca3Lp7LHmc5/401NXPig1DeGk94TljVmhAWTKu6ErhauQRAS4/NZvaEVptklI57aQwj0m6vKzyikdhU7YyatLH4zsuFuOE8BpzRO+RBRPc4hgPDdtX4VSVDrFNaPL3HPLB+y5555hb/+hkVduVw+UGg0NStyHneHc25PVVMgIoEYn0kuytDrdYH/6N4EKECQqJkfJjK2yU2gOKtrazEo7qDe/aCLQYD/LzoMfvkYZGYuBPR+f3dGyZEtpYPuQ1nn1qTNlXLllWLNOmeXYo7PLyUONwFPvj75QV2nDFKIGs15Ez1rUquTomOycODNzqET/iMmDcRZfhk8F/OFym4jPybFouplUAnFOv6hAQ/r99P1J8gns3ve4BoAOA8dD1TqtrUWHF3oyRoQEyomXEFD92CFZNRC14jVpR+ONnQw8CzhUzSOb3mu6XGcudOSk2fh94pns3HZhfu699cftRgUIrpgwmIxYRL4iJ4r3M8K8Fb/uZfnQlowoxrfaUjs1qFziZA6I/ltEDKA2zcwEv8TNZdn0EPW0GVYjPamocvlubLIZYOGB1psq8T77nStRL6M3dcD4f5hhMVm6o3jKt+RWqfylmzlyXBMOXEf+T+dXcVRO996Q3PfLeMZCqi5qXvMDS5S4YeYnGrdP0yK083PLE/IiUrUqrCElFCjCNTTSRYtCrRajN2+sLjFRREydRpc13FZGbbN882hyxIK5U3uqbAL74nrdc2PGZMxSIHN0U1FHZ1SOt3rgW0Lxso3z2hTDNb3m75eMK1m1TPiL5o+KAbyXVWiqMTcmkb8uBCO+DwTeU8TrunefxyregybmpyAesvFhAAcqnjcQowX00wK0A0LFtvAFsiD2z3WA3ndvWB1aJt4EtxOWMYMDubw//zKB0Jy9WPBcHB23SOIphQ7Pq5+omCoh78wc7IYA1RI1woQnMQASHkUSt49JKtfkIJL7d5Jo0ULinrBk=
Content-Type: multipart/alternative; boundary="_000_BY5PR00MB0723A03249E35BB6F6EC49EFC31EABY5PR00MB0723namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN2PR00MB0736.namprd00.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4a94fb3a-de4a-4d84-bd2a-08dba27337dd
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Aug 2023 18:19:54.5040 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Pi/D4S0ocTJttjnoypefopVUf6MUR1CY5zgpm8bGH5/dXfaUdFr1Q4U0Mvtr+LjIQkBaspQFvgm0jkRrB0RCPA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR00MB1478
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/qwHMxzOE1x4jwE5fBFTL7QI43RM>
Subject: Re: [tcpm] [EXTERNAL] Re: 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, 21 Aug 2023 18:20:02 -0000

Yes, that's exactly how our PRR is implemented.
________________________________
From: Yuchung Cheng <ycheng@google.com>
Sent: Monday, August 21, 2023 11:11 AM
To: Yi Huang <huanyi@microsoft.com>
Cc: Yoshifumi Nishida <nsd.ietf@gmail.com>; Neal Cardwell <ncardwell@google.com>; tcpm <tcpm@ietf.org>; Matt Olson <maolson@microsoft.com>
Subject: Re: [EXTERNAL] Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?

Thank you Yi. I assume Windows TCP simply transmit the amount "sndcnt" indicates, w/o changing cwnd, correct?

(In that case it's fine, and we can mention that in the draft for compatibility reasons)

On Mon, Aug 21, 2023 at 11:09 AM Yi Huang <huanyi@microsoft.com<mailto:huanyi@microsoft.com>> wrote:
Sorry, I didn't know there were questions for Windows TCP. Just providing a data point: we set cwnd to ssthresh upon entering loss recovery. Also, our PRR implementation does not modify cwnd during loss recovery (which I believe is consistent with the original RFC6937).
________________________________
From: Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>>
Sent: Monday, August 21, 2023 10:41 AM
To: Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>>
Cc: Yuchung Cheng <ycheng@google.com<mailto:ycheng@google.com>>; tcpm <tcpm@ietf.org<mailto:tcpm@ietf.org>>; Matt Olson <maolson@microsoft.com<mailto:maolson@microsoft.com>>; Yi Huang <huanyi@microsoft.com<mailto:huanyi@microsoft.com>>
Subject: [EXTERNAL] Re: [tcpm] draft-ietf-tcpm-prr-rfc6937bis-03: set cwnd to ssthresh exiting fast recovery?

Hello everyone,

If there are no other particular options on this, I think the authors would update the draft based on the discussions or send proposed texts to the ML.
Either way, after reviewing the updated texts, the chairs will think about whether we can conclude the WGLC for the draft.
If you have any opinions, please let us know.

Thanks!
--
Yoshi

On Wed, Aug 9, 2023 at 11:27 AM Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>> wrote:
Hi Neal, Yuchung,

Thank you so much.
This sounds like a good direction. I also think using SHOULD is a good balance.
If other people especially working on implementations have some thoughts, please share.
--
Yoshi

On Wed, Aug 9, 2023 at 8:45 AM Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>> wrote:
On Wed, Aug 9, 2023 at 11:39 AM Yuchung Cheng <ycheng@google.com<mailto:ycheng@google.com>> wrote:
We can add "Upon exiting recovery, cwnd /SHOULD/ be set to ssthresh" with some performance rationale, given that RFC6675 and existing PRR implementation already do so.

This sounds very good to me. Yoshifumi, how does that sound?

thanks,
neal

Note that RFC5681 Sec 4.3 has related wording on cwnd exiting recovery:
"Finally, after all loss in the given window of segments has been successfully retransmitted, cwnd MUST be set to no more than ssthresh and congestion avoidance MUST be used to further increase cwnd."

Why not MUST: it's not strictly necessary because it won't break TCP or make network unstable. It's important for congestion control to determine the cwnd after recovery. It has the implication to induce a large burst if cwnd >> pipe as mentioned in the end of Section 5 in RFC6675.
Why not MAY: lacking so has major performance implications in various cases as discussed in this thread

How does that sound?

On Wed, Aug 9, 2023 at 8:10 AM Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>> wrote:


On Wed, Aug 9, 2023 at 11:05 AM Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>> wrote:
Hi Yoshifumi,

You are correct that draft-ietf-tcpm-prr-rfc6937bis-04 does not  incorporate the suggestion in this thread to have a "cwnd = ssthresh" step at the end of fast recovery. My sense was that this was because we had not come to a conclusion / resolution of this question in this thread. :-)

I would still argue that it's important for PRR to set cwnd = ssthresh at the end of recovery. Without setting cwnd = ssthresh at the end of recovery, cwnd could end recovery far below ssthresh, leading to unusably terrible performance; performance that would be far worse than RFC 6675 recovery (which simply sets cwnd = ssthresh at the start of recovery).

The Linux TCP PRR has had this cwnd = ssthresh step at the end of recovery since the original PRR implementation in 2011:
  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a262f0cdf1f2916ea918dc329492abb5323d9a6c

And FWIW it sounds like from Randall Stewart's earlier post on this thread ("when we exit recovery we set cwnd to ssthresh") that FreeBSD TCP PRR also has the same  cwnd = ssthresh step at the end of recovery that Linux TCP PRR has.

I would suspect that Microsoft TCP PRR has a similar step; I've CC-ed some folks who may be able to shed light on that.

neal


best regards,
neal




On Wed, Aug 9, 2023 at 3:16 AM Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>> wrote:
Hi Yuchung,

Thanks for the response.
I just would like to check one thing.
In my understanding, Neal's suggestion here was to adjust cwnd to ssthresh at the end of recovery.
But, I cannot find the statement or logic for such adjustment. Does this mean we decided there's no adjustment at the end of recovery? Or, am I missing something?

Thanks,
--
Yoshi

On Tue, Aug 8, 2023 at 2:34 PM Yuchung Cheng <ycheng@google.com<mailto:ycheng@google.com>> wrote:
Hi Yoshifumi,

That part is how the "RecoverFS" state variable is calculated in the draft. See the diff of 03/04 on Section 5 and 6 regarding "RecoverFS" state variable definition and computation. https://author-tools.ietf.org/iddiff?url2=draft-ietf-tcpm-prr-rfc6937bis-04

Does that make sense?

On Tue, Aug 8, 2023 at 12:01 AM Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>> wrote:
Hi Yuchung,

I think you have already updated the draft on the following point from the discussions in the last WG meeting.
Could you point out which part has been updated? I'm just checking..
Thanks,
--
Yoshi

On Fri, May 5, 2023 at 11:51 AM Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>> wrote:
Hi Neal,

Yes, I think I understand your point.
I prefer the current logic in some ways as it's more conservative as I think we cannot always presume that queue has been drained at the end of recovery.
But, I also think it may look too conservative.
I am expecting that the authors provide some insights on this point.
--
Yoshi


On Tue, May 2, 2023 at 11:31 AM Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>> wrote:
Hi Yoshi,

You are right that because PRR always sets cwnd to ssthresh at the end of recovery, there will be some cases where with PRR cwnd jumps up drastically at the end of the recovery.

However, AFAIK cwnd jumping up drastically, per se, is not a problem. Big bursts of packets going into the network is a problem. And given the dynamics of the alternative loss recovery algorithms (RFC6675 and PRR), both can allow bursts of packets; just in different circumstances:

(1) RFC6675: Because RFC6675 sets cwnd once at the start of fast recovery, using (4.2) from RFC6675:

ssthresh = cwnd = (FlightSize / 2)

...that means RFC6675 allows big bursts at the moment any loss is detected: any time L packets are lost, the sender can burst L more packets.

(2) PRR: PRR is specifically designed to avoid big bursts in response to packet losses; no matter the structure or timing of the losses, PRR only allows a big burst at the end of Fast Recovery after all holes have been plugged, and the algorithm sets cwnd to ssthresh.

So in your example ("For example, many packets were lost before entering recovery"), AFAICT RFC6675 can allow a big burst at the beginning of recovery, when the lost packets are detected. AFAICT in this case PRR can allow a burst of packets at the end of recovery when it sets cwnd to ssthresh, but at least at this point the bottleneck queue has potentially drained somewhat.

Please let me know if that analysis misses something important. :-)

Thanks!
neal


On Mon, May 1, 2023 at 5:22 PM Yoshifumi Nishida <nsd.ietf@gmail.com<mailto:nsd.ietf@gmail.com>> wrote:
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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto:rrs@netflix.com>