<?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 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sharma-moq-cache-signaling-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="moq-cache-signaling">Cache Signaling for Media over QUIC Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-sharma-moq-cache-signaling-00"/>
    <author initials="A." surname="Sharma" fullname="Aman Sharma">
      <organization>Meta</organization>
      <address>
        <email>amsharma@meta.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="15"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>media over quic</keyword>
    <keyword>cache</keyword>
    <keyword>relay</keyword>
    <abstract>
      <?line 49?>

<t>This document defines optional hop-by-hop cache signaling for Media over
QUIC Transport (MOQT). A subscriber can query the cache status of a finite
Track range or request the cache status of a FETCH. Responses report a hit,
miss, or partial hit and can identify locally cached ranges.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://sharmafb.github.io/draft-sharma-moq-cache-signaling/draft-sharma-moq-cache-signaling.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sharma-moq-cache-signaling/"/>.
      </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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/sharmafb/draft-sharma-moq-cache-signaling"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Media over QUIC Transport (MOQT) <xref target="MOQT"/> permits Relays to cache Objects, but
does not expose local-cache coverage to subscribers. That information can aid
relay selection, rewind and representation choices, deadline-sensitive
retrieval, measurement, and debugging.</t>
      <t>This document defines a cache query on TRACK_STATUS and cache reporting on
FETCH. Both return the same status and cached-range format and describe only
the responding endpoint. The signals are advisory and do not define cache
policy or change SUBSCRIBE or FETCH processing.</t>
      <t>This document defines no new MOQT message types. It defines one Setup Option
and three Message Parameters.</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 the terms Object, Group, Track, Location, Publisher,
Subscriber, Relay, Message Parameter, and Setup Option as defined in <xref target="MOQT"/>.</t>
      <t>This specification is based on version 18 of <xref target="MOQT"/>, identified by the
<tt>moqt-18</tt> protocol identifier. Its use with another version of MOQT is
undefined unless that version or a later revision of this document explicitly
declares compatibility.</t>
      <dl>
        <dt>Local Cache:</dt>
        <dd>
          <t>Storage controlled by the responding endpoint that contains a complete
Normal Object and its associated metadata. An Object is locally cached only
if the endpoint can use it without initiating or waiting for an upstream
MOQT operation.</t>
        </dd>
        <dt>Cached Range:</dt>
        <dd>
          <t>A contiguous sequence of locally cached Normal Objects having the same Group
ID and consecutive Object IDs.</t>
        </dd>
      </dl>
      <t>An Object whose MAX_CACHE_DURATION has elapsed, as defined by <xref target="MOQT"/>, is not
considered locally cached. Object Status records are not Normal Objects and are
not included in Cached Ranges.</t>
    </section>
    <section anchor="negotiation">
      <name>Extension Negotiation</name>
      <t>Because <xref target="MOQT"/> requires receipt of an unknown Message Parameter to terminate
the Session, use of this extension is negotiated with the CACHE_SIGNALING Setup
Option.</t>
      <t>The CACHE_SIGNALING Setup Option has an even-numbered Option Type of TBD1 and a
variable-length integer value containing a capability bit mask.</t>
      <table>
        <thead>
          <tr>
            <th align="right">Bit</th>
            <th align="left">Capability</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x01</td>
            <td align="left">Cache Status queries</td>
          </tr>
          <tr>
            <td align="right">0x02</td>
            <td align="left">Fetch Cache Status reports</td>
          </tr>
        </tbody>
      </table>
      <t>An absent option is equivalent to a value of zero. Unknown capability bits
<bcp14>MUST</bcp14> be ignored.</t>
      <t>A capability is negotiated when both endpoints include its bit. An endpoint
<bcp14>MUST NOT</bcp14> use the corresponding parameters otherwise.</t>
      <t>The 0-RTT requirements of <xref target="MOQT"/> apply. In particular, a client <bcp14>MUST NOT</bcp14> use
these parameters in 0-RTT unless it has remembered that the server supports the
applicable capability.</t>
    </section>
    <section anchor="cache-status">
      <name>Cache Status</name>
      <t>CACHE_STATUS is a length-prefixed Message Parameter with Parameter Type TBD4.
It reports local-cache coverage using the following format. It <bcp14>MUST NOT</bcp14> appear
outside TRACK_STATUS_OK or FETCH_OK, or without the corresponding request.</t>
      <artwork><![CDATA[
CACHE_STATUS Value {
  Cache Status (vi64),
  Range List Complete (8),
  Number of Cached Ranges (vi64),
  Cached Range (..) ...,
}

Cached Range {
  Group ID (vi64),
  First Object ID (vi64),
  Last Object ID (vi64),
}
]]></artwork>
      <t>Cache Status has the following values:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Name</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x00</td>
            <td align="left">MISS</td>
            <td align="left">No Normal Object in scope was covered by the Local Cache.</td>
          </tr>
          <tr>
            <td align="right">0x01</td>
            <td align="left">PARTIAL</td>
            <td align="left">At least one Normal Object was covered, but the entire scope was not satisfied from local state.</td>
          </tr>
          <tr>
            <td align="right">0x02</td>
            <td align="left">HIT</td>
            <td align="left">The entire scope was satisfied from local state and included at least one Normal Object.</td>
          </tr>
        </tbody>
      </table>
      <t>A HIT <bcp14>MUST NOT</bcp14> include an Unknown range or require upstream activity. Known
