Re: Split error codes in two

Subodh Iyengar <subodh@fb.com> Thu, 07 September 2017 23:26 UTC

Return-Path: <prvs=0423ebaa56=subodh@fb.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 6E7D313302B for <quic@ietfa.amsl.com>; Thu, 7 Sep 2017 16:26:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.719
X-Spam-Level:
X-Spam-Status: No, score=-2.719 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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=fb.com header.b=S/LDYOY2; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.b=Air87B8Q
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 8XXLgmavjaA4 for <quic@ietfa.amsl.com>; Thu, 7 Sep 2017 16:26:19 -0700 (PDT)
Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) (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 DD0A1133021 for <quic@ietf.org>; Thu, 7 Sep 2017 16:26:19 -0700 (PDT)
Received: from pps.filterd (m0044008.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v87NO7CQ001808; Thu, 7 Sep 2017 16:26:16 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=facebook; bh=WBt8MSZgCYL6lXe/OboUZ7Dy3va3dx+XIOwNwbVM8qo=; b=S/LDYOY2CyN8PeordqCngvox2z+TyrVG3Q3yUpTzE4hxys3l1aVVr7FNnZudNZarXFts JOaMdcF1mHtbO7Bxma1iDIDTMBi3itOcYtpsRFI4gSogHwQlQDLSlrVoShnIMF5oyCcJ 9K3DuUK5eCJ/DQSx26gX0CYblkqef/MWRyk=
Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2cubxhs05u-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 07 Sep 2017 16:26:16 -0700
Received: from NAM03-DM3-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.26) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Sep 2017 19:26:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=WBt8MSZgCYL6lXe/OboUZ7Dy3va3dx+XIOwNwbVM8qo=; b=Air87B8QqLdM/6vOHjZF9XiVCb6q2XuT0zUsJMEoKf67+X3EZ0WQwXIpFnSnKUygtHfiIP8Y7Yfxm19+xqx8ol+3W/fvUJXmO1vn5NtOrN1AKtBTDUV/Kt6iMWeTqbmtLL1NXt0XZdurimz/9if5PoxJTVmg5bL2HS9fg1k7jU4=
Received: from DM5PR15MB1449.namprd15.prod.outlook.com (10.173.225.19) by DM5PR15MB1676.namprd15.prod.outlook.com (10.175.111.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Thu, 7 Sep 2017 23:25:53 +0000
Received: from DM5PR15MB1449.namprd15.prod.outlook.com ([10.173.225.19]) by DM5PR15MB1449.namprd15.prod.outlook.com ([10.173.225.19]) with mapi id 15.20.0035.010; Thu, 7 Sep 2017 23:25:53 +0000
From: Subodh Iyengar <subodh@fb.com>
To: Jana Iyengar <jri@google.com>, Mike Bishop <Michael.Bishop@microsoft.com>
CC: "Philipp S. Tiesel" <phils@in-panik.de>, QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>, Nick Harper <nharper@google.com>, Victor Vasiliev <vasilvv@google.com>
Subject: Re: Split error codes in two
Thread-Topic: Split error codes in two
Thread-Index: AQHTJTn+yyrdzIw/mkyM1giG213Fj6KmFGeAgAASp4CAAAOOAIAA0yCAgAAOnACAAAMMAIAAAK4AgACHAwCAAJELAIABpR2AgABGp/M=
Date: Thu, 07 Sep 2017 23:25:53 +0000
Message-ID: <DM5PR15MB14497BB2F1971C5965882875B6940@DM5PR15MB1449.namprd15.prod.outlook.com>
References: <CABkgnnWwGAyHzkST9o9ueVmBw3_TpJun=dv2X+HL2snXSZJgew@mail.gmail.com> <CAAZdMafBWFWtC7A60P1CMm_6nUnbW+_Tx_7re1bAo7Vx2kLdcA@mail.gmail.com> <CABkgnnWphw3k=f3==2y3AhexQCj9Py50SLSEH06nN3MN0SCerQ@mail.gmail.com> <CAAZdMacHC1HKhXMR4G9CKUOmYyQMsQBab+tampP-PG6n_jJZoA@mail.gmail.com> <CACdeXiLS7W8cJbnT=orHkcd9reH=8QqhOzxWnUEpWZmfcdvd2g@mail.gmail.com> <CAGD1bZa-h0ZVh7kUYQtG3r93eH6TqRXnQ6YXAcscCrCQHk8LeA@mail.gmail.com> <CABkgnnXMFUP_c+2r6YeJouJXanHd8tFcqDKgU=C9UF0stPcXOw@mail.gmail.com> <CAGD1bZZZG9L0_d7Tmo8vfdAx+=LU+yi97N42vKFGo82K16Zycw@mail.gmail.com> <05505C10-8737-4C58-BC91-E401D2659AF0@in-panik.de> <MWHPR21MB0141F305CCE2B686F09549F887970@MWHPR21MB0141.namprd21.prod.outlook.com>, <CAGD1bZY5xo5Krn=U3SBVUCPU4x2UAOcv2AnvzaRac9qJGM9KBg@mail.gmail.com>
In-Reply-To: <CAGD1bZY5xo5Krn=U3SBVUCPU4x2UAOcv2AnvzaRac9qJGM9KBg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [2620:10d:c090:200::5:32a2]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; DM5PR15MB1676; 20:fD0DAgfEPHAyLsj4N0+HSYj4TzZhRTx895oJvCWMETaorlMMjNqQYM/NRqG4WaS/PTTtt++N9FC3XljdMXzp1oJaRHX5w5A5ntJT6CRGUaoNjsGQIxKpg0RQrFjdPZxdRH15GS7BguQKqjeD0jn7gMipl/PXNYIKv6DfEzMdlDo=
x-ms-exchange-antispam-srfa-diagnostics: SSOS;
x-ms-office365-filtering-correlation-id: fc1ffb3f-5e3c-4f5b-d5f1-08d4f647c87d
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR15MB1676;
x-ms-traffictypediagnostic: DM5PR15MB1676:
x-exchange-antispam-report-test: UriScan:(278428928389397)(211936372134217)(153496737603132);
x-microsoft-antispam-prvs: <DM5PR15MB16762B616B5BF6097591381BB6940@DM5PR15MB1676.namprd15.prod.outlook.com>
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(920507026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123564025)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR15MB1676; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR15MB1676;
x-forefront-prvs: 04238CD941
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(189002)(199003)(377454003)(34040400001)(77096006)(8666007)(54906002)(6506006)(86362001)(105586002)(55016002)(14454004)(5660300001)(53936002)(106356001)(54896002)(9686003)(99286003)(19627405001)(6246003)(53546010)(229853002)(2561002)(93886005)(68736007)(39060400002)(2906002)(2950100002)(97736004)(6436002)(478600001)(76176999)(54356999)(101416001)(7736002)(6116002)(8676002)(2900100001)(3280700002)(3660700001)(8936002)(50986999)(189998001)(1511001)(74316002)(25786009)(2421001)(33656002)(81156014)(102836003)(81166006)(4326008)(7696004); DIR:OUT; SFP:1102; SCL:1; SRVR:DM5PR15MB1676; H:DM5PR15MB1449.namprd15.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts)
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_DM5PR15MB14497BB2F1971C5965882875B6940DM5PR15MB1449namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2017 23:25:53.1945 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR15MB1676
X-OriginatorOrg: fb.com
X-Proofpoint-Spam-Reason: safe
X-FB-Internal: Safe
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-09-07_14:, , signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/BJU_2UQFwG9qeKosYj96x4eDKpk>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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: Thu, 07 Sep 2017 23:26:21 -0000

If an app wanted to send both the stop sending and the reset stream, would it have to wait till stop sending was sent on the wire before sending reset streams? For example a API might reasonably be something like


   transport->write(StopSendingFrame)

   transport->reset();


If the app calls reset, then the transport might dump all data associated with the stream immediately so the stop sending might never even be sent.


How do people intend to use stop sending from the app protocols that don't send RST in response to RST?


Subodh

________________________________
From: QUIC <quic-bounces@ietf.org> on behalf of Jana Iyengar <jri@google.com>
Sent: Thursday, September 7, 2017 12:02:27 PM
To: Mike Bishop
Cc: Philipp S. Tiesel; QUIC WG; Martin Thomson; Nick Harper; Victor Vasiliev
Subject: Re: Split error codes in two

I'm less convinced that STOP_SENDING is HTTP-specific.  To my mind, it's the wire expression of a read_close(), just as RST_STREAM is the wire expression of a write_close().  If we'd gone the advisory route, it would be an HTTP-ism.  (Or at least, the mandated behavior would be at the HTTP layer.)  However, if we think other applications aren't ever going to want to close a read stream....

TCP allows for read_close() with shutdown(socket, RD), and it basically means that TCP will send a RST to subsequent incoming data on that socket from the peer. The expectation is that the application knows to not send data to a peer that has issued a read_close().

What we're talking about here is different than a read_close(), since it's an instruction to the peer to stop sending. This is only useful if I don't want to stop sending but want only the peer to stop sending.... and the driving use case was RST_STREAM(NO_ERROR) in HTTP/2. I still find that use case odd, but I don't know that there's really a need for this otherwise. I'm not very married on this point, but I'm wary of providing a knob that really doesn't have a strong use case.