IETF MOQ WG: Knowing the start of a Subgroup
Mo Zanaty (mzanaty) posted to the MOQ working group mailing list on April 30, 2026. Hi Ian, For 3. the minor wrinkle of a same-priority tie break between a subgroup and datagram in the same group of a track, we can simp…
Message Snapshot
- List:
moq@ietf.org - Thread subject: Knowing the start of a Subgroup
- Message subject: [Moq] Re: Knowing the start of a Subgroup
- Author: Mo Zanaty (mzanaty)
- Published: 2026-04-30T22:06:09.000Z
- Source tag:
ietf-mailing-list - Message URL: Open in IETF Mail Archive
Summary
Mo Zanaty (mzanaty) posted to the MOQ working group mailing list on April 30, 2026. Hi Ian, For 3. the minor wrinkle of a same-priority tie break between a subgroup and datagram in the same group of a track, we can simp…
Why It Matters
This message came from the public MOQ working group archive and captures active discussion, meeting coordination, or implementation feedback around Media over QUIC.
Message Excerpt
Hi Ian, For 3. the minor wrinkle of a same-priority tie break between a subgroup and datagram in the same group of a track, we can simply specify subgroup wins. Why? If a track uses both subgroups and datagrams with the same priority in the same group, it is reasonable to assume the datagrams are disposable and theref…
Plain-Text Body
Hi Ian,
For 3. the minor wrinkle of a same-priority tie break between a subgroup and datagram in the same group of a track, we can simply specify subgroup wins. Why? If a track uses both subgroups and datagrams with the same priority in the same group, it is reasonable to assume the datagrams are disposable and therefore lower priority than reliable subgroups.
For the main issue, subgroups were added for video layers as the primary use case. The subgroup ID has specific semantics in this case as the layer ID. When we added subgroups, LOC removed its separate layer IDs and used subgroup ID directly.
To understand why layer / subgroup ID = object ID is a bad constraint, see the first example in the AV1 spec. https://aomediacodec.github.io/av1-rtp-spec/v1.0.0.html#a1021
This shows temporal layers without spatial layers, the dominant encoding of most video today, not a rare or future thing, hence why it's first. (Even "linear" video actually has this structure.)
0 1 2 3 4 5 <- Frame number = object ID 0 2 1 2 0 2 <- Layer number = subgroup ID
Notice how this violates the proposed constraint, which would misnumber layer 2 as 1 and 1 as 2. This would require explicit priorities as it breaks the default priorities of subgroups. And it's a footgun for devs to screw up this inversion of some (not all!) specific layer / subgroup IDs. If our WG and editors already fell into this pit, there is no chance the average dev can escape it.
For the solution, I favor explicit mandatory indicators for the first object in a subgroup and group (maybe even track as Cullen suggested, although I'm unsure how that would be used).
Thanks, Mo
From: Ian Swett ianswett=40google.com@dmarc.ietf.org
Thanks for clarifying. Using subgroup IDs in the catalog is an interesting usecase I hadn't considered. I'm not sure this would cause practical problems, but I need more time to think about it.
Regarding consistency, today we indicate the end of the Subgroup with a stream FIN, not a bitflag on the Object. So I actually think using Subgroup ID==Object ID is more consistent, but that's my opinion.
When we originally created Subgroups, we needed an ID to stitch them together in case they were split apart. I'm not sure anyone intended this be exposed to the application, but it sounds like you want to? QUIC doesn't expose Stream IDs as part of its API, which was an intentional choice and mostly a good one.
If we go with the bitflag approach (#1618), are people ok with requiring it be set on the first Object in the Subgroup? Requiring it gives the feature a lot more value IMO.
Also, do people want to resolve the undefined prioritization between Subgroups and datagrams in some way? "3. If two objects in response to the same request have the same subscriber and publisher priority and belong to the same group of the same track, the one with the lowest Subgroup ID (for objects with forwarding preference Subgroup), or **the lowes…