RE: Why allow empty STREAM frames when offset is zero?

"Lubashev, Igor" <ilubashe@akamai.com> Thu, 10 May 2018 21:58 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 A8E52129C51 for <quic@ietfa.amsl.com>; Thu, 10 May 2018 14:58:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.709
X-Spam-Level:
X-Spam-Status: No, score=-2.709 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, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01, URIBL_BLOCKED=0.001] autolearn=unavailable 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 SoqXXARajhDV for <quic@ietfa.amsl.com>; Thu, 10 May 2018 14:58:28 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (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 6CE9612DB70 for <quic@ietf.org>; Thu, 10 May 2018 14:58:28 -0700 (PDT)
Received: from pps.filterd (m0050095.ppops.net [127.0.0.1]) by m0050095.ppops.net-00190b01. (8.16.0.22/8.16.0.22) with SMTP id w4ALq46E021179; Thu, 10 May 2018 22:58:24 +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 : mime-version; s=jan2016.eng; bh=N04NML7lxi7vo/+Cbs4mCSA5ZDXBnXre2tNjyGyQZ0o=; b=iMys2SNAkLaCZHEv3H+MyTHEi3WCK8Dp1tSQYuTFMBkgFQADCopdHfyax5sl4MD6iC+J jNcIblmXVkK/EOMhe6Cmphr1fXWaqP7iD7+rlgEmlBomOOYy2DpQpxiue98S2G1X3Fg+ YlmC6M7iM7NnipfwBBv2T4zyxpAPqJN0KFqH8nu/LRaTu8lfAiT8UynmiSWlwRfZTG2f 36DZitilG47bcxiE3rn97mM+8eo2kyr8Vdmq2wyem9+qVBaOcamf3zx+QP5waXsECf+I HsXqMOkyBHpUvBSX7tz6RuEappcXM6O13pCbA3AmVFT5/5v5W94XC3EZfdhguTOfaS0K mA==
Received: from prod-mail-ppoint2 (prod-mail-ppoint2.akamai.com [184.51.33.19]) by m0050095.ppops.net-00190b01. with ESMTP id 2huyqtce3g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 May 2018 22:58:24 +0100
Received: from pps.filterd (prod-mail-ppoint2.akamai.com [127.0.0.1]) by prod-mail-ppoint2.akamai.com (8.16.0.21/8.16.0.21) with SMTP id w4ALtxOQ022660; Thu, 10 May 2018 17:58:23 -0400
Received: from email.msg.corp.akamai.com ([172.27.123.34]) by prod-mail-ppoint2.akamai.com with ESMTP id 2hs7xvpck7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 10 May 2018 17:58:22 -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.1365.1; Thu, 10 May 2018 17:58:22 -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.1365.000; Thu, 10 May 2018 17:58:22 -0400
From: "Lubashev, Igor" <ilubashe@akamai.com>
To: Roberto Peon <fenix@fb.com>, Nick Banks <nibanks=40microsoft.com@dmarc.ietf.org>, Dmitri Tikhonov <dtikhonov@litespeedtech.com>, Mike Bishop <mbishop@evequefou.be>
CC: IETF QUIC WG <quic@ietf.org>
Subject: RE: Why allow empty STREAM frames when offset is zero?
Thread-Topic: Why allow empty STREAM frames when offset is zero?
Thread-Index: AQHT6ImJSKTfLtwgAkSWTEz8kX9aw6QpiqWAgAAFW4CAAATBAIAAAq8A///p/YA=
Date: Thu, 10 May 2018 21:58:22 +0000
Message-ID: <c0b4cd48aa5f491f91828d529a7d2c68@usma1ex-dag1mb5.msg.corp.akamai.com>
References: <20180510180509.GA2505@ubuntu-dmitri> <SN1PR08MB18543D4C234CC672616E37BFDA980@SN1PR08MB1854.namprd08.prod.outlook.com> <20180510184505.GA23837@ubuntu-dmitri>, <DM5PR2101MB090184FC657942BD294E555DB3980@DM5PR2101MB0901.namprd21.prod.outlook.com> <BY2PR15MB0775E5FA5E6869C85AB98933CD980@BY2PR15MB0775.namprd15.prod.outlook.com>
In-Reply-To: <BY2PR15MB0775E5FA5E6869C85AB98933CD980@BY2PR15MB0775.namprd15.prod.outlook.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.34.240]
Content-Type: multipart/alternative; boundary="_000_c0b4cd48aa5f491f91828d529a7d2c68usma1exdag1mb5msgcorpak_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-10_06:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=635 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805100201
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-10_06:, , 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 mlxscore=0 impostorscore=0 mlxlogscore=574 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805100201
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/XmLmnIvhJVp9rdsovbn1zCZ58v0>
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, 10 May 2018 21:58:35 -0000

