draft-ietf-taps-transports-03.txt | draft-ietf-taps-transports-04.txt | |||
---|---|---|---|---|
Network Working Group G. Fairhurst, Ed. | Network Working Group G. Fairhurst, Ed. | |||
Internet-Draft University of Aberdeen | Internet-Draft University of Aberdeen | |||
Intended status: Informational B. Trammell, Ed. | Intended status: Informational B. Trammell, Ed. | |||
Expires: August 31, 2015 M. Kuehlewind, Ed. | Expires: November 28, 2015 M. Kuehlewind, Ed. | |||
ETH Zurich | ETH Zurich | |||
February 27, 2015 | May 27, 2015 | |||
Services provided by IETF transport protocols and congestion control | Services provided by IETF transport protocols and congestion control | |||
mechanisms | mechanisms | |||
draft-ietf-taps-transports-03 | draft-ietf-taps-transports-04 | |||
Abstract | Abstract | |||
This document describes services provided by existing IETF protocols | This document describes services provided by existing IETF protocols | |||
and congestion control mechanisms. It is designed to help | and congestion control mechanisms. It is designed to help | |||
application and network stack programmers and to inform the work of | application and network stack programmers and to inform the work of | |||
the IETF TAPS Working Group. | the IETF TAPS Working Group. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 36 | skipping to change at page 1, line 36 | |||
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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 August 31, 2015. | This Internet-Draft will expire on November 28, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | ||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | ||||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | ||||
3. Existing Transport Protocols . . . . . . . . . . . . . . . . 4 | ||||
3.1. Transport Control Protocol (TCP) . . . . . . . . . . . . 4 | ||||
3.1.1. Protocol Description . . . . . . . . . . . . . . . . 5 | ||||
3.1.2. Interface description . . . . . . . . . . . . . . . . 6 | ||||
3.1.3. Transport Protocol Components . . . . . . . . . . . . 6 | ||||
3.2. Multipath TCP (MP-TCP) . . . . . . . . . . . . . . . . . 7 | ||||
3.3. Stream Control Transmission Protocol (SCTP) . . . . . . . 7 | ||||
3.3.1. Protocol Description . . . . . . . . . . . . . . . . 8 | ||||
3.3.2. Interface Description . . . . . . . . . . . . . . . . 10 | ||||
3.3.3. Transport Protocol Components . . . . . . . . . . . . 11 | ||||
3.4. User Datagram Protocol (UDP) . . . . . . . . . . . . . . 12 | ||||
3.4.1. Protocol Description . . . . . . . . . . . . . . . . 12 | ||||
3.4.2. Interface Description . . . . . . . . . . . . . . . . 13 | ||||
3.4.3. Transport Protocol Components . . . . . . . . . . . . 13 | ||||
3.5. Lightweight User Datagram Protocol (UDP-Lite) . . . . . . 14 | ||||
3.5.1. Protocol Description . . . . . . . . . . . . . . . . 14 | ||||
3.5.2. Interface Description . . . . . . . . . . . . . . . . 15 | ||||
3.5.3. Transport Protocol Components . . . . . . . . . . . . 15 | ||||
3.6. Datagram Congestion Control Protocol (DCCP) . . . . . . . 15 | ||||
3.6.1. Protocol Description . . . . . . . . . . . . . . . . 16 | ||||
3.6.2. Interface Description . . . . . . . . . . . . . . . . 17 | ||||
3.6.3. Transport Protocol Components . . . . . . . . . . . . 17 | ||||
3.7. Realtime Transport Protocol (RTP) . . . . . . . . . . . . 18 | ||||
3.8. NACK-Oriented Reliable Multicast (NORM) . . . . . . . . . 18 | ||||
3.8.1. Protocol Description . . . . . . . . . . . . . . . . 18 | ||||
3.8.2. Interface Description . . . . . . . . . . . . . . . . 19 | ||||
3.8.3. Transport Protocol Components . . . . . . . . . . . . 20 | ||||
3.9. Transport Layer Security (TLS) and Datagram TLS (DTLS) as | ||||
a pseudotransport . . . . . . . . . . . . . . . . . . . . 20 | ||||
3.9.1. Protocol Description . . . . . . . . . . . . . . . . 21 | ||||
3.9.2. Interface Description . . . . . . . . . . . . . . . . 21 | ||||
3.9.3. Transport Protocol Components . . . . . . . . . . . . 21 | ||||
3.10. Hypertext Transport Protocol (HTTP) over TCP as a | ||||
pseudotransport . . . . . . . . . . . . . . . . . . . . . 21 | ||||
3.10.1. Protocol Description . . . . . . . . . . . . . . . . 21 | ||||
3.10.2. Interface Description . . . . . . . . . . . . . . . 22 | ||||
3.10.3. Transport Protocol Components . . . . . . . . . . . 23 | ||||
3.11. WebSockets . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
3.11.1. Protocol Description . . . . . . . . . . . . . . . . 23 | ||||
3.11.2. Interface Description . . . . . . . . . . . . . . . 24 | ||||
3.11.3. Transport Protocol Components . . . . . . . . . . . 24 | ||||
4. Transport Service Features . . . . . . . . . . . . . . . . . 24 | ||||
4.1. Complete Protocol Feature Matrix . . . . . . . . . . . . 26 | ||||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | ||||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | ||||
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
9.1. Normative References . . . . . . . . . . . . . . . . . . 28 | ||||
9.2. Informative References . . . . . . . . . . . . . . . . . 29 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
1. Introduction | 1. Introduction | |||
Most Internet applications make use of the Transport Services | Most Internet applications make use of the Transport Services | |||
provided by TCP (a reliable, in-order stream protocol) or UDP (an | provided by TCP (a reliable, in-order stream protocol) or UDP (an | |||
unreliable datagram protocol). We use the term "Transport Service" | unreliable datagram protocol). We use the term "Transport Service" | |||
to mean the end-to-end service provided to an application by the | to mean the end-to-end service provided to an application by the | |||
transport layer. That service can only be provided correctly if | transport layer. That service can only be provided correctly if | |||
information about the intended usage is supplied from the | information about the intended usage is supplied from the | |||
application. The application may determine this information at | application. The application may determine this information at | |||
design time, compile time, or run time, and may include guidance on | design time, compile time, or run time, and may include guidance on | |||
whether a feature is required, a preference by the application, or | whether a feature is required, a preference by the application, or | |||
something in between. Examples of features of Transport Services are | something in between. Examples of features of Transport Services are | |||
reliable delivery, ordered delivery, content privacy to in-path | reliable delivery, ordered delivery, content privacy to in-path | |||
devices, integrity protection, and minimal latency. | devices, integrity protection, and minimal latency. | |||
The IETF has defined a wide variety of transport protocols beyond TCP | The IETF has defined a wide variety of transport protocols beyond TCP | |||
and UDP, including TCP, SCTP, DCCP, MP-TCP, and UDP-Lite. Transport | and UDP, including SCTP, DCCP, MP-TCP, and UDP-Lite. Transport | |||
services may be provided directly by these transport protocols, or | services may be provided directly by these transport protocols, or | |||
layered on top of them using protocols such as WebSockets (which runs | layered on top of them using protocols such as WebSockets (which runs | |||
over TCP) or RTP (over TCP or UDP). Services built on top of UDP or | over TCP), RTP (over TCP or UDP) or WebRTC data channels (which run | |||
UDP-Lite typically also need to specify additional mechanisms, | over SCTP over DTLS over UDP or TCP). Services built on top of UDP | |||
or UDP-Lite typically also need to specify additional mechanisms, | ||||
including a congestion control mechanism (such as a windowed | including a congestion control mechanism (such as a windowed | |||
congestion control, TFRC or LEDBAT congestion control mechanism). | congestion control, TFRC or LEDBAT congestion control mechanism). | |||
This extends the set of available Transport Services beyond those | This extends the set of available Transport Services beyond those | |||
provided to applications by TCP and UDP. | provided to applications by TCP and UDP. | |||
Transport protocols can also be differentiated by the features of the | Transport protocols can also be differentiated by the features of the | |||
services they provide: for instance, SCTP offers a message-based | services they provide: for instance, SCTP offers a message-based | |||
service that does not suffer head-of-line blocking when used with | service providing full or partial reliability and allowing to | |||
multiple stream, because it can accept blocks of data out of order, | minimize the head of line blocking due to the support of unordered | |||
UDP-Lite provides partial integrity protection, and LEDBAT can | and unordered message delivery within multiple streams, UDP-Lite | |||
provide low-priority "scavenger" communication. | provides partial integrity protection, and LEDBAT can provide low- | |||
priority "scavenger" communication. | ||||
2. Terminology | 2. Terminology | |||
The following terms are defined throughout this document, and in | The following terms are defined throughout this document, and in | |||
subsequent documents produced by TAPS describing the composition and | subsequent documents produced by TAPS describing the composition and | |||
decomposition of transport services. | decomposition of transport services. | |||
[NOTE: The terminology below was presented at the TAPS WG meeting in | ||||
Honolulu. While the factoring of the terminology seems | ||||
uncontroversial, there may be some entities which still require names | ||||
(e.g. information about the interface between the transport and lower | ||||
layers which could lead to the availability or unavailability of | ||||
certain transport protocol features). Comments are welcome via the | ||||
TAPS mailing list.] | ||||
Transport Service Feature: a specific end-to-end feature that a | Transport Service Feature: a specific end-to-end feature that a | |||
transport service provides to its clients. Examples include | transport service provides to its clients. Examples include | |||
confidentiality, reliable delivery, ordered delivery, message- | confidentiality, reliable delivery, ordered delivery, message- | |||
versus-stream orientation, etc. | versus-stream orientation, etc. | |||
Transport Service: a set of transport service features, without an | Transport Service: a set of transport service features, without an | |||
association to any given framing protocol, which provides a | association to any given framing protocol, which provides a | |||
complete service to an application. | complete service to an application. | |||
Transport Protocol: an implementation that provides one or more | Transport Protocol: an implementation that provides one or more | |||
skipping to change at page 6, line 23 | skipping to change at page 7, line 23 | |||
[EDITOR'S NOTE: discussion of how to map this to features and TAPS: | [EDITOR'S NOTE: discussion of how to map this to features and TAPS: | |||
what does the higher layer need to decide? what can the transport | what does the higher layer need to decide? what can the transport | |||
layer decide based on global settings? what must the transport layer | layer decide based on global settings? what must the transport layer | |||
decide based on network characteristics?] | decide based on network characteristics?] | |||
3.2. Multipath TCP (MP-TCP) | 3.2. Multipath TCP (MP-TCP) | |||
[EDITOR'S NOTE: a few sentences describing Multipath TCP [RFC6824] go | [EDITOR'S NOTE: a few sentences describing Multipath TCP [RFC6824] go | |||
here. Note that this adds transport-layer multihoming to the | here. Note that this adds transport-layer multihoming to the | |||
components TCP provides] | components TCP provides. Simone Ferlin-Oliveira will contribute text | |||
for this section.] | ||||
3.3. Stream Control Transmission Protocol (SCTP) | 3.3. Stream Control Transmission Protocol (SCTP) | |||
SCTP is a message oriented standards track transport protocol and the | SCTP is a message oriented standards track transport protocol and the | |||
base protocol is specified in [RFC4960]. It supports multi-homing to | base protocol is specified in [RFC4960]. It supports multi-homing to | |||
handle path failures. An SCTP association has multiple | handle path failures. An SCTP association has multiple | |||
unidirectional streams in each direction and provides in-sequence | unidirectional streams in each direction and provides in-sequence | |||
delivery of user messages only within each stream. This allows to | delivery of user messages only within each stream. This allows to | |||
minimize head of line blocking. SCTP is extensible and the currently | minimize head of line blocking. SCTP is extensible and the currently | |||
defined extensions include mechanisms for dynamic re-configurations | defined extensions include mechanisms for dynamic re-configurations | |||
skipping to change at page 7, line 22 | skipping to change at page 8, line 27 | |||
SCTP has been designed with extensibility in mind. Each SCTP packet | SCTP has been designed with extensibility in mind. Each SCTP packet | |||
starts with a single common header containing the port numbers, a | starts with a single common header containing the port numbers, a | |||
verification tag and the CRC32c checksum. This common header is | verification tag and the CRC32c checksum. This common header is | |||
followed by a sequence of chunks. Each chunk consists of a type | followed by a sequence of chunks. Each chunk consists of a type | |||
field, flags, a length field and a value. [RFC4960] defines how a | field, flags, a length field and a value. [RFC4960] defines how a | |||
receiver processes chunks with an unknown chunk type. The support of | receiver processes chunks with an unknown chunk type. The support of | |||
extensions can be negotiated during the SCTP handshake. | extensions can be negotiated during the SCTP handshake. | |||
SCTP provides a message-oriented service. Multiple small user | SCTP provides a message-oriented service. Multiple small user | |||
messages can be bundled into a single SCTP packet to improve the | messages can be bundled into a single SCTP packet to improve the | |||
efficiency. User messages which would result in IP packets larger | efficiency. For example, this bundling may be done by delaying user | |||
than the MTU will be fragmented at the sender side and reassembled at | messages at the sender side similar to the Nagle algorithm used by | |||
the receiver side. There is no protocol limit on the user message | TCP. User messages which would result in IP packets larger than the | |||
size. [RFC4821] defines a method to perform packetization layer path | MTU will be fragmented at the sender side and reassembled at the | |||
MTU discovery with probe packets using the padding chunks defined the | receiver side. There is no protocol limit on the user message size. | |||
[RFC4820]. | ICMP-based path MTU discovery as specified for IPv4 in [RFC1191] and | |||
for IPv6 in [RFC1981] as well as packetization layer path MTU | ||||
discovery as specified in [RFC4821] with probe packets using the | ||||
padding chunks defined the [RFC4820] are supported. | ||||
[RFC4960] specifies a TCP friendly congestion control to protect the | [RFC4960] specifies a TCP friendly congestion control to protect the | |||
network against overload. SCTP also uses a sliding window flow | network against overload. SCTP also uses a sliding window flow | |||
control to protect receivers against overflow. | control to protect receivers against overflow. | |||
Each SCTP association has between 1 and 65536 uni-directional streams | Each SCTP association has between 1 and 65536 uni-directional streams | |||
in each direction. The number of streams can be different in each | in each direction. The number of streams can be different in each | |||
direction. Every user-message is sent on a particular stream. User | direction. Every user-message is sent on a particular stream. User | |||
messages can be sent ordered or un-ordered upon request by the upper | messages can be sent un-ordered or ordered upon request by the upper | |||
layer. Only all ordered messages sent on the same stream are | layer. Un-ordered messages can be delivered as soon as they are | |||
delivered at the receiver in the same order as sent by the sender. | completely received. Only all ordered messages sent on the same | |||
For user messages not requiring fragmentation, this minimises head of | stream are delivered at the receiver in the same order as sent by the | |||
line blocking. The base protocol defined in [RFC4960] doesn't allow | sender. For user messages not requiring fragmentation, this | |||
interleaving of user-messages, which results in sending a large | minimises head of line blocking. The base protocol defined in | |||
message on one stream can block the sending of user messages on other | [RFC4960] doesn't allow interleaving of user-messages, which results | |||
streams. [I-D.ietf-tsvwg-sctp-ndata] overcomes this limitation and | in sending a large message on one stream can block the sending of | |||
also allows to specify a scheduler for the sender side streams | user messages on other streams. [I-D.ietf-tsvwg-sctp-ndata] | |||
selection. The stream re-configuration extension defined in | overcomes this limitation. Furthermore, [I-D.ietf-tsvwg-sctp-ndata] | |||
[RFC6525] allows to reset streams during the lifetime of an | specifies multiple algorithms for the sender side selection of which | |||
association and to increase the number of streams, if the number of | streams to send data from supporting a variety of scheduling | |||
streams negotiated in the SCTP handshake is not sufficient. | algorithms including priority based ones. The stream re- | |||
configuration extension defined in [RFC6525] allows to reset streams | ||||
during the lifetime of an association and to increase the number of | ||||
streams, if the number of streams negotiated in the SCTP handshake is | ||||
not sufficient. | ||||
According to [RFC4960], each user message sent is either delivered to | According to [RFC4960], each user message sent is either delivered to | |||
the receiver or, in case of excessive retransmissions, the | the receiver or, in case of excessive retransmissions, the | |||
association is terminated in a non-graceful way, similar to the TCP | association is terminated in a non-graceful way, similar to the TCP | |||
behaviour. In addition to this reliable transfer, the partial | behaviour. In addition to this reliable transfer, the partial | |||
reliability extension defined in [RFC3758] allows the sender to | reliability extension defined in [RFC3758] allows the sender to | |||
abandon user messages. The application can specify the policy for | abandon user messages. The application can specify the policy for | |||
abandoning user messages. Examples for these policies include: | abandoning user messages. Examples for these policies include: | |||
o Limiting the time a user message is dealt with by the sender. | o Limiting the time a user message is dealt with by the sender. | |||
o Limiting the number of retransmissions for each fragment of a user | o Limiting the number of retransmissions for each fragment of a user | |||
message. | message. If the number of retransmissions is limited to 0, one | |||
gets a service similar to UDP. | ||||
o Abandoning messages of lower priority in case of a send buffer | o Abandoning messages of lower priority in case of a send buffer | |||
shortage. | shortage. | |||
SCTP supports multi-homing. Each SCTP end-point uses a list of IP- | SCTP supports multi-homing. Each SCTP end-point uses a list of IP- | |||
addresses and a single port number. These addresses can be any | addresses and a single port number. These addresses can be any | |||
mixture of IPv4 and IPv6 addresses. These addresses are negotiated | mixture of IPv4 and IPv6 addresses. These addresses are negotiated | |||
during the handshake and the address re-configuration extension | during the handshake and the address re-configuration extension | |||
specified in [RFC5061] can be used to change these addresses during | specified in [RFC5061] in combination with [RFC4895] can be used to | |||
the livetime of an SCTP association. This allows for transport layer | change these addresses in an authenticated way during the livetime of | |||
mobility. Multiple addresses are used for improved resilience. If a | an SCTP association. This allows for transport layer mobility. | |||
remote address becomes unreachable, the traffic is switched over to a | Multiple addresses are used for improved resilience. If a remote | |||
address becomes unreachable, the traffic is switched over to a | ||||
reachable one, if one exists. Each SCTP end-point supervises | reachable one, if one exists. Each SCTP end-point supervises | |||
continuously the reachability of all peer addresses using a heartbeat | continuously the reachability of all peer addresses using a heartbeat | |||
mechanism. | mechanism. | |||
For securing user messages, the use of TLS over SCTP has been | For securing user messages, the use of TLS over SCTP has been | |||
specified in [RFC3436]. However, this solution does not support all | specified in [RFC3436]. However, this solution does not support all | |||
services provided by SCTP (for example un-ordered delivery or partial | services provided by SCTP (for example un-ordered delivery or partial | |||
reliability), and therefore the use of DTLS over SCTP has been | reliability), and therefore the use of DTLS over SCTP has been | |||
specified in [RFC6083] to overcome these limitations. When using | specified in [RFC6083] to overcome these limitations. When using | |||
DTLS over SCTP, the application can use almost all services provided | DTLS over SCTP, the application can use almost all services provided | |||
by SCTP. | by SCTP. | |||
For legacy NAT traversal, [RFC6951] defines the UDP encapsulation of | [I-D.ietf-tsvwg-natsupp] defines a methods for end-hosts and | |||
middleboxes to provide for NAT support for SCTP over IPv4. For | ||||
legacy NAT traversal, [RFC6951] defines the UDP encapsulation of | ||||
SCTP-packets. Alternatively, SCTP packets can be encapsulated in | SCTP-packets. Alternatively, SCTP packets can be encapsulated in | |||
DTLS packets as specified in [I-D.ietf-tsvwg-sctp-dtls-encaps]. The | DTLS packets as specified in [I-D.ietf-tsvwg-sctp-dtls-encaps]. The | |||
latter encapsulation is used with in the WebRTC context. | latter encapsulation is used with in the WebRTC context. | |||
Having a well defined API is also a feature provided by SCTP as | Having a well defined API is also a feature provided by SCTP as | |||
described in the next subsection. | described in the next subsection. | |||
3.3.2. Interface Description | 3.3.2. Interface Description | |||
[RFC4960] defines an abstract API for the base protocol. An | [RFC4960] defines an abstract API for the base protocol. An | |||
skipping to change at page 10, line 29 | skipping to change at page 11, line 46 | |||
o connection setup with feature negotiation and application-to-port | o connection setup with feature negotiation and application-to-port | |||
mapping | mapping | |||
o port multiplexing | o port multiplexing | |||
o reliable or partially reliable delivery | o reliable or partially reliable delivery | |||
o ordered and unordered delivery within a stream | o ordered and unordered delivery within a stream | |||
o support for multiple prioritised streams | o support for multiple concurrent streams | |||
o flow control (slow receiver function) | o support for stream scheduling prioritization | |||
o message-oriented delivery | o flow control | |||
o message-oriented delivery | ||||
o congestion control | o congestion control | |||
o application PDU bundling | o user message bundling | |||
o application PDU fragmentation and reassembly | o user message fragmentation and reassembly | |||
o integrity check | o strong error detection (CRC32C) | |||
o transport layer multihoming for resilience | o transport layer multihoming for resilience | |||
o transport layer mobility | o transport layer mobility | |||
[EDITOR'S NOTE: update this list.] | [EDITOR'S NOTE: update this list.] | |||
3.4. User Datagram Protocol (UDP) | 3.4. User Datagram Protocol (UDP) | |||
The User Datagram Protocol (UDP) [RFC0768] [RFC2460] is an IETF | The User Datagram Protocol (UDP) [RFC0768] [RFC2460] is an IETF | |||
standards track transport protocol. It provides a uni-directional, | standards track transport protocol. It provides a uni-directional, | |||
datagram protocol which preserves message boundaries. It provides | datagram protocol which preserves message boundaries. It provides | |||
none of the following transport features: error correction, | none of the following transport features: error correction, | |||
congestion control, or flow control. It can be used to send | congestion control, or flow control. It can be used to send | |||
broadcast datagrams (IPv4) or multicast datagrams (IPv4 and IPv6), in | broadcast datagrams (IPv4) or multicast datagrams (IPv4 and IPv6), in | |||
addition to unicast (and anycast) datagrams. IETF guidance on the | addition to unicast (and anycast) datagrams. IETF guidance on the | |||
use of UDP is provided in[RFC5405]. UDP is widely implemented and | use of UDP is provided in[RFC5405]. UDP is widely implemented and | |||
widely used by common applications, especially DNS. | widely used by common applications, especially DNS. | |||
[EDITOR'S NOTE: Kevin Fall signed up as a contributor for this | ||||
section.] | ||||
3.4.1. Protocol Description | 3.4.1. Protocol Description | |||
UDP is a connection-less protocol which maintains message boundaries, | UDP is a connection-less protocol which maintains message boundaries, | |||
with no connection setup or feature negotiation. The protocol uses | with no connection setup or feature negotiation. The protocol uses | |||
independent messages, ordinarily called datagrams. The lack of error | independent messages, ordinarily called datagrams. The lack of error | |||
control and flow control implies messages may be damaged, re-ordered, | control and flow control implies messages may be damaged, re-ordered, | |||
lost, or duplicated in transit. A receiving application unable to | lost, or duplicated in transit. A receiving application unable to | |||
run sufficiently fast or frequently may miss messages. The lack of | run sufficiently fast or frequently may miss messages. The lack of | |||
congestion handling implies UDP traffic may cause the loss of | congestion handling implies UDP traffic may cause the loss of | |||
messages from other protocols (e.g., TCP) when sharing the same | messages from other protocols (e.g., TCP) when sharing the same | |||
skipping to change at page 13, line 13 | skipping to change at page 14, line 18 | |||
o checksum optional | o checksum optional | |||
3.5. Lightweight User Datagram Protocol (UDP-Lite) | 3.5. Lightweight User Datagram Protocol (UDP-Lite) | |||
The Lightweight User Datagram Protocol (UDP-Lite) [RFC3828] is an | The Lightweight User Datagram Protocol (UDP-Lite) [RFC3828] is an | |||
IETF standards track transport protocol. UDP-Lite provides a | IETF standards track transport protocol. UDP-Lite provides a | |||
bidirectional set of logical unicast or multicast message streams | bidirectional set of logical unicast or multicast message streams | |||
over a datagram protocol. IETF guidance on the use of UDP-Lite is | over a datagram protocol. IETF guidance on the use of UDP-Lite is | |||
provided in [RFC5405]. | provided in [RFC5405]. | |||
[EDITOR'S NOTE: Gorry Fairhurst signed up as a contributor for this | ||||
section.] | ||||
3.5.1. Protocol Description | 3.5.1. Protocol Description | |||
UDP-Lite is a connection-less datagram protocol, with no connection | UDP-Lite is a connection-less datagram protocol, with no connection | |||
setup or feature negotiation. The protocol use messages, rather than | setup or feature negotiation. The protocol use messages, rather than | |||
a byte-stream. Each stream of messages is independently managed, | a byte-stream. Each stream of messages is independently managed, | |||
therefore retransmission does not hold back data sent using other | therefore retransmission does not hold back data sent using other | |||
logical streams. | logical streams. | |||
It provides multiplexing to multiple sockets on each host using port | It provides multiplexing to multiple sockets on each host using port | |||
numbers. An active UDP-Lite session is identified by its four-tuple | numbers. An active UDP-Lite session is identified by its four-tuple | |||
skipping to change at page 17, line 16 | skipping to change at page 18, line 18 | |||
3.7. Realtime Transport Protocol (RTP) | 3.7. Realtime Transport Protocol (RTP) | |||
RTP provides an end-to-end network transport service, suitable for | RTP provides an end-to-end network transport service, suitable for | |||
applications transmitting real-time data, such as audio, video or | applications transmitting real-time data, such as audio, video or | |||
data, over multicast or unicast network services, including TCP, UDP, | data, over multicast or unicast network services, including TCP, UDP, | |||
UDP-Lite, DCCP. | UDP-Lite, DCCP. | |||
[EDITOR'S NOTE: Varun Singh signed up as contributor for this | [EDITOR'S NOTE: Varun Singh signed up as contributor for this | |||
section.] | section.] | |||
3.8. Transport Layer Security (TLS) and Datagram TLS (DTLS) as a | 3.8. NACK-Oriented Reliable Multicast (NORM) | |||
pseudo transport | ||||
[NOTE: A few words on TLS [RFC5246] and DTLS [RFC6347] here, and how | NORM is an IETF standards track protocol specified in [RFC5740]. The | |||
they get used by other protocols to meet security goals as an add-on | protocol was designed to support reliable bulk data dissemination to | |||
interlayer above transport.] | receiver groups using IP Multicast but also provides for point-to- | |||
point unicast operation. Its support for bulk data dissemination | ||||
includes discrete file or computer memory-based "objects" as well as | ||||
byte- and message-streaming. NORM is designed to incorporate packet | ||||
erasure coding as an inherent part of its selective ARQ in response | ||||
to receiver negative acknowledgements. The packet erasure coding can | ||||
also be proactively applied for forward protection from packet loss. | ||||
NORM transmissions are governed by TCP-friendly congestion control. | ||||
NORM's reliability, congestion control, and flow control mechanism | ||||
are distinct components and can be separately controlled to meet | ||||
different application needs. | ||||
3.8.1. Protocol Description | 3.8.1. Protocol Description | |||
[EDITOR'S NOTE: needs to be more clear about the application of FEC | ||||
and packet erasure coding; expand ARQ.] | ||||
The NORM protocol is encapsulated in UDP datagrams and thus provides | ||||
multiplexing for multiple sockets on hosts using port numbers. For | ||||
purposes of loosely coordinated IP Multicast, NORM is not strictly | ||||
connection-oriented although per-sender state is maintained by | ||||
receivers for protocol operation. [RFC5740] does not specify a | ||||
handshake protocol for connection establishment and separate session | ||||
initiation can be used to coordinate port numbers. However, in-band | ||||
"client-server" style connection establishment can be accomplished | ||||
with the NORM congestion control signaling messages using port | ||||
binding techniques like those for TCP client-server connections. | ||||
NORM supports bulk "objects" such as file or in-memory content but | ||||
also can treat a stream of data as a logical bulk object for purposes | ||||
of packet erasure coding. In the case of stream transport, NORM can | ||||
support either byte streams or message streams where application- | ||||
defined message boundary information is carried in the NORM protocol | ||||
messages. This allows the receiver(s) to join/re-join and recover | ||||
message boundaries mid-stream as needed. Application content is | ||||
carried and identified by the NORM protocol with encoding symbol | ||||
identifiers depending upon the Forward Error Correction (FEC) Scheme | ||||
[RFC3452] configured. NORM uses NACK-based selective ARQ to reliably | ||||
deliver the application content to the receiver(s). NORM proactively | ||||
measures round-trip timing information to scale ARQ timers | ||||
appropriately and to support congestion control. For multicast | ||||
operation, timer-based feedback suppression is uses to achieve group | ||||
size scaling with low feedback traffic levels. The feedback | ||||
suppression is not applied for unicast operation. | ||||
NORM uses rate-based congestion control based upon the TCP-Friendly | ||||
Rate Control (TFRC) [RFC4324] principles that are also used in DCCP | ||||
[RFC4340]. NORM uses control messages to measure RTT and collect | ||||
congestion event (e..g, loss event, ECN event, etc) information from | ||||
the receiver(s) to support dynamic rate control adjustment. The TCP- | ||||
Friendly Multicast Congestion Control (TFMCC) [RFC4654] used provides | ||||
some extra features to support multicast but is functionally | ||||
equivalent to TFRC in the unicast case. | ||||
NORM's reliability mechanism is decoupled from congestion control. | ||||
This allows alternative arrangements of transport services to be | ||||
invoked. For example, fixed-rate reliable delivery can be supported | ||||
or unreliable (but optionally "better than best effort" via packet | ||||
erasure coding) delivery with rate-control per TFRC can be achieved. | ||||
Additionally, alternative congestion control techniques may be | ||||
applied. For example, TFRC rate control with congestion event | ||||
detection based on ECN for links with high packet loss (e.g., | ||||
wireless) has been implemented and demonstrated with NORM. | ||||
While NORM is NACK-based for reliability transfer, it also supports a | ||||
positive acknowledgment (ACK) mechanism that can be used for receiver | ||||
flow control. Again, since this mechanism is decoupled from the | ||||
reliability and congestion control, applications that have different | ||||
needs in this aspect can use the protocol differently. One example | ||||
is the use of NORM for quasi-reliable delivery where timely delivery | ||||
of newer content may be favored over completely reliable delivery of | ||||
older content within buffering and RTT constraints. | ||||
3.8.2. Interface Description | 3.8.2. Interface Description | |||
The NORM specification does not describe a specific application | ||||
programming interface (API) to control protocol operation. A freely- | ||||
available, open source reference implementation of NORM is available | ||||
at https://www.nrl.navy.mil/itd/ncs/products/norm, and a documented | ||||
API is provided for this implementation. While a sockets-like API is | ||||
not currently documented, the existing API supports the necessary | ||||
functions for that to be implemented. | ||||
3.8.3. Transport Protocol Components | 3.8.3. Transport Protocol Components | |||
3.9. Hypertext Transport Protocol (HTTP) as a pseudotransport | The transport protocol components provided by NORM are: | |||
[RFC3205] | o unicast | |||
[EDITOR'S NOTE: No identified contributor for this section yet.] | o multicast | |||
o port multiplexing (UDP ports) | ||||
o reliable delivery | ||||
o ordered delivery for each byte or message stream | ||||
o unordered delivery of in-memory data or file bulk content objects | ||||
o error detection (UDP checksum) | ||||
o segmentation | ||||
o stream-oriented delivery in a single stream | ||||
o object-oriented delivery of discrete data or file items | ||||
o data bundling (Nagle's algorithm) | ||||
o flow control (timer-based and/or ack-based) | ||||
o congestion control | ||||
o packet erasure coding (both proactively and as part of ARQ) | ||||
3.9. Transport Layer Security (TLS) and Datagram TLS (DTLS) as a | ||||
pseudotransport | ||||
[NOTE: A few words on TLS [RFC5246] and DTLS [RFC6347] here, and how | ||||
they get used by other protocols to meet security goals as an add-on | ||||
interlayer above transport. Kevin Fall will contribute text to this | ||||
section.] | ||||
3.9.1. Protocol Description | 3.9.1. Protocol Description | |||
3.9.2. Interface Description | 3.9.2. Interface Description | |||
3.9.3. Transport Protocol Components | 3.9.3. Transport Protocol Components | |||
3.10. WebSockets | 3.10. Hypertext Transport Protocol (HTTP) over TCP as a pseudotransport | |||
[RFC6455] | Hypertext Transfer Protocol (HTTP) is an application-level protocol | |||
widely used on the Internet. Version 1.1 of the protocol is | ||||
specified in [RFC7230] [RFC7231] [RFC7232] [RFC7233] [RFC7234] | ||||
[RFC7235], and version 2 in [RFC7540]. Furthermore, HTTP is used as | ||||
a substrate for other application-layer protocols. There are various | ||||
reasons for this practice listed in [RFC3205]; these include being a | ||||
well-known and well-understood protocol, reusability of existing | ||||
servers and client libraries, easy use of existing security | ||||
mechanisms such as HTTP digest authentication [RFC2617] and TLS | ||||
[RFC5246], the ability of HTTP to traverse firewalls which makes it | ||||
work with a lot of infrastructure, and cases where a application | ||||
server often needs to support HTTP anyway. | ||||
[EDITOR'S NOTE: No identified contributor for this section yet.] | Depending on application's needs, the use of HTTP as a substrate | |||
protocol may add complexity and overhead in comparison to a special- | ||||
purpose protocol (e.g. HTTP headers, suitability of the HTTP | ||||
security model etc.). [RFC3205] address this issues and provides | ||||
some guidelines and concerns about the use of HTTP standard port 80 | ||||
and 443, the use of HTTP URL scheme and interaction with existing | ||||
firewalls, proxies and NATs. Also, though not strictly bound to TCP, | ||||
HTTP is almost exclusively run over TCP, and therefore inherits its | ||||
properties when used in this way. This can have disadvantages, when | ||||
the application does not naturally require single-streamed, reliable | ||||
transport. | ||||
3.10.1. Protocol Description | 3.10.1. Protocol Description | |||
Hypertext Transfer Protocol (HTTP) is a request/response protocol. A | ||||
client sends a request containing a request method, URI and protocol | ||||
version followed by a MIME-like message (see [RFC7231] for the | ||||
differences between an HTTP object and a MIME message), containing | ||||
information about the client and request modifiers. The message can | ||||
contain a message body carrying application data as well. The server | ||||
responds with a status or error code followed by a MIME-like message | ||||
containing information about the server and information about carried | ||||
data and it can include a message body. It is possible to specify a | ||||
data format for the message body using MIME media types [RFC2045]. | ||||
Furthermore, the protocol has numerous additional features; features | ||||
relevant to pseudotransport are described below. | ||||
Content negotiation, specified in [RFC7231], is a mechanism provided | ||||
by HTTP for selecting a representation on a requested resource. The | ||||
client and server negotiate acceptable data formats, charsets, data | ||||
encoding (e.g. data can be transferred compressed, gzip), etc. HTTP | ||||
can accommodate exchange of messages as well as data streaming (using | ||||
chunked transfer encoding [RFC7230]). It is also possible to request | ||||
a part of a resource using range requests specified in [RFC7233]. | ||||
The protocol provides powerful cache control signalling defined in | ||||
[RFC7234]. | ||||
HTTP 1.1's and HTTP 2.0's persistent connections can be use to | ||||
perform multiple request-response transactions during the life-time | ||||
of a single HTTP connection. Moreover, HTTP 2.0 connections can | ||||
multiplex many request/response pairs in parallel on a single | ||||
connection. This reduces connection establishment overhead and the | ||||
effect of TCP slow-start on each transaction, important for HTTP's | ||||
primary use case. | ||||
It is possible to combine HTTP with security mechanisms, like TLS | ||||
(denoted by HTTPS), which adds protocol properties provided by such a | ||||
mechanism (e.g. authentication, encryption, etc.). TLS's | ||||
Application-Layer Protocol Negotiation (ALPN) extension [RFC7301] can | ||||
be used for HTTP version negotiation within TLS handshake which | ||||
eliminates addition round-trip. Arbitrary cookie strings, included | ||||
as part of the MIME headers, are often used as bearer tokens in HTTP. | ||||
Application layer protocols using HTTP as substrate may use existing | ||||
method and data formats, or specify new methods and data formats. | ||||
Furthermore some protocols may not fit a request/response paradigm | ||||
and instead rely on HTTP to send messages (e.g. [RFC6546]). Because | ||||
HTTP is working in many restricted infrastructures, it is also used | ||||
to tunnel other application-layer protocols. | ||||
3.10.2. Interface Description | 3.10.2. Interface Description | |||
There are many HTTP libraries available exposing different APIs. The | ||||
APIs provide a way to specify a request by providing a URI, a method, | ||||
request modifiers and optionally a request body. For the response, | ||||
callbacks can be registered that will be invoked when the response is | ||||
received. If TLS is used, API expose a registration of callbacks in | ||||
case a server requests client authentication and when certificate | ||||
verification is needed. | ||||
World Wide Web Consortium (W3C) standardized the XMLHttpRequest API | ||||
[XHR], an API that can be use for sending HTTP/HTTPS requests and | ||||
receiving server responses. Besides XML data format, request and | ||||
response data format can also be JSON, HTML and plain text. | ||||
Specifically JavaScript and XMLHttpRequest are a ubiquitous | ||||
programming model for websites, and more general applications, where | ||||
native code is less attractive. | ||||
Representational State Transfer (REST) [REST] is another example how | ||||
applications can use HTTP as transport protocol. REST is an | ||||
architecture style for building application on the Internet. It uses | ||||
HTTP as a communication protocol. | ||||
3.10.3. Transport Protocol Components | 3.10.3. Transport Protocol Components | |||
The transport protocol components provided by HTTP, when used as a | ||||
pseudotransport over TCP, are: | ||||
o unicast | ||||
o reliable delivery | ||||
o ordered delivery | ||||
o message and stream-oriented | ||||
o object range request | ||||
o message content type negotiation | ||||
o congestion control | ||||
HTTPS (HTTP over TLS) additionally provides the following components: | ||||
o authentication (of one or both ends of a connection) | ||||
o confidentiality | ||||
o integrity protection | ||||
3.11. WebSockets | ||||
[RFC6455] | ||||
[EDITOR'S NOTE: Salvatore Loreto will contribute text for this | ||||
section.] | ||||
3.11.1. Protocol Description | ||||
3.11.2. Interface Description | ||||
3.11.3. Transport Protocol Components | ||||
4. Transport Service Features | 4. Transport Service Features | |||
The transport protocol components analyzed in this document which can | ||||
be used as a basis for defining common transport service features, | ||||
normalized and separated into categories, are as follows: | ||||
o Destination selection | ||||
* unicast | ||||
* broadcast (IPv4 only) | ||||
* multicast | ||||
* anycast | ||||
* transport layer multihoming for resilience | ||||
* transport layer mobility | ||||
* port multiplexing | ||||
* service codes | ||||
o Connection setup | ||||
* connection setup with feature negotiation and application-to- | ||||
port mapping | ||||
o Delivery | ||||
* reliable delivery | ||||
* partially reliable delivery | ||||
* unreliable delivery | ||||
* packet erasure coding | ||||
* ordered delivery | ||||
* unordered delivery | ||||
* stream-oriented delivery | ||||
* message-oriented delivery | ||||
* message fragmentation | ||||
* object-oriented delivery of discrete data or file items | ||||
* unordered delivery of in-memory data or file bulk content | ||||
objects | ||||
* object range request | ||||
* object content type negotiation | ||||
* single streaming | ||||
* multiple streaming | ||||
* stream scheduling prioritization | ||||
* segmentation | ||||
* data bundling (Nagle's algorithm) | ||||
* message bundling | ||||
o Transmission control | ||||
* timer-based rate control | ||||
* ack-based flow control | ||||
* drop notification | ||||
* packet erasure coding | ||||
* congestion control | ||||
o Integrity protection | ||||
* checksum for error detection | ||||
* partial checksum protection | ||||
* checksum optional | ||||
* cryptographic integrity protection | ||||
o Security | ||||
* authentication of one end of a connection | ||||
* authentication of both ends of a connection | ||||
* confidentiality | ||||
The next revision of this document will define transport service | ||||
features based upon this list. | ||||
[EDITOR'S NOTE: this section will drawn from the candidate features | [EDITOR'S NOTE: this section will drawn from the candidate features | |||
provided by protocol components in the previous section - please | provided by protocol components in the previous section - please | |||
discuss on taps@ietf.org list] | discuss on taps@ietf.org list] | |||
4.1. Complete Protocol Feature Matrix | 4.1. Complete Protocol Feature Matrix | |||
[EDITOR'S NOTE: Dave Thaler has signed up as a contributor for this | [EDITOR'S NOTE: Dave Thaler has signed up as a contributor for this | |||
section. Michael Welzl also has a beginning of a matrix which could | section. Michael Welzl also has a beginning of a matrix which could | |||
be useful here.] | be useful here.] | |||
skipping to change at page 20, line 32 | skipping to change at page 28, line 32 | |||
[Editor's Note: turn this into a real contributors section with | [Editor's Note: turn this into a real contributors section with | |||
addresses once we figure out how to trick the toolchain into doing | addresses once we figure out how to trick the toolchain into doing | |||
so] | so] | |||
o Section 3.4 on UDP was contributed by Kevin Fall (kfall@kfall.com) | o Section 3.4 on UDP was contributed by Kevin Fall (kfall@kfall.com) | |||
o Section 3.3 on SCTP was contributed by Michael Tuexen (tuexen@fh- | o Section 3.3 on SCTP was contributed by Michael Tuexen (tuexen@fh- | |||
muenster.de) | muenster.de) | |||
o Section 3.8 on NORM was contributed by Brian Adamson | ||||
(brian.adamson@nrl.navy.mil) | ||||
o Section 3.10 on HTTP was contributed by Dragana Damjanovic | ||||
(ddamjanovic@mozilla.com) | ||||
8. Acknowledgments | 8. Acknowledgments | |||
This work is partially supported by the European Commission under | This work is partially supported by the European Commission under | |||
grant agreement FP7-ICT-318627 mPlane; support does not imply | grant agreement FP7-ICT-318627 mPlane; support does not imply | |||
endorsement. | endorsement. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
skipping to change at page 21, line 20 | skipping to change at page 29, line 28 | |||
[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | |||
November 1990. | November 1990. | |||
[RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery | [RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery | |||
for IP version 6", RFC 1981, August 1996. | for IP version 6", RFC 1981, August 1996. | |||
[RFC2018] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP | [RFC2018] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP | |||
Selective Acknowledgment Options", RFC 2018, October 1996. | Selective Acknowledgment Options", RFC 2018, October 1996. | |||
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | ||||
Extensions (MIME) Part One: Format of Internet Message | ||||
Bodies", RFC 2045, November 1996. | ||||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, December 1998. | (IPv6) Specification", RFC 2460, December 1998. | |||
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | ||||
Leach, P., Luotonen, A., and L. Stewart, "HTTP | ||||
Authentication: Basic and Digest Access Authentication", | ||||
RFC 2617, June 1999. | ||||
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
of Explicit Congestion Notification (ECN) to IP", RFC | of Explicit Congestion Notification (ECN) to IP", RFC | |||
3168, September 2001. | 3168, September 2001. | |||
[RFC3205] Moore, K., "On the use of HTTP as a Substrate", BCP 56, | [RFC3205] Moore, K., "On the use of HTTP as a Substrate", BCP 56, | |||
RFC 3205, February 2002. | RFC 3205, February 2002. | |||
[RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's | [RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's | |||
Initial Window", RFC 3390, October 2002. | Initial Window", RFC 3390, October 2002. | |||
[RFC3436] Jungmaier, A., Rescorla, E., and M. Tuexen, "Transport | [RFC3436] Jungmaier, A., Rescorla, E., and M. Tuexen, "Transport | |||
Layer Security over Stream Control Transmission Protocol", | Layer Security over Stream Control Transmission Protocol", | |||
RFC 3436, December 2002. | RFC 3436, December 2002. | |||
[RFC3452] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L., Handley, | ||||
M., and J. Crowcroft, "Forward Error Correction (FEC) | ||||
Building Block", RFC 3452, December 2002. | ||||
[RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. | [RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. | |||
Conrad, "Stream Control Transmission Protocol (SCTP) | Conrad, "Stream Control Transmission Protocol (SCTP) | |||
Partial Reliability Extension", RFC 3758, May 2004. | Partial Reliability Extension", RFC 3758, May 2004. | |||
[RFC3828] Larzon, L-A., Degermark, M., Pink, S., Jonsson, L-E., and | [RFC3828] Larzon, L-A., Degermark, M., Pink, S., Jonsson, L-E., and | |||
G. Fairhurst, "The Lightweight User Datagram Protocol | G. Fairhurst, "The Lightweight User Datagram Protocol | |||
(UDP-Lite)", RFC 3828, July 2004. | (UDP-Lite)", RFC 3828, July 2004. | |||
[RFC4324] Royer, D., Babics, G., and S. Mansour, "Calendar Access | ||||
Protocol (CAP)", RFC 4324, December 2005. | ||||
[RFC4336] Floyd, S., Handley, M., and E. Kohler, "Problem Statement | [RFC4336] Floyd, S., Handley, M., and E. Kohler, "Problem Statement | |||
for the Datagram Congestion Control Protocol (DCCP)", RFC | for the Datagram Congestion Control Protocol (DCCP)", RFC | |||
4336, March 2006. | 4336, March 2006. | |||
[RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram | [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram | |||
Congestion Control Protocol (DCCP)", RFC 4340, March 2006. | Congestion Control Protocol (DCCP)", RFC 4340, March 2006. | |||
[RFC4341] Floyd, S. and E. Kohler, "Profile for Datagram Congestion | [RFC4341] Floyd, S. and E. Kohler, "Profile for Datagram Congestion | |||
Control Protocol (DCCP) Congestion Control ID 2: TCP-like | Control Protocol (DCCP) Congestion Control ID 2: TCP-like | |||
Congestion Control", RFC 4341, March 2006. | Congestion Control", RFC 4341, March 2006. | |||
[RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for | [RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for | |||
Datagram Congestion Control Protocol (DCCP) Congestion | Datagram Congestion Control Protocol (DCCP) Congestion | |||
Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, | Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, | |||
March 2006. | March 2006. | |||
[RFC4614] Duke, M., Braden, R., Eddy, W., and E. Blanton, "A Roadmap | [RFC4614] Duke, M., Braden, R., Eddy, W., and E. Blanton, "A Roadmap | |||
for Transmission Control Protocol (TCP) Specification | for Transmission Control Protocol (TCP) Specification | |||
Documents", RFC 4614, September 2006. | Documents", RFC 4614, September 2006. | |||
[RFC4654] Widmer, J. and M. Handley, "TCP-Friendly Multicast | ||||
Congestion Control (TFMCC): Protocol Specification", RFC | ||||
4654, August 2006. | ||||
[RFC4820] Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and | [RFC4820] Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and | |||
Parameter for the Stream Control Transmission Protocol | Parameter for the Stream Control Transmission Protocol | |||
(SCTP)", RFC 4820, March 2007. | (SCTP)", RFC 4820, March 2007. | |||
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | |||
Discovery", RFC 4821, March 2007. | Discovery", RFC 4821, March 2007. | |||
[RFC4895] Tuexen, M., Stewart, R., Lei, P., and E. Rescorla, | [RFC4895] Tuexen, M., Stewart, R., Lei, P., and E. Rescorla, | |||
"Authenticated Chunks for the Stream Control Transmission | "Authenticated Chunks for the Stream Control Transmission | |||
Protocol (SCTP)", RFC 4895, August 2007. | Protocol (SCTP)", RFC 4895, August 2007. | |||
skipping to change at page 23, line 17 | skipping to change at page 31, line 46 | |||
Middlebox Traversal", RFC 5596, September 2009. | Middlebox Traversal", RFC 5596, September 2009. | |||
[RFC5662] Shepler, S., Eisler, M., and D. Noveck, "Network File | [RFC5662] Shepler, S., Eisler, M., and D. Noveck, "Network File | |||
System (NFS) Version 4 Minor Version 1 External Data | System (NFS) Version 4 Minor Version 1 External Data | |||
Representation Standard (XDR) Description", RFC 5662, | Representation Standard (XDR) Description", RFC 5662, | |||
January 2010. | January 2010. | |||
[RFC5672] Crocker, D., "RFC 4871 DomainKeys Identified Mail (DKIM) | [RFC5672] Crocker, D., "RFC 4871 DomainKeys Identified Mail (DKIM) | |||
Signatures -- Update", RFC 5672, August 2009. | Signatures -- Update", RFC 5672, August 2009. | |||
[RFC5740] Adamson, B., Bormann, C., Handley, M., and J. Macker, | ||||
"NACK-Oriented Reliable Multicast (NORM) Transport | ||||
Protocol", RFC 5740, November 2009. | ||||
[RFC6773] Phelan, T., Fairhurst, G., and C. Perkins, "DCCP-UDP: A | [RFC6773] Phelan, T., Fairhurst, G., and C. Perkins, "DCCP-UDP: A | |||
Datagram Congestion Control Protocol UDP Encapsulation for | Datagram Congestion Control Protocol UDP Encapsulation for | |||
NAT Traversal", RFC 6773, November 2012. | NAT Traversal", RFC 6773, November 2012. | |||
[RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | |||
Authentication Option", RFC 5925, June 2010. | Authentication Option", RFC 5925, June 2010. | |||
[RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | |||
Control", RFC 5681, September 2009. | Control", RFC 5681, September 2009. | |||
skipping to change at page 23, line 38 | skipping to change at page 32, line 22 | |||
Transport Layer Security (DTLS) for Stream Control | Transport Layer Security (DTLS) for Stream Control | |||
Transmission Protocol (SCTP)", RFC 6083, January 2011. | Transmission Protocol (SCTP)", RFC 6083, January 2011. | |||
[RFC6093] Gont, F. and A. Yourtchenko, "On the Implementation of the | [RFC6093] Gont, F. and A. Yourtchenko, "On the Implementation of the | |||
TCP Urgent Mechanism", RFC 6093, January 2011. | TCP Urgent Mechanism", RFC 6093, January 2011. | |||
[RFC6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control | [RFC6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control | |||
Transmission Protocol (SCTP) Stream Reconfiguration", RFC | Transmission Protocol (SCTP) Stream Reconfiguration", RFC | |||
6525, February 2012. | 6525, February 2012. | |||
[RFC6546] Trammell, B., "Transport of Real-time Inter-network | ||||
Defense (RID) Messages over HTTP/TLS", RFC 6546, April | ||||
2012. | ||||
[RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent, | [RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent, | |||
"Computing TCP's Retransmission Timer", RFC 6298, June | "Computing TCP's Retransmission Timer", RFC 6298, June | |||
2011. | 2011. | |||
[RFC6935] Eubanks, M., Chimento, P., and M. Westerlund, "IPv6 and | [RFC6935] Eubanks, M., Chimento, P., and M. Westerlund, "IPv6 and | |||
UDP Checksums for Tunneled Packets", RFC 6935, April 2013. | UDP Checksums for Tunneled Packets", RFC 6935, April 2013. | |||
[RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | [RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | |||
for the Use of IPv6 UDP Datagrams with Zero Checksums", | for the Use of IPv6 UDP Datagrams with Zero Checksums", | |||
RFC 6936, April 2013. | RFC 6936, April 2013. | |||
skipping to change at page 24, line 27 | skipping to change at page 33, line 13 | |||
Addresses", RFC 6824, January 2013. | Addresses", RFC 6824, January 2013. | |||
[RFC6951] Tuexen, M. and R. Stewart, "UDP Encapsulation of Stream | [RFC6951] Tuexen, M. and R. Stewart, "UDP Encapsulation of Stream | |||
Control Transmission Protocol (SCTP) Packets for End-Host | Control Transmission Protocol (SCTP) Packets for End-Host | |||
to End-Host Communication", RFC 6951, May 2013. | to End-Host Communication", RFC 6951, May 2013. | |||
[RFC7053] Tuexen, M., Ruengeler, I., and R. Stewart, "SACK- | [RFC7053] Tuexen, M., Ruengeler, I., and R. Stewart, "SACK- | |||
IMMEDIATELY Extension for the Stream Control Transmission | IMMEDIATELY Extension for the Stream Control Transmission | |||
Protocol", RFC 7053, November 2013. | Protocol", RFC 7053, November 2013. | |||
[RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
(HTTP/1.1): Message Syntax and Routing", RFC 7230, June | ||||
2014. | ||||
[RFC7231] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
(HTTP/1.1): Semantics and Content", RFC 7231, June 2014. | ||||
[RFC7232] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
(HTTP/1.1): Conditional Requests", RFC 7232, June 2014. | ||||
[RFC7233] Fielding, R., Lafon, Y., and J. Reschke, "Hypertext | ||||
Transfer Protocol (HTTP/1.1): Range Requests", RFC 7233, | ||||
June 2014. | ||||
[RFC7234] Fielding, R., Nottingham, M., and J. Reschke, "Hypertext | ||||
Transfer Protocol (HTTP/1.1): Caching", RFC 7234, June | ||||
2014. | ||||
[RFC7235] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
(HTTP/1.1): Authentication", RFC 7235, June 2014. | ||||
[RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, | ||||
"Transport Layer Security (TLS) Application-Layer Protocol | ||||
Negotiation Extension", RFC 7301, July 2014. | ||||
[RFC7323] Borman, D., Braden, B., Jacobson, V., and R. | [RFC7323] Borman, D., Braden, B., Jacobson, V., and R. | |||
Scheffenegger, "TCP Extensions for High Performance", RFC | Scheffenegger, "TCP Extensions for High Performance", RFC | |||
7323, September 2014. | 7323, September 2014. | |||
[RFC7540] Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer | ||||
Protocol Version 2 (HTTP/2)", RFC 7540, May 2015. | ||||
[I-D.ietf-aqm-ecn-benefits] | [I-D.ietf-aqm-ecn-benefits] | |||
Welzl, M. and G. Fairhurst, "The Benefits and Pitfalls of | Welzl, M. and G. Fairhurst, "The Benefits and Pitfalls of | |||
using Explicit Congestion Notification (ECN)", draft-ietf- | using Explicit Congestion Notification (ECN)", draft-ietf- | |||
aqm-ecn-benefits-00 (work in progress), October 2014. | aqm-ecn-benefits-00 (work in progress), October 2014. | |||
[I-D.ietf-tsvwg-sctp-dtls-encaps] | [I-D.ietf-tsvwg-sctp-dtls-encaps] | |||
Tuexen, M., Stewart, R., Jesup, R., and S. Loreto, "DTLS | Tuexen, M., Stewart, R., Jesup, R., and S. Loreto, "DTLS | |||
Encapsulation of SCTP Packets", draft-ietf-tsvwg-sctp- | Encapsulation of SCTP Packets", draft-ietf-tsvwg-sctp- | |||
dtls-encaps-09 (work in progress), January 2015. | dtls-encaps-09 (work in progress), January 2015. | |||
[I-D.ietf-tsvwg-sctp-prpolicies] | [I-D.ietf-tsvwg-sctp-prpolicies] | |||
Tuexen, M., Seggelmann, R., Stewart, R., and S. Loreto, | Tuexen, M., Seggelmann, R., Stewart, R., and S. Loreto, | |||
"Additional Policies for the Partial Reliability Extension | "Additional Policies for the Partial Reliability Extension | |||
of the Stream Control Transmission Protocol", draft-ietf- | of the Stream Control Transmission Protocol", draft-ietf- | |||
tsvwg-sctp-prpolicies-07 (work in progress), February | tsvwg-sctp-prpolicies-07 (work in progress), February | |||
2015. | 2015. | |||
[I-D.ietf-tsvwg-sctp-ndata] | [I-D.ietf-tsvwg-sctp-ndata] | |||
Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann, | Stewart, R., Tuexen, M., Loreto, S., and R. Seggelmann, | |||
"Stream Schedulers and a New Data Chunk for the Stream | "Stream Schedulers and User Message Interleaving for the | |||
Control Transmission Protocol", draft-ietf-tsvwg-sctp- | Stream Control Transmission Protocol", draft-ietf-tsvwg- | |||
ndata-02 (work in progress), January 2015. | sctp-ndata-03 (work in progress), March 2015. | |||
[I-D.ietf-tsvwg-natsupp] | ||||
Stewart, R., Tuexen, M., and I. Ruengeler, "Stream Control | ||||
Transmission Protocol (SCTP) Network Address Translation | ||||
Support", draft-ietf-tsvwg-natsupp-07 (work in progress), | ||||
February 2015. | ||||
[XHR] van Kesteren, A., Aubourg, J., Song, J., and H. Steen, | ||||
"XMLHttpRequest working draft | ||||
(http://www.w3.org/TR/XMLHttpRequest/)", 2000. | ||||
[REST] Fielding, R., "Architectural Styles and the Design of | ||||
Network-based Software Architectures, Ph. D. (UC Irvune), | ||||
Chapter 5: Representational State Transfer", 2000. | ||||
Authors' Addresses | Authors' Addresses | |||
Godred Fairhurst (editor) | Godred Fairhurst (editor) | |||
University of Aberdeen | University of Aberdeen | |||
School of Engineering, Fraser Noble Building | School of Engineering, Fraser Noble Building | |||
Aberdeen AB24 3UE | Aberdeen AB24 3UE | |||
Email: gorry@erg.abdn.ac.uk | Email: gorry@erg.abdn.ac.uk | |||
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 | |||
Mirja Kuehlewind (editor) | Mirja Kuehlewind (editor) | |||
ETH Zurich | ETH Zurich | |||
End of changes. 50 change blocks. | ||||
73 lines changed or deleted | 537 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |