draft-ietf-taps-arch-01.txt   draft-ietf-taps-arch-02.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: Standards Track B. Trammell, Ed.
Expires: January 2, 2019 ETH Zurich Expires: April 25, 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.
July 01, 2018 October 22, 2018
An Architecture for Transport Services An Architecture for Transport Services
draft-ietf-taps-arch-01 draft-ietf-taps-arch-02
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 January 2, 2019. This Internet-Draft will expire on April 25, 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
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 Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Design Principles . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Event-Driven API . . . . . . . . . . . . . . . . . . . . 5
3.1. Common APIs for Common Features . . . . . . . . . . . . . 4 1.3. Data Transfer Using Messages . . . . . . . . . . . . . . 5
3.2. Access to Specialized Features . . . . . . . . . . . . . 4 1.4. Flexibile Implementation . . . . . . . . . . . . . . . . 6
3.3. Scope for API and Implementation Definitions . . . . . . 5 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Transport Services Architecture and Concepts . . . . . . . . 6 3. Design Principles . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Transport Services API Concepts . . . . . . . . . . . . . 7 3.1. Common APIs for Common Features . . . . . . . . . . . . . 7
4.1.1. Basic Objects . . . . . . . . . . . . . . . . . . . . 9 3.2. Access to Specialized Features . . . . . . . . . . . . . 7
4.1.2. Pre-Establishment . . . . . . . . . . . . . . . . . . 10 3.3. Scope for API and Implementation Definitions . . . . . . 8
4.1.3. Establishment Actions . . . . . . . . . . . . . . . . 11 4. Transport Services Architecture and Concepts . . . . . . . . 9
4.1.4. Data Transfer Objects and Actions . . . . . . . . . . 11 4.1. Transport Services API Concepts . . . . . . . . . . . . . 10
4.1.5. Event Handling . . . . . . . . . . . . . . . . . . . 12 4.1.1. Basic Objects . . . . . . . . . . . . . . . . . . . . 12
4.1.6. Termination Actions . . . . . . . . . . . . . . . . . 13 4.1.2. Pre-Establishment . . . . . . . . . . . . . . . . . . 13
4.2. Transport System Implementation Concepts . . . . . . . . 13 4.1.3. Establishment Actions . . . . . . . . . . . . . . . . 14
4.2.1. Candidate Gathering . . . . . . . . . . . . . . . . . 14 4.1.4. Data Transfer Objects and Actions . . . . . . . . . . 14
4.2.2. Candidate Racing . . . . . . . . . . . . . . . . . . 14 4.1.5. Event Handling . . . . . . . . . . . . . . . . . . . 15
4.3. Protocol Stack Equivalence . . . . . . . . . . . . . . . 15 4.1.6. Termination Actions . . . . . . . . . . . . . . . . . 16
4.3.1. Transport Security Equivalence . . . . . . . . . . . 16 4.2. Transport System Implementation Concepts . . . . . . . . 16
4.4. Message Framing, Parsing, and Serialization . . . . . . . 16 4.2.1. Candidate Gathering . . . . . . . . . . . . . . . . . 17
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 4.2.2. Candidate Racing . . . . . . . . . . . . . . . . . . 17
6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 4.3. Protocol Stack Equivalence . . . . . . . . . . . . . . . 18
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 4.3.1. Transport Security Equivalence . . . . . . . . . . . 19
8. Informative References . . . . . . . . . . . . . . . . . . . 18 4.4. Message Framing, Parsing, and Serialization . . . . . . . 19
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
6. Security Considerations . . . . . . . . . . . . . . . . . . . 20
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21
8. Informative References . . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction 1. Introduction
Many APIs to perform transport networking have been deployed, perhaps Many application programming interfaces (APIs) to perform transport
the most widely known and imitated being the BSD socket() [POSIX] networking have been deployed, perhaps the most widely known and
interface. The names and functions between these APIs are not imitated being the BSD socket() [POSIX] interface. The names and
consistent, and vary depending on the protocol being used. For functions between these APIs are not consistent, and vary depending
example, sending and receiving on a stream of data is conceptually on the protocol being used. For example, sending and receiving on a
the same between operating on an unencrypted Transmission Control stream of data is conceptually the same between operating on an
Protocol (TCP) stream and operating on an encrypted Transport Layer unencrypted Transmission Control Protocol (TCP) stream and operating
Security (TLS) [I-D.ietf-tls-tls13] stream over TCP, but applications on an encrypted Transport Layer Security (TLS) [I-D.ietf-tls-tls13]
cannot use the same socket send() and recv() calls on top of both stream over TCP, but applications cannot use the same socket send()
kinds of connections. Similarly, terminology for the implementation and recv() calls on top of both kinds of connections. Similarly,
of protocols offering transport services vary based on the context of terminology for the implementation of protocols offering transport
the protocols themselves. This variety can lead to confusion when services vary based on the context of the protocols themselves. This
trying to understand the similarities and differences between variety can lead to confusion when trying to understand the
protocols, and how applications can use them effectively. similarities and differences between 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.ietf-taps-interface] and Implementation Transport Services API [I-D.ietf-taps-interface] and Implementation
[I-D.ietf-taps-impl] documents. [I-D.ietf-taps-impl] documents.
1.1. Overview
The model for using sockets for networking can be represented as
follows: applications create connections and transfer data using the
socket API, which provides the interface to the implementations of
UDP and TCP (typically implemented in the system's kernel), which in
turn send data over the available network layer interfaces.
+-----------------------------------------------------+
| Application |
+-----------------------------------------------------+
| |
+---------------------+ +-----------------------+
| Socket Stream API | | Socket Datagram API |
+---------------------+ +-----------------------+
| |
+-----------------------------------------------------+
| TCP UDP |
| Kernel Protocol Implementation |
+-----------------------------------------------------+
|
+-----------------------------------------------------+
| Network Layer Interface |
+-----------------------------------------------------+
The Transport Services architecture maintains this general model of
interaction, but aims to both modernize the API surface exposed for
transport protocols and enrich the capabilities of the transport
system implementation.
+-----------------------------------------------------+
| Application |
+-----------------------------------------------------+
|
+-----------------------------------------------------+
| Transport Services API |
+-----------------------------------------------------+
|
+-----------------------------------------------------+
| Transport System Implementation |
| (UDP, TCP, SCTP, DCCP, TLS, QUIC, etc) |
+-----------------------------------------------------+
|
+-----------------------------------------------------+
| Network Layer Interface |
+-----------------------------------------------------+
The Transport Services API [I-D.ietf-taps-interface] defines the
mechanism for an application to create and monitor network
connections, and transfer data. The Implementation
[I-D.ietf-taps-impl] is responsible for mapping the API into the
various available transport protocols and managing the available
network interfaces and paths.
There are a few key departures that Transport Services makes from the
sockets API: it presents an asynchronous, event-driven API; it uses
messages for respresenting data transfer to applications; and it
assumes an implementation that can use multiple IP addresses,
multiple protocols, multiple paths, and provide multiple application
streams.
1.2. Event-Driven API
Originally, sockets presented a blocking interface for establishing
connections and transferring data. However, most modern applications
interact with the network asynchronously. When sockets are presented
as an asynchronous interface, they generally use a try-and-fail
model. If the application wants to read, but data has not yet been
received from the peer, the call to read will fail. The application
then waits for a notification that it should try again.
All interaction with a Transport Services system is expected to be
asynchronous, and use an event-driven model unlike sockets
Section 4.1.5. For example, if the application wants to read, its
call to read will not fail, but will deliver an event containing the
received data once it is available.
The Transport Services API also delivers events regarding the
lifetime of a connection and changes to available network links,
which were not previously made explicit in sockets.
Using asynchronous events allows for a much simpler interaction model
when establishing connections and transferring data. Events in time
more closely reflect the nature of interactions over networks, as
opposed to how sockets represent network resources as file system
objects that may be temporarily unavailable.
1.3. Data Transfer Using Messages
Sockets provide a message interface for datagram protocols like UDP,
but provide an unstructured stream abstraction for TCP. While TCP
does indeed provide the ability to send and receive data as streams,
most applications need to interpret structure within these streams.
HTTP/1.1 uses character delimiters to segment messages over a stream;
TLS record headers carry a version, content type, and length; and
HTTP/2 uses frames to segment its headers and bodies.
In order to more closely match the way applications use the network,
the Transport Services API respresents data as messages. Messages
seamlessly work with transport protocols that support datagrams or
records, but can also be used over a stream by defining the
application-layer framing being used Section 4.4.
1.4. Flexibile Implementation
Sockets, for protocols like TCP, are generally limited to connecting
to a single address over a single interface. They also present a
single stream to the application. Software layers built upon sockets
often propagate this limitation of a single-address single-stream
model. The Transport Services architecture is designed to handle
multiple candidate endpoints, protocols, and paths; and support
multipath and multistreaming protocols.
Transport Services implementations are meant to be flexible at
connection establishment time, considering many different options and
trying to select the most optimal combinations (Section 4.2.1 and
Section 4.2.2). This requires applications to provide higher-level
endpoints than IP addresses, such as hostnames and URLs, which are
used by a Transport Services implementation for resolution, path
selection, and racing.
Flexibility after connection establishment is also important.
Transport protocols that can migrate between multiple network layer
interfaces need to be able to process and react to interface changes.
Protocols that support multiple application-layer streams need to
support initiating and receiving new streams using existing
connections.
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
skipping to change at page 4, line 22 skipping to change at page 7, line 24
interface between applications and transports in a way that allows interface between applications and transports in a way that allows
the transport layer to evolve and improve without fundamentally the transport layer to evolve and improve without fundamentally
changing the contract with the application. This requires a careful changing the contract with the application. This requires a careful
consideration of how to expose the capabilities of protocols. consideration of how to expose the capabilities of protocols.
There are several degrees in which a Transport Services system can There are several degrees in which a Transport Services system can
offer flexibility to an application: it can provide access to offer flexibility to an application: it can provide access to
multiple sets of protocols and protocol features, it can use these multiple sets of protocols and protocol features, it can use these
protocols across multiple paths that may have different performance protocols across multiple paths that may have different performance
and functional characteristics, and it can communicate with different and functional characteristics, and it can communicate with different
Remote Endpoints to optimize performance. Beyond these, if the API Remote Endpoints to optimize performance, robustness to failure, or
for the system remains the same over time, new protocols and features some other metric. Beyond these, if the API for the system remains
may be added to the system's implementation without requiring changes the same over time, new protocols and features may be added to the
in applications for adoption. system's implementation without requiring changes in applications for
adoption.
The following considerations were used in the design of this The following considerations were used in the design of this
architecture. architecture.
3.1. Common APIs for Common Features 3.1. Common APIs for Common Features
Functionality that is common across multiple transport protocols Functionality that is common across multiple transport protocols
should be accessible through a unified set of API calls. An should be accessible through a unified set of API calls. An
application should be able to implement logic for its basic use of application should be able to implement logic for its basic use of
transport networking (establishing the transport, and sending and transport networking (establishing the transport, and sending and
receiving data) once, and expect that implementation to continue to receiving data) once, and expect that implementation to continue to
function as the transports change. function as the transports change.
Any Transport Services API must allow access to the distilled minimal Any Transport Services API must allow access to the distilled minimal
set of features offered by transport protocols set of features offered by transport protocols
[I-D.ietf-taps-minset]. [I-D.ietf-taps-minset].
3.2. Access to Specialized Features 3.2. Access to Specialized Features
Since applications will often need to control fine-grained details of There are applications that will need to control fine-grained details
transport protocols to optimize their behavior and ensure of transport protocols to optimize their behavior and ensure
compatibility with remote peers, a Transport Services system also compatibility with remote peers,. A Transport Services system will
needs to allow more specialized protocol features to be used. The therefore also needs to allow more specialized protocol features to
interface for these specialized options should be exposed differently be used. The interface for these specialized options should be
from the common options to ensure flexibility. exposed differently from the common options to ensure flexibility.
A specialized feature may be required by an application only when A specialized feature could be required by an application only when
using a specific protocol, and not when using others. For example, using a specific protocol, and not when using others. For example,
if an application is using UDP, it may require control over the if an application is using UDP, it could require control over the
checksum or fragmentation behavior for UDP; if it used a protocol to checksum or fragmentation behavior for UDP; if it used a protocol to
frame its data over a byte stream like TCP, it would not need these frame its data over a byte stream like TCP, it would not need these
options. In such cases, the API should expose the features in such a options. In such cases, the API should expose the features in such a
way that they take effect when a particular protocol is selected, but way that they take effect when a particular protocol is selected, but
do not imply that only that protocol may be used if there are do not imply that only that protocol could be used if there are
equivalent options. equivalent options.
Other specialized features, however, may be strictly required by an Other specialized features, however, may be strictly required by an
application and thus constrain the set of protocols that can be used. application and thus constrain the set of protocols that can be used.
For example, if an application requires encryption of its transport For example, if an application requires encryption of its transport
data, only protocol stacks that include some transport security data, only protocol stacks that include some transport security
protocol are eligible to be used. A Transport Services API must protocol are eligible to be used. A Transport Services API must
allow applications to define such requirements and constrain the allow applications to define such requirements and constrain the
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
skipping to change at page 5, line 45 skipping to change at page 8, line 47
[I-D.ietf-taps-impl] will vary due to system-specific support and the [I-D.ietf-taps-impl] will vary due to system-specific support 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 To preserve flexibility and compatibility with future protocols, top-
protocols, top-level features in the Transport Services API should level features in the Transport Services API should avoid referencing
avoid referencing particular transport protocols. Mappings of these particular transport protocols. The mappings of these API features
API features in the Implementation document, on the other hand, must to specific implementations of each feature is explained in the
explain the ramifications of each feature on existing protocols. It [TAPS-IMPL], which also explain the implications of the feature
is expected that the Implementation document will be updated and provided by existing protocols. It is expected that this document
supplemented as new protocols and protocol features are developed. will be updated and supplemented as new protocols and protocol
features are developed.
It is important to note that neither the Transport Services API nor It is important to note that neither the Transport Services API nor
the Implementation document defines new protocols that require any the Implementation document defines new protocols that require any
changes on remote hosts. The Transport Services system must be changes to a remote host. The Transport Services system must be
deployable on one side only, as a way to allow an application to make deployable on one side only, as a way to allow an application to make
better use of available capabilities on a system and protocol better use of available capabilities on a system and protocol
features that may be supported by peers across the network. features that may be supported by peers across the network.
4. Transport Services Architecture and Concepts 4. Transport Services Architecture and Concepts
The concepts defined in this document are intended primarily for use The concepts defined in this document are intended primarily for use
in the documents and specifications that describe the Transport in the documents and specifications that describe the Transport
Services architecture and API. While the specific terminology may be Services architecture and API. While the specific terminology may be
used in some implementations, it is expected that there will remain a used in some implementations, it is expected that there will remain a
skipping to change at page 18, line 36 skipping to change at page 21, line 36
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
[I-D.ietf-taps-impl] [I-D.ietf-taps-impl]
Brunstrom, A., Pauly, T., Enghardt, T., Grinnemo, K., Brunstrom, A., Pauly, T., Enghardt, T., Grinnemo, K.,
Jones, T., Tiesel, P., Perkins, C., and M. Welzl, Jones, T., Tiesel, P., Perkins, C., and M. Welzl,
"Implementing Interfaces to Transport Services", draft- "Implementing Interfaces to Transport Services", draft-
ietf-taps-impl-00 (work in progress), May 2018. ietf-taps-impl-01 (work in progress), July 2018.
[I-D.ietf-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-ietf-taps-interface-00 (work in Services", draft-ietf-taps-interface-01 (work in
progress), April 2018. progress), July 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 End Systems", draft-ietf-taps-minset-04 (work Services for End Systems", draft-ietf-taps-minset-11 (work
in progress), June 2018. in progress), September 2018.
[I-D.ietf-taps-transport-security] [I-D.ietf-taps-transport-security]
Pauly, T., Perkins, C., Rose, K., and C. Wood, "A Survey Pauly, T., Perkins, C., Rose, K., and C. Wood, "A Survey
of Transport Security Protocols", draft-ietf-taps- of Transport Security Protocols", draft-ietf-taps-
transport-security-02 (work in progress), June 2018. 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.
skipping to change at page 19, line 43 skipping to change at page 22, line 43
[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>.
[RFC8095] Fairhurst, G., Ed., Trammell, B., Ed., and M. Kuehlewind, [RFC8095] Fairhurst, G., Ed., Trammell, B., Ed., and M. Kuehlewind,
Ed., "Services Provided by IETF Transport Protocols and Ed., "Services Provided by IETF Transport Protocols and
Congestion Control Mechanisms", RFC 8095, Congestion Control Mechanisms", RFC 8095,
DOI 10.17487/RFC8095, March 2017, DOI 10.17487/RFC8095, March 2017,
<https://www.rfc-editor.org/info/rfc8095>. <https://www.rfc-editor.org/info/rfc8095>.
[TAPS-IMPL]
Brunstrom, A., Pauly, T., Enghardt, T., Grinnemo, K.,
Jones, T., Tiesel, P., Perkins, C., and M. Welzl,
"Implementing Interfaces to Transport Services", draft-
ietf-taps-impl-01 (work in progress), July 2018.
Authors' Addresses Authors' Addresses
Tommy Pauly (editor) Tommy Pauly (editor)
Apple Inc. Apple Inc.
One Apple Park Way One Apple Park Way
Cupertino, California 95014 Cupertino, California 95014
United States of America United States of America
Email: tpauly@apple.com Email: tpauly@apple.com
Brian Trammell (editor) Brian Trammell (editor)
ETH Zurich ETH Zurich
Gloriastrasse 35 Gloriastrasse 35
8092 Zurich 8092 Zurich
Switzerland Switzerland
Email: ietf@trammell.ch Email: ietf@trammell.ch
Anna Brunstrom Anna Brunstrom
Karlstad University Karlstad University
 End of changes. 19 change blocks. 
70 lines changed or deleted 212 lines changed or added

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