From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc3450.txt | 1907 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1907 insertions(+) create mode 100644 doc/rfc/rfc3450.txt (limited to 'doc/rfc/rfc3450.txt') diff --git a/doc/rfc/rfc3450.txt b/doc/rfc/rfc3450.txt new file mode 100644 index 0000000..2d9104d --- /dev/null +++ b/doc/rfc/rfc3450.txt @@ -0,0 +1,1907 @@ + + + + + + +Network Working Group M. Luby +Request for Comments: 3450 Digital Fountain +Category: Experimental J. Gemmell + Microsoft + L. Vicisano + Cisco + L. Rizzo + Univ. Pisa + J. Crowcroft + Cambridge Univ. + December 2002 + + + Asynchronous Layered Coding (ALC) Protocol Instantiation + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. It does not specify an Internet standard of any kind. + Discussion and suggestions for improvement are requested. + Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This document describes the Asynchronous Layered Coding (ALC) + protocol, a massively scalable reliable content delivery protocol. + Asynchronous Layered Coding combines the Layered Coding Transport + (LCT) building block, a multiple rate congestion control building + block and the Forward Error Correction (FEC) building block to + provide congestion controlled reliable asynchronous delivery of + content to an unlimited number of concurrent receivers from a single + sender. + +Table of Contents + + 1. Introduction.................................................2 + 1.1 Delivery service models...................................3 + 1.2 Scalability...............................................5 + 1.3 Environmental Requirements and Considerations.............6 + 2. Architecture Definition......................................8 + 2.1 LCT building block........................................9 + 2.2 Multiple rate congestion control building block..........10 + 2.3 FEC building block.......................................11 + 2.4 Session Description......................................13 + + + +Luby, et. al. Experimental [Page 1] + +RFC 3450 ALC protocol instantiation December 2002 + + + 2.5 Packet authentication building block.....................14 + 3. Conformance Statement.......................................14 + 4. Functionality Definition....................................14 + 4.1 Packet format used by ALC................................15 + 4.2 Detailed Example of Packet format used by ALC............16 + 4.3 Header-Extension Fields..................................23 + 4.4 Sender Operation.........................................26 + 4.5 Receiver Operation.......................................27 + 5. Security Considerations.....................................29 + 6. IANA Considerations.........................................31 + 7. Intellectual Property Issues................................31 + 8. Acknowledgments.............................................31 + 9. References..................................................31 + Authors' Addresses.............................................33 + Full Copyright Statement.......................................34 + +1. Introduction + + This document describes a massively scalable reliable content + delivery protocol, Asynchronous Layered Coding (ALC), for multiple + rate congestion controlled reliable content delivery. The protocol + is specifically designed to provide massive scalability using IP + multicast as the underlying network service. Massive scalability in + this context means the number of concurrent receivers for an object + is potentially in the millions, the aggregate size of objects to be + delivered in a session ranges from hundreds of kilobytes to hundreds + of gigabytes, each receiver can initiate reception of an object + asynchronously, the reception rate of each receiver in the session is + the maximum fair bandwidth available between that receiver and the + sender, and all of this can be supported using a single sender. + + Because ALC is focused on reliable content delivery, the goal is to + deliver objects as quickly as possible to each receiver while at the + same time remaining network friendly to competing traffic. Thus, the + congestion control used in conjunction with ALC should strive to + maximize use of available bandwidth between receivers and the sender + while at the same time backing off aggressively in the face of + competing traffic. + + The sender side of ALC consists of generating packets based on + objects to be delivered within the session and sending the + appropriately formatted packets at the appropriate rates to the + channels associated with the session. The receiver side of ALC + consists of joining appropriate channels associated with the session, + performing congestion control by adjusting the set of joined channels + associated with the session in response to detected congestion, and + + + + + +Luby, et. al. Experimental [Page 2] + +RFC 3450 ALC protocol instantiation December 2002 + + + using the packets to reliably reconstruct objects. All information + flow in an ALC session is in the form of data packets sent by a + single sender to channels that receivers join to receive data. + + ALC does specify the Session Description needed by receivers before + they join a session, but the mechanisms by which receivers obtain + this required information is outside the scope of ALC. An + application that uses ALC may require that receivers report + statistics on their reception experience back to the sender, but the + mechanisms by which receivers report back statistics is outside the + scope of ALC. In general, ALC is designed to be a minimal protocol + instantiation that provides reliable content delivery without + unnecessary limitations to the scalability of the basic protocol. + + This document is a product of the IETF RMT WG and follows the general + guidelines provided in RFC 3269 [8]. + + 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 BCP 14, RFC 2119 [2]. + + Statement of Intent + + This memo contains part of the definitions necessary to fully + specify a Reliable Multicast Transport protocol in accordance with + RFC2357. As per RFC2357, the use of any reliable multicast + protocol in the Internet requires an adequate congestion control + scheme. + + While waiting for such a scheme to be available, or for an + existing scheme to be proven adequate, the Reliable Multicast + Transport working group (RMT) publishes this Request for Comments + in the "Experimental" category. + + It is the intent of RMT to re-submit this specification as an IETF + Proposed Standard as soon as the above condition is met. + +1.1 Delivery service models + + ALC can support several different reliable content delivery service + models. Some examples are briefly described here. + + Push service model. + + A push model is a sender initiated concurrent delivery of objects to + a selected set of receivers. 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 + + + +Luby, et. al. Experimental [Page 3] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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. In this example, + the sender uses ALC to generate packets based on the object and send + packets to channels associated with the session, and the receivers + use ALC to receive packets from the session and reconstruct the + object. + + There are several features ALC provides to support the push model. + For example, the sender can optionally include an Expected Residual + Time (ERT) in the packet header 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 end sending packet to the session and a Close + Object flag that indicates when the sender is about to end sending + packets to the session for the object identified by the Transmission + Object ID. However, these 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. + + The push model is particularly attractive in satellite networks and + wireless networks. In these environments a session may include one + channel and a sender may send packets at a fixed rate to this + channel, but sending at a fixed rate without congestion control is + outside the scope of this document. + + + + + + + +Luby, et. al. Experimental [Page 4] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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 a + single object. For example a popular software update might be + transmitted using ALC 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. + + Other service models. + + There may be other reliable content delivery service models that can + be supported by ALC. The description of the potential applications, + the appropriate delivery service model, and the additional mechanisms + to support such functionalities when combined with ALC is beyond the + scope of this document. + +1.2 Scalability + + Massive scalability is a primary design goal for ALC. IP multicast + is inherently massively scalable, but the best effort service that it + provides does not provide session management functionality, + congestion control or reliability. ALC provides all of this on top + of IP multicast without sacrificing any of the inherent scalability + of IP multicast. ALC has the following properties: + + o To each receiver, it appears as if though there is a dedicated + session from the sender to the receiver, where the reception rate + adjusts to congestion along the path from sender to receiver. + + o To the sender, there is no difference in load or outgoing rate if + one receiver is joined to the session or a million (or any number + of) receivers are joined to the session, independent of when the + receivers join and leave. + + o No feedback packets are required from receivers to the sender. + + o Almost all packets in the session that pass through a bottleneck + link are utilized by downstream receivers, and the session shares + the link with competing flows fairly in proportion to their + utility. + + + + + +Luby, et. al. Experimental [Page 5] + +RFC 3450 ALC protocol instantiation December 2002 + + + Thus, ALC provides a massively scalable content delivery transport + that is network friendly. + + ALC intentionally omits any application specific features that could + potentially limit its scalability. By doing so, ALC provides a + minimal protocol that is massively scalable. Applications may be + built on top of ALC to provide additional features that may limit the + scalability of the application. Such applications are outside the + scope of this document. + +1.3 Environmental Requirements and Considerations + + All of the environmental requirements and considerations that apply + to the LCT building block [11], the FEC building block [10], the + multiple rate congestion control building block and to any additional + building blocks that ALC uses also apply to ALC. + + ALC requires connectivity between a sender and receivers, but does + not require connectivity from receivers to a sender. ALC 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 ALC is unlimited. + However, ALC requires receivers to obtain the Session Description + out-of-band before joining a session and some implementations of this + may limit scalability. + + If a receiver is joined to multiple ALC sessions then the receiver + MUST be able to uniquely identify and demultiplex packets to the + correct session. The Transmission Session Identifier (TSI) that MUST + appear in each packet header is used for this purpose. The TSI is + scoped by the IP address of the sender, and the IP address of the + sender together with the TSI uniquely identify the session. Thus, + the demultiplexing MUST be done on the basis of the IP address of the + sender and the TSI of the session from that sender. + + ALC is presumed to be used with an underlying IP multicast network or + transport service that is a "best effort" service that does not + guarantee packet reception, packet reception order, and which does + not have any support for flow or congestion control. There are + currently two models of multicast delivery, the Any-Source Multicast + (ASM) model as defined in RFC 1112 [3] and the Source-Specific + Multicast (SSM) model as defined in [7]. ALC 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 an ALC channel address consists + of the pair (S,G), where S is the IP address of the sender and G is a + + + + + +Luby, et. al. Experimental [Page 6] + +RFC 3450 ALC protocol instantiation December 2002 + + + multicast group address. When using SSM, a sender S sends packets to + an SSM channel (S,G), and an ALC channel address coincides with the + SSM channel address. + + A sender can locally allocate unique SSM channel addresses, and this + makes allocation of ALC channel addresses easy with SSM. To allocate + ALC channel addresses using ASM, the sender must uniquely choose the + ASM multicast group address across the scope of the group, and this + makes allocation of ALC channel addresses more difficult with ASM. + + ALC channels and SSM channels coincide, and thus the receiver will + only receive packets sent to the requested ALC channel. With ASM, + the receiver joins an ALC 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 attacks. In either case, + receivers SHOULD use mechanisms to filter out packets from unwanted + sources. + + Other issues specific to ALC with respect to ASM is the way the + multiple rate congestion control building block interacts with ASM. + The congestion control building block may use the measured difference + in time between when a join to a channel is sent and when the first + packet from the channel arrives in determining the receiver reception + rate. The congestion control building block may also uses packet + sequence numbers per channel to measure losses, and this is also used + to determine the receiver reception rate. These features raise two + concerns with respect to ASM: The time difference between when the + join to a channel is sent and when the first packet arrives can be + significant due to the use of Rendezvous Points (RPs) and the MSDP + protocol, and packets can be lost in the switch over from the (*,G) + join to the RP and the (S,G) join directly to the sender. Both of + these issues could potentially substantially degrade the reception + rate of receivers. To ameliorate these concerns, it is RECOMMENDED + that the RP be as close to the sender as possible. SSM does not + share these same concerns. For a fuller consideration of these + issues, consult the multiple rate congestion control building block. + + Some networks are not amenable to some congestion control protocols + that could be used with ALC. 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. + + ALC is compatible with either IPv4 or IPv6 as no part of the packet + is IP version specific. + + + + + +Luby, et. al. Experimental [Page 7] + +RFC 3450 ALC protocol instantiation December 2002 + + +2. Architecture Definition + + ALC uses the LCT building block [11] to provide in-band session + management functionality. ALC uses a multiple rate congestion + control building block that is compliant with RFC 2357 [12] to + provide congestion control that is feedback free. Receivers adjust + their reception rates individually by joining and leaving channels + associated with the session. ALC uses the FEC building block [10] to + provide reliability. The sender generates encoding symbols based on + the object to be delivered using FEC codes and sends them in packets + to channels associated with the session. Receivers simply wait for + enough packets to arrive in order to reliably reconstruct the object. + Thus, there is no request for retransmission of individual packets + from receivers that miss packets in order to assure reliable + reception of an object, and the packets and their rate of + transmission out of the sender can be independent of the number and + the individual reception experiences of the receivers. + + The definition of a session for ALC is the same as it is for LCT. An + ALC 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. Congestion control is performed over the + aggregate of packets sent to channels belonging to a session. The + fact that an ALC session is restricted to a single sender does not + preclude the possibility of receiving packets for the same objects + from multiple senders. However, each sender would be sending packets + to a a different session to which congestion control is individually + applied. Although receiving concurrently from multiple sessions is + allowed, how this is done at the application level is outside the + scope of this document. + + ALC is a protocol instantiation as defined in RFC 3048 [16]. This + document describes version 1 of ALC which MUST use version 1 of LCT + described in [11]. Like LCT, ALC is designed to be used with the IP + multicast network service. This specification defines ALC as payload + of the UDP transport protocol [15] that supports IP multicast + delivery of packets. Future versions of this specification, or + companion documents may extend ALC to use the IP network layer + service directly. ALC could be used as the basis for designing a + protocol that uses a different underlying network service such as + unicast UDP, but the design of such a protocol is outside the scope + of this document. + + An ALC packet header immediately follows the UDP header and consists + of the default LCT header that is described in [11] followed by the + FEC Payload ID that is described in [10]. The Congestion Control + Information field within the LCT header carries the required + + + +Luby, et. al. Experimental [Page 8] + +RFC 3450 ALC protocol instantiation December 2002 + + + Congestion Control Information that is described in the multiple rate + congestion control building block specified that is compliant with + RFC 2357 [12]. The packet payload that follows the ALC packet header + consists of encoding symbols that are identified by the FEC Payload + ID as described in [10]. + + Each receiver is required to obtain a Session Description before + joining an ALC session. As described later, the Session Description + includes out-of-band information required for the LCT, FEC and the + multiple rate congestion control building blocks. The FEC Object + Transmission Information specified in the FEC building block [10] + required for each object to be received by a receiver can be + communicated to a receiver either out-of-band or in-band using a + Header Extension. The means for communicating the Session + Description and the FEC Object Transmission Information to a receiver + is outside the scope of this document. + +2.1 LCT building block + + LCT requires receivers to be able to uniquely identify and + demultiplex packets associated with an LCT session, and ALC inherits + and strengthens this requirement. A Transport Session Identifier + (TSI) MUST be associated with each session and MUST be carried in the + LCT header of each ALC packet. The TSI is scoped by the sender IP + address, and the (sender IP address, TSI) pair MUST uniquely identify + the session. + + The LCT header contains a Congestion Control Information (CCI) field + that MUST be used to carry the Congestion Control Information from + the specified multiple rate congestion control protocol. There is a + field in the LCT header that specifies the length of the CCI field, + and the multiple rate congestion control building block MUST uniquely + identify a format of the CCI field that corresponds to this length. + + The LCT header contains a Codepoint field that MAY be used to + communicate to a receiver the settings for information that may vary + during a session. If used, the mapping between settings and + Codepoint values is to be communicated in the Session Description, + and this mapping is outside the scope of this document. For example, + the FEC Encoding ID that is part of the FEC Object Transmission + Information as specified in the FEC building block [10] could vary + for each object carried in the session, and the Codepoint value could + be used to communicate the FEC Encoding ID to be used for each + object. The mapping between FEC Encoding IDs and Codepoints could + be, for example, the identity mapping. + + + + + + +Luby, et. al. Experimental [Page 9] + +RFC 3450 ALC protocol instantiation December 2002 + + + If more than one object is to be carried within a session then the + Transmission Object Identifier (TOI) MUST be used in the LCT header + to identify which packets are to be associated with which objects. + In this case the receiver MUST use the TOI to associate received + packets with objects. The TOI is scoped by the IP address of the + sender and the TSI, i.e., the TOI is scoped by the session. The TOI + for each object is REQUIRED to be unique within a session, but MAY + NOT be unique across sessions. Furthermore, the same object MAY have + a different TOI in different sessions. The mapping between TOIs and + objects carried in a session is outside the scope of this document. + + If only one object is carried within a session then the TOI MAY be + omitted from the LCT header. + + The default LCT header from version 1 of the LCT building block [11] + MUST be used. + +2.2 Multiple rate congestion control building block + + Implementors of ALC MUST implement a multiple rate feedback-free + congestion control building block that is in accordance to RFC 2357 + [12]. Congestion control MUST be applied to all packets within a + session independently of which information about which object is + carried in each packet. Multiple rate congestion control is + specified because of its suitability to scale massively and because + of its suitability for reliable content delivery. The multiple rate + congestion control building block MUST specify in-band Congestion + Control Information (CCI) that MUST be carried in the CCI field of + the LCT header. The multiple rate congestion control building block + MAY specify more than one format, but it MUST specify at most one + format for each of the possible lengths 32, 64, 96 or 128 bits. The + value of C in the LCT header that determines the length of the CCI + field MUST correspond to one of the lengths for the CCI defined in + the multiple rate congestion control building block, this length MUST + be the same for all packets sent to a session, and the CCI format + that corresponds to the length as specified in the multiple rate + congestion control building block MUST be the format used for the CCI + field in the LCT header. + + When using a multiple rate congestion control building block a sender + sends packets in the session to several channels at potentially + different rates. Then, individual receivers adjust their reception + rate within a session by adjusting which set of channels they are + joined to at each point in time depending on the available bandwidth + between the receiver and the sender, but independent of other + receivers. + + + + + +Luby, et. al. Experimental [Page 10] + +RFC 3450 ALC protocol instantiation December 2002 + + +2.3 FEC building block + + The FEC building block [10] provides reliable object delivery within + an ALC session. Each object sent in the session is independently + encoded using FEC codes as described in [9], which provide a more + in-depth description of the use of FEC codes in reliable content + delivery protocols. All packets in an ALC session MUST contain an + FEC Payload ID in a format that is compliant with the FEC building + block [10]. The FEC Payload ID uniquely identifies the encoding + symbols that constitute the payload of each packet, and the receiver + MUST use the FEC Payload ID to determine how the encoding symbols + carried in the payload of the packet were generated from the object + as described in the FEC building block. + + As described in [10], a receiver is REQUIRED to obtain the FEC Object + Transmission Information for each object for which data packets are + received from the session. The FEC Object Transmission Information + includes: + + o The FEC Encoding ID. + + o If an Under-Specified FEC Encoding ID is used then the FEC + Instance ID associated with the FEC Encoding ID. + + o For each object in the session, the length of the object in + bytes. + + o The additional required FEC Object Transmission Information for + the FEC Encoding ID as prescribed in the FEC building block [10]. + For example, when the FEC Encoding ID is 128, the required FEC + Object Transmission Information is the number of source blocks + that the object is partitioned into and the length of each source + block in bytes. + + Some of the FEC Object Transmission Information MAY be implicit based + on the implementation. As an example, source block lengths may be + derived by a fixed algorithm from the object length. As another + example, it may be that all source blocks are the same length and + this is what is passed out-of-band to the receiver. As another + example, it could be that the full sized source block length is + provided and this is the length used for all but the last source + block, which is calculated based on the full source block length and + the object length. As another example, it could be that the same FEC + Encoding ID and FEC Instance ID are always used for a particular + application and thus the FEC Encoding ID and FEC Instance ID are + implicitly defined. + + + + + +Luby, et. al. Experimental [Page 11] + +RFC 3450 ALC protocol instantiation December 2002 + + + Sometimes the objects that will be sent in a session are completely + known before the receiver joins the session, in which case the FEC + Object Transmission Information for all objects in the session can be + communicated to receivers before they join the session. At other + times the objects may not know when the session begins, or receivers + may join a session in progress and may not be interested in some + objects for which transmission has finished, or receivers may leave a + session before some objects are even available within the session. + In these cases, the FEC Object Transmission Information for each + object may be dynamically communicated to receivers at or before the + time packets for the object are received from the session. This may + be accomplished using either an out-of-band mechanism, in-band using + the Codepoint field or a Header Extension, or any combination of + these methods. How the FEC Object Transmission Information is + communicated to receivers is outside the scope of this document. + + If packets for more than one object are transmitted within a session + then a Transmission Object Identifier (TOI) that uniquely identifies + objects within a session MUST appear in each packet header. Portions + of the FEC Object Transmission Information could be the same for all + objects in the session, in which case these portions can be + communicated to the receiver with an indication that this applies to + all objects in the session. These portions may be implicitly + determined based on the application, e.g., an application may use the + same FEC Encoding ID for all objects in all sessions. If there is a + portion of the FEC Object Transmission Information that may vary from + object to object and if this FEC Object Transmission Information is + communicated to a receiver out-of-band then the TOI for the object + MUST also be communicated to the receiver together with the + corresponding FEC Object Transmission Information, and the receiver + MUST use the corresponding FEC Object Transmission Information for + all packets received with that TOI. How the TOI and corresponding + FEC Object Transmission Information is communicated out-of-band to + receivers is outside the scope of this document. + + It is also possible that there is a portion of the FEC Object + Transmission Information that may vary from object to object that is + carried in-band, for example in the CodePoint field or in Header + Extensions. How this is done is outside the scope of this document. + In this case the FEC Object Transmission Information is associated + with the object identified by the TOI carried in the packet. + + + + + + + + + + +Luby, et. al. Experimental [Page 12] + +RFC 3450 ALC protocol instantiation December 2002 + + +2.4 Session Description + + The Session Description that a receiver is REQUIRED to obtain before + joining an ALC session MUST contain the following information: + + o The multiple rate congestion control building block to be used + for the session; + + o The sender IP address; + + o The number of channels in the session; + + o The address and port number used for each channel in the session; + + o The Transport Session ID (TSI) to be used for the session; + + o An indication of whether or not the session carries packets for + more than one object; + + o If Header Extensions are to be used, the format of these Header + Extensions. + + o Enough information to determine the packet authentication scheme + being used, if it is being used. + + How the Session Description is communicated to receivers is outside + the scope of this document. + + The Codepoint field within the LCT portion of the header CAN be used + to communicate in-band some of the dynamically changing information + within a session. To do this, a mapping between Codepoint values and + the different dynamic settings MUST be included within the Session + Description, and then settings to be used are communicated via the + Codepoint value placed into each packet. For example, it is possible + that multiple objects are delivered within the same session and that + a different FEC encoding algorithm is used for different types of + objects. Then the Session Description could contain the mapping + between Codepoint values and FEC Encoding IDs. As another example, + it is possible that a different packet authentication scheme is used + for different packets sent to the session. In this case, the mapping + between the packet authentication scheme and Codepoint values could + be provided in the Session Description. Combinations of settings can + be mapped to Codepoint values as well. For example, a particular + combination of a FEC Encoding ID and a packet authentication scheme + could be associated with a Codepoint value. + + + + + + +Luby, et. al. Experimental [Page 13] + +RFC 3450 ALC protocol instantiation December 2002 + + + The Session Description could also include, but is not limited to: + + o The mappings between combinations of settings and Codepoint + values; + + o The data rates used for each channel; + + o The length of the packet payload; + + o Any information that is relevant to each object being + transported, such as the Object Transmission Information for each + object, when the object will be available within the session and + for how long. + + The Session Description could be in a form such as SDP as defined in + RFC 2327 [5], or XML metadata as defined in RFC 3023 [13], or + HTTP/Mime headers as defined in RFC 2068 [4], etc. It might be + carried in a session announcement protocol such as SAP as defined in + RFC 2974 [6], obtained using a proprietary session control protocol, + located on a web page with scheduling information, or conveyed via + E-mail or other out-of-band methods. Discussion of Session + Description formats and methods for communication of Session + Descriptions to receivers is beyond the scope of this document. + +2.5 Packet authentication building block + + It is RECOMMENDED that implementors of ALC use some packet + authentication scheme to protect the protocol from attacks. An + example of a possibly suitable scheme is described in [14]. Packet + authentication in ALC, if used, is to be integrated through the + Header Extension support for packet authentication provided in the + LCT building block. + +3. Conformance Statement + + This Protocol Instantiation document, in conjunction with the LCT + building block [11], the FEC building block [10] and with a multiple + rate congestion control building block completely specifies a working + reliable multicast transport protocol that conforms to the + requirements described in RFC 2357 [12]. + +4. Functionality Definition + + This section describes the format and functionality of the data + packets carried in an ALC session as well as the sender and receiver + operations for a session. + + + + + +Luby, et. al. Experimental [Page 14] + +RFC 3450 ALC protocol instantiation December 2002 + + +4.1 Packet format used by ALC + + The packet format used by ALC is the UDP header followed by the + default LCT header followed by the FEC Payload ID followed by the + packet payload. The default LCT header is described in the LCT + building block [11] and the FEC Payload ID is described in the FEC + building block [10]. The Congestion Control Information field in the + LCT header contains the REQUIRED Congestion Control Information that + is described in the multiple rate congestion control building block + used. The packet payload contains encoding symbols generated from an + object. If more than one object is carried in the session then the + Transmission Object ID (TOI) within the LCT header MUST be used to + identify which object the encoding symbols are generated from. + Within the scope of an object, encoding symbols carried in the + payload of the packet are identified by the FEC Payload ID as + described in the FEC building block. + + The version number of ALC specified in this document is 1. This + coincides with version 1 of the LCT building block [11] used in this + specification. The LCT version number field should be interpreted as + the ALC version number field. + + The overall ALC packet format is depicted in Figure 1. The packet is + an IP packet, either IPv4 or IPv6, and the IP header precedes the UDP + header. The ALC packet format has no dependencies on the IP version + number. The default LCT header MUST be used by ALC and this default + is described in detail in the LCT building block [11]. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | UDP header | + | | + +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ + | Default LCT header | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | FEC Payload ID | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoding Symbol(s) | + | ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 1 - Overall ALC packet format + + + + + + +Luby, et. al. Experimental [Page 15] + +RFC 3450 ALC protocol instantiation December 2002 + + + In some special cases an ALC sender may need to produce ALC packets + that do not contain any payload. This may be required, for example, + to signal the end of a session or to convey congestion control + information. These data-less packets do not contain the FEC Payload + ID either, but only the LCT header fields. The total datagram + length, conveyed by outer protocol headers (e.g., the IP or UDP + header), enables receivers to detect the absence of the ALC payload + and FEC Payload ID. + +4.2 Detailed Example of Packet format used by ALC + + A detailed example of an ALC packet starting with the LCT header is + shown in Figure 2. In the example, the LCT header is the first 5 + 32-bit words, the FEC Payload ID is the next 2 32-bit words, and the + remainder of the packet is the payload. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 1 | 0 | 0 |1| 1 |0|1|0|0|0| 5 | 128 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Congestion Control Information (CCI, length = 32 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Transport Session Identifier (TSI, length = 32 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Transport Object Identifier (TOI, length = 32 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sender Current Time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Block Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoding Symbol ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoding Symbol(s) | + | ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 2 - A detailed example of the ALC packet format + + The LCT portion of the overall ALC packet header is of variable size, + which is specified by a length field in the third byte of the 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. Unless otherwise noted, numeric constants + in this specification are in decimal (base 10). + + + + + +Luby, et. al. Experimental [Page 16] + +RFC 3450 ALC protocol instantiation December 2002 + + + The function and length and particular setting of the value for each + field in this detailed example of the header is the following, + described in the order of their appearance in the header. + + ALC version number (V): 4 bits + + Indicates the ALC version number. + The ALC version number for this specification is 1 as shown. + This is also the LCT version number. + + Congestion control flag (C): 2 bits + + The Congestion Control Information (CCI) field specified by the + multiple rate congestion control building block is a multiple + of 32-bits in length. The multiple rate congestion control + building block MUST specify a format for the CCI. The + congestion control building block MAY specify formats for + different CCI lengths, where the set of possible lengths is 32, + 64, 96 or 128 bits. The value of C MUST match the length of + exactly one of the possible formats for the congestion control + building block, and this format MUST be used for the CCI field. + The value of C MUST be the same for all packets sent to a + session. + + C=0 indicates the 32-bit CCI field format is to be used. + C=1 indicates the 64-bit CCI field format is to be used. + C=2 indicates the 96-bit CCI field format is to be used. + C=3 indicates the 128-bit CCI field format is to be used. + + In the example C=0 indicates that a 32-bit format is to be + used. + + Reserved (r): 2 bits + + Reserved for future use. A sender MUST set these bits to zero + and a receiver MUST ignore these bits. + + As required, these bits are set to 0 in the example. + + 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. For ALC the length of + the TSI field is REQUIRED to be non-zero. This implies that + the setting S=0 and H=0 MUST NOT be used. + + In the example S=1 and H=0, and thus the TSI is 32-bits in + length. + + + +Luby, et. al. Experimental [Page 17] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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. If more than one + object is to be delivered in the session then the TOI MUST be + used, in which case the setting O=0 and H=0 MUST NOT be used. + + In the example O=1 and H=0, and thus the TOI is 32-bits in + length. + + 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. + + In the example H=0 which indicates that both TSI and TOI are + both multiples of 32-bits in length. + + Sender Current Time present flag (T): 1 bit + + T = 0 indicates that the Sender Current Time (SCT) field is not + present. + T = 1 indicates that the SCT field is present. The SCT is + inserted by senders to indicate to receivers how long the + session has been in progress. + + In the example T=1, which indicates that the SCT is carried in + this packet. + + Expected Residual Time present flag (R): 1 bit + + R = 0 indicates that the Expected Residual Time (ERT) field is + not present. + R = 1 indicates that the ERT field is present. + + The ERT is inserted by senders to indicate to receivers how + much longer packets will be sent to the session for either the + single object carried in the session or for the object + identified by the TOI if there are multiple objects carried in + the session. Senders MUST NOT set R = 1 when the ERT for the + object is more than 2^32-1 time units (approximately 49 days), + where time is measured in units of milliseconds. + + In the example R=0, which indicates that the ERT is not carried + in this packet. + + + +Luby, et. al. Experimental [Page 18] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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. + + In the example A=0, and thus this packet does not indicate the + close of 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 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 packets + 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. + + In the example B=0, and thus this packet does not indicate the + end of sending data packets for the object. + + 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., the FEC Payload ID if the packet + + + +Luby, et. al. Experimental [Page 19] + +RFC 3450 ALC protocol instantiation December 2002 + + + contains a payload, or the end of the packet if the packet + contains no payload. + + In the example HDR_LEN=5 to indicate that the length of the LCT + header portion of the overall ALC is 5 32-bit words. + + Codepoint (CP): 8 bits + + This field is used by ALC to carry the mapping that identifies + settings for portions of the Session Description that can + change within the session. The mapping between Codepoint + values and the settings for portions of the Session Description + is to be communicated out-of-band. + + In the example the portion of the Session Description that can + change within the session is the FEC Encoding ID, and the + identity mapping is used between Codepoint values and FEC + Encoding IDs. Thus, CP=128 identifies FEC Encoding ID 128, the + "Small Block, Large Block and Expandable FEC Codes" as + described in the FEC building block [10]. The FEC Payload ID + associated with FEC Encoding ID 128 is 64-bits in length. + + Congestion Control Information (CCI): 32, 64, 96 or 128 bits + + This is field contains the Congestion Control Information as + defined by the specified multiple rate congestion control + building block. The format of this field is determined by the + multiple rate congestion control building block. + + 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. + This field MUST be 128 bits if C=3. + + In the example, the CCI is 32-bits in length. The format of + the CCI field for the example MUST correspond to the format for + the 32-bit version of the CCI specified in the multiple rate + congestion control building block. + + Transport Session Identifier (TSI): 16, 32 or 48 bits + + The TSI uniquely identifies a session among all sessions from a + particular sender. The TSI is scoped by the sender IP address, + and thus the (sender IP address, TSI) pair uniquely identify + the session. For ALC, the TSI MUST be included in the LCT + header. + + + + + +Luby, et. al. Experimental [Page 20] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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 sessions receivers are subscribed to. + 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. + + In the example the TSI is 32 bits in length. + + Transport Object Identifier (TOI): 0, 16, 32, 48, 64, 80, 96 or 112 + bits. + + This field indicates which object within the session this + packet pertains to. 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 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 lengths of the TSI field plus the TOI field is a + multiple of 32 bits. + + In the example the TOI is 32 bits in length. + + + + + + + +Luby, et. al. Experimental [Page 21] + +RFC 3450 ALC protocol instantiation December 2002 + + + Sender Current Time (SCT): 0 or 32 bits + + This field represents the current clock of the sender at the + time this packet was transmitted, measured in units of 1ms and + computed modulo 2^32 units from the start of the session. + + This field MUST NOT be present if T=0 and MUST be present if + T=1. + + In this example the SCT is present. + + Expected Residual Time (ERT): 0 or 32 bits + + This field represents the sender expected residual transmission + time of packets for either the single object carried in the + session or for the object identified by the TOI if there are + multiple objects carried in the session. + + This field MUST NOT be present if R=0 and MUST be present if + R=1. + + In this example the ERT is not present. + + FEC Payload ID: X bits + + The length and format of the FEC Payload ID depends on the FEC + Encoding ID as described in the FEC building block [10]. The + FEC Payload ID format is determined by the FEC Encoding ID that + MUST be communicated in the Session Description. The Session + Description MAY specify that more than one FEC Encoding ID is + used in the session, in which case the Session Description MUST + contain a mapping that identifies which Codepoint values + correspond to which FEC Encoding IDs. This mapping, if used, + is outside the scope of this document. + + The example packet format corresponds to the format for "Small + Block, Large Block and Expandable FEC Codes" as described in + the FEC building block, for which the associated FEC Encoding + ID 128. For FEC Encoding ID 128, the FEC Payload ID consists + of the following two fields that in total are X = 64 bits in + length: + + Source Block Number (SBN): 32 bits + + The Source Block Number identifies from which source block + of the object the encoding symbol(s) in the payload are + generated. These blocks are numbered consecutively from + + + + +Luby, et. al. Experimental [Page 22] + +RFC 3450 ALC protocol instantiation December 2002 + + + 0 to N-1, where N is the number of source blocks in the + object. + + Encoding Symbol ID (ESI): 32 bits + + The Encoding Symbol ID identifies which specific encoding + symbol(s) generated from the source block are carried in the + packet payload. The exact details of the correspondence + between Encoding Symbol IDs and the encoding symbol(s) in + the packet payload are dependent on the particular encoding + algorithm used as identified by the FEC Encoding ID and by + the FEC Instance ID. + + Encoding Symbol(s): Y bits + + The encoding symbols are what the receiver uses to reconstruct + an object. The total length Y of the encoding symbol(s) in the + packet can be determined by the receiver of the packet by + computing the total length of the received packet and + subtracting off the length of the headers. + +4.3 Header-Extension Fields + + Header Extensions can be used to extend the LCT header portion of the + ALC header to accommodate optional header fields that are not always + used or have variable size. Header Extensions are not used in the + example ALC packet format shown in the previous subsection. Examples + of the use of Header Extensions include: + + o Extended-size versions of already existing header fields. + + o Sender and Receiver authentication 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 ALC without + changing the ALC version number. Non backward-compatible Header + Extensions CANNOT be introduced without changing the ALC version + number. + + + + + +Luby, et. al. Experimental [Page 23] + +RFC 3450 ALC protocol instantiation December 2002 + + + There are two formats for Header Extension fields, as depicted below. + 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. + + 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 3 - 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 (HET between 0 and 127) and MUST NOT + be present for fixed-length extensions (HET 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 + + + +Luby, et. al. Experimental [Page 24] + +RFC 3450 ALC protocol instantiation December 2002 + + + 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. + + Header Extensions are further divided between general LCT extensions + and Protocol Instantiation specific extensions (PI-specific). + General LCT extensions have HET in the ranges 0:63 and 128:191 + inclusive. PI-specific extensions have HET in the ranges 64:127 and + 192:255 inclusive. + + General LCT extensions are intended to allow the 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. + + PI-specific extensions are reserved for PI-specific use with semantic + and default parsing actions defined by the PI. + + The following general LCT Header Extension types are defined: + + EXT_NOP=0 No-Operation extension. + The information present in this extension field MUST be + ignored by receivers. + + EXT_AUTH=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 MUST NOT be + postponed by any such full packet authentication. + + All senders and receivers implementing ALC MUST support the EXT_NOP + Header Extension and MUST recognize EXT_AUTH, but MAY NOT be able to + parse its content. + + + +Luby, et. al. Experimental [Page 25] + +RFC 3450 ALC protocol instantiation December 2002 + + + For this version of ALC, the following PI-specific extension is + defined: + + EXT_FTI=64 FEC Object Transmission Information extension + The purpose of this extension is to carry in-band the + FEC Object Transmission Information for an object. 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. + +4.4 Sender Operation + + The sender operation when using ALC includes all the points made + about the sender operation when using the LCT building block [11], + the FEC building block [10] and the multiple rate congestion control + building block. + + A sender using ALC MUST make available the required Session + Description as described in Section 2.4. A sender also MUST make + available the required FEC Object Transmission Information as + described in Section 2.3. + + Within a session a sender transmits a sequence of packets to the + channels associated with the session. The ALC sender MUST obey the + rules for filling in the CCI field in the packet headers and MUST + send packets at the appropriate rates to the channels associated with + the session as dictated by the multiple rate congestion control + building block. + + The ALC sender MUST use the same TSI for all packets in the session. + Several objects MAY be delivered within the same ALC session. If + more than one object is to be delivered within a session then the + sender MUST use the TOI field and each object MUST be identified by a + unique TOI within the session, and the sender MUST use corresponding + TOI for all packets pertaining to the same object. The FEC Payload + ID MUST correspond to the encoding symbol(s) for the object carried + in the payload of the packet. + + Objects MAY be transmitted sequentially within a session, and they + MAY be transmitted concurrently. However, 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 that they have no interest in. However, there are no rules + with respect to mixing packets for different objects carried within + the session. Although this issue affects the efficiency of the + + + +Luby, et. al. Experimental [Page 26] + +RFC 3450 ALC protocol instantiation December 2002 + + + protocol, it does not affect the correctness nor the inter- + operability of ALC between senders and receivers. + + 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. + + It is RECOMMENDED that packet authentication be used. If packet + authentication is used then the Header Extensions described in + Section 4.3 MUST be used to carry the authentication. + + This document does not pose any restriction on packet sizes. + However, network efficiency considerations recommend that the sender + uses 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 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 the multiple rate congestion + control building block. + +4.5 Receiver Operation + + The receiver operation when using ALC includes all the points made + about the receiver operation when using the LCT building block [11], + the FEC building block [10] and the multiple rate congestion control + building block. + + To be able to participate in a session, a receiver MUST obtain the + REQUIRED Session Description as listed in Section 2.4. How receivers + obtain a Session Description is outside the scope of this document. + + To be able to be a receiver in a session, the receiver MUST be able + to process the ALC 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 the ALC header, it MUST drop + from the session. + + To be able to participate in a session, a receiver MUST implement the + multiple rate congestion control building block using the Congestion + Control Information field provided in the LCT header. If a receiver + is not able to implement the multiple rate congestion control + building block it MUST NOT join the session. + + + + + +Luby, et. al. Experimental [Page 27] + +RFC 3450 ALC protocol instantiation December 2002 + + + Several objects can be carried either sequentially or concurrently + within the same session. In this case, each object is identified by + a unique TOI. Note that even if a sender 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 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. + + As described in Section 2.3, a receiver MUST obtain the required FEC + Object Transmission Information for each object for which the + receiver receives and processes packets. + + A receiver MAY concurrently join multiple ALC sessions from one or + more senders. The receiver MUST perform congestion control on each + such session. The receiver MAY make choices to optimize the packet + flow performance across multiple sessions, as long as the receiver + still adheres to the multiple rate congestion control building block + for each session individually. + + Upon receipt of each packet the receiver proceeds with the following + steps in the order listed. + + (1) The receiver MUST parse the packet header and verify that it is a + valid header. If it is not valid then the packet MUST be + discarded without further processing. If multiple packets are + received that cannot be parsed then the receiver SHOULD leave the + session. + + (2) The receiver MUST verify that the sender IP address together with + the TSI carried in the header matches one of the (sender IP + address, TSI) pairs that was received in a Session Description + and that the receiver is currently joined to. If there is not a + match then the packet MUST be discarded without further + processing. If multiple packets are received with non-matching + (sender IP address, TSI) values then the receiver SHOULD leave + the session. If the receiver is joined to multiple ALC sessions + then the remainder of the steps are performed within the scope of + the (sender IP address, TSI) session of the received packet. + + (3) The receiver MUST process and act on the CCI field in accordance + with the multiple rate congestion control building block. + + (4) If more than one object is carried in the session, the receiver + MUST verify that the TOI carried in the LCT header is valid. If + the TOI is not valid, the packet MUST be discarded without + further processing. + + + +Luby, et. al. Experimental [Page 28] + +RFC 3450 ALC protocol instantiation December 2002 + + + (5) The receiver SHOULD process the remainder of the packet, + including interpreting the other header fields appropriately, and + using the FEC Payload ID and the encoding symbol(s) in the + payload to reconstruct the corresponding object. + + It is RECOMMENDED that packet authentication be used. If packet + authentication is used then it is RECOMMENDED that the receiver + immediately check the authenticity of a packet before proceeding with + step (3) above. If immediate checking is possible and if the packet + fails the check then the receiver MUST discard the packet and reduce + its reception rate to a minimum before continuing to regulate its + reception rate using the multiple rate congestion control. + + Some packet authentication schemes such as TESLA [14] do not allow an + immediate authenticity check. In this case the receiver SHOULD check + the authenticity of a packet as soon as possible, and if the packet + fails the check then it MUST be discarded before step (5) above and + reduce its reception rate to a minimum before continuing to regulate + its reception rate using the multiple rate congestion control. + +5. Security Considerations + + The same security consideration that apply to the LCT, FEC and the + multiple rate congestion control building blocks also apply to ALC. + + Because of the use of FEC, ALC is especially vulnerable to denial- + of-service attacks by attackers that try to send forged packets to + the session which would prevent successful reconstruction or cause + inaccurate reconstruction of large portions of the object by + receivers. ALC is also particularly affected by such an attack + because many receivers may receive the same forged packet. There are + two ways to protect against such attacks, one at the application + level and one at the packet level. It is RECOMMENDED that prevention + be provided at both levels. + + At the application level, it is RECOMMENDED that an integrity check + on the entire received object be done once the object is + reconstructed to ensure it is the same as the sent object. Moreover, + in order to obtain strong cryptographic integrity protection a + digital signature verifiable by the receiver SHOULD be used to + provide this application level integrity check. However, if even one + corrupted or forged packet is used to reconstruct the object, it is + likely that the received object will be reconstructed incorrectly. + This will appropriately cause the integrity check to fail and in this + case the inaccurately reconstructed object SHOULD be discarded. + Thus, the acceptance of a single forged packet can be an effective + denial of service attack for distributing objects, but an object + integrity check at least prevents inadvertent use of inaccurately + + + +Luby, et. al. Experimental [Page 29] + +RFC 3450 ALC protocol instantiation December 2002 + + + reconstructed objects. The specification of an application level + integrity check of the received object is outside the scope of this + document. + + At the packet level, it is RECOMMENDED that a packet level + authentication be used to ensure that each received packet is an + authentic and uncorrupted packet containing FEC data for the object + arriving from the specified sender. Packet level authentication has + the advantage that corrupt or forged packets can be discarded + individually and the received authenticated packets can be used to + accurately reconstruct the object. Thus, the effect of a denial of + service attack that injects forged packets is proportional only to + the number of forged packets, and not to the object size. Although + there is currently no IETF standard that specifies how to do + multicast packet level authentication, TESLA [14] is a known + multicast packet authentication scheme that would work. + + In addition to providing protection against reconstruction of + inaccurate objects, packet level authentication can also provide some + protection against denial of service attacks on the multiple rate + congestion control. Attackers can try to inject forged packets with + incorrect congestion control information into the multicast stream, + thereby potentially adversely affecting network elements and + receivers downstream of the attack, and much less significantly the + rest of the network and other receivers. Thus, it is also + RECOMMENDED that packet level authentication be used to protect + against such attacks. TESLA [14] can also be used to some extent to + limit the damage caused by such attacks. However, with TESLA a + receiver can only determine if a packet is authentic several seconds + after it is received, and thus an attack against the congestion + control protocol can be effective for several seconds before the + receiver can react to slow down the session reception rate. + + Reverse Path Forwarding checks SHOULD be enabled in all network + routers and switches along the path from the sender to receivers to + limit the possibility of a bad agent injecting forged packets into + the multicast tree data path. + + A receiver with an incorrect or corrupted implementation of the + multiple rate congestion control building block may affect health of + the network in the path between the sender and the receiver, and may + also affect the reception rates of other receivers joined to the + session. It is therefore RECOMMENDED that receivers be required to + identify themselves as legitimate before they receive the Session + Description needed to join the session. How receivers identify + themselves as legitimate is outside the scope of this document. + + + + + +Luby, et. al. Experimental [Page 30] + +RFC 3450 ALC protocol instantiation December 2002 + + + Another vulnerability of ALC is the potential of receivers obtaining + an incorrect Session Description for the session. The consequences + of this could be that legitimate receivers with the wrong Session + Description are 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. To avoid these problems, it is RECOMMENDED that + measures be taken to prevent receivers from accepting incorrect + Session Descriptions, e.g., by using source authentication to ensure + that receivers only accept legitimate Session Descriptions from + authorized senders. How this is done is outside the scope of this + document. + +6. IANA Considerations + + No information in this specification is directly subject to IANA + registration. However, building blocks components used by ALC may + introduce additional IANA considerations. In particular, the FEC + building block used by ALC does require IANA registration of the FEC + codecs used. + +7. Intellectual Property Issues + + The IETF has been notified of intellectual property rights claimed in + regard to some or all of the specification contained in this + document. For more information consult the online list of claimed + rights. + +8. Acknowledgments + + Thanks to Vincent Roca, Justin Chapweske and Roger Kermode for their + detailed comments on this document. + +9. References + + [1] Bradner, S., "The Internet Standards Process -- Revision 3", BCP + 9, RFC 2026, October 1996. + + [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [3] Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC + 1112, August 1989. + + [4] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T. + Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC + 2616, January 1997. + + + + +Luby, et. al. Experimental [Page 31] + +RFC 3450 ALC protocol instantiation December 2002 + + + [5] Handley, M. and V. Jacobson, "SDP: Session Description + Protocol", RFC 2327, April 1998. + + [6] Handley, M., Perkins, C. and E. Whelan, "Session Announcement + Protocol", RFC 2974, October 2000. + + [7] Holbrook, H. W., "A Channel Model for Multicast", Ph.D. + Dissertation, Stanford University, Department of Computer + Science, Stanford, California, August 2001. + + [8] Kermode, R., Vicisano, L., "Author Guidelines for Reliable + Multicast Transport (RMT) Building Blocks and Protocol + Instantiation documents", RFC 3269, April 2002. + + [9] 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. + + [10] Luby, M., Vicisano, L., Gemmell, J., Rizzo, L., Handley, M., and + J. Crowcroft, "Forward Error Correction (FEC) Building Block", + RFC 3452, December 2002. + + [11] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L., Handley, M. and + J. Crowcroft, "Layered Coding Transport (LCT) Building Block", + RFC 3451 December 2002. + + [12] Mankin, A., Romanow, A., Bradner, S. and V. Paxson, "IETF + Criteria for Evaluating Reliable Multicast Transport and + Application Protocols", RFC 2357, June 1998. + + [13] Murata, M., St.Laurent, S. and D. Kohn, "XML Media Types", RFC + 3023, January 2001. + + [14] Perrig, A., Canetti, R., Song, D. and J.D. Tygar, "Efficient and + Secure Source Authentication for Multicast", Network and + Distributed System Security Symposium, NDSS 2001, pp. 35-46, + February 2001. + + [15] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August + 1980. + + [16] 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. Experimental [Page 32] + +RFC 3450 ALC protocol instantiation December 2002 + + +Authors' Addresses + + Michael Luby + Digital Fountain + 39141 Civic Center Dr. + Suite 300 + Fremont, CA, USA, 94538 + + EMail: luby@digitalfountain.com + + + Jim Gemmell + Microsoft Research + 455 Market St. #1690 + San Francisco, CA, 94105 + + EMail: jgemmell@microsoft.com + + + Lorenzo Vicisano + cisco Systems, Inc. + 170 West Tasman Dr. + San Jose, CA, USA, 95134 + + EMail: lorenzo@cisco.com + + + Luigi Rizzo + Dip. Ing. dell'Informazione, + Univ. di Pisa + via Diotisalvi 2, 56126 Pisa, Italy + + EMail: luigi@iet.unipi.it + + + Jon Crowcroft + Marconi Professor of Communications Systems + University of Cambridge + Computer Laboratory + William Gates Building + J J Thomson Avenue + Cambridge CB3 0FD, UK + + EMail: Jon.Crowcroft@cl.cam.ac.uk + + + + + + + +Luby, et. al. Experimental [Page 33] + +RFC 3450 ALC protocol instantiation December 2002 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Luby, et. al. Experimental [Page 34] + -- cgit v1.2.3