Re: [Webtransport] Http3Transport: Connection-basd Functionality

Luke Curley <kixelated@gmail.com> Fri, 19 February 2021 22:59 UTC

Return-Path: <kixelated@gmail.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5F4043A0D9D for <webtransport@ietfa.amsl.com>; Fri, 19 Feb 2021 14:59:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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=gmail.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 8PGJsxImJD33 for <webtransport@ietfa.amsl.com>; Fri, 19 Feb 2021 14:59:20 -0800 (PST)
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) (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 AA6843A0D48 for <webtransport@ietf.org>; Fri, 19 Feb 2021 14:59:19 -0800 (PST)
Received: by mail-wr1-x42c.google.com with SMTP id h98so5889680wrh.11 for <webtransport@ietf.org>; Fri, 19 Feb 2021 14:59:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Sbbh+Qm5qvbbOD9w3zO4yFB1xKxWpfpm5LZFr2IEMPk=; b=gI9rxdVBG4ZVyhq9KutfSpAAoaH+BL5E1dqUyiSEGrJbO6v9sH2XN/QH3c1g3pMKP2 hlVyj3m6m/7nhSpChFUy3ZZ0gZ5E1Y4zAXKjjnAuLPJs0+vqgQY3RMliy7nz4ENymwsW mA7mlcUE/HrEUO5219B98jZYc+L2WNFNLkP65KkChPpY+i/bFRnvdJCJBvxv2XpdJMbB n6mTv8tJkYdfDOAuUrrbNw8GiWnQ6rhXBywK1PlVMmQH+rE8k8Rsxr38TCxzupRORmf5 aoZcLwkY7Zl/dsIxHDmAAH6Nu9vlFYF8gKG1p/WZ+1fiG5iyNh6Z6EkUA8RNUHVxIAKT iBfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Sbbh+Qm5qvbbOD9w3zO4yFB1xKxWpfpm5LZFr2IEMPk=; b=VDUzq/LxaapWM5DwncC3C6dRuekEwyrmPc1tFR60yL4uEymmEWK3UV7962VMFvy9GJ Zjj4zH24fMTh0AcL4/UOAae3WY/A08ZEiD582GGUW3AuVFZw3Lgjnr/mMEuNfwdsRSoL QHgd7AMWMEdYZvdHccvUWRX/fmogykQpn+6KslQLAp+OYYKUUFmHaWQAgjuNJZS3MMuK C74zrnaWixU41x5A2fIto880q7HfWWlbgnsJ9NhUHVPkwQgjQCJIQfeHzoOdZfRY0QdI PT4v18bFyBfcuLQt5OfjCfWhnF3nmvRLK1zIQUB7oeAo1RcGhIcLMkXK+s/ntbqenHjM FbUg==
X-Gm-Message-State: AOAM5320Zs0ECW0mFzyDyri4VwbDbOnildI7nr4J5/HUttlht8w70IgF jtHp2MmuVboVwYaSo7TVyQvlEDC9lOvV0hHHOZg=
X-Google-Smtp-Source: ABdhPJxW01aXAHe94Zle7IpGWwn0cesOzDgZvGcXroYmFIqZVSyFwUMH1P+1iK7u+33OaUnb/WLmJD+yNeCBegoXFO0=
X-Received: by 2002:adf:f5ce:: with SMTP id k14mr8016942wrp.194.1613775557925; Fri, 19 Feb 2021 14:59:17 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=ZmRketpx02KeYPSHSB2gQNvYi6RSs3HrXA1isYTgYorLg@mail.gmail.com> <CAOW+2duU6Xg98Tpec6NbEL5pyxAShp76rPMyZV07Wpmx3pJX2Q@mail.gmail.com> <CAHVo=Z=o-oMfWaOUMxjtgaTNVvo28ot5EhinE+uio19-c2S0Gg@mail.gmail.com> <CAPDSy+6tWTWyL6KHZTGJ3z3L6ZGJmTrVyiPiq0zRo-SGUb39tg@mail.gmail.com>
In-Reply-To: <CAPDSy+6tWTWyL6KHZTGJ3z3L6ZGJmTrVyiPiq0zRo-SGUb39tg@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Fri, 19 Feb 2021 14:59:07 -0800
Message-ID: <CAHVo=Z=gsLRuFFuYiXo73HwPiThgGH5n_scw7Bn8aNrAjQ2Dig@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Bernard Aboba <bernard.aboba@gmail.com>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e09e8705bbb866bc"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/ST2cKWGZnGbUhxX-ORm8Tr-okfc>
Subject: Re: [Webtransport] Http3Transport: Connection-basd Functionality
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Feb 2021 22:59:26 -0000

Good examples, because HTTP/3 is currently the only QUIC application and it
doesn't utilize both of those. But QUIC doesn't prohibit an
application/protocol from utilizing the connection ID or TLS extensions. It
could be useful for some future purpose, like the client using a
pre-arranged connection ID (encoded with routing info?) or new TLS
extensions/parameters (remove a round trip for a handshake?).

WebTransport does prohibit using these connection-level functionalities for
the sake of pooling. None of this is critical functionality, but it might
hamper future efforts which is why I wanted to bring up the one-way door.

It's on my mind because I'm designing a video protocol over QUIC. It would
be nice if I could use MAX_STREAMS, MAX_DATA, etc, but as it stands now,
I'll need to implement my own flow control mechanisms for WebTransport
(browser) support.

On Fri, Feb 19, 2021 at 2:27 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

> Hi Luke,
>
> Can you elaborate on what benefits you see in exposing
> QUIC-connection-level information to a WebTransport application?
> In particular, which information would benefit WebTransport applications?
> Because for example I don't see how knowing the connection ID or transport
> parameters would be useful, but I could just be missing something.
>
> David
>
> On Fri, Feb 19, 2021 at 1:56 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> Oh man I just noticed the typo in the email subject... that's
>> embarrassing.
>>
>> I mentioned this earlier, but I think pooling is a potential future
>> optimization. The benefit is that pooling can avoid additional TLS
>> handshakes iff a client has multiple WebTransport or HTTP/3 connections to
>> the same host (rare?). The cost of pooling is that connection-level QUIC
>> functionality is no longer available, and must be avoided or worked around.
>>
>> I liked how QuicTransport was connection oriented and I think something
>> similar could be done for Http3Transport without precluding pooling support
>> in the future.
>>
>> On Fri, Feb 19, 2021 at 1:32 PM Bernard Aboba <bernard.aboba@gmail.com>
>> wrote:
>>
>>> Luke --
>>>
>>> Thanks for bringing this up!
>>>
>>> At the Interim meeting, we talked about having the API provide some
>>> control over pooling (e.g. allowing an appiication to specify that a
>>> WebTransport connection not be pooled), as well as allowing a server to
>>> specify that it doesn't support pooling.
>>>
>>> In W3C WebTransport WG we are now in the process of developing PRs to
>>> deal with pooling, and are running into some of the same questions, such
>>> as:
>>>
>>> 1. Under what circumstances can WebTransport connections be pooled, and
>>> what kinds of pooling are allowed?
>>> PR: https://github.com/whatwg/fetch/pull/1171
>>>
>>> 2.  What are the differences in API behavior between Http3Transport and
>>> quic-transport?
>>> PR: https://github.com/w3c/webtransport/pull/205
>>>
>>> 3.  For Http3Transport, are there differences in API behavior between
>>> non-sharable connections and sharable ones (e.g. behavior of
>>> webtransport.close())?
>>> Also coming up in PR: https://github.com/w3c/webtransport/pull/205
>>>
>>> 4. For a non-sharable WebTransport connection, is it possible to obtain
>>> some of the stats that were supported for quic-transport, but would not be
>>> appropriate for a sharable transport?
>>> Issue: https://github.com/w3c/webtransport/issues/206
>>>
>>>
>>>
>>> On Fri, Feb 19, 2021 at 12:49 PM Luke Curley <kixelated@gmail.com>
>>> wrote:
>>>
>>>> Hey everybody, I wanted to start the discussion now that Victor's
>>>> document has been adopted!
>>>>
>>>> I filed some issues
>>>> <https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-http3> earlier
>>>> on Github over a few small things. Overall, the draft is clean and it's
>>>> nice that we've converged on a single WebTransport protocol. One bigger
>>>> topic I wanted to discuss is the ramifications of connection pooling.
>>>>
>>>> Broadly speaking, any QUIC parameters or frames that operate on the
>>>> connection as a whole can no longer be exposed to the application.
>>>> Specifically: MAX_DATA, MAX_STREAMS, CONNECTION_CLOSE*, connection ID, and
>>>> any transport parameters.
>>>>
>>>> The WebTransport specification specifically mentions MAX_STREAMS, as
>>>> HTTP/3 servers can no longer use this to limit the number of simultaneous
>>>> requests. Returning an error code instead of utilizing the built-in flow
>>>> control is not a problem, but it's not ideal either.
>>>>
>>>> I believe this is a one-way door in general. Any protocols or
>>>> applications built on top of QUIC will no longer be able to use
>>>> connection-based QUIC features without breaking WebTransport compatibility.
>>>> This primarily means HTTP/3, but it also includes any new protocols that
>>>> utilize QUIC and desire browser support.
>>>>
>>>> What does the group think? Is this something worth caring about?
>>>> --
>>>> Webtransport mailing list
>>>> Webtransport@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/webtransport
>>>>
>>> --
>> Webtransport mailing list
>> Webtransport@ietf.org
>> https://www.ietf.org/mailman/listinfo/webtransport
>>
>