rfc9221.original.xml | rfc9221.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.17 --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
<?rfc toc="yes"?> | -ietf-quic-datagram-10" category="std" obsoletes="" updates="" submissionType="I | |||
<?rfc sortrefs="yes"?> | ETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3" | |||
<?rfc symrefs="yes"?> | consensus="true" number="9221"> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
-ietf-quic-datagram-10" category="std" obsoletes="" updates="" submissionType="I | ||||
ETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.11.1 --> | <!-- xml2rfc v2v3 conversion 3.11.1 --> | |||
<front> | <front> | |||
<title abbrev="QUIC Datagrams">An Unreliable Datagram Extension to QUIC</tit le> | <title abbrev="QUIC Datagrams">An Unreliable Datagram Extension to QUIC</tit le> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-10"/> | <seriesInfo name="RFC" value="9221"/> | |||
<author initials="T." surname="Pauly" fullname="Tommy Pauly"> | <author initials="T." surname="Pauly" fullname="Tommy Pauly"> | |||
<organization>Apple Inc.</organization> | <organization>Apple Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>One Apple Park Way</street> | <street>One Apple Park Way</street> | |||
<city>Cupertino, California 95014</city> | <city>Cupertino</city> | |||
<region>CA</region> | ||||
<code>95014</code> | ||||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>tpauly@apple.com</email> | <email>tpauly@apple.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="E." surname="Kinnear" fullname="Eric Kinnear"> | <author initials="E." surname="Kinnear" fullname="Eric Kinnear"> | |||
<organization>Apple Inc.</organization> | <organization>Apple Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>One Apple Park Way</street> | <street>One Apple Park Way</street> | |||
<city>Cupertino, California 95014</city> | <city>Cupertino</city> | |||
<region>CA</region> | ||||
<code>95014</code> | ||||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>ekinnear@apple.com</email> | <email>ekinnear@apple.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="D." surname="Schinazi" fullname="David Schinazi"> | <author initials="D." surname="Schinazi" fullname="David Schinazi"> | |||
<organization>Google LLC</organization> | <organization>Google LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
<city>Mountain View, California 94043</city> | <city>Mountain View</city> | |||
<region>CA</region> | ||||
<code>94043</code> | ||||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>dschinazi.ietf@gmail.com</email> | <email>dschinazi.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2022" month="February" day="04"/> | <date year="2022" month="March"/> | |||
<workgroup>QUIC</workgroup> | <workgroup>QUIC</workgroup> | |||
<keyword>Internet-Draft</keyword> | ||||
<keyword>quic</keyword> | ||||
<keyword>datagram</keyword> | ||||
<abstract> | <abstract> | |||
<t>This document defines an extension to the QUIC transport protocol to ad d support | <t>This document defines an extension to the QUIC transport protocol to ad d support | |||
for sending and receiving unreliable datagrams over a QUIC connection.</t> | for sending and receiving unreliable datagrams over a QUIC connection.</t> | |||
</abstract> | </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/bro | ||||
wse/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> | </front> | |||
<middle> | <middle> | |||
<section anchor="introduction" numbered="true" toc="default"> | <section anchor="introduction" numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>The QUIC Transport Protocol <xref target="RFC9000" format="default"/> p rovides a secure, multiplexed | <t>The QUIC transport protocol <xref target="RFC9000" format="default"/> p rovides a secure, multiplexed | |||
connection for transmitting reliable streams of application data. QUIC uses | connection for transmitting reliable streams of application data. QUIC uses | |||
various frame types to transmit data within packets, and each frame type | various frame types to transmit data within packets, and each frame type | |||
defines whether the data it contains will be retransmitted. Streams of reliable | defines whether the data it contains will be retransmitted. Streams of reliable | |||
application data are sent using STREAM frames.</t> | application data are sent using STREAM frames.</t> | |||
<t>Some applications, particularly those that need to transmit real-time d ata, | <t>Some applications, particularly those that need to transmit real-time d ata, | |||
prefer to transmit data unreliably. In the past, these applications have built | prefer to transmit data unreliably. In the past, these applications have built | |||
directly upon UDP <xref target="RFC0768" format="default"/> as a transport and h ave often added security | directly upon UDP <xref target="RFC0768" format="default"/> as a transport and h ave often added security | |||
with DTLS <xref target="RFC6347" format="default"/>. Extending QUIC to support t ransmitting unreliable | with DTLS <xref target="RFC6347" format="default"/>. Extending QUIC to support t ransmitting unreliable | |||
application data provides another option for secure datagrams with the added | application data provides another option for secure datagrams with the added | |||
benefit of sharing the cryptographic and authentication context used for | benefit of sharing the cryptographic and authentication context used for | |||
reliable streams.</t> | reliable streams.</t> | |||
<t>This document defines two new DATAGRAM QUIC frame types which carry app lication | <t>This document defines two new DATAGRAM QUIC frame types that carry appl ication | |||
data without requiring retransmissions.</t> | data without requiring retransmissions.</t> | |||
<section anchor="specification-of-requirements" numbered="true" toc="defau lt"> | <section anchor="specification-of-requirements" numbered="true" toc="defau lt"> | |||
<name>Specification of Requirements</name> | <name>Specification of Requirements</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " | <t> | |||
SHOULD", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
document are to be interpreted as described in BCP 14 <xref target="RFC2119" for | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
mat="default"/> <xref target="RFC8174" format="default"/> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
</section> | 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> | </section> | |||
<section anchor="motivation" numbered="true" toc="default"> | <section anchor="motivation" numbered="true" toc="default"> | |||
<name>Motivation</name> | <name>Motivation</name> | |||
<t>Transmitting unreliable data over QUIC provides benefits over existing solutions:</t> | <t>Transmitting unreliable data over QUIC provides benefits over existing solutions:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>Applications that want to use both a reliable stream and an unreliab le flow to | <li>Applications that want to use both a reliable stream and an unreliab le flow to | |||
the same peer can benefit by sharing a single handshake and authentication | the same peer can benefit by sharing a single handshake and authentication | |||
context between a reliable QUIC stream and a flow of unreliable QUIC | context between a reliable QUIC stream and a flow of unreliable QUIC | |||
datagrams. This can reduce the latency required for handshakes compared to | datagrams. This can reduce the latency required for handshakes compared to | |||
opening both a TLS connection and a DTLS connection.</li> | opening both a TLS connection and a DTLS connection.</li> | |||
<li>QUIC uses a more nuanced loss recovery mechanism than the DTLS hands hake. This | <li>QUIC uses a more nuanced loss recovery mechanism than the DTLS hands hake. This | |||
can allow loss recovery to occur more quickly for QUIC data.</li> | can allow loss recovery to occur more quickly for QUIC data.</li> | |||
<li>QUIC datagrams are subject to QUIC congestion control. Providing a s ingle | <li>QUIC datagrams are subject to QUIC congestion control. Providing a s ingle | |||
congestion control for both reliable and unreliable data can be more effective | congestion control for both reliable and unreliable data can be more effective | |||
and efficient.</li> | and efficient.</li> | |||
</ul> | </ul> | |||
<t>These features can be useful for optimizing audio/video streaming appli cations, | <t>These features can be useful for optimizing audio/video streaming appli cations, | |||
gaming applications, and other real-time network applications.</t> | gaming applications, and other real-time network applications.</t> | |||
<t>Unreliable QUIC datagrams can also be used to implement an IP packet tu nnel over | <t>Unreliable QUIC datagrams can also be used to implement an IP packet tu nnel over | |||
QUIC, such as for a Virtual Private Network (VPN). Internet-layer tunneling | QUIC, such as for a Virtual Private Network (VPN). Internet-layer tunnelin g | |||
protocols generally require a reliable and authenticated handshake followed by | protocols generally require a reliable and authenticated handshake followed by | |||
unreliable secure transmission of IP packets. This can, for example, require a | 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 | 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 | QUIC connection could support both parts with the use of unreliable datagrams | |||
in addition to reliable streams.</t> | in addition to reliable streams.</t> | |||
</section> | </section> | |||
<section anchor="transport-parameter" numbered="true" toc="default"> | <section anchor="transport-parameter" numbered="true" toc="default"> | |||
<name>Transport Parameter</name> | <name>Transport Parameter</name> | |||
<t>Support for receiving the DATAGRAM frame types is advertised by means o f a QUIC | <t>Support for receiving the DATAGRAM frame types is advertised by means o f a QUIC | |||
Transport Parameter (name=max_datagram_frame_size, value=0x20). The | transport parameter (name=max_datagram_frame_size, value=0x20). The | |||
max_datagram_frame_size transport parameter is an integer value (represented as | 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 | 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 | (including the frame type, length, and payload) the endpoint is willing to | |||
receive, in bytes.</t> | receive, in bytes.</t> | |||
<t>The default for this parameter is 0, which indicates that the endpoint does not | <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 | 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 | supports the DATAGRAM frame types and is willing to receive such frames on this | |||
connection.</t> | connection.</t> | |||
<t>An endpoint MUST NOT send DATAGRAM frames until it has received the | <t>An endpoint <bcp14>MUST NOT</bcp14> send DATAGRAM frames until it has r eceived the | |||
max_datagram_frame_size transport parameter with a non-zero value during the | max_datagram_frame_size transport parameter with a non-zero value during the | |||
handshake (or during a previous handshake if 0-RTT is used). An endpoint MUST | handshake (or during a previous handshake if 0-RTT is used). An endpoint <bcp14> | |||
NOT send DATAGRAM frames that are larger than the max_datagram_frame_size value | MUST | |||
NOT</bcp14> send DATAGRAM frames that are larger than the max_datagram_frame_siz | ||||
e value | ||||
it has received from its peer. An endpoint that receives a DATAGRAM frame when | 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 | it has not indicated support via the transport parameter <bcp14>MUST</bcp14> ter minate the | |||
connection with an error of type PROTOCOL_VIOLATION. Similarly, an endpoint that | 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 | 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 | max_datagram_frame_size transport parameter <bcp14>MUST</bcp14> terminate the co nnection with | |||
an error of type PROTOCOL_VIOLATION.</t> | an error of type PROTOCOL_VIOLATION.</t> | |||
<t>For most uses of DATAGRAM frames, it is RECOMMENDED to send a value of 65535 in | <t>For most uses of DATAGRAM frames, it is <bcp14>RECOMMENDED</bcp14> to s end a value of 65535 in | |||
the max_datagram_frame_size transport parameter to indicate that this endpoint | the max_datagram_frame_size transport parameter to indicate that this endpoint | |||
will accept any DATAGRAM frame that fits inside a QUIC packet.</t> | will accept any DATAGRAM frame that fits inside a QUIC packet.</t> | |||
<t>The max_datagram_frame_size transport parameter is a unidirectional lim it and | <t>The max_datagram_frame_size transport parameter is a unidirectional lim it and | |||
indication of support of DATAGRAM frames. Application protocols that use | indication of support of DATAGRAM frames. Application protocols that use | |||
DATAGRAM frames MAY choose to only negotiate and use them in a single direction. | DATAGRAM frames <bcp14>MAY</bcp14> choose to only negotiate and use them in a si | |||
</t> | ngle direction.</t> | |||
<t>When clients use 0-RTT, they MAY store the value of the server's | <t>When clients use 0-RTT, they <bcp14>MAY</bcp14> store the value of the | |||
server's | ||||
max_datagram_frame_size transport parameter. Doing so allows the client to send | 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, | 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 than or | they <bcp14>MUST</bcp14> send a max_datagram_frame_size transport parameter grea ter than or | |||
equal to the value they sent to the client in the connection where they sent | 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 | 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 | max_datagram_frame_size transport parameter with their 0-RTT state, they <bcp14> MUST</bcp14> | |||
validate that the new value of the max_datagram_frame_size transport parameter | validate that the new value of the max_datagram_frame_size transport parameter | |||
sent by the server in the handshake is greater than or equal to the stored | sent by the server in the handshake is greater than or equal to the stored | |||
value; if not, the client MUST terminate the connection with error | value; if not, the client <bcp14>MUST</bcp14> terminate the connection with erro r | |||
PROTOCOL_VIOLATION.</t> | PROTOCOL_VIOLATION.</t> | |||
<t>Application protocols that use datagrams MUST define how they react to the | <t>Application protocols that use datagrams <bcp14>MUST</bcp14> define how they react to the | |||
absence of the max_datagram_frame_size transport parameter. If datagram support | absence of the max_datagram_frame_size transport parameter. If datagram support | |||
is integral to the application, the application protocol can fail the handshake | is integral to the application, the application protocol can fail the handshake | |||
if the max_datagram_frame_size transport parameter is not present.</t> | if the max_datagram_frame_size transport parameter is not present.</t> | |||
</section> | </section> | |||
<section anchor="datagram-frame-types" numbered="true" toc="default"> | <section anchor="datagram-frame-types" numbered="true" toc="default"> | |||
<name>Datagram Frame Types</name> | <name>Datagram Frame Types</name> | |||
<t>DATAGRAM frames are used to transmit application data in an unreliable manner. | <t>DATAGRAM frames are used to transmit application data in an unreliable manner. | |||
The Type field in the DATAGRAM frame takes the form 0b0011000X (or the values | The Type field in the DATAGRAM frame takes the form 0b0011000X (or the values | |||
0x30 and 0x31). The least significant bit of the Type field in the DATAGRAM | 0x30 and 0x31). The least significant bit of the Type field in the DATAGRAM | |||
frame is the LEN bit (0x01), which indicates whether there is a Length field | frame is the LEN bit (0x01), which indicates whether there is a Length field | |||
present: if this bit is set to 0, the Length field is absent and the Datagram | 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 | Data field extends to the end of the packet; if this bit is set to 1, the | |||
Length field is present.</t> | Length field is present.</t> | |||
<t>DATAGRAM frames are structured as follows:</t> | <t>DATAGRAM frames are structured as follows:</t> | |||
<figure anchor="datagram-format"> | <figure anchor="datagram-format"> | |||
<name>DATAGRAM Frame Format</name> | <name>DATAGRAM Frame Format</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<artwork name="" type="" align="left"> | ||||
DATAGRAM Frame { | DATAGRAM Frame { | |||
Type (i) = 0x30..0x31, | Type (i) = 0x30..0x31, | |||
[Length (i)], | [Length (i)], | |||
Datagram Data (..), | Datagram Data (..), | |||
} | } | |||
]]></artwork> | </artwork> | |||
</figure> | </figure> | |||
<t>DATAGRAM frames contain the following fields:</t> | <t>DATAGRAM frames contain the following fields:</t> | |||
<dl> | <dl> | |||
<dt> | <dt> | |||
Length: </dt> | Length: </dt> | |||
<dd> | <dd> | |||
<t>A variable-length integer specifying the length of the Datagram Dat a field in | <t>A variable-length integer specifying the length of the Datagram Dat a field in | |||
bytes. This field is present only when the LEN bit is set to 1. When the LEN bit | 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 | 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> | that empty (i.e., zero-length) datagrams are allowed.</t> | |||
skipping to change at line 204 ¶ | skipping to change at line 205 ¶ | |||
Datagram Data: </dt> | Datagram Data: </dt> | |||
<dd> | <dd> | |||
<t>The bytes of the datagram to be delivered.</t> | <t>The bytes of the datagram to be delivered.</t> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="behavior-and-usage" numbered="true" toc="default"> | <section anchor="behavior-and-usage" numbered="true" toc="default"> | |||
<name>Behavior and Usage</name> | <name>Behavior and Usage</name> | |||
<t>When an application sends a datagram over a QUIC connection, QUIC will generate | <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 | a new DATAGRAM frame and send it in the first available packet. This frame | |||
SHOULD be sent as soon as possible (as determined by factors like congestion | <bcp14>SHOULD</bcp14> be sent as soon as possible (as determined by factors like | |||
control, described below) and MAY be coalesced with other frames.</t> | congestion | |||
<t>When a QUIC endpoint receives a valid DATAGRAM frame, it SHOULD deliver | control, described below) and <bcp14>MAY</bcp14> be coalesced with other frames. | |||
the data | </t> | |||
<t>When a QUIC endpoint receives a valid DATAGRAM frame, it <bcp14>SHOULD< | ||||
/bcp14> deliver the data | ||||
to the application immediately, as long as it is able to process the frame and | to the application immediately, as long as it is able to process the frame and | |||
can store the contents in memory.</t> | can store the contents in memory.</t> | |||
<t>Like STREAM frames, DATAGRAM frames contain application data and MUST b e | <t>Like STREAM frames, DATAGRAM frames contain application data and <bcp14 >MUST</bcp14> be | |||
protected with either 0-RTT or 1-RTT keys.</t> | protected with either 0-RTT or 1-RTT keys.</t> | |||
<t>Note that while the max_datagram_frame_size transport parameter places a limit | <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 | on the maximum size of DATAGRAM frames, that limit can be further reduced by the | |||
max_udp_payload_size transport parameter and the Maximum Transmission Unit | max_udp_payload_size transport parameter and the Maximum Transmission Unit | |||
(MTU) of the path between endpoints. DATAGRAM frames cannot be fragmented; | (MTU) of the path between endpoints. DATAGRAM frames cannot be fragmented; | |||
therefore, application protocols need to handle cases where the maximum | therefore, application protocols need to handle cases where the maximum | |||
datagram size is limited by other factors.</t> | datagram size is limited by other factors.</t> | |||
<section anchor="multiplexing-datagrams" numbered="true" toc="default"> | <section anchor="multiplexing-datagrams" numbered="true" toc="default"> | |||
<name>Multiplexing Datagrams</name> | <name>Multiplexing Datagrams</name> | |||
<t>DATAGRAM frames belong to a QUIC connection as a whole, and are not a ssociated | <t>DATAGRAM frames belong to a QUIC connection as a whole and are not as sociated | |||
with any stream ID at the QUIC layer. However, it is expected that applications | with any stream ID at the QUIC layer. However, it is expected that applications | |||
will want to differentiate between specific DATAGRAM frames by using | will want to differentiate between specific DATAGRAM frames by using | |||
identifiers, such as for logical flows of datagrams or to distinguish between | identifiers, such as for logical flows of datagrams or to distinguish between | |||
different kinds of datagrams.</t> | different kinds of datagrams.</t> | |||
<t>Identifiers used to multiplex different kinds of datagrams, or flows | <t>Defining the identifiers used to multiplex different kinds of datagra | |||
of | ms or flows of datagrams is the responsibility of the application protocol runni | |||
datagrams, are the responsibility of the application protocol running over QUIC | ng over QUIC. The application defines the semantics of the Datagram Data field a | |||
to define. The application defines the semantics of the Datagram Data field and | nd | |||
how it is parsed.</t> | how it is parsed.</t> | |||
<t>If the application needs to support the coexistence of multiple flows of | <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 | 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 | 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> | large number of flows to be encoded using minimal space.</t> | |||
<t>QUIC implementations SHOULD present an API to applications to assign relative | <t>QUIC implementations <bcp14>SHOULD</bcp14> present an API to applicat ions to assign relative | |||
priorities to DATAGRAM frames with respect to each other and to QUIC streams.</t > | priorities to DATAGRAM frames with respect to each other and to QUIC streams.</t > | |||
</section> | </section> | |||
<section anchor="acknowledgement-handling" numbered="true" toc="default"> | <section anchor="acknowledgement-handling" numbered="true" toc="default"> | |||
<name>Acknowledgement Handling</name> | <name>Acknowledgement Handling</name> | |||
<t>Although DATAGRAM frames are not retransmitted upon loss detection, t hey are | <t>Although DATAGRAM frames are not retransmitted upon loss detection, t hey are | |||
ack-eliciting (<xref target="RFC9002" format="default"/>). Receivers SHOULD supp ort delaying ACK frames | ack-eliciting (<xref target="RFC9002" format="default"/>). Receivers <bcp14>SHOU LD</bcp14> support delaying ACK frames | |||
(within the limits specified by max_ack_delay) in response to receiving packets | (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 | that only contain DATAGRAM frames, since the sender takes no action if these | |||
packets are temporarily unacknowledged. Receivers will continue to send ACK | packets are temporarily unacknowledged. Receivers will continue to send ACK | |||
frames when conditions indicate a packet might be lost, since the packet's | 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 | payload is unknown to the receiver, and when dictated by max_ack_delay or other | |||
protocol components.</t> | protocol components.</t> | |||
<t>As with any ack-eliciting frame, when a sender suspects that a packet containing | <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 | 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> | 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 fram e might | <t>If a sender detects that a packet containing a specific DATAGRAM fram e might | |||
have been lost, the implementation MAY notify the application that it believes | have been lost, the implementation <bcp14>MAY</bcp14> notify the application tha t it believes | |||
the datagram was lost.</t> | the datagram was lost.</t> | |||
<t>Similarly, if a packet containing a DATAGRAM frame is acknowledged, t he | <t>Similarly, if a packet containing a DATAGRAM frame is acknowledged, t he | |||
implementation MAY notify the sender application that the datagram was | implementation <bcp14>MAY</bcp14> notify the sender application that the datagra m was | |||
successfully transmitted and received. Due to reordering, this can include a | 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 | DATAGRAM frame that was thought to be lost but, at a later point, was | |||
received and acknowledged. It is important to note that acknowledgement of a | received and acknowledged. It is important to note that acknowledgement of a | |||
DATAGRAM frame only indicates that the transport-layer handling on the receiver | 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 | processed the frame and does not guarantee that the application on the receiver | |||
successfully processed the data. Thus, this signal cannot replace | successfully processed the data. Thus, this signal cannot replace | |||
application-layer signals that indicate successful processing.</t> | application-layer signals that indicate successful processing.</t> | |||
</section> | </section> | |||
<section anchor="flow-control" numbered="true" toc="default"> | <section anchor="flow-control" numbered="true" toc="default"> | |||
<name>Flow Control</name> | <name>Flow Control</name> | |||
<t>DATAGRAM frames do not provide any explicit flow control signaling, a nd do not | <t>DATAGRAM frames do not provide any explicit flow control signaling an d do not | |||
contribute to any per-flow or connection-wide data limit.</t> | contribute to any per-flow or connection-wide data limit.</t> | |||
<t>The risk associated with not providing flow control for DATAGRAM fram es is that | <t>The risk associated with not providing flow control for DATAGRAM fram es is that | |||
a receiver might not be able to commit the necessary resources to process the | 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. | 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 | However, since DATAGRAM frames are inherently unreliable, they <bcp14>MAY</bcp14 > be dropped by | |||
the receiver if the receiver cannot process them.</t> | the receiver if the receiver cannot process them.</t> | |||
</section> | </section> | |||
<section anchor="congestion-control" numbered="true" toc="default"> | <section anchor="congestion-control" numbered="true" toc="default"> | |||
<name>Congestion Control</name> | <name>Congestion Control</name> | |||
<t>DATAGRAM frames employ the QUIC connection's congestion controller. A s a result, | <t>DATAGRAM frames employ the QUIC connection's congestion controller. A s a result, | |||
a connection might be unable to send a DATAGRAM frame generated by the | a connection might be unable to send a DATAGRAM frame generated by the | |||
application until the congestion controller allows it <xref target="RFC9002" for mat="default"/>. The sender | application until the congestion controller allows it <xref target="RFC9002" for mat="default"/>. The sender | |||
MUST either delay sending the frame until the controller allows it or drop the | <bcp14>MUST</bcp14> either delay sending the frame until the controller allows i | |||
frame without sending it (at which point it MAY notify the application). | t or drop the | |||
frame without sending it (at which point it <bcp14>MAY</bcp14> notify the applic | ||||
ation). | ||||
Implementations that use packet pacing (<xref section="7.7" sectionFormat="of" t arget="RFC9002" format="default"/>) can also | Implementations that use packet pacing (<xref section="7.7" sectionFormat="of" t arget="RFC9002" format="default"/>) can also | |||
delay the sending of DATAGRAM frames to maintain consistent packet pacing.</t> | delay the sending of DATAGRAM frames to maintain consistent packet pacing .</t> | |||
<t>Implementations can optionally support allowing the application to sp ecify a | <t>Implementations can optionally support allowing the application to sp ecify a | |||
sending expiration time beyond which a congestion-controlled DATAGRAM frame | sending expiration time beyond which a congestion-controlled DATAGRAM frame | |||
ought to be dropped without transmission.</t> | ought to be dropped without transmission.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="security-considerations" numbered="true" toc="default"> | <section anchor="security-considerations" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>The DATAGRAM frame shares the same security properties as the rest of t he data | <t>The DATAGRAM frame shares the same security properties as the rest of t he data | |||
transmitted within a QUIC connection, and the security considerations of | transmitted within a QUIC connection, and the security considerations of | |||
<xref target="RFC9000" format="default"/> apply accordingly. All application dat a transmitted with the | <xref target="RFC9000" format="default"/> apply accordingly. All application dat a transmitted with the | |||
DATAGRAM frame, like the STREAM frame, MUST be protected either by 0-RTT or | DATAGRAM frame, like the STREAM frame, <bcp14>MUST</bcp14> be protected either b y 0-RTT or | |||
1-RTT keys.</t> | 1-RTT keys.</t> | |||
<t>Application protocols that allow DATAGRAM frames to be sent in 0-RTT re quire a | <t>Application protocols that allow DATAGRAM frames to be sent in 0-RTT re quire a | |||
profile that defines acceptable use of 0-RTT; see <xref section="5.6" sectionFor mat="of" target="RFC9001" format="default"/>.</t> | profile that defines acceptable use of 0-RTT; see <xref section="5.6" sectionFor mat="of" target="RFC9001" format="default"/>.</t> | |||
<t>The use of DATAGRAM frames might be detectable by an adversary on path that is | <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 | capable of dropping packets. Since DATAGRAM frames do not use transport-level | |||
retransmission, connections that use DATAGRAM frames might be distinguished from | retransmission, connections that use DATAGRAM frames might be distinguished from | |||
other connections due to their different response to packet loss.</t> | other connections due to their different response to packet loss.</t> | |||
</section> | </section> | |||
<section anchor="iana-considerations" numbered="true" toc="default"> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<section anchor="quic-transport-parameter" numbered="true" toc="default"> | <section anchor="quic-transport-parameter" numbered="true" toc="default"> | |||
<name>QUIC Transport Parameter</name> | <name>QUIC Transport Parameter</name> | |||
<t>This document registers a new value in the QUIC Transport Parameter R egistry | <t>This document registers a new value in the "QUIC Transport Parameters " registry | |||
maintained at | maintained at | |||
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport"/> | <eref target="https://www.iana.org/assignments/quic" brackets="angle"/>.</t> | |||
.</t> | <dl spacing="compact"> | |||
<dl> | ||||
<dt> | <dt> | |||
Value: </dt> | Value: </dt> | |||
<dd> | <dd> | |||
<t>0x20</t> | 0x20 | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Parameter Name: </dt> | Parameter Name: </dt> | |||
<dd> | <dd> | |||
<t>max_datagram_frame_size</t> | max_datagram_frame_size | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Status: </dt> | Status: </dt> | |||
<dd> | <dd> | |||
<t>permanent</t> | permanent | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Specification: </dt> | Specification: </dt> | |||
<dd> | <dd> | |||
<t>This document</t> | RFC 9221 | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="quic-frame-types" numbered="true" toc="default"> | <section anchor="quic-frame-types" numbered="true" toc="default"> | |||
<name>QUIC Frame Types</name> | <name>QUIC Frame Types</name> | |||
<t>This document registers two new values in the QUIC Frame Type registr y | <t>This document registers two new values in the "QUIC Frame Types" regi stry | |||
maintained at | maintained at | |||
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-frame-types" | <eref target="https://www.iana.org/assignments/quic" brackets="angle"/>.</t> | |||
/>.</t> | <dl spacing="compact"> | |||
<dl> | ||||
<dt> | <dt> | |||
Value: </dt> | Value: </dt> | |||
<dd> | <dd> | |||
<t>0x30 and 0x31 (if this document is approved)</t> | 0x30-0x31 | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Frame Name: </dt> | Frame Name: </dt> | |||
<dd> | <dd> | |||
<t>DATAGRAM</t> | DATAGRAM | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Status: </dt> | Status: </dt> | |||
<dd> | <dd> | |||
<t>permanent</t> | permanent | |||
</dd> | </dd> | |||
<dt> | <dt> | |||
Specification: </dt> | Specification: </dt> | |||
<dd> | <dd> | |||
<t>This document</t> | RFC 9221 | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</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> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="RFC9001"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.9001.xml"/> | |||
<title>Using TLS to Secure QUIC</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author fullname="M. Thomson" initials="M." role="editor" surname="T | FC.9000.xml"/> | |||
homson"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<organization/> | FC.2119.xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author fullname="S. Turner" initials="S." role="editor" surname="Tu | FC.8174.xml"/> | |||
rner"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<organization/> | FC.9002.xml"/> | |||
</author> | ||||
<date month="May" year="2021"/> | ||||
<abstract> | ||||
<t>This document describes how Transport Layer Security (TLS) is u | ||||
sed 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="I | ||||
yengar"> | ||||
<organization/> | ||||
</author> | ||||
<author fullname="M. Thomson" initials="M." role="editor" surname="T | ||||
homson"> | ||||
<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 communic | ||||
ation, low-latency connection establishment, and network path migration. QUIC in | ||||
cludes security measures that ensure confidentiality, integrity, and availabilit | ||||
y in a range of deployment circumstances. Accompanying documents describe the i | ||||
ntegration of TLS for key negotiation, loss detection, and an exemplary congesti | ||||
on 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</tit | ||||
le> | ||||
<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 sig | ||||
nify the requirements in the specification. These words are often capitalized. | ||||
This document defines these words as they should be interpreted in IETF document | ||||
s. 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</ti | ||||
tle> | ||||
<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 protoco | ||||
l specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
t 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="RFC9002"> | ||||
<front> | ||||
<title>QUIC Loss Detection and Congestion Control</title> | ||||
<author fullname="J. Iyengar" initials="J." role="editor" surname="I | ||||
yengar"> | ||||
<organization/> | ||||
</author> | ||||
<author fullname="I. Swett" initials="I." role="editor" surname="Swe | ||||
tt"> | ||||
<organization/> | ||||
</author> | ||||
<date month="May" year="2021"/> | ||||
<abstract> | ||||
<t>This document describes loss detection and congestion control m | ||||
echanisms for QUIC.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9002"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9002"/> | ||||
</reference> | ||||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC0768"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.0768.xml"/> | |||
<title>User Datagram Protocol</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author fullname="J. Postel" initials="J." surname="Postel"> | FC.6347.xml"/> | |||
<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 L | ||||
ayer Security (DTLS) protocol. The DTLS protocol provides communications privac | ||||
y for datagram protocols. The protocol allows client/server applications to com | ||||
municate in a way that is designed to prevent eavesdropping, tampering, or messa | ||||
ge forgery. The DTLS protocol is based on the Transport Layer Security (TLS) pr | ||||
otocol and provides equivalent security guarantees. Datagram semantics of the u | ||||
nderlying transport are preserved by the DTLS protocol. This document updates D | ||||
TLS 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> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The original proposal for this work came from <contact fullname="Ian Sw | ||||
ett"/>.</t> | ||||
<t>This document had reviews and input from many contributors in the IETF | ||||
QUIC | ||||
Working Group, with substantive input from <contact fullname="Nick Banks"/>, <co | ||||
ntact fullname="Lucas Pardue"/>, <contact fullname="Rui Paulo"/>, | ||||
<contact fullname="Martin Thomson"/>, <contact fullname="Victor Vasiliev"/>, and | ||||
<contact fullname="Chris Wood"/>.</t> | ||||
</section> | ||||
</back> | </back> | |||
<!-- ##markdown-source: | ||||
H4sIAMak/WEAA81bW3Mbt5J+x6/A2g+RqiiachznRKnURseyE9WRL2vJzm6l | ||||
Ui5wBiSxGg64cxHNuJzfvl93AzOYIeVdn9qHfbBFzgXoe3/dDZ6cnKjGNYU9 | ||||
0+elfldWtnBmXlh9YRqzrMxaP//Y2LJ2vtSN1//27vKZMvN5Ze/O+Ev3XK1y | ||||
n5VmjYXyyiyaE2ebxcl/tS47ycMjJ6czhc/2TGX4f+mr3Zmum1xtl7KWurNl | ||||
i7taLyvfbs70A7r6AN+b3QbrPvjNV7euXOpf6DZdXxtX4Drt8jPtN/XVkq6b | ||||
Klvh+qppNvXZo0f0GF1yd3YaH3tEFx7NK7+t7SNa4BG9uHTNqp2HJbfLR5F0 | ||||
uleA6LpJlpVnpvLO1Pnu6Uf3SWC6atbFA6XcpjrTTdXWzePZ7IfZY3Vrd1tf | ||||
5Wf6smxsVdrm5IKWUKpuTJl/MIUvIYCdrdXGnenfG59NdO2rprKLGp92a/rw | ||||
h1KmbVa+IhGe4J/WrqzP9M1UvzFtseMroqIbv17vkqsQCAxgs4HiL8tsytdq | ||||
rG7B7+vShltvTHWrfzPySuYa6O9Zu7FV40o/0c9M4Ra+Kp3RP3w3O30iT/m2 | ||||
bEjR70rX2FxfNyRF7Rf6fG0rlxl+yooimw0R9LOhzaaZXw/ZeD7V/3BlaU2V | ||||
MPIcawwu///gxN4KSffxcjHV17DH0vzpEmYuzJ3LhzeYnV+8X4Loq6tnA3ZO | ||||
n85m2HyzggFag4vM1nbA1Uui2rhSv3d2O+TsyezJt1/PWV4H8tiTfl7SVeZP | ||||
lb5amwY+Rub39sWzH2az0zOlTk5OtJmDZpPBnm9WrtaIFO3alo3O7cKV2MqU | ||||
2qZhBvxIdMFbZb2BoetN5WH1vqDbJs913W7ougI3urZlTnEBrqIrm1l3R9/a | ||||
PphF/wNTd7bSRhbPPHSUNdhzKmSuXZ4XVqmH5IaVz1u+SUQHcm46ct5Ecj59 | ||||
+hfhdfb5MxEJDRJDoClrKzvR67ZoHGzgo81Vv6Emspm5tWsaorajlbTLlC40 | ||||
GQ/Ezy8QC1Ohoq0RB+5M5Xxb6wXYshwga5ZcWJOf11tYBnS/MdmtbRAoSEDW | ||||
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 | ||||
</rfc> | </rfc> | |||
End of changes. 60 change blocks. | ||||
360 lines changed or deleted | 122 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |