[Moq] Re: Thoughts on SWITCH

Gwendal Simon <gsimon@synamedia.com> Wed, 27 May 2026 10:58 UTC

Return-Path: <gsimon@synamedia.com>
X-Original-To: moq@mail2.ietf.org
Delivered-To: moq@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 83AC5F5DBBFC for <moq@mail2.ietf.org>; Wed, 27 May 2026 03:58:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1779879506; bh=OYS+6Cc4OxpIRoYOcxBDoiivZSB2W5zPvHwjbIvYFDo=; h=From:To:Subject:Date:References:In-Reply-To; b=VIGS5LwnpPpWjNB8VOkcexWmnQjVUBBUsU3qQbkPMrtemvekFRsiOt2ZKUNj1+BAV cVUec9T/JnZ6u/uleo4i/+tmpLqSA/mKkIf5/uT+OnqrngIHtrsuVT5Tw3fWoWqnDB 94ait8DfgPio5/kfmZTm/RitbImfc6N5raz6iIrI=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 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_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=synamedia.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l4uOCFocWZHG for <moq@mail2.ietf.org>; Wed, 27 May 2026 03:58:25 -0700 (PDT)
Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11010024.outbound.protection.outlook.com [52.101.195.24]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id B9C27F5DBBF5 for <moq@ietf.org>; Wed, 27 May 2026 03:58:25 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vcUwVd/h+D4isUftNylb0C/jKNqKxCpgFmwR1AOBOy3Y6QQCJSZZ6XKH+KeFNxwRuXMJb865h69Ds3mSvKuhDrxZHqqFsQ88UOv7a79a4wWKf0YN42lKQZUBWNK4FJN52er1ULG8RaZr7hrO9wdyvLdJSWjZP4GmdR51wjpEpk6yGg0h9HyTJewklCrO2z0yUy6Tx1Asp07+yRdT+b8guSS+f+L9G8x85OsqdiC9T47Xt8Bte4TfZIxm1imd1mGYYEFCzBBml7McsDt+oeTDQpc/+86QCw+V/6Jm9sby7wyre/FC9Iu/rAC7jmf2RDBl0x6/8dt6YcpIr107UROYvw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=OYS+6Cc4OxpIRoYOcxBDoiivZSB2W5zPvHwjbIvYFDo=; b=IQDbHk6SZ3WhpuR731JNfcKHzlxd7yDDzmGeNG1HDjvsQpOyDi42LAMHPXOXBE55y0+z+HTgFETn4GBczm+xUfoljvBHsOk1eKQugzhKTlRi6um4kbHkxlPDHWw8umSstE3eAw274eYZwvIajAngAUrdxkAjCvZcn+LzN8iuv/nBuv5+Dg86Wxk1shatLH0rVGECxizqPkYCYM0zFgQT9NfeiVkT6BqiC8K4xIyWWJBHuQrRSFjPIOyxNS611tka2mYY6X4ZwUj0epC4dgnnjN08Dw+xHZET1nXjft2+vJ0gMguUJSzp2ss1mPe7rfatpE8Gebb17F7Uoc8fxMXFkg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=synamedia.com; dmarc=pass action=none header.from=synamedia.com; dkim=pass header.d=synamedia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=synamedia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OYS+6Cc4OxpIRoYOcxBDoiivZSB2W5zPvHwjbIvYFDo=; b=caieFshT38/JZrF0FLo88ulEj7gRuq1++IwbdGuZmiZMFlHpSbOgZFZt3MBWkGiSX6DZpztThkPaINAkDGdJpE1xbXHHyEjiwV/vDh/1NUMI2yaxMdAXYHc3bZOMmvxRG1a3xA5kAYQF5TgpGQFgIQToaiugTiqgZ/f3Vap9TYYzbnoQdwdBNYoRdvekY325hFPOy7zRtc/K+3Ombs8c8t01CB6GoLu4yBlyNqTQi7+7c8TpGHo/DnJxqIWHuoQ9hj/mdMBadzNa2dLyywF0WT64R3mz4y0ytNblk9mtN4RPZeUz7GhSSjQAjfDNomof8hfyAVSTFv8eMkouH2Do5w==
Received: from LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:1c4::14) by LO0P265MB2601.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 10:58:17 +0000
Received: from LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM ([fe80::58d:ac5d:b176:3a66]) by LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM ([fe80::58d:ac5d:b176:3a66%4]) with mapi id 15.21.0071.011; Wed, 27 May 2026 10:58:17 +0000
From: Gwendal Simon <gsimon@synamedia.com>
To: Martin Duke <martin.h.duke@gmail.com>, MOQ Mailing List <moq@ietf.org>
Thread-Topic: [Moq] Re: Thoughts on SWITCH
Thread-Index: AQHc7TrNM0gkaRExFkGhJopuP2jpGbYhsc2n
Date: Wed, 27 May 2026 10:58:16 +0000
Message-ID: <LO2P265MB38811F59CA8B078977D1AD23C5082@LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM>
References: <CAM4esxSKw5YWF0qD4dqTqFYm68LokuNXwe2HA09gFeF_nOG3Xw@mail.gmail.com> <CAM4esxR2XPYTjFu7mOub-BHAbHAcVMWy7WHWzhqAG08kA07mww@mail.gmail.com>
In-Reply-To: <CAM4esxR2XPYTjFu7mOub-BHAbHAcVMWy7WHWzhqAG08kA07mww@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=synamedia.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LO2P265MB3881:EE_|LO0P265MB2601:EE_
x-ms-office365-filtering-correlation-id: 0f1d96cd-8475-4e2d-bfcf-08debbdedb49
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|4022899009|10070799003|1800799024|56012099006|11063799006|4143699003|6133799003|18002099003|22082099003|3023799007|38070700021|8096899003;
x-microsoft-antispam-message-info: 6IO1ne5ZtWv617UVQlKreNEX+AYMlyaOCxW6h80jEbDOA+KrFPVwvXVG/SNZc6fGv0mQPZMYtVe2HpQZPvFeKD3TydJ6xMDU4S8gJ25dk/0JSMWMDS3bwDVddtRbhYGdRjRwTXquSJJ5iQaiSiHQKkyYiO7+Xsp0ZUhcouZHtWo/DbcaIffcGaCqdjuu9ixQ/d4plcRQU4ff9/ZdWY1KMc6DIZOCN0vRlPwvBuvJhi3VllX7t/jeAvz4iPFTdvbBg/c9mBeXvrivaVkHtajTKBccCs/sut6eS7zsrDHrmyr7adB1Rw9WxkNmSdJB3sjep+Zi9HPGwcEQSg4/vEAwJY+54RPhKBtqT8zBA3cS7n1f9TQR7q1jFIzSBwkm0kwke6VQm3JPoYZYGgBD3BV0pWIkkIMnu4z2znYye+ymjXZ6t3hytmZl+MHXNer8THWk+9SBNyXUFbUcT7efVpza2aF7faBjfVeKvCxXauPiEwt0p3vbDAmu9i4tAT8dwdyCnytVDpN90xTJfPJOn2XRC0+DQvEbKf753Vm3JK1H/5lQzb8CGVcn5w7pTNe/ye/4g/6qu77cx80Cvnf4cYbxSc2E3vRmQ8o9pTZxIaogA/vgP/OV53mxRyUsglOcRHY7FFqhqwh6Op0N55PmrxqMmSg4qwzpkolCJL+y3jNOapUFn8kxPT9S2zJ4x4RWxedX5MzSbPLPdY3kzJ9Z22NVBYCH4BsaCgTpiARJo0u+9ScdHulbcLIE7ZQ4fvPkabej
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(4022899009)(10070799003)(1800799024)(56012099006)(11063799006)(4143699003)(6133799003)(18002099003)(22082099003)(3023799007)(38070700021)(8096899003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: tUbvYFS4WiIrsuG6PyZqujpHWFWKbZKxNlaq/QT8AWSq/msZVIqcGbKC12U6JSMqnByOlmU6V82x8iyT0sdGmBEh6rupOumpPPQphGdu+ERvr3quOADJWwo2OJGEZNYGA22i8NZNzjElthd2QefMyClUFOFwBPlx/SmnmXbhi9pGDCKOn66jO/2VNwPZB2p6GZvoMd0gxYNrfwgzJgCVDbD/as+RjqkRgkFVj13Qlrauh+YqS8BzErKn0841rCMoMy7uOAdsPCbkGq0pglhv9D4PmiCHSkoTQQQuFq1ZlofCqrh3qlXRoG6n342lRXy0PuZ+GkIin/e2JTSpdp7D5TJ5mjaCm/cvgwHhvoQcDJJkY462sOPnWF/1uZ5I6h7iaijvaBL+seo5y/UjKjB9FGb2UEOVOt5RN+SEfh638e1Jq+jSJEJfkA/N5owitgnWhQbBz+6GnQWYvAioHyNSynnFt8uvqm6p1KTraCh7fKee/Tq3gWAGapSULQ27yXk1yUlC4niLKZuW7NUwdrp/gF8vcj0S3XWUbnNd4MhL4TKnpGkWlFby7HkZqvbpIFYNU4ynwtk81VdfoTWTWyfyXKVFiD2C7Aa5CPkciQV5HSkSjHE3Lx4deq/RTHdNV9yM7+2/cWbpZqQ/QlAUhPFbHa9/tnq8w8YgSvH+Yemn/UcELVPl9wiaatyHCrtFBhRMy3nrnQxcJuEcNOWvXOCKPo2ZPPe/hx6pSUVLJ0lDfpB6LhlySoowak9q5iBEXORQy+Mpm+dxPsKonpwXFB50Aqg9ymDQkQ68vjIEzbZ74t8TnbOuvlY5Fdj5U04Zf0L+I1wtcwIN1PR5+j5V248Tw6krUhsS+l9MshIhdVHzkOacoHyH3lBOD+qq11R4sXs4CLhHRRFcgok/E/sFztIaZf1tAw8bcznbwQkyuXyhmrRWoxKuOy20htVcoMaTfptOiAfOVxamOTNQp2rOlajNAI72QQ5u3bCTVjsxKQw3gFy5+uFx3pFM/Qsl825lORF2XztgO5IqQwKCLKi6OgRnwrkbL5Whd+9ncVeLTZour7L64nkQdHh8ocFZNxMGrFXvoyVssK5jb5ZUdOHYu9wLyaagmXZg6ty0mwBEaKG+Z7F02iuiJeGfW3kuH4n8I3Js1n5uvqTSzHZxC7Blbkdks0uDdN+tTbFRW6l/pGIEoA+CVadA2K5XvyXNZJ2p3a3u3/a10yVmOexx15pTqHk71QFyF39a1yOH1WshFuQmpF6uXePY3K8D3y6QQaRPtu56K6PPbEYWKBkaUFQF5jaDm9LuQuA4FHfwSlY+Kdu1DRvtg9DTGcGCkjA/0gsTVwAExrPveTCu8wGP/lxngSYoBoRki16FjLCZb5nDzUH8BO0zvmSxUgWNJs7rwaLzcZSz8ALsbaVhq9mPS4Ugy9TA0Ox9f/3pB9wjQByAEYljcXpYV2AblY2AZL7D3DR3IN0+W06v0ayyUi45OpwBliFMADw8PIZ0G/AFzg4hTs9hq1YRcqoneDyShtUuqUFMP7YdfpfzI/5lHTxSa/eaDmvBqsnvuVOAzq9lpePr3b3z9fxH61SG26nDXwofQYP2ZTiMmwJV5R2WxbnNSHl6We8m7TrsvubJccZggNEE3sBVu8GDKD4vtyCTbEC0L9/180dFzzlMOJuKNe1u7sGbqdExCHXoy/PnJfTNCUK1hVAageI0vxcFpxFT2/nBnI9024wkUoLM9CYZguSU+y/XA2FnKG/DnkLyz6SKJlp2Gzz4/VeeVtB+PNwICs6xZ0nRxixn
Content-Type: multipart/alternative; boundary="_000_LO2P265MB38811F59CA8B078977D1AD23C5082LO2P265MB3881GBRP_"
MIME-Version: 1.0
X-OriginatorOrg: synamedia.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: LO2P265MB3881.GBRP265.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 0f1d96cd-8475-4e2d-bfcf-08debbdedb49
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 10:58:16.8890 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: ecdd899a-33be-4c33-91e4-1f1144fc2f56
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: qqTLFRIHTxuiLMaZMcq3k7YzxcHh9cOjOotJmDmJbuAzcA1cHgVDnCKBfPQrZ51vOw1bTiQIzpWo6Qe6xl29WA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P265MB2601
Message-ID-Hash: VB45PNNUJUHWCGOYDMMQNCG4366Y2N3L
X-Message-ID-Hash: VB45PNNUJUHWCGOYDMMQNCG4366Y2N3L
X-MailFrom: gsimon@synamedia.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Moq] Re: Thoughts on SWITCH
List-Id: Media over QUIC <moq.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/bKiCDYOz10Be0f8nRkR4PNA71f8>
List-Archive: <https://mailarchive.ietf.org/arch/browse/moq>
List-Help: <mailto:moq-request@ietf.org?subject=help>
List-Owner: <mailto:moq-owner@ietf.org>
List-Post: <mailto:moq@ietf.org>
List-Subscribe: <mailto:moq-join@ietf.org>
List-Unsubscribe: <mailto:moq-leave@ietf.org>

