Re: Unreliable Stream Support for QUIC

"Philipp S. Tiesel" <phils@in-panik.de> Thu, 07 September 2017 12:11 UTC

Return-Path: <phils@in-panik.de>
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 A05911326FE for <quic@ietfa.amsl.com>; Thu, 7 Sep 2017 05:11:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 F-Sj4VT7gTgz for <quic@ietfa.amsl.com>; Thu, 7 Sep 2017 05:11:00 -0700 (PDT)
Received: from einhorn-mail.in-berlin.de (einhorn-mail.in-berlin.de [217.197.80.20]) (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 29F68132644 for <quic@ietf.org>; Thu, 7 Sep 2017 05:10:58 -0700 (PDT)
X-Envelope-From: phils@in-panik.de
Received: from x-berg.in-berlin.de (x-change.in-berlin.de [217.197.86.40]) by einhorn.in-berlin.de (8.14.4/8.14.4/Debian-8+deb8u2) with ESMTP id v87CAa0Q004709 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 7 Sep 2017 14:10:36 +0200
Received: from [2001:bf0:c801:101:b551:51b7:a305:931a] by x-berg.in-berlin.de with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <phils@in-panik.de>) id 1dpvdS-0000h0-3h; Thu, 07 Sep 2017 14:10:18 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Subject: Re: Unreliable Stream Support for QUIC
From: "Philipp S. Tiesel" <phils@in-panik.de>
In-Reply-To: <MWHPR21MB0141281CF7544A8FBDC9940C87970@MWHPR21MB0141.namprd21.prod.outlook.com>
Date: Thu, 07 Sep 2017 14:10:48 +0200
Cc: QUIC WG <quic@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <C5D29739-BF87-4B3E-A557-BAD78F6FB5D4@in-panik.de>
References: <A9B224F6-E917-4A7F-ABF7-29FC2C60C5A6@in-panik.de> <MWHPR21MB0141281CF7544A8FBDC9940C87970@MWHPR21MB0141.namprd21.prod.outlook.com>
To: Mike Bishop <Michael.Bishop@microsoft.com>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/nxeGsBXf0VYASKiHrQOqOjoAsCY>
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 12:11:02 -0000

> On 6. Sep 2017, at 20:30, Mike Bishop <Michael.Bishop@microsoft.com> wrote:
> 
> Reading through the draft, a few thoughts with no particular organization.
> 
> Your proposal says that "Unreliable streams are subject to regular congestion control.  CLOSE_STREAM Frames are, like ACK and RST_STREAM frames not subject to congestion control."  I'm not sure where you're finding that ACK and RST_STREAM frames are ignored by congestion control, nor what it means for a frame not to be subject to congestion control (which deals with packets).

It might be that i got the congestion control draft wrong, but I thought most control messages can even be sent if the congestion window or max data are depleted.

Besides that, what byte counts are used for CC seem really weird - as I read it now, all bytes of packets count except “ack only frames” (why not “ack only packets?”) 
That reads for me that a packet containing only an ACK a is not subject to congestion control, but a packet containing an ACK and a MAX_DATA frame is subject to congestion control.
I see no description of what can be sent if congestion window is depleted at all.


> I think in 5.3 you might want to expand on what you mean by "UDP-like behavior."  Perhaps something like "Unreliable streams prefer data loss rather than delayed delivery due to retransmission.  Applications which need to avoid delays in the initial transmission would also need to ensure…"

Ack


> I really dislike the "zombie stream" issue.  I'm not opposed to the CLOSE_STREAM design, though I'd note that you could as easily say that a STREAM frame bearing a FIN MUST be delivered reliably.  If an implementation wants to retransmit it without data, that would still be valid.  Either way, flow control requires that the final offset be delivered reliably regardless of whether the data is.

Either design solves the "zombie stream issue” and provides input needed for flow control.
We did not add the FIN retransmission variant to the proposal appendix because we ran out of bits to signal unreliable streams.

> My other hesitation with a CLOSE_STREAM frame is that it increases the overhead of an application using the stream-as-message abstraction.  (And using RST_STREAM NO_ERROR to indicate normal closure even more so -- spending the bytes to transport an error code for every stream when most of them won't need it seems excessive.)
> 
> As with #720, this adds even more stream properties.  I am wondering whether there's value in simply having a collected declaration of what a stream's properties are, and how we might handle this with a minimum of bytes per the previous thought.

I totally agree. 

I fear #720 does not go well with unreliable streams. It would be sufficient to signal whether a stream is unreliable, bit also needs to be retransmitted if lost and therefore introduce additional head of line blocking.

I guess the best solution would be having a “short” and a “long” stream frame header.
Unreliable, unidirectional and a few other things can be signalled in a “long" stream frame header. Streams can switch to the short header format once packets carrying those flags got acknowledged. I could also imagine to allow 32bit byte offsets only in the long header and that way safe another bit.


> 
> -----Original Message-----
> From: QUIC [mailto:quic-bounces@ietf.org] On Behalf Of Philipp S. Tiesel
> Sent: Tuesday, September 5, 2017 9:30 AM
> To: QUIC WG <quic@ietf.org>
> Subject: Unreliable Stream Support for QUIC
> 
> Hi,
> 
> as promised, we just submitted a draft on unreliable streams for QUIC, including support for partial reliability: 
>   https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-tiesel-quic-unreliable-streams%2F&data=02%7C01%7Cmichael.bishop%40microsoft.com%7Cc14329b9f7ac46f21d6508d4f47b6f88%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636402258384840440&sdata=8DIkFAbzCylWgO6%2FSB5EjBSSt50z5Pp51VJcOPWrits%3D&reserved=0
> 
> TL;DR: 
> 
> - In principal, supporting unreliable streams in QUIC
>   does not require changes to the datft-05 wire-protocol.
> 
> - To get a nice interface between QUIC transport and the
>   application, we need one bit in the stream frame header
>   to indicate whether a stream is supposed to be reliable.
> 
> 
> To give an application example, we did also draft how HTTP/2 over QUIC can be extended to support partial reliability based on the draft above:
>   https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-tiesel-quic-unreliable-http%2F&data=02%7C01%7Cmichael.bishop%40microsoft.com%7Cc14329b9f7ac46f21d6508d4f47b6f88%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636402258384840440&sdata=hBcFX4o0aE5Z8i4MZszSkLXh23DT7GjMFwW4FgrpAec%3D&reserved=0
> 
> We have no finished implementation yet, but are working on one. 
> 
> AVE!
>  Philipp S. Tiesel / phils…
> 

AVE!
  Philipp S. Tiesel / phils…
-- 
   {phils}--->---(phils@in-panik.de)--->---(http://phils.in-panik.de)----,
      wenn w eine   aube ist dn      man au dran dre en                   |
           o     Schr        an muss     hc         h   (Kurt Schwitters) |
:wq!  <----(phone: +49-179-6737439)---<---(jabber: phils@in-panik.de)----'