Actually, I'll take an issue with:

[draft-ietf-quic-transport-11] says the following:
    A stream frame's Stream Data MUST NOT be empty, unless the offset is
    0 or the FIN bit is set.

Why disallow this?  This may be a signal to the receiver about where in the stream the sender is, even if the sender does not have any new data to send.  This signal may be useful in cases of packet loss, when the sender is not ready to declare a packet with stream data lost and retransmit lots of stream data (has not been long enough), but it is very important for the application to know where the sender is in the stream.  Of course, there are workarounds - you can send a STREAM frame, retransmitting a single byte.  But it still seems like an unnecessary restriction.


  *   Igor


From: Roberto Peon [mailto:fenix@fb.com]
Sent: Thursday, May 10, 2018 3:12 PM
To: Nick Banks <nibanks=40microsoft.com@dmarc.ietf.org>; Dmitri Tikhonov <dtikhonov@litespeedtech.com>; Mike Bishop <mbishop@evequefou.be>
Cc: IETF QUIC WG <quic@ietf.org>
Subject: Re: Why allow empty STREAM frames when offset is zero?

It can be used to establish the mapping of the stream (src-conn-id:streamid <-> dst-conn-id:streamid) through the stack of proxies, etc, especially for usecases where there is an early response.

-=R



Sent via the Samsung Galaxy S7, an AT&T 4G LTE smartphone


-------- Original message --------
From: Nick Banks <nibanks=40microsoft.com@dmarc.ietf.org<mailto:nibanks=40microsoft.com@dmarc.ietf.org>>
Date: 5/10/18 12:02 PM (GMT-08:00)
To: Dmitri Tikhonov <dtikhonov@litespeedtech.com<mailto:dtikhonov@litespeedtech.com>>, Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>
Cc: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>
Subject: RE: Why allow empty STREAM frames when offset is zero?

In WinQuic, the resulting frame just results in the NEW_STREAM event to the application layer. They can start reading from it, but we just won't have anything to read yet. That NEW_STREAM event can be used for a number of things. If you are moving from multiple TCP connections to a single QUIC connection, it could be seen as the equivalent of a single TCP connect event.

- Nick

-----Original Message-----
From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> On Behalf Of Dmitri Tikhonov
Sent: Thursday, May 10, 2018 11:45 AM
To: Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>
Cc: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>
Subject: Re: Why allow empty STREAM frames when offset is zero?

Is there a real-life use case that is implied here?  I can't see why it would be useful.

On the other hand, it creates an odd situation for an implementation:
a frame has arrived, yet the higher layer cannot read from it yet, so an incoming stream is unreadable.

On Thu, May 10, 2018 at 06:25:55PM +0000, Mike Bishop wrote:
> If you want to open a stream (e.g. permit data to be sent in the opposite direction of a bidirectional stream), but don't actually have data ready to send yet.
>
> -----Original Message-----
> From: QUIC [mailto:quic-bounces@ietf.org] On Behalf Of Dmitri Tikhonov
> Sent: Thursday, May 10, 2018 11:05 AM
> To: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>
> Subject: Why allow empty STREAM frames when offset is zero?
>
> [draft-ietf-quic-transport-11] says the following:
>
>    A stream frame's Stream Data MUST NOT be empty, unless the offset is
>    0 or the FIN bit is set.
>
> Why allow empty STREAM frames when the offset is zero?  What is the purpose?
>
>   - Dmitri.
>