RE: Split error codes in two

"Lubashev, Igor" <ilubashe@akamai.com> Mon, 25 September 2017 23:10 UTC

Return-Path: <ilubashe@akamai.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 0F5F01344FF for <quic@ietfa.amsl.com>; Mon, 25 Sep 2017 16:10:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.701
X-Spam-Level:
X-Spam-Status: No, score=-2.701 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 EFemJuKHnMfC for <quic@ietfa.amsl.com>; Mon, 25 Sep 2017 16:10:49 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [67.231.149.131]) (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 2B9C2132397 for <quic@ietf.org>; Mon, 25 Sep 2017 16:10:49 -0700 (PDT)
Received: from pps.filterd (m0122333.ppops.net [127.0.0.1]) by mx0a-00190b01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v8PN6e2n027922; Tue, 26 Sep 2017 00:10:39 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=jan2016.eng; bh=kNq4NdVGGucP2ObenlOfOalJE0mpQYLTsXgydcJ/+Rc=; b=nNnYZuFOhM99GW+pHQsRrJL+91yNIOaa3dEckuyqwVPgnLSC82YtGwJfVmQ/NqvZRkD2 KV0pWzF+BBv9Te5QoBuAwewpk2CiNNCsaVVNcj2VgofcVzwcW3FHloYxQ7CsQXLhfKux TlR4rBzUVeJS175zjV5E9SUVuzrA1gEbJECzwSt7hYTkYVaAMVyPz4VHakyqrl3dJ/lI RzaGzCfMAbDC/B5T1wJMWG0auqFQYx5wA3lt7JAAhz+zlJwtlNdaee9LDxMVf67Q6Vja 7nypuJZDRxfXjEp6ongj51Dz5qCCBqPFQpX3iKiwzsU3pFaYUesi9YwcWAfz3thPNbnx qw==
Received: from prod-mail-ppoint1 (prod-mail-ppoint1.akamai.com [184.51.33.18]) by mx0a-00190b01.pphosted.com with ESMTP id 2d761bu0h9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 26 Sep 2017 00:10:39 +0100
Received: from pps.filterd (prod-mail-ppoint1.akamai.com [127.0.0.1]) by prod-mail-ppoint1.akamai.com (8.16.0.21/8.16.0.21) with SMTP id v8PLJaDx016270; Mon, 25 Sep 2017 19:10:38 -0400
Received: from email.msg.corp.akamai.com ([172.27.123.31]) by prod-mail-ppoint1.akamai.com with ESMTP id 2d7730gkm1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 25 Sep 2017 19:10:38 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com (172.27.123.105) by usma1ex-dag1mb3.msg.corp.akamai.com (172.27.123.103) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Mon, 25 Sep 2017 19:10:37 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com ([172.27.123.105]) by usma1ex-dag1mb5.msg.corp.akamai.com ([172.27.123.105]) with mapi id 15.00.1263.000; Mon, 25 Sep 2017 19:10:37 -0400
From: "Lubashev, Igor" <ilubashe@akamai.com>
To: Martin Thomson <martin.thomson@gmail.com>, Roberto Peon <fenix@fb.com>
CC: "quic@ietf.org" <quic@ietf.org>, Christian Huitema <huitema@huitema.net>
Subject: RE: Split error codes in two
Thread-Topic: Split error codes in two
Thread-Index: AQHTJTn9U7CZmvfU3U+AKlwSnR9wwKKmV3WAgAASqICAAAONAIAA0yCAgAAOnACAAAMMAIAAAK4AgACXxwCAAJELAIABpR2AgABJmoCAAAS/AIAANHEAgAFsKYCABkENAP//wQ6QgACQnICAAOyhgIARz6YAgADx2lA=
Date: Mon, 25 Sep 2017 23:10:37 +0000
Message-ID: <022d9f140d9b4306a959e0dacac788e7@usma1ex-dag1mb5.msg.corp.akamai.com>
References: <CABkgnnWwGAyHzkST9o9ueVmBw3_TpJun=dv2X+HL2snXSZJgew@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> <DM5PR15MB14497BB2F1971C5965882875B6940@DM5PR15MB1449.namprd15.prod.outlook.com> <CAGD1bZbnpCxjdaEV_m_5XWEjtjmdxYTGh2VBoS8AgZdhxfsDhw@mail.gmail.com> <CABkgnnWRy17vuFRGhpvLBCKte3WeCdGa1M1feOBygQv+-AB2+A@mail.gmail.com> <CAGD1bZZL-4HzArTQfWrC+CbHYsyB6Wdx4cbz7+0X7YOiuc-+Qg@mail.gmail.com> <BN6PR21MB01302C7E8A43AF9DB7A63335876E0@BN6PR21MB0130.namprd21.prod.outlook.com> <bca00829d58049fb8a644f3787011fca@ustx2ex-dag1mb5.msg.corp.akamai.com> <d63880bf-7eaa-158b-a3f8-04142f288853@huitema.net> <E3F6F096-832D-4C4E-8BFA-5C1343F565E5@fb.com> <CABkgnnVXzKz-Y6DfNADYSPQC_WfO-QyX8bE5r84J7XkPjXVsaQ@mail.gmail.com>
In-Reply-To: <CABkgnnVXzKz-Y6DfNADYSPQC_WfO-QyX8bE5r84J7XkPjXVsaQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.19.32.169]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=nai engine=5600 definitions=5800 signatures=585085
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1709250277
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-09-25_09:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1709250342
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/vyQ_2pz3g0oz9cKkRYSVANzGZ7o>
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: Mon, 25 Sep 2017 23:10:51 -0000

