Re: [Moq] Exploring HTTP/3

"Ali C. Begen" <ali.begen@networked.media> Thu, 09 February 2023 01:25 UTC

Return-Path: <ali.begen@networked.media>
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 C5B97C14F749 for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 17:25:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.994
X-Spam-Level:
X-Spam-Status: No, score=-1.994 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, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TRACKER_ID=0.1, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=networked.media
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 2ef7O25k7Nlx for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 17:24:57 -0800 (PST)
Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) (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 CE905C151554 for <moq@ietf.org>; Wed, 8 Feb 2023 17:24:48 -0800 (PST)
Received: by mail-pj1-x1033.google.com with SMTP id f15-20020a17090ac28f00b00230a32f0c9eso795314pjt.4 for <moq@ietf.org>; Wed, 08 Feb 2023 17:24:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networked.media; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7gla8DjLPqvVauJZitEwk+0SiY9nfuXpYfiufLtNUFg=; b=DPixFO0rEbLu4CkHYaYXJLITau4IlnOy5aUvSSdY8JiTA7g6d4qXrTccaaAe8CzB+P JaQmOe4RK/+vrrcNDrT9LMh5FiSgSJem04J7SdppsC9+JC7t+nOJGHzByUideFnK/GNw /RocM1vahyoJwumcbTWNkqBYaGKgD+xLPHQ8iUtRCZV8qcG9o9VADmhuWLP70kw3Y3xP 2q6Z+Rm4R0LwwOgR8ECpm3Yw+DtdLec1uWsLIxplRBmrpVMcXKSKhAEGzLcpnMXrOnI+ 4qFw1TOW+voMmZR3DWzhPinVeVHxiKDtcYo3szq+ahyMRNkuSPzeCVIa2GcoEFgkqaiY KwKw==
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=7gla8DjLPqvVauJZitEwk+0SiY9nfuXpYfiufLtNUFg=; b=J40JCUhaY32IJcYKHZZ/pDPcC0KddKc0Nj28TG97Yqi4Pjh2ni4/YW4dnv0hjXDidJ E+AYSW68KHv7k067jaolx/reg811ytUgUduBghnm6YymcSXJkCwu9xCRBlc6hYWzD6Of cGcGCiMcBFbahhJY7brzIqj1afvfo5hrXH+8StTewunASuu0tcfF4HdGOypmYadsdw7O tfLlSPwaCq9vsWnZNrv/kd86D+Mn0cwa5AaX2ltOtKvJVHBOwOTsSqgI2DLUMm4KRbZe JxpwhQ5TyeGvmxhdvZvU/yGKj4IGEdnKew9AIw8PK2Y5FO8zo/9RGgGSIWzyJ3VCOmf6 u1OQ==
X-Gm-Message-State: AO0yUKUZ+mPPpZ4qOauQF/o8IHUBPdryAhZcPa59RtHnMsiDNmS7lhkd yUbZHKLdw20TfC87cIcGUkkjcblYpaMKw6PKc2siTQ==
X-Google-Smtp-Source: AK7set/jWjUsunltSiRiIB+/w+gFfNgcWFyf7AJNTcn4CtCap/ehHqxd1Za1cmnHBXc14ZZTZY9R89kLfXUfjcOsayE=
X-Received: by 2002:a17:902:c408:b0:194:8e9a:a523 with SMTP id k8-20020a170902c40800b001948e9aa523mr2401467plk.22.1675905887906; Wed, 08 Feb 2023 17:24:47 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CAAZdMae+WVxYZbKPdWHqApPVX3F5wQ2KHUS03VdFekaCvQiyiA@mail.gmail.com> <MW5PR15MB5145F86C3D9C90438A733218D4D89@MW5PR15MB5145.namprd15.prod.outlook.com>
In-Reply-To: <MW5PR15MB5145F86C3D9C90438A733218D4D89@MW5PR15MB5145.namprd15.prod.outlook.com>
From: "Ali C. Begen" <ali.begen@networked.media>
Date: Wed, 08 Feb 2023 17:24:36 -0800
Message-ID: <CAA4MczugjobBo9Xa-E1EeZd+9z3jgWz2K-ADrTj8phSRChqepw@mail.gmail.com>
To: Roberto Peon <fenix=40meta.com@dmarc.ietf.org>
Cc: Luke Curley <kixelated@gmail.com>, MOQ Mailing List <moq@ietf.org>, Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>
Content-Type: multipart/alternative; boundary="00000000000020423405f43a3f14"
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/aYPtUq4ROzbsahDkMuukyz7UMg4>
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: Thu, 09 Feb 2023 01:25:01 -0000

On Wed, Feb 8, 2023 at 15:47 Roberto Peon <fenix=40meta.com@dmarc.ietf.org>
wrote:

> Hello Victor!
>
> Here is how HTTP/3 could work as an underlying protocol shape for moq, I
> think.
>
> Client makes request P for a playback session for video X, by stating what
> it wants onto the “control stream” (i.e. a generic resource name for the
> video/broadcast/whatever, which does not need to a prioi know anything
> about what is available).
>
> Server responds to this request that it is replying with the following
> streams:
> - video stream V
> - audio stream A
> - manifest stream M
> .. and keeps the stream open, so it can continue to communicate to the
> client.
>
> Resources V, A, M are cacheable.
> Resource P (the playback request) is not cacheable, since this is an
> ephemeral “control” (a.k.a metadata) stream.
>
> Client, being informed it is needing V,A,M, requests these if it isn’t
> already reading from them.
> Assuming push exists, and the server did it, this data will already be at
> the client, and so we’ve saved the latency we needed to save.
>
Not to pedantic, but you reduced the startup delay aka time to first frame,
not the latency. If latency reduction is the goal, pushing is not
mandatory. The client can request the upcoming media object to get the
lowest latency.

Startup delay vs. latency are orthogonal goals. And IMO the client should
pick whatever it likes to have. RFC 6285 for example supports either.

> If client wishes to change things, it can send another request to the
> server for this, referencing the same playback session ID.
> The server can then stop sending old or start sending new things, or start
> sending from a different offset.
>
> This works even when the server is dumb and doesn’t push, and we still can
> get much of the benefit in that case.
>
> What I think this gets us:
> - streaming with single-packet “delay” at relays
> - O(1) time/space overheads at relays (about as good as we’ll ever get).
> This works by having a ‘subscription’ table so when we receive a packet on
> a stream with subscriptions, we can immediately write a new packet and send
> it out on the sub’d connection. We’d rewrite the CID,stream ID, and of
> course reencrypt.
> - caching when caching is useful/available
> - easy fallbacks
> - optional compression of metadata.
>
> What is this missing, requirements-wise?
>
> -=R
>
>
>
> *From: *Moq <moq-bounces@ietf.org> on behalf of Victor Vasiliev <vasilvv=
> 40google.com@dmarc.ietf.org>
> *Date: *Wednesday, February 8, 2023 at 3:23 PM
> *To: *Luke Curley <kixelated@gmail.com>
> *Cc: *MOQ Mailing List <moq@ietf.org>
> *Subject: *Re: [Moq] Exploring HTTP/3
>
> Hi Luke, As you mention, most of the transport-level techniques that WARP
> uses (priorities, etc) are doable with HLS or DASH over HTTP/3 (in fact, I
> am aware of some of those being actually implemented in practice). That
> said, I believe that
>
> ZjQcmQRYFpfptBannerStart
>
> *This Message Is From an External Sender *
>
> ZjQcmQRYFpfptBannerEnd
>
> Hi Luke,
>
>
>
> As you mention, most of the transport-level techniques that WARP uses
> (priorities, etc) are doable with HLS or DASH over HTTP/3 (in fact, I am
> aware of some of those being actually implemented in practice).
>
>
>
> That said, I believe that HTTP is fundamentally not the right solution
> here.  HTTP is really good when you have a resource with an address that's
> known in advance and you are trying to fetch that resource (directly or
> indirectly) from an entity that is an authoritative source for it.  This
> works well for the regular web pages, and this works well for VoD, but as
> soon as you stray away from the well-lit path, you suddenly find yourself
> doing an increasingly convoluted series of awkward things just to make it
> work.  For instance, you mention long-polling, but long-polling is not
> necessarily consistently supported by the ecosystem, and you have no
> guarantee that an intermediary won't wait until fetching the entire
> resource, or deliver chunks unevenly over time.  Similarly, HTTP server
> push has been largely unsuccessful.  Same thing with trying to make
> Priority header work with the WARP priority scheme.
>
>
>
> I think MoQ provides us with an opportunity to build a protocol that
> actually makes sense for transporting live media, as opposed to trying to
> fit HTTP into the model it's not good at.  Especially when with every
> "gotcha" you encounter with HTTP, you lose some of the advantage that made
> HTTP seem like an appealing proposition in the first place.
>
>
>
>   -- Victor.
>
>
>
> On Wed, Feb 8, 2023 at 1: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
>
> --
> Moq mailing list
> Moq@ietf.org
> https://www.ietf.org/mailman/listinfo/moq
>
-- 
-acbegen
Using iThumbs