draft-ietf-taps-impl-00.txt | draft-ietf-taps-impl-01.txt | |||
---|---|---|---|---|
TAPS Working Group A. Brunstrom, Ed. | TAPS Working Group A. Brunstrom, Ed. | |||
Internet-Draft Karlstad University | Internet-Draft Karlstad University | |||
Intended status: Informational T. Pauly, Ed. | Intended status: Informational T. Pauly, Ed. | |||
Expires: November 26, 2018 Apple Inc. | Expires: January 2, 2019 Apple Inc. | |||
T. Enghardt | T. Enghardt | |||
TU Berlin | TU Berlin | |||
K-J. Grinnemo | K-J. Grinnemo | |||
Karlstad University | Karlstad University | |||
T. Jones | T. Jones | |||
University of Aberdeen | University of Aberdeen | |||
P. Tiesel | P. Tiesel | |||
TU Berlin | TU Berlin | |||
C. Perkins | C. Perkins | |||
University of Glasgow | University of Glasgow | |||
M. Welzl | M. Welzl | |||
University of Oslo | University of Oslo | |||
May 25, 2018 | July 01, 2018 | |||
Implementing Interfaces to Transport Services | Implementing Interfaces to Transport Services | |||
draft-ietf-taps-impl-00 | draft-ietf-taps-impl-01 | |||
Abstract | Abstract | |||
The Transport Services architecture [I-D.pauly-taps-arch] defines a | The Transport Services architecture [I-D.ietf-taps-arch] defines a | |||
system that allows applications to use transport networking protocols | system that allows applications to use transport networking protocols | |||
flexibly. This document serves as a guide to implementation on how | flexibly. This document serves as a guide to implementation on how | |||
to build such a system. | to build such a system. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 26, 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 3, line 31 ¶ | skipping to change at page 3, line 31 ¶ | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 33 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 33 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 34 | 14.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
Appendix A. Additional Properties . . . . . . . . . . . . . . . 34 | Appendix A. Additional Properties . . . . . . . . . . . . . . . 34 | |||
A.1. Properties Affecting Sorting of Branches . . . . . . . . 35 | A.1. Properties Affecting Sorting of Branches . . . . . . . . 35 | |||
A.2. Send Parameters . . . . . . . . . . . . . . . . . . . . . 35 | A.2. Send Parameters . . . . . . . . . . . . . . . . . . . . . 35 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
1. Introduction | 1. Introduction | |||
The Transport Services architecture [I-D.pauly-taps-arch] defines a | The Transport Services architecture [I-D.ietf-taps-arch] defines a | |||
system that allows applications to use transport networking protocols | system that allows applications to use transport networking protocols | |||
flexibly. The interface such a system exposes to applications is | flexibly. The interface such a system exposes to applications is | |||
defined as the Transport Services API [I-D.trammell-taps-interface]. | defined as the Transport Services API [I-D.ietf-taps-interface]. | |||
This API is designed to be generic across multiple transport | This API is designed to be generic across multiple transport | |||
protocols and sets of protocols features. | protocols and sets of protocols features. | |||
This document serves as a guide to implementation on how to build a | This document serves as a guide to implementation on how to build a | |||
system that provides a Transport Services API. It is the job of an | system that provides a Transport Services API. It is the job of an | |||
implementation of a Transport Services system to turn the requests of | implementation of a Transport Services system to turn the requests of | |||
an application into decisions on how to establish connections, and | an application into decisions on how to establish connections, and | |||
how to transfer data over those connections once established. The | how to transfer data over those connections once established. The | |||
terminology used in this document is based on the Architecture | terminology used in this document is based on the Architecture | |||
[I-D.pauly-taps-arch]. | [I-D.ietf-taps-arch]. | |||
2. Implementing Basic Objects | 2. Implementing Basic Objects | |||
The basic objects that are exposed to applications for Transport | The basic objects that are exposed to applications for Transport | |||
Services are the Preconnection, the bundle of properties that | Services are the Preconnection, the bundle of properties that | |||
describes the application constraints on the transport; the | describes the application constraints on the transport; the | |||
Connection, the basic object that represents a flow of data in either | Connection, the basic object that represents a flow of data in either | |||
direction between the Local and Remote Endpoints; and the Listener, a | direction between the Local and Remote Endpoints; and the Listener, a | |||
passive waiting object that delivers new Connections. | passive waiting object that delivers new Connections. | |||
skipping to change at page 4, line 42 ¶ | skipping to change at page 4, line 42 ¶ | |||
3. Implementing Pre-Establishment | 3. Implementing Pre-Establishment | |||
During pre-establishment the application specifies the Endpoints to | During pre-establishment the application specifies the Endpoints to | |||
be used for communication as well as its preferences regarding | be used for communication as well as its preferences regarding | |||
Protocol and Path Selection. The implementation stores these objects | Protocol and Path Selection. The implementation stores these objects | |||
and properties as part of the Preconnection object for use during | and properties as part of the Preconnection object for use during | |||
connection establishment. For Protocol and Path Selection Properties | connection establishment. For Protocol and Path Selection Properties | |||
that are not provided by the application, the implementation must use | that are not provided by the application, the implementation must use | |||
the default values specified in the Transport Services API | the default values specified in the Transport Services API | |||
([I-D.trammell-taps-interface]). | ([I-D.ietf-taps-interface]). | |||
3.1. Configuration-time errors | 3.1. Configuration-time errors | |||
The transport system should have a list of supported protocols | The transport system should have a list of supported protocols | |||
available, which each have transport features reflecting the | available, which each have transport features reflecting the | |||
capabilities of the protocol. Once an application specifies its | capabilities of the protocol. Once an application specifies its | |||
Transport Parameters, the transport system should match the required | Transport Parameters, the transport system should match the required | |||
and prohibited properties against the transport features of the | and prohibited properties against the transport features of the | |||
available protocols. | available protocols. | |||
skipping to change at page 12, line 28 ¶ | skipping to change at page 12, line 28 ¶ | |||
resolution and DNS hostname resolution. | resolution and DNS hostname resolution. | |||
4.3. Sorting Branches | 4.3. Sorting Branches | |||
Implementations should sort the branches of the tree of connection | Implementations should sort the branches of the tree of connection | |||
options in order of their preference rank. Leaf nodes on branches | options in order of their preference rank. Leaf nodes on branches | |||
with higher rankings represent connection attempts that will be raced | with higher rankings represent connection attempts that will be raced | |||
first. Implementations should order the branches to reflect the | first. Implementations should order the branches to reflect the | |||
preferences expressed by the application for its new connection, | preferences expressed by the application for its new connection, | |||
including Protocol and Path Selection Properties, which are specified | including Protocol and Path Selection Properties, which are specified | |||
in [I-D.trammell-taps-interface]. | in [I-D.ietf-taps-interface]. | |||
In addition to the properties provided by the application, an | In addition to the properties provided by the application, an | |||
implementation may include additional criteria such as cached | implementation may include additional criteria such as cached | |||
performance estimates, see Section 8.2, or system policy, see | performance estimates, see Section 8.2, or system policy, see | |||
Section 3.2, in the ranking. Two examples of how the Protocol and | Section 3.2, in the ranking. Two examples of how the Protocol and | |||
Path Selection Properties may be used to sort branches are provided | Path Selection Properties may be used to sort branches are provided | |||
below: | below: | |||
o Interface Type: If the application specifies an interface type to | o Interface Type: If the application specifies an interface type to | |||
be preferred or avoided, implementations should rank paths | be preferred or avoided, implementations should rank paths | |||
skipping to change at page 33, line 13 ¶ | skipping to change at page 33, line 13 ¶ | |||
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. | |||
14. References | 14. References | |||
14.1. Normative References | 14.1. Normative References | |||
[I-D.ietf-taps-minset] | [I-D.ietf-taps-arch] | |||
Welzl, M. and S. Gjessing, "A Minimal Set of Transport | ||||
Services for TAPS Systems", draft-ietf-taps-minset-03 | ||||
(work in progress), March 2018. | ||||
[I-D.pauly-taps-arch] | ||||
Pauly, T., Trammell, B., Brunstrom, A., Fairhurst, G., | Pauly, T., Trammell, B., Brunstrom, A., Fairhurst, G., | |||
Perkins, C., Tiesel, P., and C. Wood, "An Architecture for | Perkins, C., Tiesel, P., and C. Wood, "An Architecture for | |||
Transport Services", draft-pauly-taps-arch-00 (work in | Transport Services", draft-ietf-taps-arch-00 (work in | |||
progress), February 2018. | progress), April 2018. | |||
[I-D.trammell-taps-interface] | [I-D.ietf-taps-interface] | |||
Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G., | Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G., | |||
Kuehlewind, M., Perkins, C., Tiesel, P., and C. Wood, "An | Kuehlewind, M., Perkins, C., Tiesel, P., and C. Wood, "An | |||
Abstract Application Layer Interface to Transport | Abstract Application Layer Interface to Transport | |||
Services", draft-trammell-taps-interface-00 (work in | Services", draft-ietf-taps-interface-00 (work in | |||
progress), March 2018. | progress), April 2018. | |||
[I-D.ietf-taps-minset] | ||||
Welzl, M. and S. Gjessing, "A Minimal Set of Transport | ||||
Services for End Systems", draft-ietf-taps-minset-04 (work | ||||
in progress), June 2018. | ||||
[RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. | [RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. | |||
Yasevich, "Sockets API Extensions for the Stream Control | Yasevich, "Sockets API Extensions for the Stream Control | |||
Transmission Protocol (SCTP)", RFC 6458, | Transmission Protocol (SCTP)", RFC 6458, | |||
DOI 10.17487/RFC6458, December 2011, | DOI 10.17487/RFC6458, December 2011, | |||
<https://www.rfc-editor.org/info/rfc6458>. | <https://www.rfc-editor.org/info/rfc6458>. | |||
[RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | |||
Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | |||
<https://www.rfc-editor.org/info/rfc7413>. | <https://www.rfc-editor.org/info/rfc7413>. | |||
skipping to change at page 34, line 24 ¶ | skipping to change at page 34, line 24 ¶ | |||
[RFC8305] Schinazi, D. and T. Pauly, "Happy Eyeballs Version 2: | [RFC8305] Schinazi, D. and T. Pauly, "Happy Eyeballs Version 2: | |||
Better Connectivity Using Concurrency", RFC 8305, | Better Connectivity Using Concurrency", RFC 8305, | |||
DOI 10.17487/RFC8305, December 2017, | DOI 10.17487/RFC8305, December 2017, | |||
<https://www.rfc-editor.org/info/rfc8305>. | <https://www.rfc-editor.org/info/rfc8305>. | |||
14.2. Informative References | 14.2. Informative References | |||
[I-D.ietf-quic-transport] | [I-D.ietf-quic-transport] | |||
Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | |||
and Secure Transport", draft-ietf-quic-transport-12 (work | and Secure Transport", draft-ietf-quic-transport-13 (work | |||
in progress), May 2018. | 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. | |||
[NEAT-flow-mapping] | [NEAT-flow-mapping] | |||
"Transparent Flow Mapping for NEAT (in Workshop on Future | "Transparent Flow Mapping for NEAT (in Workshop on Future | |||
of Internet Transport (FIT 2017))", n.d.. | of Internet Transport (FIT 2017))", n.d.. | |||
End of changes. 15 change blocks. | ||||
23 lines changed or deleted | 23 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |