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/