<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-moq-feedback-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>MoQ Feedback</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-moq-feedback-01"/>
    <author initials="Y." surname="Liu" fullname="Yanmei Liu">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="M." surname="Jiang" fullname="Minghui Jiang">
      <organization/>
      <address>
        <email>jiangminghui2003@gmail.com</email>
      </address>
    </author>
    <author initials="R." surname="Wu" fullname="Ronghua Wu">
      <organization>Ant Group.</organization>
      <address>
        <email>r.wu@antgroup.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 48?>

<t>This document defines Media over QUIC Feedback (MQF), an extension to Media over
QUIC Transport (MOQT) that enables delivery quality information about media
Objects to be reported using Feedback Tracks. It defines how Feedback Tracks are
associated with media Tracks, established, forwarded through Relays, and
consumed, together with the MQF report format and capability negotiation. MQF
complements transport-layer signals with per-Object delivery information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Media Over QUIC Working Group mailing list (moq@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/Yanmei-Liu/draft-moq-multimodal-feedback"/>.</t>
    </note>
  </front>
  <middle>
    <?line 58?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Media over QUIC Transport (MOQT, <xref target="MoQTransport"/>) is a QUIC-based
publish/subscribe media transport framework. In low-latency applications, a
Media Publisher can benefit from knowing whether media Objects were received
completely and within an application-relevant deadline. QUIC acknowledgments and
receive timestamps provide transport-layer information, but they do not directly
express these Object-level delivery outcomes or application state.
Transport-layer feedback is also scoped to an individual QUIC connection. When
media traverses one or more Relays, feedback on the Media Original Publisher's
connection describes delivery only to its adjacent peer, not the cumulative
delivery outcome observed by the downstream Media Subscriber.</t>
      <t>This document defines Media over QUIC Feedback (MQF), a MoQ-layer mechanism for
carrying such information in Feedback Tracks. MQF reports are associated with a
media Track and can be consumed by an adjacent Media Publisher or delivered
across Relays to the Media Original Publisher.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
        <t>The following terms are used throughout this document:</t>
        <ul spacing="normal">
          <li>
            <t><strong>MOQT:</strong> Media over QUIC Transport, following <xref target="MoQTransport"/>.</t>
          </li>
          <li>
            <t><strong>Object:</strong> An addressable unit whose Payload is a sequence of bytes,
following <xref target="MoQTransport"/>.</t>
          </li>
          <li>
            <t><strong>Media Publisher:</strong> The Publisher of a media Track on a given MOQT session.</t>
          </li>
          <li>
            <t><strong>Media Subscriber:</strong> A Subscriber of a media Track on a given MOQT session.</t>
          </li>
          <li>
            <t><strong>Relay:</strong> A MoQ node that forwards media Tracks or Feedback Tracks between
Publishers and Subscribers, following <xref target="MoQTransport"/>.</t>
          </li>
          <li>
            <t><strong>Media Original Publisher:</strong> The Original Publisher, as defined by
<xref target="MoQTransport"/>, of the media Track associated with a Feedback Track.</t>
          </li>
          <li>
            <t><strong>Adjacent Media Publisher:</strong> The Publisher from which a Media Subscriber
receives the associated media Track on a particular MOQT session. It can be a
Relay or the Media Original Publisher.</t>
          </li>
          <li>
            <t><strong>Feedback Publisher:</strong> The Publisher of a Feedback Track, typically a Media
Subscriber of the associated media Track or a Relay generating a new Feedback
Track.</t>
          </li>
          <li>
            <t><strong>Feedback Subscriber:</strong> A Subscriber of a Feedback Track. An intermediate
Relay can subscribe to a Feedback Track for forwarding without consuming its
Payload.</t>
          </li>
          <li>
            <t><strong>Feedback Consumer:</strong> The terminal Feedback Subscriber that interprets MQF
reports. The Feedback Consumer is the Adjacent Media Publisher for
<tt>HOP_FEEDBACK</tt> and the Media Original Publisher for <tt>ORIGIN_FEEDBACK</tt>.</t>
          </li>
          <li>
            <t><strong>Feedback Track:</strong> A MoQ Track that carries MQF reports.</t>
          </li>
          <li>
            <t><strong>Feedback Type:</strong> A Relay-visible Track Property that identifies whether a
Feedback Track terminates at the Adjacent Media Publisher or is delivered to
the Media Original Publisher.</t>
          </li>
          <li>
            <t><strong>MQF (Media over QUIC Feedback):</strong> A feedback report at the MoQ layer
containing per-Object delivery status for an associated media Track.</t>
          </li>
        </ul>
      </section>
      <section anchor="scope-and-non-goals">
        <name>Scope and Non-Goals</name>
        <t>This document specifies:</t>
        <ul spacing="normal">
          <li>
            <t>how a Feedback Track is associated with a media Track;</t>
          </li>
          <li>
            <t>how Feedback Tracks are established, forwarded, and terminated;</t>
          </li>
          <li>
            <t>the Relay behavior associated with each Feedback Type;</t>
          </li>
          <li>
            <t>the MQF report format and capability negotiation; and</t>
          </li>
          <li>
            <t>endpoint behavior required to generate and interpret interoperable MQF
reports.</t>
          </li>
        </ul>
        <t>This document does not specify:</t>
        <ul spacing="normal">
          <li>
            <t>how an application adjusts encoding, generation, subscription, or scheduling
in response to MQF;</t>
          </li>
          <li>
            <t>the algorithm a Relay uses to derive or aggregate a new MQF report from
downstream observations and local state;</t>
          </li>
          <li>
            <t>how Relays are deployed or configured, including path selection,
Relay-to-Relay monitoring, and path remediation.</t>
          </li>
        </ul>
        <t>An implementation can use MQF reports as one input when adapting media or local
forwarding behavior. Such use does not replace transport congestion control, and
an implementation MUST NOT use MQF to bypass the sending limits imposed by its
congestion controller.</t>
      </section>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>QUIC-layer feedback mechanisms such as acknowledgments and Receive Timestamps
operate at the packet level and do not directly carry the following MoQ- or
application-level information:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Blind Spot</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Object Delivery Outcome</td>
            <td align="left">Transport acknowledgment does not state whether a complete Object was available before an application deadline</td>
          </tr>
          <tr>
            <td align="left">Object-Level Timing</td>
            <td align="left">Packet timing does not directly express the arrival relationship between media Objects</td>
          </tr>
          <tr>
            <td align="left">Application State</td>
            <td align="left">The transport does not know playback headroom or application consumption state</td>
          </tr>
          <tr>
            <td align="left">End-to-End Delivery across Relays</td>
            <td align="left">Transport feedback is scoped to one QUIC connection and does not describe the cumulative delivery outcome across a Relay chain</td>
          </tr>
        </tbody>
      </table>
      <t>Addressing these blind spots requires a feedback mechanism that reports delivery
outcomes at MOQT Object granularity and associates those observations with the
corresponding media Track.</t>
      <t>In a direct deployment, the Adjacent Media Publisher is also the Media Original
Publisher. When media traverses one or more Relays, these roles are separated. A
feedback mechanism therefore needs to support both local consumption by the
Adjacent Media Publisher and delivery of downstream observations across the
Relay chain to the Media Original Publisher. The latter cannot be inferred from
transport feedback on the Media Original Publisher's immediate connection.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <section anchor="feedback-model">
        <name>Feedback Model</name>
        <t>A Feedback Track is a normal MOQT Track whose Objects carry MQF reports. MQF
introduces no new QUIC frame or MOQT control message type. The associated media
Track identifies the Object sequence being reported, and the Feedback Type
identifies the intended Feedback Consumer and Relay behavior.</t>
        <t>MQF operates at Object granularity. The interpretation of an Object as a frame,
chunk, or other media unit is defined by the media format or application.</t>
        <t>MQF complements, rather than replaces, transport-layer signals. QUIC
acknowledgments describe packet delivery on one QUIC connection, and receive
timestamps such as <xref target="quic-receive-ts"/> can provide additional packet timing
information. MQF describes delivery outcomes using media Object coordinates and
can carry application-level observations such as playout headroom.</t>
        <t>An <tt>ORIGIN_FEEDBACK</tt> report can reflect the cumulative delivery outcome observed
downstream of the Media Original Publisher, but it does not identify which Relay
hop or path segment caused that outcome. Hop-by-hop path diagnosis is not
defined by MQF.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Signal</th>
              <th align="left">Granularity and Scope</th>
              <th align="left">Information Provided</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">QUIC acknowledgment and receive timestamps</td>
              <td align="left">Packet level on one QUIC connection</td>
              <td align="left">Transport delivery and timing information</td>
            </tr>
            <tr>
              <td align="left">MQF</td>
              <td align="left">Object level, hop-local or across Relays</td>
              <td align="left">Object delivery status and optional application observations</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="feedback-for-bidirectional-media">
        <name>Feedback for Bidirectional Media</name>
        <t>Feedback direction is defined relative to the associated media Track, not by an
endpoint role or an application-specific direction label. A Media Subscriber
that generates feedback acts as the Feedback Publisher. The intended Feedback
Consumer is determined by the Feedback Type: the Adjacent Media Publisher for
<tt>HOP_FEEDBACK</tt>, or the Media Original Publisher for <tt>ORIGIN_FEEDBACK</tt>.</t>
        <t>An endpoint can be a Media Publisher for one Track and a Media Subscriber for
another Track. Each media Track can independently have one or more associated
Feedback Tracks:</t>
        <artwork><![CDATA[
Endpoint A                         Endpoint B
  |--- media Track A ------------>|  B: Media Subscriber
  |<-- Feedback Track A -----------|  B: Feedback Publisher
  |                                |
  |<-- media Track B --------------|  A: Media Subscriber
  |--- Feedback Track B ---------->|  A: Feedback Publisher
]]></artwork>
        <t>The two Feedback Tracks use the same report format and establishment rules. The
associated media Track identifies the media flow being reported, and each
Feedback Track independently declares <tt>HOP_FEEDBACK</tt> or <tt>ORIGIN_FEEDBACK</tt>. The
<tt>PUBLISH_FEEDBACK</tt> and <tt>SUBSCRIBE_FEEDBACK</tt> Setup Option bits indicate whether
the endpoint that declares them can publish or subscribe to Feedback Tracks on
the current MOQT session.</t>
      </section>
      <section anchor="feedback-routing-through-relays">
        <name>Feedback Routing through Relays</name>
        <t>MQF supports deployments in which feedback is consumed by the Adjacent Media
Publisher as well as deployments in which feedback is delivered to the Media
Original Publisher. The Feedback Type Track Property defined in Section 4.1
identifies the intended consumer and required Relay behavior.</t>
        <t>In a cascaded Relay architecture, media from a Media Original Publisher
traverses multiple Relays before reaching a Media Subscriber. The Media
Subscriber is the feedback source, the Relay adjacent to the Media Subscriber
can consume its reported delivery outcomes, and the Relay chain can carry a
separate Feedback Track to the Media Original Publisher.</t>
        <artwork><![CDATA[
Media
  Media Original Publisher -> ... -> L2 -> L1 -> Media Subscriber
HOP_FEEDBACK
                                           L1 <- Media Subscriber
Relay-generated ORIGIN_FEEDBACK
  Media Original Publisher <- ... <- L2 <- L1
Subscriber-generated ORIGIN_FEEDBACK
  Media Original Publisher <- ... <- L2 <- L1 <- Media Subscriber
]]></artwork>
        <t>The following Feedback Tracks serve different consumers:</t>
        <ul spacing="normal">
          <li>
            <t>A <tt>HOP_FEEDBACK</tt> Track carries delivery outcomes observed by the Media
Subscriber and terminates at the L1 Relay for local interpretation.</t>
          </li>
          <li>
            <t>The L1 Relay can derive a new <tt>ORIGIN_FEEDBACK</tt> Track from received
<tt>HOP_FEEDBACK</tt> and other information available to the Relay when configured to
do so. When doing so, the Relay acts as a new Feedback Publisher and publishes
a distinct Feedback Track in the context of its upstream media Track.</t>
          </li>
          <li>
            <t>An <tt>ORIGIN_FEEDBACK</tt> Track can be published by a Media Subscriber or a Relay
and can traverse zero or more Relays. Its MQF Payload remains opaque to
intermediate Relays. Subscriber-generated <tt>ORIGIN_FEEDBACK</tt> requires the Media
Original Publisher to have sufficient application context to interpret the
report and its associated media Track coordinates.</t>
          </li>
        </ul>
        <t>A Media Subscriber behind an L1 Relay SHOULD use <tt>HOP_FEEDBACK</tt> when the report
requires Relay-local interpretation or translation into the context of an
upstream media Track. It MAY instead publish <tt>ORIGIN_FEEDBACK</tt> when the Media
Original Publisher has sufficient application context to interpret the report
and its associated media Track coordinates.</t>
        <t>The relative importance of the two Feedback Types depends on the application.
For example, a deployment can use <tt>HOP_FEEDBACK</tt> as input to local Track
selection or forwarding behavior and <tt>ORIGIN_FEEDBACK</tt> as input to source
adaptation. A Relay that derives a report from one or more downstream reports
acts as a new Feedback Publisher and publishes a distinct Feedback Track. The
base MQF format does not define the semantics of deriving <tt>ORIGIN_FEEDBACK</tt> from
downstream reports, whether from one report or by aggregating multiple reports.
Such derivation requires an extension or application agreement that defines
observation provenance, timestamp handling, metric interpretation, and, when
applicable, the represented Media Subscribers and aggregation method.</t>
      </section>
    </section>
    <section anchor="feedback-track">
      <name>Feedback Track</name>
      <section anchor="track-definition">
        <name>Track Definition</name>
        <t>The Feedback Track is a normal MoQ Track where the Payload of each Object is an
MQF report. Each MQF report is published as an independent Object with
monotonically increasing Object ID within a Group.</t>
        <t>Each Feedback Track has exactly one Feedback Type and MUST NOT mix
<tt>HOP_FEEDBACK</tt> and <tt>ORIGIN_FEEDBACK</tt>. The type controls Track distribution and
is carried in the Relay-visible <tt>MQF_FEEDBACK_TYPE</tt> Track Property. A Feedback
Publisher that generates both types MUST publish two distinct Feedback Tracks.</t>
        <t>The <tt>MQF_FEEDBACK_TYPE</tt> Track Property has an MOQT variable-length integer
(<tt>vi64</tt>) value, encoded as specified in <xref target="MoQTransport"/>, Section 8.1:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>0x00</tt></td>
              <td align="left">
                <tt>HOP_FEEDBACK</tt></td>
              <td align="left">Intended for the Adjacent Media Publisher on the current MOQT session</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x01</tt></td>
              <td align="left">
                <tt>ORIGIN_FEEDBACK</tt></td>
              <td align="left">Intended for the Media Original Publisher across zero or more Relays</td>
            </tr>
          </tbody>
        </table>
        <t>Every Feedback Track MUST include the <tt>MQF_FEEDBACK_TYPE</tt> Track Property (TBD2)
in its PUBLISH Track Properties. This Property is immutable for the lifetime of
the Track. A Relay that recognizes it MUST NOT modify or remove it. A Relay that
does not recognize it forwards and caches it according to the unknown Property
rules in <xref target="MoQTransport"/>. An MQF-aware Relay uses this Property without
inspecting MQF Object Payloads. A terminal Feedback Consumer that receives an
unsupported value MUST reject the Feedback Track.</t>
        <t>The Group division strategy for Feedback Track is implementation-defined. It is
RECOMMENDED to use a single Group (Group ID = 0) with continuously incrementing
Object IDs to simplify implementation.</t>
        <t>Each Feedback Track MUST be associated 1:1 with a media Track. The association
is encoded in the Feedback Full Track Name (Section 4.2) and is not repeated in
MQF reports. This Full Track Name binding is the media Track binding mechanism
defined by this document; no per-Object binding parameter is required.</t>
        <t>When feedback is needed for multiple media Tracks, independent Feedback Tracks
MUST be established separately.</t>
        <t>Each Feedback Publisher or publication session MUST use a distinct Feedback Full
Track Name. This prevents independent publishers from producing different
Payloads for the same Group ID and Object ID on what MOQT would otherwise treat
as a single Track.</t>
      </section>
      <section anchor="track-naming">
        <name>Track Naming</name>
        <t>The Feedback Full Track Name carries the information that Relays need to
distribute a Feedback Track without inspecting Object Payloads. Let <tt>++</tt> denote
appending fields to a Track Namespace tuple. A Feedback Track MUST use:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Track Namespace:</strong> The media Track Namespace with three fields appended in
this order: the literal <tt>mqf</tt>, the feedback type label, and the feedback
source ID.</t>
          </li>
          <li>
            <t><strong>Track Name:</strong> The Track Name of the associated media Track.</t>
          </li>
        </ul>
        <t>The <tt>feedback-type-label</tt> is the ASCII string <tt>hop-feedback</tt> for <tt>HOP_FEEDBACK</tt>
or <tt>origin-feedback</tt> for <tt>ORIGIN_FEEDBACK</tt>. It enables Namespace prefix
matching. The label MUST agree with the <tt>MQF_FEEDBACK_TYPE</tt> Track Property. A
node that detects a mismatch MUST reject the Feedback Track.</t>
        <t>The <tt>feedback-source-id</tt> is an opaque, non-empty byte string selected by the
Feedback Publisher. It MUST distinguish that publisher and publication session
from every other Feedback Publisher and session for the associated media Track.
It is not required to identify a user and MUST NOT be interpreted as a user
identity. A publisher MUST select a new value before reusing a Group ID and
Object ID pair or restarting its Report Sequence space.</t>
        <t>For example, feedback for media Full Track Name <tt>(example.com, meeting,
audio_response)</tt> can use:</t>
        <artwork><![CDATA[
(example.com, meeting, mqf, hop-feedback, subscriber-17, audio_response)
(example.com, meeting, mqf, origin-feedback, relay-l1-4, audio_response)
]]></artwork>
        <t>The same naming construction applies independently to every media Track. The
associated media Track determines the media direction being reported; a separate
direction prefix is not used.</t>
        <t>A node receiving a PUBLISH for a Feedback Track reconstructs the associated
media Full Track Name by removing the final three Namespace fields and retaining
the Feedback Track Name. If it cannot identify the associated media Track or
does not support the indicated type, it SHOULD respond with <tt>REQUEST_ERROR</tt>.</t>
      </section>
      <section anchor="track-establishment-and-lifecycle">
        <name>Track Establishment and Lifecycle</name>
        <t>The Feedback Track is established by the Feedback Publisher (a Media Subscriber
or a Relay generating new feedback) through MOQT's PUBLISH / REQUEST_OK exchange
on a bidirectional request stream. In <xref target="MoQTransport"/>, PUBLISH_OK is a
descriptive alias for REQUEST_OK, not a separate wire message type. The MQF
capabilities required by Section 6 MUST be negotiated before establishment.</t>
        <t>For a <tt>HOP_FEEDBACK</tt> Track, the terminal Feedback Consumer is the Adjacent Media
Publisher on that MOQT session. The Feedback Consumer accepts the PUBLISH and
MUST NOT advertise or forward that Feedback Track on another MOQT session.</t>
        <t>An L1 Relay that generates <tt>ORIGIN_FEEDBACK</tt> is a new Feedback Publisher. It
uses a new Feedback Full Track Name, Report Sequence space, and MQF Payload. It
can derive that Payload from <tt>HOP_FEEDBACK</tt>, local media transmission state, and
the mapping between its upstream and downstream media Tracks.</t>
        <t>An <tt>ORIGIN_FEEDBACK</tt> type does not create a route by itself. Before feedback
Objects can be delivered, an interest and authorization chain MUST be
established between the Media Original Publisher and the Feedback Publisher:</t>
        <ol spacing="normal" type="1"><li>
            <t>The Media Original Publisher, acting as a Feedback Subscriber, expresses
interest in the <tt>origin-feedback</tt> Namespace for the media Track. It can use
SUBSCRIBE_TRACKS for the corresponding Namespace prefix, or use
deployment-specific prior interest and authorization as permitted by
<xref target="MoQTransport"/>.</t>
          </li>
          <li>
            <t>Each intermediate Relay binds the Feedback Track to the media forwarding
state identified by Section 4.2. It propagates feedback interest only to
downstream peers to which it forwards the associated media Track. Feedback
Objects travel in the opposite direction, toward the peer from which the
Relay received that media Track.</t>
          </li>
          <li>
            <t>The Feedback Publisher sends PUBLISH for its unique Feedback Full Track Name.
Each hop uses the PUBLISH / REQUEST_OK and SUBSCRIBE / SUBSCRIBE_OK
procedures in <xref target="MoQTransport"/> to establish forwarding with Forward State 1.</t>
          </li>
        </ol>
        <t>SUBSCRIBE_NAMESPACE discovers published Namespaces; it does not request PUBLISH
messages for their Tracks. SUBSCRIBE_TRACKS expresses that Track interest in
<xref target="MoQTransport"/>.</t>
        <t>PUBLISH_NAMESPACE is not a route discovery mechanism. A Relay MUST NOT use it to
search a richly connected Relay topology for a path to the Media Original
Publisher. A Relay forwards <tt>ORIGIN_FEEDBACK</tt> only toward the peer from which it
received the associated media Track, and MUST NOT forward it back toward the
Feedback Publisher or another downstream media peer. If there is no unique
reverse media-path binding, the Relay MUST reject the Feedback Track. These
rules prevent a feedback loop in the single-upstream media topology defined by
this document.</t>
        <t>If any hop has no matching interest, lacks authorization, has no media-path
binding, or rejects the request, that hop MUST reject establishment using the
applicable MOQT request error. The Feedback Publisher MUST NOT send MQF Objects
until its PUBLISH is accepted. It MAY continue or fall back to a separately
established <tt>HOP_FEEDBACK</tt> Track, but it MUST NOT relabel a rejected Track to
bypass the failure.</t>
        <t>Relays route both Feedback Track types solely from the Full Track Name and
<tt>MQF_FEEDBACK_TYPE</tt> Track Property. In accordance with <xref target="MoQTransport"/>, the
Object Payload is opaque to a Relay and is not processed to make a forwarding
decision. An <tt>ORIGIN_FEEDBACK</tt> MQF Payload can therefore be protected between
the Feedback Publisher and the Media Original Publisher. A <tt>HOP_FEEDBACK</tt> MQF
Payload can be protected for its adjacent terminal Feedback Consumer.</t>
        <t><strong>Direct Establishment Flow Example:</strong></t>
        <t>Both endpoints have completed the MQF Setup exchange in Section 6. The Media
Original Publisher has prior interest in and authorization to receive the
Feedback Track. The diagram omits request identifiers and other MOQT fields.</t>
        <artwork><![CDATA[
Media Subscriber                  Media Original Publisher
(Media Subscriber /               (Media Publisher /
 Feedback Publisher)               Feedback Subscriber)
  |                                    |
  | SUBSCRIBE(track=audio_response)    |  (1) Subscribe media Track
  |----------------------------------->|
  | SUBSCRIBE_OK                       |
  |<-----------------------------------|
  |                                    |
  | PUBLISH(                           |  (2) Publish origin-feedback Track
  |   namespace=media_namespace ++     |
  |     ("mqf", "origin-feedback",     |
  |      "subscriber-17"),             |
  |   track=audio_response,            |
  |   property=MQF_FEEDBACK_TYPE(1))   |
  |----------------------------------->|
  | REQUEST_OK                         |
  |<-----------------------------------|
  |                                    |
  | [Object: MQF seq=0]                |  (3) Send MQF report
  |----------------------------------->|
  | [Object: MQF seq=1]                |
  |----------------------------------->|
  | ...                                |
]]></artwork>
        <t><strong>Lifecycle Rules:</strong></t>
        <t>The Feedback Track lifecycle SHOULD align with the subscribed media Track it
covers. After the media Track publisher sends PUBLISH_DONE for the media Track,
the Feedback Publisher SHOULD send PUBLISH_DONE for the Feedback Track after
transmitting the final MQF report and stop publishing Objects.</t>
        <t>When a MOQT session carrying a Feedback Track is disconnected, a Relay MUST
discard the associated forwarding state and MUST NOT re-advertise the old
Feedback Track after reconnecting. The Feedback Publisher establishes a new
Feedback Track with a new <tt>feedback-source-id</tt>; its Report Sequence SHOULD
restart from 0.</t>
        <t>Feedback is time-sensitive. A Feedback Publisher SHOULD use the
<tt>MAX_CACHE_DURATION</tt> Track Property defined by <xref target="MoQTransport"/> to bound the
period for which MQF Objects can be served from cache. A terminal feedback
consumer MUST NOT apply an MQF report from a previous publication session.</t>
      </section>
      <section anchor="transport-and-priority">
        <name>Transport and Priority</name>
        <t>The Feedback Track SHOULD be carried over QUIC Stream (consistent with ordinary
MoQ Objects).</t>
        <t>The Subscriber Priority for Feedback Track SHOULD be set lower than media Tracks
(<xref target="MoQTransport"/>, Section 5.1). Example priority assignment:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Track Type</th>
              <th align="left">Subscriber Priority</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>audio_response</tt></td>
              <td align="left">0 (highest)</td>
              <td align="left">Audio media</td>
            </tr>
            <tr>
              <td align="left">
                <tt>video_response</tt></td>
              <td align="left">1</td>
              <td align="left">Video media</td>
            </tr>
            <tr>
              <td align="left">Feedback Track</td>
              <td align="left">3</td>
              <td align="left">MQF report</td>
            </tr>
          </tbody>
        </table>
        <t>When bandwidth contention occurs, media data SHOULD take precedence over
feedback data transmission.</t>
      </section>
    </section>
    <section anchor="feedback-report-format">
      <name>Feedback Report Format</name>
      <t>This section defines the binary encoding format of an MQF report. All integer
fields use QUIC Variable-Length Integer encoding (RFC 9000, Section 16) unless
otherwise specified.</t>
      <t>This MQF Payload encoding is distinct from the MOQT <tt>vi64</tt> encoding used for
Setup Options and Track Properties. Relays forwarding MQF Objects preserve the
Payload bytes without translating between these encodings.</t>
      <t>Fields marked as "signed encoding" use ZigZag mapping and are transmitted as
unsigned QUIC varint:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Encoding:</strong> <tt>unsigned = (signed &lt;&lt; 1) ^ (signed &gt;&gt; 63)</tt></t>
        </li>
        <li>
          <t><strong>Decoding:</strong> <tt>signed = (unsigned &gt;&gt;&gt; 1) ^ -(unsigned &amp; 1)</tt></t>
        </li>
      </ul>
      <t>Mapping examples: <tt>0 -&gt; 0</tt>, <tt>-1 -&gt; 1</tt>, <tt>1 -&gt; 2</tt>, <tt>-2 -&gt; 3</tt>, <tt>2 -&gt; 4</tt>.</t>
      <section anchor="report-structure">
        <name>Report Structure</name>
        <artwork><![CDATA[
MQF Report {
  Report Timestamp (i),
  Report Sequence (i),
  Object Entry Count (i),
  Object Entry (..) ...,
  Summary Stats (..),
  Optional Metric Count (i),
  Optional Metric (..) ...,
}
]]></artwork>
        <t>This document defines MQF report format version 0. The <tt>MOQT_FEEDBACK</tt> Setup
Option (Section 6.1) declares support for this format; it does not negotiate a
separate version number. The format version is not repeated in each report.</t>
        <t>Each MQF report describes Object delivery status for a single media Track
associated with its Feedback Track (1:1 association, see Section 4.1).</t>
        <t><strong>Report Timestamp (varint):</strong> The moment when the report is generated, using
the Feedback Publisher's local monotonic clock value in microseconds. This value
is only used for Receive Timestamp Delta chain anchoring and report ordering,
not for cross-end time alignment. Monotonic clock MUST be used.</t>
        <t><strong>Report Sequence (varint):</strong> Monotonically increasing from 0 independently for
each Feedback Track. A gap can indicate an omitted report only when the
publication policy for that Track requires a contiguous Report Sequence. An
Object ID gap alone, without a Prior Object ID Gap property as defined by
<xref target="MoQTransport"/>, MUST NOT be interpreted as feedback loss. Because
<tt>HOP_FEEDBACK</tt> and <tt>ORIGIN_FEEDBACK</tt> use separate Tracks, terminating one type
cannot create sequence gaps in the other type's sequence space.</t>
        <t><strong>Object Entry Count (varint):</strong> Number of Object Entries that follow. When the
value is 0, the report contains only Summary Stats (for heartbeat purposes).</t>
      </section>
      <section anchor="object-entry">
        <name>Object Entry</name>
        <artwork><![CDATA[
Object Entry {
  Group ID (i),
  Object ID (i),
  Status (i),
  [Receive Timestamp Delta (i)],
}
]]></artwork>
        <t>Object Entries within the same MQF MUST be sorted in ascending order by <tt>(Group
ID, Object ID)</tt>.</t>
        <section anchor="group-id">
          <name>Group ID</name>
          <t>The Group ID (varint) of the Object in the associated media Track.</t>
        </section>
        <section anchor="object-id">
          <name>Object ID</name>
          <t>The Object ID (varint) within the identified Group of the associated media
Track.</t>
          <t>The media Full Track Name from Section 4.2, Group ID, and Object ID together
identify the media Object being reported. A Relay forwarding the same media
Track preserves these coordinates. A Relay that changes the Full Track Name or
media Object coordinates is publishing a different media Track and MUST NOT
associate its Feedback Track with the pre-transformation media Track.</t>
        </section>
        <section anchor="status">
          <name>Status</name>
          <t>Delivery status code (varint), see Section 5.3 for values.</t>
        </section>
        <section anchor="receive-timestamp-delta">
          <name>Receive Timestamp Delta</name>
          <t>Conditional presence field (varint, signed encoding): Present only when Status
is <tt>RECEIVED</tt> (0x00) or <tt>RECEIVED_LATE</tt> (0x01). Encoding rules:</t>
          <ul spacing="normal">
            <li>
              <t><strong>First received Object within the same MQF</strong> (i.e., the first entry with
Status <tt>RECEIVED</tt> or <tt>RECEIVED_LATE</tt> when iterating through the list): Let <tt>R</tt>
be the Report Timestamp and <tt>T_i</tt> be the Object's arrival time, both in
microseconds on the Feedback Publisher's local monotonic clock. The signed
Delta is <tt>T_i - R</tt>.</t>
            </li>
            <li>
              <t><strong>Subsequent received Objects:</strong> Let <tt>T_j</tt> be the arrival time of the most
recent preceding entry with Status <tt>RECEIVED</tt> or <tt>RECEIVED_LATE</tt>. The signed
Delta is <tt>T_i - T_j</tt>.</t>
            </li>
          </ul>
          <t>A decoder reconstructs <tt>T_i</tt> as <tt>R + Delta</tt> for the first received Object Entry
and as <tt>T_j + Delta</tt> for each subsequent received Object Entry. Each signed
Delta is encoded using the ZigZag mapping defined in Section 5.</t>
          <t><tt>NOT_RECEIVED</tt> and <tt>PARTIALLY_RECEIVED</tt> entries are skipped in the delta chain.</t>
          <t>Since Object Entries are sorted by <tt>(Group ID, Object ID)</tt> while Objects may
arrive out of order, delta values can be negative (indicating the Object arrived
earlier than the previous received Object in the list). Negative delta from
reordering is a valid network state signal.</t>
        </section>
      </section>
      <section anchor="delivery-status-codes">
        <name>Delivery Status Codes</name>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>0x00</tt></td>
              <td align="left">
                <tt>RECEIVED</tt></td>
              <td align="left">Completely received and within delivery deadline</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x01</tt></td>
              <td align="left">
                <tt>RECEIVED_LATE</tt></td>
              <td align="left">Completely received but exceeded delivery deadline</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x02</tt></td>
              <td align="left">
                <tt>NOT_RECEIVED</tt></td>
              <td align="left">No bytes received at report generation time</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x03</tt></td>
              <td align="left">
                <tt>PARTIALLY_RECEIVED</tt></td>
              <td align="left">Partial bytes received but Object is incomplete</td>
            </tr>
          </tbody>
        </table>
        <section anchor="receivedlate-determination">
          <name>RECEIVED_LATE Determination</name>
          <t>The Feedback Publisher MUST determine Object expiration based on a locally
available playback deadline:</t>
          <t>An Object is <tt>RECEIVED_LATE</tt> when its arrival time exceeds its expected playback
moment.</t>
          <t>When a playback deadline is unavailable (e.g., non-real-time playback
scenarios), the Feedback Publisher SHOULD report <tt>RECEIVED</tt> rather than
<tt>RECEIVED_LATE</tt>.</t>
          <t>For example, suppose the application determines that an Object is expected to be
available for playback at time <tt>10.180</tt> seconds on the Feedback Publisher's
monotonic clock. If the last byte arrives at <tt>10.195</tt> seconds, the Object is
reported as <tt>RECEIVED_LATE</tt>. If the MQF report is generated at <tt>10.220</tt> seconds
and this is the first received Object Entry in the report, its Receive Timestamp
Delta represents an arrival 25 milliseconds before the Report Timestamp. The
playback deadline and the 15-millisecond lateness are not carried in the report;
MQF reports the result of evaluating the application-provided deadline.</t>
        </section>
        <section anchor="notreceived-reporting-timing">
          <name>NOT_RECEIVED Reporting Timing</name>
          <t>The Feedback Publisher SHOULD report an Object as <tt>NOT_RECEIVED</tt> when one of the
following conditions is met:</t>
          <ul spacing="normal">
            <li>
              <t>A subsequent Object with a larger Object ID in the same Group has arrived, but
this Object has not.</t>
            </li>
            <li>
              <t>The Object's expected arrival time has exceeded <tt>2 x expected_interval</tt> (see
Section 5.4.6) without arrival, and no subsequent Object is available for
reference.</t>
            </li>
          </ul>
          <t>Condition 2 covers the "last Object lost" scenario (no subsequent Object to
trigger Condition 1).</t>
          <t>The Feedback Publisher MUST NOT report <tt>NOT_RECEIVED</tt> for Objects that are not
