<?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.6 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schwartz-masque-h3-datagram-ping-01" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="HTTP Datagram PING">HTTP Datagram PING</title>
    <seriesInfo name="Internet-Draft" value="draft-schwartz-masque-h3-datagram-ping-01"/>
    <author initials="B." surname="Schwartz" fullname="Benjamin Schwartz">
      <organization>Google LLC</organization>
      <address>
        <email>bemasc@google.com</email>
      </address>
    </author>
    <date year="2021" month="October" day="04"/>
    <area>General</area>
    <workgroup>masque</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This draft defines an HTTP Datagram Format Type for measuring the functionality of a Datagram path.</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" numbered="true" toc="default">
      <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="ping-datagram-format-type" numbered="true" toc="default">
      <name>PING Datagram Format Type</name>
      <t>PING is an HTTP Datagram Format Type <xref target="I-D.draft-ietf-masque-h3-datagram" format="default"/>.  It has no Additional Data.</t>
      <section anchor="format" numbered="true" toc="default">
        <name>Format</name>
        <t>PING Datagrams have the following format:</t>
        <figure anchor="ping-datagram-format">
          <name>PING Datagram Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
PING {
  Sequence Number (i),
  Opaque Data (..),
}
]]></artwork>
        </figure>
        <t>All <tt>Sequence Number</tt> and <tt>Opaque Data</tt> values are potentially valid.</t>
      </section>
      <section anchor="use" numbered="true" toc="default">
        <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="use-cases" numbered="true" toc="default">
      <name>Use cases</name>
      <t>PING Datagrams can be used to characterize 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" format="default"/>.  This enables endpoints to estimate the HTTP Datagram MTU of each Datagram path, 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" format="default"/>).</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA considerations</name>
      <t>IANA is directed to add the following entry to the "HTTP Datagram Format Types" registry:</t>
      <ul spacing="normal">
        <li>Type: PING</li>
        <li>Value: TBD</li>
        <li>Reference: (This document)</li>
      </ul>
    </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="I-D.draft-ietf-masque-h3-datagram">
          <front>
            <title>Using Datagrams with HTTP</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Lucas Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="12" month="July" year="2021"/>
            <abstract>
              <t>   The QUIC DATAGRAM extension provides application protocols running
   over QUIC with a mechanism to send unreliable data while leveraging
   the security and congestion-control properties of QUIC.  However,
   QUIC DATAGRAM frames do not provide a means to demultiplex
   application contexts.  This document describes how to use QUIC
   DATAGRAM frames when the application protocol running over QUIC is
   HTTP/3.  It associates datagrams with client-initiated bidirectional
   streams and defines an optional additional demultiplexing layer.
   Additionally, this document defines how to convey datagrams over
   prior versions of HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-h3-datagram-03"/>
        </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" toc="default">
      <name>Acknowledgments</name>
      <t>Thanks to Alex Chernyakhovsky for constructive input.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAGtWW2EAA4VW224bNxB951dM5Re78Ap2EiDxAkEqS7kIkGXVlgsURVFT
uyMto11yS1JSZEP5ln5Lv6yHXCW2FBv1i5ZDzszhmTNDJ0kivPIlp9T6NB6P
qCe9nFlZ0ag//NgScjKxvHxmMzeZlhVccyunPnFZsZLW3yWVdH8vOCleJvnW
IamVniUnpyKTnmfGrlNyPhdC1TYlbxfOvzg5OTt5IaRlmdJH1mxlKVbGzmfW
LOqUmphizmsY85T62rPV7JNeyC2E81Lnf8nSaOBZsxO1SukPb7JjcsZ6y1OH
r3UVPv4UQi58YWwqKBGEP6VdSudtut5eIRqbu52z/iwrpXf3jJ1Jre6kV0YD
rzGzkmkw6MZNrqQqU5rg12W/zOJmOzOVECJJEpIT563MAHpcKNeQRzlPlWZH
UtMu1R+MraSn8bpmmhpLFUu3sKCTfAHLQmcBgyyVX5OZknzwrKUv2k3KSuV5
yUIcUNfoJevgEnLl1At5VVwHPExgmALFjloXN9fj1nHzS8PL+H31/teb/tX7
Xvi+/tQZDL5/iO2J60+XN4Pew9eDZ/fy4uL9sNc4w0o7JtG66PyOnYCqdTka
9y+HnUELpcFFA00mW1RATpAIeQN2sQUN1JY95ySdyNllVk2wgM95d/TvP6ev
6P7+p6sP3Renp2ebzXbx5vT1KyxWBesmm9HlersEp2sh65qlDVFkWVIma+Vl
CflIR64wK00FWwazoDM0wpO1EiJuqf+pKBD1k167aSDFfvpE82w2baK+pwL5
taFOnqum5DEkcBwcbGNuk37L5OCy5EYnpizNKqhmGk+mQnz9+rU5fg/RXjOS
6oxpuKgmbOlQHR3DfFlL2GNAOmy3YdtEv/uUDmJLf2/wJizFWfK29RQtrY0Q
HfB5u5frNtbg9lGqW1rKchGaAaWujQ96RSXWwazy5sI3jhu9OtY5AHOlPBz2
CrJSvkD4NTFE/0zmsL2THWzf1EaT5YzVMnD2TNhnokYVBW9VqyDY2D6W6yCy
6LgfrTCOnwAH7WCaUSntjO1x48tV7ffhChGHYcW5klaBtpgQBcG4ymlPESGK
WXiqTK6mKosD7Jg+YwJTqeYc2TDAb3dFG0gPnKMbHIbrvs4ykIGGXDg0H3oz
K2QYcGzVXSM/1CjxJsHPXi+EGYW+ciZTMrTxN2bjKRsYcR71gIKIv8iqLvm4
2UOo2mAANLkxExXoRf79+wINQijor0GC1yRgsaqGViuOCiiNc2TDCQzQcOhH
jO0frhy0ialgyC0wHiZlM50DArRpbzQYXYxvejSyBryMZDZnQL2/fxfmz5uz
s9jTcfyzDs7u0YX2Ie+iQdgAk2VW7EI8DgMLgxulQwS5NCqPzREEvBMCGQq0
6kqhGQEutwbzLrTV0MSMoY0LxkVicR5qCUxZQzekM0WaqTUVjgb1Kg2DRQG3
NmghtGW5jg+VldrVeIXpkNuzNuEF6R4B7iOyt6UOR5dsIbEo/fDcGbs9onZF
fug4jM9rju8fvWy/DrS825umhff1RLnE4S3WAf9mcxS13O8MO5Th1VOAKbfv
XzSGt0ahe32jZZnnexMUPW3XYSuYW8/OdtfCrWZgDf/tCPFztKVRnlj8FgZc
SuPzHhZXDPJC66d0OH781h01r/cE8gmYO9lcm1XJ+SxsOkxhHUcF529bU2iR
w4gdF1LPo4g6JX+hLlpZr+W8MEs3X0eNhlvjfy7wtgyFqxe+Lf4Dhe0AaQgK
AAA=

-->

</rfc>
