Re: [tcpm] [EXTERNAL] Re: A question about PRR/loss recovery

Yi Huang <huanyi@microsoft.com> Mon, 19 April 2021 18:21 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 BF1493A3D9F for <tcpm@ietfa.amsl.com>; Mon, 19 Apr 2021 11:21:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.1
X-Spam-Level:
X-Spam-Status: No, score=-0.1 tagged_above=-999 required=5 tests=[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_BLOCKED=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dBHZtL_9yDIg for <tcpm@ietfa.amsl.com>; Mon, 19 Apr 2021 11:21:19 -0700 (PDT)
Received: from NAM06-BL2-obe.outbound.protection.outlook.com (mail-eopbgr650096.outbound.protection.outlook.com [40.107.65.96]) (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 AC1063A3D9D for <tcpm@ietf.org>; Mon, 19 Apr 2021 11:21:19 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YzRPgqBQKP4m06MxG5dybOxmvj2hX/VNwrrHmZI77OkyblN+Mg/ulRRVoxcTtffE1yoZztNc5J0yuLvxVWBJ5j8hTjvTX0au9OSKCb/NAgwzDkuCMPSLlDAsKPd3aki4UO+hpRKqBKTOwtIG00uy+KE9XH+SjPo0a92cnI+IGZHtlPOpGoC40uPaSgZMFmaQYJnmNoUXfBR8/I/Ff0XJnMH44HXXH22QbaB6LY36oy1J39HqGAsINqcJjyCblARUFE8zQLDsTWuMoiE4Mue3Tmg8GC9OqHqVOd3JrkT3DlQNG63Jita512sgYPteoZ4x2NrDisUUnce9HjSq1/HX6w==
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-SenderADCheck; bh=vS5vN6miuHqxpP9eLJs3KQ6lwq+WcZWr8xjsvjqC6jQ=; b=leoNy1hw2bciNSHZP+IDPHYmk1G37GVqM9SyPiIJMJ4cKSZLJL6tXyCu4mfppP8/9029osePrCdbg78nW9WoozkgpVPTsKQ3k7KROn7ia72wu8nt4bvUIFAFQ6VDJpYzZUO3qsYQMca1fZvLTLNRqzTjAL2VVP+SGPXxnttLxN8uogPYewUgl0rmB1wugtxnsrLfOCRILITDXQjtG3ou8Ejkxh6GP7fD5RrwvE1BHhZ3Bz+tgQdsD+T29jL9BAWfqyLFd9NUEDFK1wvd5qMozz2yrGhsI7MWZaPWiViqiB2SspAspOhUE9ln6muoyeFYHbSy64g81FjKfUiv/n/Arw==
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=vS5vN6miuHqxpP9eLJs3KQ6lwq+WcZWr8xjsvjqC6jQ=; b=b1orC2rUapvvcCJvnWdlV8Rl7RC9LuMTKwACY8+vU/10Wzh6Yetd4U4udlTzEv2nUQt/ko144BfF3th70HxtFxedxOZyMsl8YgVLP7t6JgCtUhyPUc1i0AG2j/h6SqMMFwUNZCCptkfml8+xzU0Hk/m1R9ErlDPiHDdEQyfQJ1k=
Received: from DM6PR00MB0875.namprd00.prod.outlook.com (2603:10b6:5:163::14) by DM5PR00MB0357.namprd00.prod.outlook.com (2603:10b6:4:9f::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4100.0; Mon, 19 Apr 2021 18:21:11 +0000
Received: from DM6PR00MB0875.namprd00.prod.outlook.com ([fe80::7498:94d7:2c0c:5ef1]) by DM6PR00MB0875.namprd00.prod.outlook.com ([fe80::7498:94d7:2c0c:5ef1%6]) with mapi id 15.20.4100.000; Mon, 19 Apr 2021 18:21:11 +0000
From: Yi Huang <huanyi@microsoft.com>
To: "ycheng=40google.com@dmarc.ietf.org" <ycheng=40google.com@dmarc.ietf.org>, "ncardwell@google.com" <ncardwell@google.com>
CC: "tcpm@ietf.org" <tcpm@ietf.org>, "mattmathis@google.com" <mattmathis@google.com>, "huanyi=40microsoft.com@dmarc.ietf.org" <huanyi=40microsoft.com@dmarc.ietf.org>
Thread-Topic: [EXTERNAL] Re: [tcpm] A question about PRR/loss recovery
Thread-Index: Adcy6s+WHt48g0ZnTJOXGzLVsKusRwADgfwAAJD7hAAAAsBsgA==
Date: Mon, 19 Apr 2021 18:21:11 +0000
Message-ID: <DM6PR00MB0875DB2DDBF799E89FFAF4CBC3499@DM6PR00MB0875.namprd00.prod.outlook.com>
References: <MN2PR00MB08779B864962711A2F35F2F4C34C9@MN2PR00MB0877.namprd00.prod.outlook.com> <CADVnQy=2rC4N84DDMV-Ovo8v_wNZ3i_fd4AkXzCYY2W0cdcqnQ@mail.gmail.com> <CAK6E8=cn=7=amNg93o=X9+jVSjXALetkgJM7q+dXQ2WLVORJNA@mail.gmail.com>
In-Reply-To: <CAK6E8=cn=7=amNg93o=X9+jVSjXALetkgJM7q+dXQ2WLVORJNA@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_ActionId=54d1904e-fd4f-4f85-8a74-da7237310284; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2021-04-19T18:14:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47;
authentication-results: dmarc.ietf.org; dkim=none (message not signed) header.d=none;dmarc.ietf.org; dmarc=none action=none header.from=microsoft.com;
x-originating-ip: [2601:600:877f:acd0:18:7a8:250a:ee7a]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: aa886e26-ed5b-4664-a15a-08d9035fe8c8
x-ms-traffictypediagnostic: DM5PR00MB0357:
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 8/uzziLxhZ80KMNLvLuJMi5QvperXVGxpxAJAYrL3Mfow4XdLkga53dmjuVB9+ArV8LvJLZ31GjH4OsSl8O7ac0pkMq/LTl37Ezbq1MCGWJKcMpMd8zAW8UesX7eeSS9mifwM0rwZLBE59BNh+GW66m3F1Pv+j8EgY0a4OG6wtvu+pHPq1E/rsr26qp0mLGY4eMI8efm2V3eVNPG4c8xGSWcP1u7g3li74IkfV9RFi2lb2TJ2bmbj61cQUPHIS8brOnFf0PIdL7jnHzeeUGRxZUBs7oknXABgzKsyF/EsfYgdHF2B21DkUaGma8ROX5Un2zCLz8ztOX4+Te5GcsGAw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR00MB0875.namprd00.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(82950400001)(82960400001)(83380400001)(52536014)(9686003)(7696005)(478600001)(166002)(71200400001)(8676002)(4326008)(316002)(110136005)(54906003)(10290500003)(55016002)(8936002)(122000001)(8990500004)(38100700002)(5660300002)(186003)(86362001)(53546011)(6506007)(66946007)(2906002)(966005)(66446008)(76116006)(66476007)(33656002)(64756008)(66556008); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata: =?us-ascii?Q?Isvfehaz1f2fu4FDbNQEGp1PEwGoO6OYLb6k/uGSJzA0+JGmSBQi/FmdPQk4?= =?us-ascii?Q?R5igB44wgkghguocCjdPCLQztqrvPARfkpDJwPpWIM3qIDDOeD5X8N4t4iKv?= =?us-ascii?Q?TUNNDH82MrTP2aQm9xrb3RKT7fJ4yHQQn/77/c0Lsp3tJ1KOg5cExeg45WY3?= =?us-ascii?Q?W+GHoWTleHVHtcGuo3/iwj5sx248ec4RJtaczMyUN2aOeTMcecEDUCRP+kiQ?= =?us-ascii?Q?Bvf5ngMxCM6P2jtZT/8P8QBiiAaPPG/HqBHkclRTIBGa6n0jNBSyvIGiDcbC?= =?us-ascii?Q?SzD11scPjwI4LSs3G4zV8XGNp4G/xt/nz4y08LSqv/53evZNILvTEiwUwi5c?= =?us-ascii?Q?2yxDPXWjc63HlQSE7aeZdxwUsAxD59qCd23EmSR7FWBeu3T55FYL0f6NXa4x?= =?us-ascii?Q?dbAltenKHAAxTVttdRMpzi7xUM2ewbGOPOI7jZnlEHcUSSOCoYlU7SIMuEHl?= =?us-ascii?Q?/YjBczvjEwmQ9EPt66kqbI3ckxbZfeLjlvjsHILwRe53ugFiQjPszIeRR9Gi?= =?us-ascii?Q?bWqXBgeaBF62qqePxJVNLreANkshCMsxDydWwZZzvD5hsVzVNtbiVR6UptUT?= =?us-ascii?Q?jh8U4He7hi/GIzvMHV7Rp14EzCkBfRlxUH+MtfqVj2Vbcz+brB16Ms+hM72k?= =?us-ascii?Q?Ov0EuMZpGFx+mg0Qip9Z31XbzjWTNkV9u2LS+PJko6kxu/24gJtO4BqWa898?= =?us-ascii?Q?ACiYkNOGMdgaWpkhcZLyN4si7jO3pfBrzB/iTog6VX6rx5FFOXPupIE+siCy?= =?us-ascii?Q?gRZx+K7ppS/mB+wp7fJAZlf9y1il3nJhRlsg9Ps2xl5Sz+3eeVxErrb7d5iR?= =?us-ascii?Q?TDmEFTRgZAzalA8Mzemspjw/E5es8e3KUFQZGb2fZBmQNT5GvmTBxPxb+Ilc?= =?us-ascii?Q?Pl2bDrWeXW0QeH57EtF/oY35EAzKmV2+R8TCKCiG5fUgkrl1amebzIN3iRhY?= =?us-ascii?Q?zftYUkGkJITroEuGkTn0nQTG56R/ON9mjZnXxOKMaU9/0Gk5rqVQBQ+6btxO?= =?us-ascii?Q?3CWhoy9fqmi6xPZumg44wxPxsHH1h4LiHk1A45Z6dHuGA/goUyuaO0VKzCIr?= =?us-ascii?Q?1aR0le11k02TENrvqCmomsP9jSKqtM773d5hy7nfBPQPhtbb6W9WSEC1po2E?= =?us-ascii?Q?B+RnO22FgVdH51lUOWuzaifSoqZeKoIvYUivwJaNK3tSUkyJiukaUN3jWUR4?= =?us-ascii?Q?RLRLF9UwbOskE+zm63qOjek4pfi+j4k3O7kRqIPoyyMC9VbESNszqDWUXouv?= =?us-ascii?Q?lPnrffVUVByhwWpRDgUKu8BeyfudoHJtno+eeoLsmoJdYfT+FR8r17YEKSe0?= =?us-ascii?Q?6XlWN+r+0BvVUtzggoep56DVITNC7qmyNnsRTSWo0rotuHPiEhKdKFrNXKw5?= =?us-ascii?Q?c9TXNv8=3D?=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_DM6PR00MB0875DB2DDBF799E89FFAF4CBC3499DM6PR00MB0875namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR00MB0875.namprd00.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: aa886e26-ed5b-4664-a15a-08d9035fe8c8
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2021 18:21:11.1235 (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: Zr2D62smLZWyh+JMsgk2u46UhsSJzhlay+6VJ+OiXGrznFnOsixnaQavzS/9U2tbc+DDPM3Dg2hVaxohD6CAjg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR00MB0357
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/618UT04Fr3bUe85To6ikixUTwbY>
Subject: Re: [tcpm] [EXTERNAL] Re: A question about PRR/loss recovery
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
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, 19 Apr 2021 18:21:25 -0000

Thanks Neal and Yuchung, the RFC is clear enough to me. Just wanted to double check. We will fix that this problem.

From: tcpm <tcpm-bounces@ietf.org> On Behalf Of Yuchung Cheng
Sent: Monday, April 19, 2021 9:55 AM
To: Neal Cardwell <ncardwell@google.com>
Cc: tcpm@ietf.org; Matt Mathis <mattmathis@google.com>om>; Yi Huang <huanyi=40microsoft.com@dmarc.ietf.org>
Subject: [EXTERNAL] Re: [tcpm] A question about PRR/loss recovery

I think the current PRR RFC is fairly clear about cwnd computation and it should be used for both retransmits and new data (so both implicitly use sndcnt). Having limited-transmit (i.e. new-data) only follow the (unmodified) cwnd would break PRR substantially -- the packet conservation principle is not really implemented. I suppose it's easy to fix Windows code?

On Fri, Apr 16, 2021 at 12:44 PM Neal Cardwell <ncardwell@google.com<mailto:ncardwell@google.com>> wrote:


On Fri, Apr 16, 2021 at 3:08 PM Yi Huang <huanyi=40microsoft.com@dmarc.ietf.org<mailto:40microsoft.com@dmarc.ietf.org>> wrote:
Hi tcpm and PRR authors,

We are revisiting PRR implementation in Windows and I noticed there might be a problem in our implementation (and it is actually not specific to PRR).

PRR algorithm computes a sndcnt on each ACK during loss recovery and thus use it to accurately regulate bytes in-flight.

In the RFC (6937 or bis), I see this statement and note "local" and "response to each ACK".
   We introduce a local variable "sndcnt", which indicates exactly how
   many bytes should be sent in response to each ACK.

In Windows' TCP implementation, new data can be also sent out inline during loss recovery from app send context (app calling send()) and they are not regulated by sndcnt/PRR. Instead, we just check if CWND allows us to send in this case. So, effectively, we use two variables controlling the number of bytes in flight during loss recovery, i.e. sndcnt and CWND. It apparently seems a bad behavior because it ignores PRR's sendcnt but I just want to double check with the PRR authors and the community.

Thanks for the note.

I believe that approach runs contrary to the intent of the PRR spec/algorithm.

Implicit in the end of the algorithm in https://tools.ietf.org/html/rfc6937#section-3<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc6937%23section-3&data=04%7C01%7Chuanyi%40microsoft.com%7C18ee4b0df35b42907bda08d90354073b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637544482333596954%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=xs9imRi3L2B6d737Iu07Vlrg4MZNDTv7dHHdFTFRBjs%3D&reserved=0> is the following line (in pseudocode):

  cwnd = pipe + sndcnt

That is what the Linux TCP implementation of the PRR algorithm does. That way there is only one variable (cwnd) controlling the number of bytes in flight during loss recovery. Effectively, this allows the PRR algorithm decision to persist, in case there is no data available to send at the instant the ACK arrives.

Perhaps the update to the PRR RFC can make this explicit?

best,
neal