I agree that in many cases, "streams-as-messages" model fits well in the application use case (not HTTP Stream 1, though).  It seems reasonable to suppose that an application would occasionally like to send a very large (100MB?) message, and it gives it to the transport in one shot -- maybe using something like Linux sendfile() API call.

So now to your question:
>   -> what is the transport going to **do** with a STOP_SENDING?

The answer seems orthogonal to bidirectionality.  It would make sense for the transport to stop sending the message and notify the application that it did so.  The alternative is to continue sending the large file, spending significant network and CPU resources doing so, and hoping the application would be prompt at receiving the notification and asking the transport to cancel the transfer.  Both alternatives achieve the same semantics: "an app is notified that that the receiver refused to receive this message in its entirety".  The former option allows saving network and systems resources on the protocol level.

In the "pipe" model (unidirectional or bidirectional), this is a question of whether only the sender is allowed to close the pipe, or the receiver is also allowed to close.


-----Original Message-----
From: Martin Thomson [mailto:martin.thomson@gmail.com] 
Sent: Monday, September 25, 2017 12:03 AM
To: Roberto Peon <fenix@fb.com>
Cc: quic@ietf.org; Christian Huitema <huitema@huitema.net>
Subject: Re: Split error codes in two

On Thu, Sep 14, 2017 at 12:40 AM, Lubashev, Igor <ilubashe@akamai.com> wrote:
> Thinking about this a bit more, it seems that the key difference 
> between “tcp socket” and “two pipe pairs” models is independence of 
> the send and receive directions.

I prefer Christian's analogy of streams as messages.  That's what motivated the design that I proposed.  Then you don't get "pipe pairs"
you get "messages and (optionally) response messages".

On Thu, Sep 14, 2017 at 5:03 AM, Roberto Peon <fenix@fb.com> wrote:
> So many RPC models have failed utterly because they couldn’t handle 
> receiving the data in a streaming fashion.

That doesn't invalidate the streams-are-messages model, it just recognizes that the messages cannot be sent and received as a single unit (unless they are 0 length, I guess).  Flow control, multiplexing, etc, etc...

~

I want to come back to the original question in light of what we learned:

 -> what is the transport going to **do** with a STOP_SENDING?

I can't think of anything other than to tell the application.  That makes the answer pretty clear to me.

I don't think that this discussion - valuable as it is been - has changed my position on this much.  Ideally I would like to enable all the various viewpoints on the question to be equally valid.  Building a protocol that can provide something that looks like a TCP socket is challenging though, because the complete close of a coupled pair cannot be done generically - I think that we all agree that this is impossible in the general case.

I can appreciate the desire to build some of the pieces that might be needed to build a bidirectional close, but I think that is more dangerous than useful and would prefer to leave this to application protocols.