<?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.17 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-datagram-07" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.11.1 -->
  <front>
    <title abbrev="QUIC Datagrams">An Unreliable Datagram Extension to QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-07"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2021" month="December" day="08"/>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an extension to the QUIC transport protocol to
add support for sending and receiving unreliable datagrams over
a QUIC connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto: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/quicwg/datagram"/>.</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.
QUIC uses various frame types to transmit data within packets, and each frame
type defines whether or not the data it contains will be retransmitted.
Streams of reliable application data are sent using STREAM frames.</t>
      <t>Some applications, particularly those that need to transmit real-time data,
prefer to transmit data unreliably. In the past, these applications have built
directly upon UDP <xref target="RFC0768" format="default"/> as a transport, and have often added security with
DTLS <xref target="RFC6347" format="default"/>. Extending QUIC to support transmitting unreliable application
data provides another option for secure datagrams, with the added benefit of
sharing the cryptographic and authentication context used for reliable streams.</t>
      <t>This document defines two new DATAGRAM QUIC frame types, which
carry application data without requiring retransmissions.</t>
      <section anchor="specification-of-requirements" numbered="true" toc="default">
        <name>Specification of Requirements</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>
    <section anchor="motivation" numbered="true" toc="default">
      <name>Motivation</name>
      <t>Transmitting unreliable data over QUIC provides benefits over existing
solutions:</t>
      <ul spacing="normal">
        <li>Applications that open both a reliable TLS stream and an unreliable
DTLS flow to the same peer can benefit by sharing a single handshake
and authentication context between a reliable QUIC stream and flow
of unreliable QUIC datagrams. This can reduce the latency required
for handshakes.</li>
        <li>QUIC uses a more nuanced loss recovery mechanism than the DTLS
handshake, which has a basic packet loss retransmission timer. This
can allow loss recovery to occur more quickly for QUIC data.</li>
        <li>QUIC datagrams are subject to QUIC congestion control. Providing a single
congestion control for both reliable and unreliable data can be more effective
and efficient.</li>
      </ul>
      <t>These features can be useful for optimizing audio/video streaming applications,
gaming applications, and other real-time network applications.</t>
      <t>Unreliable QUIC datagrams can also be used to implement an IP
packet tunnel over QUIC, such as for a Virtual Private Network (VPN).
Internet-layer tunneling protocols generally require a reliable and
authenticated handshake, followed by unreliable secure transmission
of IP packets. This can, for example, require a TLS connection for
the control data, and DTLS for tunneling IP packets. A single
QUIC connection could support both parts with the use of unreliable
datagrams.</t>
    </section>
    <section anchor="transport-parameter" numbered="true" toc="default">
      <name>Transport Parameter</name>
      <t>Support for receiving the DATAGRAM frame types is advertised by means
of a QUIC Transport Parameter (name=max_datagram_frame_size, value=0x0020).
The max_datagram_frame_size transport parameter is an integer value
(represented as a variable-length integer) that represents the maximum
size of a DATAGRAM frame (including the frame type, length, and
payload) the endpoint is willing to receive, in bytes.</t>
      <t>The default for this parameter is 0, which indicates that the endpoint
does not support DATAGRAM frames. A value greater than 0 indicates
that the endpoint supports the DATAGRAM frame types and is willing to
receive such frames on this connection.</t>
      <t>An endpoint MUST NOT send DATAGRAM frames until it has received the
max_datagram_frame_size transport parameter with a non-zero value. An
endpoint MUST NOT send DATAGRAM frames that are larger than the
max_datagram_frame_size value it has received from its peer.
An endpoint that receives a DATAGRAM frame when it has not indicated support
via the transport parameter MUST terminate the connection with an error of
type PROTOCOL_VIOLATION. Similarly, an endpoint that receives a DATAGRAM frame
that is larger than the value it sent in its max_datagram_frame_size
transport parameter MUST terminate the connection with an error of type
PROTOCOL_VIOLATION.</t>
      <t>For most uses of DATAGRAM frames, it is RECOMMENDED to send a value of 65535 in
the max_datagram_frame_size transport parameter to indicate that this endpoint
will accept any DATAGRAM frame that fits inside a QUIC packet.</t>
      <t>The max_datagram_frame_size transport parameter is a unidirectional limit and
indication of support of DATAGRAM frames. Application protocols that use
DATAGRAM frames MAY choose to only negotiate and use them in a single direction.</t>
      <t>When clients use 0-RTT, they MAY store the value of the server's
