Network Working Group T. Pauly Internet-Draft E. Kinnear Intended status: Standards Track D. Schinazi Expires: March 14, 2019 Apple Inc. September 10, 2018 An Unreliable Datagram Extension to QUIC draft-pauly-quic-datagram-00 Abstract This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on March 14, 2019. Copyright Notice Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Pauly, et al. Expires March 14, 2019 [Page 1] Internet-Draft QUIC Datagrams September 2018 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Specification of Requirements . . . . . . . . . . . . . . 2 2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. Transport Parameter . . . . . . . . . . . . . . . . . . . . . 3 4. Datagram Frame Type . . . . . . . . . . . . . . . . . . . . . 3 5. Behavior and Usage . . . . . . . . . . . . . . . . . . . . . 4 5.1. Flow Control and Acknowledgements . . . . . . . . . . . . 4 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 5 9. Informative References . . . . . . . . . . . . . . . . . . . 5 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 6 1. Introduction The QUIC Transport Protocol [I-D.ietf-quic-transport] provides a secure, multiplexed connection for transmitting reliable streams of application data. Reliability within QUIC is performed on a per- stream basis, so some frame types are not eligible for retransmission. Some applications, particularly those that need to transmit real-time data, prefer to transmit data unreliably. These applications can build directly upon UDP [RFC0768] as a transport, and can add security with DTLS [RFC6347]. Extending QUIC to support transmitting unreliable application data would provide another option for secure datagrams, with the added benefit of sharing a cryptographic and authentication context used for reliable streams. This document defines two new DATAGRAM QUIC frame types, which carry application data without requiring retransmissions. 1.1. Specification of Requirements 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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. 2. Motivation Transmitting unreliable data over QUIC provides benefits over existing solutions: Pauly, et al. Expires March 14, 2019 [Page 2] Internet-Draft QUIC Datagrams September 2018 o 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. o QUIC uses a more nuanced loss recovery mechanism than the DTLS handshake, which has a basic packet loss retransmission timer. This may allow loss recovery to occur more quickly for QUIC data. o QUIC datagrams, while unreliable, can support acknowledgements, allowing applications to be aware of if a datagram was successfully received. These reductions in connection latency, and application insight into the delivery of datagrams, can be useful for optimizing audio/video streaming applications, gaming applications, and other real-time network applications. 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. 3. Transport Parameter Support for receiving the DATAGRAM frame types is advertised by means of a QUIC Transport Parameter (name=accepts_datagrams, value=12). An endpoint that includes this parameter supports the DATAGRAM frame types and is willing to receive such frames on this connection. Endpoints MUST NOT send DATAGRAM frames until they have sent and received the accepts_datagrams transport parameter. An endpoint that receives a DATAGRAM frame when it has not sent the accepts_datagrams transport parameter MUST terminate the connection with error PROTOCOL_VIOLATION. 4. Datagram Frame Type DATAGRAM frames are used to transmit application data in an unreliable manner. The DATAGRAM frame type takes the form 0b0001110X (or the set of values from 0x1c to 0x1d). The least significant byte 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 Pauly, et al. Expires March 14, 2019 [Page 3] Internet-Draft QUIC Datagrams September 2018 field is absent and the Stream Data field extends to the end of the packet. If this bit is set to 1, the Length field is present. A DATAGRAM frame is shown below. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | [Length (i)] ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Datagram Data (*) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 1: DATAGRAM Frame Format The fields of a DATAGRAM frame are as follows: Length: A variable-length integer specifying the length of the datagram in bytes. If the length is zero, the data extends to the end of the QUIC packet. Datagram Data: The bytes of the datagram to be delivered. 5. Behavior and Usage When an application sends an unreliable datagram over a QUIC connection, QUIC will generate a new DATAGRAM frame and send it in the first available packet. This frame SHOULD NOT be delayed, but MAY be coalesced with other STREAM or DATAGRAM frames. When a QUIC endpoint receives a valid DATAGRAM frame, it SHOULD deliver the data to the application immediately. DATAGRAM frames MUST be protected with either 0-RTT or 1-RTT keys. Note that the DATAGRAM frame does not support identifying separate flows of datagrams within a single QUIC connection, as the Stream ID does for STREAM frames. Demultiplexing datagram data is the responsibility of the application. 5.1. Flow Control and Acknowledgements Although the DATAGRAM frame is not retransmitted upon loss detection, it does contribute to the maximum data for the overall connection. Packets that contain only DATAGRAM frames do need to be acknowledged, but implementations SHOULD defer and batch acknowledgements since the timing of these acknowledgements is not used for loss recovery. Pauly, et al. Expires March 14, 2019 [Page 4] Internet-Draft QUIC Datagrams September 2018 The DATAGRAM frame does not provide any explicit flow control signaling apart from the connection-level flow control. DATAGRAM frames are flow controlled only when the maximum data for the connection is hit, at which point the BLOCKED frame is sent. In cases in which a DATAGRAM frame is blocked due to connection-level flow control or congestion control, an implementation MAY drop the frame without sending it. 6. Security Considerations 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. 7. IANA Considerations This document registers a new value in the QUIC Transport Parameters: Value: 12 (if this document is approved) Parameter Name: accepts_datagrams Specification: Indicates that the connection should enable support for unreliable DATAGRAM frames. An endpoint that advertises this transport parameter can receive datagrams frames from the other endpoint. This document also registers a new value in the QUIC Frame Type registry: Value: 0x1c - 0x1d (if this document is approved) Frame Name: DATAGRAM Specification: Unreliable application data 8. Acknowledgments Thanks to Ian Swett, who inspired this proposal. 9. Informative References [I-D.ietf-quic-transport] Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed and Secure Transport", draft-ietf-quic-transport-14 (work in progress), August 2018. Pauly, et al. Expires March 14, 2019 [Page 5] Internet-Draft QUIC Datagrams September 2018 [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, DOI 10.17487/RFC0768, August 1980, . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . Authors' Addresses Tommy Pauly Apple Inc. One Apple Park Way Cupertino, California 95014 United States of America Email: tpauly@apple.com Eric Kinnear Apple Inc. One Apple Park Way Cupertino, California 95014 United States of America Email: ekinnear@apple.com David Schinazi Apple Inc. One Apple Park Way Cupertino, California 95014 United States of America Email: dschinazi@apple.com Pauly, et al. Expires March 14, 2019 [Page 6]