[Moq] Re: Knowing the start of a Subgroup

Suhas Nandakumar <suhasietf@gmail.com> Thu, 30 April 2026 17:12 UTC

Return-Path: <suhasietf@gmail.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 F180FE6CB025 for <moq@mail2.ietf.org>; Thu, 30 Apr 2026 10:12:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1777569163; bh=OR3TL3SUkOipYItIbGV992Z+2+3elk3HpZKOXeQRFVw=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=lFrUs+9ESNqDmuCuzzLtb5cSm0g8N4TY2WD/T0gjdDoX4ZEDtfLXmQvutKPAZ+b/t AVB1BZRdbGMZaTa0ZZYmvwSb8k6Dt2pOXn42yr0N2CagJWLmSybQ9JY8cNF5/s0LdR VqcD7TJLPBtdMFmgDjsgqDhpIWQWeb+vNXKHbKEY=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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, FREEMAIL_FROM=0.001, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 D7tgy1vtDw4v for <moq@mail2.ietf.org>; Thu, 30 Apr 2026 10:12:43 -0700 (PDT)
Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 3F1E7E6CB010 for <moq@ietf.org>; Thu, 30 Apr 2026 10:12:43 -0700 (PDT)
Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-79ea87af213so35990097b3.0 for <moq@ietf.org>; Thu, 30 Apr 2026 10:12:43 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1777569163; cv=none; d=google.com; s=arc-20240605; b=Pkf+MEaLVqbKz9Ay878gKpx6G7kPKTWgmfYngBwr6T7Yyt5D5LS2d22OYRNcvURvkB 8Lg0vAn30Wqcg9kjFSMfj+ih4XSXz6D1Tg27bZeXSPKl8HzFRfCSIH+tuQLcoZBDivqH Y1t+u72c7h6b/TgaFdbvGzsVJrufLhzwmXu1tZV41s+jAUzhkWGbX093zaKgBWZWn8/w b+nmc4iyiJcVOHP+XaXYG52X7FdYqo0Ixf9UqBCViMeXbhiiLl+OPixGqJNifokOTUQJ Ycxei8/3Ual5+/m+/Om+NngWNjXLO+5lYtLh6RE6+vCZqSA2X/TLUCZ2gock/ErHbs/2 KUOg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=TmI2xQi+AtP43lUrZA9eq4grIuloFmsDdxQ5vee/BcE=; fh=Wj3Dxy0p/O+dVYNtdLRm1vKtU0oCMzjDArJUehIZ+6c=; b=DxaXD/Vuud0vnx5hWLIMSeBtdKLKVpUk/O5SrJCLKjdw/OkbhRG6SJM6URDlhDFPYj ja2xzunxLXS9WFXpSfGqqSq/BPVeUoHpJ3Vhzq0eyc3NSs2nK7FVftEQVy6JpTnxBmYD HybqnU8qArpJuvWI3Uyl3cpIJ5FcE5EHbcCZ/vq5OPsgnzdbOxjii2JuTM0NqjgzTww0 9lLNowem4dOHwitVq05jK1hsulIw4HzKPjsSrZqctDUFr/qHlYltjUvUOCoGIQuTMpeX FD8yvth6mdnQJz9d6/7kz6KHruxkDWOluvT8uKiFgiJDaIJh+7UBz9PIwMsah8q39aM+ 8DFw==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777569163; x=1778173963; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=TmI2xQi+AtP43lUrZA9eq4grIuloFmsDdxQ5vee/BcE=; b=OxYorm6Pf83Qk8syhdpNvSRrxeLVVMsnmh4NSsZeogFPdEtI0FV1EjimGVKbV9WPLR +OTrZcMSQe8QkHTXv8vayhKgnLc9M71Mp6y8eReoHriqlWb2FsRbgDAYLNjU9PK7x4kY 9IAMi/H1PqBMfe5bTUYnSZGjY4TMav/vvli2aUKLogqkD6qrl024vYykd0Vr3SdbbqIv 4+sbrI/Xv64PjQdZBiPSwPyUg0l0FTo7EngmFIISSB1AT6q8x5gKzyvLDnnGCbCMNa6o xYXhFkGNbPQgFIj/a+MujJE5VSnRcYucVXXpueTh+nJdQtQxtKxyDtGM/mw/Naf8ik8R zKdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777569163; x=1778173963; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=TmI2xQi+AtP43lUrZA9eq4grIuloFmsDdxQ5vee/BcE=; b=nHADe3QcZTLVMVDklBEIiMmspqt4vakrm40D1u4xrTquQ7oN+ZcDzb/0jKph37061X 92uj4D0jKxLn5AmZPO1Ta/GBRM5PHZpSfF6e2F+dItSYeIvq/POnrrET1RdgANRKaRHC 6K7+TDtTOns2CtdTI5H4LF8flWz1gLO9yWz2jdSn5uhpLOITXF7lYou0XRgFGv2PaWYq AXOCy1iDdaG+Sri+vFyIr/vUmYJMCozPMeiagWsmC8NIh9RWYErRUwH5vUaEMpHnN4hq tXUaos7/B6MnU+jR9nuf5ziHHG4DhaaJtd1/8wsdwQbEAuSFBPSKFnZjdEgdfOwub8pz GDiw==
X-Forwarded-Encrypted: i=1; AFNElJ/gbeIH4YQMD+nkcKTFuLWCim6mMl1hTe4t1WZdzTSW78XhBtsrd2K8wQjvyAfJ9aMdiUc=@ietf.org
X-Gm-Message-State: AOJu0Yxmv7p3jSACNIusYizUASUGCV64RaN+0P3hhACHVyV3bhxkxx6L kdoYaMKX6eLPu/Id/EBLnmRo/ubE8PaHPhftNmGBqhJsSPZO4RY6I4LgCBt/B9g2DC5l1EW9d2P ca7BBhv4e4EP4Marf0zfYWPXQB/2geqE=
X-Gm-Gg: AeBDieuBp8wUd1KLWClVyMEvkzGx42d6Wmjyf4U3vT8M+apiYx9xV9EkAt7Ki+mwfIO AG2/2MYGpqRskxe/XdIB+EWlP3Q5/dOy5IjDvArRoTCzQenY/B/8nhTgOQbbQ43Mmk1Nj3qS00G GBMG4bw8CsICNXkUkm8U926Gwgv9HSRqxNJZ6NCho4/CRRH0caBvOW54ZN3r9a7P0UbSsC63I86 isC6TnZCnqucx6s/uKhks/CJBV1P6QqeO4+hekdG0HI9nKra8meJzxpO3dYSdZenoHpp9YPExSE MyIxijFQL29y0Z+Vpjp5H9dximSMKDfpWZG4J2mdl/ltZK5A7I8hr+7zx9pwqbnKHTgxlmfmLQJ KjDQQzaU=
X-Received: by 2002:a05:690e:1481:b0:651:d5cb:a490 with SMTP id 956f58d0204a3-65c1b005a8bmr2157076d50.9.1777569162524; Thu, 30 Apr 2026 10:12:42 -0700 (PDT)
MIME-Version: 1.0
References: <CAKcm_gPTt1pcHEfyHQYeqGHL6NHYTb7RkZKHoaR-7ofZg=yoTg@mail.gmail.com> <2C11C671-0812-4152-9804-03C80372B164@iii.ca> <FRWPR07MB106246C776844E65C4F57FE3795352@FRWPR07MB10624.eurprd07.prod.outlook.com> <CAKcm_gORGM_mGyNkC0UQYWEwoFMWneBZDMnwgGfWt22TiJBo0A@mail.gmail.com> <CAHVo=ZmBZVJBLQFWS8HmKHOKetyrhpi40fShwhV-NFZ9L57ayg@mail.gmail.com> <CANPAELvZZb_YVXesBUkEvPY8zCzhrkm41JsjmcKZHg93WH7Zqg@mail.gmail.com>
In-Reply-To: <CANPAELvZZb_YVXesBUkEvPY8zCzhrkm41JsjmcKZHg93WH7Zqg@mail.gmail.com>
From: Suhas Nandakumar <suhasietf@gmail.com>
Date: Thu, 30 Apr 2026 10:12:31 -0700
X-Gm-Features: AVHnY4KFcjnbUDQa9ESEWIhE4OblTFeg6-6B723PrqKQ3fqrYC5wHcX5HlruGoc
Message-ID: <CAMRcRGQGe24v9KFr4nAoxX4ir=9bOMX6teL5rN1g5A9huZuN3g@mail.gmail.com>
To: Alan Frindell <afrind=40meta.com@dmarc.ietf.org>
Content-Type: multipart/alternative; boundary="0000000000007f02080650b092c0"
Message-ID-Hash: UFLVTK5VKWPWGPPLYEGG7YOUOTOVSWOI
X-Message-ID-Hash: UFLVTK5VKWPWGPPLYEGG7YOUOTOVSWOI
X-MailFrom: suhasietf@gmail.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
CC: Luke Curley <kixelated@gmail.com>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Magnus Westerlund <magnus.westerlund=40ericsson.com@dmarc.ietf.org>, Cullen Fluffy Jennings <fluffy@iii.ca>, MOQ Mailing List <moq@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Moq] Re: Knowing the start of a Subgroup
List-Id: Media over QUIC <moq.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/fDDf7ZkatVbdUb9MJk9-lgtoTwI>
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>

