Re: [Webtransport] Http3Transport: Connection-basd Functionality

Ian Swett <ianswett@google.com> Sun, 21 February 2021 17:57 UTC

Return-Path: <ianswett@google.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 16DE93A0DD3 for <webtransport@ietfa.amsl.com>; Sun, 21 Feb 2021 09:57:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level:
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] 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 PUn8uTXfB_a3 for <webtransport@ietfa.amsl.com>; Sun, 21 Feb 2021 09:57:25 -0800 (PST)
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) (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 1B6033A0DD4 for <webtransport@ietf.org>; Sun, 21 Feb 2021 09:57:25 -0800 (PST)
Received: by mail-wr1-x42a.google.com with SMTP id v15so16721941wrx.4 for <webtransport@ietf.org>; Sun, 21 Feb 2021 09:57:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/b/86pxYVFhRy0xDtLFjm0KfePGNZL0LLL3mP08O8pY=; b=fNngrQKS+XgVHMG70UBhPS+R2wRoC0O1yLiiHUq9KEKaWhxcfW5fPpXLdVcUIdD9L0 NmiRahc+DJl/Oa8RNQjCdNLim/QA78DG4sWm1bs7whg5nw/J99/2THkT7i/wJT55xLi5 zsTK8zU0sNiDcRvwGqZRLeC33XF6jGhIspse3V1dTVzAauvG1dFfLWscdiYlU3XywgYa 0YIJvkHXGoo04HUuxKCdgL1GHq9U9TIksWgpai6gmWQUKlawVWLQj8CpsW7cTd62DhTs 7wN1es1nudRgminoKNBTaSkh/0sfWeMmlQmZEiiRlp/XznJXNij/hoPcc57cw5eawFC4 o6gg==
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=/b/86pxYVFhRy0xDtLFjm0KfePGNZL0LLL3mP08O8pY=; b=ZCRN695/+iSucffpv2ae/fa2Mc4PB/iU6N6YRQ5FnVIt7ZHu1x4u2FsbjWmuKrQNMT eboozrKN3JCACaoc3Zgj4E3Q7ZzAG61BolAKQY3DTmcEEKaOhvgptgDu7GTFCKUiIS+m vC9DVXFd3/GHHxbYuwPYiRQzoN+k9+5cVGNlxbdgp4euKHrZUFFB8qTL77ycHQjrppJz 1m8O6O6W9dR4aytHKMgmm1VJDiDVD0G0m0ppazvnG1ChI4DIK1qPwlQSItyE91JBFoOJ sePwZ+UuwDdhuXtYrOHjsc4l+2labuXxyjqo1NrslQGCbYe8OkBJleCcaUpMoRIXevVx hiPQ==
X-Gm-Message-State: AOAM530K6ql7hHY2jv3pn4x7Aazu05gX/jfsBxXLV90qXesjIUxolGNu UpLz8FERNFcn0m2+/Tcxx5S0Ot/1qsTBdt3NcceLTg==
X-Google-Smtp-Source: ABdhPJzbP68hoYob7UVTmcNWo/CIeeSSzKCv0cQKK6rns3BpSFSemsTwZoQyGcytewjqB4ZeZh2HEbRxXW9fSGUdE2U=
X-Received: by 2002:adf:f484:: with SMTP id l4mr7019646wro.409.1613930243264; Sun, 21 Feb 2021 09:57:23 -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> <CAHVo=Z=gsLRuFFuYiXo73HwPiThgGH5n_scw7Bn8aNrAjQ2Dig@mail.gmail.com> <CAPDSy+6LT9dMS6RofRzdqL6R5VFDRfv21qV+Xd9jx22w2yyuZA@mail.gmail.com>
In-Reply-To: <CAPDSy+6LT9dMS6RofRzdqL6R5VFDRfv21qV+Xd9jx22w2yyuZA@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Sun, 21 Feb 2021 12:57:11 -0500
Message-ID: <CAKcm_gO4GQ9uSOFQjw6W-CXkOexcKiuswUZyaTfc5KykAH2Lyg@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>, Bernard Aboba <bernard.aboba@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000d7e2eb05bbdc6ad3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/ql6aD3gv-XTeuQVuy8g_7nkPbWs>
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: Sun, 21 Feb 2021 17:57:28 -0000

The MAX_STREAMS/MAX_DATA example does seem like a tricky point I hadn't
fully appreciated earlier.

In H3, we took the attitude that using those transport connection level
features was the right thing to do, which I think makes sense because
HTTP/2 had too much transport(non-HTTP) functionality in it.

But if we allow pooling of H3 with WebTransport or other applications which
need to use MAX_STREAMS/MAX_DATA, then each other application needs to add
transport-style mechanisms and the H3 implementation probably needs to be
aware that MAX_STREAMS needs to be adjusted by the other applications
MAX_STREAMS in order to have the intended effect.

I think I'm leaning towards one of two options: We don't care about
isolating the pooled H3 session from the WebTransport session when pooling
occurs, or we need to spend more time thinking about this
'session-layer'(to use Roberto's phrasing) problem in general now or we're
going to create some problems down the road.

Ian



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

> Thanks!
>
> WebTransport is intentionally designed to be limited because we don't want
> to expose too much to JavaScript.
> Similarly, when JavaScript is using WebSocket, we don't let it access TLS
> extensions or TCP flow control information, as doing that could cause
> security issues.
>
> To your MAX_STREAMS/MAX_DATA example, I think there's value in having
> WebTransport-specific flow control, but I don't think that should rely on
> the underlying transport and connection, we can easily build that inside
> WebTransport itself.
> In other words, if there are QUIC-connection-level features that we think
> might benefit WebTransport applications, we should analyze their security
> implications and add those specifically to WebTransport instead of giving
> JavaScript blanket control over connection properties.
>
> David
>
> On Fri, Feb 19, 2021 at 2:59 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> 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
>>>>
>>> --
> Webtransport mailing list
> Webtransport@ietf.org
> https://www.ietf.org/mailman/listinfo/webtransport
>