yet reasonably expected to arrive.</t>
        </section>
        <section anchor="partiallyreceived">
          <name>PARTIALLY_RECEIVED</name>
          <t>Applicable to Objects carried over QUIC Stream: When a Stream is terminated by
<tt>RESET_STREAM</tt> or closed due to timeout, Objects with partially received data
SHOULD be reported as <tt>PARTIALLY_RECEIVED</tt>.</t>
          <t>The timeout threshold used to determine whether a partially received Object
should be reported as <tt>PARTIALLY_RECEIVED</tt> is application-defined. Different
applications can use different thresholds according to their latency
requirements.</t>
          <t>For Objects carried over QUIC Datagram: Since QUIC Datagrams are not
retransmitted by the transport layer, any Object whose Datagram(s) are lost
results in incomplete data at the Feedback Publisher. If the Feedback Publisher
detects that some but not all Datagrams constituting an Object have arrived, and
the remaining Datagrams are not expected to arrive (e.g., a subsequent Object
has arrived or the application-defined timeout has expired), the Object SHOULD
be reported as <tt>PARTIALLY_RECEIVED</tt>. If no Datagrams for the Object have
arrived, the Object SHOULD be reported as <tt>NOT_RECEIVED</tt> instead.</t>
        </section>
      </section>
      <section anchor="summary-stats-block">
        <name>Summary Stats Block</name>
        <artwork><![CDATA[
Summary Stats {
  Report Interval (i),
  Total Objects Evaluated (i),
  Objects Received (i),
  Objects Received Late (i),
  Objects Lost (i),
  Avg Inter-Arrival Delta (i),
}
]]></artwork>
        <t>Summary Stats MUST always be included in every MQF report and are not controlled