max_datagram_frame_size transport parameter. Doing so allows the client to send
DATAGRAM frames in 0-RTT packets. When servers decide to accept 0-RTT data,
they MUST send a max_datagram_frame_size transport parameter greater or equal
to the value they sent to the client in the connection where they sent them
the NewSessionTicket message. If a client stores the value of the
max_datagram_frame_size transport parameter with their 0-RTT state, they MUST
validate that the new value of the max_datagram_frame_size transport parameter
sent by the server in the handshake is greater or equal to the stored value;
if not, the client MUST terminate the connection with error PROTOCOL_VIOLATION.</t>
      <t>Application protocols that use datagrams MUST define how they react to the
max_datagram_frame_size transport parameter being missing. If datagram support
is integral to the application, the application protocol can fail the handshake
if the max_datagram_frame_size transport parameter is not present.</t>
    </section>
    <section anchor="datagram-frame-types" numbered="true" toc="default">
      <name>Datagram Frame Types</name>
      <t>DATAGRAM frames are used to transmit application data in an unreliable manner.
The DATAGRAM frame type takes the form 0b0011000X (or the values 0x30
and 0x31). The least significant bit of the DATAGRAM frame type is the
LEN bit (0x01). It indicates that there is a Length field present. If this
bit is set to 0, the Length field is absent and the Datagram Data field extends
to the end of the packet. If this bit is set to 1, the Length field is present.</t>
      <t>DATAGRAM frames are structured as follows:</t>
      <figure anchor="datagram-format">
        <name>DATAGRAM Frame Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
DATAGRAM Frame {
  Type (i) = 0x30..0x31,
  [Length (i)],
  Datagram Data (..),
}
]]></artwork>
      </figure>
      <t>DATAGRAM frames contain the following fields:</t>
      <dl>
        <dt>
Length:  </dt>
        <dd>
          <t>A variable-length integer specifying the length of the Datagram Data field in
bytes. This field is present only when the LEN bit is set to 1. When the LEN bit
is set to 0, the Datagram Data field extends to the end of the QUIC packet. Note
that empty (i.e., zero-length) datagrams are allowed.</t>
        </dd>
        <dt>
Datagram Data:  </dt>
        <dd>
          <t>The bytes of the datagram to be delivered.</t>
        </dd>
      </dl>
    </section>
    <section anchor="behavior-and-usage" numbered="true" toc="default">
      <name>Behavior and Usage</name>
      <t>When an application sends a datagram over a QUIC connection,
QUIC will generate a new DATAGRAM frame and send it in the first available
packet. This frame SHOULD be sent as soon as possible, and MAY be
coalesced with other frames.</t>
      <t>When a QUIC endpoint receives a valid DATAGRAM frame, it SHOULD deliver the
data to the application immediately, as long as it is able to process the frame
and can store the contents in memory.</t>
      <t>Like STREAM frames, DATAGRAM frames contain application data and MUST be protected
with either 0-RTT or 1-RTT keys.</t>
      <t>Note that while the max_datagram_frame_size transport parameter places a limit
on the maximum size of DATAGRAM frames, that limit can be further reduced by
the max_packet_size transport parameter and the Maximum Transmission Unit
(MTU) of the path between endpoints. DATAGRAM frames cannot be fragmented;
therefore, application protocols need to handle cases where the maximum datagram
size is limited by other factors.</t>
      <section anchor="multiplexing-datagrams" numbered="true" toc="default">
        <name>Multiplexing Datagrams</name>
        <t>DATAGRAM frames belong to a QUIC connection as a whole, and are not
associated with any stream ID at the QUIC layer. However, it is expected
that applications will want to differentiate between specific DATAGRAM frames
by using identifiers, such as for logical flows of datagrams or to distinguish
between different kinds of datagrams.</t>
        <t>Identifiers used to multiplex different kinds of datagrams, or flows of
datagrams, are the responsibility of the application protocol running over QUIC
to define. The application defines the semantics of the Datagram Data field
and how it is parsed.</t>
        <t>If the application needs to support the coexistence of multiple flows of
datagrams, one recommended pattern is to use a variable-length integer at the
beginning of the Datagram Data field. This is a simple approach that allows
a large number of flows to be encoded using minimal space.</t>
        <t>QUIC implementations SHOULD present an API to applications to assign relative
priorities to DATAGRAM frames with respect to each other and to QUIC streams.</t>
      </section>
      <section anchor="acknowledgement-handling" numbered="true" toc="default">
        <name>Acknowledgement Handling</name>
        <t>Although DATAGRAM frames are not retransmitted upon loss detection, they are
