<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jennings-moq-mocha-meetings-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="mocha-meetings">MOCHA Meetings: Real-Time Conferencing over MoQ Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-jennings-moq-mocha-meetings-00"/>
    <author fullname="Cullen Jennings">
      <organization>Cisco</organization>
      <address>
        <email>fluffy@iii.ca</email>
      </address>
    </author>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="06"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>MoQ</keyword>
    <keyword>MOQT</keyword>
    <keyword>MOCHA</keyword>
    <keyword>Conferencing</keyword>
    <keyword>Meetings</keyword>
    <abstract>
      <?line 51?>

<t>This document specifies how multi-party audio and video
meetings are conducted using MOCHA (MoQ Open Communication &amp;
Hosting Architecture). It defines namespace conventions, media
track design, catalog distribution, and participant flows for
real-time conferencing over MoQ Transport (MOQT). This
specification supports both simulcast and scalable video codec
configurations, enabling meetings ranging from small group
calls to large-scale conferences.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jennings-moq-mocha-meetings/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Real-time meetings are a core use case for MOCHA. This
document specifies how participants join, publish, and
subscribe to audio and video media in a meeting using MOQT's
publish/subscribe primitives.</t>
      <t>Each participant's device publishes its media on per-device
tracks within a meeting namespace. A catalog track provides
metadata about available media renditions, enabling
subscribers to discover and select appropriate streams.
Active speaker detection and relay-based fan-out allow
meetings to scale efficiently.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses terminology and architecture defined in
<xref target="MOCHA-ARCH"/>, including Provider, Organization, Team,
Channel, and Device. The MOQT transport primitives
(Track, Group, Object, Namespace, Relay) are defined in
<xref target="MoQTransport"/>. HClientID and HDevID are defined in
<xref target="MOCHA-IDENTITY"/>.</t>
      <t>The following additional terms are used:</t>
      <dl>
        <dt>MeetingID:</dt>
        <dd>
          <t>A unique identifier for a meeting instance within a
channel. A new MeetingID is assigned each time a meeting
is started in a channel.</t>
        </dd>
        <dt>RenditionID:</dt>
        <dd>
          <t>An identifier for a specific media encoding variant
(e.g., resolution, bitrate, codec profile).</t>
        </dd>
        <dt>Catalog:</dt>
        <dd>
          <t>An MSF <xref target="MSF"/> catalog track describing the available
media renditions published by a device.</t>
        </dd>
        <dt>Active Speaker:</dt>
        <dd>
          <t>The participant currently producing the most significant
audio activity, as determined by the audio_level object
property and Top-N Track Filter selection.</t>
        </dd>
      </dl>
    </section>
    <section anchor="meeting-namespace">
      <name>Meeting Namespace</name>
      <section anchor="id-derivation">
        <name>Identifier Derivation</name>
        <t>The HClientID and HDevID used in namespace tuples and
track names are derived per <xref target="MOCHA-IDENTITY"/>,
Section "Identifier Derivation".</t>
      </section>
      <section anchor="media-namespace">
        <name>Media Namespace</name>
        <t>The media namespace groups all real-time audio and video tracks
for a single meeting instance. All devices participating in
the same meeting publish and subscribe to tracks under this
common namespace, allowing the relay to perform fan-out,
caching, and track filtering scoped to that meeting.</t>
        <t>Media tracks for a meeting use the following namespace tuple:</t>
        <artwork><![CDATA[
  ("mocha_v1", <Provider>, <OrgID>, "media",
   <TeamID>, <ChannelID>, <MeetingID>, <HClientID>)
]]></artwork>
        <t>For example, a meeting in the "standup" channel of team
"engineering" at organization "acme":</t>
        <artwork><![CDATA[
  ("mocha_v1", "example.com", "acme", "media",
   "engineering", "standup", "meeting-2024-05-15-1600",
   <HClientID>)
]]></artwork>
      </section>
      <section anchor="media-track-names">
        <name>Media Track Names</name>
        <t>Each device publishes media on tracks within the meeting
namespace. Track names encode the media type, rendition,
and device identity:</t>
        <t>Audio tracks:</t>
        <artwork><![CDATA[
  audio-<RenditionID>-<HDevID>
]]></artwork>
        <t>Video tracks:</t>
        <artwork><![CDATA[
  video-<RenditionID>-<HDevID>
]]></artwork>
        <t>HClientID and HDevID are derived per <xref target="id-derivation"/>.</t>
        <t>For example, if Alice's device has HDevID "alice-laptop-1"
