Proposal: Remove Connection Wide Flow Control from QUIC

Nick Banks <nibanks@microsoft.com> Fri, 08 March 2019 20:55 UTC

Return-Path: <nibanks@microsoft.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AB660126DFA for <quic@ietfa.amsl.com>; Fri, 8 Mar 2019 12:55:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.002
X-Spam-Level:
X-Spam-Status: No, score=-2.002 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-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 igAmjTmEc5tH for <quic@ietfa.amsl.com>; Fri, 8 Mar 2019 12:55:19 -0800 (PST)
Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790115.outbound.protection.outlook.com [40.107.79.115]) (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 288411228B7 for <quic@ietf.org>; Fri, 8 Mar 2019 12:55:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UezWIVNCTOZ96wpgWyHPTzERDOEX9pWdPTsH98r8uQs=; b=OY2fRuJbUgv1vHFs+JTgAzximjJgwfBpG2o1qjSaQyn01xdKe9SFmIRQfPXYi5CDBRHkg/yNvP6xojjIXCCBnU5qcv2mUHh5J4eX+2Bj/DP4EiusCkGlWtsqJtOxp8kDiFcc1Vd0a3tsDxu5IDjVEfF6LeKGO4BNgxlBYmDFGUE=
Received: from CY4PR21MB0854.namprd21.prod.outlook.com (10.173.192.143) by CY4PR21MB0792.namprd21.prod.outlook.com (10.175.121.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.4; Fri, 8 Mar 2019 20:55:17 +0000
Received: from CY4PR21MB0854.namprd21.prod.outlook.com ([fe80::ccd2:aa1d:e646:fa46]) by CY4PR21MB0854.namprd21.prod.outlook.com ([fe80::ccd2:aa1d:e646:fa46%3]) with mapi id 15.20.1709.009; Fri, 8 Mar 2019 20:55:17 +0000
From: Nick Banks <nibanks@microsoft.com>
To: "quic@ietf.org" <quic@ietf.org>
Subject: Proposal: Remove Connection Wide Flow Control from QUIC
Thread-Topic: Proposal: Remove Connection Wide Flow Control from QUIC
Thread-Index: AdTV8AYzdulKarZJQ3qHFJ5G0cFS8w==
Date: Fri, 08 Mar 2019 20:55:17 +0000
Message-ID: <CY4PR21MB0854D2B9FFBB0C09EEE5C5C6B34D0@CY4PR21MB0854.namprd21.prod.outlook.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_Owner=nibanks@microsoft.com; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2019-03-08T20:55:16.6570675Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Application=Microsoft Azure Information Protection; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=d6d305e7-0d22-45f7-93ca-461f66b0bd13; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Extended_MSFT_Method=Automatic
x-originating-ip: [2001:4898:80e8:a:8cce:6a0b:4fc9:56f5]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3ec32b13-ce33-467b-675e-08d6a4085eff
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:CY4PR21MB0792;
x-ms-traffictypediagnostic: CY4PR21MB0792:
x-microsoft-antispam-prvs: <CY4PR21MB0792E3979560F63EC4FF89C9B34D0@CY4PR21MB0792.namprd21.prod.outlook.com>
x-forefront-prvs: 0970508454
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(396003)(39860400002)(376002)(346002)(199004)(189003)(86612001)(71200400001)(86362001)(7696005)(25786009)(33656002)(81166006)(5640700003)(99286004)(6506007)(52536013)(106356001)(10290500003)(316002)(105586002)(53936002)(102836004)(22452003)(2351001)(186003)(10090500001)(8936002)(8990500004)(6346003)(71190400001)(1730700003)(46003)(790700001)(6116002)(5660300002)(478600001)(7736002)(14444005)(74316002)(81156014)(2501003)(256004)(55016002)(6436002)(14454004)(8676002)(9686003)(486006)(68736007)(2906002)(54896002)(476003)(97736004)(6916009)(6306002); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR21MB0792; H:CY4PR21MB0854.namprd21.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts)
authentication-results: spf=none (sender IP is ) smtp.mailfrom=nibanks@microsoft.com;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: x5i57YQhn0uuyw7ZjPCpHEy19eLvcVOnqXxNtfuY/Imegeyarz5hzh7q3EcZbqhhA5TVtxf3uQovAg4vIRIADhI2/oFhqVWudT0dcyXC5xPWl2z5aJkFzuk3OdUGi9MuH1RWQCKxAEuNZnpO+BUq9exxHS5W/KSQs2Aj8L4QLlxO09ITl314zBsNhjlnzs/+q96Uez1LPslJ9k9ieadYoUpfvBmnSc4Piucrhv9h9BL1CNIyIZ6jY1bCq6OBuyrs6fj7AhcreN/++N3F6eEuiwMg0WCgOipG7Bb8/Fnd22Sf+ddYjg+xHMqoPri2XmPVLtFtyx3ky0rdIagbSZGEYHg+B+BG/vqJNu5rTomX2Uizy1pu1gl6Iqc7qCnN9XB2p5JDlwzkviDMZf+MjufwXiSz8wfH9ImqLU0SSNCT/Vc=
Content-Type: multipart/alternative; boundary="_000_CY4PR21MB0854D2B9FFBB0C09EEE5C5C6B34D0CY4PR21MB0854namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3ec32b13-ce33-467b-675e-08d6a4085eff
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Mar 2019 20:55:17.9073 (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-Transport-CrossTenantHeadersStamped: CY4PR21MB0792
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/q9WUyFc82qb8PuH6dTf1rQ2nePk>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 08 Mar 2019 20:55:22 -0000

Hey Folks,

After a lengthy discussion on Slack with a few folks I've become convinced that connection flow control is unnecessary to achieve desired over the wire results, causes unnecessary protocol complexity (synchronizing on stream reset) and creates possible deadlocks if the app doesn't behave correctly (won't drain stream A until it receives what it wants on stream B).

The main reason folks seem to think that connection flow control would be useful is DoS protection; to limit the total memory to allocate for one connection. That doesn't seem right to me. A client can open any number of connections. Imposing an overall limit per connection doesn't really work. On the other hand if you only allocate stream flow control if you have enough over all memory (and are draining the data fast enough) then you can better control your memory usage over all connections.

Also, you still have flow control on the number of streams you allow the peer to create as well. That's another connection-wide flow control value. I think it would be an improvement to the protocol if we removed explicit connection wide flow control. If anyone has any other reasons for keeping it, I'd really like to hear them.

Now, I know this is late in the game and not strictly a necessary change. You can still just ignore connection flow control on the sender side and achieve the same thing; so this might not meet the bar. I just wanted to have this discussion and see what other folks think about this. If most folks agree that it's not necessary, I don't think it should be too big a deal to remove both the text and implementation code.

Thanks,
- Nick