rfc9621v6.txt | rfc9621.txt | |||
---|---|---|---|---|
skipping to change at line 12 ¶ | skipping to change at line 12 ¶ | |||
Internet Engineering Task Force (IETF) T. Pauly, Ed. | Internet Engineering Task Force (IETF) T. Pauly, Ed. | |||
Request for Comments: 9621 Apple Inc. | Request for Comments: 9621 Apple Inc. | |||
Category: Standards Track B. Trammell, Ed. | Category: Standards Track B. Trammell, Ed. | |||
ISSN: 2070-1721 Google Switzerland GmbH | ISSN: 2070-1721 Google Switzerland GmbH | |||
A. Brunstrom | A. Brunstrom | |||
Karlstad University | Karlstad University | |||
G. Fairhurst | G. Fairhurst | |||
University of Aberdeen | University of Aberdeen | |||
C. S. Perkins | C. S. Perkins | |||
University of Glasgow | University of Glasgow | |||
December 2024 | January 2025 | |||
Architecture and Requirements for Transport Services | Architecture and Requirements for Transport Services | |||
Abstract | Abstract | |||
This document describes an architecture that exposes transport | This document describes an architecture that exposes transport | |||
protocol features to applications for network communication. The | protocol features to applications for network communication. The | |||
Transport Services Application Programming Interface (API) is based | Transport Services Application Programming Interface (API) is based | |||
on an asynchronous, event-driven interaction pattern. This API uses | on an asynchronous, event-driven interaction pattern. This API uses | |||
Messages for representing data transfer to applications and describes | Messages for representing data transfer to applications and describes | |||
skipping to change at line 46 ¶ | skipping to change at line 46 ¶ | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc9621. | https://www.rfc-editor.org/info/rfc9621. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
skipping to change at line 527 ¶ | skipping to change at line 527 ¶ | |||
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 multistreaming and | underlying transport connections to utilize multistreaming and | |||
create Pooled Connections. | create 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 protocols, while simplifying the | |||
role in parsing data. For protocols that inherently use a streaming | application's role in parsing data. For protocols that inherently | |||
abstraction, Framers (Section 4.1.5) bridge the gap between the two | use a streaming abstraction, Framers (Section 4.1.5) bridge the gap | |||
abstractions. | between the two 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: | |||
skipping to change at line 616 ¶ | skipping to change at line 616 ¶ | |||
robustness to failure, or some other metric. | robustness to failure, or some other metric. | |||
Beyond these, if the Transport Services API remains the same over | Beyond these, if the Transport Services API remains the same over | |||
time, new protocols and features can be added to the Transport | time, new protocols and features can be added to the Transport | |||
Services Implementation without requiring changes in applications for | Services Implementation without requiring changes in applications for | |||
adoption. Similarly, this can provide a common basis for utilizing | adoption. Similarly, this can provide a common basis for utilizing | |||
information about a network path or interface, enabling evolution | information about a network path or interface, enabling evolution | |||
below the transport layer. | below the transport layer. | |||
The normative requirements described in this section allow Transport | The normative requirements described in this section allow Transport | |||
Services APIs and the Transport Services Implementation to provide | Services APIs and the Transport Services Implementations to provide | |||
this functionality without causing incompatibility or introducing | this functionality without causing incompatibility or introducing | |||
security vulnerabilities. | security vulnerabilities. | |||
3.1. Provide Common APIs for Common Features | 3.1. Provide Common APIs for Common Features | |||
Any functionality that is common across multiple transport protocols | Any functionality that is common across multiple transport protocols | |||
SHOULD be made accessible through a unified set of calls using the | SHOULD be made accessible through a unified set of calls using the | |||
Transport Services API. As a baseline, any Transport Services API | Transport Services API. As a baseline, any Transport Services API | |||
SHOULD allow access to the minimal set of features offered by | SHOULD allow access to the minimal set of features offered by | |||
transport protocols [RFC8923]. If that minimal set is updated or | transport protocols [RFC8923]. If that minimal set is updated or | |||
skipping to change at line 1281 ¶ | skipping to change at line 1281 ¶ | |||
routes, addresses, and physical and virtual network interfaces. | routes, addresses, and physical and virtual network interfaces. | |||
Protocol Instance: A single instance of one protocol, including any | Protocol Instance: A single instance of one protocol, including any | |||
state necessary to establish connectivity or send and receive | state necessary to establish connectivity or send and receive | |||
Messages. | Messages. | |||
Protocol Stack: A set of protocol instances (including relevant | Protocol Stack: A set of protocol instances (including relevant | |||
application, security, transport, or Internet protocols) that are | application, security, transport, or Internet protocols) that are | |||
used together to establish connectivity or send and receive | used together to establish connectivity or send and receive | |||
Messages. A single stack can be simple (e.g., one application | Messages. A single stack can be simple (e.g., one application | |||
stream carried TCP running over IP) or complex (e.g,. multiple | stream carried over TCP running over IP) or complex (e.g,. | |||
application streams carried over a multipath transport protocol | multiple application streams carried over a multipath transport | |||
using multiple subflows over IP). | protocol using multiple subflows over IP). | |||
Candidate Path: One path that is available to an application and | Candidate Path: One path that is available to an application and | |||
conforms to the Selection Properties and System Policy, of which | conforms to the Selection Properties and System Policy, of which | |||
there can be several. Candidate Paths are identified during the | there can be several. Candidate Paths are identified during the | |||
gathering phase (Section 4.2.1) and can be used during the racing | gathering phase (Section 4.2.1) and can be used during the racing | |||
phase (Section 4.2.2). | phase (Section 4.2.2). | |||
Candidate Protocol Stack: One Protocol Stack that can be used by an | Candidate Protocol Stack: One Protocol Stack that can be used by an | |||
application for a connection, for which there can be several | application for a connection, for which there can be several | |||
candidates. Candidate Protocol Stacks are identified during the | candidates. Candidate Protocol Stacks are identified during the | |||
skipping to change at line 1534 ¶ | skipping to change at line 1534 ¶ | |||
<https://www.rfc-editor.org/info/rfc9113>. | <https://www.rfc-editor.org/info/rfc9113>. | |||
[RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | |||
STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | |||
<https://www.rfc-editor.org/info/rfc9293>. | <https://www.rfc-editor.org/info/rfc9293>. | |||
[RFC9622] Trammell, B., Ed., Welzl, M., Ed., Enghardt, R., | [RFC9622] Trammell, B., Ed., Welzl, M., Ed., Enghardt, R., | |||
Fairhurst, G., Kühlewind, M., Perkins, C. S., Tiesel, P., | Fairhurst, G., Kühlewind, M., Perkins, C. S., Tiesel, P., | |||
and T. Pauly, "An Abstract Application Programming | and T. Pauly, "An Abstract Application Programming | |||
Interface (API) for Transport Services", RFC 9622, | Interface (API) for Transport Services", RFC 9622, | |||
DOI 10.17487/RFC9622, December 2024, | DOI 10.17487/RFC9622, January 2025, | |||
<https://www.rfc-editor.org/info/rfc9622>. | <https://www.rfc-editor.org/info/rfc9622>. | |||
[RFC9623] Brunstrom, A., Ed., Pauly, T., Ed., Enghardt, R., Tiesel, | [RFC9623] Brunstrom, A., Ed., Pauly, T., Ed., Enghardt, R., Tiesel, | |||
P., and M. Welzl, "Implementing Interfaces to Transport | P., and M. Welzl, "Implementing Interfaces to Transport | |||
Services", RFC 9623, DOI 10.17487/RFC9623, December 2024, | Services", RFC 9623, DOI 10.17487/RFC9623, January 2025, | |||
<https://www.rfc-editor.org/info/rfc9623>. | <https://www.rfc-editor.org/info/rfc9623>. | |||
Acknowledgements | Acknowledgements | |||
This work has received funding from the European Union's Horizon 2020 | This work has received funding from the European Union's Horizon 2020 | |||
research and innovation programme under grant agreements No. 644334 | research and innovation programme under grant agreements No. 644334 | |||
(NEAT), No. 688421 (MAMI), and No. 815178 (5GENESIS). | (NEAT), No. 688421 (MAMI), and No. 815178 (5GENESIS). | |||
This work has been supported by: | This work has been supported by: | |||
End of changes. 7 change blocks. | ||||
12 lines changed or deleted | 12 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |