<?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.6.10 (Ruby 3.0.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schwartz-masque-h3-datagram-ping-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.7 -->
  <front>
    <title abbrev="HTTP Datagram PING and TIMESTAMP">HTTP Datagram PING and TIMESTAMP</title>
    <seriesInfo name="Internet-Draft" value="draft-schwartz-masque-h3-datagram-ping-02"/>
    <author initials="B." surname="Schwartz" fullname="Benjamin Schwartz">
      <organization>Google LLC</organization>
      <address>
        <email>bemasc@google.com</email>
      </address>
    </author>
    <date year="2022" month="May" day="26"/>
    <area>General</area>
    <workgroup>masque</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This draft defines new mechanisms for measuring the functionality and performance of an HTTP Datagram path.  These mechanisms can be used with CONNECT-UDP, CONNECT-IP, or any other instantiation of the Capsule Protocol.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
      mailing list (masque@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/bemasc/h3-datagram-ping"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="conventions-and-definitions">
      <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>
    </section>
    <section anchor="ping">
      <name>PING</name>
      <t>PING Datagrams can be used to characterize and monitor the end-to-end HTTP Datagram path associated with an HTTP request.  For example, HTTP endpoints can easily use PING Datagrams to estimate the round-trip time and loss rate of the HTTP Datagram path.</t>
      <t>PING Datagrams are also suitable for use as DPLPMTUD Probe Packets <xref target="RFC8899"/>.  This enables endpoints to estimate the HTTP Datagram MTU of each request-response pair, in order to avoid sending HTTP Datagrams that will be dropped.</t>
      <t>Note that these path characteristics can differ from those inferred from the underlying transport (e.g. QUIC), if the HTTP request traverses one or more HTTP intermediaries (see <xref section="3.7" sectionFormat="of" target="I-D.draft-ietf-httpbis-semantics"/>).</t>
      <section anchor="registration">
        <name>Registration</name>
        <t>Endpoints indicate support for the PING Datagram type using the Item Structured Field "DG-Ping" in the HTTP Request and Response headers.  Its value MUST be an integer indicating the Context ID allocated for PING datagrams.  (See <xref section="3.3.1" sectionFormat="of" target="RFC8941"/> for information about the integer format.)</t>
        <t>Endpoints MUST NOT allocate more than one Context ID for PING Datagrams.  As a side effect, this means that only the HTTP client can choose the Context ID used for PING Datagrams.</t>
      </section>
      <section anchor="format">
        <name>Format</name>
        <t>PING Datagrams have the following format:</t>
        <artwork><![CDATA[
PING Datagram {
  Context ID (i),
  Sequence Number (i),
  Opaque Data (..),
}
]]></artwork>
        <t>All <tt>Sequence Number</tt> and <tt>Opaque Data</tt> values are potentially valid.</t>
      </section>
      <section anchor="use">
        <name>Use</name>
        <t>The sender emits a PING Datagram with any even <tt>Sequence Number</tt> and any <tt>Opaque Data</tt>.  Upon receiving a PING Datagram with an even <tt>Sequence Number</tt>, the recipient MUST reply with a PING Datagram whose <tt>Sequence Number</tt> is one larger, with empty <tt>Opaque Data</tt>.</t>
        <t>Intermediaries MUST forward PING Datagrams without modification, just like any other HTTP Datagram.</t>
      </section>
    </section>
    <section anchor="timestamp">
      <name>TIMESTAMP</name>
      <t>The TIMESTAMP Datagram extension allows marking any datagram with a timestamp indicating the time that it was sent.  Where PING allows measurement of the round-trip time between peers, TIMESTAMP allows peers to observe changes in the one-way latency.  Increasing one-way latency can indicate congestion on that path, informing peers' congestion control decisions.</t>
      <section anchor="registration-1">
        <name>Registration</name>
        <t>Endpoints indicate support for TIMESTAMP Datagram type by including the boolean-valued Item Structured Field "DG-Timestamp: ?1" in the HTTP Request and Response headers.  (See <xref section="3.3.6" sectionFormat="of" target="RFC8941"/> for information about the boolean format.)</t>
        <t>A TIMESTAMP Datagram context is opened by a REGISTER_TIMESTAMP_CONTEXT Capsule with the following structure:</t>
        <artwork><![CDATA[
REGISTER_TIMESTAMP_CONTEXT Capsule {
  Context ID (i)
  Inner Context ID (i)
  Short Format (1)
}
]]></artwork>
        <t>"Inner Context ID" specifies how to interpret the payload after the timestamp.  It MUST be smaller than "Context ID", and MUST already be registered (although that registration does not need to have been confirmed yet).</t>
        <t>If "Short Format" is 1 (i.e. true), timestamps MUST use the NTP Short Format (<xref section="6" sectionFormat="of" target="RFC5905"/>).  Otherwise, the full NTP Timestamp Format MUST be used.</t>
        <t>Registration is confirmed by an ACK_TIMESTAMP_CONTEXT Capsule:</t>
        <artwork><![CDATA[
ACK_TIMESTAMP_CONTEXT Capsule {
  Context ID (i)
  Error Code (i)
}
]]></artwork>
        <t>Error Code 0 means registration succeeded.  Error Code 1 means registration failed.  All other error code values also mean failure, but they are reserved for future use.</t>
        <t>Registrations can be closed by a CLOSE_TIMESTAMP_CONTEXT Capsule:</t>
        <artwork><![CDATA[
CLOSE_TIMESTAMP_CONTEXT Capsule {
  Context ID (i)
}
]]></artwork>
        <t>Endpoints SHOULD close any TIMESTAMP context before closing its Inner Context.  If the Inner Context is closed first, datagrams subsequently received on the TIMESTAMP context MUST be dropped.</t>
      </section>
      <section anchor="format-1">
        <name>Format</name>
        <t>TIMESTAMP Datagrams have the following format:</t>
        <artwork><![CDATA[
TIMESTAMP Datagram {
  Context ID (i),
  Timestamp (32..64),
  Inner Data (..),
}
]]></artwork>
        <t>"Timestamp" is an NTP timestamp in the short or full format, as specified at registration.  The NTP Short Format occupies 4 bytes and provides a resolution of 15 microseconds; the full NTP Timestamp Format occupies 8 bytes and provides a resolution of 232 picoseconds.</t>
        <t>"Inner Data" is a payload to be interpreted in accordance with this context's "Inner Context ID".</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This example shows the PING and TIMESTAMP types used in combination.  Note that the client is using a "false start" pattern, creating and using two registrations before either is confirmed.</t>
      <figure anchor="timestamp-ping">
        <name>TIMESTAMP and PING example</name>
        <artwork><![CDATA[
Client                                                          Origin

# Headers
Capsule-Protocol: ?1
DG-Timestamp: ?1
DG-Ping: 42

# Capsules
REGISTER_TIMESTAMP_CONTEXT(Context ID = 6, Inner ID = 42, Short = 1) ==>

# Datagrams
[Context ID(6) + Timestamp(X) + Sequence Number(0) + Opaque Data] --->

# Headers
                                                   Capsule-Protocol: ?1
                                                   DG-Timestamp: ?1
                                                   DG-Ping: 42

# Capsules
              <== ACK_TIMESTAMP_CONTEXT(Context ID = 6, Error Code = 0)

# Datagrams
               <--- [Context ID(6) + Timestamp(Y) + Sequence Number(1)]
]]></artwork>
      </figure>
      <t>TIMESTAMP can also be applied to other payload types, such as UDP packets.  In CONNECT-UDP, these are pre-allocated with Context ID 0.  This example similarly shows a "false start" pattern, sending a datagram before its context registration, or support for this format, is confirmed.</t>
      <figure anchor="timestamp-UDP">
        <name>TIMESTAMP and UDP example</name>
        <artwork><![CDATA[
Client                                               CONNECT-UDP Server

# Headers
:method = CONNECT
:protocol = connect-udp
Capsule-Protocol: ?1
DG-Timestamp: ?1

# Capsules
REGISTER_TIMESTAMP_CONTEXT(Context ID = 2, Inner ID = 0, Short = 1) ==>

# Datagrams
[Context ID(2) + Timestamp(X) + UDP Payload] --->

# Headers
                                                   Capsule-Protocol: ?1
                                                   DG-Timestamp: ?1

# Capsules
              <== ACK_TIMESTAMP_CONTEXT(Context ID = 2, Error Code = 0)

# ... server waits for a UDP response packet.
# Datagrams
                      <--- [Context ID(2) + Timestamp(Y) + UDP Payload]
]]></artwork>
      </figure>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <section anchor="capsule-types">
        <name>Capsule types</name>
        <t>IANA is directed to add the following entries to the "HTTP Capsule Types" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Capsule Type</th>
              <th align="left">Value</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">REGISTER_TIMESTAMP_CONTEXT</td>
              <td align="left">TBD</td>
              <td align="left">(This document)</td>
            </tr>
            <tr>
              <td align="left">ACK_TIMESTAMP_CONTEXT</td>
              <td align="left">TBD</td>
              <td align="left">(This document)</td>
            </tr>
            <tr>
              <td align="left">CLOSE_TIMESTAMP_CONTEXT</td>
              <td align="left">TBD</td>
              <td align="left">(This document)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="http-headers">
        <name>HTTP headers</name>
        <t>IANA is directed to add the following entries to the "Hypertext Transfer Protocol (HTTP) Field Name Registry":</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Template</th>
              <th align="left">Status</th>
              <th align="left">Reference</th>
              <th align="left">Comments</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DG-Ping</td>
              <td align="left"> </td>
              <td align="left">permanent</td>
              <td align="left">(This document)</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">DG-Timestamp</td>
              <td align="left"> </td>
              <td align="left">permanent</td>
              <td align="left">(This document)</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author fullname="D. Mills" initials="D." surname="Mills">
              <organization/>
            </author>
            <author fullname="J. Martin" initials="J." role="editor" surname="Martin">
              <organization/>
            </author>
            <author fullname="J. Burbank" initials="J." surname="Burbank">
              <organization/>
            </author>
            <author fullname="W. Kasch" initials="W." surname="Kasch">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet.  This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family.  NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs.  It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required.  It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8899">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="T. Jones" initials="T." surname="Jones">
              <organization/>
            </author>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen">
              <organization/>
            </author>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler">
              <organization/>
            </author>
            <author fullname="T. Völker" initials="T." surname="Völker">
              <organization/>
            </author>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram.  This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased.  This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <reference anchor="I-D.draft-ietf-httpbis-semantics">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document describes the overall architecture of HTTP,
   establishes common terminology, and defines aspects of the protocol
   that are shared by all versions.  In this definition are core
   protocol elements, extensibility mechanisms, and the "http" and
   "https" Uniform Resource Identifier (URI) schemes.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Alex Chernyakhovsky for constructive input.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
uXO3S2YMij7u4uAphrI4X4Au/g0qkrf+qx8AAA==

-->

</rfc>
