Re: [Webtransport] HTTP/3 Downgrade

Bernard Aboba <bernard.aboba@gmail.com> Thu, 12 November 2020 19:18 UTC

Return-Path: <bernard.aboba@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 D86D43A0061 for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 11:18:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable 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 JMjebprN2LPu for <webtransport@ietfa.amsl.com>; Thu, 12 Nov 2020 11:18:44 -0800 (PST)
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::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 7E6FD3A005C for <webtransport@ietf.org>; Thu, 12 Nov 2020 11:18:43 -0800 (PST)
Received: by mail-lj1-x22a.google.com with SMTP id r17so7528014ljg.5 for <webtransport@ietf.org>; Thu, 12 Nov 2020 11:18:43 -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=+G64eWyUzVPNoKLjQ8vRTDR1q6VO9pTPCboFjPbqM6Y=; b=qWrSEnNZgERtOms1FCLpDyfsmijA6JSN5vc8X7PXztbM9qfCRsFpNzBdYNv4dObNcW QIxsI7iffGc3dDNi13p5WiwM6+S9rEbkbjpidflS7XUwcaTyh0zZMivOezxj5UTeDNTs HZnzUDtnmAN+oXGMa6aId1DHClxm3K/NSQ1j3lDvPRZdyNZtA7JzLjYJYld2mTQwXjwq WdADwh0EjnL068uW0bnlJtTfDYnEahVna2RcDAvjuE6XvOSMrvN7Kng24o/7x2GNwx6z pwwr5Mmg4ajsmTG+ddC2w1snnAaxHLjxKNyOxcZPlFMEvt4St9Ep0w3scFtlPvoBBK2R rpdg==
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=+G64eWyUzVPNoKLjQ8vRTDR1q6VO9pTPCboFjPbqM6Y=; b=cByBuZGaqZfvfEATUoVlYNCXHFcT/dU8db6te4N/gNVXu096m7nixDMd2DihjjVW36 zAoHjbqC5dGh16woyJD+IkqErHF9DrBT4grRAoorFU6/QcCViSk6SZ1qSB5Yezj5fpF/ 8eJGW7D0OOhsd38wSB9PAojhGZwG1vAkn/WpIzY6+vqgVJJBzxSjHz6kB4aSNCOsOeSX 1Nx2MJjmB8q+WNn2GHZfHbHQVt/AaPq7MPe97HVa3RKiJFOvuYp/IfegvBUj277WahOu 6FVmOGHk7HPKQHiCzDM6MBq+zR/RDqfR7qzJQXswRSt6n+o49R46hbD+snaJiPimArnU f+ew==
X-Gm-Message-State: AOAM533D9H1hEC/02yDJ1j+zw+FqQ5ySwIz2aM3O7Q9+HTET3neZnlge ctjcI9cdnWmDvdnldFawvwySOLRKmV8Utnowbg6Li5nQlbfRBA==
X-Google-Smtp-Source: ABdhPJxyY0gxc5yvkdWMOEn8tn3/sALRj7Uknfc47gbcVq6Vnb4PYOT82U67z7rfRLJDEAV2Iff21nuUvk+WTQ1wpC8=
X-Received: by 2002:a2e:b70d:: with SMTP id j13mr499085ljo.240.1605208720827; Thu, 12 Nov 2020 11:18:40 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=Zk84mfOJr3XSXmrVDBq0XUKoB63ytCR1dhhtM7aehq7qw@mail.gmail.com> <CAAZdMafmO3qKQKegJ7X+MvTjnPvKnO3+B1T-aRME6FZqL-e_1A@mail.gmail.com> <CAOW+2dv8bGfftqZYFnPGpOX+XPzydh4_KJjknhu5FxP-w1neTw@mail.gmail.com> <CAHVo=Zkhav-SqLAPocm2ZtEOwfrjBvOUuJ4egphLiw_UA67JYA@mail.gmail.com>
In-Reply-To: <CAHVo=Zkhav-SqLAPocm2ZtEOwfrjBvOUuJ4egphLiw_UA67JYA@mail.gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Thu, 12 Nov 2020 11:18:31 -0800
Message-ID: <CAOW+2dvJ4MjvpERdyvAC+izJLGrnPrVt0CcrEDsQK8N_qcK1OA@mail.gmail.com>
To: Luke Curley <kixelated@gmail.com>
Cc: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>, WebTransport <webtransport@ietf.org>
Content-Type: multipart/related; boundary="00000000000098a63305b3edc745"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/7MmkLkNF-JekAP-TedWUlboXejo>
Subject: Re: [Webtransport] HTTP/3 Downgrade
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: Thu, 12 Nov 2020 19:18:47 -0000

Luke said:

"My use-case is almost identical (Twitch). We're implementing a video

protocol over QuicTransport instead of trying to leverage HTTP/3. It gives
us the ability to push media while utilizing stock QUIC implementations.
All you need on top is a simple API layer, such as JSON messages over
bidirectional streams."

[BA] That's a pretty straightforward way to move forward on low
latency or P2P use cases (e.g. game streaming and remote desktop).
HTTP/3 use cases tend to be situations where caching might be useful,
or where there is a desire to leverage HTTP/3 specifically. For
example, for live events you can often live with more latency (perhaps
up to a second), and CDNs are widely used today to improve
scalability. In the RIPT BOF, a desire to leverage cloud
infrastructure was mentioned, though at the time there was scepticism
as to whether that would actually be possible (and similar concerns
have been raised on this thread).