Hi Martin,

Thank you for the tradeoff analysis. I want to address a few points where the picture is incomplete.

## It is 4 coordinated messages, not 3

Your down-switch sequence is REQUEST_UPDATE + SUBSCRIBE + Absolute Joining FETCH.

1/ Step 1 terminates the old track before the new one is confirmed. It is a break-before-make approach. If the FETCH fails or the new track is unavailable, the old subscription is already gone. The subscriber has no fallback. In live streaming, this produces an unacceptable hard freeze.

2/ Priority management. Because REWIND was not adopted and Joining FETCH priority management is still an open issue, there is no relay-side mechanism to sequence catch-up before live delivery. The subscriber must handle it explicitly, so it is actually 4 messages:
1. REQUEST_UPDATE — end old track at Group 33
2. SUBSCRIBE — new track, explicitly low priority, to prevent live subgroup streams from competing with catch-up delivery before it has converged
3. Absolute Joining FETCH — high priority, delivers Objects [34, Live Edge)
4. REQUEST_UPDATE — reset new track priority to normal after FETCH stream closes

3/ Step 4 is asynchronous. It does not follow steps 1–3 in a burst. It arrives only after the subscriber detects the FETCH stream's FIN, potentially seconds later, depending on the lag and network conditions. The subscriber must maintain state across the lifetime of the FETCH stream, monitor its closure, and issue a corrective message at the right moment. This is not a simple four messages operation; it is implementing a state machine.