and publishes two video renditions:</t>
        <artwork><![CDATA[
  Namespace: ("mocha_v1", "example.com", "acme", "media",
              "engineering", "standup", "meeting-2024-05-15-1600",
              <HClientID>)

  Track: audio-opus48k-<HDevID>
  Track: video-720p-<HDevID>
  Track: video-360p-<HDevID>
]]></artwork>
        <t>The RenditionID values used in track names (e.g., "opus48k",
"720p", "360p") correspond to rendition entries in the
device's catalog (see <xref target="catalog-format"/>). Subscribers
consult the catalog to discover which renditions are
available before subscribing to specific media tracks.</t>
      </section>
      <section anchor="catalog-namespace">
        <name>Catalog Namespace</name>
        <t>The catalog namespace carries metadata tracks that describe
each device's available media renditions. By separating the
catalog from media, subscribers can discover participants
and their capabilities without subscribing to any media
streams. Each device publishes exactly one catalog track
in this namespace, enabling other participants to learn
what audio/video tracks are available for subscription.</t>
        <t>Catalog tracks use a separate namespace tuple:</t>
        <artwork><![CDATA[
  ("mocha_v1", <Provider>, <OrgID>, "catalog",
   <TeamID>, <ChannelID>, <MeetingID>, <HClientID>)
]]></artwork>
        <t>HClientID and HDevID are derived per <xref target="id-derivation"/>.</t>
      </section>
      <section anchor="catalog-track-names">
        <name>Catalog Track Names</name>
        <t>Each device publishes a catalog describing its available
renditions:</t>
        <artwork><![CDATA[
  catalog-<HDevID>
]]></artwork>
        <t>For example:</t>
        <artwork><![CDATA[
  Namespace: ("mocha_v1", "example.com", "acme", "catalog",
              "engineering", "standup", "meeting-2024-05-15-1600",
              <HClientID>)
  Track: catalog-<HDevID>
]]></artwork>
      </section>
    </section>
    <section anchor="media-design">
      <name>Media Track Design</name>
      <section anchor="audio-tracks">
        <name>Audio Tracks</name>
        <t>Each participant publishes a single audio track per
rendition. The audio codec and encoding parameters are
specified by the RenditionID and described in the device's
catalog (see <xref target="catalog-format"/>).</t>
        <section anchor="audio-object-mapping">
          <name>Audio Object Mapping</name>
          <t>Each audio frame maps to a single MOQT Object:</t>
          <ul spacing="normal">
            <li>
              <t>Group ID increments per frame (no inter-frame dependencies)</t>
            </li>
            <li>
              <t>Object ID is 0 within each group</t>
            </li>
            <li>
              <t>Objects <bcp14>MAY</bcp14> be sent via QUIC Datagrams for lowest latency</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="video-tracks">
        <name>Video Tracks</name>
        <t>Video publishers provide one or more rendition tracks
(simulcast). Each rendition represents a different
resolution or quality level.</t>
        <section anchor="video-object-mapping">
          <name>Video Object Mapping</name>
          <artwork><![CDATA[
  Track: video-720p-alice-laptop-1
    |
    +-- Group 1 (GOP / keyframe boundary)
    |   +-- Object 0: I-frame
    |   +-- Object 1: P-frame
    |   +-- Object 2: P-frame
    |   ...
    |
    +-- Group 2 (next GOP)
    |   +-- Object 0: I-frame
    |   ...
]]></artwork>
          <ul spacing="normal">
            <li>
              <t>Each encoded video frame is packaged as a LOC container
and placed in a single MOQT Object</t>
            </li>
            <li>
              <t>Group ID increments at each keyframe boundary (GOP). The
first Group ID is the lower 32 bits of the current wall
clock time in milliseconds</t>
            </li>
            <li>
              <t>Object IDs are sequential within each group</t>
            </li>
            <li>
              <t>Objects are sent via QUIC Streams for reliable delivery</t>
            </li>
          </ul>
        </section>
        <section anchor="quality-variants">
          <name>Quality Variants</name>
          <t>Publishers advertise available quality variants via the