ack-eliciting (<xref target="RFC9002" format="default"/>). Receivers SHOULD support delaying
ACK frames (within the limits specified by max_ack_delay) in response to
receiving packets that only contain DATAGRAM frames, since the sender takes no
action if these packets are temporarily unacknowledged. Receivers will
continue to send ACK frames when conditions indicate a packet might be lost,
since the packet's payload is unknown to the receiver, and when dictated by
max_ack_delay or other protocol components.</t>
        <t>As with any ack-eliciting frame, when a sender suspects that a packet containing
only DATAGRAM frames has been lost, it sends probe packets to elicit a faster
acknowledgement as described in <xref section="6.2.4" sectionFormat="of" target="RFC9002" format="default"/>.</t>
        <t>If a sender detects that a packet containing a specific DATAGRAM frame might
have been lost, the implementation MAY notify the application that it believes
the datagram was lost.</t>
        <t>Similarly, if a packet containing a DATAGRAM frame is acknowledged, the
implementation MAY notify the sender application that the datagram was
successfully transmitted and received. Due to reordering, this can include a
DATAGRAM frame that was thought to be lost, but which at a later point was
received and acknowledged. It is important to note that acknowledgement of a
DATAGRAM frame only indicates that the transport-layer handling on the receiver
processed the frame, and does not guarantee that the application on the receiver
successfully processed the data. Thus, this signal cannot replace
application-layer signals that indicate successful processing.</t>
      </section>
      <section anchor="flow-control" numbered="true" toc="default">
        <name>Flow Control</name>
        <t>DATAGRAM frames do not provide any explicit flow control signaling,
and do not contribute to any per-flow or connection-wide data limit.</t>
        <t>The risk associated with not providing flow control for DATAGRAM frames
is that a receiver might not be able to commit the necessary resources to process
the frames. For example, it might not be able to store the frame contents in memory.
However, since DATAGRAM frames are inherently unreliable, they MAY be
dropped by the receiver if the receiver cannot process them.</t>
      </section>
      <section anchor="congestion-control" numbered="true" toc="default">
        <name>Congestion Control</name>
        <t>DATAGRAM frames employ the QUIC connection's congestion controller. As a
result, a connection might be unable to send a DATAGRAM frame generated by the
application until the congestion controller allows it <xref target="RFC9002" format="default"/>. The sender
implementation MUST either delay sending the frame until the controller allows
it or drop the frame without sending it (at which point it MAY notify the
application). Implementations that use packet pacing (<xref section="7.7" sectionFormat="of" target="RFC9002" format="default"/>)
can also delay the sending of DATAGRAM frames to maintain consistent packet
pacing.</t>
        <t>Implementations can optionally support allowing the application to specify
a sending expiration time, beyond which a congestion-controlled DATAGRAM
frame ought to be dropped without transmission.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The DATAGRAM frame shares the same security properties as the rest of
the data transmitted within a QUIC connection. All application data transmitted
with the DATAGRAM frame, like the STREAM frame, MUST be protected
either by 0-RTT or 1-RTT keys.</t>
      <t>Application protocols that allow DATAGRAM frames to be sent in 0-RTT require a
profile that defines acceptable use of 0-RTT; see <xref section="5.6" sectionFormat="of" target="RFC9001" format="default"/>.</t>
      <t>The use of DATAGRAM frames might be detectable by an adversary on path that is
capable of dropping packets. Since DATAGRAM frames do not use transport-level
retransmission, connections that use DATAGRAM frames might be distinguished from
other frames using the different response to loss.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter" numbered="true" toc="default">
        <name>QUIC Transport Parameter</name>
        <t>This document registers a new value in the QUIC Transport Parameter Registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport"/>.</t>
        <dl>
          <dt>
Value:  </dt>
          <dd>
            <t>0x20 (if this document is approved)</t>
          </dd>
          <dt>
Parameter Name:  </dt>
          <dd>
            <t>max_datagram_frame_size</t>
          </dd>
          <dt>
Status:  </dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>
Specification:  </dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="quic-frame-types" numbered="true" toc="default">
        <name>QUIC Frame Types</name>
        <t>This document registers two new values in the QUIC Frame Type registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-frame-types"/>.</t>
        <dl>
          <dt>
Value:  </dt>
          <dd>
            <t>0x30 and 0x31 (if this document is approved)</t>
          </dd>
          <dt>
Frame Name:  </dt>
          <dd>
            <t>DATAGRAM</t>
          </dd>
          <dt>
Status:  </dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>
Specification:  </dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>The original proposal for this work came from Ian Swett.</t>
      <t>This document had reviews and input from many contributors in the
IETF QUIC Working Group, with substantive input from Nick Banks,
Lucas Pardue, Rui Paulo, Martin Thomson, Victor Vasiliev, and Chris Wood.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <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="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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC0768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