As for firewall traversal, QUIC connections can use the same socket and

would thus share the NAT binding... assuming middleware does not decode
QUIC initial packets. Each connection could end up on different host
depending on load balancing though.

[BA] I think the concern was not NAT traversal so much as enterprise
firewalls that today often have restrictive policies (e.g. TCP-only or
HTTP-only). Not sure whether those firewalls are likely to be
QUIC-friendly or if so what we can assume about them when they are
upgraded (e.g. MASQUE support?). So may not be easy to say exactly
what the requirements will be.

Has somebody formulated a list of pros and cons for Http3Transport as
compared to QuicTransport?

[BA] There have been some slides presented with a few basic
considerations. But more detailed examination seems needed to distill
requirements and get to the bottom of what implementers need as
opposed to what might sound good at a superficial level but might not
be deployable or implementable. The need for more detailed discussion
becomes apparent when actually trying to implement some of the use
cases - and realizing that in practice there are more moving parts
than meets the eye.

There are also DevOps issues like load balancing/draining, which has
been an issue with Websockets deployment. Quite solvable but worth
articulating in terms of requirements.



"

On Wed, Nov 11, 2020 at 5:31 PM Luke Curley <kixelated@gmail.com> wrote:

> @bernard I think that use-case boils down to a lack of HTTP functionality.
> The "proper" approach would be to use HTTP server push for media, but
> nobody likes that. Justin's ask is to instead to augment HTTP/3 such that
> it muxes in QUIC-like connections. I do think it address HTTP's
> short-comings, but it's non-trivial and will require custom HTTP/3
> implementations.
>
> My use-case is almost identical (Twitch). We're implementing a video
> protocol over QuicTransport instead of trying to leverage HTTP/3. It gives
> us the ability to push media while utilizing stock QUIC implementations.
> All you need on top is a simple API layer, such as JSON messages over
> bidirectional streams.
>
> As for firewall traversal, QUIC connections can use the same socket and
> would thus share the NAT binding... assuming middleware does not decode
> QUIC initial packets. Each connection could end up on different host
> depending on load balancing though.
>
> Has somebody formulated a list of pros and cons for Http3Transport as
> compared to QuicTransport?
>
> On Wed, Nov 11, 2020 at 2:35 PM Bernard Aboba <bernard.aboba@gmail.com>
> wrote:
>
>> Victor said:
>>
>> "Http3Transport without pooling doesn't make that much sense."
>>
>> [BA] Some Http3Transport use cases depend on pooling between WebTransport
>> and HTTP/3 request/responses; others could just be satisfied by
>> WebTransport pooling.  I would suggest that we distinguish these two
>> requirements, because pooling/sharing a QUIC connection between
>> WebTransport instances appears simpler than pooling/sharing a QUIC
>> connection between WebTransport and HTTP/3.
>>
>> At IETF 107 RIPT BOF there was a desire expressed to enable media
>> services to leverage HTTP infrastructure. Justin Uberti described a use
>> case where gRPC would be sent over HTTP/3 to request that the server
>> initiate either a reliable stream or flow of datagrams (see below).  This
>> use case appears to require pooling of WebTransport and HTTP/3
>> request/responses (in order to simplify firewall traversal).  However, this
>> use case is not easily supported using an garden variety HTTP/3 server,
>> which probably could not initially be expected to support QUIC datagrams
>> (although it would not be hard to support in node.js assuming that a QUIC
>> module was available).
>>
>> See Slide 7 here:
>> https://datatracker.ietf.org/meeting/107/materials/slides-107-ript-rtc-implementation-experiences-00
>>
>> [image: image.png]
>>
>> On Wed, Nov 11, 2020 at 1:52 PM Victor Vasiliev <vasilvv=
>> 40google.com@dmarc.ietf.org> wrote:
>>
>>> I'm not sure "HTTP/3 without pooling" does anything that QuicTransport
>>> doesn't already do, especially since the latter got real header support.
>>> So, at least as far as my understanding of this space goes, Http3Transport
>>> without pooling doesn't make that much sense.
>>>
>>> On Wed, Nov 11, 2020 at 4:43 PM Luke Curley <kixelated@gmail.com> wrote:
>>>
>>>> It seems like connection pooling introduces a lot of technical
>>>> complexity for limited benefits. Hypothetically, what if connection pooling
>>>> was dropped as a requirement?
>>>>
>>>> What if Http3Transport involved establishing a new HTTP/3 connection
>>>> and downgrading it to QUIC? It would be analogous to WebSockets for
>>>> HTTP/1.1.
>>>>
>>>> You could use 0-RTT to minimize latency when establishing a HTTP/3 or
>>>> Http3Transport connection to an existing host. These connections would not
>>>> share congestion control state (unfortunate), but would also not share flow
>>>> control limits (yay).
>>>>
>>>> I also think this is how you could merge QuicTransport and
>>>> Http3Transport. Use HTTP/3 for the handshake, and QUIC for the data
>>>> transfer.
>>>> --
>>>> 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
>>>
>>