<?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.29 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-smith-quic-receive-ts-02" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="QUIC Receive Timestamps">QUIC Extended Acknowledgement for Reporting Packet Receive Timestamps</title>
    <seriesInfo name="Internet-Draft" value="draft-smith-quic-receive-ts-02"/>
    <author initials="C." surname="Smith" fullname="Connor Smith">
      <organization>NVIDIA</organization>
      <address>
        <email>connorsmith.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="I." surname="Swett" fullname="Ian Swett">
      <organization>Google LLC</organization>
      <address>
        <email>ianswett@google.com</email>
      </address>
    </author>
    <author initials="J." surname="Beshay" fullname="Joseph Beshay">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>jbeshay@meta.com</email>
      </address>
    </author>
    <author initials="S." surname="Jaiswal" fullname="Sharad Jaiswal">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>sj77@meta.com</email>
      </address>
    </author>
    <author initials="I." surname="Purushothaman" fullname="Ilango Purushothaman">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>ipurush@meta.com</email>
      </address>
    </author>
    <author initials="B." surname="Schlinker" fullname="Brandon Schlinker">
      <organization>Meta Platforms, Inc.</organization>
      <address>
        <email>bschlinker@meta.com</email>
      </address>
    </author>
    <date year="2025" month="April" day="22"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>This document defines an extension to the QUIC transport protocol which supports
reporting multiple packet receive timestamps for post-handshake packets.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/wcsmith/draft-quic-receive-ts"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The QUIC Transport Protocol <xref target="RFC9000"/> provides a secure, multiplexed
connection for transmitting reliable streams of application data.</t>
      <t>This document defines an extension to the QUIC transport protocol which supports
reporting multiple packet receive timestamps.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>QUIC congestion control (<xref target="RFC9002"/>) supports sampling round-trip time (RTT)
by measuring the time from when a packet was sent to when it is acknowledged.
However, more precise delay signals measured via packet receive timestamps have
the potential to improve the accuracy of network bandwidth measurements and the
effectiveness of congestion control, especially for latency-critical
applications such as real-time video conferencing or game streaming.</t>
      <t>Numerous existing algorithms and techniques leverage receive receive timestamps
to improve transport performance. Examples include:</t>
      <ul spacing="normal">
        <li>
          <t>The WebRTC congestion control algorithm described in <xref target="I-D.ietf-rmcat-gcc"/>
uses the difference between packet inter-departure and packet inter-arrival
times as the input to its delay-based controller.</t>
        </li>
        <li>
          <t>The pathChirp (<xref target="RRBNC"/>) technique estimates available bandwidth by measuring
inter-arrival time of multiple packets.</t>
        </li>
      </ul>
      <t>Notably, these techniques require receive timestamps for more than one packet
per round-trip in order to best measure the network.</t>
      <t>Additionally, receive timestamps can provide valuable network telemetry, even
if they are not used by the congestion controller.</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?>

</section>
    <section anchor="frame">
      <name>ACK Frame Wire Format</name>
      <t>Endpoints send ACK frames in 1-RTT packets as they otherwise would, with 0
or more receive timestamps following the Ack Ranges and optional ECN Counts.
Receive timestamps <bcp14>MUST NOT</bcp14> be sent in Initial or Handshake packets, because
the peer would not know to use the extended wire format. ACK frames are never
sent in 0-RTT packets, so there is no change to 0-RTT.</t>
      <t>Once negotiated, the ACK format is identical to RFC9000, but with an
additional section for receive timestamps at the end:</t>
      <figure anchor="fig-frame">
        <name>ACK Frame Format</name>
        <artwork><![CDATA[
ACK Frame {
  Type (i) = 0x02..0x03,
  Largest Acknowledged (i),
  ACK Delay (i),
  ACK Range Count (i),
  First ACK Range (i),
  ACK Range (..) ...,
  [ECN Counts (..)],
  // Timestamp Extension, see {{ts-ranges}}
  Receive Timestamps (..)
}
]]></artwork>
      </figure>
      <t>The fields Largest Acknowledged, ACK Delay, ACK Range Count, First ACK Range,
and ACK Range are the same as for ACK (type=0x02) frames specified in <xref section="19.3" sectionFormat="of" target="RFC9000"/>.</t>
      <dl>
        <dt>Timestamp Range Count:</dt>
        <dd>
          <t>A variable-length integer specifying the number of Timestamp Range fields in
the frame.</t>
        </dd>
        <dt>Timestamp Ranges:</dt>
        <dd>
          <t>Ranges of receive timestamps for contiguous packets in descending packet
number order; see <xref target="ts-ranges"/>.</t>
        </dd>
      </dl>
      <section anchor="ts-ranges">
        <name>Timestamp Ranges</name>
        <t>Each Timestamp Range describes a series of contiguous packet receive timestamps
in descending sequential packet number (and descending timestamp) order.
Timestamp Ranges consist of a Delta Largest Acknowledged indicating the
largest packet number in the range, followed by a list of Timestamp Deltas
describing the relative receive timestamps for each contiguous packet in the
Timestamp Range (descending). Packets within a range are in descending
packet number and timestamp order. Ranges are in descending timestamp order
but do not have to be in descending packet number order.</t>
        <t>Timestamp Ranges are structured as shown in <xref target="fig-ts-range"/>.</t>
        <figure anchor="fig-ts-range">
          <name>Timestamp Range Format</name>
          <artwork><![CDATA[
Timestamp Range {
  Delta Largest Acknowledged (i),
  Timestamp Delta Count (i),
  Timestamp Delta (i) ...,
}
]]></artwork>
        </figure>
        <t>The fields that form each Timestamp Range are:</t>
        <dl>
          <dt>Delta Largest Acknowledged:</dt>
          <dd>
            <t>A variable-length integer indicating the largest packet number in the
