Re: [Moq] Exploring HTTP/3
Roberto Peon <fenix@meta.com> Thu, 09 February 2023 19:31 UTC
Return-Path: <prvs=540490d19a=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 4469AC16952F for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 11:31:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.989
X-Spam-Level:
X-Spam-Status: No, score=-1.989 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_BLOCKED=0.001, 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_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=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 PzxmKlxG5f44 for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 11:31:46 -0800 (PST)
Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (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 21C7CC17CE88 for <moq@ietf.org>; Thu, 9 Feb 2023 11:31:12 -0800 (PST)
Received: from pps.filterd (m0148460.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 319IuppL024937; Thu, 9 Feb 2023 11:31:08 -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=kLGgfRXMHuCASz+QbpQGVUa7Or1gsJiSHOpgVGz8WnE=; b=nXQgcHKQyXEQq7S+k37iGQ2tUhyQtXGAzDV4cZM3wJV/9GIFy9zesPUs4uRScppKFvwn 0Dr1mmZVCcCet9fqPa0uMwyACDrlzjFe92aHG0IcKCGmyARoNkOaKOpq/Yu0fLL4coZD P12YtTqS6sMKWDE4j3gfQj0JloUBN1ydIBMONRuKnvDO8oYpuVnaeKiuhMM4S99610pQ /R+6DOwXN+2a36FkV/lRMA0k5KqIBPSr126KmTz45BHM9zHBwXCYy3YLyCyprxlkHTJw Ju1dk6eA42Esmatab3/Ix2lTeA/dGrMUw9nZHJb89a45DpCnfqperw/ai1c6H0rPNTP+ jg==
Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2100.outbound.protection.outlook.com [104.47.58.100]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3nmqy2wuen-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Feb 2023 11:31:08 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VcQ02rtFA2nIkuPt09Fbc4W3Jgyl/G+J04Y0eNtE7mix8vIrprwGTCNqdv3aYwYJNVNyPk/isLscY83+/r1aLlF8nN2FsTiiLT0Zvwgm4xn7uLDwBJ4XJH4lw8w0Uj+V7PlUOUIZR5tXFLfNoZsoi3zTPtK1UxS8WYSebfyqYmum7HGtF63hQzOEnbDETVkRNoKRzvm/WryVplboVo2YtqEDqBTl4S+8S6oGgtLKPDFqqNG7Y3h/F4uQ3xRRrSjMXHFMIoySpISV/PmbXPTC4RYfKToNHQdSUqBPDTXVllLj88gI8seg7X1gxtDz20apBicvtFmWEgxwRAoysC0SJw==
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=TLARYuImOBKt/js0dlcU6nmdSzqNhe9nk3QUsKHH9RY=; b=ljKSQbOJKKT4KeNKBeIaJS0M/b4Pp/0mVe48M1Kx03BNruFWZjvxkewX9LemwojFaNn83d4+5/2uoQOr8vxztvquEicsCA7Tje+zHE9iXzjIICkaXT8z/ufSO9XIUSCHawBtlE8hWQbABUGwGsbaYp5TvvaHhSNbn7VWryyQ0gQzeiqjxViFwrYSpm0W1KLZk1TX6jzklMgRkO4FS4ju1jY0FHGe7j7AdqCeRg2ZxOfr6/4wMVRl0V27m1K+oDEkuDDnFK3m0gzKybJQrXVhEOo1Zmn5uVgGMyPWZ3cbs/s16luHyWWX5n62XhpvRhE2/DdvIzJ8KmwvmIF8jFQBQg==
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 SA1PR15MB4740.namprd15.prod.outlook.com (2603:10b6:806:19f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Thu, 9 Feb 2023 19:31:05 +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; Thu, 9 Feb 2023 19:31:04 +0000
From: Roberto Peon <fenix@meta.com>
To: Bernard Aboba <bernard.aboba@gmail.com>, Roberto Peon <fenix=40meta.com@dmarc.ietf.org>
CC: "Ali C. Begen" <ali.begen=40networked.media@dmarc.ietf.org>, Luke Curley <kixelated@gmail.com>, MOQ Mailing List <moq@ietf.org>, Victor Vasiliev <vasilvv@google.com>
Thread-Topic: [Moq] Exploring HTTP/3
Thread-Index: AQHZO+vcI1VCDyRJ9EWkibT6/EWZzK7FsL2AgAAAc0+AACGDAIAADq7OgAAD5ACAAOSXvIAAIm8AgAAU/8U=
Date: Thu, 09 Feb 2023 19:31:04 +0000
Message-ID: <MW5PR15MB51450D69A97C8F62A895F066D4D99@MW5PR15MB5145.namprd15.prod.outlook.com>
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CAAZdMae+WVxYZbKPdWHqApPVX3F5wQ2KHUS03VdFekaCvQiyiA@mail.gmail.com> <MW5PR15MB5145F86C3D9C90438A733218D4D89@MW5PR15MB5145.namprd15.prod.outlook.com> <CAA4MczugjobBo9Xa-E1EeZd+9z3jgWz2K-ADrTj8phSRChqepw@mail.gmail.com> <MW5PR15MB51450A8BD28C0B6B08B82F6CD4D99@MW5PR15MB5145.namprd15.prod.outlook.com> <CAA4McztWnbCxn8Xr5Ep+pbB2N17Ea9ZRVt77APu7isFMGK36=g@mail.gmail.com> <MW5PR15MB514583AD51F7CB970480C0B9D4D99@MW5PR15MB5145.namprd15.prod.outlook.com> <CAOW+2dsEAuyjc65HbJNRJ5W9y90eTfEEBcz+RiHs1GT4yw9prA@mail.gmail.com>
In-Reply-To: <CAOW+2dsEAuyjc65HbJNRJ5W9y90eTfEEBcz+RiHs1GT4yw9prA@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_|SA1PR15MB4740:EE_
x-ms-office365-filtering-correlation-id: cdba73c6-f3a9-4911-0236-08db0ad42f04
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: 4SN4VHB5jtPQAfw5dX5dhHJ6j7XkUhgfJL00/LfLd2umlWeqbTxXvbA5VHXIjYmZK6Y2Z9yywT2dMI+kuOODHxKIA0VnCHKEO9ejvsbsh39XEflF1QvEJCeyF5TGLc7JVSGLCJFxNhSXfolH+PU5w0lw76Uf7LFvprMmh6dTmLSXjSGlXR1bCEtSmEMMcKsUlAh1DHuqH/1tEPdqRRHK6CFXjIk2eNIXfaKqwGk3Z+EPeMU7aE3YR7eTJLTOgoRTCU+m6ee9gYPPvNg7j9rHb52mnszJgHZgn9uvYEPZ5fq1nAOPd6dxiBp/gFdRU3r8krvz7wz9XIjMVXDDnYAfG58SsIwaHFHQacqTMuWu/ZL3NzSNGpvWgf8ZNXg0kQ/r3BWp8DEAvg4N0Am2Yoh66uTfWEPoby8+oSJEPsMF9UA5f6INRlljRozl39iCa+/7EXBYXDc7+tN/ea+tHJn1G7OXDDzS8Z1xBz+ficzoymLgUFzolGO/IgBYut0prfxHVBe5foqAmVox8WVfrcfv/DciPKwb+7chIq6hzinCQpYJonfuEu4o6RJgRe70lt+twaxLnHus0JCjIrX7z6/ZIU/LqdQ4448uWCBLSlD6GXBv/luCSinYryQvsyf/ROWcnMue4VrpDuY8qPU/zGHm8NF/eP2XhCjdytEx5Pusy1kwjjaMolsdpkl4KirZukbC2+Pn2jTVQfaZJo/8Iibf14KcR07KYhwxZH1jaK3lJcw=
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)(366004)(39860400002)(376002)(396003)(346002)(136003)(451199018)(2906002)(66556008)(4326008)(66446008)(66476007)(76116006)(64756008)(86362001)(55016003)(478600001)(71200400001)(186003)(54906003)(110136005)(166002)(7696005)(316002)(33656002)(122000001)(38100700002)(9686003)(26005)(38070700005)(53546011)(966005)(66946007)(6506007)(8676002)(8936002)(83380400001)(5660300002)(52536014)(41300700001)(30864003); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: Ss3+8bwwLorgBfsaChkXlu60lg+7R4lbdpUSIRt1bWvKWeayDpxR4XebkO72yAJYVcgfGhKdp2Hnhy5AsFnS2e+ev3bqrZcLEiKugsSGXtqnKspaz2R567ZiKMcd8xDRuTLjGyELHF/9mfzlywqy9Va/jdkpIp5PclVrteGM7ru2Vo0n5rbOet6GSWrupYfBEtJD2d0K5Zd3VzZla4P8vAVJO0BAeMFZkBIiG4rGEzDX3pB1JrG18hRysG2JpDHIgdbHTYVC46EetwH3npIwdIRp4qb0l+JBkYpG630+pidULjqtEOhPwR9K1SWVaIrJ9IEnrBn1ZaN+jMuSKxHGe4MREUw8x/YfRYE31Ds72msyW09E05CmXCgJNEm0x6zGctQZ+D7VnXztVRgM1LuHvPK+byFrcGNFXGuGeMsYJuRgxK6reW9bQhSe7ckmgcTIPZtdAD2KWzPSThCWNPyubGNk73Ns2J9tLNftb2UMSIL5Dro4yTfPLmEBbFNxm/3UukahIMn1CFQOaupYUPWNEl4CXnxNhaJv2O17fEQLMape89Yd7eOY4AnUTmY48Jzp5EFbKoaLcxo6SFkqxEVSL+asNyDQyhHOLzObSAsAHhyCgTFmFPhf2kp84zOI6rsDu29m4R3C6xV0tktJFfnH8iHMn4/l5karq+XFCpk02kRFHvHXzLsuYrQMBfuq9Q55ShIS7tnosdh7FwYUQZC+ANMekp61/OnZ+a1IzsNNH9tp/ETlPMvMkguDWyCZoxLe+GHAClhnal32tAAd43+AQl2hsHYD0ru0lYotHJ7uRn5YWu4NG4Bz4kUHMDLInM7EIKAEgKmRzf5P1gUdNWWMaHEbK1wD6Jo/fWvJDvjmo2w4oh4KZSdhHyzHrU46/gSr0BAFlW6kOVSFpSHraJ8QmWpYq2I9SmZiUfrkDihC97bW38bL1b6Q3lksh+NMzwinmDSfkIQ8ovhTM4OSHCvc6aA2WMwF/bqlsrEaCHz9F8MsdkoecDkRaU9UOMwEk8JxX7iOPnLM75ANjYfXBGmHiS/wZjzRz2UXiPElA6vNkFGJ96ZDMVf530WzSTEck8aJN4IrfcZKjyjnziz4OwR3XuHwxZWriTyokvOfjbmU31NeXTg4dPtmnjx20yvAdrAZQUcOfC9Dxn2OKad7DvLbL1OjGHR0bK1U6tHnGKrEk5Wv/aNGSV6ukQrNFEeA17XbRLvvFSTVtwF/a/TxOj2ZA/ljOX3qNz8pwheUCsZVu+Aqz6giuELs0ZUmED6umKTWTevbWvx7GfvYsODe5zMiaTUhdsigWpMs58HeyLHTcjDif70x+qKMD6NBCu9j4YQ1raCWUYFQYeTDfWf9+XV2mk1qvWVG9N8PsrhwhSp1X9wJdWVcfxkQvVG12AqG0l1sqhYDphcAKQHIzM6odfbyKyfv4ZkzogsvD0EOLXX3fLwaNKoTbIxx7JNs9c2cxxWoCo3xzD8f1aTkZ5PZl2ordvNTdwXTqWU0p28O/+ZoDMPhk2Zq8RZYmrQsHsHEE9f4z0OL6hq8TyB09zE/sCugDfFmVh9MrcTN9JPiQ6LcU4pWcbsZ8Bzxsmju9+vNLEC9
Content-Type: multipart/alternative; boundary="_000_MW5PR15MB51450D69A97C8F62A895F066D4D99MW5PR15MB5145namp_"
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: cdba73c6-f3a9-4911-0236-08db0ad42f04
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 19:31:04.0724 (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: keRBwWr0If6lIgClcc9vJUJq1RsEFQJigV08963ndc8NjTRvkCPWc7m7b2hFDq3V
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR15MB4740
X-Proofpoint-GUID: HcqToRmWLRfyOprR0U4iCcdTDCJYzW-6
X-Proofpoint-ORIG-GUID: HcqToRmWLRfyOprR0U4iCcdTDCJYzW-6
X-Proofpoint-UnRewURL: 8 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.170.22 definitions=2023-02-09_15,2023-02-09_03,2023-02-09_01
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/FinXFxOb5H4zx0kug4kLKrAikd8>
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 19:31:51 -0000
It requires only that multiple streams from a client->relay (or other endpoint) can be reliably on the same connection, and the rest is up to the relay/proxy/endpoint to determine if it wants to do w.r.t. sharing of a stream or not.
There are certainly usecases where sharing would not make sense, and usecases where it does.
In both cases, having the fastpath as described would provide for cheap, low latency and reduce HoL blocking otherwise inherent in going down a (slow) path that requires reconstruction (i.e. HoL blocks on any loss).
-=R
From: Moq <moq-bounces@ietf.org> on behalf of Bernard Aboba <bernard.aboba@gmail.com>
Date: Thursday, February 9, 2023 at 10:12 AM
To: Roberto Peon <fenix=40meta.com@dmarc.ietf.org>
Cc: Ali C. Begen <ali.begen=40networked.media@dmarc.ietf.org>, Luke Curley <kixelated@gmail.com>, MOQ Mailing List <moq@ietf.org>, Victor Vasiliev <vasilvv@google.com>
Subject: Re: [Moq] Exploring HTTP/3
This forwarding scheme makes assumptions that should be made explicit. For example: can a connection carry multiple streams with different subscribers? On Thu, Feb 9, 2023 at 10: 01 Roberto Peon <fenix=40meta. com@ dmarc. ietf. org> wrote:
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
ZjQcmQRYFpfptBannerEnd
This forwarding scheme makes assumptions that should be made explicit. For example: can a connection carry multiple streams with different subscribers?
On Thu, Feb 9, 2023 at 10:01 Roberto Peon <fenix=40meta.com@dmarc.ietf.org<mailto:40meta.com@dmarc.ietf.org>> wrote:
I believe relaying could/should be done down at the QUIC processing layer, instead of requiring it to be done at L7.
I’d hope this to be true of moq, regardless of using HTTP or not, to be clear.
Assuming we use the higher-level protocol I suggested below, relays would/could then look like this python pseudocode, with O(1) memory and time, assuming the couple of lookups are O(1), and log(n) if not:
while True:
quic_packet, addr = sock.recvfrom(port)
cid = quic.getCID(quic_packet)
decrypted_quic_packet = quic.decrypt(cid, data)
did_fast_path = False
try:
streams_in_packet = quic.getStreams(decrypted_quic_packet)
if len(streams_in_packet) == 1: # generally one when doing media.
try:
subs = subscribers[cid]
decrypted_packet_copy = decrypted_quic_packet
for sub_cid, sub_sid in subs:
if quic.allowedToSend(sub_cid, sub_sid) and h3.noHeadersFrame(sub_cid,sub_sid,decrypted_quic_packet):
quic.rewriteCid(decrypted_quic_packet_copy, sub_cid)
quic.rewriteSid(decrypted_quic_packet_copy, sub_sid)
quic.encryptAndSend(sub_cid, sub_sid, decrypted_quic_packet_copy)
didFastPath = True
except KeyError:
pass
except ErrorDecodingPacket:
pass
quic.slowPathProcessing(decrypted_quic_packet, didFastPath) # do HTTP3 L7 processing, normal quic stuff.
HTTP3 things could use this fast-path so long as the mapping of entity->stream was mostly static during a connection.
-=R
From: Ali C. Begen <ali.begen=40networked.media@dmarc.ietf.org<mailto:40networked.media@dmarc.ietf.org>>
Date: Wednesday, February 8, 2023 at 6:31 PM
To: Roberto Peon <fenix@meta.com<mailto:fenix@meta.com>>
Cc: Luke Curley <kixelated@gmail.com<mailto:kixelated@gmail.com>>, MOQ Mailing List <moq@ietf.org<mailto:moq@ietf.org>>, Victor Vasiliev <vasilvv@google.com<mailto:vasilvv@google.com>>
Subject: Re: [Moq] Exploring HTTP/3
On Wed, Feb 8, 2023 at 18: 26 Roberto Peon <fenix=40meta. com@ dmarc. ietf. org> wrote: Pedantry is not always unappreciated—I got a smile from it. :) True—caching impacts latency as 2nd order thing (fewer packets going through places which
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
ZjQcmQRYFpfptBannerEnd
On Wed, Feb 8, 2023 at 18:26 Roberto Peon <fenix=40meta.com@dmarc.ietf.org<mailto:40meta.com@dmarc.ietf.org>> wrote:
Pedantry is not always unappreciated—I got a smile from it.
:)
True—caching impacts latency as 2nd order thing (fewer packets going through places which could potentially be bottlenecks, and reduces path RTT, which allows lower jitter for same channel utilization (or higher utilization for same jitter)).
The 1st order latency impacts come from being able to forward things cheaply and without requiring in-order reassembly everywhere.
Thats where chunked transfer encoding / delivery works well. It can be made better though if CMAF chunking and HTTP chunking worked better together. Maybe thats a topic we could tackle. They are independent from each other and from what i can see every implementation is different.
-=R
From: Ali C. Begen <ali.begen=40networked.media@dmarc.ietf.org<mailto:40networked.media@dmarc.ietf.org>>
Date: Wednesday, February 8, 2023 at 5:25 PM
To: Roberto Peon <fenix@meta.com<mailto:fenix@meta.com>>
Cc: Luke Curley <kixelated@gmail.com<mailto:kixelated@gmail.com>>, MOQ Mailing List <moq@ietf.org<mailto:moq@ietf.org>>, Victor Vasiliev <vasilvv@google.com<mailto:vasilvv@google.com>>
Subject: Re: [Moq] Exploring HTTP/3
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,
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
ZjQcmQRYFpfptBannerEnd
On Wed, Feb 8, 2023 at 15:47 Roberto Peon <fenix=40meta.com@dmarc.ietf.org<mailto: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<mailto:moq-bounces@ietf.org>> on behalf of Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
Date: Wednesday, February 8, 2023 at 3:23 PM
To: Luke Curley <kixelated@gmail.com<mailto:kixelated@gmail.com>>
Cc: MOQ Mailing List <moq@ietf.org<mailto: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>
--
Moq mailing list
Moq@ietf.org<mailto:Moq@ietf.org>
https://www.ietf.org/mailman/listinfo/moq<https://www.ietf.org/mailman/listinfo/moq>
--
-acbegen
Using iThumbs
--
-acbegen
Using iThumbs
--
Moq mailing list
Moq@ietf.org<mailto:Moq@ietf.org>
https://www.ietf.org/mailman/listinfo/moq<https://www.ietf.org/mailman/listinfo/moq>
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Victor Vasiliev
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Ali C. Begen
- Re: [Moq] Exploring HTTP/3 Mark Nottingham
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Bernard Aboba
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Bernard Aboba
- Re: [Moq] Exploring HTTP/3 Spencer Dawkins at IETF
- Re: [Moq] Exploring HTTP/3 Lucas Pardue
- Re: [Moq] Exploring HTTP/3 Charles 'Buck' Krasic
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Roberto Peon
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Luke Curley
- Re: [Moq] Exploring HTTP/3 Christian Huitema
- Re: [Moq] Exploring HTTP/3 Victor Vasiliev
- Re: [Moq] Exploring HTTP/3 Suhas Nandakumar