Internet Engineering Task Force RMT WG INTERNET-DRAFT M. Luby/Digital Fountain draft-ietf-rmt-bb-webrc-00.txt V. Goyal/Digital Fountain S. Skaria/UC Irvine & DF 18 October 2001 Expires: April 2002 Wave and Equation Based Rate Control: A massively scalable receiver driven congestion control protocol Status of this Document This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as a "work in progress". The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt To view the list Internet-Draft Shadow Directories, see http://www.ietf.org/shadow.html. This document is a product of the IETF RMT WG. Comments should be addressed to the authors, or the WG's mailing list at rmt@lbl.gov. Abstract This document describes Wave and Equation Based Rate Control, a massively scalable congestion control protocol, hereafter referred to as WEBRC. WEBRC can be used for multi-rate congestion control for multicast sessions that scale to an unlimited number of receivers, as well as for unicast sessions Luby/Goyal/Skaria [Page 1] INTERNET-DRAFT Expires: April 2002 October 2001 that require minimal support from the sender per receiver. The sender sends packets to channels that act like rolling waves: At equally spaced intervals of time a channel starts up at a high rate that continually and gradually decreases over a long interval of time. Each WEBRC receiver independently uses a TFRC-like [2] equation-based approach to determine its current target reception rate, and then joins each wave channel either earlier or later in the wave descent in order to increase or decrease the receiver's reception rate. WEBRC is designed to be fair to TCP flows and other WEBRC flows, while requiring minimal performance from the network or the sender in terms of processing join and leave messages. Luby/Goyal/Skaria [Page 2] INTERNET-DRAFT Expires: April 2002 October 2001 Table of Contents 1. Introduction. . . . . . . . . . . . . . . . . . . . . . 4 1.1. Related Documents. . . . . . . . . . . . . . . . . . 5 1.2. Environmental Requirements and Considerations. . . . 5 2. General Architecture. . . . . . . . . . . . . . . . . . 6 3. Packet Congestion Control Information . . . . . . . . . 8 4. Sender Operation. . . . . . . . . . . . . . . . . . . . 9 4.1. Sender inputs and initialization . . . . . . . . . . 9 4.2. Sending packets to the session . . . . . . . . . . . 11 5. Receiver Operation. . . . . . . . . . . . . . . . . . . 11 5.1. Receiver inputs and initialization . . . . . . . . . 12 5.2. Receiver measurements and calculations . . . . . . . 13 5.2.1. Average loss probability. . . . . . . . . . . . . 13 5.2.2. Average round-trip time . . . . . . . . . . . . . 13 5.2.3. Rate Equation . . . . . . . . . . . . . . . . . . 14 5.2.4. Epochs. . . . . . . . . . . . . . . . . . . . . . 14 5.2.5. Average reception rate. . . . . . . . . . . . . . 14 5.2.6. Slow start. . . . . . . . . . . . . . . . . . . . 15 5.2.7. Target rate . . . . . . . . . . . . . . . . . . . 16 5.3. Receiver events. . . . . . . . . . . . . . . . . . . 16 5.3.1. Epoch change. . . . . . . . . . . . . . . . . . . 16 5.3.2. Time slot change. . . . . . . . . . . . . . . . . 16 5.3.3. Join a wave channel . . . . . . . . . . . . . . . 16 5.3.4. Loss event. . . . . . . . . . . . . . . . . . . . 17 5.3.5. Exceptional timeouts. . . . . . . . . . . . . . . 17 6. Security Considerations . . . . . . . . . . . . . . . . 17 7. IANA Considerations . . . . . . . . . . . . . . . . . . 18 8. Intellectual Property Issues. . . . . . . . . . . . . . 18 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . 18 10. References . . . . . . . . . . . . . . . . . . . . . . 18 11. Authors' Addresses . . . . . . . . . . . . . . . . . . 19 12. Full Copyright Statement . . . . . . . . . . . . . . . 20 Luby/Goyal/Skaria [Page 3] INTERNET-DRAFT Expires: April 2002 October 2001 1. Introduction This document specifies Wave and Equation Based Rate Control (WEBRC). WEBRC is a congestion control mechanism designed to be massively scalable for both multicast and unicast flows operating in a Internet environment and competing with TCP traffic. Instead of specifying a complete protocol, this document simply specifies a congestion control mechanism that could be used in a protocol instantiation such as ALC [3] to provide end-to-end congestion control. This document does not discuss reliability or other implementation-related issues that may be associated with a complete protocol instantiation. WEBRC is a receiver-driven congestion control protocol in the spirit of [8] and [1]. This means that all measurements and decisions to raise or lower the reception rate are made by each individual receiver, and these decisions are acted upon by sending join and leave messages for channels to the network in the case of multicast and by sending join and leave messages for channels directly to the sender in the case of unicast. Receivers using WEBRC adjust their reception rate independently of other concerns such as reliability. This is different from TCP, where the congestion control protocol and the reliability protocol are intricately interwoven with one another. Thus, WEBRC takes the same basic approach as TFRC [2]. Reliability can be added by independent means, such as by the use of FEC codes as described in [5] and specified in [6]. WEBRC uses many of the mechanisms of TFRC adjusted to work properly for WEBRC. In particular, each WEBRC receiver measures parameters that are plugged into a TCP-like equation to compute the receiver target reception rate, and adjusts its reception rate up and down to closely approximate the target reception rate. The sender sends packets to multiple channels called wave channels. Each wave channel follows the same pattern of packet rate transmission spread out over equally spaced intervals of time. The pattern of each wave is that it starts at a high rate that decreases gradually and continually over a long interval of time. (Picture an infinite sequence of rolling waves.) The receiver increases its reception rate by joining the next wave channel earlier than it joined the previous wave channel, and the receiver decreases its reception rate by joining the next wave channel later than it joined the previous wave channel. WEBRC is designed to be reasonably fair when competing for bandwidth with TCP flows, where a flow is ``reasonably fair'' if its sending rate is generally within a factor of two of the sending rate of a TCP flow under the same conditions. However WEBRC has a much lower variation of throughput over time compared to TCP, which makes it more suitable for applications such as telephony or streaming media where a relatively smooth sending rate is of importance. Furthermore, WEBRC is designed to Luby/Goyal/Skaria Section 1. [Page 4] INTERNET-DRAFT Expires: April 2002 October 2001 be massively scalable in the sense that the sender is insensitive to the number of receivers joined to a multicast session, and there is a minimal amount of work specific to WEBRC that the sender needs to do for each receiver joined to a unicast session. The penalty of having smoother throughput than TCP while competing fairly for bandwidth is that WEBRC responds slower than TCP to changes in available bandwidth. WEBRC is designed for applications that use a fixed packet size, and vary their packet reception rate in response to congestion. The receiver measures and performs the calculation of congestion control parameters (e.g., the average loss probability) and makes decisions on how to increase or decrease its rate based on these parameters. This is well suited to an application where the sender is handling many concurrent connections, and the receiver has more memory and CPU cycles available for computation. In addition, a receiver-based mechanism is more suitable as a building block for multicast congestion control. 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. 1.1. Related Documents As described in RFC3048, WEBRC is a building block that is intended to be used, in conjunction with other building blocks, to help specify a protocol instantiation. In particular, WEBRC is a suitable congestion control building block to be used by ALC [3]. The information required to be carried in each packet by WEBRC can be carried in the Congestion Control Information field in the LCT header [4]. 1.2. Environmental Requirements and Considerations WEBRC is intended to be a congestion control scheme that can be used in a complete protocol instantiation that delivers objects and streams (both reliable content delivery and streaming of multimedia information). WEBRC is most applicable for sessions that deliver a substantial amount of data, i.e., in length from hundreds of kilobytes to many gigabytes, and whose duration is in the order of tens of seconds or more. WEBRC can be used with both multicast and unicast delivery. WEBRC requires connectivity between a sender and receivers, but does not require connectivity from receivers to a sender for multicast delivery, Luby/Goyal/Skaria Section 1.2. [Page 5] INTERNET-DRAFT Expires: April 2002 October 2001 and requires a small bandwidth connection from receivers to a sender for unicast delivery. WEBRC 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 WEBRC is unlimited. However, in some network environments varying reception rates to receivers may not be advantageous, e.g., when the network is a satellite network with a fixed amount of bandwidth dedicated to a session. 2. General Architecture A WEBRC session comprises a logically related set of channels originating from a single sender that are used for some period of time to carry data packets with a header carrying WEBRC Congestion Control Information. At the network layer, a channel can be uniquely identified by a (sender IP address, group address) pair. For multicast, the group address is a multicast group address. For unicast, the group address is an identifier assigned by the sender so that no two group addresses associated with the sender are the same. For each WEBRC session, the channels within the session are mapped uniquely to consecutive channel numbers. In each packet sent to a channel the channel number that corresponds to the channel is carried in the WEBRC Congestion Control Information. A WEBRC receiver uses the channel number to determine which channel within a session a packet is received from. When packets are received, they are first checked to see that they belong to the appropriate session before WEBRC is applied. For example, if LCT [4] is being used with the session, then the sender IP address together with the Transport Session Identifier supported by LCT would be used to determine which session received packets belong to. The particular details of how this filtering is performed it outside the scope of this document. In the remainder of this document, channels will be referred to by their channel number in the scope of the session. At the sender, time is partitioned into time slots, each of duration TSD seconds. There are a fixed number T of time slot indices associated with a session. As time progresses, the time slot index increases by one modulo T each TSD seconds. WEBRC congestion control is achieved by having the sender send packets associated with a given session to several different channels. Individual receivers dynamically join and leave these channels according to the network congestion as experienced by the receiver. The channels Luby/Goyal/Skaria Section 2. [Page 6] INTERNET-DRAFT Expires: April 2002 October 2001 associated with a session consist of one base channel and T wave channels. The packet rate for all channels varies over time. For the base channel, packets are sent to the channel at a low rate BCR_P at the beginning of a time slot and this rate gradually decreases to P*BCR_P at the end of the time slot, where P < 1 is a constant defined later. This pattern for the base channel repeats over each time slot. For each wave channel i, packets are sent to channel i starting at a high rate MWCR_P and decreasing over time by a fixed fraction P per time slot until a rate of BCR_P is reached at the end of time slot i. Then, for a period of time called the quiescent period, no packets are sent to wave channel i, and thereafter the whole cycle repeats itself, where the duration of the cycle is T*TSD seconds. Thus, the wave channels are going through the same cyclic pattern of packet rate transmission spaced out evenly by TSD seconds. The congestion control adjustments are performed at each receiver independently of all other receivers, and in the case of multicast without any impact on the sender. When a receiver initiates a session it first joins and remains joined to the base channel for the duration of its participation in the session. The packets in the base channel help the receiver orient itself in terms of what the current time slot index is. Before joining a session, the receivers must obtain enough of the session description to start the session. This must include the relevant session parameters needed by a receiver to participate in the session and perform WEBRC congestion control. The session description is determined by the sender, and is typically communicated to the receivers out of band. Once a receiver joins a session the receiver adjusts its rate upwards and downwards by joining wave channels in sequence, from the lowest rate wave channel and moving towards the higher rate wave channels. Since the relative ordering among the channels with respect to their rate depends on the time slot index, it is important that the receiver continually monitor the current time slot index contained in received packets. The reception rate at the receiver is determined by how early each wave channel is joined by the receiver: the earlier the receiver joins a channel with respect to when its wave started, the higher the reception rate. When the receiver wants to decrease its rate, it joins the next wave channel at a later time relative to when it joined the previous wave. When the receiver wants to increase its rate, it joins the next wave channel at an earlier time relative to when it joined the previous wave. Luby/Goyal/Skaria Section 2. [Page 7] INTERNET-DRAFT Expires: April 2002 October 2001 Once the receiver is joined to a wave channel, the receiver remains joined to the wave channel until the channel goes quiescent, at which point the receiver MUST leave the channel. The way the receiver adjusts its reception rate is inspired by TFRC [2]. The receiver at all points in time maintains a target reception rate, and the receiver is allowed to join the next wave channel if after joining its reception rate would be at most its target reception rate. The target rate is continually updated based on a set of measured parameters. The primary parameters are the average loss probability (measured in much the same way as described in TFRC) and the average round-trip time (measured as described below). 3. Packet Congestion Control Information Packets sent to a session using WEBRC must include Congestion Control Information. The default fields and their formats for this information, shown in Figure 1, are recommended for use by protocol instantiations to ensure a uniform format across different protocol instantiations. Other formats may be used by protocol instantiations, but if the default format is not used by a protocol insantiation, then the protocol instantiation must specify the lengths and positions of fields within the Congestion Control Information described in the default format. Other building blocks may describe some of the same fields as described for the Congestion Control Information. It is recommended that protocol instantiations using multiple building blocks include shared fields at most once in each packet. The position of the Congestion Control Information within a packet must be specified by any protocol instantiation that uses WEBRC. The default length of the Congestion Control Information for WEBRC is 32-bits. All integer fields are carried in "big-endian" or "network order" format, that is, most significant byte (octet) first. All constants, unless otherwise specified, are expressed in base ten. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Time slot index| Channel number| Packet sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 1 - Default Congestion Control Information format for WEBRC Luby/Goyal/Skaria Section 3. [Page 8] INTERNET-DRAFT Expires: April 2002 October 2001 The function of each field in the Congestion Control Information is the following. Time slot index (TSI): 8 bits TSI indicates the index of the current time slot. This must be sent in each packet within the session. The time slot index increases by one modulo T each TSD seconds at the sender, where T is the number of time slots associated with the session and TSD is the time slot duration. Channel number (CN): 8 bits CN is the channel number that this packet belongs to. CN for the base channel is T, and the CNs for the wave channels are 0 through T-1. Packet sequence number (PSN): 16 bits The PSN of each packet is scoped by its CN value. The sequence numbers of consecutive packets sent to the base channel are numbered consecutively decreasing modulo 2^16. The same sequence of PSNs are used for each wave channel in each cycle. The sequence numbers of consecutive packets sent to a wave channel are numbered consecutively decreasing modulo 2^16 within each cycle, ending with the last packet sent to the channel before the channel goes quiescent with PSN = 0. 4. Sender Operation The sender operation is much simpler by design than the receiver operation. 4.1. Sender inputs and initialization The primary input to the sender for the session is MSR_b. MSR_b is the maximum sender transmission rate in bits per second at any point in time in aggregate to all channels. This is also the maximum rate in bits per second that any receiver could receive data from the session at any point in time. The secondary inputs to the sender are listed below. These are secondary inputs because in general the values for these inputs will be Luby/Goyal/Skaria Section 4.1. [Page 9] INTERNET-DRAFT Expires: April 2002 October 2001 fixed to default values that won't change, or because they are set based on non-WEBRC considerations. o LENP_B is the length of packets in bytes sent to the session. The value of LENP_B depends on the complete protocol, but in general this should be set to as high a value as possible without exceeding the MTU size for the network that would cause fragmentation. o BCR_b is the transmission rate in bits per second to the base channel. The default value for BCR_b is 8 Kbps. o TSD is the time slot duration measured in seconds. The default value for TSD is 10 seconds. o QD is the quiescent period duration measured in seconds. The default value for QD is 30 seconds. o P is the drop in the rate over the duration of a time slot per channel. The default value for P is 0.75. >From these inputs the following fixed sender parameters can be derived as follows. o MSR_P = MSR_b/(8*LENP_B) is the maximum sender transmission rate in packets per second. o BCR_P = BCR_b/(8*LENP_B) is the rate of the base channel in packets per second at the beginning of a time slot. o N = ceil{log_{1/P}(((1-P)/P)*(MSR_P/BCR_P)+1)}-1 is the number of active time slots for a wave channel. A wave channel is active in any time slot if it is not quiescent. N is also the number of wave channels active in every time slot. o Q = ceil(QD/TSD) is the number of quiescent time slots for a wave channel. o T = N + Q is the total number of time slots in a cycle. T is also the total number of wave channels. o For the base channel CN = T and for the wave channels CN = 0,...,T-1. The sender has the description of the channels assigned to the session and the mapping between the channels and the CNs. o C = TSD*T is the total duration in seconds of a cycle. Luby/Goyal/Skaria Section 4.1. [Page 10] INTERNET-DRAFT Expires: April 2002 October 2001 4.2. Sending packets to the session The sender keeps track of the current time slot index TSI. The value of TSI is incremented by 1 modulo T each TSD seconds. The value of TSI is placed into each packet in the format described in Section 3. For each packet sent to the session, the sender places the channel number CN of the channel into the packets in the format described in Section 3. Recall that CN = T for the base channel and CN = 0,...,T-1 for the wave channels. For each packet sent to the session, the sender calculates and places PSN into the packet. The value of PSN is scoped by CN, and the value of PSN is consecutively decreasing within each CN as time moves forward. Furthermore, for each wave channel, the last packet sent to a wave channel before it becomes quiescent must have PSN =0. This implies that the PSN values are 0, 1, 2, 3, ..., etc., for a wave channel going backward in time starting at the last packet sent to the channel just before the channel becomes quiescent. The format for the PSN within packets is described in Section 3. Packets are sent to the base channel at a rate of BCR_P packets per second at the beginning of a time slot decreasing at a constant relative rate till the rate reaches P*BCR_P at the end of a time slot. To explain the packet rate for wave channels, suppose for simplicity that MSR_P/BCR_P = 1 + (1/P) + (1/P)^2 + ... + (1/P)^N = ((1/P)^{N+1}-1)*P/(1-P). For all i = 0,...,T-1, the rate for wave channel i behaves as follows. At the beginning of time slot i+Q+1 modulo T, packets are sent to wave channel i at the rate of BCR_P*(1/P)^N. The rate of packets sent to wave channel i steadily decreases geometrically by a factor of P during each of the next N time slots until the end of time slot i when the rate reaches rate BCR_P. During the Q time slots i+1 modulo T, i+2 modulo T,...,i+Q modulo T, wave channel i is quiescent, i.e., no packets are sent to the channel. 5. Receiver Operation The bulk of the complexity in WEBRC is in the receiver operation. The sender transmission rate to the channels is designed so that the receiver reception rate behaves as follows. As each wave channel becomes quiescent the receiver leaves the channel. Suppose for ease of explanation that during the reception there is no packet loss and packets are arriving at exactly the rate they were sent. When the receiver wants to increase its rate, it first joins the base channel and then consecutively joins wave channels from the lowest rate channel to the highest rate channel. When the receiver wants to maintain its current reception rate and it is already joined to NWC wave Luby/Goyal/Skaria Section 5. [Page 11] INTERNET-DRAFT Expires: April 2002 October 2001 channels, if the receiver joins channel i+NWC-2 modulo T sometime during time slot i-1 then the receiver joins channel i+NWC-1 modulo T TSD seconds later in time slot i. Suppose the receiver wants to decrease its rate till it is joined to just the base channel. Assume that a receiver is joined to the NWC wave channels i, i+1 modulo T,...i+NWC-1 modulo T at the beginning of time slot i. Then, the aggregate packet reception rate of the receiver over the next NWC time slots will behave as follows. At the beginning of time slot i the receiver reception rate is BCR_P*(1 + (1/P) + (1/P)^2 + ... + (1/P)^NWC). Then the receiver reception rate decreases by a factor of P over the duration of each time slot, and between the end of each time slot and the beginning of the next the reception rate decreases by an additive amount of P*BCR_P. At the end of time slot i+NWC-1 mod T, the receiver reception rate is BCR_P*(1+P), and at the beginning of time slot i+NWC mod T the receiver is joined only to the base channel and its reception rate is BCR_P. 5.1. Receiver inputs and initialization Before joining a session the receiver should have the values of LENP_B, BCR_P, TSD, P, N, Q and T. Some of these values may be obtained or measured once the receiver has joined the session. For example, the receiver can obtain LENP_B and T from the first packet received from the base channel, and the receiver can measure BCR_P once it is joined to the base channel. The values of P, Q and TSD may be fixed to default values built into the receiver that don't change from session to session, and the value of N can be computed as T-Q. The receiver must know the mapping between the CNs and the channels before it joins the session. When a receiver first joins a session, it must first join just the base channel and start receiving packets to determine the current time slot index. If during the course of the session the receiver continually loses a high fraction of the packets from the base channel even when the receiver is only joined to the base channel, the receiver SHOULD leave the session. The receiver may also have other individually set parameters that may be used to determine its behavior. Two such parameters are: o MRR_b is the maximum receiver reception rate in bits per second. This may be used to determine the maximum reception rate this receiver is willing to reach. Thus, the maximum reception rate that the client can possibly achieve in the session is the minimum of MSR_b and MRR_b. A recommended value of MRR_b for a receiver is the bandwidth capacity of the last link to the receiver. MRR_P is the Luby/Goyal/Skaria Section 5.1. [Page 12] INTERNET-DRAFT Expires: April 2002 October 2001 maximum receiver reception rate in packets per second, i.e., MRR_P = MRR_b/(8*LENP_B). o CONNEC is the number of virtual connections that the receiver is making to the sender to receive data from the session. This affects how competitive the receiver will be compared to other receivers (both TCP and WEBRC receivers) in competing for bandwidth over bottleneck links. The default standard value for CONNEC is 1. 5.2. Receiver measurements and calculations As outlined in the introduction, the way a receiver adjusts its reception rate is inspired by TFRC [2]. The receiver at all points in time maintains a target reception rate, and the receiver is allowed to join the next wave channel if joining would increase its reception rate to at most its target reception rate. The target rate is continually updated based on a set of measured parameters. The primary parameters are the average loss probability LOSSP and the average round-trip time AMRTT. 5.2.1. Average loss probability The average loss probability LOSSP of the receiver is maintained in a manner very similar to that described in TFRC [2] with the following difference: o In TFRC, it is recommended that the loss probability be averaged over the previous 8 loss events. o In WEBRC, it is recommended that the loss probability LOSSP be averaged over the previous channel periods that include 8 channel periods where there was at least one loss event. A channel period is defined as the time between when a wave channel is joined till the time the next wave channel is joined. Thus, since a channel period is generally around TSD seconds, this generally means that the loss probability will be averaged over at least 8*TSD seconds. The calculation of LOSSP is exactly as described in TFRC, with the same definition of loss events. 5.2.2. Average round-trip time The receiver maintains an average round-trip time, ARTT, as the exponentially weighted average of an RTT value. Each time the receiver joins a channel (either the base channel at the beginning or wave channels continually), it makes a measurement of the round-trip time RTT Luby/Goyal/Skaria Section 5.2.2. [Page 13] INTERNET-DRAFT Expires: April 2002 October 2001 as follows. When the receiver sends the join for the channel it records the current time X and sets a boolean variable JOINING to true. When the first packet is received from the channel the receiver records the current time Y and resets the value of JOINING to false. When the receiver receives a second packet from the channel it records the current time Z. Then, the value of RTT is set to 3*Y/2 - Z/2 - X. (Note that this value can be negative.) The value of ARTT is updated to max{ARRT/2, (1-alpha)*ARTT + alpha*RTT}. The recommended value for alpha is 0.1. 5.2.3. Rate Equation The receiver calculates the expected reception rate REQN based on the TCP-equation as follows: REQN = CONNEC/(ARTT*sqrt{LOSSP}(0.816 + 7.35*LOSSP*(1+32*LOSSP^2))). This equation comes from TFRC [2]. 5.2.4. Epochs The receiver makes decisions on whether or not to join another wave channel at equally spaced units of time called epochs. The duration of an epoch, EL, is set to be a small fraction of TSD, so that decisions to join a channel can be made at a much finer granularity than TSD. A standard setting is EL = TSD/20. Thus, if TSD = 10 seconds, then EL = 0.5 seconds. 5.2.5. Average reception rate There are two averaged versions of reception rate maintained by the receiver, TRR_P, the true reception rate, and ARR_P, the anticipated reception rate, that are used for different purposes. Thus, these two averaged versions are calculated quite differently. The true reception rate TRR_P is used to ensure that the receiver does not increase its reception rate too quickly above its current reception rate. TRR_P is calculated based on the measurement of RR_P, where RR_P is the receiver reception rate in packets per second measured at the beginning of an epoch averaged over the epoch that just ended. TRR_P is initialized to BCR_P. TRR_P is updated to (1-beta)*TRR_P + beta*RR_P at the beginning of each epoch after RR_P is measured for the previous epoch. The recommended value for beta is 2.0*EL/TSD. The anticipated reception rate ARR_P is used to compare against the target rate to decide whether or not the receiver can increase its reception rate by joining the next channel. ARR_P is calculated based on two other measurements, IRR_P and NWC. IRR_P is what the ideal Luby/Goyal/Skaria Section 5.2.5. [Page 14] INTERNET-DRAFT Expires: April 2002 October 2001 receiver reception rate should have been in packets per second measured at the beginning of the epoch averaged over the previous epoch , i.e., IRR_P includes both received and lost packets. NWC is the number of wave channels that the receiver is joined to at any point in time. ARR_P is initialized to BCR_P and NWC is initialized to 0. ARR_P, IRR_P and NWC are updated as follows. o At the beginning of each epoch, IRR_P is measured over the previous epoch and then ARR_P is updated to pow{P, EL/TSD}*(1-gamma)*ARR_P + gamma*IRR_P. o At the beginning of an epoch when a join is made to a wave channel, NWC is updated to NWC+1 and then ARR_P is further updated to ARR_P*((1/P)^{NWC+1}-1)/((1/P)^NWC-1). o When the next time slot index is detected and a leave is sent for the wave channel that just went quiescent, NWC is updated to NWC-1, and ARR_P is updated to ARR_P - P*BCR_P. The intuition for this is that ARR_P is compared against the target rate to determine if another channel should be joined. When a join is sent for a channel the value of ARR_P is raised to what the reception rate would be if the join occurred immediately. This ensures that ARR_P will immediately spike up to the anticipated reception rate after the join is processed, and this will inhibit a join to another channel at the beginning of the subsequent epoch. Lowering ARR_P by a relative amount pow{P,EL/TSD} at the beginning of each epoch and by an additive amount P*BCR_P at the beginning of each time slot ensures that the averaged ARR_P value is tracking the decreasing reception rate faithfully, and is needed to ensure that the average value of ARR_P is the average ideal reception rate, i.e., the average reception rate counting both received and lost packets. The value of gamma is different when the value of ARR_P is less than SSR_P (see below, the slow start threshold in packets per second). When ARR_P is less than SSR_P the value of gamma is set to P^{1/2}(1-P)/(1-P^{3/2}). When ARR_P is greater than SSR_P the recommended value of gamma is 2.0*EL/TSD. 5.2.6. Slow start WEBRC uses a slow start mechanism to quickly ramp up its rate at both the beginning of the session and in the middle of a session when the rate drops precipitously. To enact this, the receiver maintains the following parameters: Luby/Goyal/Skaria Section 5.2.6. [Page 15] INTERNET-DRAFT Expires: April 2002 October 2001 o SSMINR_P is the minimum allowed slow start threshold rate in packets per second. SSMINR_P is set to BCR_P/P^2. o SSR_P is the slow start threshold rate in packets per second. SSR_P is initialized to MRR_P*P^2. 5.2.7. Target rate The target rate TRATE is computed as TRATE = min{max{SSR_P, REQN}, TRR_P/P^2, MRR_P}. 5.3. Receiver events There are various receiver events, some of which are triggered by the passing of time on the receiver, and others by events such as packet loss, reception of a first packet from a channel, and exceptional time- outs. 5.3.1. Epoch change This is an event that is driven by the passage of time on the receiver, which occurs each EL seconds. When this happens, TRR_P and ARR_P are computed as described in Section 5.2.5. Immediately after these updates, a decision is made about whether to join a wave channel as described in Section 5.3.3. 5.3.2. Time slot change This is an event that is driven by the reception of a packet with a new TSI value. When a packet with a new TSI = i is received, a leave is sent for wave channel i, NWC is updated to NWC-1 and ARR_P is updated to ARR_P - P*BCR_P as described in Section 5.2.5. 5.3.3. Join a wave channel At the beginning of each epoch, after updating the values of ARR_P and TRR_P as described in Section 5.2.5, the receiver decides whether or not to join a wave channel as follows: o If there is a loss event in progress (LOSS_EVENT = true) or there is a join of a channel in progress (JOINING = true), then no join of a Luby/Goyal/Skaria Section 5.3.3. [Page 16] INTERNET-DRAFT Expires: April 2002 October 2001 channel is attempted. o The receiver calculates REQN as described in Section 5.2.3. o The receiver calculates TRATE as described in Section 5.2.7. o The receiver sees if TRATE > ARR_P*((1/P)^{NWC+2}-1)/((1/P)^{NWC+1}-1). Suppose TSI = i and NWC = J. If the inequality is true then the receiver joins the next wave channel with CN = i+J modulo T, updates NWC to NWC+1 and then ARTT is updated to ARR_P*((1/P)^{NWC+1}-1)/((1/P)^NWC-1) as described in Section 5.2.5. 5.3.4. Loss event Each time the receiver detects a lost packet (based on the sequence numbers in the packets scoped by the channel number), the receiver records the start of a new loss event, and sets a boolean variable LOSS_EVENT to true that will automatically reset to false after ARTT seconds. All subsequent packet loss for a period of ARTT seconds is ignored. When a start of a loss event is detected, the value of SSR_P is updated to max{SSMINR_P, TRR_P*P^2}. 5.3.5. Exceptional timeouts These are timeouts when the packet reception behavior is far from what it should be and should trigger a drastic event by the client. Exception timeouts include events such as when no packets are received for a long time, there is no change in the time slot index for a long time, or no first or second packet is received after join to channel for a long time. 6. Security Considerations WEBRC can be subject to denial-of-service attacks by attackers which try to confuse the congestion control mechanism, or send forged packets to the session which would prevent successful reconstruction of large portions of the objects. The same exact problems are present in TCP, where an attacker can forge packets and either slow down or increase the throughput of the session, or replace parts of the data stream with forged data. If the stream is carrying compressed or otherwise coded data, even a single forged packet could also cause incorrect reconstruction of the rest of the data Luby/Goyal/Skaria Section 6. [Page 17] INTERNET-DRAFT Expires: April 2002 October 2001 stream. It is therefore RECOMMENDED that protocol instantiations that use WEBRC implement some form of packet authentication to protect themselves against such attacks, such as that described in [7]. 7. IANA Considerations No information in this specification is subject to IANA registration. Building blocks used in conjunstion with WEBRC may introduce IANA considerations. 8. Intellectual Property Issues Digital Fountain maintains all rights to the WEBRC technology, but will grant a royalty free worldwide license to the WEBRC technology once it has been standardized. WEBRC may be used with other protocols which are proprietary, or have pending or granted patents. 9. Acknowledgments Thanks to X for their comments on this draft. 10. References [1] Byers, J.W., Frumin, M., Horn, G., Luby, M., Mitzenmacher, M., Roetter, A., and Shaver, W., "FLID-DL: Congestion Control for Layered Multicast", Proceedings of Second International Workshop on Networked Group Communications (NGC 2000), Palo Alto, CA, November 2000. [2] Handley, M., Padhye, J., Floyd, S., Widmer, J., "TCP Friendly Rate Control (TFRC): Protocol Specification", Internet Draft draft-ietf- tsvwg-tfrc-03, July 2001, a work in progress. [3] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L., Crowcroft, J., "Asynchronous Layered Coding: A massively scalable reliable content delivery protocol instantiation", Internet Draft draft-ietf-rmt-pi- alc-03, October 2001, a work in progress. [4] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L., Handley, M., Luby/Goyal/Skaria Section 10. [Page 18] INTERNET-DRAFT Expires: April 2002 October 2001 Crowcroft, J., "Layered Coding Transport: A massively scalable content delivery transport building block", Internet Draft draft-ietf-rmt-bb- lct-02.txt, October 2001, a work in progress. [5] Luby, M., Gemmell, Vicisano, L., J., Rizzo, L., Handley, M., Crowcroft, J., "The use of Forward Error Correction in Reliable Multicast", Internet Draft draft-ietf-rmt-info-fec-00.txt, November 2000, a work in progress. [6] Luby, M., Gemmell, J., Vicisano, L., Rizzo, L., Handley, M., Crowcroft, J., "RMT BB Forward Error Correction Codes", Internet Draft draft-ietf-rmt-bb-fec-03.txt, July 2001. [7] Perrig, A., Canetti, R., Song, D., Tygar, J.D., "Efficient and Secure Source Authentication for Multicast", Network and Distributed System Security Symposium, NDSS 2001, pp. 35-46, February 2001. [8] Vicisano, L., Rizzo, L., Crowcroft, J., "TCP-like Congestion Control for Layered Multicast Data Transfer", IEEE Infocom '98, San Francisco, CA, Mar.28-Apr.1 1998. 11. Authors' Addresses Michael Luby luby@digitalfountain.com Digital Fountain 39141 Civic Center Drive Suite 300 Fremont, CA, USA, 94538 Vivek Goyal vivek@digitalfountain.com Digital Fountain 39141 Civic Center Drive Suite 300 Fremont, CA, USA, 94538 Simon Skaria simonskaria@yahoo.com Digital Fountain and UC Irvine Luby/Goyal/Skaria Section 11. [Page 19] INTERNET-DRAFT Expires: April 2002 October 2001 12. Full Copyright Statement Copyright (C) The Internet Society (2001). 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 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." Luby/Goyal/Skaria Section 12. [Page 20] INTERNET-DRAFT Expires: April 2002 October 2001 Luby/Goyal/Skaria Section 12. [Page 21]