diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc5634.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc5634.txt')
-rw-r--r-- | doc/rfc/rfc5634.txt | 1235 |
1 files changed, 1235 insertions, 0 deletions
diff --git a/doc/rfc/rfc5634.txt b/doc/rfc/rfc5634.txt new file mode 100644 index 0000000..1731116 --- /dev/null +++ b/doc/rfc/rfc5634.txt @@ -0,0 +1,1235 @@ + + + + + + +Network Working Group G. Fairhurst +Request for Comments: 5634 A. Sathiaseelan +Category: Experimental University of Aberdeen + August 2009 + + + Quick-Start for the Datagram Congestion Control Protocol (DCCP) + +Abstract + + This document specifies the use of the Quick-Start mechanism by the + Datagram Congestion Control Protocol (DCCP). DCCP is a transport + protocol that allows the transmission of congestion-controlled, + unreliable datagrams. DCCP is intended for applications such as + streaming media, Internet telephony, and online games. In DCCP, an + application has a choice of congestion control mechanisms, each + specified by a Congestion Control Identifier (CCID). This document + specifies general procedures applicable to all DCCP CCIDs and + specific procedures for the use of Quick-Start with DCCP CCID 2, CCID + 3, and CCID 4. Quick-Start enables a DCCP sender to cooperate with + Quick-Start routers along the end-to-end path to determine an allowed + sending rate at the start of a connection and, at times, in the + middle of a DCCP connection (e.g., after an idle or application- + limited period). The present specification is provided for use in + controlled environments, and not as a mechanism that would be + intended or appropriate for ubiquitous deployment in the global + Internet. + +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) 2009 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents in effect on the date of + publication of this document (http://trustee.ietf.org/license-info). + Please review these documents carefully, as they describe your rights + and restrictions with respect to this document. + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 1] + +RFC 5634 Quick-Start for DCCP August 2009 + + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + +Table of Contents + + 1. Introduction ....................................................3 + 1.1. Terminology ................................................4 + 2. Quick-Start for DCCP ............................................5 + 2.1. Sending a Quick-Start Request for a DCCP Flow ..............5 + 2.1.1. The Quick-Start Interval ............................5 + 2.2. Receiving a Quick-Start Request for a DCCP Flow ............6 + 2.2.1. The Quick-Start Response Option .....................7 + 2.3. Receiving a Quick-Start Response ...........................8 + 2.3.1. The Quick-Start Mode ................................8 + 2.3.2. The Quick-Start Validation Phase ....................9 + 2.4. Procedure When No Response to a Quick-Start Request .......10 + 2.5. Procedure When a Packet Is Dropped While Using + Quick-Start ...............................................11 + 2.6. Interactions with Mobility and Signaled Path Changes ......11 + 2.7. Interactions with Path MTU Discovery ......................12 + 2.8. Interactions with Middleboxes .............................12 + 3. Mechanisms for Specific CCIDs ..................................13 + 3.1. Quick-Start for CCID 2 ....................................13 + 3.1.1. The Quick-Start Request for CCID 2 .................13 + 3.1.2. Sending a Quick-Start Response with CCID 2 .........13 + 3.1.3. Using the Quick-Start Response with CCID 2 .........13 + 3.1.4. Quick-Start Validation Phase for CCID 2 ............14 + 3.1.5. Reported Loss or Congestion While Using + Quick-Start ........................................14 + 3.1.6. CCID 2 Feedback Traffic on the Reverse Path ........15 + 3.2. Quick-Start for CCID 3 ....................................15 + 3.2.1. The Quick-Start Request for CCID 3 .................15 + 3.2.2. Sending a Quick-Start Response with CCID 3 .........15 + 3.2.3. Using the Quick-Start Response with CCID 3 .........16 + 3.2.4. Quick-Start Validation Phase for CCID 3 ............17 + 3.2.5. Reported Loss or Congestion during the + Quick-Start Mode or Validation Phase ...............17 + 3.2.6. CCID 3 Feedback Traffic on the Reverse Path ........18 + + + + +Fairhurst & Sathiaseelan Experimental [Page 2] + +RFC 5634 Quick-Start for DCCP August 2009 + + + 3.3. Quick-Start for CCID 4 ....................................18 + 3.3.1. The Quick-Start Request for CCID 4 .................18 + 3.3.2. Sending a Quick-Start Response with CCID 4 .........18 + 3.3.3. Using the Quick-Start Response with CCID 4 .........18 + 3.3.4. Reported Loss or Congestion While Using + Quick-Start ........................................19 + 3.3.5. CCID 4 Feedback Traffic on the Reverse Path ........19 + 4. Discussion of Issues ...........................................19 + 4.1. Overrun and the Quick-Start Validation Phase ..............19 + 4.2. Experimental Status .......................................19 + 5. IANA Considerations ............................................20 + 6. Acknowledgments ................................................20 + 7. Security Considerations ........................................20 + 8. References .....................................................21 + 8.1. Normative References ......................................21 + 8.2. Informative References ....................................21 + +1. Introduction + + The Datagram Congestion Control Protocol (DCCP) [RFC4340] is a + transport protocol for congestion-controlled, unreliable datagrams, + intended for applications such as streaming media, Internet + telephony, and online games. + + In DCCP, an application has a choice of congestion control + mechanisms, each specified by a Congestion Control Identifier (CCID) + [RFC4340]. There are general procedures applicable to all DCCP CCIDs + that are described in Section 2, and details that relate to how + individual CCIDs should operate, which are described in Section 3. + This separation of CCID-specific and DCCP general functions is in the + spirit of the modular approach adopted by DCCP. + + Quick-Start [RFC4782] is an experimental mechanism for transport + protocols specified for use in controlled environments. The current + specification of this mechanism is not intended or appropriate for + ubiquitous deployment in the global Internet. + + Quick-Start is designed for use between end hosts within the same + network or on Internet paths that include IP routers. It works in + cooperation with routers, allowing a sender to determine an allowed + sending rate at the start and at times in the middle of a data + transfer (e.g., after an idle or application-limited period). + + This document assumes the reader is familiar with RFC 4782 [RFC4782], + which specifies the use of Quick-Start with IP and with TCP. Section + 7 of RFC 4782 also provides guidelines for the use of Quick-Start + + + + + +Fairhurst & Sathiaseelan Experimental [Page 3] + +RFC 5634 Quick-Start for DCCP August 2009 + + + with other transport protocols, including DCCP. This document + provides answers to some of the issues that were raised by RFC 4782 + and provides a definition of how Quick-Start must be used with DCCP. + + In using Quick-Start, the sending DCCP end host indicates the desired + sending rate in bytes per second, using a Quick-Start option in the + IP header of a DCCP packet. Each Quick-Start-capable router along + the path could, in turn, either approve the requested rate, reduce + the requested rate, or indicate that the Quick-Start Request is not + approved. + + If the Quick-Start Request is approved (possibly with a reduced rate) + by all the routers along the path, then the DCCP receiver returns an + appropriate Quick-Start Response. On receipt of this, the sending + end host can send at up to the approved rate for a period determined + by the method specified for each DCCP CCID, and not exceeding three + round-trip times. Subsequent transmissions will be governed by the + default CCID congestion control mechanisms for the connection. If + the Quick-Start Request is not approved, then the sender must use the + default congestion control mechanisms. + + DCCP receivers are not required to acknowledge individual packets (or + pairs of segments) as in TCP. CCID 2 [RFC4341] allows much less + frequent feedback. Rate-based protocols (e.g., TCP-Friendly Rate + Control (TFRC) [RFC5348], CCID 3 [RFC4342]) have a different feedback + mechanism than that of TCP. With rate-based protocols, feedback may + be sent less frequently (e.g., once per Round-Trip Time (RTT)). In + such cases, a sender using Quick-Start needs to implement a different + mechanism to determine whether the Quick-Start sending rate has been + sustained by the network. This introduces a new mechanism called the + Quick-Start Validation Phase (Section 2.3). + + In addition, this document defines two more general enhancements that + refine the use of Quick-Start after a flow has started (expected to + be more common in applications using DCCP). These are the Quick- + Start Interval (Section 2.1.2), and the reaction to mobility triggers + (Section 2.6). + +1.1. Terminology + + 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 RFC 2119 [RFC2119]. + + + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 4] + +RFC 5634 Quick-Start for DCCP August 2009 + + +2. Quick-Start for DCCP + + Unless otherwise specified, DCCP end hosts follow the procedures + specified in Section 4 of [RFC4782], following the use specified for + Quick-Start with TCP. + +2.1. Sending a Quick-Start Request for a DCCP Flow + + A DCCP sender MAY use a Quick-Start Request during the start of a + connection, when the sender would prefer to have a larger initial + rate than allowed by standard mechanisms (e.g., [RFC5348] or + [RFC3390]). + + A Quick-Start Request MAY also be used once a DCCP flow is connected + (i.e., in the middle of a DCCP flow). In standard operation, DCCP + CCIDs can constrain the sending rate (or window) to less than that + desired (e.g., when an application increases the rate at which it + wishes to send). A DCCP sender that has data to send after an idle + period or application-limited period (i.e., where the sender has + transmitted at less than the allowed sending rate) can send a Quick- + Start Request using the procedures defined in Section 3. + + Quick-Start Requests will be more effective if the Quick-Start Rate + is not larger than necessary. Each requested Quick-Start Rate that + has been approved, but was not fully utilized, takes away from the + bandwidth pool maintained by Quick-Start routers that would be + otherwise available for granting successive requests [RFC4782]. + + In contrast to most TCP applications, many DCCP applications have the + notion of a natural media rate that they wish to achieve. For + example, during the initial connection, a host may request a Quick- + Start Rate equal to the media rate of the application, appropriately + increased to account for the size of packet headers. (Note that + Quick-Start only provides a course-grain indication of the desired + rate that is expected to be sent in the next RTT.) + + When sending a Quick-Start Request, the DCCP sender SHOULD send the + Quick-Start Request using a packet that requires an acknowledgement, + such as a DCCP-Request, DCCP-Response, or DCCP-Data. + +2.1.1. The Quick-Start Interval + + Excessive use of the Quick-Start mechanism is undesirable. This + document defines an enhancement to RFC 4782 to update the use of + Quick-Start after a DCCP flow has started, by introducing the concept + of the Quick-Start Interval. The Quick-Start Interval specifies a + period of time during which a Quick-Start Request SHOULD NOT be sent. + The Quick-Start Interval is measured from the time of transmission of + + + +Fairhurst & Sathiaseelan Experimental [Page 5] + +RFC 5634 Quick-Start for DCCP August 2009 + + + the previous Quick-Start Request (Section 2.1). The Quick-Start + Interval MAY be overridden as a result of a network path change + (Section 2.6). + + When a connection is established, the Quick-Start Interval is + initialized to the Initial_QSI. The Initial_QSI MUST be at least 6 + seconds (larger values are permitted). This value was chosen so that + it is sufficiently large to prevent excessive router processing over + typical Internet paths. Quick-Start routers that track per-flow + state MAY penalize senders by suspending Quick-Start processing of + flows that make Quick-Start Requests for the same flow with an + interval less than 6 seconds. + + When the first Quick-Start Request is sent, the Quick-Start Interval + is set to: + + Quick-Start Interval = Initial_QSI; + + After sending each subsequent Quick-Start Request, the Quick-Start + Interval is then recalculated as: + + Quick-Start Interval = max(Quick-Start Interval * 2, 4 * RTT); + + Each unsuccessful Quick-Start Request therefore results in the + Quick-Start Interval being doubled (resulting in an exponential + back-off). The maximum time the sender can back off is 64 seconds. + When the back-off calculation results in a larger value, the sender + MUST NOT send any further Quick-Start Requests for the remainder of + the DCCP connection (i.e., the sender ceases to use Quick-Start). + + Whenever a Quick-Start Request is approved (at any rate), the Quick- + Start Interval is reset to the Initial_QSI. + +2.2. Receiving a Quick-Start Request for a DCCP Flow + + The procedure for processing a received Quick-Start Request is + normatively defined in [RFC4782] and summarized in this paragraph. + An end host that receives an IP packet containing a Quick-Start + Request passes the Quick-Start Request, along with the value in the + IP Time to Live (TTL) field, to the receiving DCCP layer. If the + receiving host is willing to permit the Quick-Start Request, it + SHOULD respond immediately by sending a packet that carries the + Quick-Start Response option in the DCCP header of the corresponding + feedback packet (e.g., using a DCCP-Ack packet or in a DCCP-DataAck + packet). + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 6] + +RFC 5634 Quick-Start for DCCP August 2009 + + + The Rate Request field in the Quick-Start Response option is set to + the received value of the Rate Request in the Quick-Start option or + to a lower value if the DCCP receiver is only willing to allow a + lower Rate Request. Where information is available (e.g., knowledge + of the local Layer 2 interface speed), a Quick-Start receiver SHOULD + verify that the received rate does not exceed its expected receive + link capacity. The TTL Diff field in the Quick-Start Response is set + to the difference between the received IP TTL value (Hop Limit field + in IPv6) and the Quick-Start TTL value. The Quick-Start Nonce in the + Response is set to the received value of the Quick-Start Nonce in the + Quick-Start option (or IPv6 Header Extension). + + The Quick-Start Response MUST NOT be resent if it is lost in the + network [RFC4782]. Packet loss could be an indication of congestion + on the return path; in which case, it is better not to approve the + Quick-Start Request. + + If an end host receives an IP packet with a Quick-Start Request with + a requested rate of zero, then this host SHOULD NOT send a Quick- + Start Response [RFC4782]. + +2.2.1. The Quick-Start Response Option + + The Quick-Start Response message must be carried by the transport + protocol using Quick-Start. This section defines a DCCP Header + option used to carry the Quick-Start Response. This header option is + REQUIRED for end hosts to utilize the Quick-Start mechanism with DCCP + flows. The format resembles that defined for TCP [RFC4782]. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type=45 | Length=8 | Resv. | Rate | TTL Diff | + | | | |Request| | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Quick-Start Nonce | R | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 1. The Quick-Start Response Option + + The first byte of the Quick-Start Response option contains the option + kind, identifying the DCCP option (45). + + The second byte of the Quick-Start Response option contains the + option length in bytes. The length field MUST be set to 8 bytes. + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 7] + +RFC 5634 Quick-Start for DCCP August 2009 + + + The third byte of the Quick-Start Response option contains a four- + bit Reserved field, and the four-bit allowed Rate Request, formatted + as in the IP Quick-Start Rate Request option [RFC4782]. + + The fourth byte of the DCCP Quick-Start Response option contains the + TTL Diff. The TTL Diff contains the difference between the IP TTL + and Quick-Start TTL fields in the received Quick-Start Request + packet, as calculated in [RFC4782]. + + Bytes 5-8 of the DCCP option contain the 30-bit Quick-Start Nonce and + a 2-bit Reserved field [RFC4782]. + +2.3. Receiving a Quick-Start Response + + On reception of a Quick-Start Response packet, the sender MUST report + the approved rate, by sending a Quick-Start Report of Approved Rate + [RFC4782]. This report includes the Rate Report field set to the + Approved Rate, and the QS Nonce set to the QS Nonce value sent in the + Quick-Start Request. + + The Quick-Start Report of Approved Rate is sent as an IPv4 option or + IPv6 header extension using the first Quick-Start Packet or sent as + an option using a DCCP control packet if there are no DCCP-Data + packets pending transmission. + + The Quick-Start Interval is also reset (as described in Section + 2.1.1). + + Reception of a Quick-Start Response packet that approves a rate + higher than the current rate results in the sender entering the + Quick-Start Mode. + +2.3.1. The Quick-Start Mode + + While a sender is in the Quick-Start Mode, all sent packets are known + as Quick-Start Packets [RFC4782]. The Quick-Start Packets MUST be + sent at a rate not greater than the rate specified in the Quick- + Start Response. The Quick-Start Mode continues for a period up to + one RTT (shorter, if a feedback message arrives acknowledging the + receipt of one or more Quick-Start Packets). + + The procedure following exit of the Quick-Start Mode is specified in + the following paragraphs. Note that this behavior is CCID-specific + and the details for each current CCID are described in Section 3. + + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 8] + +RFC 5634 Quick-Start for DCCP August 2009 + + +2.3.2. The Quick-Start Validation Phase + + After transmitting a set of Quick-Start Packets in the Quick-Start + Mode (and providing that no loss or congestion is reported), the + sender enters the Quick-Start Validation Phase. This phase persists + for a period during which the sender seeks to affirm that the + capacity used by the Quick-Start Packets did not introduce + congestion. This phase is introduced, because unlike TCP, DCCP + senders do not necessarily receive frequent feedback that would + indicate the congestion state of the forward path. + + While in the Quick-Start Validation Phase, the sender is tentatively + permitted to continue sending using the Quick-Start rate. This phase + normally concludes when the sender receives feedback that includes an + acknowledgment that all Quick-Start Packets were received. + + However, the duration of the Quick-Start Validation Phase MUST NOT + exceed the Quick-Start Validation Time (a maximum of 2 RTTs). + Implementations may set a timer (initialized to the Quick-Start + Validation Time) to detect the end of this phase. There may be scope + for optimization of timer resources in an implementation, since the + Quick-Start Validation period temporarily enforces more strict + monitoring of acknowledgements than normally used in a CCID (e.g., an + implementation may consider using a common timer resource for Quick- + Start Validation and a nofeedback timer). + + An example sequence of packet exchanges showing Quick-Start with DCCP + is shown in Figure 2. + + + + + + + + + + + + + + + + + + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 9] + +RFC 5634 Quick-Start for DCCP August 2009 + + + DCCP Sender DCCP Receiver + Quick-Start +----------------------------------------------+ + Request/Response | Quick-Start Request --> | + | <-- Quick-Start Response | + | Quick-Start Approve --> | + +----------------------------------------------+ + +----------------------------------------------+ + Quick-Start | Quick-Start Packets --> | + Mode | Quick-Start Packets --> | + | <-- Feedback A from Receiver| + | (acknowledging first QS Packet)| + +----------------------------------------------+ + +---------------------------------------------- + Quick-Start | Packets --> | + Validation Phase | <-- Feedback B from Receiver| + | (acknowledging all QS Packets)| + +---------------------------------------------- + +----------------------------------------------+ + DCCP | Packets --> | + Congestion | <-- Feedback C from Receiver| + Control | | + + Figure 2. The Quick-Start Mode and Validation Phase + + On conclusion of the Validation Phase (Feedback B in the above + figure), the sender expects to receive assurance that it may safely + use the current rate. A sender that completes the Quick-Start + Validation Phase with no reported packet loss or congestion stops + using the Quick-Start rate and continues to adjust its rate using the + standard congestion control mechanisms. For example, if the DCCP + sender was in slow-start prior to the Quick-Start Request, and no + packets were lost or ECN-marked (Explicit Congestion Notification) + since that time, then the sender continues in slow-start after + exiting Quick-Start Mode until the sender sees a packet loss, or + congestion is reported. + +2.4. Procedure When No Response to a Quick-Start Request + + As in TCP, if a Quick-Start Request is dropped (i.e., the Request or + Response is not delivered by the network) the DCCP sender MUST revert + to the congestion control mechanisms it would have used if the + Quick-Start Request had not been approved. The connection is not + permitted to send a subsequent Quick-Start Request before expiry of + the current Quick-Start Interval (Section 2.1.1). + + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 10] + +RFC 5634 Quick-Start for DCCP August 2009 + + +2.5. Procedure When a Packet Is Dropped While Using Quick-Start + + A lost or ECN-marked packet is an indication of potential network + congestion. The behavior of a DCCP sender following a lost or ECN- + marked Quick-Start Packet or a lost feedback packet is specific to a + particular CCID (see Section 3). + +2.6. Interactions with Mobility and Signaled Path Changes + + The use of Quick-Start may assist end hosts in determining when it is + appropriate to increase their rate following an explicitly signaled + change of the network path. + + When an end host receives a signal from an upstream link/network + notifying it of a path change, the change could simultaneously impact + more than one flow, and may affect flows between multiple endpoints. + Senders should avoid responding immediately, since this could result + in unwanted synchronization of signaling messages, and control loops + (e.g., a synchronized attempt to probe for a larger congestion + window), which may negatively impact the performance of the network + and transport sessions. In Quick-Start, this could increase the rate + of Quick-Start Requests, possibly incurring additional router load, + and may result in some requests not being granted. A sender must + ensure this does not generate an excessive rate of Quick-Start + Requests by using the method below: + + A sender that has explicit information that the network path has + changed (e.g., a mobile IP binding update [RFC3344], [RFC3775]) + SHOULD reset the Quick-Start Interval to its initial value (specified + in Section 2.1.1). + + The sender MAY also send a Quick-Start Request to determine a new + safe transmission rate, but must observe the following rules: + + - It MUST NOT send a Quick-Start Request within a period less than + the initial Quick-Start Interval (Initial_QSI) since it previously + sent a Quick-Start Request. That is, it must wait for at least a + period of Initial_QSI after the previous request, before sending a + new Quick-Start Request. + + - If it has not sent a Quick-Start Request within the previous + Initial_QSI period, it SHOULD defer sending a Quick-Start Request + for a randomly chosen period between 0 and the Initial_QSI value in + seconds. The random period should be statistically independent + between different hosts and between different connections on the + same host. This delay is to mitigate the effect on router load of + synchronized responses by multiple connections in response to a + path change that affects multiple connections. + + + +Fairhurst & Sathiaseelan Experimental [Page 11] + +RFC 5634 Quick-Start for DCCP August 2009 + + + Hosts do not generally have sufficient information to choose an + appropriate randomization interval. This value was selected to + ensure randomization of requests over the Quick-Start Interval. In + networks where a large number of senders may potentially be impacted + by the same signal, a larger value may be desirable (or methods may + be used to control this effect in the path change signaling). + +2.7. Interactions with Path MTU Discovery + + DCCP implementations are encouraged to support Path MTU Discovery + (PMTUD) when applications are able to use a DCCP packet size that + exceeds the default Path MTU [RFC4340], [RFC4821]. Quick-Start + Requests SHOULD NOT be sent with packets that are used as a PMTUD + Probe Packet, since these packets could be lost in the network + increasing the probability of loss of the request. It may therefore + be preferable to separately negotiate the PMTU and the use of Quick- + Start. + + The DCCP protocol is datagram-based and therefore the size of the + segments that are sent is a function of application behavior as well + as being constrained by the largest supported Path MTU. + +2.8. Interactions with Middleboxes + + A Quick-Start Request is carried in an IPv4 packet option or IPv6 + extension header [RFC4782]. Interactions with network devices + (middleboxes) that inspect or modify IP options could therefore lead + to discard, ICMP error, or DCCP-Reset when attempting to forward + packets carrying a Quick-Start Request. + + If a DCCP sender sends a DCCP-Request that also carries a Quick- + Start Request, and does not receive a DCCP-Response to the packet, + the DCCP sender SHOULD resend the DCCP-Request packet without + including a Quick-Start Request. + + Similarly, if a DCCP sender receives a DCCP-Reset in response to a + DCCP-Request packet that also carries a Quick-Start Request, then the + DCCP sender SHOULD resend the DCCP-Request packet without the Quick- + Start Request. The DCCP sender then ceases to use the Quick-Start + Mechanism for the remainder of the connection. + + A DCCP sender that uses a Quick-Start Request within an established + connection and does not receive a response will treat this as non- + approval of the request. Successive unsuccessful attempts will + result in an exponential increase in the Quick-Start Interval + (Section 2.1.1). If this grows to a value exceeding 64 seconds, the + DCCP sender ceases to use the Quick-Start Mechanism for the remainder + of the connection. + + + +Fairhurst & Sathiaseelan Experimental [Page 12] + +RFC 5634 Quick-Start for DCCP August 2009 + + +3. Mechanisms for Specific CCIDs + + The following sections specify the use of Quick-Start with DCCP CCID + 2, CCID 3, and for DCCP with TFRC-SP as specified in CCID 4. + +3.1. Quick-Start for CCID 2 + + This section describes the Quick-Start mechanism to be used with DCCP + CCID 2 [RFC4341]. CCID 2 uses a TCP-like congestion control + mechanism. + +3.1.1. The Quick-Start Request for CCID 2 + + A Quick-Start Request MAY be sent to allow the sender to determine if + it is safe to use a larger initial cwnd. This permits a faster + start-up of a new CCID 2 flow. + + A Quick-Start Request MAY also be sent for an established connection + to request a higher sending rate after an idle period or + application-limited period (described in Section 2.1). This allows a + receiver to use a larger cwnd than allowed with standard operation. + + A Quick-Start Request that follows a reported loss or congestion + event MUST NOT request a Quick-Start rate that exceeds the largest + congestion window achieved by the CCID 2 connection since the last + packet drop (translated to a sending rate). + +3.1.2. Sending a Quick-Start Response with CCID 2 + + A receiver processing a Quick-Start Request uses the method described + in Section 2.3. On receipt of a Quick-Start Request, the receiver + MUST send a Quick-Start Response (even if a receiver is constrained + by the ACK Ratio). + +3.1.3. Using the Quick-Start Response with CCID 2 + + On receipt of a valid Quick-Start Response option, the sender MUST + send a Quick-Start Approved option [RFC4782] (see Section 2.3). + + If the approved Quick-Start rate is less than current sending rate, + the sender does not enter the Quick-Start Mode, and continues using + the procedure defined in CCID 2. + + If the approved Quick-Start rate at the sender exceeds the current + sending rate, the sender enters the Quick-Start Mode and continues in + the Quick-Start Mode for a maximum period of one RTT. + + + + + +Fairhurst & Sathiaseelan Experimental [Page 13] + +RFC 5634 Quick-Start for DCCP August 2009 + + + The sender sets its Quick-Start cwnd (QS_cwnd) as follows: + + QS_cwnd = (R * T) / (s + H) (1) + + where R is the Rate Request in bytes per second, T is the measured + round-trip path delay (RTT), s is the packet size, and H is the + estimated DCCP/IP header size in bytes (e.g., 32 bytes for DCCP + layered directly over IPv4, but larger when using IPsec or IPv6). + + A CCID 2 sender MAY then increase its cwnd to the QS_cwnd. The cwnd + should not be reduced (i.e., a QS_cwnd lower than cwnd should be + ignored, since the CCID 2 congestion control method already permits + this rate). CCID 2 is not a rate-paced protocol. Therefore, if the + QS_cwnd is used, the sending host MUST implement a suitable method to + pace the rate at which the Quick-Start Packets are sent until it + receives a DCCP-ACK for a packet sent during the Quick-Start Mode + [RFC4782]. The sending host SHOULD also record the previous cwnd and + note that the new cwnd has been determined by Quick-Start, rather by + other means (e.g., by setting a flag to indicate that it is in Quick- + Start Mode). + + When the sender receives the first DCCP-ACK to a packet sent in the + Quick-Start Mode, it leaves the Quick-Start Mode and enters the + Validation Phase. + +3.1.4. Quick-Start Validation Phase for CCID 2 + + A CCID 2 sender MAY continue to send at the paced Quick-Start Rate + while in the Validation Phase. It leaves the Validation Phase on + receipt of an ACK that acknowledges the last Quick-Start Packet, or + if the validation phase persists for a period that exceeds the + Quick-Start Validation Time of 1 RTT. It MUST then reduce the cwnd + to the actual flight size (the current amount of unacknowledged data + sent) [RFC4782] and uses the congestion control methods specified for + CCID 2. + +3.1.5. Reported Loss or Congestion While Using Quick-Start + + A sender in the Quick-Start Mode (or Validation Phase) that detects + congestion (e.g., receives a feedback packet that reports new packet + loss or a packet with a congestion marking), MUST immediately leave + the Quick-Start Mode (or Validation Phase). It then resets the cwnd + to half the recorded previous cwnd and enters the congestion + avoidance phase described in [RFC4341]. + + In the absence of any feedback at the end of the Validation period, + the sender resets the cwnd to half the recorded previous cwnd and + enters the congestion avoidance phase. + + + +Fairhurst & Sathiaseelan Experimental [Page 14] + +RFC 5634 Quick-Start for DCCP August 2009 + + +3.1.6. CCID 2 Feedback Traffic on the Reverse Path + + A CCID 2 receiver sends feedback for groups of received packets + [RFC4341]. Approval of a higher transmission rate using Quick-Start + will increase control traffic on the reverse path. A return path + that becomes congested could have a transient negative impact on + other traffic flows sharing the return link. The lower rate of + feedback will then limit the achievable rate in the forward + direction. + +3.2. Quick-Start for CCID 3 + + This section describes the Quick-Start mechanism to be used with DCCP + CCID 3 [RFC4342]. The rate-based congestion control mechanism used + by CCID 3 leads to specific issues that are addressed by Quick-Start + in this section. + +3.2.1. The Quick-Start Request for CCID 3 + + A Quick-Start Request MAY be sent to allow the sender to determine if + it is safe to use a larger initial sending rate. This permits a + faster start-up of a new CCID 3 flow. + + A Quick-Start Request MAY also be sent to request a higher sending + rate after an idle period (in which the nofeedback timer expires + [RFC5348]) or an application-limited period (described in Section + 2.1). This allows a receiver to increase the sending rate faster + than allowed with standard operation (i.e., faster than twice the + rate reported by a CCID 3 receiver in the most recent feedback + message). + + The requested rate specified in a Quick-Start Request MUST NOT exceed + the TFRC-controlled sending rate [RFC4342] when this is bounded by + the current loss event rate (if any), either from calculation at the + sender or from feedback received from the receiver. CCID 3 considers + this rate is a safe response in the presence of expected congestion. + +3.2.2. Sending a Quick-Start Response with CCID 3 + + When processing a received Quick-Start Request, the receiver uses the + method described in Section 2.3. In addition, if a CCID 3 receiver + uses the window counter to send periodic feedback messages, then the + receiver sets its local variable last_counter to the value of the + window counter reported by the segment containing the Quick-Start + Request. The next feedback message would then be sent when the + window_counter is greater or equal to last_counter + 4. If the CCID + 3 receiver uses a feedback timer to send period feedback messages, + then the receiver MUST reset the CCID 3 feedback timer, causing the + + + +Fairhurst & Sathiaseelan Experimental [Page 15] + +RFC 5634 Quick-Start for DCCP August 2009 + + + feedback to be sent as soon as possible. This helps to align the + timing of feedback to the start and end of the period in which + Quick-Start Packets are sent, and will normally result in feedback at + a time that is approximately the end of the period when Quick-Start + Packets are received. + +3.2.3. Using the Quick-Start Response with CCID 3 + + On receipt of a valid Quick-Start Response option, the sender MUST + send a Quick-Start Approved option [RFC4782] (see Section 2.3). The + sender then uses one of three procedures: + + * If the approved Quick-Start rate is less than the current sending + rate, the sender does not enter the Quick-Start Mode and continues + using the procedure defined in CCID 3. + + * If loss or congestion is reported after sending the Quick-Start + Request, the sender also does not enter the Quick-Start Mode and + continues using the procedure defined in CCID 3. + + * If the approved Quick-Start rate exceeds the current sending rate, + the sender enters the Quick-Start Mode and continues in the Quick- + Start Mode for a maximum period of 1 RTT. The sender sets its + Quick-Start sending rate (QS_sendrate) as follows: + + QS_sendrate = R * s/(s + H); (2) + + where R the Rate Request in bytes per second, s is the packet size + [RFC4342], and H the estimated DCCP/IP header size in bytes (e.g., + 32 bytes for IPv4). A CCID 3 host MAY then increase its sending + rate to the QS_sendrate. The rate should not be reduced. + + CCID 3 is a rate-paced protocol. Therefore, if the QS_sendrate is + used, the sending host MUST pace the rate at which the Quick-Start + Packets are sent over the next RTT. The sending host SHOULD also + record the previous congestion-controlled rate and note that the + new rate has been determined by Quick-Start rather by other means + (e.g., by setting a flag to indicate that it is in the Quick-Start + Mode). + + The sender exits the Quick-Start Mode after either: + + * Receipt of a feedback packet acknowledging one or more Quick-Start + Packets, + + * A period of 1 RTT after receipt of a Quick-Start Response, or + + * Detection of a loss or congestion event (see Section 3.2.5). + + + +Fairhurst & Sathiaseelan Experimental [Page 16] + +RFC 5634 Quick-Start for DCCP August 2009 + + +3.2.4. Quick-Start Validation Phase for CCID 3 + + After transmitting a set of Quick-Start Packets in the Quick Start + Mode (and providing that no loss or congestion marking is reported), + the sender enters the Quick-Start Validation Phase. A sender that + receives feedback that reports a loss or congestion event MUST follow + the procedures described in Section 3.2.5. + + The sender MUST exit the Quick-Start Validation Phase on receipt of + feedback that acknowledges all packets sent in the Quick-Start Mode + (i.e., all Quick-Start Packets) or if the Validation Phase persists + for a period that exceeds the Quick-Start Validation Time of two + RTTs. + + A sender that completes the Quick-Start Validation Phase with no + reported packet loss or congestion stops using the QS_sendrate and + MUST recalculate a suitable sending rate using the standard + congestion control mechanisms [RFC4342]. + + If no feedback is received within the Quick-Start Validation Phase, + the sender MUST return to the minimum of the recorded original rate + (at the start of the Quick-Start Mode) and one half of the + QS_sendrate. The nofeedback timer is also reset. + +3.2.5. Reported Loss or Congestion during the Quick-Start Mode or + Validation Phase + + A sender in the Quick-Start Mode or Validation Phase that detects + congestion (e.g., receives a feedback packet that reports new packet + loss or a packet with a congestion marking) MUST immediately leave + the Quick-Start Mode or Validation Phase and enter the congestion + avoidance phase [RFC4342]. This implies re-calculating the sending + rate, X, as required by RFC 4342: + + X = max(min(X_calc, 2*X_recv), s/t_mbi); + + where X_calc is the transmit rate calculated by the throughput + equation, X_recv is the reported receiver rate, s is the packet size + and t_mbi is the maximum back-off interval of 64 seconds. + + The current specification of TFRC [RFC5348], which obsoletes RFC + 3448, uses a set of X_recv values and uses the maximum of the set + during application-limited intervals. This calculates the sending + rate, X as: + + X = max(min(X_calc, recv_limit),s/t_mbi); + + + + + +Fairhurst & Sathiaseelan Experimental [Page 17] + +RFC 5634 Quick-Start for DCCP August 2009 + + + where recv_limit could be max(X_recv_set) or 2*max(X_recv_set) + depending on whether there was a new loss event during a data- + limited interval, or no loss event during an application-limited + interval respectively. When the sender is not application-limited, + the recv_limit is set to 2*max(X_recv_set). + + A sender using RFC 4342 updated by [RFC5348], calculates the sending + rate, X, using the above formula normatively defined in [RFC5348]. + +3.2.6. CCID 3 Feedback Traffic on the Reverse Path + + A CCID 3 receiver sends feedback at least once each RTT [RFC4342]. + Use of Quick-Start is therefore not expected to significantly + increase control traffic on the reverse path. + +3.3. Quick-Start for CCID 4 + + This section describes the Quick-Start mechanism to be used when DCCP + uses TFRC-SP [RFC4828] in place of TFRC [RFC5348], as specified in + CCID 4 [RFC5622]. CCID 4 is similar to CCID 3 except that a sender + using CCID 4 is limited to a maximum of 100 packets/second. + + The Quick-Start procedure defined below therefore resembles that for + CCID 3. + +3.3.1. The Quick-Start Request for CCID 4 + + The procedure for sending a Quick-Start Request using CCID 4 is the + same as for CCID 3, defined in Section 3.2.1. In addition, the + requested rate MUST be less than or equal to the equivalent of a + sending rate of 100 packets per second [RFC4828]. CCID 4 [RFC4828] + specifies that the allowed sending rate derived from the TCP + throughput equation is reduced by a factor that accounts for packet + header size. + +3.3.2. Sending a Quick-Start Response with CCID 4 + + This procedure is the same as for CCID 3, defined in Section 3.2.2. + +3.3.3. Using the Quick-Start Response with CCID 4 + + This procedure is the same as for CCID 3, defined in Sections 3.2.3, + 3.2.4, and 3.2.5, except that the congestion control procedures is + updated to use TFRC-SP [RFC4828]. + + A CCID 4 sender does not need to account for headers a second time + when translating the approved Quick-Start rate into an allowed + sending rate (as described in Section 5 of [RFC5622]. + + + +Fairhurst & Sathiaseelan Experimental [Page 18] + +RFC 5634 Quick-Start for DCCP August 2009 + + +3.3.4. Reported Loss or Congestion While Using Quick-Start + + This procedure is the same as for CCID 3, defined in Section 3.2.5, + except that the congestion control procedures is updated to use + TFRC-SP [RFC4828]. + +3.3.5. CCID 4 Feedback Traffic on the Reverse Path + + A CCID 4 receiver sends feedback at least once each RTT. Use of + Quick-Start is therefore not expected to significantly increase + control traffic on the reverse path. + +4. Discussion of Issues + + The considerations for using Quick-Start with DCCP are not + significantly different to those for Quick-Start with TCP. The + document does not modify the router behavior specified for Quick- + Start. + +4.1. Overrun and the Quick-Start Validation Phase + + The less frequent feedback of DCCP raises an issue in that a sender + using Quick-Start may continue to use the rate specified by a Quick- + Start Response for a period that exceeds one path round trip time + (i.e., that which TCP would have used). This overrun is a result of + the less frequent feedback interval used by DCCP (i.e., CCID 2 may + delay feedback by at most one half cwnd and CCID 3 and CCID 4 provide + feedback at least once per RTT). In the method specified by this + document, the Quick-Start Validation Phase bounds this overrun to be + not more than an additional two RTTs. + + The selected method was chosen as a compromise that reflects the need + to terminate quickly following the loss of a feedback packet, and the + need to allow sufficient time for end host and router processing, as + well as the different perceptions of the path RTT held at the sender + and receiver. Any reported loss or congestion results in immediate + action without waiting for completion of the Quick-Start Validation + period. + +4.2. Experimental Status + + There are many cases in which Quick-Start Requests would not be + approved [RFC4782]. These include communication over paths + containing routers, IP tunnels, MPLS paths, and the like, that do not + support Quick-Start. These cases also include paths with routers or + middleboxes that drop packets containing IP options (or IPv6 + extensions). Quick-Start Requests could be difficult to approve over + paths that include multi-access Layer-2 networks. + + + +Fairhurst & Sathiaseelan Experimental [Page 19] + +RFC 5634 Quick-Start for DCCP August 2009 + + + Transient effects could arise when the transport protocol packets + associated with a connection are multiplexed over multiple parallel + (sometimes known as alternative) links or network-layer paths, and + Quick-Start is used, since it will be effective on only one of the + paths, but could lead to increased traffic on all paths. + + A CCID 2 sender using Quick-Start can increase the control traffic on + the reverse path, which could have a transient negative impact on + other traffic flows sharing the return link (Section 3.1.6). The + lower rate of feedback will then limit the achievable rate in the + forward direction. + + [RFC4782] also describes environments where the Quick-Start mechanism + could fail with false positives, with the sender incorrectly assuming + that the Quick-Start Request had been approved by all of the routers + along the path. As a result of these concerns, and as a result of + the difficulties and the seeming absence of motivation for routers, + such as core routers, to deploy Quick-Start, Quick-Start has been + proposed as a mechanism that could be of use in controlled + environments, and not as a mechanism that would be intended or + appropriate for ubiquitous deployment in the global Internet. + + Further experimentation would be required to confirm the deployment + of Quick-Start and to investigate performance issues that may arise, + prior to any recommendation for use over the general Internet. + +5. IANA Considerations + + IANA has assigned a DCCP Option Type (45) from the DCCP Option Types + Registry. This Option is applicable to all CCIDs and is known as the + "Quick-Start Response" Option and is defined in Section 2.2.1. It + specifies a length value in the format used for options numbered + 32-128. + +6. Acknowledgments + + The author gratefully acknowledges the previous work by Sally Floyd + to identify issues that impact Quick-Start for DCCP, and her comments + to improve this document. We also acknowledge comments and + corrections from Pasi Sarolahti, Vincent Roca, Mark Allman, Michael + Scharf, and others in the IETF DCCP Working Group (WG). + +7. Security Considerations + + Security issues are discussed in [RFC4782]. Middlebox deployment + issues are also highlighted in Section 2.8. No new security issues + are raised within this document. + + + + +Fairhurst & Sathiaseelan Experimental [Page 20] + +RFC 5634 Quick-Start for DCCP August 2009 + + +8. References + +8.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram + Congestion Control Protocol (DCCP)", RFC 4340, March 2006. + + [RFC4341] Floyd, S. and E. Kohler, "Profile for Datagram Congestion + Control Protocol (DCCP) Congestion Control ID 2: TCP-like + Congestion Control", RFC 4341, March 2006. + + [RFC4342] Floyd, S., Kohler, E., and J. Padhye, "Profile for + Datagram Congestion Control Protocol (DCCP) Congestion + Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, + March 2006. + + [RFC4782] Floyd, S., Allman, M., Jain, A., and P. Sarolahti, + "Quick-Start for TCP and IP", RFC 4782, January 2007. + + [RFC4828] Floyd, S. and E. Kohler, "TCP Friendly Rate Control + (TFRC): The Small-Packet (SP) Variant", RFC 4828, April + 2007. + + [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP + Friendly Rate Control (TFRC): Protocol Specification", RFC + 5348, September 2008. + + [RFC5622] Floyd, S., and E. Kohler, "Profile for Datagram Congestion + Control Protocol (DCCP) Congestion ID 4: TCP-Friendly Rate + Control for Small Packets (TFRC-SP)", RFC 5622, August + 2009. + +8.2. Informative References + + [RFC3344] Perkins, C., Ed., "IP Mobility Support for IPv4", RFC + 3344, August 2002. + + [RFC3775] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support + in IPv6", RFC 3775, June 2004. + + [RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's + Initial Window", RFC 3390, October 2002. + + [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU + Discovery", RFC 4821, March 2007. + + + +Fairhurst & Sathiaseelan Experimental [Page 21] + +RFC 5634 Quick-Start for DCCP August 2009 + + +Authors' Addresses + + Godred Fairhurst + School of Engineering + University of Aberdeen + Aberdeen, AB24 3UE + Scotland, UK + + EMail: gorry@erg.abdn.ac.uk + URI: http://www.erg.abdn.ac.uk/users/gorry + + + Arjuna Sathiaseelan + School of Engineering + University of Aberdeen + Aberdeen, AB24 3UE + Scotland, UK + + EMail: arjuna@erg.abdn.ac.uk + URI: http://www.erg.abdn.ac.uk/users/arjuna + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fairhurst & Sathiaseelan Experimental [Page 22] + |