As I shared my inputs during the call, SubgroupId has semantic meaning,
they are part of prioritization and an essential tool for filtering. I also
agree having relays knowing the first object in a sub-group is useful and
making it explicit and not needing to muddle 2 different
semantic entities is a good idea.
It is expected  for applications using layered codec and inter stream
dependencies to have the subgroup carry the same meaning across groups,
regardless of object numbering ( which is a in different semantic scope)

+1 to make this singal explicit and mandatory and also willing to have a
config byte on the first object that identifies if it is the first object
of group, track, sub-group. This info will be useful for caches and also
for the end application to build their buffer logic.



Cheers
Suhas


On Thu, Apr 30, 2026 at 9:40 AM Alan Frindell <afrind=
40meta.com@dmarc.ietf.org> wrote:

> > The original issue is about saving a byte or two when Object ID ==
> Subgroup ID. That seems like a simple encoding flag that doesn't require
> changing the API.
>
> This compression is already possible (when the two are equal you can set a
> flag in the header, and send only one).
>
> >  what's the use-case?
>
> The utility is to support extensions like REWIND, etc.  A cache needs to
> know if it has the beginning of a subgroup in order to serve it.  There are
> some heuristics you can use to learn this sometimes but an explicit signal
> is helpful.
>
> Thanks
>
> -Alan
>
>
> On Thu, Apr 30, 2026 at 9:24 AM
>  Luke Curley <kixelated@gmail.com> wrote:
>
>> I missed the interim, what's the use-case? The original issue is about
>> saving a byte or two when Object ID == Subgroup ID. That seems like a
>> simple encoding flag that doesn't require changing the API. I would not
>> require that Subgroup
>> I missed the interim, what's the use-case?
>>
>> The original issue is about saving a byte or two when Object ID ==
>> Subgroup ID. That seems like a simple encoding flag that doesn't require
>> changing the API.
>>
>> I would not require that Subgroup ID equal the first Object ID. If you
>> use sub-groups for SVC, you *should *have a catalog entry indicating
>> that sub-group N is an enhancement layer with parameters X (even just for
>> filtering). But without tight control of the encoder, there's no way to
>> enforce that frame N is the first frame of sub-group N. You'd have to +100
>> each sub-group ID (or something) just to maintain this contract for the
>> first frame of a sub-group... and for what purpose?
>>
>> A flag indicating an object is the first within its sub-group would be
>> easy. However, that information is already implicit via FETCH or SUBSCRIBE
>> object arrival order. I'm not sure *why *we suddenly need an explicit
>> flag, but whatever; it's just a bit.
>>
>> A flag indicating an object is the last within its sub-group would be
>> very tough. Encoders don't emit this information, nor would an app know
>> ahead of time that there will be no more deltas. You only truly know that a
>> group has ended when a new group begins and a stream FIN accomplishes this
>> just fine.
>>
>> On Thu, Apr 30, 2026, 8:11 AM Ian Swett <ianswett=
>> 40google.com@dmarc.ietf.org> wrote:
>>
>>> 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 lowest Object ID** (for objects
>>> with forwarding preference   Datagram) is scheduled to be sent first.  If
>>> the two objects have   different Forwarding Preferences the order is
>>> implementation dependent."*
>>>
>>>
>>> Thanks, Ian
>>>
>>> On Thu, Apr 30, 2026 at 5:22 AM Magnus Westerlund <magnus.westerlund=
>>> 40ericsson.com@dmarc.ietf.org> wrote:
>>>
>>>> Hi,
>>>>
>>>> My worry is exactly related to that one would like to bind sub-group
>>>> IDs to catalog info making clear what improvement a particular subgroup
>>>> contains. I think this matters in two ways. First related to end subscriber
>>>> processing it during decoding operations. This also matters if one want to
>>>> use the sub group filter as the subscriber need to know that the publisher
>>>> uses the subgroup IDs consistently.
>>>>
>>>> With the proposal in place I think it limits the possibility to apply
>>>> additional constraints on the object IDs. For example if one want the
>>>> object IDs in decoding order without gaps across a full tree of different
>>>> sub-groups then one have a constraint that may be difficult to fulfil if
>>>> one need to reconfigure the encoder between groups to handle bandwidth
>>>> limitation between the original publisher and the relay. The
>>>> reconfiguration could mean skipping a sub group completely in this group.
>>>> This will require a gap in the object ID to skip over the object ID = sub
>>>> group ID.
>>>>
>>>> Yes clearly if one assign no additional semantics and accept gaps in
>>>> object IDs the idea in #1608 can work. However, I think it is limitation
>>>> that people with more advanced use cases in the future will be annoyed with
>>>> and may result in significantly more additional signalling about gaps etc
>>>> than an explicit start of sub-group indicator would require.
>>>>
>>>> Cheers
>>>>
>>>> Magnus
>>>>
>>>>
>>>>
>>>> *From: *Cullen Fluffy Jennings <fluffy@iii.ca>
>>>> *Date: *Thursday, 30 April 2026 at 07:08
>>>> *To: *Ian Swett <ianswett=40google.com@dmarc.ietf.org>
>>>> *Cc: *MOQ Mailing List <moq@ietf.org>
>>>> *Subject: *[Moq] Re: Knowing the start of a Subgroup
>>>>
>>>>
>>>> Three thoughts ….
>>>>
>>>> 1) I don’t deeply care about this one way or the other but I think we
>>>> should make it mirror the end marker bits. If the original publisher knows
>>>> it is the start, or knows it is the end, it should add the marker. I think
>>>> we should deal with start of track, start of group, at the same time as
>>>> subgroup as it is the same issue.
>>>>
>>>> 2) Imagine a case where you want to refer to the SubGroup ID in the
>>>> catalog to explain what layer of a codec is in that subgroup. And assume
>>>> you want  the object ID to increment by 1 in the group. I'm just not seeing
>>>> how it works in this case.
>>>>
>>>> 3) Mostly I don’t worry about how we spell it on the wire but FWIW … My
>>>> gut feel is we are pinning to very weird implicit signaling by taking two
>>>> things that have nothing to do with each other, the subgroup id and the
>>>> object id, then saying if they are equal, it means some third thing. I’d
>>>> rather just explicitly signal the third thing and not have it be some
>>>> implicit convention on how to use the first two things.
>>>>
>>>>
>>>>
>>>> > On Apr 29, 2026, at 3:10 PM, Ian Swett <ianswett=
>>>> 40google.com@dmarc.ietf.org> wrote:
>>>> >
>>>> > In Monday's interim, there was strong interest in knowing what the
>>>> starting Object Id of a Subgroup is, just like we know the end today.
>>>> >
>>>> > My proposal (#1608) was to require the Subgroup ID equal the Object
>>>> ID of the first Object of the Subgroup. The original publisher would do
>>>> this, and it would naturally be preserved downstream, just like Subgroup ID
>>>> and Object ID are today. Some people had concerns with this, but I don't
>>>> think I fully understood them?  If anyone wants to spell them out in more
>>>> detail, that would be great.
>>>> >
>>>> > To clarify, this retains the ability to stitch together a Subgroup
>>>> that arrived on two separate streams for whatever reason.  That is a core
>>>> requirement for Subgroups.
>>>> >
>>>> > I'm not set on my particular design, but I reviewed #1618 (which uses
>>>> a bitflag) and I think #1608 has two important advantages:
>>>> > 1) It's required
>>>> > 2) If you receive some Objects from a Subgroup, you know if the first
>>>> one is the first Object in the subgroup.
>>>> >
>>>> > Thoughts?
>>>> >
>>>> > Thanks, Ian
>>>> > --
>>>> > Moq mailing list -- moq@ietf.org
>>>> > To unsubscribe send an email to moq-leave@ietf.org
>>>>
>>>> --
>>>> Moq mailing list -- moq@ietf.org
>>>> To unsubscribe send an email to moq-leave@ietf.org
>>>>
>>> --
>>> Moq mailing list -- moq@ietf.org
>>> To unsubscribe send an email to moq-leave@ietf.org
>>>
>> --
>> Moq mailing list -- moq@ietf.org
>> To unsubscribe send an email to moq-leave@ietf.org
>>
> --
> Moq mailing list -- moq@ietf.org
> To unsubscribe send an email to moq-leave@ietf.org
>