catalog. Typical variants include:</t>
          <table>
            <thead>
              <tr>
                <th align="left">RenditionID</th>
                <th align="left">Resolution</th>
                <th align="left">Frame Rate</th>
                <th align="left">Bitrate Range</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1080p</td>
                <td align="left">1920x1080</td>
                <td align="left">30 fps</td>
                <td align="left">2-4 Mbps</td>
              </tr>
              <tr>
                <td align="left">720p</td>
                <td align="left">1280x720</td>
                <td align="left">30 fps</td>
                <td align="left">1-2 Mbps</td>
              </tr>
              <tr>
                <td align="left">360p</td>
                <td align="left">640x360</td>
                <td align="left">30 fps</td>
                <td align="left">300-600 Kbps</td>
              </tr>
              <tr>
                <td align="left">180p</td>
                <td align="left">320x180</td>
                <td align="left">15 fps</td>
                <td align="left">100-200 Kbps</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="active-speaker-detection-via-top-n-track-filters">
        <name>Active Speaker Detection via Top-N Track Filters</name>
        <t>Active speaker detection leverages MOQT's Top-N Track Filter
mechanism on SUBSCRIBE_TRACKS. Rather than requiring a
separate speaking indicator track, each audio track includes
an audio_level object property (0-127) representing the
current voice activity level.</t>
        <t>Subscribers issue a SUBSCRIBE_TRACKS with a TRACK_FILTER
parameter selecting the top-N audio tracks by audio_level.
The relay monitors audio_level properties across all audio
tracks in the namespace and automatically promotes tracks
that enter the top-N (sending PUBLISH messages for them)
and demotes tracks that fall out (ceasing delivery). A
configurable timeout (TrackFilterTimeout, default 1 second)
provides damping to avoid rapid switching during brief
interjections.</t>
        <t>This approach eliminates the need for dedicated speaking
indicator tracks, as the relay performs active speaker
selection natively using the audio_level property on the
media tracks themselves.</t>
      </section>
    </section>
    <section anchor="catalog-format">
      <name>Catalog Format</name>
      <t>The meeting catalog uses the MOQT Streaming Format (MSF)
catalog structure. Each device publishes an MSF catalog
track describing its available media renditions. The
catalog track <bcp14>MUST</bcp14> have a track name of "catalog" within
the catalog namespace.</t>
      <section anchor="catalog-object-structure">
        <name>Catalog Object Structure</name>
        <t>Each catalog object is a JSON document following the MSF
catalog schema. The catalog describes the tracks being
published by the device, their codecs, qualities, and
relationships:</t>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1715788800000,
  "tracks": [
    {
      "name": "audio-opus48k-alice-laptop-1",
      "namespace": ["mocha_v1", "example.com", "acme",
                    "media", "engineering", "standup",
                    "meeting-2024-05-15-1600"],
      "packaging": "loc",
      "role": "audio",
      "codec": "opus",
      "samplerate": 48000,
      "channelConfig": "mono",
      "label": "Alice Smith"
    },
    {
      "name": "video-720p-alice-laptop-1",
      "packaging": "loc",
      "role": "video",
      "codec": "avc1.64001f",
      "width": 1280,
      "height": 720,
      "framerate": 30,
      "bitrate": 2000000,
      "altGroup": 1,
      "label": "Alice Smith"
    },
    {
      "name": "video-360p-alice-laptop-1",
      "packaging": "loc",
      "role": "video",
      "codec": "avc1.64001f",
      "width": 640,
      "height": 360,
      "framerate": 30,
      "bitrate": 500000,
      "altGroup": 1,
      "label": "Alice Smith"
    }
  ]
}
]]></sourcecode>
        <t>Tracks that share an altGroup value represent alternate
renditions of the same content (simulcast). Subscribers
select one track from each alternate group based on
available bandwidth and layout requirements.</t>
      </section>
      <section anchor="catalog-updates">
        <name>Catalog Updates</name>
        <t>When a device changes its published renditions (e.g., starts
screen sharing or changes video quality), it publishes a new
catalog object in the next group. Delta updates <bcp14>MAY</bcp14> be used
for incremental changes. Subscribers to the catalog track
receive the updated rendition list and adjust their media
subscriptions accordingly.</t>
      </section>
    </section>
    <section anchor="meeting-flow">
      <name>Basic Meeting Flow</name>
      <section anchor="meeting-creation">
        <name>Meeting Creation</name>
        <t>A meeting is created when the first participant initiates
a call in a channel. The MeetingID is generated and
associated with the channel. Meeting creation is signaled
via a system message on the channel's chat track as defined
in <xref target="MOCHA-CHAT"/>, allowing all channel participants to
discover and join the meeting.</t>
      </section>
      <section anchor="join-flow">
        <name>Joining a Meeting</name>
        <t>When a participant joins an existing meeting, the following