non-existent Objects do not prevent a HIT when the Publisher can report them
authoritatively from local state. A FETCH response containing no Normal Objects
is a MISS.</t>
      <t>For TRACK_STATUS_OK, the scope is the range in CACHE_STATUS_REQUEST and a
Cached Range identifies Objects present in the Local Cache when the request is
processed. For FETCH_OK, the scope is the completed FETCH response and a
Cached Range identifies Objects served from the Local Cache. An Object that
becomes available after FETCH processing begins is not considered cached for
that FETCH.</t>
      <t>Range List Complete is 1 when every Cached Range in scope is present and 0
when any were omitted. Number of Cached Ranges <bcp14>MUST NOT</bcp14> exceed Maximum Cached
Ranges from the request. A Publisher <bcp14>MAY</bcp14> truncate the list because of that
limit or the maximum MOQT control-message size, but <bcp14>MUST</bcp14> then set Range List
Complete to 0. Cache Status always covers the full scope, even when the list
is truncated.</t>
      <t>Cached Ranges <bcp14>MUST</bcp14> be ordered by increasing Group ID and Object ID, <bcp14>MUST NOT</bcp14>
overlap, and <bcp14>MUST</bcp14> combine adjacent Objects in the same Group. Last Object ID
<bcp14>MUST</bcp14> be at least First Object ID.</t>
      <t>For MISS, Number of Cached Ranges <bcp14>MUST</bcp14> be zero and Range List Complete <bcp14>MUST</bcp14> be
one. If Maximum Cached Ranges is zero for a PARTIAL or HIT, both Number of
Cached Ranges and Range List Complete <bcp14>MUST</bcp14> be zero.</t>
      <t>When Range List Complete is 1, a Normal Object in scope but outside the listed
ranges was not covered by the Local Cache. This extension does not identify
its source. When Range List Complete is 0, omission conveys no information
about an individual Object.</t>
      <t>Any other Cache Status or Range List Complete value, or any malformed,
duplicated, overlapping, or out-of-scope range, is a PROTOCOL_VIOLATION.</t>
    </section>
    <section anchor="cache-status-query">
      <name>Cache Status Query</name>
      <t>CACHE_STATUS_REQUEST is a length-prefixed Message Parameter with Parameter
Type TBD2. It <bcp14>MAY</bcp14> appear exactly once in TRACK_STATUS, <bcp14>MUST NOT</bcp14> appear in any
other message, and has this value:</t>
      <artwork><![CDATA[
CACHE_STATUS_REQUEST Value {
  Start Location (Location),
  End Location (Location),
  Maximum Cached Ranges (vi64),
}
]]></artwork>
      <t>The Locations use the range semantics of a Standalone Fetch in <xref target="MOQT"/>.
Maximum Cached Ranges limits the number of ranges in CACHE_STATUS. When it is
zero, the Publisher returns no Cached Range entries but still returns the other
CACHE_STATUS fields.</t>
      <t>The Publisher <bcp14>MUST</bcp14> apply the authorization checks used for a FETCH of the same
Track and range. It responds with REQUEST_ERROR and INVALID_RANGE when End
Location precedes Start Location, or UNAUTHORIZED when authorization fails.</t>
      <t>If the request succeeds, the Publisher <bcp14>MUST</bcp14> include exactly one CACHE_STATUS
in TRACK_STATUS_OK, computed from a single cache snapshot. A Relay <bcp14>MUST NOT</bcp14>
contact an upstream endpoint solely to answer the query. An endpoint unable to
determine the status <bcp14>MUST</bcp14> reject the request rather than guess.</t>
      <t>The result does not reserve Objects. Cache changes can make it stale before a
subsequent FETCH.</t>
    </section>
    <section anchor="fetch-cache-status">
      <name>Fetch Cache Status</name>
      <t>FETCH_CACHE_STATUS_REQUEST is a length-prefixed Message Parameter with
Parameter Type TBD3. It <bcp14>MAY</bcp14> appear exactly once in FETCH, <bcp14>MUST NOT</bcp14> appear in
any other message, and has this value:</t>
      <artwork><![CDATA[
FETCH_CACHE_STATUS_REQUEST Value {
  Maximum Cached Ranges (vi64),
}
]]></artwork>
      <t>Maximum Cached Ranges has the meaning defined in <xref target="cache-status-query"/>. A
Publisher that successfully processes the FETCH <bcp14>MUST</bcp14> include exactly one
CACHE_STATUS in FETCH_OK. It <bcp14>MUST NOT</bcp14> send FETCH_OK until the final status and
ranges are known, but <bcp14>MAY</bcp14> send Objects first as permitted by <xref target="MOQT"/>. A failed
FETCH has no CACHE_STATUS.</t>
      <t>FETCH_CACHE_STATUS_REQUEST does not alter the requested range, Group Order,
