<?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-rfc2629 version 1.5.12 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-smith-quic-receive-ts-00" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="QUIC Receive Timestamps">QUIC Extension for Reporting Packet Receive Timestamps</title>
    <seriesInfo name="Internet-Draft" value="draft-smith-quic-receive-ts-00"/>
    <author initials="C." surname="Smith" fullname="Connor Smith">
      <organization>Magic Leap, Inc.</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>
    <date year="2021" month="October" day="25"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an extension to the QUIC transport protocol which supports
reporting multiple packet receive timestamps using a new ACK_RECEIVE_TIMESTAMPS
frame type.</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>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The QUIC Transport Protocol <xref target="RFC9000" format="default"/> 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 using a new ACK_RECEIVE_TIMESTAMPS
frame type.</t>
    </section>
    <section anchor="motivation" numbered="true" toc="default">
      <name>Motivation</name>
      <t>QUIC congestion control (<xref target="RFC9002" format="default"/>) 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>The WebRTC congestion control algorithm described in <xref target="I-D.ietf-rmcat-gcc" format="default"/>
uses the difference between packet inter-departure and packet inter-arrival
times as the input to its delay-based controller.</li>
        <li>The pathChirp (<xref target="RRBNC" format="default"/>) technique estimates available bandwidth by measuring
inter-arrival time of multiple packets.</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>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL</bcp14>
NOT", "<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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="negotiation" numbered="true" toc="default">
      <name>Extension Negotiation</name>
      <t>The use of the ACK_RECEIVE_TIMESTAMPS frame is negotiated using the following
two transport parameters (<xref section="7.2" sectionFormat="of" target="RFC9000" format="default"/>):</t>
      <dl>
        <dt>
max_receive_timestamps_per_ack (TBD):  </dt>
        <dd>
          <t>A variable-length integer indicating that the sending endpoint would like to
receive ACK_RECEIVE_TIMESTAMPS frames from the peer containing no more than
the given maximum number of receive timestamps.</t>
          <t>Upon receiving this parameter with a non-zero value, the peer <bcp14>SHOULD</bcp14> send
ACK_RECEIVE_TIMESTAMPS frames instead of ACK frames if new receive timestamp
information is available. The peer <bcp14>MAY</bcp14> still send regular ACK frames (e.g. if
no timing information is available), in which case the endpoint <bcp14>MUST</bcp14> still
support processing regular ACK frames as defined by <xref section="19.3" sectionFormat="of" target="RFC9000" format="default"/>.</t>
          <t>Each ACK_RECEIVE_TIMESTAMPS frame sent <bcp14>MUST NOT</bcp14> contain more than the
specified maximum number of receive timestamps, but <bcp14>MAY</bcp14> contain fewer or none.</t>
        </dd>
        <dt>
receive_timestamps_exponent (TBD):  </dt>
        <dd>
          <t>A variable-length integer indicating the exponent to be used when encoding and
decoding timestamp delta fields in ACK_RECEIVE_TIMESTAMPS frames sent by the
peer (see <xref target="ts-ranges" format="default"/>). 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" numbered="true" toc="default">
        <name>Receive Timestamp Basis</name>
        <t>Endpoints which send ACK_RECEIVE_TIMESTAMPS frames must determine a value,
receive_timestamp_basis, relative to which all receive timestamps for the
session will be reported (see <xref target="ts-ranges" format="default"/>).</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.</t>
        <t>TODO: Discuss (here or below) why receive timestamps are reported relative to
the basis, rather than in absolute time to avoid clock synchronization between
endpoints.</t>
      </section>
    </section>
    <section anchor="frame" numbered="true" toc="default">
      <name>ACK_RECEIVE_TIMESTAMPS Frame</name>
      <t>Receivers send ACK_RECEIVE_TIMESTAMPS (type=TBD) frames in place of--and in the
same manner as--regular ACK frames as described in <xref section="13.2" sectionFormat="of" target="RFC9000" format="default"/>.
However, ACK_RECEIVE_TIMESTAMPS frames contain additional fields to report
packet receive timestamps.</t>
      <t>ACK_RECEIVE_TIMESTAMPS frames are formatted as shown in <xref target="fig-frame" format="default"/>.</t>
      <figure anchor="fig-frame">
        <name>ACK_RECEIVE_TIMESTAMPS Frame Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
ACK_RECEIVE_TIMESTAMPS Frame {
  Type (i) = TBD
  // Fields of the existing ACK (type=0x02) frame:
  Largest Acknowledged (i),
  ACK Delay (i),
  ACK Range Count (i),
  First ACK Range (i),
  ACK Range (..) ...,
  // Additional fields for ACK_RECEIVE_TIMESTAMPS:
  Timestamp Range Count (i),
  Timestamp Ranges (..) ...,
}
]]></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" format="default"/>.</t>
      <t>ACK_RECEIVE_TIMESTAMPS frames contain the following additional fields:</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" format="default"/>.</t>
        </dd>
      </dl>
      <section anchor="ts-ranges" numbered="true" toc="default">
        <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 Gap 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).</t>
        <t>Note that reporting receive timestamps for packets received out of order is not
supported. Specifically: for any packet number P for which a receive timestamp T
is reported, all reports for packet numbers less than P must have timestamps
less than or equal to T; and all reports for packet numbers greater than P must
have timestamps greater than or equal to T.</t>
        <t>Timestamp Ranges are structured as shown in <xref target="fig-ts-range" format="default"/>.</t>
        <figure anchor="fig-ts-range">
          <name>Timestamp Range Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
Timestamp Range {
  Gap (i),
  Timestamp Delta Count (i),
  Timestamp Delta (i) ...,
}
]]></artwork>
        </figure>
        <t>The fields that form each Timestamp Range are:</t>
        <dl>
          <dt>
Gap:  </dt>
          <dd>
            <t>A variable-length integer indicating the largest packet number in the
Timestamp Range as follows:</t>
            <t>For the first Timestamp Range: Gap is the difference between (a) the Largest
Acknowledged packet number in the frame and (b) the largest packet in the
current (first) Timestamp Range.</t>
            <t>For subsequent Timestamp Ranges: Gap is the difference between (a) the packet
number two lower than the smallest packet number in the previous Timestamp
Range and (b) the largest packet in the current Timestamp Range.</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</bcp14>
NOT exceed max_receive_timestamps_per_ack as specified in <xref target="negotiation" format="default"/>.</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" format="default"/>), 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_RECEIVE_TIMESTAMPS frame (see
<xref target="negotiation" format="default"/>):</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="discussion" numbered="true" toc="default">
      <name>Discussion</name>
      <section anchor="best-effort-behavior" numbered="true" toc="default">
        <name>Best-Effort Behavior</name>
        <t>Receive timestamps are sent on a best-effort basis and endpoints <bcp14>MUST</bcp14> gracefully
handle scenarios where receive timestamp information for sent packets is not
received. Examples of such scenarios are:</t>
        <ul spacing="normal">
          <li>The packet containing the ACK_RECEIVE_TIMESTAMP frame is lost.</li>
          <li>The sender truncates the number of timestamps sent in order to (a) avoid
sending more than max_receive_timestamps_per_ack (<xref target="negotiation" format="default"/>); or (b) fit
the ACK frame into a packet.</li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <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.a.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">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <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">
	 </author>
            <author fullname="Henrik Lundin">
	 </author>
            <author fullname="Gaetano Carlucci">
	 </author>
            <author fullname="Luca De Cicco">
	 </author>
            <author fullname="Saverio Mascolo">
	 </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>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
