Re: [Moq] Exploring HTTP/3

Luke Curley <kixelated@gmail.com> Wed, 08 February 2023 20:02 UTC

Return-Path: <kixelated@gmail.com>
X-Original-To: moq@ietfa.amsl.com
Delivered-To: moq@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E1929C1575BE for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 12:02:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.094
X-Spam-Level:
X-Spam-Status: No, score=-7.094 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_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eIIvJ1uWhE-q for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 12:02:44 -0800 (PST)
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 20613C165767 for <moq@ietf.org>; Wed, 8 Feb 2023 12:01:45 -0800 (PST)
Received: by mail-ej1-x630.google.com with SMTP id p26so57383ejx.13 for <moq@ietf.org>; Wed, 08 Feb 2023 12:01:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Gt6gxm2c1w0ldZXdCYi0qtSwBCHeGe/Z4h0YEx+hBTc=; b=BjxntWdXP3OwnFMAOVxiA8WR1ja9BWhyN+fEaz2dzjJxO9NpvqF4ccEOkW2lI/iED8 HnvtEaqb0rwcqF+7wkiJ+ZMPzXNVNiTowRG5y4W+HgzccoDz4WfZY9QX4fGVgVSsgu9G d2qyUcVpJCCaUdpqq2DUIJWA5G3HhgME+jJgqJcxp8nvJaTsUWpoYUWY89JLar6cHS5D n1sceY1Tv4KrP0CVZJQxUzDXkbzsyarAz3XvPJJqGDj/rvlVpSyScxJ/ZtjUN+43Sq3c DaApmX61XHSWZS5x+9/htnjjisJdAGJVaLQst++C9INkB9cK80z2zYElw/UqOz04fmzF 4RkA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Gt6gxm2c1w0ldZXdCYi0qtSwBCHeGe/Z4h0YEx+hBTc=; b=mJ+V1BOsvYaMNjzcp8AirQ13dOG6pcaQMBGnmAXz9y/r4YE/QcRvqQX5m1nA/6TEv/ DEabm6zy0t7Py2qSr6f899BGHCucoNaD6YrKtxmO4D3ZGK8vm2m+j0OxzoxW+pWISUgR CTTaQjLYWgBVugXy6hq8IA6K6s/1FgghtPEvGVXhnmD/QCTrmLJRPNybqhtt1x2OZCuC XaHmbQZsDW9YO5v8oyhCWq5pQofGRRFGypYk+tuXROHW7M0/wPvD4Wb+OC9i1/0/VML4 tEBRF+xOdXyClBv1E5TabhI1w4IQ6gH2PaHB/mCrkkWjkdpko03K4p9MfVlSvgSeK4zl U6jw==
X-Gm-Message-State: AO0yUKUH5qsk93xoaXAO8SmWPVjBHnwEUcBnRNQG5YRvaS2tYjjFUKGB SxMWYt6OaAU3zhG1zFAZB9LOhXT3TYbbjOWhNWo=
X-Google-Smtp-Source: AK7set8+uG9I22iZKRumQgCC6fRUthGyTHjakgiHkb4TlbrS5E2nNDbRExGN48OdvYqCbjqEed9ttFVxUBzr3oTA11k=
X-Received: by 2002:a17:906:4d58:b0:87b:d491:4311 with SMTP id b24-20020a1709064d5800b0087bd4914311mr1893117ejv.275.1675886502634; Wed, 08 Feb 2023 12:01:42 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CALGR9oas8cMBrX1WVf64fH13jr1r-S0KQB5spNzFj41k9Lgk+A@mail.gmail.com>
In-Reply-To: <CALGR9oas8cMBrX1WVf64fH13jr1r-S0KQB5spNzFj41k9Lgk+A@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Wed, 08 Feb 2023 12:01:31 -0800
Message-ID: <CAHVo=Z=Nov7B24A=M2pxPnUgyBg3n-AjF8AD2mKwgbTQ81F+mA@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: MOQ Mailing List <moq@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000ac67b505f435bbd1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/Ea5j5WizDKwBtLALP2T889JXZcM>
Subject: Re: [Moq] Exploring HTTP/3
X-BeenThere: moq@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Media over QUIC <moq.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/moq>, <mailto:moq-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/moq/>
List-Post: <mailto:moq@ietf.org>
List-Help: <mailto:moq-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/moq>, <mailto:moq-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Feb 2023 20:02:48 -0000

I've never used it before, but I know Youtube supports HLS for
contribution. Use PUT instead of GET and you have a publisher. I don't
think it would be too hairy, although it would require switching from push
to pull at an origin.

