Re: Unreliable Stream Support for QUIC

"Philipp S. Tiesel" <phils@in-panik.de> Wed, 06 September 2017 09:37 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 42EAC132707 for <quic@ietfa.amsl.com>; Wed, 6 Sep 2017 02:37:33 -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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] 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 wKZvioo0zjVG for <quic@ietfa.amsl.com>; Wed, 6 Sep 2017 02:37:31 -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 6CF7B1323B4 for <quic@ietf.org>; Wed, 6 Sep 2017 02:37:31 -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 v869b9ev025602 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 6 Sep 2017 11:37:09 +0200
Received: from [2001:638:809:ff1f::8295:dc3a] 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 1dpWlP-00060L-AG; Wed, 06 Sep 2017 11:36:51 +0200
From: "Philipp S. Tiesel" <phils@in-panik.de>
Message-Id: <5AD0AAE5-383B-4288-9350-4614E8AA896B@in-panik.de>
Content-Type: multipart/alternative; boundary="Apple-Mail=_42DFF0B1-E005-49C7-B151-1C279F7E7EDA"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Subject: Re: Unreliable Stream Support for QUIC
Date: Wed, 06 Sep 2017 11:37:08 +0200
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A37766AB0@bgb01xud1012>
Cc: QUIC WG <quic@ietf.org>
To: Lucas Pardue <Lucas.Pardue@bbc.co.uk>
References: <A9B224F6-E917-4A7F-ABF7-29FC2C60C5A6@in-panik.de> <7CF7F94CB496BF4FAB1676F375F9666A37766AB0@bgb01xud1012>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/KxXU7FJMCNl9BoKpiXsDp47T8bA>
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: Wed, 06 Sep 2017 09:37:33 -0000

> On 5. Sep 2017, at 19:20, Lucas Pardue <Lucas.Pardue@bbc.co.uk> wrote:
> 
> Hi Philipp,
> 
> Thanks for publishing these. I've only had a chance to skim read so I only have a basic question right now.
> 
> For the HTTP/QUIC mapping, have you considered server push? The document doesn't mention anything but I wonder if you have some ideas. I'm thinking that the push promise includes your request header to indicate to the client that the pushed body will be unreliable. An alternative would be to have all pushed streams inherit the reliability of the parent stream. 

We have not thought about server push yet.

As the server knows from the QUIC handshake that the client, in principle, supports unreliable streams, HTTP/2 can use this knowledge.

For draft-04, I agree with your first proposal, as the push-promise headers should be the same as the request headers. The push stream is then opened as unreliable stream.
 
For draft-05, the Server push description looks kind of broken to me. It still references the request/response streams as used in -04 and the frames needed for reference are gone.
Assuming a sensible implementation with a new stream first carrying a PUSH_PROMISE frame, then a bunch of DATA frames, the server must open the push stream as unreliable and only retransmit the content of the PUSH_PROMISE and probably late HEADERS frames.

While I linke the design and will include it in the next version of the draft, I fear it might not work well over multicast.

AVE!
  Philipp S. Tiesel / phils…