FILL_TIMEOUT, Object payloads, or other FETCH behavior.</t>
    </section>
    <section anchor="relay-processing">
      <name>Relay Processing</name>
      <t>Message Parameters are hop-by-hop under <xref target="MOQT"/>. A Relay <bcp14>MUST NOT</bcp14> copy
CACHE_STATUS_REQUEST, FETCH_CACHE_STATUS_REQUEST, or CACHE_STATUS between
upstream and downstream messages. It <bcp14>MAY</bcp14> make an independent upstream request
when the capability is negotiated on that Session, but its downstream
CACHE_STATUS describes only its own Local Cache. The source of all other
Objects is outside the scope of this extension.</t>
    </section>
    <section anchor="interaction-with-other-moqt-mechanisms">
      <name>Interaction with Other MOQT Mechanisms</name>
      <t>FILL_TIMEOUT continues to control how long a Relay waits for Objects. A value
of zero can expose availability by transferring immediately available Objects;
CACHE_STATUS_REQUEST provides a snapshot without transferring payloads.</t>
      <t>CACHE_DISTANCE <xref target="CACHE_DISTANCE"/> provides per-Object, multi-hop attribution.
CACHE_STATUS instead reports local coverage at the immediate peer and does not
identify non-cache sources. Cache changes can cause the two signals to differ.</t>
      <t>This document does not define proactive cache advertisements or cache-aware
routing. CACHE_STATUS_REQUEST is intended for occasional, range-specific use.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>A CACHE_STATUS in TRACK_STATUS_OK is a snapshot, not a reservation or a
promise about a later FETCH. Applications <bcp14>SHOULD</bcp14> query the smallest useful
range. A Publisher <bcp14>MAY</bcp14> reject excessive requests with REQUEST_ERROR using
EXCESSIVE_LOAD.</t>
    </section>
    <section anchor="security">
      <name>Security and Privacy Considerations</name>
      <t>The security considerations of <xref target="MOQT"/> apply.</t>
      <t>Cache signaling can reveal retained content and recent request patterns,
enabling cache probing or audience inference. A Publisher <bcp14>MUST</bcp14> apply the
authorization policy for the Track before returning CACHE_STATUS. Deployments
<bcp14>MAY</bcp14> truncate ranges, limit requests, or disable this extension across trust
boundaries.</t>
      <t>Cache status is not authenticated end-to-end. Subscribers <bcp14>MUST</bcp14> treat it as
advisory and <bcp14>MUST NOT</bcp14> rely on it for authorization, content integrity, or
application correctness. Publishers <bcp14>SHOULD</bcp14> limit response size and rate-limit
cache queries.</t>
      <t>The parameters defined here do not modify Object payloads and are safe to
replay in the same sense as their enclosing TRACK_STATUS or FETCH requests.
Replayed requests can nevertheless increase load or expose additional cache
observations, so the 0-RTT precautions in <xref target="MOQT"/> continue to apply.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests registration of the following Setup Option in the
"MOQT Setup Options" registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Type</th>
            <th align="left">Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1 (even)</td>
            <td align="left">CACHE_SIGNALING</td>
            <td align="left">This document, <xref target="negotiation"/></td>
          </tr>
        </tbody>
      </table>
      <t>An even-numbered code point is requested because the option value is a
variable-length integer.</t>
      <t>This document requests registration of the following Message Parameters in the
"MOQT Message Parameters" registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Type</th>
            <th align="left">Name</th>
            <th align="left">Permitted Messages</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD2</td>
            <td align="left">CACHE_STATUS_REQUEST</td>
            <td align="left">TRACK_STATUS</td>
            <td align="left">This document, <xref target="cache-status-query"/></td>
          </tr>
          <tr>
            <td align="right">TBD3</td>
            <td align="left">FETCH_CACHE_STATUS_REQUEST</td>
            <td align="left">FETCH</td>
            <td align="left">This document, <xref target="fetch-cache-status"/></td>
          </tr>
          <tr>
            <td align="right">TBD4</td>
            <td align="left">CACHE_STATUS</td>
            <td align="left">TRACK_STATUS_OK, FETCH_OK</td>
            <td align="left">This document, <xref target="cache-status"/></td>
          </tr>
        </tbody>
      </table>
      <t>The code points are placeholders. Provisional assignments should be requested
before interoperable implementations use them.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MOQT">
          <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="8" month="September" 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-21"/>
        </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="CACHE_DISTANCE" target="https://afrind.github.io/draft-frindell-moq-cache-distance/draft-frindell-moq-cache-distance.html">
          <front>
            <title>Cache Distance Property for MOQT</title>
            <author initials="A." surname="Frindell" fullname="Alan Frindell">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 342?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Alan Frindell, Luke Curley, and Steven Riedl for discussion that
motivated and refined this proposal.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <section numbered="false" anchor="draft-sharma-moq-cache-signaling-00">
        <name>draft-sharma-moq-cache-signaling-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="use-of-generative-ai">
      <name>Use of Generative AI</name>
      <t>OpenAI Codex was used to assist with drafting and editing this document. All
generated text was reviewed and approved by the author.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
