Re: [Moq] Exploring HTTP/3

Roberto Peon <fenix@meta.com> Wed, 08 February 2023 23:46 UTC

Return-Path: <prvs=5403a4adb0=fenix@meta.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 852F1C14CF09 for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 15:46:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.691
X-Spam-Level:
X-Spam-Status: No, score=-2.691 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_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, TRACKER_ID=0.1, 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=meta.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 3m0M7UIULKPt for <moq@ietfa.amsl.com>; Wed, 8 Feb 2023 15:46:53 -0800 (PST)
Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8974DC14CE4B for <moq@ietf.org>; Wed, 8 Feb 2023 15:46:53 -0800 (PST)
Received: from pps.filterd (m0044012.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 318JmlJv020518; Wed, 8 Feb 2023 15:46:49 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=s2048-2021-q4; bh=Q0j9GPRhkztfyTX+UBy7KBnzVNHLdvRAjYGu8VLUg2g=; b=P6bNBdBUne0IVYL1fCYllni/S5FUZqr4gFsyn4Scf9vpyVqGxZ4pP3M771XINTZ0hkzQ pWJZMvdFql7vhxYEgqhZhsJkBmXGuXtIj+quRZEU89+Zq/eToX9dmVAC3o5c71K3dV8D 8kuWVXQ2w9ZYIbUZybZA+k3jOy6gjHunAODx9O7Bb1iiR5kX2tHnDjnVkkPEzb/USQCW TPFdp50wZ0bOeyXzYRvU7T+5IVy11/zxUk2T1wrMQLO8gPMVFEl/KTU2GKNhTilwG3Gj 5W19lawIjDxzxWiB5eyDB0NWVdIoNe0KYh8/aWiCYASrYGGzL1eS5OqiRgyEEL6nIaGU yg==
Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2175.outbound.protection.outlook.com [104.47.55.175]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3nme37kvkw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 08 Feb 2023 15:46:48 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q22JEHDL8RRWZtT42eIyuiGxVKSvyiUzWTmVka/+JZWIGs1BYCgG3JvEiSVLjeksjK/erVWyvTFBXCVvsQiZr8q4iix3sumSvyAxGt/tw70mXhTL0SS+WaVIJIha7Ks+GtH9ldkZ+Ozs2iW2OBAexRfHJ7N6GIY03o9b7lzHRMzcrC+hZWMjikIGqZt93cs1lgKqTiVeJlH8py1l76ApsEHnxnuKSd6bvCHwm56/K3gaHLhgmAoZ++GR9GMeYkwKbMJFz2Eu/Zcaw9vdSLIKTnYK+HY3B+zOVeLur606GHVaNS98VxSLcB9gJ2+BHsFVP+W9QirY57Zr7eRB8hI0sw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6GIha8qW/3ozx8LuwaaJHOBi9n2cuYD1O375GKaTO9M=; b=NXegSClw96P6Vig6F2PpCRb+t6jJHCyDiJwEp3v7WvseVKS4FW7aFkU9xN2rBip/pJA9Z5epdAGi65lNw2ab5TF/HQmM/g+xBJCml2uo8/KUmcx2S73eUx+k05smhs1U/blIAoCJG0EBGk5zmMA/gckfUmBNpvt4x+qfalqbbUgAqmyby1lSGpr0WW1wiKdnkefIZrjs3FM7zMqgVVc7PwWT0DyPKxWUdKnre9Fdhn3Ndwwfjg6Q7JL0wLgQdzoy+cn2yufMyaro1RXJ8hxQSpPkWVGZzjox4CKSzFHuYqwXna86pdb4L3MToNcRDPqF7eQylv+J1yzgobtPxH1h2A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=meta.com; dmarc=pass action=none header.from=meta.com; dkim=pass header.d=meta.com; arc=none
Received: from MW5PR15MB5145.namprd15.prod.outlook.com (2603:10b6:303:197::5) by PH7PR15MB5644.namprd15.prod.outlook.com (2603:10b6:510:27a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.36; Wed, 8 Feb 2023 23:46:45 +0000
Received: from MW5PR15MB5145.namprd15.prod.outlook.com ([fe80::1fe7:b5f3:9303:ed1c]) by MW5PR15MB5145.namprd15.prod.outlook.com ([fe80::1fe7:b5f3:9303:ed1c%8]) with mapi id 15.20.6064.032; Wed, 8 Feb 2023 23:46:45 +0000
From: Roberto Peon <fenix@meta.com>
To: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>, Luke Curley <kixelated@gmail.com>
CC: MOQ Mailing List <moq@ietf.org>
Thread-Topic: [Moq] Exploring HTTP/3
Thread-Index: AQHZO+vcI1VCDyRJ9EWkibT6/EWZzK7FsL2AgAAAc08=
Date: Wed, 08 Feb 2023 23:46:45 +0000
Message-ID: <MW5PR15MB5145F86C3D9C90438A733218D4D89@MW5PR15MB5145.namprd15.prod.outlook.com>
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CAAZdMae+WVxYZbKPdWHqApPVX3F5wQ2KHUS03VdFekaCvQiyiA@mail.gmail.com>
In-Reply-To: <CAAZdMae+WVxYZbKPdWHqApPVX3F5wQ2KHUS03VdFekaCvQiyiA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: MW5PR15MB5145:EE_|PH7PR15MB5644:EE_
x-ms-office365-filtering-correlation-id: e0707b1b-420d-4a9a-2983-08db0a2ebcf0
x-fb-source: Internal
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: L9ASJp6hdntBkmmXIIi8y5V2b4oDLoZME7o3zsS3VLPTEz9+bnfxpO8IqkKAsn0I97pu5XFqiZQSWWPZaMYpIZrVW7nQOp/0ntSlSDwR9EwoLyNO3HJK1MN6kt+D1xsmqugW39cpUui6rcDluE6Ai7TThAZond3fNeMVUvmYwg968ed2e+glzTbXQtE9Fr8WRR8VB2FK2jkF/fIyxo7CoiDmVcysDzSpXzqxqqgj1ZzxdDWjEffPtWXcjNuBdxsFtpWkkvAcvAUmhCdk5Y4wWnwczZm3s0BCVHV+LD3pUEYexOuWin/Tvea5kQJ+XuOA+9Hx/6VbBp2BxJxCgAdcrTy/auIIKbBonXVY5qFvMH6qk+5BOnmVDeObqDC17RiE2Nv5oqV23zqgNITWbiZntlmDgZ04tNQXzMfiYe1SMGXxzaXyIkUVxf6tLdN7+tSMZYSjz4wt/lZd4Gw0rNfC9FbVVq5bguNDUAC6HJcQA74ZJleedrSt8QUM6cR9cfgvfupFRgOlkV8+8sbmuZU7DPik/6YjQ4vgLt+EqtRcb6eHmy/sPyxpQFIR0ElMCA9zguqRXSitQuy2F8Nlc3/FmsSzU3+zX+rDz2z338bV//+QjW5vB0AMODWj7YFfx5c0noQf3tnZrZkWfuOvCBndUlu/3E8I+vLbFQyUIYYpdMika2x4iK5qZMRfThVvbvSOeXDyfv4ZT2TTaBPVQ6Zv3u/OQKRpaPpM5TIn05geOdc=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW5PR15MB5145.namprd15.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(136003)(396003)(39860400002)(346002)(376002)(366004)(451199018)(8936002)(4326008)(38100700002)(9686003)(478600001)(7696005)(71200400001)(966005)(166002)(26005)(186003)(53546011)(6506007)(122000001)(33656002)(41300700001)(5660300002)(52536014)(110136005)(64756008)(38070700005)(316002)(8676002)(86362001)(66946007)(76116006)(66446008)(66556008)(66476007)(55016003)(83380400001)(2906002); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: UjmdYSkfmVxHLF8/aLuiUy5LQqkKQF0miWpvN87cjNmlPPVNPw53P4DTrgeYYLxqSXfL8XQJT/fv83A/Bx8wNR8Jgxh9fr8RvaTdM+xAr9UFKIw+5pWhmpQ1W6Y/NJHJt75E1gPgoORc+ik3d21Lh7DyNd8rUB+QM6cGiCzj4CVSMcSIK0zvLRHR6386rS79l44lr9YYrDFGrfesfp8fDcC0z+0m+CbXONth+UFPItgxnufrQn8lzdUaKpGrcyh4GMbmFjGxvGA5D2swmeufamlLXx9LPU2pfIbVpiPEPTLEdb7fdP8MNUwbb110ePbm/vzzS426uPS6OjqsYmze8AdjH4nDnvwKd1jKlo9jM1LbPdzCbd0vlg+spB1PGbSOUmDpL/OHyFmINPpE82IGouSJJsNy2M3bNHzjJu/Y/Eijsf6RyVm1nEbo2z0PPLdSorcxvl6uIuSMrnNyiNMqRFl0DKmOlsYrr7q1nmw6MNOwKwqDs9+K4/vovkR4AuTj1Cd7PjmFIEuQhUy0/BaaSIHFKpUIaqR7b6f4pyUzI3OJbnbp/Z4q80PhmnCOibfMNzwmTUU8ez/nDA2SvEhGRiuwDyq5qxUbyjGUsYnpp6zi/bJoTjBuoXy3OPTX9D4HLuYzAISkBhVUKSp9+Lb/qteuxSZ2FY1FS+bsuogbPgAW1b/WDkAOF62vDpfA2nggGp+0JIZvc5PANYnWIAmxyANhnF1UPC9xVlQVY3p/a6oUG4zGKg0rfCF0KkiuCL2gDTlopoG93Lc4IYEiMHMQ6HofJhYp5mPjTxe7Ig16Yg+lG/qiG2Dm9QFcKA/iCpJNa4uSxx45f2Bqe2pNFxBjXr9SeD/YNdjLPspDAnIBWEOVn6VwKeVp+usKKyRmEZhQKE74sKPDeulS4NeHFoIpGyhdzipVuXeKIG2zBkhU6lEbn3gVqfYDFczYyGybLVDG5SgiTatqi+uFCJq1BlCbUnFBZfKX9l3r+zVIcDypMYAGsZzGe7j1dJK0Fuf5unfzlZgqc3iGyvf4g9KPXTaQJ8iw+aVnV6HgjkEX3b5LPThc6YOoYr5lN1PEGhLdJP91cBAwQrVSWllMsaJQFBp7t17/+fq5CwzD7ULkU0WmvW7dX8ISw8L2OqZF9MQ4phS8/2bqV409+X/jRnHfbCwl6oFcLHNIjC80bs77dYW2g5kL5ixDdo6GJrfblZrChz6OujY5CEmF4cksy/ok6E6zdDfcHPsyHHL+GTQ221c1qX+PXgPUuozZMellDjC8G5UL+s0F6VJOiGIpLoABubZMM5oucaqWA4EcSHYuIyCc5UCmrtU3EJ9mgNg7afEA5GHn/IairPsnZPthH1IRR8NL3qCzQIcMKwprdHGBixiC4ZQZUXSyZyyzLIkxJNpcvCantZM8+oz7W2c/T4bBE17rqx6URB5BzZBtgvV5DXzwM40OvgZA1qOqaGy1Zu7+Gl5OuGYYh46oRikwUKfzapOO34AhjkgEUpRUISmQpHlJX3jMcO+CFjfCZ62w1zzPkBLgNZ7MtQgKT97loJQzuc/pOkBMA9eajat4WFFUbCLRwHuyoY4AkglEPxMBFa6R74T5
Content-Type: multipart/alternative; boundary="_000_MW5PR15MB5145F86C3D9C90438A733218D4D89MW5PR15MB5145namp_"
X-OriginatorOrg: meta.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW5PR15MB5145.namprd15.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e0707b1b-420d-4a9a-2983-08db0a2ebcf0
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2023 23:46:45.7530 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: sRgczxVbDijL3gQLipgkEBJGLxHSEkjI8kIUquqmBGLFdD+WNj8GVwZNTCn3IZt/
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR15MB5644
X-Proofpoint-ORIG-GUID: PR4lYXEt8tJc-UtdfU2w-6WazD8W1CgD
X-Proofpoint-GUID: PR4lYXEt8tJc-UtdfU2w-6WazD8W1CgD
X-Proofpoint-UnRewURL: 4 URL's were un-rewritten
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-08_09,2023-02-08_02,2022-06-22_01
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/2XuYMrx_z_QYTZQzMk6SEF8d4NQ>
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 23:46:57 -0000

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.

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<mailto: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<mailto:Moq@ietf.org>
https://www.ietf.org/mailman/listinfo/moq<https://www.ietf.org/mailman/listinfo/moq>