Re: Unreliable Stream (was: Re: HTTP requests on one stream #692)

Frank Kastenholz <fkastenholz@google.com> Tue, 25 July 2017 18:17 UTC

Return-Path: <fkastenholz@google.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 03C22131E88 for <quic@ietfa.amsl.com>; Tue, 25 Jul 2017 11:17:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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_NONE=-0.0001, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 DEvuvgdYd9Ad for <quic@ietfa.amsl.com>; Tue, 25 Jul 2017 11:17:25 -0700 (PDT)
Received: from mail-qt0-x22a.google.com (mail-qt0-x22a.google.com [IPv6:2607:f8b0:400d:c0d::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CA0E312EC13 for <quic@ietf.org>; Tue, 25 Jul 2017 11:17:24 -0700 (PDT)
Received: by mail-qt0-x22a.google.com with SMTP id s6so43579037qtc.1 for <quic@ietf.org>; Tue, 25 Jul 2017 11:17:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=G5sDPFsMt17NbtwxobMTdSj1vTSNbf+d6r4N+m8YdIE=; b=XtTG4m4wtRxLxGmDwkdARTGkTrUKPF2hU21d5r/Cuye3Nj4Ec2idhlAkFHmQueRVW3 BH2u6Fm4bWayFx7N03MvBTnuM2silCirO4M8JsvkPd1m+hA5GdtjTqz6gdvGAkhbKUMi rKQwKFBLmPebs5MakQzt5p5HCt5C302QFpd69CUJsFH2L4hyh+oHAlwCHixAvtbBUA5V A9kWkzhp99E/VeyHQaXuHSPsdznJqCignIoqdC4hpqr/WBj8i+Ugq+dqn2JGOVB2jeUt NuQnuDdu+mWZsb8PSDT/I5wSWGKmc/UAwjb81UQPRYb48/43lw3cp81Ri8RSXpwnHzzM pR7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=G5sDPFsMt17NbtwxobMTdSj1vTSNbf+d6r4N+m8YdIE=; b=OMlz685ojEDnwQa+vOeXepPI3JvZ0naaRVKwFHVCCOO/yQkTq8v9mL+Y/71Q6nHl/v tploYnj3RVtmi4pPI80ArMkEkqP/WSHnpq0kGMpebqDn5tWjNVXY9b0a3LW1JFO22Xj5 Q+8GYvA5mt7wNJ/n39Ng3tLmgZwAly8GI8WKJJpr7YM25LBxyKs/xDxbIhLaJIM3nlty EtasbGBMdtjZ0tIKCWY7DBoLTpdZ+pntpSVEpBtR7cSfo9fa+usALNFtoMQtBDZlpDdS dWbhSom4usExAXDZsd1hZEvvNaJgXbMdSEG0iZrAJCL+5/ENdq9OyBaW9XM9L44P2isY cB9w==
X-Gm-Message-State: AIVw112xfFenID8xULNo+HGES8ZPv1ePM/353RUiSvqx9PFkafVYSbqA 9CNAbYtDk93pUBZ10hM+y4Fk4gXKpErP
X-Received: by 10.237.37.45 with SMTP id v42mr28569932qtc.333.1501006643765; Tue, 25 Jul 2017 11:17:23 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.12.176.117 with HTTP; Tue, 25 Jul 2017 11:17:03 -0700 (PDT)
In-Reply-To: <9914D466-6293-447C-B3FC-839CFFF9298B@in-panik.de>
References: <7CF7F94CB496BF4FAB1676F375F9666A37748B7A@bgb01xud1012> <MWHPR21MB0141497D0A30342613752E0787A50@MWHPR21MB0141.namprd21.prod.outlook.com> <2B5E3522-750C-4697-A308-D8452E800D9F@in-panik.de> <CAKcm_gO8k+ZASF3M79QTrypa12pXGfp7=3P2XuOhHbxb04Rq4Q@mail.gmail.com> <DB5PR07MB1237D364086129C462AAC19D84BA0@DB5PR07MB1237.eurprd07.prod.outlook.com> <CAKcm_gMbQj8UKLfDmwv8K+XWHxB8xx4EG7uQGt95m3X40c1YXA@mail.gmail.com> <DB5PR07MB1237A77FC6F791C1A95239F784BA0@DB5PR07MB1237.eurprd07.prod.outlook.com> <CABkgnnVu5r-QQpO01LAeWHJvbxxBtpGvwpNpA2_vi7UgOJ9ThQ@mail.gmail.com> <MWHPR21MB0141C6AA46DFF0B005972F2287BB0@MWHPR21MB0141.namprd21.prod.outlook.com> <9914D466-6293-447C-B3FC-839CFFF9298B@in-panik.de>
From: Frank Kastenholz <fkastenholz@google.com>
Date: Tue, 25 Jul 2017 14:17:03 -0400
Message-ID: <CAD3dRjqACu+oK=jhECsKHd27HEbHgjJkgNtQp3tdwnjo1QvjFQ@mail.gmail.com>
Subject: Re: Unreliable Stream (was: Re: HTTP requests on one stream #692)
To: "Philipp S. Tiesel" <phils@in-panik.de>
Cc: Mike Bishop <Michael.Bishop@microsoft.com>, Lucas Pardue <Lucas.Pardue@bbc.co.uk>, "Swindells, Thomas (Nokia - GB)" <thomas.swindells@nokia.com>, IETF QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>, Ian Swett <ianswett@google.com>
Content-Type: multipart/alternative; boundary="001a113e5f16cf46eb0555285788"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/t0vREuJWHg01RIljDlkiGOE_eBI>
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: Tue, 25 Jul 2017 18:17:27 -0000

On Tue, Jul 25, 2017 at 8:11 AM, Philipp S. Tiesel <phils@in-panik.de>
wrote:
...

> In case of HTTP, all three options could be requested via an HTTP request
> header.
> Optional, in case the server does not support unreliable streams, fallback
> to reliable transmission.
>
> An open question is question is how to present a stream with “holes” to
> the application.
>

Hi

At a previous job I implemented a protocol that had some similarities to
QUIC and
one of the protocol's features was that a stream could be declared to be
unreliable.
We had two not-incompatible views. First is the simple approach --- a part
of the API
included the QUIC sequence number -- the app can then use this to make the
needed
decisions.  The assumption here is that the sequence numbers increase by a
knowable
amount. Alternatively, we felt that such streams tended to consist of
fairly small (fit in one
packet) independent messages that contained their own identification (or
didn't need it).  In
this case, the application could figure out the holes, etc, on its own.  An
example might be
something like a periodic status report from some kind of sensor that
contains a time stamp.
The time stamp tells the app all it needs to know.

Neither of these are protocol issues --- presenting the seq. num. is an API
matter, and assuming
that the app and its protocol can sort it out is, well, an app matter.

On the QUIC layer, as it is much easier to implement, unreliable
> transmission is driven by the sender. Retransmissions can then be done
> depending on the applications choice.
>

In the work I did previously, we found instances where either sender or
receiver might wish
to assert reliability (or unreliability).  Continuing with the sensor I
mentioned above, a
receiver that is a logger may want every sensor reading. A receiver that
just is showing
the current value will not need reliability. So the sender (the node with
the sensor) might
wish to assert one mode, the receiver however wants the other -- and vice
versa.

This ignores the question of what to do when the receiver wants one mode
and the sender the other ... I don't have a quick answer ... we didn't have
funding at the previous gig to go into these levels of protocol
development...  Probably would have done some kind of negotiation,
with the connection failing if the parties can't agree (maybe ala the old
Telnet will/wont/do/dont
technique).

Thanks
Frank Kastenholz