draft-ietf-quic-datagram-00.txt   draft-ietf-quic-datagram-01.txt 
Network Working Group T. Pauly Network Working Group T. Pauly
Internet-Draft E. Kinnear Internet-Draft E. Kinnear
Intended status: Standards Track Apple Inc. Intended status: Standards Track Apple Inc.
Expires: 29 August 2020 D. Schinazi Expires: 25 February 2021 D. Schinazi
Google LLC Google LLC
26 February 2020 24 August 2020
An Unreliable Datagram Extension to QUIC An Unreliable Datagram Extension to QUIC
draft-ietf-quic-datagram-00 draft-ietf-quic-datagram-01
Abstract Abstract
This document defines an extension to the QUIC transport protocol to This document defines an extension to the QUIC transport protocol to
add support for sending and receiving unreliable datagrams over a add support for sending and receiving unreliable datagrams over a
QUIC connection. QUIC connection.
Discussion of this work is encouraged to happen on the QUIC IETF Discussion of this work is encouraged to happen on the QUIC IETF
mailing list quic@ietf.org (mailto:quic@ietf.org) or on the GitHub mailing list quic@ietf.org (mailto:quic@ietf.org) or on the GitHub
repository which contains the draft: https://github.com/quicwg/ repository which contains the draft: https://github.com/quicwg/
skipping to change at page 1, line 39 skipping to change at page 1, line 39
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 29 August 2020. This Internet-Draft will expire on 25 February 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 4, line 16 skipping to change at page 4, line 16
Support for receiving the DATAGRAM frame types is advertised by means Support for receiving the DATAGRAM frame types is advertised by means
of a QUIC Transport Parameter (name=max_datagram_frame_size, of a QUIC Transport Parameter (name=max_datagram_frame_size,
value=0x0020). The max_datagram_frame_size transport parameter is an value=0x0020). The max_datagram_frame_size transport parameter is an
integer value (represented as a variable-length integer) that integer value (represented as a variable-length integer) that
represents the maximum size of a DATAGRAM frame (including the frame represents the maximum size of a DATAGRAM frame (including the frame
type, length, and payload) the endpoint is willing to receive, in type, length, and payload) the endpoint is willing to receive, in
bytes. An endpoint that includes this parameter supports the bytes. An endpoint that includes this parameter supports the
DATAGRAM frame types and is willing to receive such frames on this DATAGRAM frame types and is willing to receive such frames on this
connection. Endpoints MUST NOT send DATAGRAM frames until they have connection. Endpoints MUST NOT send DATAGRAM frames until they have
sent and received the max_datagram_frame_size transport parameter. received the max_datagram_frame_size transport parameter. Endpoints
Endpoints MUST NOT send DATAGRAM frames of size strictly larger than MUST NOT send DATAGRAM frames of size strictly larger than the value
the value of max_datagram_frame_size the endpoint has received from of max_datagram_frame_size the endpoint has received from its peer.
its peer. An endpoint that receives a DATAGRAM frame when it has not An endpoint that receives a DATAGRAM frame when it has not sent the
sent the max_datagram_frame_size transport parameter MUST terminate max_datagram_frame_size transport parameter MUST terminate the
the connection with error PROTOCOL_VIOLATION. An endpoint that connection with error PROTOCOL_VIOLATION. An endpoint that receives
receives a DATAGRAM frame that is strictly larger than the value it a DATAGRAM frame that is strictly larger than the value it sent in
sent in its max_datagram_frame_size transport parameter MUST its max_datagram_frame_size transport parameter MUST terminate the
terminate the connection with error PROTOCOL_VIOLATION. Endpoints connection with error PROTOCOL_VIOLATION. Endpoints that wish to use
that wish to use DATAGRAM frames need to ensure they send a DATAGRAM frames need to ensure they send a max_datagram_frame_size
max_datagram_frame_size value sufficient to allow their peer to use value sufficient to allow their peer to use them. It is RECOMMENDED
them. It is RECOMMENDED to send the value 65536 in the to send the value 65536 in the max_datagram_frame_size transport
max_datagram_frame_size transport parameter as that indicates to the parameter as that indicates to the peer that this endpoint will
peer that this endpoint will accept any DATAGRAM frame that fits accept any DATAGRAM frame that fits inside a QUIC packet.
inside a QUIC packet.
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.
When clients use 0-RTT, they MAY store the value of the server's When clients use 0-RTT, they MAY store the value of the server's
max_datagram_frame_size transport parameter. Doing so allows the max_datagram_frame_size transport parameter. Doing so allows the
client to send DATAGRAM frames in 0-RTT packets. When servers decide 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 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 transport parameter greater or equal to the value they sent to the
client in the connection where they sent them the NewSessionTicket client in the connection where they sent them the NewSessionTicket
message. If a client stores the value of the max_datagram_frame_size message. If a client stores the value of the max_datagram_frame_size
transport parameter with their 0-RTT state, they MUST validate that transport parameter with their 0-RTT state, they MUST validate that
the new value of the max_datagram_frame_size transport parameter sent the new value of the max_datagram_frame_size transport parameter sent
skipping to change at page 8, line 13 skipping to change at page 8, line 13
Specification: Unreliable application data Specification: Unreliable application data
8. Acknowledgments 8. Acknowledgments
Thanks to Ian Swett, who inspired this proposal. Thanks to Ian Swett, who inspired this proposal.
9. References 9. References
9.1. Normative References 9.1. Normative References
[I-D.ietf-quic-transport]
Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed
and Secure Transport", Work in Progress, Internet-Draft,
draft-ietf-quic-transport-27, 21 February 2020,
<http://www.ietf.org/internet-drafts/draft-ietf-quic-
transport-27.txt>.
[I-D.ietf-quic-recovery] [I-D.ietf-quic-recovery]
Iyengar, J. and I. Swett, "QUIC Loss Detection and Iyengar, J. and I. Swett, "QUIC Loss Detection and
Congestion Control", Work in Progress, Internet-Draft, Congestion Control", Work in Progress, Internet-Draft,
draft-ietf-quic-recovery-26, 21 February 2020, draft-ietf-quic-recovery-29, 9 June 2020,
<http://www.ietf.org/internet-drafts/draft-ietf-quic- <http://www.ietf.org/internet-drafts/draft-ietf-quic-
recovery-26.txt>. recovery-29.txt>.
[I-D.ietf-quic-transport]
Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed
and Secure Transport", Work in Progress, Internet-Draft,
draft-ietf-quic-transport-29, 9 June 2020,
<http://www.ietf.org/internet-drafts/draft-ietf-quic-
transport-29.txt>.
9.2. Informative References 9.2. Informative References
[I-D.schinazi-quic-h3-datagram]
Schinazi, D., "Using QUIC Datagrams with HTTP/3", Work in
Progress, Internet-Draft, draft-schinazi-quic-h3-datagram-
04, 16 April 2020, <http://www.ietf.org/internet-drafts/
draft-schinazi-quic-h3-datagram-04.txt>.
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
DOI 10.17487/RFC0768, August 1980, DOI 10.17487/RFC0768, August 1980,
<https://www.rfc-editor.org/info/rfc768>. <https://www.rfc-editor.org/info/rfc768>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[I-D.schinazi-quic-h3-datagram]
Schinazi, D., "Using QUIC Datagrams with HTTP/3", Work in
Progress, Internet-Draft, draft-schinazi-quic-h3-datagram-
02, 4 November 2019, <http://www.ietf.org/internet-drafts/
draft-schinazi-quic-h3-datagram-02.txt>.
Authors' Addresses Authors' Addresses
Tommy Pauly Tommy Pauly
Apple Inc. Apple Inc.
One Apple Park Way One Apple Park Way
Cupertino, California 95014, Cupertino, California 95014,
United States of America United States of America
Email: tpauly@apple.com Email: tpauly@apple.com
 End of changes. 12 change blocks. 
38 lines changed or deleted 42 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/