Timestamp Range as a delta to subtract from the Largest Acknowledged in the
ACK frame. For example, 0 indicates the range starts with the
Largest Acknowledged.</t>
          </dd>
          <dt>Timestamp Delta Count:</dt>
          <dd>
            <t>A variable-length integer indicating the number of Timestamp Deltas in the
current Timestamp Range.</t>
            <t>The sum of Timestamp Delta Counts for all Timestamp Ranges in the frame <bcp14>MUST
NOT</bcp14> exceed max_receive_timestamps_per_ack as specified in <xref target="negotiation"/>.</t>
          </dd>
          <dt>Timestamp Deltas:</dt>
          <dd>
            <t>Variable-length integers encoding the receive timestamp for contiguous packets
in the Timestamp Range in descending packet number order as follows:</t>
            <t>For the first Timestamp Delta of the first Timestamp Range in the frame: the
value is the difference between (a) the receive timestamp of the largest
packet in the Timestamp Range (indicated by Gap) and (b) the session
receive_timestamp_basis (see <xref target="ts-basis"/>), decoded as described below.</t>
            <t>For all other Timestamp Deltas: the value is the difference between (a) the
receive timestamp specified by the previous Timestamp Delta and (b) the
receive timestamp of the current packet in the Timestamp Range, decoded as
described below.</t>
            <t>All Timestamp Delta values are decoded by mulitplying the value in the field
by 2 to the power of the receive_timestamps_exponent transport parameter
received by the sender of the ACK frame (see <xref target="negotiation"/>):</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="negotiation">
      <name>Extension Negotiation</name>
      <dl>
        <dt>max_receive_timestamps_per_ack (0xff0a002 temporary value for draft use):</dt>
        <dd>
          <t>A variable-length integer indicating that the maximum number of receive
timestamps the sending endpoint would like to receive in an ACK frame.</t>
          <t>Each ACK frame sent <bcp14>MUST NOT</bcp14> contain more than the peer's maximum
number of receive timestamps.</t>
        </dd>
        <dt>receive_timestamps_exponent (0xff0a003 temporary value for draft use):</dt>
        <dd>
          <t>A variable-length integer indicating the exponent to be used when encoding and
decoding timestamp delta fields in ACK frames sent by the
peer (see <xref target="ts-ranges"/>). If this value is absent, a default value of 0 is
assumed (indicating microsecond precision). Values above 20 are invalid.</t>
        </dd>
      </dl>
      <section anchor="ts-basis">
        <name>Receive Timestamp Basis</name>
        <t>Endpoints which negotiate the extension need to determine a value,
receive_timestamp_basis, relative to which all receive timestamps for the
session will be reported (see <xref target="ts-ranges"/>).</t>
        <t>The value of receive_timestamp_basis <bcp14>MUST</bcp14> be less than the smallest receive
timestamp reported, and <bcp14>MUST</bcp14> remain constant for the entire duration of the
session. The receive_timestamp_basis is a local value that is not communicated
to the peer.</t>
        <t>Receive timestamps are reported relative to the basis, rather than in absolute
time to avoid requiring clock synchronization between endpoints and to make
the frame more compact.</t>
      </section>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <section anchor="best-effort-behavior">
        <name>Best-Effort Behavior</name>
        <t>Receive timestamps are sent on a best-effort basis. Endpoints <bcp14>MUST</bcp14> gracefully
handle scenarios where the receiver does not communicate receive timestamps for
acknowledged packets. Examples of such scenarios are:</t>
        <ul spacing="normal">
          <li>
            <t>A packet containing an ACK frame is lost.</t>
          </li>
          <li>
            <t>The sender truncates the number of timestamps sent in order to (a) avoid
sending more than max_receive_timestamps_per_ack (<xref target="negotiation"/>); or (b) fit
the ACK frame into a packet.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9000">
          <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="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="RRBNC">
          <front>
            <title>pathChirp: Efficient Available Bandwidth Estimation for Network Paths</title>
            <author initials="R. V. R. R. B. R. N. J. and L." surname="Cottrel" fullname="Ribeiro, V., Riedi, R., Baraniuk, R., Navratil, J., and L. Cottrel">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="I-D.ietf-rmcat-gcc">
          <front>
            <title>A Google Congestion Control Algorithm for Real-Time Communication</title>
            <author fullname="Stefan Holmer" initials="S." surname="Holmer">
              <organization>Google</organization>
            </author>
            <author fullname="Henrik Lundin" initials="H." surname="Lundin">
              <organization>Google</organization>
            </author>
            <author fullname="Gaetano Carlucci" initials="G." surname="Carlucci">
              <organization>Politecnico di Bari</organization>
            </author>
            <author fullname="Luca De Cicco" initials="L." surname="De Cicco">
              <organization>Politecnico di Bari</organization>
            </author>
            <author fullname="Saverio Mascolo" initials="S." surname="Mascolo">
              <organization>Politecnico di Bari</organization>
            </author>
            <date day="8" month="July" year="2016"/>
            <abstract>
              <t>   This document describes two methods of congestion control when using
   real-time communications on the World Wide Web (RTCWEB); one delay-
   based and one loss-based.

   It is published as an input document to the RMCAT working group on
   congestion control for media streams.  The mailing list of that
   working group is rmcat@ietf.org.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rmcat-gcc-02"/>
        </reference>
      </references>
    </references>
    <?line 285?>

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

-->

</rfc>
