draft-ietf-taps-arch-00.txt   draft-ietf-taps-arch-01.txt 
TAPS Working Group T. Pauly, Ed. TAPS Working Group T. Pauly, Ed.
Internet-Draft Apple Inc. Internet-Draft Apple Inc.
Intended status: Informational B. Trammell, Ed. Intended status: Informational B. Trammell, Ed.
Expires: November 1, 2018 ETH Zurich Expires: January 2, 2019 ETH Zurich
A. Brunstrom A. Brunstrom
Karlstad University Karlstad University
G. Fairhurst G. Fairhurst
University of Aberdeen University of Aberdeen
C. Perkins C. Perkins
University of Glasgow University of Glasgow
P. Tiesel P. Tiesel
TU Berlin TU Berlin
C. Wood C. Wood
Apple Inc. Apple Inc.
April 30, 2018 July 01, 2018
An Architecture for Transport Services An Architecture for Transport Services
draft-ietf-taps-arch-00 draft-ietf-taps-arch-01
Abstract Abstract
This document provides an overview of the architecture of Transport This document provides an overview of the architecture of Transport
Services, a system for exposing the features of transport protocols Services, a system for exposing the features of transport protocols
to applications. This architecture serves as a basis for Application to applications. This architecture serves as a basis for Application
Programming Interfaces (APIs) and implementations that provide Programming Interfaces (APIs) and implementations that provide
flexible transport networking services. It defines the common set of flexible transport networking services. It defines the common set of
terminology and concepts to be used in more detailed discussion of terminology and concepts to be used in more detailed discussion of
Transport Services. Transport Services.
skipping to change at page 1, line 47 skipping to change at page 1, line 47
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 November 1, 2018. This Internet-Draft will expire on January 2, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 37 skipping to change at page 2, line 37
3.3. Scope for API and Implementation Definitions . . . . . . 5 3.3. Scope for API and Implementation Definitions . . . . . . 5
4. Transport Services Architecture and Concepts . . . . . . . . 6 4. Transport Services Architecture and Concepts . . . . . . . . 6
4.1. Transport Services API Concepts . . . . . . . . . . . . . 7 4.1. Transport Services API Concepts . . . . . . . . . . . . . 7
4.1.1. Basic Objects . . . . . . . . . . . . . . . . . . . . 9 4.1.1. Basic Objects . . . . . . . . . . . . . . . . . . . . 9
4.1.2. Pre-Establishment . . . . . . . . . . . . . . . . . . 10 4.1.2. Pre-Establishment . . . . . . . . . . . . . . . . . . 10
4.1.3. Establishment Actions . . . . . . . . . . . . . . . . 11 4.1.3. Establishment Actions . . . . . . . . . . . . . . . . 11
4.1.4. Data Transfer Objects and Actions . . . . . . . . . . 11 4.1.4. Data Transfer Objects and Actions . . . . . . . . . . 11
4.1.5. Event Handling . . . . . . . . . . . . . . . . . . . 12 4.1.5. Event Handling . . . . . . . . . . . . . . . . . . . 12
4.1.6. Termination Actions . . . . . . . . . . . . . . . . . 13 4.1.6. Termination Actions . . . . . . . . . . . . . . . . . 13
4.2. Transport System Implementation Concepts . . . . . . . . 13 4.2. Transport System Implementation Concepts . . . . . . . . 13
4.2.1. Gathering . . . . . . . . . . . . . . . . . . . . . . 14 4.2.1. Candidate Gathering . . . . . . . . . . . . . . . . . 14
4.2.2. Racing . . . . . . . . . . . . . . . . . . . . . . . 14 4.2.2. Candidate Racing . . . . . . . . . . . . . . . . . . 14
4.2.3. Message Framing, Parsing, and Serialization . . . . . 14 4.3. Protocol Stack Equivalence . . . . . . . . . . . . . . . 15
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 4.3.1. Transport Security Equivalence . . . . . . . . . . . 16
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 4.4. Message Framing, Parsing, and Serialization . . . . . . . 16
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
8. Informative References . . . . . . . . . . . . . . . . . . . 16 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18
8. Informative References . . . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
Many APIs to perform transport networking have been deployed, perhaps Many APIs to perform transport networking have been deployed, perhaps
the most widely known and imitated being the BSD socket() interface. the most widely known and imitated being the BSD socket() [POSIX]
The names and functions between these APIs are not consistent, and interface. The names and functions between these APIs are not
vary depending on the protocol being used. For example, sending and consistent, and vary depending on the protocol being used. For
receiving on a stream of data is conceptually the same between example, sending and receiving on a stream of data is conceptually
operating on an unencrypted Transmission Control Protocol (TCP) the same between operating on an unencrypted Transmission Control
stream and operating on an encrypted Transport Layer Security (TLS) Protocol (TCP) stream and operating on an encrypted Transport Layer
[I-D.ietf-tls-tls13] stream over TCP, but applications cannot use the Security (TLS) [I-D.ietf-tls-tls13] stream over TCP, but applications
same socket send() and recv() calls on top of both kinds of cannot use the same socket send() and recv() calls on top of both
connections. Similarly, terminology for the implementation of kinds of connections. Similarly, terminology for the implementation
protocols offering transport services vary based on the context of of protocols offering transport services vary based on the context of
the protocols themselves. This variety can lead to confusion when the protocols themselves. This variety can lead to confusion when
trying to understand the similarities and differences between trying to understand the similarities and differences between
protocols, and how applications can use them effectively. protocols, and how applications can use them effectively.
The goal of the Transport Services architecture is to provide a The goal of the Transport Services architecture is to provide a
common, flexible, and reusable interface for transport protocols. As common, flexible, and reusable interface for transport protocols. As
applications adopt this interface, they will benefit from a wide set applications adopt this interface, they will benefit from a wide set
of transport features that can evolve over time, and ensure that the of transport features that can evolve over time, and ensure that the
system providing the interface can optimize its behavior based on the system providing the interface can optimize its behavior based on the
application requirements and network conditions. application requirements and network conditions.
This document is developed in parallel with the specification of the This document is developed in parallel with the specification of the
Transport Services API [I-D.trammell-taps-interface] and Transport Services API [I-D.ietf-taps-interface] and Implementation
Implementation [draft-brunstrom-taps-impl] documents. [I-D.ietf-taps-impl] documents.
2. Background 2. Background
The Transport Services architecture is based on the survey of The Transport Services architecture is based on the survey of
Services Provided by IETF Transport Protocols and Congestion Control Services Provided by IETF Transport Protocols and Congestion Control
Mechanisms [RFC8095], and the distilled minimal set of the features Mechanisms [RFC8095], and the distilled minimal set of the features
offered by transport protocols [I-D.ietf-taps-minset]. This work has offered by transport protocols [I-D.ietf-taps-minset]. This work has
identified common features and patterns across all transport identified common features and patterns across all transport
protocols developed thus far in the IETF. protocols developed thus far in the IETF.
Since transport security is an increasingly relevant aspect of using Since transport security is an increasingly relevant aspect of using
transport protocols on the Internet, this architecture also considers transport protocols on the Internet, this architecture also considers
the impact of transport security protocols on the feature set exposed the impact of transport security protocols on the feature set exposed
by transport services [I-D.pauly-taps-transport-security]. by transport services [I-D.ietf-taps-transport-security].
One of the key insights to come from identifying the minimal set of One of the key insights to come from identifying the minimal set of
features provided by transport protocols [I-D.ietf-taps-minset] was features provided by transport protocols [I-D.ietf-taps-minset] was
that features either require application interaction and guidance that features either require application interaction and guidance
(referred to as Functional Features), or else can be handled (referred to as Functional Features), or else can be handled
automatically by a system implementing Transport Services (referred automatically by a system implementing Transport Services (referred
to as Automatable Features). Among the Functional Features, some to as Automatable Features). Among the Functional Features, some
were common across all or nearly all transport protocols, while were common across all or nearly all transport protocols, while
others could be seen as features that, if specified, would only be others could be seen as features that, if specified, would only be
useful with a subset of protocols, or perhaps even a single transport useful with a subset of protocols, or perhaps even a single transport
skipping to change at page 5, line 28 skipping to change at page 5, line 31
system's options. Since such options are not part of the core/common system's options. Since such options are not part of the core/common
features, it should be simple for an application to modify its set of features, it should be simple for an application to modify its set of
constraints and change the set of allowable protocol features without constraints and change the set of allowable protocol features without
changing the core implementation. changing the core implementation.
3.3. Scope for API and Implementation Definitions 3.3. Scope for API and Implementation Definitions
The Transport Services API is envisioned as the abstract model for a The Transport Services API is envisioned as the abstract model for a
family of APIs that share a common way to expose transport features family of APIs that share a common way to expose transport features
and encourage flexibility. The abstract API definition and encourage flexibility. The abstract API definition
[I-D.trammell-taps-interface] describes this interface and is aimed [I-D.ietf-taps-interface] describes this interface and is aimed at
at application developers. application developers.
Implementations that provide the Transport Services API Implementations that provide the Transport Services API
[draft-brunstrom-taps-impl] will vary due to system-specific support [I-D.ietf-taps-impl] will vary due to system-specific support and the
and the needs of the deployment scenario. It is expected that all needs of the deployment scenario. It is expected that all
implementations of Transport Services will offer the entire mandatory implementations of Transport Services will offer the entire mandatory
API, but that some features will not be functional in certain API, but that some features will not be functional in certain
implementations. All implementations must offer sufficient APIs to implementations. All implementations must offer sufficient APIs to
use the distilled minimal set of features offered by transport use the distilled minimal set of features offered by transport
protocols [I-D.ietf-taps-minset], including API support for TCP and protocols [I-D.ietf-taps-minset], including API support for TCP and
UDP transport, but it is possible that some very constrained devices UDP transport, but it is possible that some very constrained devices
might not have, for example, a full TCP implementation. might not have, for example, a full TCP implementation.
In order to preserve flexibility and compatibility with future In order to preserve flexibility and compatibility with future
protocols, top-level features in the Transport Services API should protocols, top-level features in the Transport Services API should
skipping to change at page 7, line 5 skipping to change at page 7, line 5
categories: categories:
1. API concepts, which are meant to be exposed to applications; and 1. API concepts, which are meant to be exposed to applications; and
2. System-implementation concepts, which are meant to be internally 2. System-implementation concepts, which are meant to be internally
used when building systems that implement Transport Services. used when building systems that implement Transport Services.
The following diagram summarizes the top-level concepts in the The following diagram summarizes the top-level concepts in the
architecture and how they relate to one another. architecture and how they relate to one another.
+------------------------------------------------------+ +-----------------------------------------------------+
| Application | | Application |
+-+----------------+------^-------+--------^-----------+ +-+----------------+------^-------+--------^----------+
| | | | | | | | | |
pre- | data | events pre- | data | events
establishment | transfer | | establishment | transfer | |
| establishment | termination | | establishment | termination |
| | | | | | | | | |
| +--v------v-------v+ | | +--v------v-------v+ |
+-v-------------+ Basic Objects +-------+----------+ +-v-------------+ Basic Objects +-------+----------+
| Transport +--------+---------+ | | Transport +--------+---------+ |
| Services | | | Services | |
| API | | | API | |
skipping to change at page 8, line 5 skipping to change at page 8, line 5
communication and send and receive data. These may be exposed as communication and send and receive data. These may be exposed as
handles or referenced objects, depending on the language. handles or referenced objects, depending on the language.
Beyond the basic objects, there are several high-level groups of Beyond the basic objects, there are several high-level groups of
actions that any Transport Services API must provide: actions that any Transport Services API must provide:
o Pre-Establishment (Section 4.1.2) encompasses the properties that o Pre-Establishment (Section 4.1.2) encompasses the properties that
an application can pass to describe its intent, requirements, an application can pass to describe its intent, requirements,
prohibitions, and preferences for its networking operations. For prohibitions, and preferences for its networking operations. For
any system that provides generic Transport Services, these any system that provides generic Transport Services, these
properties should primarily offer knobs that are applicable to properties should primarily be defined to apply to multiple
multiple transports. Properties may have a large impact on the transports. Properties may have a large impact on the rest of the
rest of the aspects of the interface: they can modify how aspects of the interface: they can modify how establishment
establishment occurs, they can influence the expectations around occurs, they can influence the expectations around data transfer,
data transfer, and they determine the set of events that will be and they determine the set of events that will be supported.
supported.
o Establishment (Section 4.1.3) focuses on the actions that an o Establishment (Section 4.1.3) focuses on the actions that an
application takes on the basic objects to prepare for data application takes on the basic objects to prepare for data
transfer. transfer.
o Data Transfer (Section 4.1.4) consists of how an application o Data Transfer (Section 4.1.4) consists of how an application
represents data to be sent and received, the functions required to represents data to be sent and received, the functions required to
send and receive that data, and how the application is notified of send and receive that data, and how the application is notified of
the status of its data transfer. the status of its data transfer.
o Event Handling (Section 4.1.5) defines the set of properties about o Event Handling (Section 4.1.5) defines the set of properties about
which an application can receive notifications during the lifetime which an application can receive notifications during the lifetime
of transport objects. Events can also provide opportunities for of transport objects. Events can also provide opportunities for
the application to interact with the underlying transport by the application to interact with the underlying transport by
querying state or updating maintenance options. querying state or updating maintenance options.
o Termination (Section 4.1.6) focuses on the methods by which data o Termination (Section 4.1.6) focuses on the methods by which data
transmission is ceased, and state is torn down in the transport. transmission is stopped, and state is torn down in the transport.
The diagram below provides a high-level view of the actions taken The diagram below provides a high-level view of the actions taken
during the lifetime of a connection. during the lifetime of a connection.
Pre-Establishment : Established : Termination Pre-Establishment : Established : Termination
----------------- : ----------- : ----------- ----------------- : ----------- : -----------
: Close() : : Close() :
+---------------+ Initiate() +------------+ Abort() : +---------------+ Initiate() +------------+ Abort() :
+-->| Preconnection |----------->| Connection |---------------> Closed +-->| Preconnection |----------->| Connection |---------------> Closed
| +---------------+ : +------------+ Connection: | +---------------+ : +------------+ Connection:
skipping to change at page 10, line 23 skipping to change at page 10, line 23
o Listener: A Listener object accepts incoming transport protocol o Listener: A Listener object accepts incoming transport protocol
connections from Remote Endpoints and generates corresponding connections from Remote Endpoints and generates corresponding
Connection objects. It is created from a Preconnection object Connection objects. It is created from a Preconnection object
that specifies the type of incoming connections it will accept. that specifies the type of incoming connections it will accept.
4.1.2. Pre-Establishment 4.1.2. Pre-Establishment
o Endpoint: An Endpoint represents one side of a transport o Endpoint: An Endpoint represents one side of a transport
connection. Endpoints can be Local Endpoints or Remote Endpoints, connection. Endpoints can be Local Endpoints or Remote Endpoints,
and respectively represent an identity that the application uses and respectively represent an identity that the application uses
for the source or destination of a connection. Endpoint can vary for the source or destination of a connection. An Endpoint may be
in levels of specificity, and can be resolved to more concrete specified at various levels, and an Endpoint with wider scope
identities. (such as a hostname) can be resolved to more concrete identities
(such as IP addresses).
o Remote Endpoint: The Remote Endpoint represents the application's o Remote Endpoint: The Remote Endpoint represents the application's
name for a peer that can participate in a transport connection. name for a peer that can participate in a transport connection.
For example, the combination of a DNS name for the peer and a For example, the combination of a DNS name for the peer and a
service name/port. service name/port.
o Local Endpoint: The Local Endpoint represents the application's o Local Endpoint: The Local Endpoint represents the application's
name for itself that it wants to use for transport connections. name for itself that it uses for transport connections. For
For example, a local IP address and port. example, a local IP address and port.
o Path Selection Properties: The Path Selection Properties consist o Path Selection Properties: The Path Selection Properties consist
of the options that an application may set to influence the of the options that an application may set to influence the
selection of paths between itself and the Remote Endpoint. These selection of paths between the Local Endpoint and the Remote
options can come in the form of requirements, prohibitions, or Endpoint. These options can take the form of requirements,
preferences. Examples of options which may influence path prohibitions, or preferences. Examples of options that may
selection include the interface type (such as a Wi-Fi Ethernet influence path selection include the interface type (such as a Wi-
connection, or a Cellular LTE connection), characteristics of the Fi Ethernet connection, or a Cellular LTE connection),
path that are locally known like Maximum Transmission Unit (MTU) characteristics of the path that are locally known like Maximum
or discovered like Path MTU (PMTU), or predicted based on cached Transmission Unit (MTU) or discovered like Path MTU (PMTU), or
information like expected throughput or latency. predicted based on cached information like expected throughput or
latency.
o Protocol Selection Properties: The Protocol Selection Properties o Protocol Selection Properties: The Protocol Selection Properties
consist of the options that an application may set to influence consist of the options that an application may set to influence
the selection of transport protocol, or to configure the behavior the selection of transport protocol, or to configure the behavior
of generic transport protocol features. These options come in the of generic transport protocol features. These options can take
form of requirements, prohibitions, and preferences. Examples the form of requirements, prohibitions, and preferences. Examples
include reliability, service class, multipath support, and fast include reliability, service class, multipath support, and fast
open support. open support.
o Specific Protocol Properties: The Specific Protocol Properties o Specific Protocol Properties: The Specific Protocol Properties
refer to the subset of Protocol Properties options that apply to a refer to the subset of Protocol Properties options that apply to a
single protocol (transport protocol, IP, or security protocol). single protocol (transport protocol, IP, or security protocol).
The presence of such Properties does not necessarily require that The presence of such Properties does not necessarily require that
a specific protocol must be used when a Connection is established, a specific protocol must be used when a Connection is established,
but that if this protocol is employed, a particular set of options but that if this protocol is employed, a particular set of options
should be used. should then be used..
4.1.3. Establishment Actions 4.1.3. Establishment Actions
o Initiate is the primary action that an application can take to o Initiate: The primary action that an application can take to
create a Connection to a remote endpoint, and prepare any required create a Connection to a Remote Endpoint, and prepare any required
local or remote state to be able to send and/or receive Messages. local or remote state to be able to send and/or receive Messages.
For some protocols, this may initiate a client-to-server style For some protocols, this may initiate a client-to-server style
handshake; for other protocols, this may just establish local handshake; for other protocols, this may just establish local
state. The process of identifying options for connecting, such as state. The process of identifying options for connecting, such as
resolution of the Remote Endpoint, occurs in response the Initiate resolution of the Remote Endpoint, occurs in response the Initiate
call. call.
o Listen is the action of marking a Listener as willing to accept o Listen: The action of marking a Listener as willing to accept
incoming Connections. The Listener will then create Connection incoming Connections. The Listener will then create Connection
objects as incoming connections are accepted (Section 4.1.5). objects as incoming connections are accepted (Section 4.1.5).
o Rendezvous is the action of establishing a peer-to-peer connection o Rendezvous: The action of establishing a peer-to-peer connection
with a remote endpoint. It simultaneously attempts to initiate a with a Remote Endpoint. It simultaneously attempts to initiate a
connection to a remote endpoint whilst listening for an incoming connection to a Remote Endpoint whilst listening for an incoming
connection from that endpoint. This corresponds, for example, to connection from that endpoint. This corresponds, for example, to
a TCP simultaneous open. The process of identifying options for a TCP simultaneous open [RFC0793]. The process of identifying
the connection, such as resolution of the Remote Endpoint, occurs options for the connection, such as resolution of the Remote
during the Rendezvous call. If successful, the rendezvous call Endpoint, occurs during the Rendezvous call. If successful, the
returns a Connection object to represent the established peer-to- rendezvous call returns a Connection object to represent the
peer connection. established peer-to-peer connection.
4.1.4. Data Transfer Objects and Actions 4.1.4. Data Transfer Objects and Actions
o Message: A Message object is a unit of data that can be o Message: A Message object is a unit of data that can be
represented as bytes that can be transferred between two endpoints represented as bytes that can be transferred between two endpoints
over a transport connection. The bytes within a Message are over a transport connection. The bytes within a Message are
assumed to be ordered within the Message. If an application does assumed to be ordered within the Message. If an application does
not care about the order in which a peer receives two distinct not care about the order in which a peer receives two distinct
spans of bytes, those spans of bytes are considered independent spans of bytes, those spans of bytes are considered independent
Messages. Messages may or may not be usable if incomplete or Messages. If a received Message is incomplete or corrupted, it
corrupted. Boundaries of a Message may or may not be understood may or may not be usable by certain applications. Boundaries of a
or transmitted by transport protocols. Specifically, what one Message may or may not be understood or transmitted by transport
application considers to be two Messages sent on a stream-based protocols. Specifically, what one application considers to be two
transport may be treated as a single Message by the application on Messages sent on a stream-based transport may be treated as a
the other side. single Message by the application on the other side.
o Send is the action to transmit a Message or partial Message over a o Send: The action to transmit a Message or partial Message over a
Connection to a Remote Endpoint. The interface to Send may Connection to a Remote Endpoint. The interface to Send may
include options specific to how the Message's content is to be include options specific to how the Message's content is to be
sent. Status of the Send operation may be delivered back to the sent. Status of the Send operation may be delivered back to the
application in an event (Section 4.1.5). application in an event (Section 4.1.5).
o Receive is an action that indicates that the application is ready o Receive: An action that indicates that the application is ready to
to asynchronously accept a Message over a Connection from a Remote asynchronously accept a Message over a Connection from a Remote
Endpoint, while the Message content itself will be delivered in an Endpoint, while the Message content itself will be delivered in an
event (Section 4.1.5). The interface to Receive may include event (Section 4.1.5). The interface to Receive may include
options specific to the Message that is to be delivered to the options specific to the Message that is to be delivered to the
application. application.
4.1.5. Event Handling 4.1.5. Event Handling
This list of events that can be delivered to an application is not This list of events that can be delivered to an application is not
exhaustive, but gives the top-level categories of events. The API exhaustive, but gives the top-level categories of events. The API
may expand this list. may expand this list.
skipping to change at page 13, line 7 skipping to change at page 13, line 7
o Message Sent: Notifies the application of the status of its Send o Message Sent: Notifies the application of the status of its Send
action. This may be an error if the Message cannot be sent, or an action. This may be an error if the Message cannot be sent, or an
indication that Message has been processed by the protocol stack. indication that Message has been processed by the protocol stack.
o Path Properties Changed: Notifies the application that some o Path Properties Changed: Notifies the application that some
property of the Connection has changed that may influence how and property of the Connection has changed that may influence how and
where data is sent and/or received. where data is sent and/or received.
4.1.6. Termination Actions 4.1.6. Termination Actions
o Close is the action an application may take on a Connection to o Close: The action an application may take on a Connection to
indicate that it no longer intends to send data, is no longer indicate that it no longer intends to send data, is no longer
willing to receive data, and that the protocol should signal this willing to receive data, and that the protocol should signal this
state to the remote endpoint if applicable. state to the remote endpoint if applicable.
o Abort is an action the application may take on a Connection to o Abort: The action the application may take on a Connection to
indicate a Close, but with the additional indication that the indicate a Close, but with the additional indication that the
transport system should not attempt to deliver any outstanding transport system should not attempt to deliver any outstanding
data. data.
4.2. Transport System Implementation Concepts 4.2. Transport System Implementation Concepts
The Transport System Implementation Concepts define the set of The Transport System Implementation Concepts define the set of
objects used internally to a system or library to provide the objects used internally to a system or library to provide the
functionality of transport networking, as required by the abstract functionality required to provide a transport service across a
interface. network, as required by the abstract interface.
o Connection Group: A Connections Group is a set of Connections that o Connection Group: A set of Connections that share properties. For
share properties. For multiplexing transport protocols, the multiplexing transport protocols, the Connection Group defines the
Connection Group defines the set of Connections that can be set of Connections that can be multiplexed together.
multiplexed together.
o Path: A Path represents an available set of properties of a o Path: Represents an available set of properties that a Local
network route on which packets may be sent or received. Endpoint may use to send or receive packets with a Remote
Endpoint.
o Protocol Instance: A Protocol Instance is a single instance of one o Protocol Instance: A single instance of one protocol, including
protocol, including any state it has necessary to establish any state it has necessary to establish connectivity or send and
connectivity or send and receive Messages. receive Messages.
o Protocol Stack: A Protocol Stack is a set of Protocol Instances o Protocol Stack: A set of Protocol Instances (including relevant
(including relevant application, security, transport, or Internet application, security, transport, or Internet protocols) that are
protocols) that are used together to establish connectivity or used together to establish connectivity or send and receive
send and receive Messages. A single stack may be simple (a single Messages. A single stack may be simple (a single transport
transport protocol instance over IP), or complex (multiple protocol instance over IP), or complex (multiple application
application protocol streams going through a single security and protocol streams going through a single security and transport
transport protocol, over IP; or, a multi-path transport protocol protocol, over IP; or, a multi-path transport protocol over
over multiple transport sub-flows). multiple transport sub-flows).
o System Policy: System Policy represents the input from an o Candidate Path: One path that is available to an application and
operating system or other global preferences that can constrain or conforms to the Path Selection Properties and System Policy.
influence how an implementation will gather candidate paths and Candidate Paths are identified during the gathering phase
protocols (Section 4.2.1) and race the candidates during (Section 4.2.1) and may be used during the racing phase
establishment (Section 4.2.2). Specific aspects of the System (Section 4.2.2).
Policy may apply to all Connections, or only certain ones
depending on the runtime context and properties of the Connection.
o Cached State: Cached State is the state and history that the o Candidate Protocol Stack: One protocol stack that may be used by
implementation keeps for each set of associated endpoints that an application for a connection, of which there may be several.
have been used previously. This can include DNS results, TLS
session state, previous success and quality of transport protocols
over certain paths.
4.2.1. Gathering Candidate Protocol Stacks are identified during the gathering
phase (Section 4.2.1) and may be started during the racing phase
(Section 4.2.2).
o System Policy: Represents the input from an operating system or
other global preferences that can constrain or influence how an
implementation will gather candidate paths and protocol stacks
(Section 4.2.1) and race the candidates during establishment
(Section 4.2.2). Specific aspects of the System Policy may apply
to all Connections, or only certain ones depending on the runtime
context and properties of the Connection.
o Cached State: The state and history that the implementation keeps
for each set of associated endpoints that have been used
previously. This can include DNS results, TLS session state,
previous success and quality of transport protocols over certain
paths.
4.2.1. Candidate Gathering
o Path Selection: Path Selection represents the act of choosing one o Path Selection: Path Selection represents the act of choosing one
or more paths that are available to use based on the Path or more paths that are available to use based on the Path
Selection Properties provided by the application, and a Transport Selection Properties provided by the application, and a Transport
Services system's policies and heuristics. Services system's policies and heuristics.
o Protocol Selection: Protocol Selection represents the act of o Protocol Selection: Protocol Selection represents the act of
choosing one or more sets of protocol options that are available choosing one or more sets of protocol options that are available
to use based on the Protocol Properties provided by the to use based on the Protocol Properties provided by the
application, and a Transport Services system's policies and application, and a Transport Services system's policies and
heuristics. heuristics.
4.2.2. Racing 4.2.2. Candidate Racing
o Protocol Option Racing: Protocol Racing is the act of attempting o Protocol Option Racing: Protocol Racing is the act of attempting
to establish, or scheduling attempts to establish, multiple to establish, or scheduling attempts to establish, multiple
Protocol Stacks that differ based on the composition of protocols Protocol Stacks that differ based on the composition of protocols
or the options used for protocols. or the options used for protocols.
o Path Racing: Path Racing is the act of attempting to establish, or o Path Racing: Path Racing is the act of attempting to establish, or
scheduling attempts to establish, multiple Protocol Stacks that scheduling attempts to establish, multiple Protocol Stacks that
differ based on a selection from the available Paths. differ based on a selection from the available Paths.
o Endpoint Racing: Endpoint Racing is the act of attempting to o Endpoint Racing: Endpoint Racing is the act of attempting to
establish, or scheduling attempts to establish, multiple Protocol establish, or scheduling attempts to establish, multiple Protocol
Stacks that differ based on the specific representation of the Stacks that differ based on the specific representation of the
Remote Endpoint and the Local Endpoint, such as IP addresses Remote Endpoint and the Local Endpoint, such as IP addresses
resolved from a DNS hostname. resolved from a DNS hostname.
4.2.3. Message Framing, Parsing, and Serialization 4.3. Protocol Stack Equivalence
The Transport Services architecture defines a mechanism that allows
applications to easily use different network paths and Protocol
Stacks. Transitioning between different Protocol Stacks may in some
cases be controlled by properties that only change when application
code is updated. For example, an application may enable the use of a
multipath or multistreaming transport protocol by modifying the
properties in its Pre-Connection configuration. In some cases,
however, the Transport Services system will be able to automatically
change Protocol Stacks without an update to the application, either
by selecting a new stack entirely, or racing multiple candidate
Protocol Stacks during connection establishment. This functionality
can be a powerful driver of new protocol adoption, but must be
constrained carefully to avoid unexpected behavior that can lead to
functional or security problems.
If two different Protocol Stacks can be safely swapped, or raced in
parallel (see Section 4.2.2), then they are considered to be
"equivalent". Equivalent Protocol Stacks must meet the following
criteria:
1. Both stacks must offer the same interface to the application for
connection establishment and data transmission. For example, if
one Protocol Stack has UDP as the top-level interface to the
application, then it is not equivalent to a Protocol Stack that
runs TCP as the top-level interface. Among other differences,
the UDP stack would allow an application to read out message
boundaries based on datagrams sent from the Remote Endpoint,
whereas TCP does not preserve message boundaries on its own.
2. Both stacks must offer the same transport services, as required
by the application. For example, if an application specifies
that it requires reliable transmission of data, then a Protocol
Stack using UDP without any reliability layer on top would not be
allowed to replace a Protocol Stack using TCP. However, if the
application does not require reliability, then a Protocol Stack
that adds unnecessary reliability might be allowed as an
equivalent Protocol Stack as long as it does not conflict with
any other application-requested properties.
3. Both stacks must offer the same security properties. See the
security protocol equivalence section below for futher discussion
(Section 4.3.1).
4.3.1. Transport Security Equivalence
The inclusion of transport security protocols
[I-D.ietf-taps-transport-security] in a Protocol Stack adds extra
restrictions to Protocol Stack equivalence. Security features and
properties, such as cryptographic algorithms, peer authentication,
and identity privacy vary across security protocols, and across
versions of security protocols. Protocol equivalence should not be
assumed for different protocols or protocol versions, even if they
offer similar application configuration options.
To ensure that security protocols are not incorrectly swapped,
Transport Services systems should only automatically generate
equivalent Protocol Stacks when the transport security protocols
within the stacks are identical. Specifically, a system should
consider protocols identical only if they are of the same type and
version. For example, the same version of TLS running over two
different transport protocol stacks may be considered equivalent,
whereas TLS 1.2 and TLS 1.3 [I-D.ietf-tls-tls13] should not be
considered equivalent.
4.4. Message Framing, Parsing, and Serialization
While some transports expose a byte stream abstraction, most higher While some transports expose a byte stream abstraction, most higher
level protocols impose some structure onto that byte stream. That level protocols impose some structure onto that byte stream. That
is, the higher level protocol operates in terms of messages, protocol is, the higher level protocol operates in terms of messages, protocol
data units (PDUs), rather than using unstructured sequences of bytes, data units (PDUs), rather than using unstructured sequences of bytes,
with each message being processed in turn. Protocols are specified with each message being processed in turn. Protocols are specified
in terms of state machines acting on semantic messages, with parsing in terms of state machines acting on semantic messages, with parsing
the byte stream into messages being a necessary annoyance, rather the byte stream into messages being a necessary annoyance, rather
than a semantic concern. Accordingly, the Transport Services than a semantic concern. Accordingly, the Transport Services
architecture exposes messages as the primary abstraction. Protocols architecture exposes messages as the primary abstraction. Protocols
skipping to change at page 16, line 50 skipping to change at page 18, line 32
This work has been supported by the UK Engineering and Physical This work has been supported by the UK Engineering and Physical
Sciences Research Council under grant EP/R04144X/1. Sciences Research Council under grant EP/R04144X/1.
Thanks to Stuart Cheshire, Josh Graessley, David Schinazi, and Eric Thanks to Stuart Cheshire, Josh Graessley, David Schinazi, and Eric
Kinnear for their implementation and design efforts, including Happy Kinnear for their implementation and design efforts, including Happy
Eyeballs, that heavily influenced this work. Eyeballs, that heavily influenced this work.
8. Informative References 8. Informative References
[draft-brunstrom-taps-impl] [I-D.ietf-taps-impl]
Anna Brunstrom, . and . Tommy Pauly, "Implementing Brunstrom, A., Pauly, T., Enghardt, T., Grinnemo, K.,
Interfaces to Transport Services", n.d.. Jones, T., Tiesel, P., Perkins, C., and M. Welzl,
"Implementing Interfaces to Transport Services", draft-
ietf-taps-impl-00 (work in progress), May 2018.
[I-D.ietf-taps-interface]
Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G.,
Kuehlewind, M., Perkins, C., Tiesel, P., and C. Wood, "An
Abstract Application Layer Interface to Transport
Services", draft-ietf-taps-interface-00 (work in
progress), April 2018.
[I-D.ietf-taps-minset] [I-D.ietf-taps-minset]
Welzl, M. and S. Gjessing, "A Minimal Set of Transport Welzl, M. and S. Gjessing, "A Minimal Set of Transport
Services for TAPS Systems", draft-ietf-taps-minset-03 Services for End Systems", draft-ietf-taps-minset-04 (work
(work in progress), March 2018. in progress), June 2018.
[I-D.ietf-taps-transport-security]
Pauly, T., Perkins, C., Rose, K., and C. Wood, "A Survey
of Transport Security Protocols", draft-ietf-taps-
transport-security-02 (work in progress), June 2018.
[I-D.ietf-tls-tls13] [I-D.ietf-tls-tls13]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", draft-ietf-tls-tls13-28 (work in progress), Version 1.3", draft-ietf-tls-tls13-28 (work in progress),
March 2018. March 2018.
[I-D.pauly-taps-transport-security] [POSIX] "IEEE Std. 1003.1-2008 Standard for Information Technology
Pauly, T., Perkins, C., Rose, K., and C. Wood, "A Survey -- Portable Operating System Interface (POSIX). Open
of Transport Security Protocols", draft-pauly-taps- group Technical Standard: Base Specifications, Issue 7",
transport-security-02 (work in progress), March 2018. n.d..
[I-D.trammell-taps-interface] [RFC0793] Postel, J., "Transmission Control Protocol", STD 7,
Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G., RFC 793, DOI 10.17487/RFC0793, September 1981,
Kuehlewind, M., Perkins, C., Tiesel, P., and C. Wood, "An <https://www.rfc-editor.org/info/rfc793>.
Abstract Application Layer Interface to Transport
Services", draft-trammell-taps-interface-00 (work in
progress), March 2018.
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
of Explicit Congestion Notification (ECN) to IP", of Explicit Congestion Notification (ECN) to IP",
RFC 3168, DOI 10.17487/RFC3168, September 2001, RFC 3168, DOI 10.17487/RFC3168, September 2001,
<https://www.rfc-editor.org/info/rfc3168>. <https://www.rfc-editor.org/info/rfc3168>.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
RFC 4303, DOI 10.17487/RFC4303, December 2005, RFC 4303, DOI 10.17487/RFC4303, December 2005,
<https://www.rfc-editor.org/info/rfc4303>. <https://www.rfc-editor.org/info/rfc4303>.
 End of changes. 41 change blocks. 
126 lines changed or deleted 219 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/