by the negotiation bitmap. They provide a windowed aggregate view for Feedback
Consumers that do not process every Object Entry.</t>
        <t>The Report Interval window of Summary Stats is independent from the coverage of
Object Entries. Object Entries MAY include Objects outside the Report Interval
window (e.g., continuously reported NOT_RECEIVED entries, see Section 7.4).</t>
        <section anchor="report-interval">
          <name>Report Interval</name>
          <t>The time window length covered by this report (varint), in microseconds. This
window spans from <tt>Report Timestamp - Report Interval</tt> to <tt>Report Timestamp</tt>.
RECOMMENDED value is 50000-200000 (50-200ms).</t>
        </section>
        <section anchor="total-objects-evaluated">
          <name>Total Objects Evaluated</name>
          <t>Total number of Objects (varint) evaluated within the Report Interval window.
Includes Objects of all statuses. MUST equal <tt>Objects Received + Objects
Received Late + Objects Lost</tt>.</t>
        </section>
        <section anchor="objects-received">
          <name>Objects Received</name>
          <t>Number of Objects (varint) with status <tt>RECEIVED</tt> within the window.</t>
        </section>
        <section anchor="objects-received-late">
          <name>Objects Received Late</name>
          <t>Number of Objects (varint) with status <tt>RECEIVED_LATE</tt> within the window.</t>
        </section>
        <section anchor="objects-lost">
          <name>Objects Lost</name>
          <t>Number of Objects (varint) with status <tt>NOT_RECEIVED</tt> or <tt>PARTIALLY_RECEIVED</tt>
