<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lcurley-moq-timestamp-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="moq-timestamp">MoQ Object Timestamp Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-lcurley-moq-timestamp-00"/>
    <author fullname="Luke Curley">
      <organization/>
      <address>
        <email>kixelated@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="12"/>
    <area>wit</area>
    <workgroup>moq</workgroup>
    <abstract>
      <?line 24?>

<t>This document defines an extension for MoQ Transport <xref target="moqt"/> that attaches a media presentation timestamp and duration to each object.
A track-level Timescale property establishes the units, an object-level Timestamp property carries the presentation time of each object, and an optional Duration property carries its presentation duration.
Exposing media time to the transport lets relays make consistent age-based decisions (e.g. dropping stale objects) without parsing the media container, and it remains consistent across hops regardless of buffering or jitter.</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/kixelated/moq-drafts"/>.</t>
    </note>
  </front>
  <middle>
    <?line 30?>

<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?>

</section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="moqt"/> treats object payloads as opaque: "the amount of time elapsed between publishing an Object in Group ID N and in a Group ID &gt; N ... is not defined by this specification" (<xref target="moqt"/> Section 2.3.1), and timing is left to the application's container format.</t>
      <t>This works for endpoints that parse the media, but not for relays.
A relay frequently needs a notion of <em>when</em> an object is meant to be presented:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Age-based dropping</strong>: a relay serving a live, latency-sensitive subscription wants to drop objects that are too old to be useful, keeping the freshest content flowing under congestion. Without a timestamp it can only approximate age from wall-clock arrival time, which drifts across hops and is corrupted by buffering and jitter.</t>
        </li>
        <li>
          <t><strong>Consistent expiration across hops</strong>: every relay on a path should make the same drop decision for the same object. A timestamp embedded in the object is identical at every hop; a wall-clock arrival time is not.</t>
        </li>
        <li>
          <t><strong>Synchronization hints</strong>: a subscriber can align objects from multiple tracks (e.g. audio and video) using a shared media timeline without first decoding each container.</t>
        </li>
      </ul>
      <t>MoQ also demultiplexes media into many independent tracks — audio, video, captions, metadata, and more — so a timestamp is needed on nearly every track.
Re-implementing per-object timestamping inside each application's container format, for every track, is repetitive and error-prone; standardizing it at the transport lets one implementation serve every track and lets relays use it directly.</t>
      <t>This extension exposes media time to the transport with three Key-Value-Pairs (<xref target="moqt"/> Section 2.5): a track-level <strong>Timescale</strong>, an object-level <strong>Timestamp</strong>, and an optional object-level <strong>Duration</strong>.
The transport does not interpret the <em>meaning</em> of the timeline (it is still the application's clock); it only uses the timestamp for relative age comparisons.</t>
    </section>
    <section anchor="setup-negotiation">
      <name>Setup Negotiation</name>
      <t>The Object Timestamp extension is negotiated during the SETUP exchange as defined in <xref target="moqt"/> Section 10.3.
An endpoint indicates support by including the following Setup Option:</t>
      <artwork><![CDATA[
TIMESTAMP Setup Option {
  Option Key (vi64) = 0x915C1
  Option Value Length (vi64) = 0
}
]]></artwork>
      <t>The properties defined below are ordinary Key-Value-Pairs and a receiver that does not understand them ignores them per <xref target="moqt"/>.
Negotiation is therefore not required for correctness, but a publisher <bcp14>SHOULD</bcp14> send the Setup Option so that a relay knows it can rely on object timestamps for age-based decisions rather than falling back to wall-clock arrival time.
A relay <bcp14>MAY</bcp14> perform timestamp-based dropping for a track only if the upstream publisher advertised this option (or the track carries a non-zero Timescale).</t>
    </section>
    <section anchor="timescale-track-property">
      <name>TIMESCALE Track Property</name>
      <t>The TIMESCALE property establishes the units for every Timestamp and Duration on a track.
It is a track-level Key-Value-Pair, carried with the track's properties (see <xref target="moqt"/> Section 2.5 and Section 12).
Because the value is a single integer, TIMESCALE uses an even Type so the value is a bare varint with no length prefix:</t>
      <artwork><![CDATA[
TIMESCALE Track Property {
  Type (vi64) = 0x915C0
  Value (vi64)  ; units per second
}
]]></artwork>
      <t><strong>Value</strong>:
The number of timestamp units per second.
Common values include <tt>1000</tt> (milliseconds), <tt>1000000</tt> (microseconds), <tt>48000</tt> (a typical audio sample rate), and <tt>90000</tt> (the RTP video clock).
A value of <tt>0</tt>, or the absence of the property, means the track has no media timeline: Timestamp and Duration properties, if present, <bcp14>MUST</bcp14> be ignored, and a relay <bcp14>MUST</bcp14> fall back to wall-clock arrival time for any age-based decision.</t>
      <t>The Timescale is fixed for the lifetime of the track and <bcp14>MUST NOT</bcp14> change.</t>
      <t>The Timescale is required to interpret the units of every Timestamp and Duration, so a receiver cannot resolve an object's timing until it has the track's properties.
Those properties are delivered in SUBSCRIBE_OK or TRACK_STATUS (<xref target="moqt"/> Section 12), so a receiver that begins receiving objects before it has them <bcp14>MUST</bcp14> buffer the timing (or treat it as unknown) until the Timescale arrives.
A relay that has not yet learned the Timescale <bcp14>MUST</bcp14> fall back to wall-clock arrival time for any age-based decision.</t>
    </section>
    <section anchor="timestamp-object-property">
      <name>TIMESTAMP Object Property</name>
      <t>The TIMESTAMP property carries the presentation time of an object, in the track's Timescale.
It is an object-level Key-Value-Pair carried in the object's properties (<xref target="moqt"/> Section 2.5, 11.2.1.2).
It uses an even Type so the value is a bare varint:</t>
      <artwork><![CDATA[
TIMESTAMP Object Property {
  Type (vi64) = 0x915C2
  Value (vi64)  ; absolute presentation time, in Timescale units
}
]]></artwork>
      <t><strong>Value</strong>:
The absolute presentation timestamp of the object, expressed in the track's Timescale.
Any value (including 0) is valid.</t>
      <t>A publisher <bcp14>SHOULD</bcp14> attach TIMESTAMP to every object on a track whose Timescale is non-zero.
An object with no TIMESTAMP on such a track has no media time; for age comparisons a receiver <bcp14>MUST</bcp14> treat its effective time as the wall-clock arrival time of the object, which avoids stalling expiration on objects that intentionally carry no timestamp (e.g. keep-alives or gap markers).</t>
      <section anchor="age-based-dropping">
        <name>Age-Based Dropping</name>
        <t>Given two objects on the same track, both with TIMESTAMP and a non-zero Timescale, a relay computes their relative age as the difference of their timestamps divided by the Timescale.
A relay serving a live subscription <bcp14>MAY</bcp14> drop an object whose age relative to the most recent object on the track exceeds a locally configured or application-supplied threshold, resetting the corresponding stream per <xref target="moqt"/>.
This decision is identical at every hop because it depends only on values embedded in the objects, not on arrival time.</t>
        <t>A relay <bcp14>MUST NOT</bcp14> use timestamps to reorder delivery beyond what <xref target="moqt"/> already permits; this property informs <em>dropping</em>, not transmission order.</t>
      </section>
    </section>
    <section anchor="duration-object-property">
      <name>DURATION Object Property</name>
      <t>The DURATION property carries the presentation duration of an object, in the track's Timescale.
It is optional and is an object-level Key-Value-Pair with an even Type:</t>
      <artwork><![CDATA[
DURATION Object Property {
  Type (vi64) = 0x915C4
  Value (vi64)  ; presentation duration, in Timescale units
}
]]></artwork>
      <t><strong>Value</strong>:
The presentation duration of the object, expressed in the track's Timescale.
A value of <tt>0</tt>, or the absence of the property, means the duration is unknown; the object is presented until the next object begins.</t>
      <t>Duration is primarily an application-level presentation hint, but a relay <bcp14>MAY</bcp14> also use it to refine age-based dropping: an object's Timestamp plus its Duration marks the end of its presentation interval, which is a more precise "this object is now in the past" signal than the Timestamp alone (for example, the last object of a group has no following object to bound it). A relay <bcp14>MUST NOT</bcp14> rely on Duration being present; when it is absent, the relay falls back to comparing Timestamps as in <xref target="age-based-dropping">Age-Based Dropping</xref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Timestamps expose the media timeline to relays, which is the point of the extension, but a relay still treats payloads as opaque and gains no access to media content.</t>
      <t>A malicious publisher could supply misleading timestamps (e.g. always claiming an object is fresh) to defeat age-based dropping, or wildly out-of-range timestamps to cause a receiver to mis-estimate age.
A receiver <bcp14>SHOULD</bcp14> bound the age it computes and <bcp14>SHOULD NOT</bcp14> make security decisions based on timestamps.
Because age-based dropping only affects which objects a live subscription receives, the worst case is degraded delivery for that subscription, not a cross-subscription effect.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the following registrations.
High, distinctive values are requested to avoid the low ranges reserved by <xref target="moqt"/> and to minimize collisions with provisional registrations by other extensions; they also avoid the greasing pattern (<tt>0x7f * N + 0x9D</tt>).
The three property Types are even so that each value is a bare varint with no length prefix (see <xref target="moqt"/> Section 2.5).</t>
      <section anchor="moqt-setup-options">
        <name>MOQT Setup Options</name>
        <t>This document requests a registration in the "MOQT Setup Options" registry (<xref target="moqt"/> Section 15.4), whose policy is Specification Required.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x915C1</td>
              <td align="left">TIMESTAMP</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="moqt-properties">
        <name>MOQT Properties</name>
        <t>This document requests registrations in the "MOQT Properties" registry (<xref target="moqt"/> Section 15.8), used for object and track properties.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Scope</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x915C0</td>
              <td align="left">TIMESCALE</td>
              <td align="left">Track</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x915C2</td>
              <td align="left">TIMESTAMP</td>
              <td align="left">Object</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x915C4</td>
              <td align="left">DURATION</td>
              <td align="left">Object</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <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="12" month="May" year="2026"/>
          <abstract>
            <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
      </reference>
      <reference anchor="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>
    <?line 189?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was drafted with the assistance of Claude, an AI assistant by Anthropic.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
QtTkOh5F/wWb4n2DfCgAAA==

-->

</rfc>