4/ This comparison is also against an unstable baseline. The WG has already determined the current Joining FETCH text is not shippable as-is. SWITCH is being compared to a placeholder, not a stable alternative.

## Up-switch: picking a future group requires relay-side information

Your second message adds a valid up-switch option: pick a future Group N+k and send the quartet for that group, avoiding duplicates at the cost of a few groups at sub-optimal quality. The problem is that the subscriber does not know which N+k is correct. G_switch selection is exactly this computation done relay-side: the smallest Group ≥ Minimum Switching Group ID where both tracks are fully available up to the live edge.

## SWITCH is additive

SWITCH does not replace REQUEST_UPDATE + SUBSCRIBE + Joining FETCH. Anyone who prefers that approach, or who switches at the live edge with SUBSCRIBE + UNSUBSCRIBE, can continue to do so. SWITCH does not touch that path. Those who are satisfied with the status quo for their own use cases should not object unless SWITCH, as an addition to the protocol, causes them concrete harm. A preference for a different design is not that harm.

OTT Live TV use-case is not covered by the existing approach. Subscribers in that context routinely operate 2–5 groups behind the live edge. At that lag, switching based on 4-message stateful operation does not work cleanly. Four independent teams have already implemented (or explored) SWITCH: Zafer Gurel (MoqTails), Tobje (MoqLivemock), Nokia, and ourselves (moqx). That is not the profile of a mechanism without real use.