within the window.</t>
        </section>
        <section anchor="avg-inter-arrival-delta">
          <name>Avg Inter-Arrival Delta</name>
          <t>Average arrival interval deviation (varint, signed encoding) of consecutive
received Object pairs within the window, in microseconds. Calculation method:</t>
          <t>For consecutive received Object pairs (i-1, i) sorted by arrival time within the
window:</t>
          <artwork><![CDATA[
delta(i) = (A(i) - A(i-1)) - expected_interval
Avg Inter-Arrival Delta = mean(delta(i)) for all i
]]></artwork>
          <t>Where <tt>A(i)</tt> is the arrival time of Object i, and <tt>expected_interval</tt> is the
expected arrival interval.</t>
          <t>Methods to determine <tt>expected_interval</tt> (by priority):</t>
          <ol spacing="normal" type="1"><li>
              <t>A nominal Object interval supplied by the media format or application.</t>
            </li>
            <li>
              <t>Historical average arrival interval within current session (sliding window).</t>
            </li>
          </ol>
          <t>If neither method is available, the Feedback Publisher SHOULD use method 2 or
set this field to 0.</t>
          <t>Positive values indicate Object arrival interval greater than expected
(increased queuing), negative values indicate less than expected. When fewer
than 2 received Objects exist in the window, this field MUST be 0.</t>
        </section>
      </section>
      <section anchor="optional-media-metrics">
        <name>Optional Media Metrics</name>
        <t>Optional Media Metrics immediately follow Summary Stats. <tt>Optional Metric Count</tt>
