Internet DRAFT - draft-taps-quic-mapping
draft-taps-quic-mapping
TAPS Working Group T. Pauly
Internet-Draft Apple
Intended status: Standards Track 19 March 2022
Expires: 20 September 2022
A Transport Services Mapping for QUIC
draft-taps-quic-mapping-00
Abstract
This document defines a Transport Services API mapping for QUIC
streams.
Discussion Venues
This note is to be removed before publishing as an RFC.
Discussion of this document takes place on the QUIC Working Group
mailing list (quic@ietf.org), which is archived at
https://mailarchive.ietf.org/arch/browse/quic/.
Source for this draft and an issue tracker can be found at
https://github.com/tfpauly/draft-taps-quic-mapping.
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 20 September 2022.
Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved.
Pauly Expires 20 September 2022 [Page 1]
Internet-Draft QUIC Mapping March 2022
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 Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2
3. QUIC Stream Mapping . . . . . . . . . . . . . . . . . . . . . 2
4. Security Considerations . . . . . . . . . . . . . . . . . . . 4
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4
6. Normative References . . . . . . . . . . . . . . . . . . . . 4
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Introduction
This document defines a Transport Services mapping, as defined in
[I-D.ietf-taps-impl] for the QUIC protocol [RFC9000]. This mapping,
presented in Section 3, allows QUIC to be used with the calls defined
in the Transport Services API [I-D.ietf-taps-interface].
This mapping treats a single QUIC stream as a Transport Services
Connection object, since this is an equivalent abstraction to the
byte-stream abstractions offered by TCP or TLS over TCP. QUIC
streams are multiplexed within QUIC connections; a QUIC connection is
represented in the Transport Services API as a Connection Group.
2. Conventions and Definitions
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.
3. QUIC Stream Mapping
Connectedness: Multiplexing Connected
Data Unit: Byte-stream
Connection Object: A Connection object in the Transport Services API
Pauly Expires 20 September 2022 [Page 2]
Internet-Draft QUIC Mapping March 2022
maps to a single QUIC stream between two hosts. This stream can
be bidirectional or unidirectional.
Initiate: Calling Initiate on a QUIC stream Connection causes the
implementation to prepare a new QUIC stream to the Remote
Endpoint. If there is already a QUIC connection to the Remote
Endpoint, Initiate simply prepares a new stream by allocating a
stream ID. If there is not already a QUIC connection established,
the implementation will establish a connection first.
InitiateWithSend: Early data sent in InitiateWithSend will be used
for 0-RTT QUIC connection establishment, if the QUIC connection to
the Remote Endpoint is not already established and the local
device has previously negotiated support for 0-RTT establishment
with the Remote Endpoint.
Ready: A QUIC stream Connection is ready once the underlying QUIC
connection is established, and once a stream ID can be allocated.
This may be delayed if stream creation is blocked due to reaching
the maximum streams limit.
InitiateError: QUIC can throw various errors during connection setup
(handshake failure, timeouts, etc). Errors for Initiate will
represent QUIC connection-level errors. Once a QUIC connection is
established, allocation of a QUIC stream ID may be delayed, but
will not generate an error.
ConnectionError: Once created, a QUIC stream Connection throws an
error whenever the stream is disconnected, such as when a
RESET_STREAM frame is receieved.
Listen: Calling Listen for QUIC binds to a local UDP port and
prepare to receive inbound QUIC connections and streams.
ConnectionReceived: QUIC listeners will deliver each inbound QUIC
stream as a Connection object. The relationship of inbound
streams to other streams in a single QUIC connection can be
detected by checking Connection.GroupedConnections().
Clone: Cloning a QUIC stream Connection creates a new stream on an
existing QUIC connection. This new stream will inherently share
all parameters with the original stream.
Send: Sending data will generate a STREAM frame using the stream ID
assigned to the Connection object.
Receive: Calling Receive will indicate that the caller is ready to
Pauly Expires 20 September 2022 [Page 3]
Internet-Draft QUIC Mapping March 2022
receive data from this stream, which is sent by the peer in STREAM
frames using the stream ID assigned to the Connection object.
Data is delivered in either the Recieved or RecievedPartial event.
Close: Calling Close on a QUIC stream Connection indicates that the
stream should gracefully closed by setting the FIN bit on the
stream.
Abort: Calling Close on a QUIC stream Connection indicates that the
stream should closed immediately, by sending a RESET_STREAM frame.
CloseGroup: Calling CloseGroup on any QUIC stream in a Connection
Group indicates that the shared QUIC connection should be closed
using a CONNECTION_CLOSE frame once all open streams have
completed.
AbortGroup: Calling AbortGroup on any QUIC stream in a Connection
Group indicates that the shared QUIC connection should be closed
immediately using a CONNECTION_CLOSE frame.
4. Security Considerations
The security properties of a QUIC connection are expressed in the
QUIC handshake, and thus are shared amongst all streams on a single
QUIC connection. When used with the Transport Services API, security
parameters are expressed in the Preconnection object. Connection
objects used for QUIC streams MUST only be grouped with other QUIC
streams when the security parameters defined in the Preconnection
objects are identical or equivalent.
5. IANA Considerations
This document has no IANA actions.
6. Normative References
[I-D.ietf-taps-impl]
Brunstrom, A., Pauly, T., Enghardt, T., Tiesel, P. S., and
M. Welzl, "Implementing Interfaces to Transport Services",
Work in Progress, Internet-Draft, draft-ietf-taps-impl-12,
7 March 2022, <https://datatracker.ietf.org/doc/html/
draft-ietf-taps-impl-12>.
[I-D.ietf-taps-interface]
Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G.,
Kuehlewind, M., Perkins, C., Tiesel, P. S., and T. Pauly,
"An Abstract Application Layer Interface to Transport
Services", Work in Progress, Internet-Draft, draft-ietf-
Pauly Expires 20 September 2022 [Page 4]
Internet-Draft QUIC Mapping March 2022
taps-interface-15, 7 March 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-taps-
interface-15>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/rfc/rfc9000>.
Author's Address
Tommy Pauly
Apple
Email: tpauly@apple.com
Pauly Expires 20 September 2022 [Page 5]