summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc5651.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc5651.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc5651.txt')
-rw-r--r--doc/rfc/rfc5651.txt1907
1 files changed, 1907 insertions, 0 deletions
diff --git a/doc/rfc/rfc5651.txt b/doc/rfc/rfc5651.txt
new file mode 100644
index 0000000..2e871d7
--- /dev/null
+++ b/doc/rfc/rfc5651.txt
@@ -0,0 +1,1907 @@
+
+
+
+
+
+
+Network Working Group M. Luby
+Request for Comments: 5651 M. Watson
+Obsoletes: 3451 L. Vicisano
+Category: Standards Track Qualcomm, Inc.
+ October 2009
+
+
+ Layered Coding Transport (LCT) Building Block
+
+Abstract
+
+ The Layered Coding Transport (LCT) Building Block provides transport
+ level support for reliable content delivery and stream delivery
+ protocols. LCT is specifically designed to support protocols using
+ IP multicast, but it also provides support to protocols that use
+ unicast. LCT is compatible with congestion control that provides
+ multiple rate delivery to receivers and is also compatible with
+ coding techniques that provide reliable delivery of content. This
+ document obsoletes RFC 3451.
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (c) 2009 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the BSD License.
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+
+
+
+Luby, et al. Standards Track [Page 1]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction ....................................................3
+ 2. Rationale .......................................................3
+ 3. Functionality ...................................................4
+ 4. Applicability ...................................................7
+ 4.1. Environmental Requirements and Considerations ..............9
+ 4.2. Delivery Service Models ...................................10
+ 4.3. Congestion Control ........................................13
+ 5. Packet Header Fields ...........................................13
+ 5.1. LCT Header Format .........................................13
+ 5.2. Header-Extension Fields ...................................18
+ 5.2.1. General ............................................18
+ 5.2.2. EXT_TIME Header Extension ..........................20
+ 6. Operations .....................................................23
+ 6.1. Sender Operation ..........................................23
+ 6.2. Receiver Operation ........................................25
+ 7. Requirements from Other Building Blocks ........................26
+ 8. Security Considerations ........................................28
+ 8.1. Session and Object Multiplexing and Termination ...........28
+ 8.2. Time Synchronization ......................................29
+ 8.3. Data Transport ............................................29
+ 9. IANA Considerations ............................................29
+ 9.1. Namespace Declaration for LCT Header Extension Types ......29
+ 9.2. LCT Header Extension Type Registration ....................30
+ 10. Acknowledgments ...............................................30
+ 11. Changes from RFC 3451 .........................................31
+ 12. References ....................................................31
+ 12.1. Normative References .....................................31
+ 12.2. Informative References ...................................32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 2]
+
+RFC 5651 LCT Building Block October 2009
+
+
+1. Introduction
+
+ Layered Coding Transport (LCT) provides transport level support for
+ reliable content delivery and stream delivery protocols. Layered
+ Coding Transport is specifically designed to support protocols using
+ IP multicast, but it also provides support to protocols that use
+ unicast. Layered Coding Transport is compatible with congestion
+ control that provides multiple rate delivery to receivers and is also
+ compatible with coding techniques that provide reliable delivery of
+ content.
+
+ This document describes a building block as defined in [RFC3048].
+ This document is a product of the IETF RMT WG and follows the general
+ guidelines provided in [RFC3269].
+
+ [RFC3451], which was published in the "Experimental" category and
+ which is obsoleted by this document, contained a previous version of
+ the protocol.
+
+ This Proposed Standard specification is thus based on and backwards
+ compatible with the protocol defined in [RFC3451] updated according
+ to accumulated experience and growing protocol maturity since its
+ original publication. Said experience applies both to this
+ specification itself and to congestion control strategies related to
+ the use of this specification.
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+2. Rationale
+
+ LCT provides transport level support for massively scalable protocols
+ using the IP multicast network service. The support that LCT
+ provides is common to a variety of very important applications,
+ including reliable content delivery and streaming applications.
+
+ An LCT session comprises multiple channels originating at a single
+ sender that are used for some period of time to carry packets
+ pertaining to the transmission of one or more objects that can be of
+ interest to receivers. The logic behind defining a session as
+ originating from a single sender is that this is the right
+ granularity to regulate packet traffic via congestion control. One
+ rationale for using multiple channels within the same session is that
+ there are massively scalable congestion control protocols that use
+ multiple channels per session. These congestion control protocols
+ are considered to be layered because a receiver joins and leaves
+ channels in a layered order during its participation in the session.
+
+
+
+Luby, et al. Standards Track [Page 3]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ The use of layered channels is also useful for streaming
+ applications.
+
+ There are coding techniques that provide massively scalable
+ reliability and asynchronous delivery that are compatible with both
+ layered congestion control and with LCT. When all are combined, the
+ result is a massively scalable reliable asynchronous content delivery
+ protocol that is network friendly. LCT also provides functionality
+ that can be used for other applications as well, e.g., layered
+ streaming applications.
+
+ LCT avoids providing functionality that is not massively scalable.
+ For example, LCT does not provide any mechanisms for sending
+ information from receivers to senders, although this does not rule
+ out protocols that both use LCT and do require sending information
+ from receivers to senders.
+
+ LCT includes general support for congestion control that must be
+ used. It does not, however, specify which congestion control should
+ be used. The rationale for this is that congestion control must be
+ provided by any protocol that is network friendly, and yet the
+ different applications that can use LCT will not have the same
+ requirements for congestion control. For example, a content delivery
+ protocol may strive to use all available bandwidth between receivers
+ and the sender. It must, therefore, drastically back off its rate
+ when there is competing traffic. On the other hand, a streaming
+ delivery protocol may strive to maintain a constant rate instead of
+ trying to use all available bandwidth, and it may not back off its
+ rate as fast when there is competing traffic.
+
+ Beyond support for congestion control, LCT provides a number of
+ fields and supports functionality commonly required by many
+ protocols. For example, LCT provides a Transmission Session ID that
+ can be used to identify to which session each received packet
+ belongs. This is important because a receiver may be joined to many
+ sessions concurrently, and thus it is very useful to be able to
+ demultiplex packets as they arrive according to the session to which
+ they belong. As another example, there are optional fields within
+ the LCT packet header for identifying the object about which
+ information is carried in the packet payload.
+
+3. Functionality
+
+ An LCT session consists of a set of logically grouped LCT channels
+ associated with a single sender carrying packets with LCT headers for
+ one or more objects. An LCT channel is defined by the combination of
+ a sender and an address associated with the channel by the sender. A
+
+
+
+
+Luby, et al. Standards Track [Page 4]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ receiver joins a channel to start receiving the data packets sent to
+ the channel by the sender, and a receiver leaves a channel to stop
+ receiving data packets from the channel.
+
+ LCT is meant to be combined with other building blocks so that the
+ resulting overall protocol is massively scalable. Scalability refers
+ to the behavior of the protocol in relation to the number of
+ receivers and network paths, their heterogeneity, and the ability to
+ accommodate dynamically variable sets of receivers. Scalability
+ limitations can come from memory or processing requirements, or from
+ the amount of feedback control and redundant data packet traffic
+ generated by the protocol. In turn, such limitations may be a
+ consequence of the features that a complete reliable content delivery
+ or stream delivery protocol is expected to provide.
+
+ The LCT header provides a number of fields that are useful for
+ conveying in-band session information to receivers. One of the
+ required fields is the Transmission Session ID (TSI), which allows
+ the receiver of a session to uniquely identify received packets as
+ part of the session. Another required field is the Congestion
+ Control Information (CCI), which allows the receiver to perform the
+ required congestion control on the packets received within the
+ session. Other LCT fields provide optional but often very useful
+ additional information for the session. For example, the Transport
+ Object Identifier (TOI) identifies for which object the packet
+ contains data and flags are included for indicating the close of the
+ session and the close of sending packets for an object. Header
+ extensions can carry additional fields that, for example, can be used
+ for packet authentication or to convey various kinds of timing
+ information: the Sender Current Time (SCT) conveys the time when the
+ packet was sent from the sender to the receiver, the Expected
+ Residual Time (ERT) conveys the amount of time the session or
+ transmission object will be continued for, and Session Last Change
+ (SLC) conveys the time when objects have been added, modified, or
+ removed from the session.
+
+ LCT provides support for congestion control. Congestion control MUST
+ be used that conforms to [RFC2357] between receivers and the sender
+ for each LCT session. Congestion control refers to the ability to
+ adapt throughput to the available bandwidth on the path from the
+ sender to a receiver, and to share bandwidth fairly with competing
+ flows such as TCP. Thus, the total flow of packets flowing to each
+ receiver participating in an LCT session MUST NOT compete unfairly
+ with existing flow-adaptive protocols such as TCP.
+
+ A multiple rate or a single rate congestion control protocol can be
+ used with LCT. For multiple rate protocols, a session typically
+ consists of more than one channel, and the sender sends packets to
+
+
+
+Luby, et al. Standards Track [Page 5]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ the channels in the session at rates that do not depend on the
+ receivers. Each receiver adjusts its reception rate during its
+ participation in the session by joining and leaving channels
+ dynamically depending on the available bandwidth to the sender
+ independent of all other receivers. Thus, for multiple rate
+ protocols, the reception rate of each receiver may vary dynamically
+ independent of the other receivers.
+
+ For single rate protocols, a session typically consists of one
+ channel and the sender sends packets to the channel at variable rates
+ over time depending on feedback from receivers. Each receiver
+ remains joined to the channel during its participation in the
+ session. Thus, for single rate protocols, the reception rate of each
+ receiver may vary dynamically but in coordination with all receivers.
+
+ Generally, a multiple rate protocol is preferable to a single rate
+ protocol in a heterogeneous receiver environment, since generally it
+ more easily achieves scalability to many receivers and provides
+ higher throughput to each individual receiver. Use of the multiple
+ rate congestion control scheme defined in [RFC3738] is RECOMMENDED.
+ Alternative multiple rate congestion control protocols are described
+ in [VIC1998] and [BYE2000]. A possible single rate congestion
+ control protocol is described in [RIZ2000].
+
+ Layered coding refers to the ability to produce a coded stream of
+ packets that can be partitioned into an ordered set of layers. The
+ coding is meant to provide some form of reliability, and the layering
+ is meant to allow the receiver experience (in terms of quality of
+ playout, or overall transfer speed) to vary in a predictable way
+ depending on how many consecutive layers of packets the receiver is
+ receiving.
+
+ The concept of layered coding was first introduced with reference to
+ audio and video streams. For example, the information associated
+ with a TV broadcast could be partitioned into three layers,
+ corresponding to black and white, color, and HDTV quality. Receivers
+ can experience different quality without the need for the sender to
+ replicate information in the different layers.
+
+ The concept of layered coding can be naturally extended to reliable
+ content delivery protocols when Forward Error Correction (FEC)
+ techniques are used for coding the data stream. Descriptions of this
+ can be found in [RIZ1997a], [RIZ1997b], [GEM2000], [VIC1998], and
+ [BYE1998]. By using FEC, the data stream is transformed in such a
+ way that reconstruction of a data object does not depend on the
+ reception of specific data packets, but only on the number of
+ different packets received. As a result, by increasing the number of
+ layers from which a receiver is receiving, the receiver can reduce
+
+
+
+Luby, et al. Standards Track [Page 6]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ the transfer time accordingly. Using FEC to provide reliability can
+ increase scalability dramatically in comparison to other methods for
+ providing reliability. More details on the use of FEC for reliable
+ content delivery can be found in [RFC3453].
+
+ Reliable protocols aim at giving guarantees on the reliable delivery
+ of data from the sender to the intended recipients. Guarantees vary
+ from simple packet data integrity to reliable delivery of a precise
+ copy of an object to all intended recipients. Several reliable
+ content delivery protocols have been built on top of IP multicast
+ using methods other than FEC, but scalability was not the primary
+ design goal for many of them.
+
+ Two of the key difficulties in scaling reliable content delivery
+ using IP multicast are dealing with the amount of data that flows
+ from receivers back to the sender and the associated response
+ (generally data retransmissions) from the sender. Protocols that
+ avoid any such feedback, and minimize the amount of retransmissions,
+ can be massively scalable. LCT can be used in conjunction with FEC
+ codes or a layered codec to achieve reliability with little or no
+ feedback.
+
+ Protocol instantiations (PIs) MAY be built by combining the LCT
+ framework with other components. A complete protocol instantiation
+ that uses LCT MUST include a congestion control protocol that is
+ compatible with LCT and that conforms to [RFC2357]. A complete
+ protocol instantiation that uses LCT MAY include a scalable
+ reliability protocol that is compatible with LCT, it MAY include a
+ session control protocol that is compatible with LCT, and it MAY
+ include other protocols such as security protocols.
+
+4. Applicability
+
+ An LCT session comprises a logically related set of one or more LCT
+ channels originating at a single sender. The channels are used for
+ some period of time to carry packets containing LCT headers, and
+ these headers pertain to the transmission of one or more objects that
+ can be of interest to receivers.
+
+ LCT is most applicable for delivery of objects or streams in a
+ session of substantial length, i.e., objects or streams that range in
+ aggregate length from hundreds of kilobytes to many gigabytes, and
+ where the duration of the session is on the order of tens of seconds
+ or more.
+
+ As an example, an LCT session could be used to deliver a TV program
+ using three LCT channels. Receiving packets from the first LCT
+ channel could allow black and white reception. Receiving the first
+
+
+
+Luby, et al. Standards Track [Page 7]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ two LCT channels could also permit color reception. Receiving all
+ three channels could allow HDTV quality reception. Objects in this
+ example could correspond to individual TV programs being transmitted.
+
+ As another example, a reliable LCT session could be used to reliably
+ deliver hourly updated weather maps (objects) using ten LCT channels
+ at different rates, using FEC coding. A receiver may join and
+ concurrently receive packets from subsets of these channels, until it
+ has enough packets in total to recover the object, then leave the
+ session (or remain connected listening for session description
+ information only) until it is time to receive the next object. In
+ this case, the quality metric is the time required to receive each
+ object.
+
+ Before joining a session, the receivers must obtain enough of the
+ session description to start the session. This includes the relevant
+ session parameters needed by a receiver to participate in the
+ session, including all information relevant to congestion control.
+ The session description is determined by the sender, and is typically
+ communicated to the receivers out-of-band. In some cases, as
+ described later, parts of the session description that are not
+ required to initiate a session MAY be included in the LCT header or
+ communicated to a receiver out-of-band after the receiver has joined
+ the session.
+
+ An encoder MAY be used to generate the data that is placed in the
+ packet payload in order to provide reliability. A suitable decoder
+ is used to reproduce the original information from the packet
+ payload. There MAY be a reliability header that follows the LCT
+ header if such an encoder and decoder is used. The reliability
+ header helps to describe the encoding data carried in the payload of
+ the packet. The format of the reliability header depends on the
+ coding used, and this is negotiated out-of-band. As an example, one
+ of the FEC headers described in [RFC5052] could be used.
+
+ For LCT, when multiple rate congestion control is used, congestion
+ control is achieved by sending packets associated with a given
+ session to several LCT channels. Individual receivers dynamically
+ join one or more of these channels, according to the network
+ congestion as seen by the receiver. LCT headers include an opaque
+ field that MUST be used to convey congestion control information to
+ the receivers. The actual congestion control scheme to use with LCT
+ is negotiated out-of-band. Some examples of congestion control
+ protocols that may be suitable for content delivery are described in
+ [VIC1998], [BYE2000], and [RFC3738]. Other congestion controls may
+ be suitable when LCT is used for a streaming application.
+
+
+
+
+
+Luby, et al. Standards Track [Page 8]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ This document does not specify and restrict the type of exchanges
+ between LCT (or any protocol instantiation built on top of LCT) and
+ an upper application. Some upper APIs may use an object-oriented
+ approach, where the only possible unit of data exchanged between LCT
+ (or any protocol instantiation built on top of LCT) and an
+ application, either at a source or at a receiver, is an object.
+ Other APIs may enable a sending or receiving application to exchange
+ a subset of an object with LCT (or any PI built on top of LCT), or
+ may even follow a streaming model. These considerations are outside
+ the scope of this document.
+
+4.1. Environmental Requirements and Considerations
+
+ LCT is intended for congestion controlled delivery of objects and
+ streams (both reliable content delivery and streaming of multimedia
+ information).
+
+ LCT can be used with both multicast and unicast delivery. LCT
+ requires connectivity between a sender and receivers, but it does not
+ require connectivity from receivers to a sender. LCT inherently
+ works with all types of networks, including LANs, WANs, Intranets,
+ the Internet, asymmetric networks, wireless networks, and satellite
+ networks. Thus, the inherent raw scalability of LCT is unlimited.
+ However, when other specific applications are built on top of LCT,
+ then these applications, by their very nature, may limit scalability.
+ For example, if an application requires receivers to retrieve out-of-
+ band information in order to join a session, or an application allows
+ receivers to send requests back to the sender to report reception
+ statistics, then the scalability of the application is limited by the
+ ability to send, receive, and process this additional data.
+
+ LCT requires receivers to be able to uniquely identify and
+ demultiplex packets associated with an LCT session. In particular,
+ there MUST be a Transport Session Identifier (TSI) associated with
+ each LCT session. The TSI is scoped by the IP address of the sender,
+ and the IP address of the sender together with the TSI MUST uniquely
+ identify the session. If the underlying transport is UDP, as
+ described in [RFC0768], then the 16-bit UDP source port number MAY
+ serve as the TSI for the session. The TSI value MUST be the same in
+ all places it occurs within a packet. If there is no underlying TSI
+ provided by the network, transport, or any other layer, then the TSI
+ MUST be included in the LCT header.
+
+ LCT is presumed to be used with an underlying network or transport
+ service that is a "best effort" service that does not guarantee
+ packet reception or packet reception order, and that does not have
+ any support for flow or congestion control. For example, the Any-
+ Source Multicast (ASM) model of IP multicast as defined in [RFC1112]
+
+
+
+Luby, et al. Standards Track [Page 9]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ is such a "best effort" network service. While the basic service
+ provided by [RFC1112] is largely scalable, providing congestion
+ control or reliability should be done carefully to avoid severe
+ scalability limitations, especially in the presence of heterogeneous
+ sets of receivers.
+
+ There are currently two models of multicast delivery, the Any-Source
+ Multicast (ASM) model as defined in [RFC1112] and the Source-Specific
+ Multicast (SSM) model as defined in [RFC4607]. LCT works with both
+ multicast models, but in a slightly different way with somewhat
+ different environmental concerns. When using ASM, a sender S sends
+ packets to a multicast group G, and the LCT channel address consists
+ of the pair (S,G), where S is the IP address of the sender and G is a
+ multicast group address. When using SSM, a sender S sends packets to
+ an SSM channel (S,G), and the LCT channel address coincides with the
+ SSM channel address.
+
+ A sender can locally allocate unique SSM channel addresses, and this
+ makes allocation of LCT channel addresses easy with SSM. To allocate
+ LCT channel addresses using ASM, the sender must uniquely chose the
+ ASM multicast group address across the scope of the group, and this
+ makes allocation of LCT channel addresses more difficult with ASM.
+
+ LCT channels and SSM channels coincide, and thus the receiver will
+ only receive packets sent to the requested LCT channel. With ASM,
+ the receiver joins an LCT channel by joining a multicast group G, and
+ all packets sent to G, regardless of the sender, may be received by
+ the receiver. Thus, SSM has compelling security advantages over ASM
+ for prevention of denial-of-service (DoS) attacks. In either case,
+ receivers SHOULD use packet authentication mechanisms to mitigate
+ such attacks (see Sections 6.2 and 7).
+
+ Some networks are not amenable to some congestion control protocols
+ that could be used with LCT. In particular, for a satellite or
+ wireless network, there may be no mechanism for receivers to
+ effectively reduce their reception rate since there may be a fixed
+ transmission rate allocated to the session.
+
+ LCT is compatible with both IPv4 and IPv6 as no part of the packet is
+ IP version specific.
+
+4.2. Delivery Service Models
+
+ LCT can support several different delivery service models. Two
+ examples are briefly described here.
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 10]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Push service model
+
+ One way a push service model can be used for reliable content
+ delivery is to deliver a series of objects. For example, a
+ receiver could join the session and dynamically adapt the number
+ of LCT channels the receiver is joined to until enough packets
+ have been received to reconstruct an object. After reconstructing
+ the object, the receiver may stay in the session and wait for the
+ transmission of the next object.
+
+ The push model is particularly attractive in satellite networks
+ and wireless networks. In these cases, a session may consist of
+ one fixed rate LCT channel.
+
+ A push service model can be used, for example, for reliable
+ delivery of a large object such as a 100 GB file. The sender
+ could send a Session Description announcement to a control channel
+ and receivers could monitor this channel and join a session
+ whenever a Session Description of interest arrives. Upon receipt
+ of the Session Description, each receiver could join the session
+ to receive packets until enough packets have arrived to
+ reconstruct the object, at which point the receiver could report
+ back to the sender that its reception was completed successfully.
+ The sender could decide to continue sending packets for the object
+ to the session until all receivers have reported successful
+ reconstruction or until some other condition has been satisfied.
+
+ There are several features Asynchronous Layered Coding (ALC)
+ provides to support the push model. For example, the sender can
+ optionally include an Expected Residual Time (ERT) in the packet
+ header extension that indicates the expected remaining time of
+ packet transmission for either the single object carried in the
+ session or for the object identified by the Transmission Object
+ Identifier (TOI) if there are multiple objects carried in the
+ session. This can be used by receivers to determine if there is
+ enough time remaining in the session to successfully receive
+ enough additional packets to recover the object. If, for example,
+ there is not enough time, then the push application may have
+ receivers report back to the sender to extend the transmission of
+ packets for the object for enough time to allow the receivers to
+ obtain enough packets to reconstruct the object. The sender could
+ then include an ERT based on the extended object transmission time
+ in each subsequent packet header for the object. As other
+ examples, the LCT header optionally can contain a Close Session
+ flag that indicates when the sender is about to stop sending
+ packets to the session and a Close Object flag that indicates when
+ the sender is about to stop sending packets to the session for the
+ object identified by the Transmission Object ID. However, these
+
+
+
+Luby, et al. Standards Track [Page 11]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ flags are not a completely reliable mechanism and thus the Close
+ Session flag should only be used as a hint of when the session is
+ about to close, and the Close Object flag should only be used as a
+ hint of when transmission of packets for the object is about to
+ end.
+
+ On-demand content delivery model
+
+ For an on-demand content delivery service model, senders typically
+ transmit for some given time period selected to be long enough to
+ allow all the intended receivers to join the session and recover
+ the object. For example, a popular software update might be
+ transmitted using LCT for several days, even though a receiver may
+ be able to complete the download in one hour total of connection
+ time, perhaps spread over several intervals of time. In this
+ case, the receivers join the session at any point in time when it
+ is active. Receivers leave the session when they have received
+ enough packets to recover the object. The receivers, for example,
+ obtain a Session Description by contacting a web server.
+
+ In this case, the receivers join the session, and dynamically
+ adapt the number of LCT channels to which they subscribe according
+ to the available bandwidth. Receivers then drop from the session
+ when they have received enough packets to recover the object.
+
+ As an example, assume that an object is 50 MB. The sender could
+ send 1 KB packets to the first LCT channel at 50 packets per
+ second, so that receivers using just this LCT channel could
+ complete reception of the object in 1,000 seconds in absence of
+ loss, and would be able to complete reception even in presence of
+ some substantial amount of losses with the use of coding for
+ reliability. Furthermore, the sender could use a number of LCT
+ channels such that the aggregate rate of 1 KB packets to all LCT
+ channels is 1,000 packets per second, so that a receiver could be
+ able to complete reception of the object in as little 50 seconds
+ (assuming no loss and that the congestion control mechanism
+ immediately converges to the use of all LCT channels).
+
+ Other service models
+
+ There are many other delivery service models for which LCT can be
+ used that are not covered above. As examples, a live streaming or
+ an on-demand archival content streaming service model. A
+ description of the many potential applications, the appropriate
+ delivery service model, and the additional mechanisms to support
+ such functionalities when combined with LCT is beyond the scope of
+
+
+
+
+
+Luby, et al. Standards Track [Page 12]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ this document. This document only attempts to describe the
+ minimal common scalable elements to these diverse applications
+ using LCT as the delivery transport.
+
+4.3. Congestion Control
+
+ The specific congestion control protocol to be used for LCT sessions
+ depends on the type of content to be delivered. While the general
+ behavior of the congestion control protocol is to reduce the
+ throughput in presence of congestion and gradually increase it in the
+ absence of congestion, the actual dynamic behavior (e.g., response to
+ single losses) can vary.
+
+ It is RECOMMENDED that the congestion control mechanism specified in
+ [RFC3738] be used. Some alternative possible congestion control
+ protocols for reliable content delivery using LCT are described in
+ [VIC1998] and [BYE2000]. Different delivery service models might
+ require different congestion control protocols.
+
+5. Packet Header Fields
+
+ Packets sent to an LCT session MUST include an "LCT header". The LCT
+ header format is described below.
+
+ Other building blocks MAY describe some of the same fields as
+ described for the LCT header. It is RECOMMENDED that protocol
+ instantiations using multiple building blocks include shared fields
+ at most once in each packet. Thus, for example, if another building
+ block is used with LCT that includes the optional Expected Residual
+ Time field, then the Expected Residual Time field SHOULD be carried
+ in each packet at most once.
+
+ The position of the LCT header within a packet MUST be specified by
+ any protocol instantiation that uses LCT.
+
+5.1. LCT Header Format
+
+ The LCT header is of variable size, which is specified by a length
+ field in the third byte of the header. In the LCT header, all
+ integer fields are carried in "big-endian" or "network order" format,
+ that is, most significant byte (octet) first. Bits designated as
+ "padding" or "reserved" (r) MUST by set to 0 by senders and ignored
+ by receivers in this version of the specification. Unless otherwise
+ noted, numeric constants in this specification are in decimal form
+ (base 10).
+
+ The format of the default LCT header is depicted in Figure 1.
+
+
+
+
+Luby, et al. Standards Track [Page 13]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | V | C |PSI|S| O |H|Res|A|B| HDR_LEN | Codepoint (CP)|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Congestion Control Information (CCI, length = 32*(C+1) bits) |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Transport Session Identifier (TSI, length = 32*S+16*H bits) |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Transport Object Identifier (TOI, length = 32*O+16*H bits) |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Header Extensions (if applicable) |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Default LCT Header Format
+
+ The function and length of each field in the default LCT header is
+ the following.
+
+ LCT version number (V): 4 bits
+
+ Indicates the LCT version number. The LCT version number for this
+ specification is 1.
+
+ Congestion control flag (C): 2 bits
+
+ C=0 indicates the Congestion Control Information (CCI) field is 32
+ bits in length. C=1 indicates the CCI field is 64 bits in length.
+ C=2 indicates the CCI field is 96 bits in length. C=3 indicates
+ the CCI field is 128 bits in length.
+
+ Protocol-Specific Indication (PSI): 2 bits
+
+ The usage of these bits, if any, is specific to each protocol
+ instantiation that uses the LCT building block. If no protocol-
+ instantiation-specific usage of these bits is defined, then a
+ sender MUST set them to zero and a receiver MUST ignore these
+ bits.
+
+
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 14]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Transport Session Identifier flag (S): 1 bit
+
+ This is the number of full 32-bit words in the TSI field. The TSI
+ field is 32*S + 16*H bits in length, i.e., the length is either 0
+ bits, 16 bits, 32 bits, or 48 bits.
+
+ Transport Object Identifier flag (O): 2 bits
+
+ This is the number of full 32-bit words in the TOI field. The TOI
+ field is 32*O + 16*H bits in length, i.e., the length is either 0
+ bits, 16 bits, 32 bits, 48 bits, 64 bits, 80 bits, 96 bits, or 112
+ bits.
+
+ Half-word flag (H): 1 bit
+
+ The TSI and the TOI fields are both multiples of 32 bits plus 16*H
+ bits in length. This allows the TSI and TOI field lengths to be
+ multiples of a half-word (16 bits), while ensuring that the
+ aggregate length of the TSI and TOI fields is a multiple of 32
+ bits.
+
+ Reserved (Res): 2 bits
+
+ These bits are reserved. In this version of the specification,
+ they MUST be set to zero by senders and MUST be ignored by
+ receivers.
+
+ Close Session flag (A): 1 bit
+
+ Normally, A is set to 0. The sender MAY set A to 1 when
+ termination of transmission of packets for the session is
+ imminent. A MAY be set to 1 in just the last packet transmitted
+ for the session, or A MAY be set to 1 in the last few seconds of
+ packets transmitted for the session. Once the sender sets A to 1
+ in one packet, the sender SHOULD set A to 1 in all subsequent
+ packets until termination of transmission of packets for the
+ session. A received packet with A set to 1 indicates to a
+ receiver that the sender will immediately stop sending packets for
+ the session. When a receiver receives a packet with A set to 1,
+ the receiver SHOULD assume that no more packets will be sent to
+ the session.
+
+ Close Object flag (B): 1 bit
+
+ Normally, B is set to 0. The sender MAY set B to 1 when
+ termination of transmission of packets for an object is imminent.
+ If the TOI field is in use and B is set to 1, then termination of
+ transmission for the object identified by the TOI field is
+
+
+
+Luby, et al. Standards Track [Page 15]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ imminent. If the TOI field is not in use and B is set to 1, then
+ termination of transmission for the one object in the session
+ identified by out-of-band information is imminent. B MAY be set
+ to 1 in just the last packet transmitted for the object, or B MAY
+ be set to 1 in the last few seconds that packets are transmitted
+ for the object. Once the sender sets B to 1 in one packet for a
+ particular object, the sender SHOULD set B to 1 in all subsequent
+ packets for the object until termination of transmission of
+ packets for the object. A received packet with B set to 1
+ indicates to a receiver that the sender will immediately stop
+ sending packets for the object. When a receiver receives a packet
+ with B set to 1, then it SHOULD assume that no more packets will
+ be sent for the object to the session.
+
+ LCT header length (HDR_LEN): 8 bits
+
+ Total length of the LCT header in units of 32-bit words. The
+ length of the LCT header MUST be a multiple of 32 bits. This
+ field can be used to directly access the portion of the packet
+ beyond the LCT header, i.e., to the first other header if it
+ exists, or to the packet payload if it exists and there is no
+ other header, or to the end of the packet if there are no other
+ headers or packet payload.
+
+ Codepoint (CP): 8 bits
+
+ An opaque identifier that is passed to the packet payload decoder
+ to convey information on the codec being used for the packet
+ payload. The mapping between the codepoint and the actual codec
+ is defined on a per session basis and communicated out-of-band as
+ part of the session description information. The use of the CP
+ field is similar to the Payload Type (PT) field in RTP headers as
+ described in [RFC3550].
+
+ Congestion Control Information (CCI): 32, 64, 96, or 128 bits
+
+ Used to carry congestion control information. For example, the
+ congestion control information could include layer numbers,
+ logical channel numbers, and sequence numbers. This field is
+ opaque for the purpose of this specification.
+
+ This field MUST be 32 bits if C=0.
+
+ This field MUST be 64 bits if C=1.
+
+ This field MUST be 96 bits if C=2.
+
+
+
+
+
+Luby, et al. Standards Track [Page 16]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ This field MUST be 128 bits if C=3.
+
+ Transport Session Identifier (TSI): 0, 16, 32, or 48 bits
+
+ The TSI uniquely identifies a session among all sessions from a
+ particular sender. The TSI is scoped by the IP address of the
+ sender, and thus the IP address of the sender and the TSI together
+ uniquely identify the session. Although a TSI in conjunction with
+ the IP address of the sender always uniquely identifies a session,
+ whether or not the TSI is included in the LCT header depends on
+ what is used as the TSI value. If the underlying transport is
+ UDP, then the 16-bit UDP source port number MAY serve as the TSI
+ for the session. If the TSI value appears multiple times in a
+ packet, then all occurrences MUST be the same value. If there is
+ no underlying TSI provided by the network, transport or any other
+ layer, then the TSI MUST be included in the LCT header.
+
+ The TSI MUST be unique among all sessions served by the sender
+ during the period when the session is active, and for a large
+ period of time preceding and following when the session is active.
+ A primary purpose of the TSI is to prevent receivers from
+ inadvertently accepting packets from a sender that belong to
+ sessions other than the sessions to which receivers are
+ subscribed. For example, suppose a session is deactivated and
+ then another session is activated by a sender and the two sessions
+ use an overlapping set of channels. A receiver that connects and
+ remains connected to the first session during this sender activity
+ could possibly accept packets from the second session as belonging
+ to the first session if the TSI for the two sessions were
+ identical. The mapping of TSI field values to sessions is outside
+ the scope of this document and is to be done out-of-band.
+
+ The length of the TSI field is 32*S + 16*H bits. Note that the
+ aggregate lengths of the TSI field plus the TOI field is a
+ multiple of 32 bits.
+
+ Transport Object Identifier (TOI): 0, 16, 32, 48, 64, 80, 96, or 112
+ bits.
+
+ This field indicates to which object within the session this
+ packet pertains. For example, a sender might send a number of
+ files in the same session, using TOI=0 for the first file, TOI=1
+ for the second one, etc. As another example, the TOI may be a
+ unique global identifier of the object that is being transmitted
+ from several senders concurrently, and the TOI value may be the
+ output of a hash function applied to the object. The mapping of
+ TOI field values to objects is outside the scope of this document
+ and is to be done out-of-band. The TOI field MUST be used in all
+
+
+
+Luby, et al. Standards Track [Page 17]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ packets if more than one object is to be transmitted in a session,
+ i.e., the TOI field is either present in all the packets of a
+ session or is never present.
+
+ The length of the TOI field is 32*O + 16*H bits. Note that the
+ aggregate length of the TSI field plus the TOI field is a multiple
+ of 32 bits.
+
+5.2. Header-Extension Fields
+
+5.2.1. General
+
+ Header Extensions are used in LCT to accommodate optional header
+ fields that are not always used or have variable size. Examples of
+ the use of Header Extensions include:
+
+ o Extended-size versions of already existing header fields.
+
+ o Sender and receiver authentication information.
+
+ o Transmission of timing information.
+
+ The presence of Header Extensions can be inferred by the LCT header
+ length (HDR_LEN). If HDR_LEN is larger than the length of the
+ standard header, then the remaining header space is taken by Header
+ Extension fields.
+
+ If present, Header Extensions MUST be processed to ensure that they
+ are recognized before performing any congestion control procedure or
+ otherwise accepting a packet. The default action for unrecognized
+ Header Extensions is to ignore them. This allows the future
+ introduction of backward-compatible enhancements to LCT without
+ changing the LCT version number. Non-backward-compatible Header
+ Extensions CANNOT be introduced without changing the LCT version
+ number.
+
+ There are two formats for Header Extension fields, as depicted in
+ Figure 2. The first format is used for variable-length extensions,
+ with Header Extension Type (HET) values between 0 and 127. The
+ second format is used for fixed-length (one 32-bit word) extensions,
+ using HET values from 127 to 255.
+
+
+
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 18]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | HET (<=127) | HEL | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+ . .
+ . Header Extension Content (HEC) .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | HET (>=128) | Header Extension Content (HEC) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Format of Additional Headers
+
+ The explanation of each sub-field is the following:
+
+ Header Extension Type (HET): 8 bits
+
+ The type of the Header Extension. This document defines a number
+ of possible types. Additional types may be defined in future
+ versions of this specification. HET values from 0 to 127 are used
+ for variable-length Header Extensions. HET values from 128 to 255
+ are used for fixed-length 32-bit Header Extensions.
+
+ Header Extension Length (HEL): 8 bits
+
+ The length of the whole Header Extension field, expressed in
+ multiples of 32-bit words. This field MUST be present for
+ variable-length extensions (HETs between 0 and 127) and MUST NOT
+ be present for fixed-length extensions (HETs between 128 and 255).
+
+ Header Extension Content (HEC): variable length
+
+ The content of the Header Extension. The format of this sub-
+ field depends on the Header Extension Type. For fixed-length
+ Header Extensions, the HEC is 24 bits. For variable-length Header
+ Extensions, the HEC field has variable size, as specified by the
+ HEL field. Note that the length of each Header Extension field
+ MUST be a multiple of 32 bits. Also note that the total size of
+ the LCT header, including all Header Extensions and all optional
+ header fields, cannot exceed 255 32-bit words.
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 19]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ The following LCT Header Extensions are defined by this
+ specification:
+
+ EXT_NOP, HET=0 No-Operation extension. The information present in
+ this extension field MUST be ignored by receivers.
+
+ EXT_AUTH, HET=1 Packet authentication extension. Information used to
+ authenticate the sender of the packet. The format of
+ this Header Extension and its processing is outside
+ the scope of this document and is to be communicated
+ out-of-band as part of the session description.
+
+ It is RECOMMENDED that senders provide some form of packet
+ authentication. If EXT_AUTH is present, whatever
+ packet authentication checks that can be performed
+ immediately upon reception of the packet SHOULD be
+ performed before accepting the packet and performing
+ any congestion-control-related action on it.
+
+ Some packet authentication schemes impose a delay of several seconds
+ between when a packet is received and when the packet
+ is fully authenticated. Any congestion control
+ related action that is appropriate SHOULD NOT be
+ postponed by any such full packet authentication.
+
+ EXT_TIME, HET=2 Time Extension. This extension is used to carry
+ several types of timing information. It includes
+ general purpose timing information, namely the Sender
+ Current Time (SCT), Expected Residual Time (ERT), and
+ Sender Last Change (SLC) time extensions described in
+ the present document. It can also be used for timing
+ information with narrower applicability (e.g.,
+ defined for a single protocol instantiation); in this
+ case, it will be described in a separate document.
+
+ All senders and receivers implementing LCT MUST support the EXT_NOP
+ Header Extension and MUST recognize EXT_AUTH and EXT_TIME, but are
+ not required to be able to parse their content.
+
+5.2.2. EXT_TIME Header Extension
+
+ This section defines the timing Header Extensions with general
+ applicability. The time values carried in this Header Extension are
+ related to the server's wall clock. The server MUST maintain
+ consistent relative time during a session (i.e., insignificant clock
+ drift). For some applications, system or even global synchronization
+ of server wall clock may be desirable, such as using the Network Time
+
+
+
+
+Luby, et al. Standards Track [Page 20]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Protocol (NTP) [RFC1305] to ensure actual time relative to 00:00
+ hours GMT, January 1st 1900. Such session-external synchronization
+ is outside the scope of this document.
+
+ The EXT_TIME Header Extension uses the format depicted in Figure 3.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | HET = 2 | HEL >= 1 | Use (bit field) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | first time value |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ... (other time values (optional) ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: EXT_TIME Header Extension Format
+
+ The "Use" bit field indicates the semantic of the following 32-bit
+ time value(s).
+
+ It is divided into two parts:
+
+ o 8 bits are reserved for general purpose timing information. This
+ information is applicable to any protocol that makes use of LCT.
+
+ o 8 bits are reserved for PI-specific timing information. This
+ information is out of the scope of this document.
+
+ The format of the "Use" bit field is depicted in Figure 4.
+
+ 2 3
+ 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+ |SCT|SCT|ERT|SLC| reserved | PI-specific |
+ |Hi |Low| | | by LCT | use |
+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+
+ Figure 4: "Use" Bit Field Format
+
+ Several "time value" fields MAY be present in a given EXT_TIME Header
+ Extension, as specified in the "Use-field". When several "time
+ value" fields are present, they MUST appear in the order specified by
+ the associated flag position in the "Use-field": first SCT-High (if
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 21]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ present), then SCT-Low (if present), then ERT (if present), then SLC
+ (if present). Receivers SHOULD ignore additional fields within the
+ EXT_TIME Header Extension that they do not support.
+
+
+ The fields for the general purpose EXT_TIME timing information are:
+
+ Sender Current Time (SCT): SCT-High flag, SCT-Low flag, corresponding
+ time value (one or two 32-bit words).
+
+ This timing information represents the current time at the sender
+ at the time this packet was transmitted.
+
+ When the SCT-High flag is set, the associated 32-bit time value
+ provides an unsigned integer representing the time in seconds of
+ the sender's wall clock. In the particular case where NTP is
+ used, these 32 bits provide an unsigned integer representing the
+ time in seconds relative to 00:00 hours GMT, January 1st 1900,
+ (i.e., the most significant 32 bits of a full 64-bit NTP time
+ value). In that case, handling of wraparound of the 32-bit time
+ is outside the scope of NTP and LCT.
+
+ When the SCT-Low flag is set, the associated 32-bit time value
+ provides an unsigned integer representing a multiple of 1/2^^32 of
+ a second, in order to allow sub-second precision. When the SCT-
+ Low flag is set, the SCT-High flag MUST be set, too. In the
+ particular case where NTP is used, these 32 bits provide the 32
+ least significant bits of a 64-bit NTP timestamp.
+
+ Expected Residual Time (ERT): ERT flag, corresponding 32-bit time
+ value.
+
+ This timing information represents the sender expected residual
+ transmission time for the transmission of the current object. If
+ the packet containing the ERT timing information also contains the
+ TOI field, then ERT refers to the object corresponding to the TOI
+ field; otherwise, it refers to the only object in the session.
+
+ When the ERT flag is set, it is expressed as a number of seconds.
+ The 32 bits provide an unsigned integer representing this number
+ of seconds.
+
+ Session Last Changed (SLC): SLC flag, corresponding 32-bit time
+ value.
+
+ The Session Last Changed time value is the server wall clock time,
+ in seconds, at which the last change to session data occurred.
+ That is, it expresses the time at which the last (most recent)
+
+
+
+Luby, et al. Standards Track [Page 22]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Transport Object addition, modification, or removal was made for
+ the delivery session. In the case of modifications and additions,
+ it indicates that new data will be transported that was not
+ transported prior to this time. In the case of removals, SLC
+ indicates that some prior data will no longer be transported.
+
+ When the SLC flag is set, the associated 32-bit time value
+ provides an unsigned integer representing a time in seconds. In
+ the particular case where NTP is used, these 32 bits provide an
+ unsigned integer representing the time in seconds relative to
+ 00:00 hours GMT, January 1st 1900, (i.e., the most significant 32
+ bits of a full 64-bit NTP time value). In that case, handling of
+ wraparound of the 32-bit time is outside the scope of NTP and LCT.
+
+ In some cases, it may be appropriate that a packet containing an
+ EXT_TIME Header Extension with SLC information also contain an
+ SCT-High information.
+
+ Reserved by LCT for future use (4 bits):
+
+ In this version of the specification, these bits MUST be set to
+ zero by senders and MUST be ignored by receivers.
+
+ PI-specific use (8 bits):
+
+ These bits are out of the scope of this document. The bits that
+ are not specified by the PI built on top of LCT SHOULD be set to
+ zero.
+
+ The total EXT_TIME length is carried in the HEL, since this Header
+ Extension is of variable length. It also enables clients to skip
+ this Header Extension altogether if not supported (but recognized).
+
+6. Operations
+
+6.1. Sender Operation
+
+ Before joining an LCT session, a receiver MUST obtain a session
+ description. The session description MUST include:
+
+ o The sender IP address;
+
+ o The number of LCT channels;
+
+ o The addresses and port numbers used for each LCT channel;
+
+ o The Transport Session ID (TSI) to be used for the session;
+
+
+
+
+Luby, et al. Standards Track [Page 23]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ o Enough information to determine the congestion control protocol
+ being used;
+
+ o Enough information to determine the packet authentication scheme
+ being used (if one is being used).
+
+ The session description could also include, but is not limited to:
+
+ o The data rates used for each LCT channel;
+
+ o The length of the packet payload;
+
+ o The mapping of TOI value(s) to objects for the session;
+
+ o Any information that is relevant to each object being transported,
+ such as when it will be available within the session, for how
+ long, and the length of the object;
+
+ Protocol instantiations using LCT MAY place additional requirements
+ on what must be included in the session description. For example, a
+ protocol instantiation might require that the data rates for each
+ channel, or the mapping of TOI value(s) to objects for the session,
+ or other information related to other headers that might be required
+ be included in the session description.
+
+ The session description could be in a form such as SDP as defined in
+ [RFC4566], or another format appropriate to a particular application.
+ It might be carried in a session announcement protocol such as SAP as
+ defined in [RFC2974], obtained using a proprietary session control
+ protocol, located on a Web page with scheduling information, or
+ conveyed via email or other out-of-band methods. Discussion of
+ session description format, and distribution of session descriptions
+ is beyond the scope of this document.
+
+ Within an LCT session, a sender using LCT transmits a sequence of
+ packets, each in the format defined above. Packets are sent from a
+ sender using one or more LCT channels, which together constitute a
+ session. Transmission rates may be different in different channels
+ and may vary over time. The specification of the other building
+ block headers and the packet payload used by a complete protocol
+ instantiation using LCT is beyond the scope of this document. This
+ document does not specify the order in which packets are transmitted,
+ nor the organization of a session into multiple channels. Although
+ these issues affect the efficiency of the protocol, they do not
+ affect the correctness nor the inter-operability of LCT between
+ senders and receivers.
+
+
+
+
+
+Luby, et al. Standards Track [Page 24]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Several objects can be carried within the same LCT session. In this
+ case, each object MUST be identified by a unique TOI. Objects MAY be
+ transmitted sequentially, or they MAY be transmitted concurrently.
+ It is good practice to only send objects concurrently in the same
+ session if the receivers that participate in that portion of the
+ session have interest in receiving all the objects. The reason for
+ this is that it wastes bandwidth and networking resources to have
+ receivers receive data for objects in which they have no interest.
+
+ Typically, the sender(s) continues to send packets in a session until
+ the transmission is considered complete. The transmission may be
+ considered complete when some time has expired, a certain number of
+ packets have been sent, or some out-of-band signal (possibly from a
+ higher level protocol) has indicated completion by a sufficient
+ number of receivers.
+
+ For the reasons mentioned above, this document does not pose any
+ restriction on packet sizes. However, network efficiency
+ considerations recommend that the sender uses an as large as possible
+ packet payload size, but in such a way that packets do not exceed the
+ network's maximum transmission unit size (MTU), or when fragmentation
+ coupled with packet loss might introduce severe inefficiency in the
+ transmission.
+
+ It is recommended that all packets have the same or very similar
+ sizes, as this can have a severe impact on the effectiveness of
+ congestion control schemes such as the ones described in [VIC1998],
+ [BYE2000], and [RFC3738]. A sender of packets using LCT MUST
+ implement the sender-side part of one of the congestion control
+ schemes that is in accordance with [RFC2357] using the Congestion
+ Control Information field provided in the LCT header, and the
+ corresponding receiver congestion control scheme is to be
+ communicated out-of-band and MUST be implemented by any receivers
+ participating in the session.
+
+6.2. Receiver Operation
+
+ Receivers can operate differently depending on the delivery service
+ model. For example, for an on-demand service model, receivers may
+ join a session, obtain the necessary packets to reproduce the object,
+ and then leave the session. As another example, for a streaming
+ service model, a receiver may be continuously joined to a set of LCT
+ channels to download all objects in a session.
+
+ To be able to participate in a session, a receiver MUST obtain the
+ relevant session description information as listed in Section 6.1.
+
+
+
+
+
+Luby, et al. Standards Track [Page 25]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ If packet authentication information is present in an LCT header, it
+ SHOULD be used as specified in Section 5.2. To be able to be a
+ receiver in a session, the receiver MUST be able to process the LCT
+ header. The receiver MUST be able to discard, forward, store, or
+ process the other headers and the packet payload. If a receiver is
+ not able to process an LCT header, it MUST drop from the session.
+
+ To be able to participate in a session, a receiver MUST implement the
+ congestion control protocol specified in the session description
+ using the Congestion Control Information field provided in the LCT
+ header. If a receiver is not able to implement the congestion
+ control protocol used in the session, it MUST NOT join the session.
+ When the session is transmitted on multiple LCT channels, receivers
+ MUST initially join channels according to the specified startup
+ behavior of the congestion control protocol. For a multiple rate
+ congestion control protocol that uses multiple channels, this
+ typically means that a receiver will initially join only a minimal
+ set of LCT channels, possibly a single one, that in aggregate are
+ carrying packets at a low rate. This rule has the purpose of
+ preventing receivers from starting at high data rates.
+
+ Several objects can be carried either sequentially or concurrently
+ within the same LCT session. In this case, each object is identified
+ by a unique TOI. Note that even if a server stops sending packets
+ for an old object before starting to transmit packets for a new
+ object, both the network and the underlying protocol layers can cause
+ some reordering of packets, especially when sent over different LCT
+ channels, and thus receivers SHOULD NOT assume that the reception of
+ a packet for a new object means that there are no more packets in
+ transit for the previous one, at least for some amount of time.
+
+ A receiver MAY be concurrently joined to multiple LCT sessions from
+ one or more senders. The receiver MUST perform congestion control on
+ each such LCT session. If the congestion control protocol allows the
+ receiver some flexibility in terms of its actions within a session,
+ then the receiver MAY make choices to optimize the packet flow
+ performance across the multiple LCT sessions, as long as the receiver
+ still adheres to the congestion control rules for each LCT session
+ individually.
+
+7. Requirements from Other Building Blocks
+
+ As described in [RFC3048], LCT is a building block that is intended
+ to be used, in conjunction with other building blocks, to help
+ specify a protocol instantiation. A congestion control building
+ block that uses the Congestion Control information field within the
+
+
+
+
+
+Luby, et al. Standards Track [Page 26]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ LCT header MUST be used by any protocol instantiation that uses LCT;
+ other building blocks MAY also be used, such as a reliability
+ building block.
+
+ The congestion control MUST be applied to the LCT session as an
+ entity, i.e., over the aggregate of the traffic carried by all of the
+ LCT channels associated with the LCT session. The Congestion Control
+ Information field in the LCT header is an opaque field that is
+ reserved to carry information related to congestion control. There
+ MAY also be congestion control Header Extension fields that carry
+ additional information related to congestion control.
+
+ The particular layered encoder and congestion control protocols used
+ with LCT have an impact on the performance and applicability of LCT.
+ For example, some layered encoders used for video and audio streams
+ can produce a very limited number of layers, thus providing a very
+ coarse control in the reception rate of packets by receivers in a
+ session. When LCT is used for reliable data transfer, some FEC
+ codecs are inherently limited in the size of the object they can
+ encode, and for objects larger than this size the reception overhead
+ on the receivers can grow substantially.
+
+ A more in-depth description of the use of FEC in Reliable Multicast
+ Transport (RMT) protocols is given in [RFC3453]. Some of the FEC
+ codecs that MAY be used in conjunction with LCT for reliable content
+ delivery are specified in [RFC5052]. The Codepoint field in the LCT
+ header is an opaque field that can be used to carry information
+ related to the encoding of the packet payload.
+
+ LCT also requires receivers to obtain a session description, as
+ described in Section 6.1. The session description could be in a form
+ such as SDP as defined in [RFC4566], or another format appropriate to
+ a particular application and may be distributed with SAP as defined
+ in [RFC2974], using HTTP, or in other ways. It is RECOMMENDED that
+ an authentication protocol be used to deliver the session description
+ to receivers to ensure the correct session description arrives.
+
+ It is RECOMMENDED that LCT implementors use some packet
+ authentication scheme to protect the protocol from attacks. An
+ example of a possibly suitable scheme is described in [Perrig2001].
+
+ Some protocol instantiations that use LCT MAY use building blocks
+ that require the generation of feedback from the receivers to the
+ sender. However, the mechanism for doing this is outside the scope
+ of LCT.
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 27]
+
+RFC 5651 LCT Building Block October 2009
+
+
+8. Security Considerations
+
+ LCT is a building block as defined in [RFC3048] and as such does not
+ define a complete protocol. Protocol instantiations that use the LCT
+ building block MUST address the potential vulnerabilities described
+ in the following sections. For an example, see [ALC-PI].
+
+ Protocol instantiations could address the vulnerabilities described
+ below by taking measures to prevent receivers from accepting
+ incorrect packets, for example, by using a source authentication and
+ content integrity mechanism. See also Sections 6.2 and 7 for
+ discussion of packet authentication requirements.
+
+ Note that for correct operation, LCT assumes availability of session
+ description information (see Sections 4 and 7). Incorrect or
+ maliciously modified session description information may result in
+ receivers being unable to correctly receive the session content, or
+ that receivers inadvertently try to receive at a much higher rate
+ than they are capable of, thereby disrupting traffic in portions of
+ the network. Protocol instantiations MUST address this potential
+ vulnerability, for example, by providing source authentication and
+ integrity mechanisms for the session description. Additionally,
+ these mechanisms MUST allow the receivers to securely verify the
+ correspondence between session description and LCT data packets.
+
+ The following sections consider further each of the services provided
+ by LCT.
+
+8.1. Session and Object Multiplexing and Termination
+
+ The Transport Session Identifier and the Transport Object Identifier
+ in the LCT header provide for multiplexing of sessions and objects.
+ Modification of these fields by an attacker could have the effect of
+ depriving a session or object of data and potentially directing
+ incorrect data to another session or object, in both cases effecting
+ a denial-of-service attack.
+
+ Additionally, injection of forged packets with fake TSI or TOI values
+ may cause receivers to allocate resources for additional sessions or
+ objects, again potentially effecting a DoS attack.
+
+ The Close Object and Close Session bits in the LCT header provide for
+ signaling of the end of a session or object. Modification of these
+ fields by an attacker could cause receivers to incorrectly behave as
+ if the session or object had ended, resulting in a denial-of-service
+ attack, or conversely to continue to unnecessarily utilize resources
+ after the session or object has ended (although resource utilization
+ in this case is largely an implementation issue).
+
+
+
+Luby, et al. Standards Track [Page 28]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ As a result of the above vulnerabilities, these fields MUST be
+ protected by protocol instantiation security mechanisms (for example,
+ source authentication and data integrity mechanisms).
+
+8.2. Time Synchronization
+
+ The SCT and ERT mechanisms provide rudimentary time synchronization
+ features which can both be subject to attacks. Indeed an attacker
+ can easily de-synchronize clients, sending erroneous SCT information,
+ or mount a DoS attack by informing all clients that the session
+ (respectively, a particular object) is about to be closed.
+
+ As a result of the above vulnerabilities, these fields MUST be
+ protected by protocol instantiation security mechanisms (for example,
+ source authentication and data integrity mechanisms).
+
+8.3. Data Transport
+
+ The LCT protocol provides for transport of information for other
+ building blocks, specifically the PSI field for the protocol
+ instantiation, the Congestion Control field for the Congestion
+ Control building block, the Codepoint field for the FEC building
+ block, the EXT-AUTH Header Extension (used by the protocol
+ instantiation) and the packet payload itself.
+
+ Modification of any of these fields by an attacker may result in a
+ denial-of-service attack. In particular, modification of the
+ Codepoint or packet payload may prevent successful reconstruction or
+ cause inaccurate reconstruction of large portions of an object by
+ receivers. Modification of the Congestion Control field may cause
+ receivers to attempt to receive at an incorrect rate, potentially
+ worsening or causing a congestion situation and thereby effecting a
+ DoS attack.
+
+ As a result of the above vulnerabilities, these fields MUST be
+ protected by protocol instantiation security mechanisms (for example,
+ source authentication and data integrity mechanisms).
+
+9. IANA Considerations
+
+9.1. Namespace Declaration for LCT Header Extension Types
+
+ This document defines a new namespace for "LCT Header Extension
+ Types". Values in this namespace are integers between 0 and 255
+ (inclusive).
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 29]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Values in the range 0 to 63 (inclusive) are reserved for use for
+ variable-length LCT Header Extensions and assignments shall be made
+ through "IETF Review" as defined in [RFC5226].
+
+ Values in the range 64 to 127 (inclusive) are reserved for variable-
+ length LCT Header Extensions and assignments shall be made on the
+ "Specification Required" basis as defined in [RFC5226].
+
+ Values in the range 128 to 191 (inclusive) are reserved for use for
+ fixed-length LCT Header Extensions and assignments shall be made
+ through "IETF Review" as defined in [RFC5226].
+
+ Values in the range 192 to 255 (inclusive) are reserved for fixed-
+ length LCT Header Extensions and assignments shall be made on the
+ "Specification Required" basis as defined in [RFC5226].
+
+ Initial values for the LCT Header Extension Type registry are defined
+ in Section 9.2.
+
+ Note that the previous Experimental version of this specification
+ reserved values in the ranges [64, 127] and [192, 255] for PI-
+ specific LCT Header Extensions. In the interest of simplification
+ and since there were no overlapping allocations of these LCT Header
+ Extension Type values by PIs, this document specifies a single flat
+ space for LCT Header Extension Types.
+
+9.2. LCT Header Extension Type Registration
+
+ This document registers three values in the LCT Header Extension Type
+ namespace as follows:
+
+ +-------+----------+--------------------+
+ | Value | Name | Reference |
+ +-------+----------+--------------------+
+ | 0 | EXT_NOP | This specification |
+ | | | |
+ | 1 | EXT_AUTH | This specification |
+ | | | |
+ | 2 | EXT_TIME | This specification |
+ +-------+----------+--------------------+
+
+10. Acknowledgments
+
+ This specification is substantially based on RFC 3451 [RFC3451] and
+ thus credit for the authorship of this document is primarily due to
+ the authors of RFC 3451: Mike Luby, Jim Gemmel, Lorenzo Vicisano,
+ Luigi Rizzo, Mark Handley, and Jon Crowcroft. Bruce Lueckenhoff,
+
+
+
+
+Luby, et al. Standards Track [Page 30]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ Hayder Radha, and Justin Chapweske also contributed to RFC 3451.
+ Additional thanks are due to Vincent Roca, Rod Walsh, and Toni Paila
+ for contributions to this update to Proposed Standard.
+
+11. Changes from RFC 3451
+
+ This section summarizes the changes that were made from the
+ Experimental version of this specification published as RFC 3451
+ [RFC3451]:
+
+ o Removed the 'Statement of Intent' from the introduction. (The
+ statement of intent was meant to clarify the "Experimental" status
+ of RFC 3451.)
+
+ o Inclusion of material from ALC that is applicable in the more
+ general LCT context.
+
+ o Creation of an IANA registry for LCT Header Extensions.
+
+ o Allocation of the 2 'reserved' bits in the LCT header as
+ "Protocol-Specific Indication" - usage to be defined by protocol
+ instantiations.
+
+ o Removal of the Sender Current Time and Expected Residual Time LCT
+ header fields.
+
+ o Inclusion of a new Header Extension, EXT_TIME, to replace the SCT
+ and ERT and provide for future extension of timing capabilities.
+
+12. References
+
+12.1. Normative References
+
+ [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
+ August 1980.
+
+ [RFC1112] Deering, S., "Host extensions for IP multicasting",
+ STD 5, RFC 1112, August 1989.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error
+ Correction (FEC) Building Block", RFC 5052,
+ August 2007.
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 31]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing
+ an IANA Considerations Section in RFCs", BCP 26,
+ RFC 5226, May 2008.
+
+12.2. Informative References
+
+ [ALC-PI] Luby, M., Watson, M., and L. Vicisano, "Asynchronous
+ Layered Coding (ALC) Protocol Instantiation", Work
+ in Progress, September 2009.
+
+ [BYE1998] Byers, J., Luby, M., Mitzenmacher, M., and A. Rege,
+ "Fountain Approach to Reliable Distribution of Bulk
+ Data", Proceedings ACM SIGCOMM'98, Vancouver, Canada,
+ September 1998.
+
+ [BYE2000] Byers, J., Frumin, M., Horn, G., Luby, M.,
+ Mitzenmacher, M., Rotter, A., and W. Shaver, "FLID-DL:
+ Congestion Control for Layered Multicast", Proceedings
+ of Second International Workshop on Networked Group
+ Communications (NGC 2000), Palo Alto, CA,
+ November 2000.
+
+ [GEM2000] Gemmell, J., Schooler, E., and J. Gray, "Fcast
+ Multicast File Distribution", IEEE Network, Vol. 14,
+ No. 1, pp. 58-68, January 2000.
+
+ [Perrig2001] Perrig, A., Canetti, R., Song, D., and J. Tyger,
+ "Efficient and Secure Source Authentication for
+ Multicast", Network and Distributed System Security
+ Symposium, NDSS 2001, pp. 35-46, February 2001.
+
+ [RFC1305] Mills, D., "Network Time Protocol (Version 3)
+ Specification, Implementation", RFC 1305, March 1992.
+
+ [RFC2357] Mankin, A., Romanov, A., Bradner, S., and V. Paxson,
+ "IETF Criteria for Evaluating Reliable Multicast
+ Transport and Application Protocols", RFC 2357,
+ June 1998.
+
+ [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session
+ Announcement Protocol", RFC 2974, October 2000.
+
+ [RFC3048] Whetten, B., Vicisano, L., Kermode, R., Handley, M.,
+ Floyd, S., and M. Luby, "Reliable Multicast Transport
+ Building Blocks for One-to-Many Bulk-Data Transfer",
+ RFC 3048, January 2001.
+
+
+
+
+
+Luby, et al. Standards Track [Page 32]
+
+RFC 5651 LCT Building Block October 2009
+
+
+ [RFC3269] Kermode, R. and L. Vicisano, "Author Guidelines for
+ Reliable Multicast Transport (RMT) Building Blocks and
+ Protocol Instantiation documents", RFC 3269,
+ April 2002.
+
+ [RFC3451] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L.,
+ Handley, M., and J. Crowcroft, "Layered Coding
+ Transport (LCT) Building Block", RFC 3451,
+ December 2002.
+
+ [RFC3453] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L.,
+ Handley, M., and J. Crowcroft, "The Use of Forward
+ Error Correction (FEC) in Reliable Multicast",
+ RFC 3453, December 2002.
+
+ [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
+ Jacobson, "RTP: A Transport Protocol for Real-Time
+ Applications", STD 64, RFC 3550, July 2003.
+
+ [RFC3738] Luby, M. and V. Goyal, "Wave and Equation Based Rate
+ Control (WEBRC) Building Block", RFC 3738, April 2004.
+
+ [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP:
+ Session Description Protocol", RFC 4566, July 2006.
+
+ [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast
+ for IP", RFC 4607, August 2006.
+
+ [RIZ1997a] Rizzo, L., "Effective Erasure Codes for Reliable
+ Computer Communication Protocols", ACM SIGCOMM Computer
+ Communication Review, Vol.27, No.2, pp.24-36,
+ April 1997.
+
+ [RIZ1997b] Rizzo, L. and L. Vicisano, "Reliable Multicast Data
+ Distribution protocol based on software FEC
+ techniques", Proceedings of the Fourth IEEE Workshop on
+ the Architecture and Implementation of High Performance
+ Communication Systems, HPCS'97, Chalkidiki Greece,
+ June 1997.
+
+ [RIZ2000] Rizzo, L., "PGMCC: A TCP-friendly single-rate multicast
+ congestion control scheme", Proceedings of SIGCOMM
+ 2000, Stockholm Sweden, August 2000.
+
+ [VIC1998] Vicisano, L., Rizzo, L., and J. Crowcroft, "TCP-like
+ Congestion Control for Layered Multicast Data
+ Transfer", IEEE Infocom'98, San Francisco, CA,
+ March 1998.
+
+
+
+Luby, et al. Standards Track [Page 33]
+
+RFC 5651 LCT Building Block October 2009
+
+
+Authors' Addresses
+
+ Michael Luby
+ Qualcomm, Inc.
+ 3165 Kifer Rd.
+ Santa Clara, CA 95051
+ US
+
+ EMail: luby@qualcomm.com
+
+
+ Mark Watson
+ Qualcomm, Inc.
+ 3165 Kifer Rd.
+ Santa Clara, CA 95051
+ US
+
+ EMail: watson@qualcomm.com
+
+
+ Lorenzo Vicisano
+ Qualcomm, Inc.
+ 3165 Kifer Rd.
+ Santa Clara, CA 95051
+ US
+
+ EMail: vicisano@qualcomm.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Luby, et al. Standards Track [Page 34]
+