(varint) specifies the number of subsequent Optional Metrics; a value of 0
indicates no optional metrics are included.</t>
        <t>Each metric uses the following MQF type/value pair. Both fields use the QUIC
variable-length integer encoding defined for report Payloads in Section 5:</t>
        <artwork><![CDATA[
Optional Metric {
  Metric Type (i),
  Metric Value (i),
}
]]></artwork>
        <t>Defined metric types are divided into two categories: Application-Layer Metrics
and QUIC Layer Summary Metrics.</t>
        <t><strong>Application-Layer Metrics:</strong></t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Unit</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>0x02</tt></td>
              <td align="left">
                <tt>PLAYOUT_AHEAD_MS</tt></td>
              <td align="left">milliseconds</td>
              <td align="left">Remaining time until playback stall at the Feedback Publisher, i.e., buffered but not yet played media duration. Smaller values indicate closer to stall (0 = currently stalled).</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x04</tt></td>
              <td align="left">
                <tt>ESTIMATED_BANDWIDTH_KBPS</tt></td>
              <td align="left">kbps</td>
              <td align="left">Bandwidth estimate reported by the Feedback Publisher. The estimation method is application-defined.</td>
            </tr>
          </tbody>
        </table>
        <t><strong>QUIC Layer Summary Metrics:</strong></t>
        <t>The following metrics expose summary information about the Feedback Publisher's
local QUIC connection to the Feedback Consumer.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Unit</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>0x10</tt></td>
              <td align="left">
                <tt>PEER_RTT_US</tt></td>
              <td align="left">microseconds</td>
              <td align="left">Feedback Publisher's local QUIC connection smoothed RTT, corresponding to <tt>smoothed_rtt</tt> in RFC 9002.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>0x12</tt></td>
              <td align="left">
                <tt>PEER_LOSS_RATE</tt></td>
              <td align="left">per mille</td>
              <td align="left">Feedback Publisher's local QUIC connection packet loss rate within Report Interval, expressed in per mille (e.g., 50 = 5.0%).</td>
            </tr>
          </tbody>
        </table>
        <t>Object Entries and Summary Stats carry the core MQF report information. Optional
Metrics provide supplementary application- or transport-level observations.</t>
        <t>Type values <tt>0x00-0x1f</tt> are reserved for this specification. Values <tt>0x20</tt> and
above are available for application-layer custom use.</t>
        <t>The Feedback Consumer MUST ignore unrecognized Metric Types.</t>
        <t>Optional Media Metrics MAY be included in an MQF report only when both endpoints
have declared <tt>OPTIONAL_METRICS</tt> in their Setup Options (Section 6). When that
capability is not enabled, <tt>Optional Metric Count</tt> MUST be 0.</t>
      </section>
      <section anchor="report-size-control">
        <name>Report Size Control</name>
        <t>A single MQF report is RECOMMENDED not to exceed 1200 bytes to avoid QUIC packet
fragmentation.</t>
        <t>When the number of Objects to report exceeds the capacity of a single MQF
report, the Feedback Publisher SHOULD:</t>
        <ul spacing="normal">
          <li>
            <t>Prioritize including recent Object Entries (largest media Object locations).</t>
          </li>
          <li>
            <t>Trim the oldest Object Entries.</t>
          </li>
          <li>
            <t>Ensure Summary Stats covers the complete Report Interval window (Summary Stats
is not affected by Object Entry trimming).</t>
          </li>
        </ul>
        <section anchor="encoding-example">
          <name>Encoding Example</name>
          <t>The following is an encoding structure of a typical MQF report containing
delivery status of the 5 most recent Objects on the <tt>audio_response</tt> Track.
Object Entries are sorted in ascending order by <tt>(Group ID, Object ID)</tt>. Signed
fields use ZigZag-encoded unsigned values (encoding convention at the beginning
of Section 5). The Feedback Track carries the <tt>MQF_FEEDBACK_TYPE</tt> Track Property
with value <tt>ORIGIN_FEEDBACK</tt>.</t>
          <artwork><![CDATA[
MQF Report:
  Report Timestamp: 2000000 (2000000us = 2s since setup)
  Report Sequence: 10 (10th report)
  Object Entry Count: 5 (5 Objects)

  Object Entry [0]: (smallest media Object location, first in list)
    Group ID: 7
    Object ID: 96
    Status: 0x00 (RECEIVED)
    Recv Ts Delta: 189999 (ZigZag(-95000): 95ms before Report Timestamp)
    (First received Object, baseline=Report Timestamp)

  Object Entry [1]:
    Group ID: 7
    Object ID: 97
    Status: 0x02 (NOT_RECEIVED)
    (No Recv Ts Delta)

  Object Entry [2]:
    Group ID: 7
    Object ID: 98
    Status: 0x01 (RECEIVED_LATE)
    Recv Ts Delta: 100000 (ZigZag(+50000): 50ms later than Object 96)
    (Skip NOT_RECEIVED 97, baseline=Object 96)

  Object Entry [3]:
    Group ID: 7
    Object ID: 99
    Status: 0x00 (RECEIVED)
    Recv Ts Delta: 40000 (ZigZag(+20000): 20ms later than Object 98)

  Object Entry [4]:
    Group ID: 7
    Object ID: 100
    Status: 0x00 (RECEIVED)
    Recv Ts Delta: 40000 (ZigZag(+20000): 20ms later than Object 99)

  Summary Stats:
    Report Interval: 100000 (100000us = 100ms)
    Total Objects Evaluated: 5
    Objects Received: 3
    Objects Received Late: 1
    Objects Lost: 1
    Avg Inter-Arrival Delta: 6000
      (ZigZag(+3000): avg arrival interval 3ms larger)

  Optional Metric Count: 2
  Optional Metric [0]:
    Metric Type: 0x02 (PLAYOUT_AHEAD_MS)
    Metric Value: 150 (playout headroom 150ms)
  Optional Metric [1]:
    Metric Type: 0x04 (ESTIMATED_BANDWIDTH_KBPS)
    Metric Value: 800 (estimated bandwidth 800kbps)
]]></artwork>
          <t>In this example, the Track Property identifies an <tt>ORIGIN_FEEDBACK</tt> Track.
Intermediate Relays forward the Track toward the Media Original Publisher
without inspecting its MQF Payload. Object 97 in Group 7 is lost and Object 98
arrived late. Object 98's delta (+50ms) is significantly larger than normal
interval (~20ms). Avg Inter-Arrival Delta is positive (+3ms) indicating
larger-than-expected arrival intervals. PLAYOUT_AHEAD_MS is only 150ms. These
signals combined indicate deteriorating network conditions.</t>
        </section>
      </section>
    </section>
    <section anchor="negotiation">
      <name>Negotiation</name>
      <section anchor="setup-option">
        <name>Setup Option</name>
        <t>This extension is defined for MOQT draft-22. Endpoints declare MQF support using
the <tt>MOQT_FEEDBACK</tt> Setup Option in the symmetric SETUP exchange described in
<xref target="MoQTransport"/>, Sections 6.3.2 and 9.1. Each endpoint sends SETUP as the first
message on its own unidirectional control stream. Either endpoint can send
first, without waiting for the other endpoint's SETUP.</t>
        <t>The MOQT version is selected during session establishment using ALPN for native
QUIC or WT-Available-Protocols for WebTransport, as specified in
<xref target="MoQTransport"/>, Section 6.2. The protocol identifier for draft-22 is
<tt>moqt-22</tt>. SETUP carries neither a transport version field nor a ROLE option.
The SETUP message has Type <tt>0x2F00</tt>, a 16-bit message Length, and a sequence of
Setup Options bounded by that Length; there is no option count.</t>
        <t><tt>MOQT_FEEDBACK</tt> has an even Option Type, TBD1. It uses the Key-Value-Pair
encoding in <xref target="MoQTransport"/>, Section 8.3:</t>
        <artwork><![CDATA[
MOQT_FEEDBACK Setup Option {
  Delta Type (vi64),
  Capability Bitmap (vi64),
}
]]></artwork>
        <t>Delta Type is TBD1 minus the previous Option Type in this SETUP, or TBD1 if this
is the first option. Options are ordered by their decoded Type. Because TBD1 is
even, the value is a single MOQT variable-length integer and no option Length
field is present. These fields use MOQT <tt>vi64</tt>, not the QUIC integer encoding
used in MQF report Payloads.</t>
        <t>An endpoint MUST NOT include more than one <tt>MOQT_FEEDBACK</tt> option in SETUP. An
MQF endpoint receiving a duplicate MUST close the session with
<tt>PROTOCOL_VIOLATION</tt>. A value that does not match this serialization is handled
as <tt>KEY_VALUE_FORMATTING_ERROR</tt> under <xref target="MoQTransport"/>, Section 8.3. An endpoint
that does not recognize the option ignores it under the MOQT Setup Option rules.</t>
        <t>The option declares support for MQF report format version 0. Its Capability
Bitmap has the following bit definitions:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">
                <tt>PUBLISH_FEEDBACK</tt></td>
              <td align="left">Support publishing Feedback Tracks on this MOQT session</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">
                <tt>OPTIONAL_METRICS</tt></td>
              <td align="left">Support Optional Media Metrics (Section 5.5)</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">
                <tt>SUBSCRIBE_FEEDBACK</tt></td>
              <td align="left">Support subscribing to Feedback Tracks on this MOQT session</td>
            </tr>
            <tr>
              <td align="left">3-63</td>
              <td align="left">Reserved</td>
              <td align="left">Endpoints MUST set these bits to 0 and MUST ignore them when received</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Negotiation Example:</strong></t>
        <t>The following diagram shows logical option types and values. Other Setup
Options, including any required by the transport, are omitted. On the wire,
Option Types are delta-encoded as described above. The two SETUP messages are
independent advertisements; their order here does not imply a response or a
requirement to wait.</t>
        <artwork><![CDATA[
Endpoint A                          Endpoint B
  |                                    |
  | SETUP(options=[                    |
  |   {type=TBD1, value=0x06}          |  OPTIONAL_METRICS +
  | ])                                 |  SUBSCRIBE_FEEDBACK
  |----------------------------------->|
  |                                    |
  | SETUP(options=[                    |
  |   {type=TBD1, value=0x03}          |  PUBLISH_FEEDBACK +
  | ])                                 |  OPTIONAL_METRICS
  |<-----------------------------------|
  |                                    |
  | After both SETUPs:                 |
  |   B -> A feedback is enabled.      |
  |   A -> B feedback is disabled.     |
  |   Optional Metrics are enabled.    |
]]></artwork>
      </section>
      <section anchor="capability-negotiation-rules">
        <name>Capability Negotiation Rules</name>
        <t>Each capability bit describes the endpoint that sends the Setup Option.
<tt>PUBLISH_FEEDBACK</tt> and <tt>SUBSCRIBE_FEEDBACK</tt> are complementary endpoint
capabilities; they do not require both endpoints to declare the same bit. A
Feedback Track from Endpoint A to Endpoint B can be established only when
Endpoint A has declared <tt>PUBLISH_FEEDBACK</tt> and Endpoint B has declared
<tt>SUBSCRIBE_FEEDBACK</tt>.</t>
        <t>An endpoint MUST send its SETUP and receive the peer's SETUP before establishing
a Feedback Track or sending MQF Objects. An endpoint MUST NOT use capabilities
remembered from an earlier session to send Feedback Track requests or MQF
Objects in 0-RTT before the current exchange completes. After applying the
default of zero for an omitted option, each endpoint computes the same
directional result:</t>
        <ul spacing="normal">
          <li>
            <t>A-to-B feedback requires A's <tt>PUBLISH_FEEDBACK</tt> and B's <tt>SUBSCRIBE_FEEDBACK</tt>.</t>
          </li>
          <li>
            <t>B-to-A feedback requires B's <tt>PUBLISH_FEEDBACK</tt> and A's <tt>SUBSCRIBE_FEEDBACK</tt>.</t>
          </li>
          <li>
            <t>Optional Metrics require both endpoints' <tt>OPTIONAL_METRICS</tt> bits and do not
enable either feedback direction by themselves.</t>
          </li>
        </ul>
        <t>An endpoint that has not declared <tt>PUBLISH_FEEDBACK</tt> MUST NOT publish a Feedback
Track. When an endpoint receives a PUBLISH for a Feedback Track, it MUST reject
the request with <tt>REQUEST_ERROR</tt> if the peer did not declare <tt>PUBLISH_FEEDBACK</tt>
or if the receiving endpoint did not declare <tt>SUBSCRIBE_FEEDBACK</tt>.</t>
        <t>Optional Media Metrics are enabled only when both endpoints have declared
<tt>OPTIONAL_METRICS</tt>. An MQF report MUST NOT include Optional Metrics when that
capability is not enabled.</t>
        <t>These capability rules apply to all MOQT endpoints, including Relays,
independently on each MOQT session.</t>
      </section>
      <section anchor="behavior-when-option-not-declared">
        <name>Behavior When Option Not Declared</name>
        <t>When a peer's SETUP does not include the <tt>MOQT_FEEDBACK</tt> option, that peer is
treated as having declared a zero Capability Bitmap and does not support
publishing or subscribing to Feedback Tracks. An endpoint MUST NOT publish a
Feedback Track to that peer and MUST reject a Feedback Track PUBLISH received
from that peer. The absence of this option does not prevent ordinary media Track
operation.</t>
      </section>
      <section anchor="runtime-capability-change">
        <name>Runtime Capability Change</name>
        <t>This version does not support runtime changes to Media over QUIC Feedback
capability. If change is needed, MoQ session MUST be re-established.</t>
      </section>
    </section>
    <section anchor="media-subscriber-behavior">
      <name>Media Subscriber Behavior</name>
      <t>A Media Subscriber that publishes MQF reports acts as the Feedback Publisher for
the associated media Track. This section describes that Media Subscriber
behavior.</t>
      <section anchor="arrival-time-recording">
        <name>Arrival Time Recording</name>
        <t>The Media Subscriber MUST record the arrival time of each Object. Arrival time
is defined as the moment when the last byte of the Object arrives at the Media
Subscriber's MoQ layer. Implementation MUST use monotonic clock, unaffected by
system time adjustments. Time precision SHOULD be no less than 1 millisecond,
RECOMMENDED to be microsecond-level.</t>
      </section>
      <section anchor="delivery-status-determination">
        <name>Delivery Status Determination</name>
        <t>The Media Subscriber MUST maintain delivery status for each known Object:</t>
        <ul spacing="normal">
          <li>
            <t>Last byte of Object arrives and within deadline: <tt>RECEIVED</tt> (0x00).</t>
          </li>
          <li>
            <t>Last byte of Object arrives but exceeds deadline: <tt>RECEIVED_LATE</tt> (0x01).</t>
          </li>
          <li>
            <t>Object has not arrived but is reasonably considered lost (see Section 5.3):
<tt>NOT_RECEIVED</tt> (0x02).</t>
          </li>
          <li>
            <t>Object partially arrived and carrying Stream is closed: <tt>PARTIALLY_RECEIVED</tt>
(0x03).</t>
          </li>
        </ul>
        <t>Object status MAY be updated in subsequent MQF. For example, from <tt>NOT_RECEIVED</tt>
to <tt>RECEIVED</tt> (when a delayed Object is eventually received). Therefore, counts
such as <tt>Objects Lost</tt> in Summary Stats reflect an observation snapshot at
report generation time rather than final delivery statistics.</t>
      </section>
      <section anchor="mqf-generation-timing">
        <name>MQF Generation Timing</name>
        <t>The frequency of MQF reports is application- and deployment-defined. A Feedback
Publisher needs to balance the freshness required by its Feedback Consumer
against the bandwidth and processing cost of the Feedback Track. This document
does not define media-specific reporting intervals or require MQF reports to be
used as a session heartbeat.</t>
        <t>A Feedback Publisher MAY generate an additional report when a recent Object
changes status rather than waiting for its next periodic report.</t>
      </section>
      <section anchor="object-entry-selection">
        <name>Object Entry Selection</name>
        <t>The number of Object Entries in an MQF report is not fixed. A Feedback Publisher
selects Object Entries according to its reporting policy and report-size budget.</t>
        <t>When selecting Object Entries:</t>
        <ul spacing="normal">
          <li>
            <t>If not all candidate Object Entries are included, the Feedback Publisher
SHOULD prioritize recently observed Objects.</t>
          </li>
          <li>
            <t>An Object reported in a previous MQF report MAY be omitted when its status has
not changed.</t>
          </li>
          <li>
            <t>A later report can update the reported status of an Object.</t>
          </li>
        </ul>
        <t>The absence of an Object Entry from a report does not indicate any delivery
status for that Object. Each report represents the observations included at its
generation time.</t>
      </section>
      <section anchor="exception-handling">
        <name>Exception Handling</name>
        <ul spacing="normal">
          <li>
            <t><strong>Object Out-of-Order Arrival:</strong> The Media Subscriber MUST record by actual
arrival time without reordering. Arrival time reflects actual network
behavior; out-of-order itself is a valid network signal.</t>
          </li>
          <li>
            <t><strong>Duplicate Objects:</strong> The Media Subscriber SHOULD identify duplicates by
Group ID and Object ID, ignore duplicate arrivals, and retain the first
arrival time.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="media-publisher-behavior">
      <name>Media Publisher Behavior</name>
      <t>A Media Publisher that terminates and interprets an associated Feedback Track
acts as its Feedback Consumer. This section describes how the Media Publisher
processes MQF reports for the associated media Track.</t>
      <section anchor="report-consumption">
        <name>Report Consumption</name>
        <t>A Feedback Consumer uses the media Full Track Name, Group ID, and Object ID in
an MQF report to associate each reported status with an Object from the
corresponding media Track.</t>
        <t>MQF reports describe observations made by a Feedback Publisher. A Feedback
Consumer can make valid reports available to the Application.</t>
      </section>
    </section>
    <section anchor="application-usage-considerations">
      <name>Application Usage Considerations</name>
      <t>This non-normative section illustrates conditions that can cause an application
to generate feedback, the information conveyed in an MQF report, and possible
actions by a Feedback Consumer. MQF conveys observations rather than control
commands; adaptation strategies and coordination between decision points are
application-defined.</t>
      <section anchor="relay-local-feedback-consumption">
        <name>Relay-Local Feedback Consumption</name>
        <t>Consider a live-streaming deployment that supports Relay-executed Track
selection through a separate Track-switching mechanism. The application makes
the same video available through a high-bitrate Track and a low-bitrate Track. A
Media Subscriber configures these Tracks as acceptable alternatives and
authorizes the adjacent Relay to select between them. While the Relay is
forwarding the high-bitrate Track, several complete Objects arrive after their
application-defined playback deadlines and the Media Subscriber's playout
headroom decreases. The Media Subscriber publishes a <tt>HOP_FEEDBACK</tt> report
containing <tt>RECEIVED_LATE</tt> Object Entries, a nonzero <tt>Objects Received Late</tt>
count, and, when Optional Media Metrics have been enabled, a decreasing
<tt>PLAYOUT_AHEAD_MS</tt> value.</t>
        <t>The adjacent Relay terminates the Feedback Track and can use the report as an
application-level input in addition to transport information available on the
downstream MOQT session. For example, the Relay's Track-selection logic might
change the selected representation from the high-bitrate Track to the
low-bitrate Track. A later series of reports showing timely Object delivery and
recovered playout headroom might contribute to selecting the high-bitrate Track
again. MQF identifies the affected media Track and conveys the observations, but
it does not identify alternative representations, authorize Relay-executed
selection, define when a switch occurs, or provide a Track-switching procedure.</t>
      </section>
      <section anchor="source-adaptation-with-end-to-end-feedback">
        <name>Source Adaptation with End-to-End Feedback</name>
        <t>Consider an interactive conference in which a Media Original Publisher produces
only one representation of a real-time video Track. A Media Subscriber receives
the Track either directly with no Relay or through one or more Relays. The rate
of the published representation persistently exceeds what can be delivered in
time over the complete path. Suppose a report interval covers five Objects: two
are <tt>RECEIVED</tt>, two are <tt>RECEIVED_LATE</tt>, and one is <tt>NOT_RECEIVED</tt>. On a direct
path, or when Relays forward the media Track without republishing or
transforming it, the Media Original Publisher can interpret the reported Group
ID and Object ID. The Media Subscriber therefore publishes these observations as
<tt>ORIGIN_FEEDBACK</tt>.</t>
        <t>When the path contains Relays, they forward the <tt>ORIGIN_FEEDBACK</tt> Track without
interpreting its MQF Payload. In either topology, MQF reports whether Objects
reached the Media Subscriber before their application-defined deadlines. In a
cascaded topology, transport feedback on the Media Original Publisher's
immediate MOQT session describes only that session and does not provide this
end-to-end outcome. A Relay also has no lower-bitrate Track to select in this
example and, when acting solely as a forwarding Relay, cannot modify the opaque
media Payload to reduce the source bitrate.</t>
        <t>The Media Original Publisher can use a continuing pattern of late or missing
Objects as one input when deciding whether to reduce the source encoding or
generation rate. This is an action that neither the Media Subscriber nor a Relay
acting solely as a forwarding Relay can perform on the original media source.</t>
      </section>
      <section anchor="selecting-feedback-tracks-with-topn">
        <name>Selecting Feedback Tracks with TopN</name>
        <t>Consider a deployment that supports the proposed Top Tracks Filter mechanism
<xref target="TopTracks"/>. Ten Media Subscribers receive the same media Track through one or
more Relays and publish separate <tt>ORIGIN_FEEDBACK</tt> Tracks. The application
defines a ranking Property for feedback selection. Tracks with larger values of
this Property are selected first. Each Feedback Publisher exposes the ranking
value as a Relay-visible Object Property on its feedback Objects, outside the
MQF Payload.</t>
        <t>The Media Original Publisher, acting as the Feedback Subscriber, requests the
five Feedback Tracks with the highest values of that Property from its adjacent
Relay. The candidate set is scoped to feedback for the associated media Track.
The Relay executes the requested selection using the exposed Property, without
interpreting or modifying the MQF Payload. As ranking values change, the
selected Tracks can change according to the Track-selection mechanism.</t>
        <t>In a multi-relay deployment, the requested filter can be propagated toward the
Feedback Publishers so that intermediate Relays also perform selection. For
example, Relay C can request up to five Feedback Tracks from each of Relays A
and B and select five from their combined candidates:</t>
        <artwork><![CDATA[
Subscribers A --> Relay A --+
                  (Top5)   |
                           +--> Relay C --> Media Original Publisher
                           |    (Top5)
Subscribers B --> Relay B --+
                  (Top5)
]]></artwork>
        <t>Subscribers A and B are two subsets of the ten Media Subscribers. Arrows show
the feedback flow; filter requests travel in the opposite direction. Each Top5
selection forwards up to five Feedback Tracks.</t>
        <t>Each branch uses the same ranking Property with comparable values and restricts
its candidates to feedback for the associated media Track. This allows filtering
before feedback reaches the Relay adjacent to the Media Original Publisher.
Selection updates, tie handling, and timeouts follow the separate
Track-selection mechanism; MQF does not define a distributed selection algorithm
or require simultaneous selection changes across Relays.</t>
        <t>The Media Original Publisher receives MQF reports from up to five selected
Feedback Tracks, each carrying the observations of its individual Feedback
Publisher.</t>
      </section>
      <section anchor="cache-feedback-as-an-optional-extension">
        <name>Cache Feedback as an Optional Extension</name>
        <t>Consider a deployment in which a Relay caches a media Track and serves
subsequent FETCH requests for its Objects. The Media Original Publisher supplies
<tt>MAX_CACHE_DURATION</tt> as defined in <xref target="MoQTransport"/>, Section 10.3. For example,
an Object has a cache duration of ten seconds, measured from when the Relay
began receiving it. The Relay evicts the cached Object after three seconds due
to local resource constraints. A FETCH requesting that Object after five
seconds encounters a local cache miss. The cache duration limits how long an
Object can be served from a cache; it does not guarantee retention until that
limit.</t>
        <t>A separate extension or application agreement could define feedback describing
such misses. The Relay has direct knowledge of its cache operations and, when
it retains sufficient metadata, can distinguish an Object that was cached and
evicted early from one that was never cached or whose cache duration has
expired. A downstream Media Subscriber cannot infer this cause solely from a
missing Object. A local cache miss also does not necessarily imply a delivery
failure, since the Relay might retrieve the Object from an upstream Publisher.</t>
        <t>Under such an extension, the Relay acts as a Feedback Publisher and publishes a
