idnits 2.17.1 draft-taps-quic-mapping-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (19 March 2022) is 768 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-18) exists of draft-ietf-taps-impl-12 ** Downref: Normative reference to an Informational draft: draft-ietf-taps-impl (ref. 'I-D.ietf-taps-impl') == Outdated reference: A later version (-26) exists of draft-ietf-taps-interface-15 Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TAPS Working Group T. Pauly 3 Internet-Draft Apple 4 Intended status: Standards Track 19 March 2022 5 Expires: 20 September 2022 7 A Transport Services Mapping for QUIC 8 draft-taps-quic-mapping-00 10 Abstract 12 This document defines a Transport Services API mapping for QUIC 13 streams. 15 Discussion Venues 17 This note is to be removed before publishing as an RFC. 19 Discussion of this document takes place on the QUIC Working Group 20 mailing list (quic@ietf.org), which is archived at 21 https://mailarchive.ietf.org/arch/browse/quic/. 23 Source for this draft and an issue tracker can be found at 24 https://github.com/tfpauly/draft-taps-quic-mapping. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on 20 September 2022. 43 Copyright Notice 45 Copyright (c) 2022 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 50 license-info) in effect on the date of publication of this document. 51 Please review these documents carefully, as they describe your rights 52 and restrictions with respect to this document. Code Components 53 extracted from this document must include Revised BSD License text as 54 described in Section 4.e of the Trust Legal Provisions and are 55 provided without warranty as described in the Revised BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 60 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2 61 3. QUIC Stream Mapping . . . . . . . . . . . . . . . . . . . . . 2 62 4. Security Considerations . . . . . . . . . . . . . . . . . . . 4 63 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 64 6. Normative References . . . . . . . . . . . . . . . . . . . . 4 65 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 67 1. Introduction 69 This document defines a Transport Services mapping, as defined in 70 [I-D.ietf-taps-impl] for the QUIC protocol [RFC9000]. This mapping, 71 presented in Section 3, allows QUIC to be used with the calls defined 72 in the Transport Services API [I-D.ietf-taps-interface]. 74 This mapping treats a single QUIC stream as a Transport Services 75 Connection object, since this is an equivalent abstraction to the 76 byte-stream abstractions offered by TCP or TLS over TCP. QUIC 77 streams are multiplexed within QUIC connections; a QUIC connection is 78 represented in the Transport Services API as a Connection Group. 80 2. Conventions and Definitions 82 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 83 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 84 "OPTIONAL" in this document are to be interpreted as described in 85 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 86 capitals, as shown here. 88 3. QUIC Stream Mapping 90 Connectedness: Multiplexing Connected 92 Data Unit: Byte-stream 94 Connection Object: A Connection object in the Transport Services API 95 maps to a single QUIC stream between two hosts. This stream can 96 be bidirectional or unidirectional. 98 Initiate: Calling Initiate on a QUIC stream Connection causes the 99 implementation to prepare a new QUIC stream to the Remote 100 Endpoint. If there is already a QUIC connection to the Remote 101 Endpoint, Initiate simply prepares a new stream by allocating a 102 stream ID. If there is not already a QUIC connection established, 103 the implementation will establish a connection first. 105 InitiateWithSend: Early data sent in InitiateWithSend will be used 106 for 0-RTT QUIC connection establishment, if the QUIC connection to 107 the Remote Endpoint is not already established and the local 108 device has previously negotiated support for 0-RTT establishment 109 with the Remote Endpoint. 111 Ready: A QUIC stream Connection is ready once the underlying QUIC 112 connection is established, and once a stream ID can be allocated. 113 This may be delayed if stream creation is blocked due to reaching 114 the maximum streams limit. 116 InitiateError: QUIC can throw various errors during connection setup 117 (handshake failure, timeouts, etc). Errors for Initiate will 118 represent QUIC connection-level errors. Once a QUIC connection is 119 established, allocation of a QUIC stream ID may be delayed, but 120 will not generate an error. 122 ConnectionError: Once created, a QUIC stream Connection throws an 123 error whenever the stream is disconnected, such as when a 124 RESET_STREAM frame is receieved. 126 Listen: Calling Listen for QUIC binds to a local UDP port and 127 prepare to receive inbound QUIC connections and streams. 129 ConnectionReceived: QUIC listeners will deliver each inbound QUIC 130 stream as a Connection object. The relationship of inbound 131 streams to other streams in a single QUIC connection can be 132 detected by checking Connection.GroupedConnections(). 134 Clone: Cloning a QUIC stream Connection creates a new stream on an 135 existing QUIC connection. This new stream will inherently share 136 all parameters with the original stream. 138 Send: Sending data will generate a STREAM frame using the stream ID 139 assigned to the Connection object. 141 Receive: Calling Receive will indicate that the caller is ready to 142 receive data from this stream, which is sent by the peer in STREAM 143 frames using the stream ID assigned to the Connection object. 144 Data is delivered in either the Recieved or RecievedPartial event. 146 Close: Calling Close on a QUIC stream Connection indicates that the 147 stream should gracefully closed by setting the FIN bit on the 148 stream. 150 Abort: Calling Close on a QUIC stream Connection indicates that the 151 stream should closed immediately, by sending a RESET_STREAM frame. 153 CloseGroup: Calling CloseGroup on any QUIC stream in a Connection 154 Group indicates that the shared QUIC connection should be closed 155 using a CONNECTION_CLOSE frame once all open streams have 156 completed. 158 AbortGroup: Calling AbortGroup on any QUIC stream in a Connection 159 Group indicates that the shared QUIC connection should be closed 160 immediately using a CONNECTION_CLOSE frame. 162 4. Security Considerations 164 The security properties of a QUIC connection are expressed in the 165 QUIC handshake, and thus are shared amongst all streams on a single 166 QUIC connection. When used with the Transport Services API, security 167 parameters are expressed in the Preconnection object. Connection 168 objects used for QUIC streams MUST only be grouped with other QUIC 169 streams when the security parameters defined in the Preconnection 170 objects are identical or equivalent. 172 5. IANA Considerations 174 This document has no IANA actions. 176 6. Normative References 178 [I-D.ietf-taps-impl] 179 Brunstrom, A., Pauly, T., Enghardt, T., Tiesel, P. S., and 180 M. Welzl, "Implementing Interfaces to Transport Services", 181 Work in Progress, Internet-Draft, draft-ietf-taps-impl-12, 182 7 March 2022, . 185 [I-D.ietf-taps-interface] 186 Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G., 187 Kuehlewind, M., Perkins, C., Tiesel, P. S., and T. Pauly, 188 "An Abstract Application Layer Interface to Transport 189 Services", Work in Progress, Internet-Draft, draft-ietf- 190 taps-interface-15, 7 March 2022, 191 . 194 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 195 Requirement Levels", BCP 14, RFC 2119, 196 DOI 10.17487/RFC2119, March 1997, 197 . 199 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 200 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 201 May 2017, . 203 [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based 204 Multiplexed and Secure Transport", RFC 9000, 205 DOI 10.17487/RFC9000, May 2021, 206 . 208 Author's Address 210 Tommy Pauly 211 Apple 212 Email: tpauly@apple.com