rfc9622v8.txt   rfc9622.txt 
skipping to change at line 18 skipping to change at line 18
G. Fairhurst G. Fairhurst
University of Aberdeen University of Aberdeen
M. Kühlewind M. Kühlewind
Ericsson Ericsson
C. S. Perkins C. S. Perkins
University of Glasgow University of Glasgow
P.S. Tiesel P.S. Tiesel
SAP SE SAP SE
T. Pauly T. Pauly
Apple Inc. Apple Inc.
December 2024 January 2025
An Abstract Application Programming Interface (API) for Transport An Abstract Application Programming Interface (API) for Transport
Services Services
Abstract Abstract
This document describes an abstract Application Programming Interface This document describes an abstract Application Programming Interface
(API) to the transport layer that enables the selection of transport (API) to the transport layer that enables the selection of transport
protocols and network paths dynamically at runtime. This API enables protocols and network paths dynamically at runtime. This API enables
faster deployment of new protocols and protocol features without faster deployment of new protocols and protocol features without
skipping to change at line 52 skipping to change at line 52
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/rfc9622. https://www.rfc-editor.org/info/rfc9622.
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 1937 skipping to change at line 1937
a Preconnection object with a Remote Endpoint object to identify the a Preconnection object with a Remote Endpoint object to identify the
Endpoint, optionally a Local Endpoint object (if not specified, the Endpoint, optionally a Local Endpoint object (if not specified, the
system will attempt to determine a suitable Local Endpoint), as well system will attempt to determine a suitable Local Endpoint), as well
as all Properties necessary for candidate selection. as all Properties necessary for candidate selection.
The Initiate action returns a Connection object. Once Initiate has The Initiate action returns a Connection object. Once Initiate has
been called, any changes to the Preconnection MUST NOT have any been called, any changes to the Preconnection MUST NOT have any
effect on the Connection. However, the Preconnection can be reused, effect on the Connection. However, the Preconnection can be reused,
e.g., to Initiate another Connection. e.g., to Initiate another Connection.
Once Initiate is called, the candidate Protocol Stack(s) can cause Once Initiate is called, the Candidate Protocol Stack(s) can cause
one or more candidate transport-layer connections to be created to one or more candidate transport-layer connections to be created to
the specified Remote Endpoint. The caller could immediately begin the specified Remote Endpoint. The caller could immediately begin
sending Messages on the Connection (see Section 9.2) after calling sending Messages on the Connection (see Section 9.2) after calling
Initiate; note that any data marked as "safely replayable" that is Initiate; note that any data marked as "safely replayable" that is
sent while the Connection is being established could be sent multiple sent while the Connection is being established could be sent multiple
times or using multiple candidates. times or using multiple candidates.
The following events can be sent by the Connection after Initiate is The following events can be sent by the Connection after Initiate is
called: called:
Connection -> Ready<> Connection -> Ready<>
The Ready event occurs after Initiate has established a transport- The Ready event occurs after Initiate has established a transport-
layer connection on at least one usable candidate Protocol Stack over layer connection on at least one usable Candidate Protocol Stack over
at least one Candidate Path. No Receive events (see Section 9.3) at least one Candidate Path. No Receive events (see Section 9.3)
will occur before the Ready event for Connections established using will occur before the Ready event for Connections established using
Initiate. Initiate.
Connection -> EstablishmentError<reason?> Connection -> EstablishmentError<reason?>
An EstablishmentError occurs when: An EstablishmentError occurs when:
* the set of transport Properties and Security Parameters cannot be * the set of transport Properties and Security Parameters cannot be
fulfilled on a Connection for initiation (e.g., the set of fulfilled on a Connection for initiation (e.g., the set of
skipping to change at line 3958 skipping to change at line 3958
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC9621] Pauly, T., Ed., Trammell, B., Ed., Brunstrom, A., [RFC9621] Pauly, T., Ed., Trammell, B., Ed., Brunstrom, A.,
Fairhurst, G., and C. S. Perkins, "Architecture and Fairhurst, G., and C. S. Perkins, "Architecture and
Requirements for Transport Services", RFC 9621, Requirements for Transport Services", RFC 9621,
DOI 10.17487/RFC9621, December 2024, DOI 10.17487/RFC9621, January 2025,
<https://www.rfc-editor.org/info/RFC9621>. <https://www.rfc-editor.org/info/RFC9621>.
14.2. Informative References 14.2. Informative References
[RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts -
Communication Layers", STD 3, RFC 1122, Communication Layers", STD 3, RFC 1122,
DOI 10.17487/RFC1122, October 1989, DOI 10.17487/RFC1122, October 1989,
<https://www.rfc-editor.org/info/rfc1122>. <https://www.rfc-editor.org/info/rfc1122>.
[RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black,
skipping to change at line 4149 skipping to change at line 4149
for HTTP", RFC 9218, DOI 10.17487/RFC9218, June 2022, for HTTP", RFC 9218, DOI 10.17487/RFC9218, June 2022,
<https://www.rfc-editor.org/info/rfc9218>. <https://www.rfc-editor.org/info/rfc9218>.
[RFC9329] Pauly, T. and V. Smyslov, "TCP Encapsulation of Internet [RFC9329] Pauly, T. and V. Smyslov, "TCP Encapsulation of Internet
Key Exchange Protocol (IKE) and IPsec Packets", RFC 9329, Key Exchange Protocol (IKE) and IPsec Packets", RFC 9329,
DOI 10.17487/RFC9329, November 2022, DOI 10.17487/RFC9329, November 2022,
<https://www.rfc-editor.org/info/rfc9329>. <https://www.rfc-editor.org/info/rfc9329>.
[RFC9623] Brunstrom, A., Ed., Pauly, T., Ed., Enghardt, R., Tiesel, [RFC9623] Brunstrom, A., Ed., Pauly, T., Ed., Enghardt, R., Tiesel,
P. S., and M. Welzl, "Implementing Interfaces to Transport P. S., 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>.
[TCP-COUPLING] [TCP-COUPLING]
Islam, S., Welzl, M., Hiorth, K., Hayes, D., Armitage, G., Islam, S., Welzl, M., Hiorth, K., Hayes, D., Armitage, G.,
and S. Gjessing, "ctrlTCP: Reducing latency through and S. Gjessing, "ctrlTCP: Reducing latency through
coupled, heterogeneous multi-flow TCP congestion control", coupled, heterogeneous multi-flow TCP congestion control",
IEEE INFOCOM 2018 - IEEE Conference on Computer IEEE INFOCOM 2018 - IEEE Conference on Computer
Communications Workshops (INFOCOM WKSHPS), Communications Workshops (INFOCOM WKSHPS),
DOI 10.1109/INFCOMW.2018.8406887, 2018, DOI 10.1109/INFCOMW.2018.8406887, 2018,
<https://ieeexplore.ieee.org/document/8406887>. <https://ieeexplore.ieee.org/document/8406887>.
 End of changes. 6 change blocks. 
6 lines changed or deleted 6 lines changed or added

This html diff was produced by rfcdiff 1.48.