new <tt>ORIGIN_FEEDBACK</tt> Track associated with the media Track. It uses a distinct
Feedback Full Track Name and Report Sequence space. The Feedback Track follows
the existing establishment, authorization, and reverse media-path binding rules.
Intermediate Relays forward its MQF Payload without interpreting it. The Media
Original Publisher consumes the Relay's own cache observations, rather than
interpreting them as delivery outcomes observed by a downstream Subscriber.</t>
        <t>The extension could use Optional Media Metrics to convey scalar counters, such
as the number of FETCH requests evaluated and the number affected by early
eviction. These metrics would supplement the existing MQF report structure and
would be carried only when Optional Media Metrics are enabled. The extension
would define the metric identifiers and meanings, the reporting interval and
counting rules, and the scope and completeness of the observations, including
how to represent unavailable eviction history. The generic <tt>OPTIONAL_METRICS</tt>
capability does not establish agreement on these extension-specific semantics.
Cache misses would not change the meanings of Object delivery status or the
Summary Stats fields, including <tt>Objects Lost</tt>.</t>
        <t>The Media Original Publisher could use these observations to assess how cache
retention affects retrieval and recovery in the deployment. For example,
frequent cache misses caused by early eviction could lead the Media Original
Publisher to extend its own Object retention window. This can reduce the risk
that a Relay's upstream retrieval fails because the Object is no longer
available at the origin. Any resulting cache or application policy remains
outside MQF. This example does not define cache feedback metrics or require
Relays to retain eviction history. Interoperable cache feedback requires the
separate extension or application agreement.</t>
      </section>
      <section anchor="relay-derived-feedback-from-multiple-subscribers">
        <name>Relay-Derived Feedback from Multiple Subscribers</name>
        <t>Consider an interactive conference in which an adjacent Relay forwards the same
media Track to multiple Media Subscribers. Each Media Subscriber publishes
<tt>HOP_FEEDBACK</tt> describing the delivery outcome it observes. The Relay can
interpret each report together with local forwarding observations, such as
whether an Object was available at the Relay in time for downstream delivery and
whether similar outcomes were reported by multiple Media Subscribers.</t>
        <t>A future extension could define how a Relay aggregates these observations before
sending feedback upstream. For example, it could distinguish an outcome reported
by one Media Subscriber from an outcome reported by several Media Subscribers,
or combine several reports to limit the number of Feedback Tracks delivered to
the Media Original Publisher. If the Relay makes the resulting observations
available to the Media Original Publisher, it acts as a new Feedback Publisher
and publishes a new <tt>ORIGIN_FEEDBACK</tt> report associated with the upstream media
Track.</t>
        <t>Under such an extension, the Relay consumes the Subscriber-generated
<tt>HOP_FEEDBACK</tt> reports and combines them with its local observations. It then
generates a separate <tt>ORIGIN_FEEDBACK</tt> report with a new Feedback Full Track
Name, Report Sequence space, and MQF Payload. The Relay does not relabel or
mechanically forward the received <tt>HOP_FEEDBACK</tt> Objects. Intermediate Relays
forward the new <tt>ORIGIN_FEEDBACK</tt> Track without interpreting its Payload. Such
aggregated reports are not interoperable based on this document alone; an
extension defining them needs to specify the represented Media Subscribers, the
aggregation method, and the interpretation of each reported field.</t>
        <t>Applications such as interactive conferencing, live streaming, cloud rendering,
gaming, and live-agent media can interpret Object delivery status according to
their own media format and latency objectives.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines the following code points for registration:</t>
      <ul spacing="normal">
        <li>
          <t><strong>TBD1:</strong> MOQT_FEEDBACK in the MOQT Setup Options registry (<xref target="MoQTransport"/>,
Section 16.4), with an even Option Type and a <tt>vi64</tt> capability bitmap value
(Section 6.1).</t>
        </li>
        <li>
          <t><strong>TBD2:</strong> MQF_FEEDBACK_TYPE in the MOQ Properties registry (<xref target="MoQTransport"/>,
Section 16.8), with an even Property Type outside the Mandatory Track Property
range and a <tt>vi64</tt> value, scoped to Tracks (Section 4.1).</t>
        </li>
        <li>
          <t><strong>Feedback Type Registry</strong> (Section 4.1):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>0x00</tt>: HOP_FEEDBACK</t>
            </li>
            <li>
              <t><tt>0x01</tt>: ORIGIN_FEEDBACK</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Delivery Status Code Registry</strong> (Section 5.3):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>0x00</tt>: RECEIVED</t>
            </li>
            <li>
              <t><tt>0x01</tt>: RECEIVED_LATE</t>
            </li>
            <li>
              <t><tt>0x02</tt>: NOT_RECEIVED</t>
            </li>
            <li>
              <t><tt>0x03</tt>: PARTIALLY_RECEIVED</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Optional Metrics Type Registry</strong> (Section 5.5):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>0x02</tt>: PLAYOUT_AHEAD_MS</t>
            </li>
            <li>
              <t><tt>0x04</tt>: ESTIMATED_BANDWIDTH_KBPS</t>
            </li>
            <li>
              <t><tt>0x10</tt>: PEER_RTT_US</t>
            </li>
            <li>
              <t><tt>0x12</tt>: PEER_LOSS_RATE</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Cullen Jennings for his valuable review
comments, proposed revisions, and insightful suggestions on application
scenarios for this document.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <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="1" month="October" 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-22"/>
        </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="quic-receive-ts">
          <front>
            <title>QUIC Extended Acknowledgement for Reporting Packet Receive Timestamps</title>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Joseph Beshay" initials="J." surname="Beshay">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document defines an extension to the QUIC transport protocol
   which supports reporting multiple packet receive timestamps for post-
   handshake packets.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-receive-ts-01"/>
        </reference>
        <reference anchor="TopTracks" target="https://github.com/moq-wg/moq-transport/pull/1981">
          <front>
            <title>Top Tracks Filter (MOQT Pull Request #1981)</title>
            <author initials="M." surname="Zanaty" fullname="Mo Zanaty">
              <organization/>
            </author>
            <date year="2026" month="October" day="12"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA719aVPkVrbg9/srNOWYMdiZaaAW27jtaKqKavO6tgbcPX4d
PYXIFKCuTCktKQvzjPtvzA+aPzZnv4skqJp4b4iwCzKlu5x77tmX6XTqFvW8
ylfFfrZo8otuuiw301X9y/SiKBbn+fz9dGfXdWW3hAde1X/JXsjHLm+KfD97
cLBeL8t53pV11WZ5tciOi3w5PS1XxQN3XTfvL5t6s4bnXhWLMs/efCia7C8/
HT174N4XN/D9Yj87qrqiqYpu+hznd25d7md/7+r5JGvrpmuKixZ+u1nhL/9w
83pRVpf72aad5u28LB1MXVzWzc1+1nYL18Lz+QrGPDx94cp1s591zabt9nZ2
vt3Zg29hge/yZV0V9EXhXL7prupm32XZFP7LsrJq97OfZ9nLckN/M2R+zqtV
UdqHdXOZV+V/0Kb3s4NleZ6f57CP+Yy+LlZ5udzPVmVe/7OcLW9Wf8z5kWkJ
j8zrlYunezXL/q3Mq8tgwlewyatNGXwug/4TP1jxt7Crh3+8xM8HBj2eZX8L
t3Bc4zu5fphsoeqyP+FBRRtoZtebP+ZVR0fIU1R1s4J3PhQIMTzH6enxweuT
t2+OT+H5i/m3Ozs78A0gymmTV+0aDhAOY/p8xrhVFt0FIVen30739pxzZXUR
DvzLppxPm2JewN/Tru2NkHyPGJplp/Ua5py/b/dpD4KyD+DjjD/PXpRLwLRs
69Wbv5xmbzfLJeDqL5ui7bLPdr/9Znf7Ab+YN5cFrPqq69bt/ldfXZbd1eYc
t/8Vrvz68qtoA1+tYaCv8H162+MT/kz1OOvs3/Mq727kc3/wwccLwOT9bG9n
78l0d2e6C3CZTqdZfg44nc/hXpxelW0Gl3WzKuC4FsVFWRVtxveq1ntl9xO2
+ZcX2xO4klnxa1dULRx01tXB846et3NiuGxn3VXeZUWVny9h9EWxBBg3N3Ak
gMPdTWYnBaPl5/Wmy1Y4oHtz/s9i3rU4w3mRNQWOWCzgmgKq+jXxQcyyI7/+
q/o6/T4D0uLytq3nZY6DXMMJ8DTywCSDQ4MFlu1VsZhksKLrvFnAk90VoOrl
FZzrMr9pcfMLoBhVCyCD57oaDvYKAEUDwm8ZgEjWmvG2iILN83V+XtJ2K6At
XUnbneHTMNpqvSzwBGCvhsQwGwzblpdVvmx5+HXRTBkoHogB8GaOj3dVLhZL
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
aTrrAAA=

-->

</rfc>
