rfc9621v3.txt   rfc9621.txt 
skipping to change at line 148 skipping to change at line 148
to identify an optimal combination of a transport protocol instance to identify an optimal combination of a transport protocol instance
such as TCP, UDP, or another transport, together with configuration such as TCP, UDP, or another transport, together with configuration
of parameters and interfaces. A Connection represents an object of parameters and interfaces. A Connection represents an object
that, once established, can be used to send and receive messages. A that, once established, can be used to send and receive messages. A
Connection can also be created from another Connection, by cloning, Connection can also be created from another Connection, by cloning,
and then forms a part of a Connection Group whose Connections share and then forms a part of a Connection Group whose Connections share
properties. properties.
This document was developed in parallel with the specification of the This document was developed in parallel with the specification of the
Transport Services API [RFC9622] and implementation guidelines Transport Services API [RFC9622] and implementation guidelines
[RFC9623]. Although following the Transport Services architecture [RFC9623]. Although following the Transport Services Architecture
does not require all APIs and implementations to be identical, a does not require all APIs and implementations to be identical, a
common minimal set of features represented in a consistent fashion common minimal set of features represented in a consistent fashion
will enable applications to be easily ported from one implementation will enable applications to be easily ported from one implementation
of the Transport Services System to another. of the Transport Services System to another.
1.1. Background 1.1. Background
The architecture of the Transport Services System is based on the The architecture of the Transport Services System is based on the
survey of services provided by IETF transport protocols and survey of services provided by IETF transport protocols and
congestion control mechanisms [RFC8095] and the distilled minimal set congestion control mechanisms [RFC8095] and the distilled minimal set
skipping to change at line 217 skipping to change at line 217
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
1.4. Glossary of Key Terms 1.4. Glossary of Key Terms
This subsection provides a glossary of key terms related to the This subsection provides a glossary of key terms related to the
Transport Services architecture. It provides a short description of Transport Services Architecture. It provides a short description of
key terms that are defined later in this document. key terms that are defined later in this document.
Application: An entity that uses the transport layer for end-to-end Application: An entity that uses the transport layer for end-to-end
delivery of data across the network [RFC8095]. delivery of data across the network [RFC8095].
Cached State: The state and history that the Transport Services Cached State: The state and history that the Transport Services
Implementation keeps for each set of the associated Endpoints that Implementation keeps for each set of the associated Endpoints that
have been used previously. have been used previously.
Candidate Path: One path that is available to an application and Candidate Path: One path that is available to an application and
skipping to change at line 351 skipping to change at line 351
Transport Feature: A specific end-to-end feature that the transport Transport Feature: A specific end-to-end feature that the transport
layer provides to an application. layer provides to an application.
Transport Property: A property of a transport protocol and the Transport Property: A property of a transport protocol and the
services it provides [RFC8095]. services it provides [RFC8095].
Transport Service: A set of transport features, not associated with Transport Service: A set of transport features, not associated with
any given framing protocol, that provides a complete service to an any given framing protocol, that provides a complete service to an
application. application.
Transport Services API: The abstract interface [RFC9622] to a
Transport Services Implementation [RFC9623].
Transport Services Implementation: All objects and protocol Transport Services Implementation: All objects and protocol
instances used internally to a system or library to implement the instances used internally to a system or library to implement the
functionality needed to provide a transport service across a functionality needed to provide a transport service across a
network, as required by the abstract interface. network, as required by the abstract interface.
Transport Services System: The Transport Services Implementation and Transport Services System: The Transport Services Implementation and
the Transport Services API. the Transport Services API.
2. API Model 2. API Model
skipping to change at line 517 skipping to change at line 520
* providing additional information to the Protocol Stack; * providing additional information to the Protocol Stack;
* the ability to associate deadlines with messages, for applications * the ability to associate deadlines with messages, for applications
that care about timing; that care about timing;
* the ability to control reliability, which messages to retransmit * the ability to control reliability, which messages to retransmit
when there is packet loss, and how best to make use of the data when there is packet loss, and how best to make use of the data
that arrived; that arrived;
* the ability to automatically assign messages and connections to * the ability to automatically assign messages and connections to
underlying transport connections to utilize multi-streaming and underlying transport connections to utilize multistreaming and
pooled connections. pooled connections.
Allowing applications to interact with messages is backward- Allowing applications to interact with messages is backward-
compatible with existing protocols and APIs because it does not compatible with existing protocols and APIs because it does not
change the wire format of any protocol. Instead, it provides the change the wire format of any protocol. Instead, it provides the
Protocol Stack with additional information to allow it to make better Protocol Stack with additional information to allow it to make better
use of modern Transport Services, while simplifying the application's use of modern Transport Services, while simplifying the application's
role in parsing data. For protocols that inherently use a streaming role in parsing data. For protocols that inherently use a streaming
abstraction, framers (Section 4.1.5) bridge the gap between the two abstraction, framers (Section 4.1.5) bridge the gap between the two
abstractions. abstractions.
2.3. Flexible Implementation 2.3. Flexible Implementation
The Socket API for protocols like TCP is generally limited to The Socket API for protocols like TCP is generally limited to
connecting to a single address over a single interface (IP source connecting to a single address over a single interface (IP source
address). It also presents a single stream to the application. address). It also presents a single stream to the application.
Software layers built upon this API often propagate this limitation Software layers built upon this API often propagate this limitation
of a single-address single-stream model. The Transport Services of a single-address single-stream model. The Transport Services
architecture is designed to: Architecture is designed to:
* handle multiple candidate endpoints, protocols, and paths; * handle multiple candidate endpoints, protocols, and paths;
* support candidate protocol racing to select the most optimal stack * support candidate protocol racing to select the most optimal stack
in each situation; in each situation;
* support multipath and multistreaming protocols; * support multipath and multistreaming protocols;
* provide state caching and application control over it. * provide state caching and application control over it.
skipping to change at line 1000 skipping to change at line 1003
transport protocol instances that can send and/or receive Messages transport protocol instances that can send and/or receive Messages
between Local and Remote Endpoints. It is an abstraction that between Local and Remote Endpoints. It is an abstraction that
represents the communication. The Connection object holds state represents the communication. The Connection object holds state
pertaining to the underlying transport protocol instances and any pertaining to the underlying transport protocol instances and any
ongoing data transfers. For example, an active Connection can ongoing data transfers. For example, an active Connection can
represent a connection-oriented protocol such as TCP, or it can represent a connection-oriented protocol such as TCP, or it can
represent a fully specified 5-tuple for a connectionless protocol represent a fully specified 5-tuple for a connectionless protocol
such as UDP, where the Connection remains an abstraction at the such as UDP, where the Connection remains an abstraction at the
endpoints. It can also represent a pool of transport protocol endpoints. It can also represent a pool of transport protocol
instances, e.g., a set of TCP and QUIC connections to equivalent instances, e.g., a set of TCP and QUIC connections to equivalent
endpoints, or a stream of a multi-streaming transport protocol endpoints, or a stream of a multistreaming transport protocol
instance. Connections can be created from a Preconnection or by a instance. Connections can be created from a Preconnection or by a
Listener. Listener.
Preconnection: A Preconnection object is a representation of a Preconnection: A Preconnection object is a representation of a
Connection that has not yet been established. It has state that Connection that has not yet been established. It has state that
describes parameters of the Connection: the Local Endpoint describes parameters of the Connection: the Local Endpoint
Identifier from which that Connection will be established, the Identifier from which that Connection will be established, the
Remote Endpoint Identifier to which it will connect, and Transport Remote Endpoint Identifier to which it will connect, and Transport
Properties that influence the paths and protocols a Connection Properties that influence the paths and protocols a Connection
will use. A Preconnection can be either fully specified will use. A Preconnection can be either fully specified
skipping to change at line 1247 skipping to change at line 1250
The API allows a Connection to be created from another Connection. The API allows a Connection to be created from another Connection.
This adds the new Connection to the Connection Group. A change to This adds the new Connection to the Connection Group. A change to
one of the Connection Properties on any Connection in the Connection one of the Connection Properties on any Connection in the Connection
Group automatically changes the Connection Property for all others. Group automatically changes the Connection Property for all others.
All Connections in a Connection Group share the same set of All Connections in a Connection Group share the same set of
Connection Properties except for the Connection Priority. These Connection Properties except for the Connection Priority. These
Connection Properties are said to be entangled. Connection Properties are said to be entangled.
Passive Connections can also be added to a Connection Group, e.g., Passive Connections can also be added to a Connection Group, e.g.,
when a Listener receives a new Connection that is just a new stream when a Listener receives a new Connection that is just a new stream
of an already-active multi-streaming protocol instance. of an already-active multistreaming protocol instance.
While Connection Groups are managed by the Transport Services While Connection Groups are managed by the Transport Services
Implementation, an application can define different Connection Implementation, an application can define different Connection
Contexts for different Connection Groups to explicitly control Contexts for different Connection Groups to explicitly control
caching boundaries, as discussed in Section 4.2.3. caching boundaries, as discussed in Section 4.2.3.
4.2. Transport Services Implementation 4.2. Transport Services Implementation
This section defines the key architectural concepts for the Transport This section defines the key architectural concepts for the Transport
Services Implementation within the Transport Services System. Services Implementation within the Transport Services System.
 End of changes. 7 change blocks. 
6 lines changed or deleted 9 lines changed or added

This html diff was produced by rfcdiff 1.48.