sequence occurs. In this example, the catalog namespace is
("mocha_v1", "example.com", "acme", "catalog", "engineering",
"standup", "meeting-2024-05-15-1600") and the media namespace
is ("mocha_v1", "example.com", "acme", "media", "engineering",
"standup", "meeting-2024-05-15-1600").</t>
        <artwork><![CDATA[
  Alice                       Relay                  Bob (existing)
    |                           |                        |
    |  1. SUBSCRIBE_NAMESPACE   |                        |
    |     catalog namespace     |                        |
    |-------------------------->|                        |
    |                           |                        |
    |  2. NAMESPACE             |                        |
    |     (catalog-bob-desktop) |                        |
    |<--------------------------|                        |
    |                           |                        |
    |  3. SUBSCRIBE             |                        |
    |     catalog-bob-desktop   |                        |
    |-------------------------->|                        |
    |                           |                        |
    |  4. Catalog object        |                        |
    |     (Bob's renditions)    |                        |
    |<--------------------------|                        |
    |                           |                        |
    |  5. SUBSCRIBE_TRACKS      |                        |
    |     media namespace       |                        |
    |     (Top-N audio_level)   |                        |
    |-------------------------->|                        |
    |                           |                        |
    |  6. PUBLISH (from relay)  |                        |
    |     audio-opus48k-bob-desktop                      |
    |     video-720p-bob-desktop|                        |
    |<--------------------------|                        |
    |                           |                        |
    |  7. PUBLISH media         |                        |
    |     audio-opus48k-alice-laptop-1                   |
    |     video-720p-alice-laptop-1                      |
    |     catalog-alice-laptop-1|                        |
    |-------------------------->|                        |
    |                           |                        |
    |  8. Media objects flow    |                        |
    |<------------------------->|<---------------------->|
    |                           |                        |
]]></artwork>
        <t>The join sequence in detail:</t>
        <ol spacing="normal" type="1"><li>
            <t>Alice sends SUBSCRIBE_NAMESPACE for the catalog
namespace to discover existing participants.</t>
          </li>
          <li>
            <t>The relay responds with NAMESPACE messages for each
catalog track currently published in the meeting
(e.g., catalog-bob-desktop).</t>
          </li>
          <li>
            <t>Alice sends SUBSCRIBE for each discovered catalog
track to learn available renditions.</t>
          </li>
          <li>
            <t>Alice receives MSF catalog objects describing each
participant's media tracks and renditions.</t>
          </li>
          <li>
            <t>Alice sends SUBSCRIBE_TRACKS for the media namespace
with a Top-N Track Filter on audio_level. This requests
the relay to establish subscriptions for the top-N
active audio/video tracks.</t>
          </li>
          <li>
            <t>The relay responds by sending PUBLISH messages for the
matching tracks (e.g., Bob's audio and video), then
begins delivering media objects.</t>
          </li>
          <li>
            <t>Alice publishes her own media tracks and catalog,
making her media available to other participants.</t>
          </li>
          <li>
            <t>Bidirectional media flows through the relay.</t>
          </li>
        </ol>
      </section>
      <section anchor="active-speaker">
        <name>Active Speaker Switching</name>
        <t>Active speaker detection uses the audio_level object
property on audio tracks. The relay monitors these values
and selects the top-N tracks for delivery based on the
SUBSCRIBE_TRACKS filter:</t>
        <artwork><![CDATA[
  Alice             Relay              Bob's View
    |                 |
    | audio_level: 95 |                 +-----------+
    |---------------->|  Top-N select   | Alice(AS) |
    |                 |  by audio_level | Carol     |
    | Bob level: 20   |                 | Dave      |
    |                 |                 +-----------+
    |                 |
    | audio_level: 110|
    |---------------->|  Alice exceeds  +-----------+
    |                 |  threshold for  |*Alice*    |
    |                 |  >1 sec         | Bob       |
    |                 |                 | Carol     |
    |                 |                 +-----------+
]]></artwork>
        <t>Subscribers use SUBSCRIBE_TRACKS with a Top-N Track Filter
to request the top-N media streams ranked by audio_level:</t>
        <artwork><![CDATA[
  SUBSCRIBE_TRACKS {
    Prefix: ("mocha_v1", "example.com", "acme", "media",
             "engineering", "standup", "meeting-2024-05-15-1600")
    Parameters:
      TRACK_FILTER: {
        Property: audio_level
        MaxTracksSelected: 4
      }
  }
]]></artwork>
        <t>The relay selects the top-N audio tracks and delivers only
those to the subscriber. When the active speaker changes,
the relay sends PUBLISH for the newly promoted track and
ceases delivery of the demoted track.</t>
      </section>
      <section anchor="screen-sharing">
        <name>Screen Sharing</name>
        <t>A participant initiates screen sharing by publishing
additional video rendition tracks and updating their
catalog:</t>
        <artwork><![CDATA[
  Alice (sharing)              Relay              Others
    |                            |                  |
    | Update catalog:            |                  |
    |  + video-screen-1080p-alice-laptop-1          |
    |--------------------------->|                  |
    |                            |                  |
    | Publish screen video       |                  |
    |--------------------------->|  Notify catalog  |
    |                            |  subscribers     |
    |                            |----------------->|
    |                            |                  |
    |                            |  SUBSCRIBE       |
    |                            |  video-screen-*  |
    |                            |<-----------------|
    |                            |                  |
    | Screen frames              |  Fan-out         |
    |--------------------------->|----------------->|
    |                            |                  |
]]></artwork>
      </section>
      <section anchor="late-join">
        <name>Late Join</name>
        <t>When a participant joins a meeting already in progress, it
needs to synchronize to the current media state. The
SUBSCRIBE_OK response includes the current live edge (the
latest Group ID being published), which the subscriber uses
to determine where to begin playback.</t>
        <t>For video tracks, the subscriber chooses between two
strategies based on how far into the current group the
publisher has progressed:</t>
        <ol spacing="normal" type="1"><li>
            <t>FETCH from current group: If the publisher is not too
far into the current group (i.e., few objects have been
published since the last keyframe), the subscriber
issues a FETCH request starting from the beginning of
the current group (Object 0). The relay delivers the
keyframe and subsequent frames from its cache, allowing
the subscriber to catch up quickly and join the live
stream mid-GOP.</t>
          </li>
          <li>
            <t>DYNAMIC_GROUPS: If the publisher is deep into the
current group (many frames since the last keyframe),
fetching from the beginning would require downloading
a large backlog. Instead, the subscriber sends a
DYNAMIC_GROUPS to the publisher, which triggers the
publisher to end the current group and start a new one
with a fresh keyframe. The subscriber then receives
the new keyframe immediately as live media.</t>
          </li>
        </ol>
        <t>The live edge information from SUBSCRIBE_OK (the current
Group ID and Object ID) allows the subscriber to determine
how far into the current group the publisher is and choose
the appropriate strategy.</t>
        <artwork><![CDATA[
  Case 1: FETCH (publisher early in current group)

  Subscriber                  Relay                Publisher
    |                           |                      |
    |  SUBSCRIBE video track    |                      |
    |-------------------------->|                      |
    |                           |                      |
    |  SUBSCRIBE_OK             |                      |
    |  (live edge: G=5, O=2)   |                      |
    |<--------------------------|                      |
    |                           |                      |
    |  Decision: O=2, only 2    |                      |
    |  frames in, FETCH is fast |                      |
    |                           |                      |
    |  FETCH (G=5, O=0)        |                      |
    |-------------------------->|                      |
    |                           |                      |
    |  Object G=5/O=0 (I-frame)|                      |
    |<--------------------------|                      |
    |  Object G=5/O=1 (P-frame)|                      |
    |<--------------------------|                      |
    |  Object G=5/O=2 (P-frame)|  (live continues)    |
    |<--------------------------|<---------------------|
    |                           |                      |
    |  (now in sync, receives   |                      |
    |   live objects G=5/O=3...) |                      |
    |<--------------------------|<---------------------|
    |                           |                      |

  Case 2: DYNAMIC_GROUPS (publisher deep in current group)

  Subscriber                  Relay                Publisher
    |                           |                      |
    |  SUBSCRIBE video track    |                      |
    |-------------------------->|                      |
    |                           |                      |
    |  SUBSCRIBE_OK             |                      |
    |  (live edge: G=5, O=47)  |                      |
    |<--------------------------|                      |
    |                           |                      |
    |  Decision: O=47, too far  |                      |
    |  to fetch from O=0       |                      |
    |                           |                      |
    |  DYNAMIC_GROUPS        |                      |
    |-------------------------->|--------------------->|
    |                           |                      |
    |                           |  Publisher ends G=5  |
    |                           |  Starts G=6 with    |
    |                           |  fresh keyframe     |
    |                           |<---------------------|
    |                           |                      |
    |  Object G=6/O=0 (I-frame)|                      |
    |<--------------------------|                      |
    |  Object G=6/O=1 (P-frame)|                      |
    |<--------------------------|<---------------------|
    |                           |                      |
    |  (in sync from fresh      |                      |
    |   keyframe, minimal delay)|                      |
    |<--------------------------|<---------------------|
    |                           |                      |
]]></artwork>
      </section>
      <section anchor="leaving-a-meeting">
        <name>Leaving a Meeting</name>
        <t>When a participant leaves a meeting:</t>
        <ol spacing="normal" type="1"><li>
            <t>The device stops publishing media objects on its tracks.</t>
          </li>
          <li>
            <t>The device publishes a final catalog object with an empty
rendition list or a "departed" status.</t>
          </li>
          <li>
            <t>The relay detects track inactivity and stops forwarding.</t>
          </li>
          <li>
            <t>Other participants observe the catalog update and
unsubscribe from the departed device's media tracks.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="relay">
      <name>Relay Behavior</name>
      <section anchor="fan-out">
        <name>Fan-Out</name>
        <t>When multiple participants subscribe to the same media track,
the relay performs fan-out delivery from a single upstream
subscription. This prevents duplicate traffic to the
original publisher.</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>Relays cache recent video keyframes (the most recent complete
group) to enable fast joins. When a new subscriber arrives,
the relay delivers the cached keyframe immediately, providing
instant video without waiting for the next keyframe from the
publisher.</t>
      </section>
      <section anchor="self-suppression">
        <name>Self-Suppression</name>
        <t>Relays <bcp14>MUST NOT</bcp14> deliver a participant's own media back to
them. The relay supresses self-delivery based on
FullTrackName and Track alias.</t>
      </section>
      <section anchor="track-filtering">
        <name>Track Filtering</name>
        <t>Relays support track filtering based on properties like
speaking level, enabling active speaker selection without
requiring subscribers to receive all tracks and filter
locally.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MoQTransport">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="12" month="May" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
        </reference>
        <reference anchor="MOCHA">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="MOCHA-ARCH">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="MOCHA-CHAT">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="MOCHA-IDENTITY">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="MSF">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="LOC">
          <front>
            <title>Low Overhead Media Container</title>
            <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
              <organization>Microsoft</organization>
            </author>
            <date day="15" month="March" year="2026"/>
            <abstract>
              <t>   This specification describes a Low Overhead Media Container (LOC)
   format for encoded and encrypted audio and video media data to be
   used primarily for interactive Media over QUIC Transport (MOQT).  It
   may be used in the MOQT Streaming Format (MSF) specification, which
   defines a catalog format for publishers to declare and describe their
   LOC tracks and for subscribers to consume them.  Examples are also
   provided for building media applications using LOC and MOQT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-02"/>
        </reference>
        <reference anchor="SecureObjects">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="8" month="February" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers to securely share
   a symmetric key with end subscribers, ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-secure-objects-04"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3550">
          <front>
            <title>RTP: A Transport Protocol for Real-Time Applications</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="S. Casner" initials="S." surname="Casner"/>
            <author fullname="R. Frederick" initials="R." surname="Frederick"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This memorandum describes RTP, the real-time transport protocol. RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of- service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers. The protocol supports the use of RTP-level translators and mixers. Most of the text in this memorandum is identical to RFC 1889 which it obsoletes. There are no changes in the packet formats on the wire, only changes to the rules and algorithms governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session simultaneously. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="64"/>
          <seriesInfo name="RFC" value="3550"/>
          <seriesInfo name="DOI" value="10.17487/RFC3550"/>
        </reference>
        <reference anchor="RFC8825">
          <front>
            <title>Overview: Real-Time Protocols for Browser-Based Applications</title>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document gives an overview and context of a protocol suite intended for use with real-time applications that can be deployed in browsers -- "real-time communication on the Web".</t>
              <t>It intends to serve as a starting and coordination point to make sure that (1) all the parts that are needed to achieve this goal are findable and (2) the parts that belong in the Internet protocol suite are fully specified and on the right publication track.</t>
              <t>This document is an applicability statement -- it does not itself specify any protocol, but it specifies which other specifications implementations are supposed to follow to be compliant with Web Real-Time Communication (WebRTC).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8825"/>
          <seriesInfo name="DOI" value="10.17487/RFC8825"/>
        </reference>
      </references>
    </references>
    <?line 698?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AAA=

-->

</rfc>