Gwendal

________________________________
From: Martin Duke <martin.h.duke@gmail.com>
Sent: Tuesday, May 26, 2026 8:08 PM
To: MOQ Mailing List <moq@ietf.org>
Subject: [Moq] Re: Thoughts on SWITCH

Upon further reflection:

In the upswitch case, make-before-break is one option; the other is to pick some future group and send the REQUEST_UPDATE/SUBSCRIBE/Absolute Joining FETCH trio for that future group. The consequences would be a couple of groups at less-than-possible bandwidth but would avoid any duplicates.

On Tue, May 26, 2026 at 10:33 AM Martin Duke <martin.h.duke@gmail.com<mailto:martin.h.duke@gmail.com>> wrote:
We ended up getting bogged down in clarifying questions and recapitulation of the basics, and didn't have time for meaningful discussion, but here's my view of the design tradeoffs here.

Say the subscriber is currently showing Group 33 and would like to shift BW down. Ideally it would start the other track at Group 34. If you think it should be some other number that's not germane to the discussion.

In the draft today, you would send three messages:
REQUEST_UPDATE old track, to set end_group = 33
SUBSCRIBE to new track, LatestObject
Absolute Joining FETCH, start_group 34.

If the relay has the new track in cache, it will open a FETCH stream from 34 to wherever the live edge is. The old track ends when it should.

This is exactly what SWITCH would do. The only difference is that SWITCH is a unitary operation, so if there's weirdness with priorities, packet loss, etc, it works more seamlessly. The request dependency design is in flux right now, so it's a little hard to say how powerful this unitary property is.

If the relay does not have the new track in cache, then SWITCH will continue to deliver the high BW track until the upstream SUBSCRIBE starts delivering groups for the low track.

This has different properties from the Absolute Joining FETCH, which will terminate the old track immediately, and send a FETCH upstream to get group 34. There will be some latency in getting low-BW 34, but on the other hand we won't be jamming up the last hop with an oversized, high-BW 34.

It seems clear to me that this is the tradeoff, but it is not at all clear to me which is better in terms of actual subscriber requirements.

***

In the up-switch, the properties are different. I think that the optimal strategy in the current MOQT draft is to send SUBSCRIBE+Absolute Joining FETCH, but delay closing the low BW subscription. Do make-before-break because you presumably have buffer to spare.

In this case, SWITCH avoids some duplicative data, but again, it's not clear to me that it's important due to the conditions in the use case.

***

I don't have strong opinions about the outcomes of these tradeoffs, but I believe the tradeoff analysis is correct and would like the working group to consider the SWITCH consensus call in this context.

Martin