And yeah, I agree that browsers are the main obstacles when pushing media,
but that doesn't change too much with WebTransport. We still need a way to
set the priority when pushing a WebTransport stream, much like we would
need a way to set the priority when issuing a HTTP PUT. I suppose it's
easier to modify WebTransport since it's in development.

On Wed, Feb 8, 2023 at 11:08 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hi Luke,
>
> For distribution, I think HTTP can probably be massaged into meeting the
> needs of the group. That was a thought I had when reading your early WARP
> drafts. I would review something if you put it out.
>
> However, I think things get trickier when we consider the charter text
> "The solution will be implementable in both browser and non-browser
> endpoints.". The browser part makes things tricky. It probably rules out
> non-kludgy HTTP/[2,3] server push solutions for distribution (because
> there's no API for push, and resource transfer optimization via push is
> seemingly getting overtaken by 103 early hints now). So I agree avoiding
> push is probably a good way to go.
>
> Browser and HTTP contribution seem more thorny. I don't work for a browser
> but I'm not sure a client has sufficient controls over browser behaviours
> to send HTTP content in a way that some of the WG goals might need.*
> WebTransport provides a lot of toolkit, it might not be perfect, but it
> seems closer to hand than the idea that a client might be able to influence
> local upload prioritization deep in the browser stack (as just one
> example).
>
> Cheers
> Lucas
>
> * Over in the HTTP WG, we had a short thread on prioritization of
> concurrent uploads, see
> https://github.com/httpwg/http-extensions/issues/2242. RFC 9218
> priorities always left the door open to allowing clients to use priority
> for "local decision making", so its feasible. I just didn't hear much
> support for implementing upload prioritization for resumable uploads, but
> maybe a media use case might change that. Not sure.
>
>
>
> On Wed, Feb 8, 2023 at 6:33 PM Luke Curley <kixelated@gmail.com> wrote:
>
>> Hey MoQ,
>>
>> As I mentioned in a recent email:
>>
>> > The best part about HLS/DASH is the HTTP ecosystem. That includes CDN
>> support, optimized software, and general interoperability. We lose a lot of
>> this by creating a custom pub/sub mechanism.
>>
>> > The worst part about HLS/DASH is the latency. This is caused by
>> head-of-line blocking (buffering) and the client being in charge
>> (requesting playlists and segments). The Warp draft tackles these problems
>> with QUIC prioritization (delivery order) and WebTransport push
>> respectively.
>>
>>
>> I think it's possible to address the problems with HLS/DASH without
>> forgoing HTTP.; WebTransport push is not the only option. At one point I
>> drafted Warp over HTTP/3, but abandoned it because it's more complicated
>> and Twitch doesn't need 3rd party CDN support.
>>
>> Warp's OBJECT frames are strikingly similar to HTTP/3's HEADER+DATA
>> frames, and unironically we're considering using qpack to compress the
>> OBJECT headers. I propose each Warp object would be a HTTP resource
>> instead. This parallels discussion at the interim suggesting we need a way
>> to GET old media for DVR.
>>
>> Head-of-line blocking can be avoided using QUIC (or HTTP/2)
>> prioritization with the Priority
>> <https://datatracker.ietf.org/doc/html/rfc9218> header. The client would
>> request each source with a priority based on the contents. For example,
>> request the newest audio segment with urgency=7 while the older video with
>> urgency=4. There's some warts especially involving relays but it's not
>> unsolvable.
>>
>> The latency caused by requests can be avoided by long polling. The
>> purpose of WebTransport push is to avoid the round trip between when the
>> client is informed about new media until it requests it. Twitch uses
>> long-polling with HLS today to accomplish the same thing, preflighting the
>> next request based on a deterministic URL. Prioritization lets you
>> preflight multiple concurrent requests without the risk of them fighting
>> for bandwidth.
>>
>> Alternatively, some variation of HTTP push could avoid request latency.
>> I've said this before, but QUICR looks a lot like a hypothetical HTTP
>> subscription since it's based soley on the URL. Nobody likes HTTP push, let
>> alone extending it, but technically we're building something similar. I
>> would not recommend this direction.
>>
>> I'm mostly worried about how browsers/servers will handle a request per
>> frame. I still strongly recommend breaking media into layers anyway; I'm
>> still not convinced that networks need the ability to drop individual
>> frames. For example, non-reference frames could be bundled together into
>> same HTTP resource, and prioritized lower than reference frames.
>>
>>
>> But in theory that's all we need. I can write up a draft if the WG thinks
>> it would be fruitful to explore this direction. It could be a DASH
>> extension, although it's still important to address the contribution side
>> of the coin (ex. push using HTTP PUT).
>> --
>> Moq mailing list
>> Moq@ietf.org
>> https://www.ietf.org/mailman/listinfo/moq
>>
>