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/rfc4782.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc4782.txt')
-rw-r--r-- | doc/rfc/rfc4782.txt | 4595 |
1 files changed, 4595 insertions, 0 deletions
diff --git a/doc/rfc/rfc4782.txt b/doc/rfc/rfc4782.txt new file mode 100644 index 0000000..4f4cdea --- /dev/null +++ b/doc/rfc/rfc4782.txt @@ -0,0 +1,4595 @@ + + + + + + +Network Working Group S. Floyd +Request for Comments: 4782 M. Allman +Category: Experimental ICIR + A. Jain + F5 Networks + P. Sarolahti + Nokia Research Center + January 2007 + + + Quick-Start for TCP and IP + +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 IETF Trust (2007). + +Abstract + + This document specifies an optional Quick-Start mechanism for + transport protocols, in cooperation with routers, to determine an + allowed sending rate at the start and, at times, in the middle of a + data transfer (e.g., after an idle period). While Quick-Start is + designed to be used by a range of transport protocols, in this + document we only specify its use with TCP. Quick-Start is designed + to allow connections to use higher sending rates when there is + significant unused bandwidth along the path, and the sender and all + of the routers along the path approve the Quick-Start Request. + + This document describes many paths where Quick-Start Requests would + not be approved. These paths include all paths containing routers, + IP tunnels, MPLS paths, and the like that do not support Quick- + Start. These paths also include paths with routers or middleboxes + that drop packets containing IP options. Quick-Start Requests could + be difficult to approve over paths that include multi-access layer- + two networks. This document also describes environments where the + Quick-Start process 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 seeming absence of motivation + for routers, such as core routers to deploy Quick-Start, Quick-Start + is being proposed as a mechanism that could be of use in controlled + + + +Floyd, et al. Experimental [Page 1] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + environments, and not as a mechanism that would be intended or + appropriate for ubiquitous deployment in the global Internet. + +Table of Contents + + 1. Introduction ....................................................4 + 1.1. Conventions and Terminology ................................5 + 2. Assumptions and General Principles ..............................6 + 2.1. Overview of Quick-Start ....................................7 + 3. The Quick-Start Option in IP ...................................10 + 3.1. The Quick-Start Option for IPv4 ...........................10 + 3.2. The Quick-Start Option for IPv6 ...........................13 + 3.3. Processing the Quick-Start Request at Routers .............14 + 3.3.1. Processing the Report of Approved Rate .............15 + 3.4. The QS Nonce ..............................................16 + 4. The Quick-Start Mechanisms in TCP ..............................18 + 4.1. Sending the Quick-Start Request ...........................19 + 4.2. The Quick-Start Response Option in the TCP header .........20 + 4.3. TCP: Sending the Quick-Start Response .....................21 + 4.4. TCP: Receiving and Using the Quick-Start Response Packet ..22 + 4.5. TCP: Controlling Acknowledgement Traffic on the + Reverse Path ..............................................24 + 4.6. TCP: Responding to a Loss of a Quick-Start Packet .........26 + 4.7. TCP: A Quick-Start Request for a Larger Initial Window ....26 + 4.7.1. Interactions with Path MTU Discovery ...............26 + 4.7.2. Quick-Start Request Packets that are + Discarded by Routers or Middleboxes ................27 + 4.8. TCP: A Quick-Start Request in the Middle of a Connection ..28 + 4.9. An Example Quick-Start Scenario with TCP ..................29 + 5. Quick-Start and IPsec AH .......................................30 + 6. Quick-Start in IP Tunnels and MPLS .............................31 + 6.1. Simple Tunnels that Are Compatible with Quick-Start .......33 + 6.1.1. Simple Tunnels that Are Aware of Quick-Start .......33 + 6.2. Simple Tunnels that Are Not Compatible with Quick-Start ...34 + 6.3. Tunnels That Support Quick-Start ..........................35 + 6.4. Quick-Start and MPLS ......................................35 + 7. The Quick-Start Mechanism in Other Transport Protocols .........36 + 8. Using Quick-Start ..............................................37 + 8.1. Determining the Rate to Request ...........................37 + 8.2. Deciding the Permitted Rate Request at a Router ...........37 + 9. Evaluation of Quick-Start ......................................38 + 9.1. Benefits of Quick-Start ...................................38 + 9.2. Costs of Quick-Start ......................................39 + 9.3. Quick-Start with QoS-Enabled Traffic ......................41 + 9.4. Protection against Misbehaving Nodes ......................41 + 9.4.1. Misbehaving Senders ................................41 + 9.4.2. Receivers Lying about Whether the Request + was Approved .......................................43 + + + +Floyd, et al. Experimental [Page 2] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + 9.4.3. Receivers Lying about the Approved Rate ............43 + 9.4.4. Collusion between Misbehaving Routers ..............44 + 9.5. Misbehaving Middleboxes and the IP TTL ....................46 + 9.6. Attacks on Quick-Start ....................................46 + 9.7. Simulations with Quick-Start ..............................47 + 10. Implementation and Deployment Issues ..........................47 + 10.1. Implementation Issues for Sending Quick-Start Requests ...47 + 10.2. Implementation Issues for Processing Quick-Start + Requests .................................................48 + 10.3. Possible Deployment Scenarios ............................48 + 10.4. A Comparison with the Deployment Problems of ECN .........50 + 11. Security Considerations .......................................50 + 12. IANA Considerations ...........................................52 + 12.1. IP Option ................................................52 + 12.2. TCP Option ...............................................52 + 13. Conclusions ...................................................53 + 14. Acknowledgements ..............................................53 + Appendix A. Related Work ..........................................54 + A.1. Fast Start-Ups without Explicit Information from Routers ..54 + A.2. Optimistic Sending without Explicit Information from + Routers ...................................................56 + A.3. Fast Start-Ups with Other Information from Routers ........56 + A.4. Fast Start-Ups with More Fine-Grained Feedback from + Routers ...................................................57 + A.5. Fast Start-ups with Lower-Than-Best-Effort Service ........58 + Appendix B. Design Decisions ......................................59 + B.1. Alternate Mechanisms for the Quick-Start Request: + ICMP and RSVP .............................................59 + B.1.1. ICMP ...............................................59 + B.1.2. RSVP ...............................................60 + B.2. Alternate Encoding Functions ..............................61 + B.3. The Quick-Start Request: Packets or Bytes? ................63 + B.4. Quick-Start Semantics: Total Rate or Additional Rate? .....64 + B.5. Alternate Responses to the Loss of a Quick-Start Packet ...65 + B.6. Why Not Include More Functionality? .......................66 + B.7. Alternate Implementations for a Quick-Start Nonce .........69 + B.7.1. An Alternate Proposal for the Quick-Start Nonce ....69 + B.7.2. The Earlier Request-Approved Quick-Start Nonce .....69 + Appendix C. Quick-Start with DCCP .................................70 + Appendix D. Possible Router Algorithm .............................72 + Appendix E. Possible Additional Uses for the Quick-Start ..........74 + Normative References ..............................................75 + Informative References ............................................75 + + + + + + + + +Floyd, et al. Experimental [Page 3] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +1. Introduction + + Each connection begins with a question: "What is the appropriate + sending rate for the current network path?" The question is not + answered explicitly, but each TCP connection determines the sending + rate by probing the network path and altering the congestion window + (cwnd) based on perceived congestion. Each TCP connection starts + with a pre-configured initial congestion window (ICW). Currently, + TCP allows an initial window of between one and four segments of + maximum segment size (MSS) ([RFC2581], [RFC3390]). The TCP + connection then probes the network for available bandwidth using the + slow-start procedure ([Jac88], [RFC2581]), doubling cwnd during each + congestion-free round-trip time (RTT). + + The slow-start algorithm can be time-consuming --- especially over + networks with large bandwidth or long delays. It may take a number + of RTTs in slow-start before the TCP connection begins to fully use + the available bandwidth of the network. For instance, it takes + log_2(N) - 2 round-trip times to build cwnd up to N segments, + assuming an initial congestion window of 4 segments. This time in + slow-start is not a problem for large file transfers, where the + slow-start stage is only a fraction of the total transfer time. + However, in the case of moderate-sized transfers, the connection + might carry out its entire transfer in the slow-start phase, taking + many round-trip times, where one or two RTTs might have been + sufficient when using the currently available bandwidth along the + path. + + A fair amount of work has already been done to address the issue of + choosing the initial congestion window for TCP, with RFC 3390 + allowing an initial window of up to four segments based on the MSS + used by the connection [RFC3390]. Our underlying premise is that + explicit feedback from all the routers along the path would be + required, in the current architecture, for best-effort connections to + use initial windows significantly larger than those allowed by + [RFC3390], in the absence of other information about the path. + + In using Quick-Start, a TCP host (say, host A) would indicate its + desired sending rate in bytes per second, using a Quick-Start Option + in the IP header of a TCP packet. Each 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. (We + note that the `routers' referred to in this document also include the + IP-layer processing of the Quick-Start Request at the sender.) In + approving a Quick-Start Request, a router does not give preferential + treatment to subsequent packets from that connection; the router is + only asserting that it is currently underutilized and believes there + is sufficient available bandwidth to accommodate the sender's + + + +Floyd, et al. Experimental [Page 4] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + requested rate. The Quick-Start mechanism can determine if there are + routers along the path that do not understand the Quick-Start Option, + or have not agreed to the Quick-Start rate request. TCP host B + communicates the final rate request to TCP host A in a transport- + level Quick-Start Response in an answering TCP packet. + + If the Quick-Start Request is approved by all routers along the path, + then the TCP host can send at up to the approved rate for a window of + data. Subsequent transmissions will be governed by the default TCP + congestion control mechanisms of that connection. If the Quick-Start + Request is not approved, then the sender would use the default + congestion control mechanisms. + + Quick-Start would not be the first mechanism for explicit + communication from routers to transport protocols about sending + rates. Explicit Congestion Notification (ECN) gives explicit + congestion control feedback from routers to transport protocols, + based on the router detecting congestion before buffer overflow + [RFC3168]. In contrast, routers would not use Quick-Start to give + congestion information, but instead would use Quick-Start as an + optional mechanism to give permission to transport protocols to use + higher sending rates, based on the ability of all the routers along + the path to determine if their respective output links are + significantly underutilized. + + Section 2 gives an overview of Quick-Start. The formal + specifications for Quick-Start are contained in Sections 3, 4, 6.1.1, + and 6.3. In particular, Quick-Start is specified for IPv4 and for + IPv6 in Section 3, and is specified for TCP in Section 4. Section 6 + consists mostly of a non-normative discussion of interactions of + Quick-Start with IP tunnels and MPLS; however, Section 6.1.1 and 6.3 + specify behavior for IP tunnels that are aware of Quick-Start. + + The rest of the document is non-normative, as follows. Section 5 + shows that Quick-Start is compatible with IPsec AH (Authentication + Header). Section 7 gives a non-normative set of guidelines for + specifying Quick-Start in other transport protocols, and Section 8 + discusses using Quick-Start in transport end-nodes and routers. + Section 9 gives an evaluation of the costs and benefits of Quick- + Start, and Section 10 discusses implementation and deployment issues. + The appendices discuss related work, Quick-Start design decisions, + and possible router algorithms. + +1.1. Conventions and 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 [RFC2119]. + + + +Floyd, et al. Experimental [Page 5] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +2. Assumptions and General Principles + + This section describes the assumptions and general principles behind + the design of the Quick-Start mechanism. + + Assumptions: + + * The data transfer in the two directions of a connection traverses + different queues, and possibly even different routers. Thus, any + mechanism for determining the allowed sending rate would have to be + used independently for each direction. + + * The path between the two endpoints is relatively stable, such that + the path used by the Quick-Start Request is generally the same path + used by the Quick-Start packets one round-trip time later. + [ZDPS01] shows this assumption should be generally valid. However, + [RFC3819] discusses a range of Bandwidth on Demand subnets that + could cause the characteristics of the path to change over time. + + * Any new mechanism must be incrementally deployable and might not be + supported by all the routers and/or end-hosts. Thus, any new + mechanism must be able to accommodate non-supporting routers or + end-hosts without disturbing the current Internet semantics. We + note that, while Quick-Start is incrementally deployable in this + sense, a Quick-Start Request cannot be approved for a particular + connection unless both end-nodes and all the routers along the path + have been configured to support Quick-Start. + + General Principles: + + * Our underlying premise is that explicit feedback from all the + routers along the path would be required, in the current + architecture, for best-effort connections to use initial windows + significantly larger than those allowed by [RFC3390], in the + absence of other information about the path. + + * A router should only approve a Quick-Start Request if the output + link is underutilized. Any other approach will result in either + per-flow state at the router, or the possibility of a (possibly + transient) queue at the router. + + * No per-flow state should be required at the router. Note that, + while per-flow state is not required, we also do not preclude a + router from storing per-flow state for making Quick-Start decisions + or for checking for misbehaving nodes. + + + + + + +Floyd, et al. Experimental [Page 6] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +2.1. Overview of Quick-Start + + In this section, we give an overview of the use of Quick-Start with + TCP to request a higher congestion window. The description in this + section is non-normative; the normative description of Quick-Start + with IP and TCP follows in Sections 3 and 4. Quick-Start could be + used in the middle of a connection, e.g., after an idle or + underutilized period, as well as for the initial sending rate; these + uses of Quick-Start are discussed later in the document. + + Quick-Start requires end-points and routers to work together, with + end-points requesting a higher sending rate in the Quick-Start (QS) + option in IP, and routers along the path approving, modifying, + discarding, or ignoring (and therefore disallowing) the Quick-Start + Request. The receiver uses reliable, transport-level mechanisms to + inform the sender of the status of the Quick-Start Request. For + example, when TCP is used, the TCP receiver sends feedback to the + sender using a Quick-Start Response option in the TCP header. In + addition, Quick-Start assumes a unicast, congestion-controlled + transport protocol; we do not consider the use of Quick-Start for + multicast traffic. + + When sent as a request, the Quick-Start Option includes a request for + a sending rate in bits per second, and a Quick-Start Time to Live (QS + TTL) to be decremented by every router along the path that + understands the option and approves the request. The Quick-Start TTL + is initialized by the sender to a random value. The transport + receiver returns the rate, information about the TTL, and the Quick- + Start Nonce to the sender using transport-level mechanisms; for TCP, + the receiver sends this information in the Quick-Start Response in + the TCP header. In particular, the receiver computes the difference + between the Quick-Start TTL and the IP TTL (the TTL in the IP header) + of the Quick-Start Request packet, and returns this in the Quick- + Start Response. The sender uses the TTL difference to determine if + all the routers along the path decremented the Quick-Start TTL, + approving the Quick-Start Request. + + If the request is approved by all the routers along the path, then + the TCP sender combines this allowed rate with the measurement of the + round-trip time, and ends up with an allowed TCP congestion window. + This window is sent rate-paced over the next round-trip time, or + until an ACK packet is received. + + Figure 1 shows a successful use of Quick-Start, with the sender's IP + layer and both routers along the path approving the Quick-Start + Request, and the TCP receiver using the Quick-Start Response to + return information to the TCP sender. In this example, Quick-Start + is used by TCP to establish the initial congestion window. + + + +Floyd, et al. Experimental [Page 7] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Sender Router 1 Router 2 Receiver + ------ -------- -------- -------- + | <IP TTL: 63> + | <QS TTL: 91> + | <TTL Diff: 28> + | Quick-Start Request + | in SYN or SYN/ACK. + | IP: Decrement QS TTL + | to approve request --> + | + | Decrement + | QS TTL + | to approve + | request --> + | + | Decrement + | QS TTL + | to approve + | request --> + | + | <IP TTL: 60> + | <QS TTL: 88> + | <TTL Diff: 28> + | Return Quick-Start + | info to sender in + | Quick-Start Response + | <-- in TCP ACK packet. + | + | <TTL Diff: 28> + | Quick-Start approved, + | translate to cwnd. + | Report Approved Rate. + V Send cwnd paced over one RTT. --> + + Figure 1: A Successful Quick-Start Request. + + Figure 2 shows an unsuccessful use of Quick-Start, with one of the + routers along the path not approving the Quick-Start Request. If the + Quick-Start Request is not approved, then the sender uses the default + congestion control mechanisms for that transport protocol, including + the default initial congestion window, response to idle periods, etc. + + + + + + + + + + +Floyd, et al. Experimental [Page 8] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Sender Router 1 Router 2 Receiver + ------ -------- -------- -------- + | <IP TTL: 63> + | <QS TTL: 91> + | <TTL Diff: 28> + | Quick-Start Request + | in SYN or SYN/ACK. + | IP: Decrement QS TTL + | to approve request --> + | + | Decrement + | QS TTL + | to approve + | request --> + | + | Forward packet + | without modifying + | Quick-Start Option. --> + | + | <IP TTL: 60> + | <QS TTL: 89> + | <TTL Diff: 29> + | Return Quick-Start + | info to sender in + | Quick-Start Response + | <-- in TCP ACK packet. + | + | <TTL Diff: 29> + | Quick-Start not approved. + | Report approved rate. + V Use default initial cwnd. --> + + Figure 2: An Unsuccessful Quick-Start Request. + + + + + + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 9] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +3. The Quick-Start Option in IP + +3.1. The Quick-Start Option for IPv4 + + The Quick-Start Request for IPv4 is defined as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Option | Length=8 | Func. | Rate | QS TTL | + | | | 0000 |Request| | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | QS Nonce | R | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 3: The Quick-Start Option for IPv4. + A Quick-Start Request. + + The first byte contains the option field, which includes the one-bit + copy flag, the 2-bit class field, and the 5-bit option number. + + The second byte contains the length field, indicating an option + length of eight bytes. + + The third byte includes a four-bit Function field. If the Function + field is set to "0000", then the Quick-Start Option is a Rate + Request. In this case, the second half of the third byte is a four- + bit Rate Request field. + + For a Rate Request, the fourth byte contains the Quick-Start TTL (QS + TTL) field. The sender MUST set the QS TTL field to a random value. + Routers that approve the Quick-Start Request decrement the QS TTL + (mod 256) by the same amount that they decrement the IP TTL. (As + elsewhere in this document, we use the term `router' imprecisely to + also include the Quick-Start functionality at the IP layer at the + sender.) The QS TTL is used by the sender to detect if all the + routers along the path understood and approved the Quick-Start + option. + + For a Rate Request, the transport sender MUST calculate and store the + TTL Diff, the difference between the IP TTL value, and the QS TTL + value in the Quick-Start Request packet, as follows: + + TTL Diff = ( IP TTL - QS TTL ) mod 256 (1) + + + + + + + +Floyd, et al. Experimental [Page 10] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + For a Rate Request, bytes 5-8 contain a 30-bit QS Nonce, discussed in + Section 3.4, and a two-bit Reserved field. The sender SHOULD set the + reserved field to zero, and routers and receivers SHOULD ignore the + reserved field. The sender SHOULD set the 30-bit QS Nonce to a + random value. + + The sender initializes the Rate Request to the desired sending rate, + including an estimate of the transport and IP header overhead. The + encoding function for the Rate Request sets the request rate to K*2^N + bps (bits per second), for N the value in the Rate Request field, and + for K set to 40,000. For N=0, the rate request would be set to zero, + regardless of the encoding function. This is illustrated in Table 1 + below. For the four-bit Rate Request field, the request range is + from 80 Kbps to 1.3 Gbps. Alternate encodings that were considered + for the Rate Request are given in Appendix B.2. + + N Rate Request (in Kbps) + --- ---------------------- + 0 0 + 1 80 + 2 160 + 3 320 + 4 640 + 5 1,280 + 6 2,560 + 7 5,120 + 8 10,240 + 9 20,480 + 10 40,960 + 11 81,920 + 12 163,840 + 13 327,680 + 14 655,360 + 15 1,310,720 + + Table 1: Mapping from Rate Request Field to Rate Request in Kbps. + + Routers can approve the Quick-Start Request for a lower rate by + decreasing the Rate Request in the Quick-Start Request. Section 4.2 + discusses the Quick-Start Response from the TCP receiver to the TCP + sender, and Section 4.4 discusses the TCP sender's mechanism for + determining if a Quick-Start Request has been approved. + + + + + + + + + +Floyd, et al. Experimental [Page 11] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Option | Length=8 | Func. | Rate | Not Used | + | | | 1000 | Report| | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | QS Nonce | R | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 4: The Quick-Start Option for IPv4. + Report of Approved Rate. + + If the Function field in the third byte of the Quick-Start Option is + set to "1000", then the Quick-Start Option is a Report of Approved + Rate. In this case, the second four bits in the third byte are the + Rate Report field, formatted exactly as in the Rate Request field in + a Rate Request. For a Report of Approved Rate, the fourth byte of + the Quick-Start Option is not used. Bytes 5-8 contain a 30-bit QS + Nonce and a 2-bit Reserved field. + + After an approved Rate Request, the sender MUST report the Approved + Rate, using a Quick-Start Option configured as a Report of Approved + Rate with the Rate Report field set to the approved rate, and the QS + Nonce set to the QS Nonce sent in the Quick-Start Request. The + packet containing the Report of Approved Rate MUST be either a + control packet sent before the first Quick-Start data packet, or a + Quick-Start Option in the first data packet itself. The Report of + Approved Rate does not have to be sent reliably; for example, if the + approved rate is reported in a separate control packet, the sender + does not necessarily know if the control packet has been dropped in + the network. If the packet containing the Quick-Start Request is + acknowledged, but the acknowledgement packet does not contain a + Quick-Start Response, then the sender MUST assume that the Quick- + Start Request was denied, and set a Report of Approved Rate with a + rate of zero. Routers may choose to ignore the Report of Approved + Rate, or to use the Report of Approved Rate but ignore the QS Nonce. + Alternately, some routers that use the Report of Approved Rate may + choose to match the QS Nonce, masked by the approved rate, with the + QS Nonce seen in the original request. + + If the Rate Request is denied, the sender MUST send a Report of + Approved Rate with the Rate Report field set to zero. + + We note that, unlike a Quick-Start Request sent at the beginning of a + connection, when a Quick-Start Request is sent in the middle of a + connection, the connection could already have an established + congestion window or sending rate. The Rate Request is the requested + total rate for the connection, including the current rate of the + + + +Floyd, et al. Experimental [Page 12] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + connection; the Rate Request is *not* a request for an additional + sending rate over and above the current sending rate. If the Rate + Request is denied, or lowered to a value below the connection's + current sending rate, then the sender ignores the request, and + reverts to the default congestion control mechanisms of the transport + protocol. + + The use of the Quick-Start Option does not require the additional use + of the Router Alert Option [RFC2113]. + + We note that in IPv4, a change in IP options at routers requires + recalculating the IP header checksum. + +3.2. The Quick-Start Option for IPv6 + + The Quick-Start Option for IPv6 is placed in the Hop-by-Hop Options + extension header that is processed at every network node along the + communication path [RFC2460]. The option format following the + generic Hop-by-Hop Options header is identical to the IPv4 format, + with the exception that the Length field should exclude the common + type and length fields in the option format and be set to 6 bytes + instead of 8 bytes. + + For a Quick-Start Request, the transport receiver compares the + Quick-Start TTL with the IPv6 Hop Limit field to calculate the TTL + Diff. (The Hop Limit in IPv6 is the equivalent of the TTL in IPv4.) + That is, TTL Diff MUST be calculated and stored as follows: + + TTL Diff = ( IPv6 Hop Limit - QS TTL ) mod 256 (2) + + Unlike IPv4, modifying or deleting the Quick-Start IPv6 Option does + not require checksum re-calculation, because the IPv6 header does not + have a checksum field, and modifying the Quick-Start Request in the + IPv6 Hop-by-Hop options header does not affect the IPv6 pseudo- + header checksum used in upper-layer checksum calculations. + + Appendix A of RFC 2460 requires that all packets with the same flow + label must be originated with the same hop-by-hop header contents, + which would be incompatible with Quick-Start. However, a later IPv6 + flow label specification [RFC3697] updates the use of flow labels in + IPv6 and removes this restriction. Therefore, Quick-Start is + compatible with the current IPv6 specifications. + + + + + + + + + +Floyd, et al. Experimental [Page 13] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +3.3. Processing the Quick-Start Request at Routers + + The Quick-Start Request does not report the current sending rate of + the connection sending the request; in the default case of a router + (or IP-layer implementation at an end-node) that does not maintain + per-flow state, a router makes the conservative assumption that the + flow's current sending rate is zero. Each participating router can + either terminate or approve the Quick-Start Request. A router MUST + only approve a Quick-Start Request if the output link is + underutilized, and if the router judges that the output link will + continue to be underutilized if this and earlier approved requests + are used by the senders. Otherwise, the router reduces or terminates + the Quick-Start Request. + + While the paragraph above defines the *semantics* of approving a + Quick-Start Request, this document does not specify the specific + algorithms to be used by routers in processing Quick-Start Requests + or Reports. This is similar to RFC 3168, which specifics the + semantics of the ECN codepoints in the IP header, but does not + specify specific algorithms for routers to use in deciding when to + drop or mark packets before buffer overflow. + + A router that wishes to terminate the Quick-Start Request SHOULD + either delete the Quick-Start Request from the IP header or zero the + QS TTL, QS Nonce, and Rate Request fields. Deleting the Quick-Start + Request saves resources because downstream routers will have no + option to process, but zeroing the Rate Request field may be more + efficient for routers to implement. As suggested in [B05], future + additions to Quick-Start could define error codes for routers to + insert into the QS Nonce field to report back to the sender the + reason that the Quick-Start Request was denied, e.g., that the router + is denying all Quick-Start Requests at this time, or that this + router, as a matter of policy, does not grant Quick-Start requests. + A router that doesn't understand the Quick-Start Option will simply + forward the packet with the Quick-Start Request unchanged (ensuring + that the TTL Diff will not match and Quick-Start will not be used). + + If the participating router has decided to approve the Quick-Start + Request, it does the following: + + * The router MUST decrement the QS TTL by the amount the IP TTL is + decremented (usually one). + + * If the router is only willing to approve a Rate Request less than + that in the Quick-Start Request, then the router replaces the Rate + Request with a smaller value. The router MUST NOT increase the + Rate Request in the Quick-Start Request. If the router decreases + + + + +Floyd, et al. Experimental [Page 14] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + the Rate Request, the router MUST also modify the QS Nonce, as + described in Section 3.4. + + * In IPv4, the router MUST update the IP header checksum. + + If the router approves the Quick-Start Request, this approval SHOULD + be taken into account in the router's decision to accept or reject + subsequent Quick-Start Requests (e.g., using a variable that tracks + the recent aggregate of accepted Quick-Start Requests). This + consideration of earlier approved Quick-Start Requests is necessary + to ensure that the router only approves a Quick-Start Request when + the router judges that the output link will remain underutilized if + this and earlier Quick-Start Requests are used by the senders. + + In addition, the approval of a Quick-Start Request SHOULD NOT be used + by the router to affect the treatment of the data packets that arrive + from this connection in the next few round-trip times. That is, the + approval by the router of a Quick-Start Request does not give + differential treatment for Quick-Start data packets at that router; + it is only a statement from the router that the router believes that + the subsequent Quick-Start data packets from this connection will not + change the current underutilized state of the router. + + A non-participating router forwards the Quick-Start Request + unchanged, without decrementing the QS TTL. The non-participating + router still decrements the TTL field in the IP header, as is + required for all routers [RFC1812]. As a result, the sender will be + able to detect that the Quick-Start Request had not been understood + or approved by all of the routers along the path. + + A router that uses multipath routing for packets within a single + connection MUST NOT approve a Quick-Start Request. This is discussed + in more detail in Section 9.2. + +3.3.1. Processing the Report of Approved Rate + + If the Quick-Start Option has the Function field set to "1000", then + this is a Report of Approved Rate, rather than a Rate Request. The + router MAY ignore such an option, and, in any case, it MUST NOT + modify the contents of the option for a Report of Approved Rate. + However, the router MAY use the Approved Rate report to check that + the sender is not lying about the approved rate. If the reported + Approved Rate is higher than the rate that the router actually + approved for this connection in the previous round-trip time, then + the router may implement some policy for cheaters. For instance, the + router MAY decide to deny future Quick-Start Requests from this + sender, including, if desired, deleting Quick-Start Requests from + future packets from this sender. Section 9.4.1 discusses misbehaving + + + +Floyd, et al. Experimental [Page 15] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + senders in more detail. From the Report of Approved Rate, the router + can also learn if some of the downstream routers have approved the + Quick-Start Request for a smaller rate or denied the use of Quick- + Start, and adjust its bandwidth allocations accordingly. + +3.4. The QS Nonce + + The QS Nonce gives the Quick-Start sender some protection against + receivers lying about the value of the received Rate Request. This + is particularly important if the receiver knows the original value of + the Rate Request (e.g., when the sender always requests the same + value, and the receiver has a long history of communication with that + sender). Without the QS Nonce, there is nothing to prevent the + receiver from reporting back to the sender a Rate Request of K, when + the received Rate Request was, in fact, less than K. + + Table 2 gives the format for the 30-bit QS Nonce. + + Bits Purpose + --------- ------------------ + Bits 0-1: Rate 15 -> Rate 14 + Bits 2-3: Rate 14 -> Rate 13 + Bits 4-5: Rate 13 -> Rate 12 + Bits 6-7: Rate 12 -> Rate 11 + Bits 8-9: Rate 11 -> Rate 10 + Bits 10-11: Rate 10 -> Rate 9 + Bits 12-13: Rate 9 -> Rate 8 + Bits 14-15: Rate 8 -> Rate 7 + Bits 16-17: Rate 7 -> Rate 6 + Bits 18-19: Rate 6 -> Rate 5 + Bits 20-21: Rate 5 -> Rate 4 + Bits 22-23: Rate 4 -> Rate 3 + Bits 24-25: Rate 3 -> Rate 2 + Bits 26-27: Rate 2 -> Rate 1 + Bits 28-29: Rate 1 -> Rate 0 + + Table 2: The QS Nonce. + + The transport sender MUST initialize the QS Nonce to a random value. + If the router reduces the Rate Request from rate K to rate K-1, then + the router MUST set the field in the QS Nonce for "Rate K -> Rate + K-1" to a new random value. Similarly, if the router reduces the + Rate Request by N steps, the router MUST set the 2N bits in the + relevant fields in the QS Nonce to a new random value. The receiver + MUST report the QS Nonce back to the sender. + + + + + + +Floyd, et al. Experimental [Page 16] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + If the Rate Request was not decremented in the network, then the QS + Nonce should have its original value. Similarly, if the Rate Request + was decremented by N steps in the network, and the receiver reports + back a Rate Request of K, then the last 2K bits of the QS Nonce + should have their original value. + + With the QS Nonce, the receiver has a 1/4 chance of cheating about + each step change in the rate request. Thus, if the rate request is + reduced by two steps in the network, the receiver has a 1/16 chance + of successfully reporting that the original request was approved, as + this requires reporting the original value for the QS nonce. + Similarly, if the rate request is reduced many steps in the network, + and the receiver receives a QS Option with a rate request of K, the + receiver has a 1/16 chance of guessing the original values for the + fields in the QS nonce for "Rate K+2 -> Rate K+1" and "Rate K+1 -> + Rate K". Thus, the receiver has a 1/16 chance of successfully lying + and saying that the received rate request was K+2 instead of K. + + We note that the protection offered by the QS Nonce is the same + whether one router makes all the decrements in the rate request, or + whether they are made at different routers along the path. + + The requirements for randomization for the sender and routers in + setting `random' values in the QS Nonce are not stringent -- almost + any form of pseudo-random numbers will do. The requirement is that + the original value for the QS Nonce is not easily predictable by the + receiver, and in particular, the nonce MUST NOT be easily determined + from inspection of the rest of the packet or from previous packets. + In particular, the nonce MUST NOT be based only on a combination of + specific packet header fields. Thus, if two bits of the QS Nonce are + changed by a router along the path, the receiver should not be able + to guess those two bits from the other 28 bits in the QS Nonce. + + An additional requirement is that the receiver cannot be able to + tell, from the QS Nonce itself, which numbers in the QS Nonce were + generated by the sender, and which were generated by routers along + the path. This makes it harder for the receiver to infer the value + of the original rate request, making it one step harder for the + receiver to cheat. + + Section 9.4 also considers issues of receiver cheating in more + detail. + + + + + + + + + +Floyd, et al. Experimental [Page 17] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +4. The Quick-Start Mechanisms in TCP + + This section describes how the Quick-Start mechanism would be used in + TCP. We first sketch the procedure and then tightly define it in the + subsequent subsections. + + If a TCP sender (say, host A) would like to use Quick-Start, the TCP + sender puts the requested sending rate in bits per second, + appropriately formatted, in the Quick-Start Option in the IP header + of the TCP packet, called the Quick-Start Request packet. (We will + be somewhat loose in our use of "packet" vs. "segment" in this + section.) When used for initial start-up, the Quick-Start Request + packet can be either the SYN or SYN/ACK packet, as illustrated in + Figure 1. The requested rate includes an estimate for the transport + and IP header overhead. The TCP receiver (say, host B) returns the + Quick-Start Response option in the TCP header in the responding + SYN/ACK packet or ACK packet, called the Quick-Start Response packet, + informing host A of the results of their request. + + If the acknowledging packet does not contain a Quick-Start Response, + or contains a Quick-Start Response with the wrong value for the TTL + Diff or the QS Nonce, then host A MUST assume that its Quick-Start + request failed. In this case, host A sends a Report of Approved Rate + with a Rate Report of zero, and uses TCP's default congestion control + procedure. For initial start-up, host A uses the default initial + congestion window ([RFC2581], [RFC3390]). + + If the returning packet contains a valid Quick-Start Response, then + host A uses the information in the response, along with its + measurement of the round-trip time, to determine the Quick-Start + congestion window (QS-cwnd). Quick-Start data packets are defined as + data packets sent as the result of a successful Quick-Start request, + up to the time when the first Quick-Start packet is acknowledged. + The sender also sends a Report of Approved Rate. In order to use + Quick-Start, the TCP host MUST use rate-based pacing [VH97] to + transmit Quick-Start packets at the rate indicated in the Quick-Start + Response, at the level of granularity possible by the sending host. + We note that the limitations of interrupt timing on computers can + limit the ability of the TCP host in rate-pacing the outgoing + packets. + + The two TCP end-hosts can independently decide whether to request + Quick-Start. For example, host A could send a Quick-Start Request in + the SYN packet, and host B could also send a Quick-Start Request in + the SYN/ACK packet. + + + + + + +Floyd, et al. Experimental [Page 18] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +4.1. Sending the Quick-Start Request + + When sending a Quick-Start Request, the TCP sender SHOULD send the + request on a packet that requires an acknowledgement, such as a SYN, + SYN/ACK, or data packet. In this case, if the packet is acknowledged + but no Quick-Start Response is included, then the sender knows that + the Quick-Start Request has been denied, and can send a Report of + Approved Rate. + + In addition to the use of Quick-Start when a connection is + established, there are several additional points in a connection when + a transport protocol may want to issue a Rate Request. We first + reiterate the notion that Quick-Start is a coarse-grained mechanism. + That is, Quick-Start's Rate Requests are not meant to be used for + fine-grained control of the transport's sending rate. Rather, the + transport MAY issue a Rate Request when no information about the + appropriate sending rate is available, and the default congestion + control mechanisms might be significantly underestimating the + appropriate sending rate. + + The following are potential points where Quick-Start may be useful: + + (1) At or soon after connection initiation, when the transport has no + idea of the capacity of the network path, as discussed above. (A + transport that uses TCP Control Block sharing [RFC2140], the + Congestion Manager [RFC3124], or other mechanisms for sharing + congestion information may not need Quick-Start to determine an + appropriate rate.) + + (2) After an idle period when the transport no longer has a validated + estimate of the available bandwidth for this flow. (An example + could be a persistent-HTTP connection when a new HTTP request is + received after an idle period.) + + (3) After a host has received explicit indications that one of the + endpoints has moved its point of network attachment. This can + happen due to some underlying mobility mechanism like Mobile IP + ([RFC3344], [RFC3775]). Some transports, such as Steam Control + Transmission Protocol (SCTP) [RFC2960], may associate with + multiple IP addresses and can switch addresses (and therefore + network paths) in mid-connection. If the transport has concrete + knowledge of a changing network path, then the current sending + rate may not be appropriate, and the transport sender may use + Quick-Start to probe the network to see if it can send at a + higher rate. (Alternatively, traditional slow-start should be + used in this case when Quick-Start is not available.) + + + + + +Floyd, et al. Experimental [Page 19] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + (4) After an application-limited period, when the sender has been + using only a small amount of its appropriate share of the network + capacity and has no valid estimate for its fair share. In this + case, Quick-Start may be an appropriate mechanism to determine if + the sender can send at a higher rate. For instance, consider an + application that steadily exchanges low- rate control messages + and suddenly needs to transmit a large amount of data. + + Of the above, this document recommends that a TCP sender MAY attempt + to use Quick-Start in cases (1) and (2). It is NOT RECOMMENDED that + a TCP sender use Quick-Start for case (3) at the current time. Case + (3) requires external notifications not presently defined for TCP or + other transport protocols. Finally, a TCP SHOULD NOT use Quick- + Start for case (4) at the current time. Case (4) requires further + thought and investigation with regard to how the transport protocol + could determine it was in a situation that would warrant transmitting + a Quick-Start Request. + + As a general guideline, a TCP sender SHOULD NOT request a sending + rate larger than it is able to use over the next round-trip time of + the connection (or over 100 ms, if the round-trip time is not known), + except as required to round up the desired sending rate to the next- + highest allowable request. + + In any circumstances, the sender MUST NOT make a QS request if it has + made a QS request within the most recent round-trip time. + + Section 4.7 discusses some of the issues of using Quick-Start at + connection initiation, and Section 4.8 discusses issues that arise + when Quick-Start is used to request a larger sending rate after an + idle period. + +4.2. The Quick-Start Response Option in the TCP header + + In order to approve the use of Quick-Start, the TCP receiver responds + to the receipt of a Quick-Start Request with a Quick-Start Response, + using the Quick-Start Response Option in the TCP header. TCP's + Quick-Start Response option is defined as follows: + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 20] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Kind | Length=8 | Resv. | Rate | TTL Diff | + | | | |Request| | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | QS Nonce | R | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 5: The Quick-Start Response Option in the TCP Header. + + The first byte of the Quick-Start Response option contains the option + kind, identifying the TCP option. + + The second byte of the Quick-Start Response option contains the + option length in bytes. The length field MUST be set to 8 bytes. + + 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 Quick-Start Rate Request option. + + The fourth byte of the TCP option contains the TTL Diff. The TTL + Diff contains the difference between the IP TTL and QS TTL fields in + the received Quick-Start Request packet, as calculated in equations + (1) or (2) (depending on whether IPv4 or IPv6 is used). + + Bytes 5-8 of the TCP option contain the 30-bit QS Nonce and a two- + bit Reserved field. + + We note that, while there are limitations on the potential size of + the Quick-Start Response Option, a Quick-Start Response Option of + eight bytes should not be a problem. The TCP Options field can + contain up to 40 bytes. Other TCP options that might be used in a + SYN or SYN/ACK packet include Maximum Segment Size (four bytes), Time + Stamp (ten bytes), Window Scale (three bytes), and Selective + Acknowledgments Permitted (two bytes). + +4.3. TCP: Sending the Quick-Start Response + + An end host (say, host B) that receives an IP packet containing a + Quick-Start Request passes the Quick-Start Request, along with the + value in the IP TTL field, to the receiving TCP layer. + + If the TCP host is willing to permit the Quick-Start Request, then a + Quick-Start Response option is included in the TCP header of the + corresponding acknowledgement packet. The Rate Request 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 TCP + + + +Floyd, et al. Experimental [Page 21] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + receiver is only willing to allow a lower Rate Request. The TTL Diff + in the Quick-Start Response is set to the difference between the IP + TTL value and the QS TTL value as given in equation (1) or (2) + (depending on whether IPv4 or IPv6 is used). The QS Nonce in the + Response is set to the received value of the QS Nonce in the Quick- + Start Option. + + If an end host receives an IP packet with a Quick-Start Request with + a rate request of zero, then that host SHOULD NOT send a Quick-Start + Response. + + The Quick-Start Response MUST NOT be resent if it is lost in the + network. 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. + +4.4. TCP: Receiving and Using the Quick-Start Response Packet + + A TCP host (say, TCP host A) that sent a Quick-Start Request and + receives a Quick-Start Response in an acknowledgement first checks + that the Quick-Start Response is valid. The Quick-Start Response is + valid if it contains the correct value for the TTL Diff, and an equal + or lesser value for the Rate Request than that transmitted in the + Quick-Start Request. In addition, if the received Rate Request is K, + then the rightmost 2K bits of the QS Nonce must match those bits in + the QS Nonce sent in the Quick-Start Request. If these checks are + not successful, then the Quick-Start Request failed, and the TCP host + MUST use the default TCP congestion window that it would have used + without Quick-Start. If the rightmost 2K bits of the QS Nonce do not + match those bits in the QS Nonce sent in the Quick-Start Request, for + a received Rate Request of K, then the TCP host MUST NOT send + additional Quick-Start Requests during the life of the connection. + Whether or not the Quick-Start Request was successful, the host + receiving the Quick-Start Response MUST send a Report of Approved + Rate. Similarly, if the packet containing the Quick-Start Request is + acknowledged, but the acknowledgement does not include a Quick-Start + Response, then the sender MUST send a Report of Approved Rate. + + If the checks of the TTL Diff and the Rate Request are successful, + and the TCP host is going to use the Quick-Start Request, it MUST + start using it within one round-trip time of receiving the Quick- + Start Response, or within three seconds, whichever is smaller. To + use the Quick-Start Request, the host sets its Quick-Start congestion + window (in terms of MSS-sized segments), QS-cwnd, as follows: + + QS-cwnd = (R * T) / (MSS + H) (3) + + + + + +Floyd, et al. Experimental [Page 22] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + where R is the Rate Request in bytes per second, T is the measured + round-trip time in seconds, and H is the estimated TCP/IP header size + in bytes (e.g., 40 bytes). + + Derivation: the sender is allowed to transmit at R bytes per second + including packet headers, but only R*MSS/(MSS+H) bytes per second, or + equivalently R*T*MSS/(MSS+H) bytes per round-trip time, of + application data. + + The TCP host SHOULD set its congestion window cwnd to QS-cwnd only if + QS-cwnd is greater than cwnd; otherwise, QS-cwnd is ignored. If + QS-cwnd is used, the TCP host sets a flag that it is in Quick-Start + mode, and while in Quick-Start mode, the TCP sender MUST use rate- + based pacing to pace out Quick-Start packets at the approved rate. + If, during Quick-Start mode, the TCP sender receives ACKs for packets + sent before this Quick-Start mode was entered, these ACKs are + processed as usual, following the default congestion control + mechanisms. Quick-Start mode ends when the TCP host receives an ACK + for one of the Quick-Start packets. + + If the congestion window has not been fully used when the first ack + arrives ending the Quick-Start mode, then the congestion window is + decreased to the amount that has actually been used so far. This is + necessary because when the Quick-Start Response is received, the TCP + sender's round-trip-time estimate might be longer than for succeeding + round-trip times, e.g., because of delays at routers processing the + IP Quick-Start Option, or because of delays at the receiver in + responding to the Quick-Start Request packet. In this case, an + overly large round-trip-time estimate could have caused the TCP + sender to translate the approved Quick-Start sending rate in bytes + per second into a congestion window that is larger than needed, with + the TCP sender receiving an ACK for the first Quick- Start packet + before the entire congestion window has been used. Thus, when the + TCP sender receives the first ACK for a Quick-Start packet, the + sender MUST reduce the congestion window to the amount that has + actually been used. + + As an example, a TCP sender with an approved Quick-Start Request of R + KBps, B-byte packets including headers, and an RTT estimate of T + seconds, would translate the Rate Request of R KBps to a congestion + window of R*T/B packets. The TCP sender would send the Quick-Start + packets rate-paced at R KBps. However, if the actual current round- + trip time was T/2 seconds instead of T seconds, then the sender would + begin to receive acknowledgements for Quick-Start packets after T/2 + seconds. Following the paragraph above, the TCP sender would then + reduce its congestion window from R*T/B to approximately R*T/(B*2) + packets, the actual number of packets that were needed to fill the + pipe at a sending rate of R KBps. (Note: this is just an + + + +Floyd, et al. Experimental [Page 23] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + illustration; the congestion window is actually set to the amount of + data sent before the ACK arrives and not based on equations above.) + + After Quick-Start mode is exited and the congestion window adjusted + if necessary, the TCP sender returns to using the default congestion- + control mechanisms, processing further incoming ACK packets as + specified by those congestion control mechanisms. For example, if + the TCP sender was in slow-start prior to the Quick-Start Request, + and no packets were lost or marked since that time, then the sender + continues in slow-start after exiting Quick-Start mode, as allowed by + ssthresh. + + To add robustness, the TCP sender MUST use Limited Slow-Start + [RFC3742] along with Quick-Start. With Limited Slow-Start, the TCP + sender limits the number of packets by which the congestion window is + increased for one window of data during slow-start. + + When Quick-Start is used at the beginning of a connection, before any + packet marks or losses have been reported, the TCP host MAY use the + reported Rate Request to set the slow-start threshold to a desired + value, e.g., to some small multiple of the congestion window. A + possible future research topic is how the sender might modify the + slow-start threshold at the beginning of a connection to avoid + overshooting the path capacity. (The initial value of ssthresh is + allowed to be arbitrarily high, and some TCP implementations use the + size of the advertised window for ssthresh [RFC2581].) + +4.5. TCP: Controlling Acknowledgement Traffic on the Reverse Path + + When a Quick-Start Request is approved for a TCP sender, the + resulting Quick-Start data traffic can result in a sudden increase in + traffic for pure ACK packets on the reverse path. For example, for + the largest Quick-Start Request of 1.3 Gbps, given a TCP sender with + 1500-byte packets and a TCP receiver with delayed acknowledgements + acking every other packet, this could result in 17.3 Mbps of + acknowledgement traffic on the reverse path. + + One possibility, in cases with large Quick-Start Requests, would be + for TCP receivers to send Quick-Start Requests to request bandwidth + for the acknowledgement traffic on the reverse path. However, in our + view, a better approach would be for TCP receivers to simply control + the rate of sending acknowledgement traffic. The optimal future + solution would involve the explicit use of congestion control for TCP + acknowledgement traffic, as is done now for the acknowledgement + traffic in DCCP's CCID2 [RFC4341]. + + + + + + +Floyd, et al. Experimental [Page 24] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + In the absence of congestion control for acknowledgement traffic, the + TCP receiver could limit its sending rate for ACK packets sent in + response to Quick-Start data packets. The following information is + needed by the TCP receiver: + + * The RTT: TCP naturally measures the RTT of the path and therefore + should have a sample of the RTT. If the TCP receiver does not have + a measurement of the round-trip time, it can use the time between + the receipt of the Quick-Start Request and the Report of Approved + Rate. + + * The Approved Rate Request (R): When the TCP receiver receives the + Quick-Start Response packet, the receiver knows the value of the + approved Rate Request. + + * The MSS: TCP advertises the MSS during the initial three-way + handshake; therefore, the receiver should have an understanding of + the packet size the sender will be using. If the receiver does not + have such an understanding or wishes to confirm the negotiated MSS, + the size of the first data packet can be used. + + With this set of information, the TCP receiver can restrict its + sending rate for pure acknowledgment traffic to at most 100 pure ACK + packets per RTT by sending at most one ACK for every K data packets, + for the ACK Ratio K set to R*RTT/(100*8*MSS). The receiver would + acknowledge the first Quick-Start data packet, and every succeeding K + data packets. Thus, for a somewhat extreme case of R=1.3 Gbps, + RTT=0.2 seconds, and MSS=1500 bytes, K would be set to 216, and the + receiver would acknowledge every 216 data packets. From [RFC2581], + the ACK Ratio K should have a minimum value of two. When the ACK + Ratio is greater than two, and the TCP sender receives + acknowledgements each acknowledging more than two data packets, the + TCP sender may want to use rate-based pacing to control the + burstiness of its outgoing data traffic. + + In the absence of explicit congestion control mechanisms, the TCP end + nodes cannot determine the packet drop rate for pure acknowledgement + traffic. This is true with or without Quick-Start. However, the TCP + receiver could limit its increase in the sending rate for pure ACK + packets by at most doubling the sending rate for pure ACK packets + from one round-trip time to the next. The TCP receiver would do this + by halving the ACK Ratio each round-trip time. + + Note that the above is one particular mechanism that could be used to + control the ACK stream. Future work that investigates this scheme + and others in detail is encouraged. + + + + + +Floyd, et al. Experimental [Page 25] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +4.6. TCP: Responding to a Loss of a Quick-Start Packet + + For TCP, we have defined a "Quick-Start packet" as one of the packets + sent in the window immediately following a successful Quick-Start + Request. After detecting the loss or ECN-marking of a Quick-Start + packet, TCP MUST revert to the default congestion control procedures + that would have been used if the Quick-Start Request had not been + approved. For example, if Quick-Start is used for setting the + initial window, and a packet from the initial window is lost or + marked, then the TCP sender MUST then slow-start with the default + initial window that would have been used if Quick-Start had not been + used. In addition to reverting to the default congestion control + mechanisms, the sender MUST take into account that the Quick-Start + congestion window was too large. Thus, the sender SHOULD decrease + ssthresh to, at most, half the number of Quick-Start packets that + were successfully transmitted. Appendix B.5 discusses possible + alternatives in responding to the loss of a Quick-Start packet. + + If a Quick-Start packet is lost or ECN-marked, then the sender SHOULD + NOT make future Quick-Start Requests for this connection. + + We note that ECN [RFC3168] MAY be used with Quick-Start. As is + always the case with ECN, the sender's congestion control response to + an ECN-marked Quick-Start packet is the same as the response to a + dropped Quick-Start packet, thus reverting to slow start in the case + of Quick-Start packets marked as experiencing congestion. + +4.7. TCP: A Quick-Start Request for a Larger Initial Window + + Some of the issues of using Quick-Start are related to the specific + scenario in which Quick-Start is used. This section discusses the + following issues that arise when Quick-Start is used by TCP to + request a larger initial window: (1) interactions with Path MTU + Discovery (PMTUD); and (2) Quick-Start Request packets that are + discarded by middleboxes. + +4.7.1. Interactions with Path MTU Discovery + + One issue when Quick-Start is used to request a large initial window + concerns the interactions between the large initial window and Path + MTU Discovery. Some of the issues are discussed in RFC 3390: + + "When larger initial windows are implemented along with Path MTU + Discovery [RFC1191], alternatives are to set the `Don't Fragment' + (DF) bit in all segments in the initial window, or to set the `Don't + Fragment' (DF) bit in one of the segments. It is an open question as + to which of these two alternatives is best." + + + + +Floyd, et al. Experimental [Page 26] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + If the sender knows the Path MTU when the initial window is sent + (e.g., from a PMTUD cache or from some other IETF-approved method), + then the sender SHOULD use that MTU for segments in the initial + window. Unfortunately, the sender doesn't necessarily know the Path + MTU when it sends packets in the initial window. In this case, the + sender should be conservative in the packet size used. Sending a + large number of overly large packets with the DF bit set is not + desirable, but sending a large number of packets that are fragmented + in the network can be equally undesirable. + + If the sender doesn't know the Path MTU when the initial window is + sent, the sender SHOULD send one large packet in the initial window + with the DF bit set, and send the remaining packets in the initial + window with a smaller MTU of 576 bytes (or 1280 bytes with IPv6). + + A second possibility would be for the sender to delay sending the + Quick-Start Request for one round-trip time by sending the Quick- + Start Request with the first window of data, while also doing Path + MTU Discovery. + + The sender may be using an iterative approach such as Packetization + Layer Path MTU Discovery (PLPMTUD) [MH06] for Path MTU Discovery, + where the sender tests successively larger MTUs. If a probe is + successfully delivered, then the MTU can be raised to reflect the + value used in that probe. We would note that PLPMTUD does not allow + the sender to determine the Path MTU before sending the initial + window of data. + +4.7.2. Quick-Start Request Packets that are Discarded by Routers or + Middleboxes + + It is always possible for a TCP SYN packet carrying a Quick-Start + request to be dropped in the network due to congestion, or to be + blocked due to interactions with routers or middleboxes, where a + middlebox is defined as any intermediary box performing functions + apart from normal, standard functions of an IP router on the data + path between a source host and destination host [RFC3234]. + Measurement studies of interactions between transport protocols and + middleboxes [MAF04] show that for 70% of the Web servers + investigated, no connection is established if the TCP SYN packet + contains an unknown IP option (and for 43% of the Web servers, no + connection is established if the TCP SYN packet contains an IP + TimeStamp Option). In both cases, this is presumably due to routers + or middleboxes along that path. + + If the TCP sender doesn't receive a response to the SYN or SYN/ACK + packet containing the Quick-Start Request, then the TCP sender SHOULD + resend the SYN or SYN/ACK packet without the Quick-Start Request. + + + +Floyd, et al. Experimental [Page 27] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Similarly, if the TCP sender receives a TCP reset in response to the + SYN or SYN/ACK packet containing the Quick-Start Request, then the + TCP sender SHOULD resend the SYN or SYN/ACK packet without the + Quick-Start Request [RFC3360]. + + RFCs 1122 and 2988 specify that the sender should set the initial RTO + (retransmission timeout) to three seconds, though many TCP + implementations set the initial RTO to one second. For a TCP SYN + packet sent with a Quick-Start request, the TCP sender SHOULD use an + initial RTO of three seconds. + + We note that if the TCP SYN packet is using the IP Quick-Start Option + for a Quick-Start Request, and it is also using bits in the TCP + header to negotiate ECN-capability with the TCP host at the other + end, then the drop of a TCP SYN packet could be due to congestion, a + router or middlebox dropping the packet because of the IP Option, or + a router or middlebox dropping the packet because of the information + in the TCP header negotiating ECN. In this case, the sender could + resend the dropped packet without either the Quick-Start or the ECN + requests. Alternately, the sender could resend the dropped packet + with only the ECN request in the TCP header, resending the TCP SYN + packet without either the Quick-Start or the ECN requests if the + second TCP SYN packet is dropped. The second choice seems + reasonable, given that a TCP SYN packet today is more likely to be + blocked due to policies that discard packets with IP Options than due + to policies that discard packets with ECN requests in the TCP header + [MAF04]. + +4.8. TCP: A Quick-Start Request in the Middle of a Connection + + This section discusses the following issues that arise when Quick- + Start is used by TCP to request a larger window in the middle of a + connection, such as after an idle period: (1) determining the rate to + request; (2) when to make a request; and (3) the response if Quick- + Start packets are dropped. + + (1) Determining the rate to request: + For a connection that has not yet had a congestion event (that + is, a marked or dropped packet), the TCP sender is not restricted + in the rate that it requests. As an example, a server might wait + and send a Quick-Start Request after a short interaction with the + client. + + To use a Quick-Start Request in a connection that has already + experienced a congestion event, and that has not had a recent + mobility event, the TCP sender can determine the largest + congestion window that the TCP connection achieved since the last + packet drop and translate this to a sending rate to get the + + + +Floyd, et al. Experimental [Page 28] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + maximum allowed request rate. If the request is granted, then + the sender essentially restarts with its old congestion window + from before it was reduced, for example, during an idle period. + + A Quick-Start Request sent in the middle of a TCP connection + SHOULD be sent on a data packet. + + (2) When to make a request: + A TCP connection MAY make a Quick-Start Request before the + connection has experienced a congestion event, or after an idle + period of at least one RTO. + + (3) Response if Quick-Start packets are dropped: + If Quick-Start packets are dropped in the middle of connection, + then the sender MUST revert to half the Quick-Start window, or to + the congestion window that the sender would have used if the + Quick-Start request had not been approved, whichever is smaller. + +4.9. An Example Quick-Start Scenario with TCP + + The following is an example scenario of when both hosts request + Quick-Start for setting their initial windows. This is similar to + Figures 1 and 2 in Section 2.1, except that it illustrates a TCP + connection with both TCP hosts sending Quick-Start Requests. + + * The TCP SYN packet from Host A contains a Quick-Start Request in + the IP header. + + * Routers along the forward path modify the Quick-Start Request as + appropriate. + + * Host B receives the Quick-Start Request in the SYN packet, and + calculates the TTL Diff. If Host B approves the Quick-Start + Request, then Host B sends a Quick-Start Response in the TCP header + of the SYN/ACK packet. Host B also sends a Quick-Start Request in + the IP header of the SYN/ACK packet. + + * Routers along the reverse path modify the Quick-Start Request as + appropriate. + + * Host A receives the Quick-Start Response in the SYN/ACK packet, and + checks the TTL Diff, Rate Request, and QS Nonce for validity. If + they are valid, then Host A sets its initial congestion window + appropriately, and sets up rate-based pacing to be used with the + initial window. If the Quick-Start Response is not valid, then + Host A uses TCP's default initial window. In either case, Host A + sends a Report of Approved Rate. + + + + +Floyd, et al. Experimental [Page 29] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Host A also calculates the TTL Diff for the Quick-Start Request in + the incoming SYN/ACK packet, and sends a Quick-Start Response in + the TCP header of the ACK packet. + + * Host B receives the Quick-Start Response in an ACK packet, and + checks the TTL Diff, Rate Request, and QS Nonce for validity. If + the Quick-Start Response is valid, then Host B sets its initial + congestion window appropriately, and sets up rate-based pacing to + be used with its initial window. If the Quick-Start Response is + not valid, then Host B uses TCP's default initial window. In + either case, Host B sends a Report of Approved Rate. + +5. Quick-Start and IPsec AH + + This section shows that Quick-Start is compatible with IPsec + Authentication Header (AH). AH uses an Integrity Check Value (ICV) + in the IPsec Authentication Header to verify both message + authentication and integrity [RFC4302]. Changes to the Quick-Start + Option in the IP header do not affect this AH ICV. The tunnel + considerations in Section 6 below apply to all IPsec tunnels, + regardless of what IPsec headers or processing are used in + conjunction with the tunnel. + + Because the contents of the Quick-Start Option can change along the + path, it is important that these changes not affect the IPsec + Authentication Header Integrity Check Value (AH ICV). For IPv4, RFC + 4302 requires that unrecognized IPv4 options be zeroed for AH ICV + computation purposes, so Quick-Start IP Option data changing en route + does not cause problems with existing IPsec AH implementations for + IPv4. If the Quick-Start Option is recognized, it MUST be treated as + a mutable IPv4 option, and hence be completely zeroed for AH ICV + calculation purposes. IPv6 option numbers explicitly indicate + whether the option is mutable; the third-highest order bit in the + IANA-allocated option type has the value 1 to indicate that the + Quick-Start Option data can change en route. RFC 4302 requires that + the option data of any such option be zeroed for AH ICV computation + purposes. Therefore, changes to the Quick-Start Option in the IP + header do not affect the calculation of the AH ICV. + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 30] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +6. Quick-Start in IP Tunnels and MPLS + + This section considers interactions between Quick-Start and IP + tunnels, including IPsec ([RFC4301]), IP in IP [RFC2003], GRE + [RFC2784], and others. This section also considers interactions + between Quick-Start and MPLS [RFC3031]. + + In the discussion, we use TTL Diff, defined earlier as the difference + between the IP TTL and the Quick-Start TTL, mod 256. Recall that the + sender considers the Quick-Start Request approved only if the value + of TTL Diff for the packet entering the network is the same as the + value of TTL Diff for the packet exiting the network. + + Simple tunnels: IP tunnel modes are generally based on adding a new + "outer" IP header that encapsulates the original or "inner" IP header + and its associated packet. In many cases, the new "outer" IP header + may be added and removed at intermediate points along a path, + enabling the network to establish a tunnel without requiring endpoint + participation. We denote tunnels that specify that the outer header + be discarded at tunnel egress as "simple tunnels", and we denote + tunnels where the egress saves and uses information from the outer + header before discarding it as "non-simple tunnels". An example of a + "non-simple tunnel" would be a tunnel configured to support ECN, + where the egress router might copy the ECN codepoint in the outer + header to the inner header before discarding the outer header + [RFC3168]. + + __ Tunnels Compatible with Quick-Start + / + Simple Tunnels __/ + \ + \__ Tunnels Not Compatible with Quick-Start + (False Positives!) + + + __ Tunnels Supporting Quick-Start + / + / + Non-Simple Tunnels __/_____ Tunnels Compatible with Quick-Start, + \ but Not Supporting Quick-Start + \ + \__ Tunnels Not Compatible with Quick-Start? + + + Figure 6: Categories of Tunnels. + + + + + + +Floyd, et al. Experimental [Page 31] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Tunnels that are compatible with Quick-Start: We say that an IP + tunnel `is not compatible with Quick-Start' if the use of a Quick- + Start Request over such a tunnel allows false positives, where the + TCP sender incorrectly believes that the Quick-Start Request was + approved by all routers along the path. If the use of Quick-Start + over the tunnel does not cause false positives, we say that the IP + tunnel `is compatible with Quick-Start'. + + If the IP TTL of the inner header is decremented during forwarding + before tunnel encapsulation takes place, then the simple tunnel is + compatible with Quick-Start, with Quick-Start Requests being + rejected. Section 6.1 describes in more detail the ways that a + simple tunnel can be compatible with Quick-Start. + + There are some simple tunnels that are not compatible with Quick- + Start, allowing `false positives' where the TCP sender incorrectly + believes that the Quick-Start Request was approved by all routers + along the path. This is discussed in Section 6.2 below. + + One of our tasks in the future will be to investigate the occurrence + of tunnels that are not compatible with Quick-Start, and to track the + extent to which such tunnels are modified over time. The evaluation + of the problem of false positives from tunnels that are not + compatible with Quick-Start will affect the progression of Quick- + Start from Experimental to Proposed Standard, and will affect the + degree of deployment of Quick-Start while in Experimental mode. + + Tunnels that support Quick-Start: We say that an IP tunnel `supports + Quick-Start' if it allows routers along the tunnel path to process + the Quick-Start Request and give feedback, resulting in the + appropriate possible acceptance of the Quick-Start Request. Some + tunnels that are compatible with Quick-Start support Quick-Start, + while others do not. We note that a simple tunnel is not able to + support Quick-Start. + + From a security point of view, the use of Quick-Start in the outer + header of an IP tunnel might raise security concerns because an + adversary could tamper with the Quick-Start information that + propagates beyond the tunnel endpoint, or because the Quick-Start + Option exposes information to network scanners. Our approach is to + make supporting Quick-Start an option for IP tunnels. That is, in + environments or tunneling protocols where the risks of using Quick- + Start are judged to outweigh its benefits, the tunnel can simply + delete the Quick-Start Option or zero the Quick-Start rate request + and QS TTL fields before encapsulation. The result is that there are + two viable options for IP tunnels to be compatible with Quick-Start. + The first option is the simple tunnel described above and in Section + 6.1, where the tunnel is compatible with Quick-Start but does not + + + +Floyd, et al. Experimental [Page 32] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + support Quick-Start, where all Quick-Start Requests along the path + will be rejected. The second approach is a Quick-Start-capable mode, + described in Section 6.3, where the tunnel actively supports Quick- + Start. + +6.1. Simple Tunnels that Are Compatible with Quick-Start + + This section describes the ways that a simple tunnel can be + compatible with Quick-Start but not support Quick-Start, resulting in + the rejection of all Quick-Start Requests that traverse the tunnel. + + If the tunnel ingress for the simple tunnel is at a router, the IP + TTL of the inner header is generally decremented during forwarding + before tunnel encapsulation takes place. In this case, TTL Diff will + be changed, correctly causing the Quick-Start Request to be rejected. + For a simple tunnel, it is preferable if the Quick-Start Request is + not copied to the outer header, saving the routers within the tunnel + from unnecessarily processing the Quick-Start Request. However, the + Quick-Start Request will be rejected correctly in this case whether + or not the Quick-Start Request is copied to the outer header. + +6.1.1. Simple Tunnels that Are Aware of Quick-Start + + If a tunnel ingress is aware of Quick-Start, but does not want to + support Quick-Start, then the tunnel ingress MUST either zero the + Quick-Start rate request, QS TTL, and QS Nonce fields, or remove the + Quick-Start Option from the inner header before encapsulation. + Section 6.3 describes the procedures for a tunnel that does want to + support Quick-Start. + + Deleting the Quick-Start Option or zeroing the Quick-Start rate + request *after decapsulation* also serves to prevent the propagation + of Quick-Start information, and is compatible with Quick-Start. If + the outer header does not contain a Quick-Start Request, a Quick- + Start-aware tunnel egress MUST reject the inner Quick-Start Request + by zeroing the Rate Request field in the inner header, or by deleting + the Quick-Start Option. + + If the tunnel ingress is at a sending host or router where the IP TTL + is not decremented prior to encapsulation, and neither tunnel + endpoint is aware of Quick-Start, then this allows false positives, + described in the section below. + + + + + + + + + +Floyd, et al. Experimental [Page 33] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +6.2. Simple Tunnels that Are Not Compatible with Quick-Start + + Sometimes a tunnel implementation that does not support Quick-Start + is independent of the TCP sender or a router implementation that + supports Quick-Start. In these cases, it is possible that a Quick- + Start Request gets erroneously approved without the routers in the + tunnel having individually approved the request, causing a false + positive. + + If a tunnel ingress is a separate component from the TCP sender or IP + forwarding, it is possible that a packet with a Quick-Start option is + encapsulated without the IP TTL being decremented first, or with both + IP TTL and QS TTL being decremented before the tunnel encapsulation + takes place. If the tunnel ingress does not know about Quick-Start, + a valid Quick-Start Request with unchanged TTL Diff traverses in the + inner header, while the outer header most likely does not carry a + Quick-Start Request. If the tunnel egress also does not support + Quick-Start, it remains possible that the Quick-Start Request would + be falsely approved, because the packet is decapsulated using the + Quick-Start Request from the inner header, and the value of TTL Diff + echoed to the sender remains unchanged. For example, such a scenario + can occur with a Bump-In-The-Stack (BITS), an IPsec encryption + implementation where the data encryption occurs between the network + drivers and the TCP/IP protocol stack [RFC4301]. + + As one example, if a remote access VPN client uses a BITS structure, + then Quick-Start obstacles between the client and the VPN gateway + won't be seen. This is a particular problem because the path between + the client and the VPN gateway is likely to contain the most + congested part of the path. Because most VPN clients are reported to + use BITS [H05], we will explore this in more detail. + + A Bump-In-The-Wire (BITW) is an IPsec encryption implementation where + the encryption occurs on an outboard processor, offloading the + encryption processing overhead from the host or router [RFC4301]. + The BITW device is usually IP addressable, which means that the IP + TTL is decremented before the packet is passed to the BITW. If the + QS TTL is not decremented, then the value of TTL Diff is changed, and + the Quick-Start Request will be denied. However, if the BITW + supports a host and does not have its own IP address, then the IP TTL + is not decremented before the packet is passed from the host to the + BITW, and a false positive could occur. + + Other tunnels that need to be looked at are IP tunnels over non- + network protocols, such as IP over TCP and IP over UDP [RFC3948], and + tunnels using the Layer Two Tunneling Protocol [RFC2661]. + + + + + +Floyd, et al. Experimental [Page 34] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Section 9.2 discusses the related issue of non-IP queues, such as + layer-two Ethernet or ATM (Asynchronous Transfer Mode) networks, as + another instance of possible bottlenecks that do not participate in + the Quick-Start feedback. + +6.3. Tunnels That Support Quick-Start + + This section discusses tunnels configured to support Quick-Start. + + If the tunnel ingress node chooses to locally approve the Quick- + Start Request, then the ingress node MUST decrement the Quick-Start + TTL at the same time it decrements the IP TTL, and MUST copy IP TTL + and the Quick-Start Option from the inner IP header to the outer + header. During encapsulation, the tunnel ingress MUST zero the + Quick-Start rate request field in the inner header to ensure that the + Quick-Start Request will be rejected if the tunnel egress does not + support Quick-Start. + + If the tunnel ingress node does not choose to locally approve the + Quick-Start Request, then it MUST either delete the Quick-Start + option from the inner header before encapsulation, or zero the QS TTL + and the Rate Request fields before encapsulation. + + Upon decapsulation, if the outer header contains a Quick-Start + option, the tunnel egress MUST copy the IP TTL and the Quick-Start + option from the outer IP header to the inner header. + + IPsec uses the IKE (Internet Key Exchange) Protocol for security + associations. We do not consider the interactions between Quick- + Start and IPsec with IKEv1 [RFC2409] in this document. Now that the + RFC for IKEv2 [RFC4306] is published, we plan to specify a + modification of IPsec to allow the support of Quick-Start to be + negotiated; this modification will specify the negotiation between + tunnel endpoints to allow or forbid support for Quick-Start within + the tunnel. This was done for ECN for IPsec tunnels, with IKEv1 + [RFC3168, Section 9.2]. This negotiation of Quick-Start capability + in an IPsec tunnel will be specified in a separate IPsec document. + This document will also include a discussion of the potential effects + of an adversary's modifications of the Quick-Start field (as in + Sections 18 and 19 of RFC 3168), and of the security considerations + of exposing the Quick-Start rate request to network scanners. + +6.4. Quick-Start and MPLS + + The behavior of Quick-Start with MPLS is similar to the behavior of + Quick-Start with IP Tunnels. For those MPLS paths where the IP TTL + is decremented as part of traversing the MPLS path, these paths are + compatible with Quick-Start, but do not support Quick-Start; Quick- + + + +Floyd, et al. Experimental [Page 35] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Start Requests that are traversing these paths will be correctly + understood by the transport sender as having been denied. Any MPLS + paths where the IP TTL is not decremented as part of traversing the + MPLS path would be not compatible with Quick-Start; such paths would + result in false positives, where the TCP sender incorrectly believes + that the Quick-Start Request was approved by all routers along the + path. + + For cases where the ingress node to the MPLS path is aware of Quick- + Start, this node should either zero the Quick-Start rate request, QS + TTL, and QS Nonce fields, or remove the Quick-Start Option from the + IP header. + +7. The Quick-Start Mechanism in Other Transport Protocols + + The section earlier specified the use of Quick-Start in TCP. In this + section, we generalize this to give guidelines for the use of Quick- + Start with other transport protocols. We also discuss briefly how + Quick-Start could be specified for other transport protocols. + + The general guidelines for Quick-Start in transport protocols are as + follows: + + * Quick-Start is only specified for unicast transport protocols with + appropriate congestion control mechanisms. Note: Quick-Start is + not a replacement for standard congestion control techniques, but + meant to augment their operation. + + * A transport-level mechanism is needed for the Quick-Start Response + from the receiver to the sender. This response contains the Rate + Request, TTL Diff, and QS Nonce. + + * The sender checks the validity of the Quick-Start Response. + + * The sender has an estimate of the round-trip time, and translates + the Quick-Start Response into an allowed window or allowed sending + rate. The sender sends a Report of the Approved Rate. The sender + starts sending Quick-Start packets, rate-paced out at the approved + sending rate. + + * After the sender receives the first acknowledgement packet for a + Quick-Start packet, no more Quick-Start packets are sent. The + sender adjusts its current congestion window or sending rate to be + consistent with the actual amount of data that was transmitted in + that round-trip time. + + + + + + +Floyd, et al. Experimental [Page 36] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + * When the last Quick-Start packet is acknowledged, the sender + continues using the standard congestion control mechanisms of that + protocol. + + * If one of the Quick-Start packets is lost, then the sender reverts + to the standard congestion control method of that protocol that + would have been used if the Quick-Start Request had not been + approved. In addition, the sender takes into account the + information that the Quick-Start congestion window was too large + (e.g., by decreasing ssthresh in TCP). + +8. Using Quick-Start + +8.1. Determining the Rate to Request + + As discussed in [SAF06], the data sender does not necessarily have + information about the size of the data transfer at connection + initiation; for example, in request-response protocols such as HTTP, + the server doesn't know the size or name of the requested object + during connection initiation. [SAF06] explores some of the + performance implications of overly large Quick-Start Requests, and + discusses heuristics that end-nodes could use to size their requests + appropriately. For example, the sender might have information about + the bandwidth of the last-mile hop, the size of the local socket + buffer, or of the TCP receive window, and could use this information + in determining the rate to request. Web servers that mostly have + small objects to transfer might decide not to use Quick-Start at all, + since Quick-Start would be of little benefit to them. + + Quick-Start will be more effective if Quick-Start Requests are not + larger than necessary; every Quick-Start Request that is approved but + not used (or not fully used) takes away from the bandwidth pool + available for granting successive Quick-Start Requests. + +8.2. Deciding the Permitted Rate Request at a Router + + In this section, we briefly outline how a router might decide whether + or not to approve a Quick-Start Request. The router should ask the + following questions: + + * Has the router's output link been underutilized for some time + (e.g., several seconds)? + + * Would the output link remain underutilized if the arrival rate were + to increase by the aggregate rate requests that the router has + approved over the last fraction of a second? + + + + + +Floyd, et al. Experimental [Page 37] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + In order to answer the last question, the router must have some + knowledge of the available bandwidth on the output link and of the + Quick-Start bandwidth that could arrive due to recently approved + Quick-Start Requests. In this way, if an underutilized router + experiences a flood of Quick-Start Requests, the router can begin to + deny Quick-Start Requests while the output link is still + underutilized. + + A simple way for the router to keep track of the potential bandwidth + from recently approved requests is to maintain two counters: one for + the total aggregate Rate Requests that have been approved in the + current time interval [T1, T2], and one for the total aggregate Rate + Requests approved over a previous time interval [T0, T1]. However, + this document doesn't specify router algorithms for approving Quick- + Start Requests, or make requirements for the appropriate time + intervals for remembering the aggregate approved Quick-Start + bandwidth. A possible router algorithm is given in Appendix E, and + more discussion of these issues is available in [SAF06]. + + * If the router's output link has been underutilized and the + aggregate of the Quick-Start Request Rate options granted is low + enough to prevent a near-term bandwidth shortage, then the router + could approve the Quick-Start Request. + + Section 10.2 discusses some of the implementation issues in + processing Quick-Start Requests at routers. [SAF06] discusses the + range of possible Quick-Start algorithms at the router for deciding + whether to approve a Quick-Start Request. In order to explore the + limits of the possible functionality at routers, [SAF06] also + discusses Extreme Quick-Start mechanisms at routers, where the router + would keep per-flow state concerning approved Quick-Start requests. + +9. Evaluation of Quick-Start + +9.1. Benefits of Quick-Start + + The main benefit of Quick-Start is the faster start-up for the + transport connection itself. For a small TCP transfer of one to five + packets, Quick-Start is probably of very little benefit; at best, it + might shorten the connection lifetime from three to two round-trip + times (including the round-trip time for connection establishment). + Similarly, for a very large transfer, where the slow-start phase + would have been only a small fraction of the connection lifetime, + Quick-Start would be of limited benefit. Quick-Start would not + significantly shorten the connection lifetime, but it might eliminate + or at least shorten the start-up phase. However, for moderate-sized + connections in a well-provisioned environment, Quick-Start could + possibly allow the entire transfer of M packets to be completed in + + + +Floyd, et al. Experimental [Page 38] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + one round-trip time (after the initial round-trip time for the SYN + exchange), instead of the log_2(M)-2 round-trip times that it would + normally take for the data transfer, in an uncongested environments + (assuming an initial window of four packets). + +9.2. Costs of Quick-Start + + This section discusses the costs of Quick-Start for the connection + and for the routers along the path. + + The cost of having a Quick-Start Request packet dropped: + Measurement studies cited earlier [MAF04] suggest that on a wide + range of paths in the Internet, TCP SYN packets containing unknown IP + options will be dropped. Thus, for the sender one risk in using + Quick-Start is that the packet carrying the Quick-Start Request could + be dropped in the network. It is particularly costly to the sender + when a TCP SYN packet is dropped, because in this case the sender + should wait for an RTO of three seconds before re-sending the SYN + packet, as specified in Section 4.7.2. + + The cost of having a Quick-Start data packet dropped: + Another risk for the sender in using Quick-Start lies in the + possibility of suffering from congestion-related losses of the + Quick-Start data packets. This should be an unlikely situation + because routers are expected to approve Quick-Start Requests only + when they are significantly underutilized. However, a transient + increase in cross-traffic in one of the routers, a sudden decrease in + available bandwidth on one of the links, or congestion at a non-IP + queue could result in packet losses even when the Quick-Start Request + was approved by all of the routers along the path. If a Quick-Start + packet is dropped, then the sender reverts to the congestion control + mechanisms it would have used if the Quick-Start Request had not been + approved, so the performance cost to the connection of having a + Quick-Start packet dropped is small, compared to the performance + without Quick-Start. (On the other hand, the performance difference + between Quick-Start with a Quick-Start packet dropped and Quick- + Start with no Quick-Start packet dropped can be considerable.) + + Added complexity at routers: + The main cost of Quick-Start at routers concerns the costs of added + complexity. The added complexity at the end-points is moderate, and + might easily be outweighed by the benefit of Quick-Start to the end + hosts. The added complexity at the routers is also somewhat + moderate; it involves estimating the unused bandwidth on the output + link over the last several seconds, processing the Quick-Start + request, and keeping a counter of the aggregate Quick-Start rate + approved over the last fraction of a second. However, this added + complexity at routers adds to the development cycle, and could + + + +Floyd, et al. Experimental [Page 39] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + prevent the addition of other competing functionality to routers. + Thus, careful thought would have to be given to the addition of + Quick-Start to IP. + + The slow path in routers: + Another drawback of Quick-Start is that packets containing the + Quick-Start Request message might not take the fast path in routers, + particularly in the beginning of Quick-Start's deployment in the + Internet. This would mean some extra delay for the end hosts, and + extra processing burden for the routers. However, as discussed in + Sections 4.1 and 4.7, not all packets would carry the Quick-Start + option. In addition, for the underutilized links where Quick-Start + Requests could actually be approved, or in typical environments where + most of the packets belong to large flows, the burden of the Quick- + Start Option on routers would be considerably reduced. Nevertheless, + it is still conceivable, in the worst case, that many packets would + carry Quick-Start Requests; this could slow down the processing of + Quick-Start packets in routers considerably. As discussed in Section + 9.6, routers can easily protect against this by enforcing a limit on + the rate at which Quick-Start Requests will be considered. [RW03] + and [RW04] contain measurements of the impact of IP Option Processing + on packet round-trip times. + + Multiple paths: + + One limitation of Quick-Start is that it presumes that the data + packets of a connection will follow the same path as the Quick-Start + request packet. If this is not the case, then the connection could + be sending the Quick-Start packets, at the approved rate, along a + path that was already congested, or that became congested as a result + of this connection. Thus, Quick-Start could give poor performance + when there is a routing change immediately after the Quick-Start + Request is approved, and the Quick-Start data packets follow a + different path from that of the original Quick-Start Request. This + is, however, similar to what would happen for a connection with + sufficient data, if the connection's path was changed in the middle + of the connection, which had already established the allowed initial + rate. + + As specified in Section 3.3, a router that uses multipath routing for + packets within a single connection must not approve a Quick-Start + Request. Quick-Start would not perform robustly in an environment + with multipath routing, where different packets in a connection + routinely follow different paths. In such an environment, the + Quick-Start Request and some fraction of the packets in the + connection might take an underutilized path, while the rest of the + packets take an alternate, congested path. + + + + +Floyd, et al. Experimental [Page 40] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Non-IP queues: + A problem of any mechanism for feedback from routers at the IP level + is that there can be queues and bottlenecks in the end-to-end path + that are not in IP-level routers. As an example, these include + queues in layer-two Ethernet or ATM networks. One possibility would + be that an IP-level router adjacent to such a non-IP queue or + bottleneck would be configured to reject Quick-Start Requests if that + was appropriate. One would hope that, in general, IP networks are + configured so that non-IP queues between IP routers do not end up + being the congested bottlenecks. + +9.3. Quick-Start with QoS-Enabled Traffic + + The discussion in this document has largely been of Quick-Start with + default, best-effort traffic. However, Quick-Start could also be + used by traffic using some form of differentiated services, and + routers could take the traffic class into account when deciding + whether or not to grant the Quick-Start Request. We don't address + this context further in this paper, since it is orthogonal to the + specification of Quick-Start. + + Routers are also free to take into account their own priority + classifications in processing Quick-Start Requests. + +9.4. Protection against Misbehaving Nodes + + In this section, we discuss the protection against senders, + receivers, or colluding routers or middleboxes lying about the + Quick-Start Request. + +9.4.1. Misbehaving Senders + + A transport sender could try to transmit data at a higher rate than + that approved in the Quick-Start Request. The network could use a + traffic policer to protect against misbehaving senders that exceed + the approved rate, for example, by dropping packets that exceed the + allowed transmission rate. The required Report of Approved Rate + allows traffic policers to check that the Report of Approved Rate + does not exceed the Rate Request actually approved at that point in + the network in the previous Quick-Start Request from that connection. + The required Approved Rate report also allows traffic policers to + check that the sender's sending rate does not exceed the rate in the + Report of Approved Rate. + + If a router or receiver receives an Approved Rate report that is + larger than the Rate Request in the Quick-Start Request approved for + that sender for that connection in the previous round-trip time, then + the router or receiver could deny future Quick-Start Requests from + + + +Floyd, et al. Experimental [Page 41] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + that sender, e.g., by deleting the Quick-Start Request from future + packets from that sender. We note that routers are not required to + use Approved Rate reports to check if senders are cheating; this is + at the discretion of the router. + + If a router sees a Report of Approved Rate, and did not see an + earlier Quick-Start Request, then either the sender could be + cheating, or the connection's path could have changed since the + Quick-Start Request was sent. In either case, the router could + decide to deny future Quick-Start Requests for this connection. In + particular, it is reasonable for the router to deny a Quick-Start + request if either the sender is cheating, or if the connection path + suffers from path changes or multipathing. + + If a router approved a Quick-Start Request, but does not see a + subsequent Approved Rate report, then there are several + possibilities: (1) the request was denied and/or dropped downstream, + and the sender did not send a Report of Approved Rate; (2) the + request was approved, but the sender did not send a Report of + Approved Rate; (3) the Approved Rate report was dropped in the + network; or (4) the Approved Rate report took a different path from + the Quick-Start Request. In any of these cases, the router would be + justified in denying future Quick-Start Requests for this connection. + + In any of the cases mentioned in the three paragraphs above (i.e., an + Approved Rate report that is larger than the Rate Request in the + earlier Quick-Start Request, a Report of Approved Rate with no + preceding Rate Request, or a Rate Request with no Report of Approved + Rate), a traffic policer may assume that Quick-Start is not being + used appropriately, or is being used in an unsuitable environment + (e.g., with multiple paths), and take some corresponding action. + + What are the incentives for a sender to cheat by over-sending after a + Quick-Start Request? Assuming that the sender's interests are + measured by a performance metric such as the completion time for its + connections, sometimes it might be in the sender's interests to + cheat, and sometimes it might not; in some cases, it could be + difficult for the sender to judge whether it would be in its + interests to cheat. The incentives for a sender to cheat by over- + sending after a Quick-Start Request are not that different from the + incentives for a sender to cheat by over-sending even in the absence + of Quick-Start, with one difference: the use of Quick-Start could + help a sender evade policing actions from policers in the network. + The Report of Approved Rate is designed to address this and to make + it harder for senders to use Quick-Start to `cover' their cheating. + + + + + + +Floyd, et al. Experimental [Page 42] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +9.4.2. Receivers Lying about Whether the Request was Approved + + One form of misbehavior would be for the receiver to lie to the + sender about whether the Quick-Start Request was approved, by falsely + reporting the TTL Diff and QS Nonce. If a router that understands + the Quick-Start Request denies the request by deleting the request or + by zeroing the QS TTL and QS Nonce, then the receiver can "lie" about + whether the request was approved only by successfully guessing the + value of the TTL Diff and QS Nonce to report. The chance of the + receiver successfully guessing the correct value for the TTL Diff is + 1/256, and the chance of the receiver successfully guessing the QS + nonce for a reported rate request of K is 1/(2K). + + However, if the Quick-Start Request is denied only by a non-Quick- + Start-capable router, or by a router that is unable to zero the QS + TTL and QS Nonce fields, then the receiver could lie about whether + the Quick-Start Requests were approved by modifying the QS TTL in + successive requests received from the same host. In particular, if + the sender does not act on a Quick-Start Request, then the receiver + could decrement the QS TTL by one in the next request received from + that host before calculating the TTL Diff, and decrement the QS TTL + by two in the following received request, until the sender acts on + one of the Quick-Start Requests. + + Unfortunately, if a router doesn't understand Quick-Start, then it is + not possible for that router to take an active step such as zeroing + the QS TTL and QS Nonce to deny a request. As a result, the QS TTL + is not a fail-safe mechanism for preventing lying by receivers in the + case of non-Quick-Start-capable routers. + + What would be the incentives for a receiver to cheat in reporting on + a Quick-Start Request, in the absence of a mechanism such as the QS + Nonce? In some cases, cheating would be of clear benefit to the + receiver, resulting in a faster completion time for the transfer. In + other cases, where cheating would result in Quick-Start packets being + dropped in the network, cheating might or might not improve the + receiver's performance metric, depending on the details of that + particular scenario. + +9.4.3. Receivers Lying about the Approved Rate + + A second form of receiver misbehavior would be for the receiver to + lie to the sender about the Rate Request for an approved Quick-Start + Request, by increasing the value of the Rate Request field. However, + the receiver doesn't necessarily know the Rate Request in the + original Quick-Start Request sent by the sender, and a higher Rate + Request reported by the receiver will only be considered valid by the + sender if it is no higher than the Rate Request originally requested + + + +Floyd, et al. Experimental [Page 43] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + by the sender. For example, if the sender sends a Quick-Start + Request with a Rate Request of X, and the receiver reports receiving + a Quick-Start Request with a Rate Request of Y > X, then the sender + knows that either some router along the path malfunctioned + (increasing the Rate Request inappropriately), or the receiver is + lying about the Rate Request in the received packet. + + If the sender sends a Quick-Start Request with a Rate Request of Z, + the receiver receives the Quick-Start Request with an approved Rate + Request of X, and reports a Rate Request of Y, for X < Y <= Z, then + the receiver only succeeds in lying to the sender about the approved + rate if the receiver successfully reports the rightmost 2Y bits in + the QS nonce. + + If senders often use a configured default value for the Rate Request, + then receivers would often be able to guess the original Rate + Request, and this would make it easier for the receiver to lie about + the value of the Rate Request field. Similarly, if the receiver + often communicates with a particular sender, and the sender always + uses the same Rate Request for that receiver, then the receiver might + over time be able to infer the original Rate Request used by the + sender. + + There are several possible additional forms of protection against + receivers lying about the value of the Rate Request. One possible + additional protection would be for a router that decreases a Rate + Request in a Quick-Start Request to report the decrease directly to + the sender. However, this could lead to many reports back to the + sender for a single request, and could also be used in address- + spoofing attacks. + + A second limited form of protection would be for senders to use some + degree of randomization in the requested Rate Request, so that it is + difficult for receivers to guess the original value for the Rate + Request. However, this is difficult because there is a fairly coarse + granularity in the set of rate requests available to the sender, and + randomizing the initial request only offers limited protection, in + any case. + +9.4.4. Collusion between Misbehaving Routers + + In addition to protecting against misbehaving receivers, it is + necessary to protect against misbehaving routers. Consider collusion + between an ingress router and an egress router belonging to the same + intranet. The ingress router could decrement the Rate Request at the + ingress, with the egress router increasing it again at the egress. + The routers between the ingress and egress that approved the + + + + +Floyd, et al. Experimental [Page 44] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + decremented rate request might not have been willing to approve the + larger, original request. + + Another form of collusion would be for the ingress router to inform + the egress router out-of-band of the TTL Diff and QS Nonce for the + request packet at the ingress. This would enable the egress router + to modify the QS TTL and QS Nonce so that it appeared that all the + routers along the path had approved the request. There does not + appear to be any protection against a colluding ingress and egress + router. Even if an intermediate router had deleted the Quick-Start + Option from the packet, the ingress router could have sent the + Quick-Start Option to the egress router out-of-band, with the egress + router inserting the Quick-Start Option, with a modified QS TTL + field, back in the packet. + + However, unlike ECN, there is somewhat less of an incentive for + cooperating ingress and egress routers to collude to falsely modify + the Quick-Start Request so that it appears to have been approved by + all the routers along the path. With ECN, a colluding ingress router + could falsely mark a packet as ECN-capable, with the colluding egress + router returning the ECN field in the IP header to its original non- + ECN-capable codepoint, and congested routers along the path could + have been fooled into not dropping that packet. This collusion would + give an unfair competitive advantage to the traffic protected by the + colluding ingress and egress routers. + + In contrast, with Quick-Start, the collusion of the ingress and + egress routers to make it falsely appear that a Quick-Start Request + was approved sometimes would give an advantage to the traffic covered + by that collusion, and sometimes would give a disadvantage, depending + on the details of the scenario. If some router along the path really + does not have enough available bandwidth to approve the Quick-Start + Request, then Quick-Start packets sent as a result of the falsely + approved request could be dropped in the network, to the possible + disadvantage of the connection. Thus, while the ingress and egress + routers could collude to prevent intermediate routers from denying a + Quick-Start Request, it would not always be to the connection's + advantage for this to happen. One defense against such a collusion + would be for some router between the ingress and egress nodes that + denied the request to monitor connection performance, penalizing + connections that seem to be using Quick-Start after a Quick-Start + Request was denied, or that are reporting an Approved Rate higher + than that actually approved by that router. + + If the congested router is ECN-capable, and the colluding ingress and + egress routers are lying about ECN-capability as well as about + Quick-Start, then the result could be that the Quick-Start Request + falsely appears to the sender to have been approved, and the Quick- + + + +Floyd, et al. Experimental [Page 45] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Start packets falsely appear to the congested router to be ECN- + capable. In this case, the colluding routers might succeed in giving + a competitive advantage to the traffic protected by their collusion + (if no intermediate router is monitoring to catch such misbehavior). + +9.5. Misbehaving Middleboxes and the IP TTL + + One possible difficulty is that of traffic normalizers [HKP01], or + other middleboxes along that path, that rewrite IP TTLs in order to + foil other kinds of attacks in the network. If such a traffic + normalizer rewrote the IP TTL, but did not adjust the Quick-Start TTL + by the same amount, then the sender's mechanism for determining if + the request was approved by all routers along the path would no + longer be reliable. Rewriting the IP TTL could result in false + positives (with the sender incorrectly believing that the Quick- + Start Request was approved) as well as false negatives (with the + sender incorrectly believing that the Quick-Start Request was + denied). + +9.6. Attacks on Quick-Start + + As discussed in [SAF06], Quick-Start is vulnerable to two kinds of + attacks: (1) attacks to increase the routers' processing and state + load and (2) attacks with bogus Quick-Start Requests to temporarily + tie up available Quick-Start bandwidth, preventing routers from + approving Quick-Start Requests from other connections. Routers can + protect against the first kind of attack by applying a simple limit + on the rate at which Quick-Start Requests will be considered by the + router. + + The second kind of attack, to tie up the available Quick-Start + bandwidth, is more difficult to defend against. As discussed in + [SAF06], Quick-Start Requests that are not going to be used, either + because they are from malicious attackers or because they are denied + by routers downstream, can result in short-term `wasting' of + potential Quick-Start bandwidth, resulting in routers denying + subsequent Quick-Start Requests that, if approved, would in fact have + been used. + + We note that the likelihood of malicious attacks would be minimized + significantly when Quick-Start was deployed in a controlled + environment such as an intranet, where there was some form of + centralized control over the users in the system. We also note that + this form of attack could potentially make Quick-Start unusable, but + it would not do any further damage; in the worst case, the network + would function as a network without Quick-Start. + + + + + +Floyd, et al. Experimental [Page 46] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [SAF06] considers the potential of Extreme Quick-Start algorithms at + routers, which keep per-flow state for Quick-Start connections, in + protecting the availability of Quick-Start bandwidth in the face of + frequent, overly large Quick-Start Requests. + +9.7. Simulations with Quick-Start + + Quick-Start was added to the NS simulator [SH02] by Srikanth + Sundarrajan, and additional functionality was added by Pasi + Sarolahti. The validation test is at `test-all-quickstart' in the + `tcl/test' directory in NS. The initial simulation studies from + [SH02] show a significant performance improvement using Quick-Start + for moderate-sized flows (between 4 KB and 128 KB) in underutilized + environments. These studies are of file transfers, with the + improvement measured as the relative increase in the overall + throughput for the file transfer. The study shows that potential + improvement from Quick-Start is proportional to the delay-bandwidth + product of the path. + + The Quick-Start simulations in [SAF06] explore the following: the + potential benefit of Quick-Start for the connection, the relative + benefits of different router-based algorithms for approving Quick- + Start Requests, and the effectiveness of Quick-Start as a function of + the senders' algorithms for choosing the size of the rate request. + +10. Implementation and Deployment Issues + + This section discusses some of the implementation issues with Quick- + Start. This section also discusses some of the key deployment + issues, such as the chicken-and-egg deployment problems of mechanisms + that have to be deployed in both routers and end nodes in order to + work, and the problems posed by the wide deployment of middleboxes + today that block the use of known or unknown IP Options. + +10.1. Implementation Issues for Sending Quick-Start Requests + + Section 4.7 discusses some of the issues with deciding the initial + sending rate to request. Quick-Start raises additional issues about + the communication between the transport protocol and the application, + and about the use of past history with Quick-Start in the end node. + + One possibility is that a protocol implementation could provide an + API for applications to indicate when they want to request Quick- + Start, and what rate they would like to request. In the conventional + socket API, this could be a socket option that is set before a + connection is established. Some applications, such as those that use + TCP for bulk transfers, do not have interest in the transmission + rate, but they might know the amount of data that can be sent + + + +Floyd, et al. Experimental [Page 47] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + immediately. Based on this, the sender implementation could decide + whether Quick-Start would be useful, and what rate should be + requested. + + We note that when Quick-Start is used, the TCP sender is required to + save the QS Nonce and the TTL Diff when the Quick-Start Request is + sent, and to implement an additional timer for the paced transmission + of Quick-Start packets. + +10.2. Implementation Issues for Processing Quick-Start Requests + + A router or other network host must be able to determine the + approximate bandwidth of its outbound network interfaces in order to + process incoming Quick-Start rate requests, including those that + originate from the host itself. One possibility would be for hosts + to rely on configuration information to determine link bandwidths; + this has the drawback of not being robust to errors in configuration. + Another possibility would be for network device drivers to infer the + bandwidth for the interface and to communicate this to the IP layer. + + Particular issues will arise for wireless links with variable + bandwidth, where decisions will have to be made about how frequently + the host gets updates of the changing bandwidth. It seems + appropriate that Quick-Start Requests would be handled particularly + conservatively for links with variable bandwidth; to avoid cases + where Quick-Start Requests are approved, the link bandwidth is + reduced, and the data packets that are sent end up being dropped. + + Difficult issues also arise for paths with multi-access links (e.g., + Ethernet). Routers or end-nodes with multi-access links should be + particularly conservative in granting Quick-Start Requests. In + particular, for some multi-access links, there may be no procedure + for an attached node to use to determine whether all parts of the + multi-access link have been underutilized in the recent past. + +10.3. Possible Deployment Scenarios + + Because of possible problems discussed above concerning using Quick- + Start over some network paths and the security issues discussed in + Section 11, the most realistic initial deployment of Quick-Start + would most likely take place in intranets and other controlled + environments. Quick-Start is most useful on high bandwidth-delay + paths that are significantly underutilized. The primary initial + users of Quick-Start would likely be in organizations that provide + network services to their users and also have control over a large + portion of the network path. + + + + + +Floyd, et al. Experimental [Page 48] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Quick-Start is not currently intended for ubiquitous deployment in + the global Internet. In particular, Quick-Start should not be + enabled by default in end-nodes or in routers; instead, when Quick- + Start is used, it should be explicitly enabled by users or system + administrators. + + Below are a few examples of networking environments where Quick- + Start would potentially be useful. These are the environments that + might consider an initial deployment of Quick-Start in the routers + and end-nodes, where the incentives for routers to deploy Quick- + Start might be the most clear. + + * Centrally administrated organizational intranets: These intranets + often have large network capacity, with networks that are + underutilized for much of the time [PABL+05]. Such intranets might + also include high-bandwidth and high-delay paths to remote sites. + In such an environment, Quick-Start would be of benefit to users, + and there would be a clear incentive for the deployment of Quick- + Start in routers. For example, Quick-Start could be quite useful + in high-bandwidth networks used for scientific computing. + + * Wireless networks: Quick-Start could also be useful in high-delay + environments of Cellular Wide-Area Wireless Networks, such as the + GPRS [BW97] and their enhancements and next generations. For + example, GPRS EDGE (Enhanced Data for GSM Evolution) is expected to + provide wireless bandwidth of up to 384 Kbps (roughly 32 1500-byte + packets per second) while the GPRS round-trip times range typically + from a few hundred milliseconds to over a second, excluding any + possible queueing delays in the network [GPAR02]. In addition, + these networks sometimes have variable additional delays due to + resource allocation that could be avoided by keeping the connection + path constantly utilized, starting from initial slow-start. Thus, + Quick-Start could be of significant benefit to users in these + environments. + + * Paths over satellite links: Geostationary Orbit (GEO) satellite + links have one-way propagation delays on the order of 250 ms while + the bandwidth can be measured in megabits per second [RFC2488]. + Because of the considerable bandwidth-delay product on the link, + TCP's slow-start is a major performance limitation in the beginning + of the connection. A large initial congestion window would be + useful to users of such satellite links. + + * Single-hop paths: Quick-Start should work well over point-to-point + single-hop paths, e.g., from a host to an adjacent server. Quick- + Start would work over a single-hop IP path consisting of a multi- + access link only if the host was able to determine if the path to + the next IP hop has been significantly underutilized over the + + + +Floyd, et al. Experimental [Page 49] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + recent past. If the multi-access link includes a layer-2 switch, + then the attached host cannot necessarily determine the status of + the other links in the layer-2 network. + +10.4. A Comparison with the Deployment Problems of ECN + + Given the glacially slow rate of deployment of ECN in the Internet to + date [MAF05], it is disconcerting to note that some of the deployment + problems of Quick-Start are even greater than those of ECN. First, + unlike ECN, which can be of benefit even if it is only deployed on + one of the routers along the end-to-end path, a connection's use of + Quick-Start requires Quick-Start deployment on all of the routers + along the end-to-end path. Second, unlike ECN, which uses an + allocated field in the IP header, Quick-Start requires the extra + complications of an IP Option, which can be difficult to pass through + the current Internet [MAF05]. + + However, in spite of these issues, there is some hope for the + deployment of Quick-Start, at least in protected corners of the + Internet, because the potential benefits of Quick-Start to the user + are considerably more dramatic than those of ECN. Rather than simply + replacing the occasional dropped packet by an ECN-marked packet, + Quick-Start is capable of dramatically increasing the throughput of + connections in underutilized environments [SAF06]. + +11. Security Considerations + + Sections 9.4 and 9.6 discuss the security considerations related to + Quick-Start. Section 9.4 discusses the potential abuse of Quick- + Start by senders or receivers lying about whether the request was + approved or about the approved rate, and of routers in collusion to + misuse Quick-Start. Section 9.5 discusses potential problems with + traffic normalizers that rewrite IP TTLs in packet headers. All + these problems could result in the sender using a Rate Request that + was inappropriately large, or thinking that a request was approved + when it was in fact denied by at least one router along the path. + This inappropriate use of Quick-Start could result in congestion and + an unacceptable level of packet drops along the path. Such + congestion could also be part of a Denial of Service attack. + + Section 9.6 discusses a potential attack on the routers' processing + and state load from an attack of Quick-Start Requests. Section 9.6 + also discusses a potential attack on the available Quick-Start + bandwidth by sending bogus Quick-Start Requests for bandwidth that + will not, in fact, be used. While this impacts the global usability + of Quick-Start, it does not endanger the network as a whole since TCP + uses standard congestion control if Quick-Start is not available. + + + + +Floyd, et al. Experimental [Page 50] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Section 4.7.2 discusses the potential problem of packets with Quick- + Start Requests dropped by middleboxes along the path. + + As discussed in Section 5, for IPv4 IPsec Authentication Header + Integrity Check Value (AH ICV) calculation, the Quick-Start Option is + a mutable IPv4 option and hence completely zeroed for AH ICV + calculation purposes. This is also the treatment required by RFC + 4302 for unrecognized IPv4 options. The IPv6 Quick-Start Option's + IANA-allocated option type indicates that it is a mutable option; + hence, according to RFC 4302, its option data is required to be + zeroed for AH ICV computation purposes. See RFC 4302 for further + explanation. + + Section 6.2 discusses possible problems of Quick-Start used by + connections carried over simple tunnels that are not compatible with + Quick-Start. In this case, it is possible that a Quick-Start Request + is erroneously considered approved by the sender without the routers + in the tunnel having individually approved the request, causing a + false positive. + + We note two high-order points here. First, the Quick-Start Nonce + goes a long way towards preventing large-scale cheating. Second, + even if a host occasionally uses Quick-Start when it is not approved + by the entire network path, the network will not collapse. Quick- + Start does not remove TCP's basic congestion control mechanisms; + these will kick in when the network is heavily loaded, relegating any + Quick-Start mistake to a transient. + + + + + + + + + + + + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 51] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +12. IANA Considerations + + Quick-Start requires an IP Option and a TCP Option. + +12.1. IP Option + + Quick-Start requires both an IPv4 Option Number (Section 3.1) and an + IPv6 Option Number (Section 3.2). + + IPv4 Option Number: + + Copy Class Number Value Name + ---- ----- ------ ----- ---- + 0 00 25 25 QS - Quick-Start + + + IPv6 Option Number [RFC2460]: + + HEX act chg rest + --- --- --- ----- + 6 00 1 00110 Quick-Start + + For the IPv6 Option Number, the first two bits indicate that the IPv6 + node may skip over this option and continue processing the header if + it doesn't recognize the option type, and the third bit indicates + that the Option Data may change en-route. + + In both cases, this document should be listed as the reference + document. + +12.2. TCP Option + + Quick-Start requires a TCP Option Number (Section 4.2). + + TCP Option Number: + + Kind Length Meaning + ---- ------ ------------------------------ + 27 8 Quick-Start Response + + This document should be listed as the reference document. + + + + + + + + + + +Floyd, et al. Experimental [Page 52] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +13. Conclusions + + We are presenting the Quick-Start mechanism as a simple, + understandable, and incrementally deployable mechanism that would be + sufficient to allow some connections to start up with large initial + rates, or large initial congestion windows, in over-provisioned, + high-bandwidth environments. We expect there will be an increasing + number of over-provisioned, high-bandwidth environments where the + Quick-Start mechanism, or another mechanism of similar power, could + be of significant benefit to a wide range of traffic. We are + presenting the Quick-Start mechanism as a request for the community + to provide feedback and experimentation on issues relating to Quick- + Start. + +14. Acknowledgements + + The authors wish to thank Mark Handley for discussions of these + issues. The authors also thank the End-to-End Research Group, the + Transport Services Working Group, and members of IPAM's program on + Large-Scale Communication Networks for both positive and negative + feedback on this proposal. We thank Srikanth Sundarrajan for the + initial implementation of Quick-Start in the NS simulator, and for + the initial simulation study. Many thanks to David Black and Joe + Touch for extensive feedback on Quick-Start and IP tunnels. We also + thank Mohammed Ashraf, John Border, Bob Briscoe, Martin Duke, Tom + Dunigan, Mitchell Erblich, Gorry Fairhurst, John Heidemann, Paul + Hyder, Dina Katabi, and Vern Paxson for feedback. Thanks also to + Gorry Fairhurst for the suggestion of adding the QS Nonce to the + Report of Approved Rate. + + The version of the QS Nonce in this document is based on a proposal + from Guohan Lu [L05]. Earlier versions of this document contained an + eight-bit QS Nonce, and subsequent versions discussed the possibility + of a four-bit QS Nonce. + + This document builds upon the concepts described in [RFC3390], + [AHO98], [RFC2415], and [RFC3168]. Some of the text on Quick-Start + in tunnels was borrowed directly from RFC 3168. + + This document is the development of a proposal originally by Amit + Jain for Initial Window Discovery. + + + + + + + + + + +Floyd, et al. Experimental [Page 53] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +Appendix A. Related Work + + The Quick-Start proposal, taken together with HighSpeed TCP [RFC3649] + or other transport protocols for high-bandwidth transfers, could go a + significant way towards extending the range of performance for best- + effort traffic in the Internet. However, there are many things that + the Quick-Start proposal would not accomplish. Quick-Start is not a + congestion control mechanism, and would not help in making more + precise use of the available bandwidth -- that is, of achieving the + goal of high throughput with low delay and low packet-loss rates. + Quick-Start would not give routers more control over the decrease + rates of active connections. + + In addition, any evaluation of Quick-Start must include a discussion + of the relative benefits of approaches that use no explicit + information from routers, and of approaches that use more fine- + grained feedback from routers as part of a larger congestion control + mechanism. We discuss several classes of proposals in the sections + below. + +A.1. Fast Start-Ups without Explicit Information from Routers + + One possibility would be for senders to use information from the + packet streams to learn about the available bandwidth, without + explicit information from routers. These techniques would not allow + a start-up as fast as that available from Quick-Start in an + underutilized environment; one already has to have sent some packets + in order to use the packet stream to learn about available bandwidth. + However, these techniques could allow a start-up considerably faster + than the current Slow-Start. While it seems clear that approaches + *without* explicit feedback from the routers will be strictly less + powerful than is possible *with* explicit feedback, it is also + possible that approaches that are more aggressive than Slow-Start are + possible without the complexity involved in obtaining explicit + feedback from routers. + + Periodic packet streams: + [JD02] explores the use of periodic packet streams to estimate the + available bandwidth along a path. The idea is that the one-way + delays of a periodic packet stream show an increasing trend when the + stream's rate is higher than the available bandwidth (due to an + increasing queue). While [JD02] states that the proposed mechanism + does not cause significant increases in network utilization, losses, + or delays when done by one flow at a time, the approach could be + problematic if conducted concurrently by a number of flows. [JD02] + also gives an overview of some of the earlier work on inferring the + available bandwidth from packet trains. + + + + +Floyd, et al. Experimental [Page 54] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Swift-Start: + The Swift Start proposal from [PRAKS02] combines packet-pair and + packet-pacing techniques. An initial congestion window of four + segments is used to estimate the available bandwidth along the path. + This estimate is then used to dramatically increase the congestion + window during the second RTT of data transmission. + + SPAND: + In the TCP/SPAND proposal from [ZQK00] for speeding up short data + transfers, network performance information would be shared among many + co-located hosts to estimate each connection's fair share of the + network resources. Based on such estimation and the transfer size, + the TCP sender would determine the optimal initial congestion window + size. The design for TCP/SPAND uses a performance gateway that + monitors all traffic entering and leaving an organization's network. + + Sharing information among TCP connections: + The Congestion Manager [RFC3124] and TCP control block sharing + [RFC2140] both propose sharing congestion information among multiple + TCP connections with the same endpoints. With the Congestion + Manager, a new TCP connection could start with a high initial cwnd, + if it was sharing the path and the cwnd with a pre-existing TCP + connection to the same destination that had already obtained a high + congestion window. RFC 2140 discusses ensemble sharing, where an + established connection's congestion window could be `divided up' to + be shared with a new connection to the same host. However, neither + of these approaches addresses the case of a connection to a new + destination, with no existing or recent connection (and therefore + congestion control state) to that destination. + + While continued research on the limits of the ability of TCP and + other transport protocols to learn of available bandwidth without + explicit feedback from the router seems useful, we note that there + are several fundamental advantages of explicit feedback from routers. + + (1) Explicit feedback is faster than implicit feedback: + One advantage of explicit feedback from the routers is that it + allows the transport sender to reliably learn of available + bandwidth in one round-trip time. + + (2) Explicit feedback is more reliable than implicit feedback: + Techniques that attempt to assess the available bandwidth at + connection start-up using implicit techniques are more error- + prone than techniques that involve every element in the network + path. While explicit information from the network can be wrong, + it has a much better chance of being appropriate than an end-host + trying to *estimate* an appropriate sending rate using "block + box" probing techniques of the entire path. + + + +Floyd, et al. Experimental [Page 55] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +A.2. Optimistic Sending without Explicit Information from Routers + + Another possibility that has been suggested [S02] is for the sender + to start with a large initial window without explicit permission from + the routers and without bandwidth estimation techniques and for the + first packet of the initial window to contain information, such as + the size or sending rate of the initial window. The proposal would + be that congested routers would use this information in the first + data packet to drop or delay many or all of the packets from that + initial window. In this way, a flow's optimistically large initial + window would not force the router to drop packets from competing + flows in the network. Such an approach would seem to require some + mechanism for the sender to ensure that the routers along the path + understood the mechanism for marking the first packet of a large + initial window. + + Obviously, there would be a number of questions to consider about an + approach of optimistic sending. + + (1) Incremental deployment: + One question would be the potential complications of incremental + deployment, where some of the routers along the path might not + understand the packet information describing the initial window. + + (2) Congestion collapse: + There could also be concerns about congestion collapse if many + flows used large initial windows, many packets were dropped from + optimistic initial windows, and many congested links ended up + carrying packets that are only going to be dropped downstream. + + (3) Distributed Denial of Service attacks: + A third question would be the potential role of optimistic + senders in amplifying the damage done by a Distributed Denial of + Service (DDoS) attack (assuming attackers use compliant + congestion control in the hopes of "flying under the radar"). + + (4) Performance hits if a packet is dropped: + A fourth issue would be to quantify the performance hit to the + connection when a packet is dropped from one of the initial + windows. + +A.3. Fast Start-Ups with Other Information from Routers + + There have been several proposals somewhat similar to Quick-Start, + where the transport protocol collects explicit information from the + routers along the path. + + + + + +Floyd, et al. Experimental [Page 56] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + An IP Option about the free buffer size: + In related work, [P00] investigates the use of a slightly different + IP option for TCP connections to discover the available bandwidth + along the path. In that proposal, the IP option would query the + routers along the path about the smallest available free buffer size. + Also, the IP option would have been sent after the initial SYN + exchange, when the TCP sender already had an estimate of the round- + trip time. + + The Performance Transparency Protocol: + The Performance Transparency Protocol (PTP) includes a proposal for a + single PTP packet that would collect information from routers along + the path from the sender to the receiver [W00]. For example, a + single PTP packet could be used to determine the bottleneck bandwidth + along a path. + + ETEN: + Additional proposals for end nodes to collect explicit information + from routers include one variant of Explicit Transport Error + Notification (ETEN), which includes a cumulative mechanism to notify + endpoints of aggregate congestion statistics along the path [KAPS02]. + (A second variant in [KSEPA04] does not depend on cumulative + congestion statistics from the network.) + +A.4. Fast Start-Ups with more Fine-Grained Feedback from Routers + + Proposals for more fine-grained, congestion-related feedback from + routers include XCP [KHR02], MaxNet [MaxNet], and AntiECN marking + [K03]. Appendix B.6 discusses in more detail the relationship + between Quick-Start and proposals for more fine-grained per-packet + feedback from routers. + + XCP: + Proposals, such as XCP for new congestion control mechanisms based on + more feedback from routers, are more powerful than Quick-Start, but + also are more complex to understand and more difficult to deploy. + XCP routers maintain no per-flow state, but provide more fine- + grained feedback to end-nodes than the one-bit congestion feedback of + ECN. The per-packet feedback from XCP can be positive or negative, + and specifies the increase or decrease in the sender's congestion + window when this packet is acknowledged. XCP is a full-fledge + congestion control scheme, whereas Quick-Start represents a quick + check to determine if the network path is significantly underutilized + such that a connection can start faster and then fall back to TCP's + standard congestion control algorithms. + + + + + + +Floyd, et al. Experimental [Page 57] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + AntiECN: + The AntiECN proposal is for a single bit in the packet header that + routers could set to indicate that they are underutilized. For each + TCP ACK arriving at the sender indicating that a packet has been + received with the Anti-ECN bit set, the sender would be able to + increase its congestion window by one packet, as it would during + slow-start. + +A.5. Fast Start-Ups with Lower-Than-Best-Effort Service + + There have been proposals for routers to provide a Lower Effort + differentiated service that would be lower than best effort + [RFC3662]. Such a service could carry traffic for which delivery is + strictly optional, or could carry traffic that is important but that + has low priority in terms of time. Because it does not interfere + with best-effort traffic, Lower Effort services could be used by + transport protocols that start up faster than slow-start. For + example, [SGF05] is a proposal for the transport sender to use low- + priority traffic for much of the initial traffic, with routers + configured to use strict priority queueing. + + A separate but related issue is that of below-best-effort TCP, + variants of TCP that would not rely on Lower Effort services in the + network, but would approximate below-best-effort traffic by detecting + and responding to congestion sooner than standard TCP. TCP Nice + [V02] and TCP Low Priority (TCP-LP) [KK03] are two such proposals for + below-best-effort TCP, with the purpose of allowing TCP connections + to use the bandwidth unused by TCP and other traffic in a non- + intrusive fashion. Both TCP Nice and TCP Low Priority use the + default slow-start mechanisms of TCP. + + We note that Quick-Start is quite different from either a Lower- + Effort service or a below-best-effort variant of TCP. Unlike these + proposals, Quick-Start is intended to be useful for best-effort + traffic that wishes to receive at least as much bandwidth as + competing best-effort connections. + + + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 58] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +Appendix B. Design Decisions + +B.1. Alternate Mechanisms for the Quick-Start Request: ICMP and RSVP + + This document has proposed using an IP Option for the Quick-Start + Request from the sender to the receiver, and using transport + mechanisms for the Quick-Start Response from the receiver back to the + sender. In this section, we discuss alternate mechanisms, and + consider whether ICMP ([RFC792], [RFC4443]) or RSVP [RFC2205] + protocols could be used for delivering the Quick-Start Request. + +B.1.1. ICMP + + Being a control protocol used between Internet nodes, one could argue + that ICMP is the ideal method for requesting permission for faster + start-up from routers. The ICMP header is above the IP header. + Quick-Start could be accomplished with ICMP as follows: If the ICMP + protocol is used to implement Quick-Start, the equivalent of the + Quick-Start IP option would be carried in the ICMP header of the ICMP + Quick-Start Request. The ICMP Quick-Start Request would have to pass + by the routers on the path to the receiver, possibly using the IP + Router Alert option [RFC2113]. A router that approves the Quick- + Start Request would take the same actions as in the case with the + Quick-Start IP Option, and forward the packet to the next router + along the path. A router that does not approve the Quick-Start + Request, even with a decreased value for the Requested Rate, would + delete the ICMP Quick-Start Request, and send an ICMP Reply to the + sender that the request was not approved. If the ICMP Reply was + dropped in the network, and did not reach the receiver, the sender + would still know that the request was not approved from the absence + of feedback from the receiver. If the ICMP Quick-Start Request was + dropped in the network due to congestion, the sender would assume + that the request was not approved. The ICMP message would need the + source and destination port numbers for demultiplexing at the end + nodes. If the ICMP Quick-Start Request reached the receiver, the + receiver would use transport-level or application-level mechanisms to + send a response to the sender, exactly as with the IP Option. + + One benefit of using ICMP would be that the delivery of the TCP SYN + packet or other initial packet would not be delayed by IP option + processing at routers. A greater advantage is that if middleboxes + were blocking packets with Quick-Start Requests, using the Quick- + Start Request in a separate ICMP packet would mean that the middlebox + behavior would not affect the connection as a whole. (To get this + robustness to middleboxes with TCP using an IP Quick-Start Option, + one would have to have a TCP-level Quick-Start Request packet that + could be sent concurrently with, but separately from, the TCP SYN + packet.) + + + +Floyd, et al. Experimental [Page 59] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + However, there are a number of disadvantages to using ICMP. Some + firewalls and middleboxes may not forward the ICMP Quick-Start + Request packets. (If an ICMP Reply packet from a router to the + sender is dropped in the network, the sender would still know that + the request was not approved, as stated earlier, so this would not be + as serious of a problem.) In addition, it would be difficult, if not + impossible, for a router in the middle of an IP tunnel to deliver an + ICMP Reply packet to the actual source, for example, when the inner + IP header is encrypted, as in IPsec ESP tunnel mode [RFC4301]. + Again, however, the ICMP Reply packet would not be essential to the + correct operation of ICMP Quick-Start. + + Unauthenticated out-of-band ICMP messages could enable some types of + attacks by third-party malicious hosts that are not possible when the + control information is carried in-band with the IP packets that can + only be altered by the routers on the connection path. Finally, as a + minor concern, using ICMP would cause a small amount of additional + traffic in the network, which is not the case when using IP options. + +B.1.2. RSVP + + With some modifications, RSVP [RFC2205] could be used as a bearer + protocol for carrying the Quick-Start Requests. Because routers are + expected to process RSVP packets more extensively than the normal + transport protocol IP packets, delivering a Quick-Start rate request + using an RSVP packet would seem an appealing choice. However, Quick- + Start with RSVP would require a few differences from the conventional + usage of RSVP. Quick-Start would not require periodical refreshing + of soft state, because Quick-Start does not require per-connection + state in routers. Quick-Start Requests would be transmitted + downstream from the sender to receiver in the RSVP Path messages, + which is different from the conventional RSVP model where the + reservations originate from the receiver. Furthermore, the Quick- + Start Response would be sent using the transport-level or + application-level mechanisms, instead of using the RSVP Resv message. + + If RSVP was used for carrying a Quick-Start Request, a new "Quick- + Start Request" class object would be included in the RSVP Path + message that is sent from the sender to receiver. The object would + contain the rate request field in addition to the common length and + type fields. The Send_TTL field in the RSVP common header could be + used as the equivalent of the QS TTL field. The Quick-Start capable + routers along the path would inspect the Quick-Start Request object + in the RSVP Path message, decrement Send_TTL, and adjust the rate + request field if needed. If an RSVP router did not understand the + Quick-Start Request object, it would reject the entire RSVP message + and send an RSVP PathErr message back to the sender. When an RSVP + message with the Quick-Start Request object reaches the receiver, the + + + +Floyd, et al. Experimental [Page 60] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + receiver sends a Quick-Start Reply message in the corresponding + transport protocol header in the same way as described in the context + of IP options earlier. If the RSVP message with the Quick-Start + Request object was dropped along the path, the transport sender would + simply proceed with the normal congestion control procedures. + + Much of the discussion about benefits and drawbacks of using ICMP for + making the Quick-Start Request also applies to the RSVP case. If the + Quick-Start Request was transmitted in a separate packet instead of + as an IP option, the transport protocol packet delivery would not be + delayed due to IP option processing at the routers, and the initial + transport packets would reach their destination more reliably. The + possible disadvantages of using ICMP and RSVP are also expected to be + similar: middleboxes in the network may not be able to forward the + Quick-Start Request messages, and the IP tunnels might cause problems + for processing the Quick-Start Requests. + +B.2. Alternate Encoding Functions + + In this section, we look at alternate encoding functions for the Rate + Request field in the Quick-Start Request. The main requirements for + this function is that it should have a sufficiently wide range for + the requested rate. There is no need for overly fine-grained + precision in the requested rate. Similarly, while it would be + attractive for the encoding function to be easily computable, it is + also possible for end-nodes and routers to simply store the table + giving the mapping between the value N in the Rate Request field, and + the actual rate request f(N). In this section, we consider possible + encoding methods for Rate Request fields of different sizes, + including four-bit, eight-bit, and larger Rate Request fields. + + Linear functions: + One possible proposal would be for the Rate Request field to be + formatted in bits per second, scaled so that one unit equals M Kbps, + for some fixed value of M. Thus, for the value N in the Rate Request + field, the requested rate would be M*N Kbps. + + Powers of two: + If a granularity of factors of two is sufficient for the Rate + Request, then the encoding function with the most range would be for + the requested rate to be K*2^N; for N, the value in the Rate Request + field; and for K, some constant. For N=0, the rate request would be + set to zero, regardless of the encoding function. For example, for + K=40,000 and an eight-bit Rate Request field, the request range would + be from 80 Kbps to 40*2^255 Kbps. This clearly would be an + unnecessarily large request range. + + + + + +Floyd, et al. Experimental [Page 61] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + For a four-bit Rate Request field, the upper limit on the rate + request is 1.3 Gbps. It seems to us that an upper limit of 1.3 Gbps + would be fine for the Quick-Start rate request, and that connections + wishing to start up with a higher initial sending rate should be + encouraged to use other mechanisms, such as the explicit reservation + of bandwidth. If an upper limit of 1.3 Gbps was not acceptable, then + five or six bits could be used for the Rate Request field. + + The lower limit of 80 Kbps could be useful for flows with round-trip + times of a second or more. For a flow with a round-trip time of one + second, as is typical in some wireless networks, the TCP initial + window of 4380 bytes allowed by [RFC3390] (given appropriate packet + sizes) would translate to an initial sending rate of 35 Kbps. Thus, + for TCP flows, a rate request of 80 Kbps could be useful for some + flows with large round-trip times. + + The lower limit of 80 Kbps could also be useful for some non-TCP + flows that send small packets, with at most one small packet every 10 + ms. A rate request of 80 Kbps would translate to a rate of a hundred + 100-byte packets per second (including packet headers). While some + small-packet flows with large round-trip times might find a smaller + rate request of 40 Kbps to be useful, our assumption is that a lower + limit of 80 Kbps on the rate request will be generally sufficient. + Again, if the lower limit of 80 kbps was not acceptable, then extra + bits could be used for the Rate Request field. + + If the granularity of factors of two was too coarse, then the + encoding function could use a base less than two. An alternate form + for the encoding function would be to use a hybrid of linear and + exponential functions. + + A mantissa and exponent representation: + Section 4.4 of [B05] suggests a mantissa and exponent representation + for the Quick-Start encoding function. With e and f as the binary + numbers in the exponent and mantissa fields, and with 0 <= f < 1, + this would represent the rate (1+f)*2^e. [B05] suggests a mantissa + field for f of 8, 16, or 24 bits, with an exponent field for e of 8 + bits. This representation would allow larger rate requests, with an + encoding that is less coarse than the powers-of-two encoding used in + this document. + + Constraints of the transport protocol: + We note that the Rate Request is also constrained by the abilities of + the transport protocol. For example, for TCP with Window Scaling, + the maximum window is at most 2**30 bytes. For a TCP connection with + a long, 1 second round-trip time, this would give a maximum sending + rate of 1.07 Gbps. + + + + +Floyd, et al. Experimental [Page 62] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +B.3. The Quick-Start Request: Packets or Bytes? + + One of the design questions is whether the Rate Request field should + be in bytes per second or in packets per second. We discuss this + separately from the perspective of the transport, and from the + perspective of the router. + + For TCP, the results from the Quick-Start Request are translated into + a congestion window in bytes, using the measured round-trip time and + the MSS. This window applies only to the bytes of data payload, and + does not include the bytes in the TCP or IP packet headers. Other + transport protocols would conceivably use the Quick-Start Request + directly in packets per second, or could translate the Quick-Start + Request to a congestion window in packets. + + The assumption of this document is that the router only approves the + Quick-Start Request when the output link is significantly + underutilized. For this, the router could measure the available + bandwidth in bytes per second, or could convert between packets and + bytes by some mechanism. + + If the Quick-Start Request was in bytes per second, and applied only + to the data payload, then the router would have to convert from bytes + per second of data payload, to bytes per second of packets on the + wire. If the Rate Request field was in bytes per second, and the + sender ended up using very small packets, this could translate to a + significantly larger number in terms of bytes per second on the wire. + Therefore, for a Quick-Start Request in bytes per second, it makes + most sense for this to include the transport and IP headers as well + as the data payload. Of course, this will be, at best, a rough + approximation on the part of the sender; the transport-level sender + might not know the size of the transport and IP headers in bytes, and + might know nothing at all about the separate headers added in IP + tunnels downstream. This rough estimate seems sufficient, however, + given the overall lack of fine precision in Quick-Start + functionality. + + It has been suggested that the router could possibly use information + from the MSS option in the TCP packet header of the SYN packet to + convert the Quick-Start Request from packets per second to bytes per + second, or vice versa. This would be problematic for several + reasons. First, if IPsec is used, the TCP header will be encrypted. + Second, the MSS option is defined as the maximum MSS that the TCP + sender expects to receive, not the maximum MSS that the TCP sender + plans to send [RFC793]. However, it is probably often the case that + this MSS also applies as an upper bound on the MSS used by the TCP + sender in sending. + + + + +Floyd, et al. Experimental [Page 63] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + We note that the sender does not necessarily know the Path MTU when + the Quick-Start Request is sent, or when the initial window of data + is sent. Thus, with IPv4, packets from the initial window could end + up being fragmented in the network if the "Don't Fragment" (DF) bit + is not set [RFC1191]. A Rate Request in bytes per second is + reasonably robust to fragmentation. Clearly, a Rate Request in + packets per second is less robust in the presence of fragmentation. + Interactions between larger initial windows and Path MTU Discovery + are discussed in more detail in RFC 3390 [RFC3390]. + + For a Quick-Start Request in bytes per second, the transport senders + would have the additional complication of estimating the bandwidth + usage added by the packet headers. + + We have chosen a Rate Request field in bytes per second rather than + in packets per second because it seems somewhat more robust, + particularly to routers. + +B.4. Quick-Start Semantics: Total Rate or Additional Rate? + + For a Quick-Start Request sent in the middle of a connection, there + are two possible semantics for the Rate Request field, as follows: + + (1) Total Rate: The requested Rate Request is the requested total + rate for the connection, including the current rate; or + + (2) Additional Rate: The requested Rate Request is the requested + increase in the total rate for that connection, over and above + the current sending rate. + + When the Quick-Start Request is sent after an idle period, the + current sending rate is zero, and there is no difference between (1) + and (2) above. However, a Quick-Start Request can also be sent in + the middle of a connection that has not been idle, e.g., after a + mobility event, or after an application-limited period when the + sender is suddenly ready to send at a much higher rate. In this + case, there can be a significant difference between (1) and (2) + above. In this section, we consider briefly the tradeoffs between + these two options, and explain why we have chosen the `Total Rate' + semantics. + + The Total Rate semantics makes it easier for routers to "allocate" + the same rate to all connections. This lends itself to fairness, and + improves convergence times between old and new connections. With the + Additional Rate semantics, the router would not necessarily know the + current sending rates of the flows requesting additional rates, and + therefore would not have sufficient information to use fairness as a + metric in granting rate requests. With the Total Rate semantics, the + + + +Floyd, et al. Experimental [Page 64] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + fairness is automatic; the router is not granting rate requests for + *additional* bandwidth without knowing the current sending rates of + the different flows. + + The Additional Rate semantics also lends itself to gaming by the + connection, with senders sending frequent Quick-Start Requests in the + hope of gaining a higher rate. If the router is granting the same + maximum rate for all rate requests, then there is little benefit to a + connection of sending a rate request over and over again. However, + if the router is granting an *additional* rate with each rate + request, over and above the current sending rate, then it is in a + connection's interest to send as many rate requests as possible, even + if very few of them are, in fact, granted. + + Appendix E discusses a Report of Current Sending Rate as one possible + function in the Quick-Start Option. However, we have not + standardized this possible use at this time. + +B.5. Alternate Responses to the Loss of a Quick-Start Packet + + Section 4.6 discusses TCP's response to the loss of a Quick-Start + packet in the initial window. This section discusses several + alternate responses. + + One possible alternative to reverting to the default Slow-Start after + the loss of a Quick-Start packet from the initial window would have + been to halve the congestion window and continue in congestion + avoidance. However, we note that this would not have been a + desirable response for either the connection or for the network as a + whole. The packet loss in the initial window indicates that Quick- + Start failed in finding an appropriate congestion window, meaning + that the congestion window after halving may easily also be wrong. + + A more moderate alternate would be to continue in congestion + avoidance from a window of (W-D)/2, where W is the Quick-Start + congestion window, and D is the number of packets dropped or marked + from that window. However, such an approach would implicitly assume + that the number of Quick-Start packets delivered is a good indication + of the appropriate available bandwidth for that flow, even though + other packets from that window were dropped in the network. And, + further, that using half the number of segments that were + successfully transmitted is conservative enough to account for the + possibly inaccurate congestion window indication. We believe that + such an assumption would require more analysis at this point, + particularly in a network with a range of packet dropping mechanisms + at the router, and we cannot recommend it at this time. + + + + + +Floyd, et al. Experimental [Page 65] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Another drawback of approaches that don't revert back to slow-start + when a Quick-Start packet in the initial window is dropped is that + such approaches could give the TCP receiver a greater incentive to + lie about the Quick-Start Request. If the sender reverts to slow- + start when a Quick-Start packet in the initial window is dropped, + this diminishes the benefit a receiver would get from a Quick-Start + request that resulted in a dropped or ECN-marked packet. + +B.6. Why Not Include More Functionality? + + This proposal for Quick-Start is a rather coarse-grained mechanism + that would allow a connection to use a higher sending rate along + underutilized paths, but that does not attempt to provide a next- + generation transport protocol or congestion control mechanism, and + does not attempt the goal of providing very high throughput with very + low delay. Appendix A.4 discusses a number of proposals (such as + XCP, MaxNet, and AntiECN) that provide more fine-grained per-packet + feedback from routers than the current congestion control mechanisms + and that attempt these more ambitious goals. + + Compared to proposals such as XCP and AntiECN, Quick-Start offers + much less control. Quick-Start does not attempt to provide a new + congestion control mechanism, but simply to get permission from + routers for a higher sending rate at start-up, or after an idle + period. Quick-Start can be thought of as an "anti-congestion- + control" mechanism that is only of any use when all the routers along + the path are significantly underutilized. Thus, Quick-Start is of no + use towards a target of high link utilization, or fairness in a + high-utilization scenario, or controlling queueing delay during high + utilization, or anything of the like. + + At the same time, Quick-Start would allow larger initial windows than + would proposals such as AntiECN, requires less input to routers than + XCP (e.g., XCP's cwnd and RTT fields), and would require less + frequent feedback from routers than any new congestion control + mechanism. Thus, Quick-Start is significantly less powerful than + proposals for new congestion control mechanisms, such as XCP and + AntiECN, but as powerful or more powerful in terms of the specific + issue of allowing larger initial windows. Also, (we think) it is + more amenable to incremental deployment in the current Internet. + + We do not discuss proposals such as XCP in detail, but simply note + that there are a number of open questions. One question concerns + whether there is a pressing need for more sophisticated congestion + control mechanisms, such as XCP, in the Internet. Quick-Start is + inherently a rather crude tool that does not deliver assurances about + maintaining high link utilization and low queueing delay; Quick-Start + is designed for use in environments that are significantly + + + +Floyd, et al. Experimental [Page 66] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + underutilized, and addresses the single question of whether a higher + sending rate is allowed. New congestion control mechanisms with more + fine-grained feedback from routers could allow faster start-ups even + in environments with rather high link utilization. Is this a + pressing requirement? Are the other benefits of more fine-grained + congestion control feedback from routers a pressing requirement? + + We would argue that even if more fine-grained per-packet feedback + from routers was implemented, it is reasonable to have a separate + mechanism, such as Quick-Start, for indicating an allowed initial + sending rate, or an allowed total sending rate after an idle or + underutilized period. + + One difference between Quick-Start and current proposals for fine- + grained per-packet feedback, such as XCP, is that XCP is designed to + give robust performance even in the case where different packets + within a connection routinely follow different paths. XCP achieves + relatively robust performance in the presence of multipath routing by + using per-packet feedback, where the feedback carried in a single + packet is about the relative increase or decrease in the rate or + window to take effect when that particular packet is acknowledged, + not about the allowed sending rate for the connection as a whole. + + In contrast, Quick-Start sends a single Quick-Start Request, and the + answer to that request gives the allowed sending rate for an entire + window of data. As a result, Quick-Start could be problematic in an + environment where some fraction of the packets in a window of data + take path A, and the rest of the packets take path B; for example, + the Quick-Start Request could have traveled on path A, while half the + Quick-Start packets sent in the succeeding round-trip time are routed + on path B. We note that [ZDPS01] shows Internet paths to be stable + on the order of RTTs. + + There are also differences between Quick-Start and some of the + proposals for per-packet feedback in terms of the number of bits of + feedback required from the routers to the end-nodes. Quick-Start + uses four bits of feedback in the rate request field to indicate the + allowed sending rate. XCP allocates a byte for per-packet feedback, + though there has been discussion of variants of XCP with less per- + packet feedback. This would be more like other proposals, such as + anti-ECN, that use a single bit of feedback from routers to indicate + that the sender can increase as fast as slow-starting, in response to + this particular packet acknowledgement. In general, there is + probably considerable power in fine-grained proposals with only two + bits of feedback, indicating that the sender should decrease, + maintain, or increase the sending rate or window when this packet is + acknowledged. However, the power of Quick-Start would be + considerably limited if it was restricted to only two bits of + + + +Floyd, et al. Experimental [Page 67] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + feedback; it seems likely that determining the initial sending rate + fundamentally requires more bits of feedback from routers than does + the steady-state, per-packet feedback to increase or decrease the + sending rate. + + On a more practical level, one difference between Quick-Start and + proposals for per-packet feedback is that there are fewer open issues + with Quick-Start than there would be with a new congestion control + mechanism. Because Quick-Start is a mechanism for requesting an + initial sending rate in an underutilized environment, its fairness + issues are less severe than those of a general congestion control + mechanism. With Quick-Start, there is no need for the end nodes to + tell the routers the round-trip time and congestion window, as is + done in XCP; all that is needed is for the end nodes to report the + requested sending rate. + + Table 3 provides a summary of the differences between Quick-Start and + proposals for per-packet congestion control feedback. + + Proposals for + Quick-Start Per-Packet Feedback + +------------------+----------------------+----------------------+ + Semantics: | Allowed sending rate | Change in rate/window, + | per connection. | per-packet. + +------------------+----------------------+----------------------+ + Relationship to | In addition. | Replacement. + congestion ctrl: | | + +------------------+----------------------+----------------------+ + Frequency: | Start-up, or after | Every packet. + | an idle period. | + +------------------+----------------------+----------------------+ + Limitations: | Only useful on | General congestion + | underutilized paths.| control mechanism. + +------------------+----------------------+----------------------+ + Input to routers: | Rate request. |RTT, cwnd, request (XCP) + | | None (Anti-ECN). + +------------------+----------------------+----------------------+ + Bits of feedback: | Four bits for | A few bits would + | rate request. | suffice? + +------------------+----------------------+----------------------+ + + Table 3: Differences between Quick-Start and Proposals for + Fine-Grained Per-Packet Feedback. + + A separate question concerns whether mechanisms, such as Quick-Start, + in combination with HighSpeed TCP and other changes in progress, + would make a significant contribution towards meeting some of these + needs for new congestion control mechanisms. This could be viewed as + + + +Floyd, et al. Experimental [Page 68] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + a positive step towards meeting some of the more pressing current + needs with a simple and reasonably deployable mechanism, or + alternately, as a negative step of unnecessarily delaying more + fundamental changes. Without answering this question, we would note + that our own approach tends to favor the incremental deployment of + relatively simple mechanisms, as long as the simple mechanisms are + not short-term hacks, but mechanisms that lead the overall + architecture in the fundamentally correct direction. + +B.7. Alternate Implementations for a Quick-Start Nonce + +B.7.1. An Alternate Proposal for the Quick-Start Nonce + + An alternate proposal for the Quick-Start Nonce from [B05] would be + for an n-bit field for the QS Nonce, with the sender generating a + random nonce when it generates a Quick-Start Request. Each router + that reduces the Rate Request by r would hash the QS nonce r times, + using a one-way hash function such as MD5 [RFC1321] or the secure + hash 1 [SHA1]. The receiver returns the QS nonce to the sender. + Because the sender knows the original value for the nonce, and the + original rate request, the sender knows the total number of steps s + that the rate has been reduced. The sender then hashes the original + nonce s times to check whether the result is the same as the nonce + returned by the receiver. + + This alternate proposal for the nonce would be considerably more + powerful than the QS nonce described in Section 3.4, but it would + also require more CPU cycles from the routers when they reduce a + Quick-Start Request, and from the sender in verifying the nonce + returned by the receiver. As reported in [B05], routers could + protect themselves from processor exhaustion attacks by limiting the + rate at which they will approve reductions of Quick-Start Requests. + + Both the Function field and the Reserved field in the Quick-Start + Option would allow the extension of Quick-Start to use Quick-Start + requests with the alternate proposal for the Quick-Start Nonce, if it + was ever desired. + +B.7.2. The Earlier Request-Approved Quick-Start Nonce + + An earlier version of this document included a Request-Approved + Quick-Start Nonce (QS Nonce) that was initialized by the sender to a + non-zero, `random' eight-bit number, along with a QS TTL that was + initialized to the same value as the TTL in the IP header. The + Request-Approved Quick-Start Nonce would have been returned by the + transport receiver to the transport sender in the Quick-Start + Response. A router could deny the Quick-Start Request by failing to + decrement the QS TTL field, by zeroing the QS Nonce field, or by + + + +Floyd, et al. Experimental [Page 69] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + deleting the Quick-Start Request from the packet header. The QS + Nonce was included to provide some protection against broken + downstream routers, or against misbehaving TCP receivers that might + be inclined to lie about whether the Rate Request was approved. This + protection is now provided by the QS Nonce, by the use of a random + initial value for the QS TTL field, and by Quick-Start-capable + routers hopefully either deleting the Quick-Start Option or zeroing + the QS TTL and QS Nonce fields when they deny a request. + + With the old Request-Approved Quick-Start Nonce, along with the QS + TTL field set to the same value as the TTL field in the IP header, + the Quick-Start Request mechanism would have been self-terminating; + the Quick-Start Request would terminate at the first participating + router after a non-participating router had been encountered on the + path. This minimizes unnecessary overhead incurred by routers + because of option processing for the Quick-Start Request. In the + current specification, this "self-terminating" property is provided + by Quick-Start-capable routers hopefully either deleting the Quick- + Start Option or zeroing the Rate Request field when they deny a + request. Because the current specification uses a random initial + value for the QS TTL, Quick-Start-capable routers can't tell if the + Quick-Start Request is invalid because of non-Quick-Start-capable + routers upstream. This is the cost of using a design that makes it + difficult for the receiver to cheat about the value of the QS TTL. + +Appendix C. Quick-Start with DCCP + + DCCP is a new transport protocol for congestion-controlled, + unreliable datagrams, intended for applications such as streaming + media, Internet telephony, and online games. In DCCP, the + application has a choice of congestion control mechanisms, with the + currently-specified Congestion Control Identifiers (CCIDs) being CCID + 2 for TCP-like congestion control, and CCID 3 for TCP Friendly Rate + Control (TFRC), an equation-based form of congestion control. We + refer the reader to [RFC4340] for a more detailed description of DCCP + and congestion control mechanisms. + + Because CCID 3 uses a rate-based congestion control mechanism, it + raises some new issues about the use of Quick-Start with transport + protocols. In this document, we don't attempt to specify the use of + Quick-Start with DCCP. However, we do discuss some of the issues + that might arise. + + In considering the use of Quick-Start with CCID 3 for requesting a + higher initial sending rate, the following questions arise: + + + + + + +Floyd, et al. Experimental [Page 70] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + (1) How does the sender respond if a Quick-Start packet is dropped? + + As in TCP, if an initial Quick-Start packet is dropped, the CCID + 3 sender should revert to the congestion control mechanisms it + would have used if the Quick-Start Request had not been approved. + + (2) When does the sender decide there has been no feedback from the + receiver? + + Unlike TCP, CCID 3 does not use acknowledgements for every + packet, or for every other packet. In contrast, the CCID 3 + receiver sends feedback to the sender roughly once per round-trip + time. In CCID 3, the allowed sending rate is halved if no + feedback is received from the receiver in at least four round- + trip times (when the sender is sending at least one packet every + two round-trip times). When a Quick-Start Request is used, it + would seem necessary to use a smaller time interval, e.g., to + reduce the sending rate if no feedback arrives from the receiver + in at least two round-trip times. + + The question also arises of how the sending rate should be reduced + after a period of no feedback from the receiver. As with TCP, the + default CCID 3 response of halving the sending rate is not + necessarily a sufficient response to the absence of feedback; an + alternative is to reduce the sending rate to the sending rate that + would have been used if no Quick-Start Request had been approved. + That is, if a CCID 3 sender uses a Quick-Start Request, special rules + might be required to handle the sender's response to a period of no + feedback from the receiver regarding the Quick-Start packets. + + Similarly, in considering the use of Quick-Start with CCID 3 for + requesting a higher sending rate after an idle period, the following + questions arise: + + (1) What rate does the sender request? + + As in TCP, there is a straightforward answer to the rate request + that the CCID 3 sender should use in requesting a higher sending + rate after an idle period. The sender knows the current loss + event rate, either from its own calculations or from feedback + from the receiver, and can determine the sending rate allowed by + that loss event rate. This is the upper bound on the sending + rate that should be requested by the CCID 3 sender. A Quick- + Start Request is useful with CCID 3 when the sender is coming out + of an idle or underutilized period, because in standard + operation, CCID 3 does not allow the sender to send more than + twice as fast as the receiver has reported received in the most + recent feedback message. + + + +Floyd, et al. Experimental [Page 71] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + (2) What is the response to loss? + + The response to the loss of Quick-Start packets should be to + return to the sending rate that would have been used if Quick- + Start had not been requested. + + (3) When does the sender decide there has been no feedback from the + receiver? + + As in the case of the initial sending rate, it would seem prudent + to reduce the sending rate if no feedback is received from the + receiver in at least two round-trip times. It seems likely that, + in this case, the sending rate should be reduced to the sending + rate that would have been used if no Quick-Start Request had been + approved. + +Appendix D. Possible Router Algorithm + + This specification does not tightly define the algorithm a router + uses when deciding whether to approve a Quick-Start Rate Request or + whether and how to reduce a Rate Request. A range of algorithms is + likely useful in this space and we consider the algorithm a + particular router uses to be a local policy decision. In addition, + we believe that additional experimentation with router algorithms is + necessary to have a solid understanding of the dynamics various + algorithms impose. However, we provide one particular algorithm in + this appendix as an example and as a framework for thinking about + additional mechanisms. + + [SAF06] provides several algorithms routers can use to consider + incoming Rate Requests. The decision process involves two + algorithms. First, the router needs to track the link utilization + over the recent past. Second, this utilization needs to be updated + by the potential new bandwidth from recent Quick-Start approvals, and + then compared with the router's notion of when it is underutilized + enough to approve Quick-Start Requests (of some size). + + First, we define the "peak utilization" estimation technique (from + [SAF06]). This mechanism records the utilization of the link every S + seconds and stores the most recent N of these measurements. The + utilization is then taken as the highest utilization of the N + samples. This method, therefore, keeps N*S seconds of history. This + algorithm reacts rapidly to increases in the link utilization. In + [SAF06], S is set to 0.15 seconds, and experiments use values for N + ranging from 3 to 20. + + Second, we define the "target" algorithm for processing incoming + Quick-Start Rate Requests (also from [SAF06]). The algorithm relies + + + +Floyd, et al. Experimental [Page 72] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + on knowing the bandwidth of the outgoing link (which, in many cases, + can be easily configured), the utilization of the outgoing link (from + an estimation technique such as given above), and an estimate of the + potential bandwidth from recent Quick-Start approvals. + + Tracking the potential bandwidth from recent Quick-Start approvals is + another case where local policy dictates how it should be done. The + simplest method, outlined in Section 8.2, is for the router to keep + track of the aggregate Quick-Start rate requests approved in the most + recent two or more time intervals, including the current time + interval, and to use the sum of the aggregate rate requests over + these time intervals as the estimate of the approved Rate Requests. + The experiments in [SAF06] keep track of the aggregate approved Rate + Requests over the most recent two time intervals, for intervals of + 150 msec. + + The target algorithm also depends on a threshold (qs_thresh) that is + the fraction of the outgoing link bandwidth that represents the + router's notion of "significantly underutilized". If the + utilization, augmented by the potential bandwidth from recent Quick- + Start approvals, is above this threshold, then no Quick-Start Rate + Requests will be approved. If the utilization, again augmented by + the potential bandwidth from recent Quick-Start approvals, is less + than the threshold, then Rate Requests can be approved. The Rate + Requests will be reduced such that the bandwidth allocated would not + drive the utilization to more than the given threshold. The + algorithm is: + + util_bw = bandwidth * utilization; + util_bw = util_bw + recent_qs_approvals; + if (util_bw < (qs_thresh * bandwidth)) + { + approved = (qs_thresh * bandwidth) - util_bw; + if (rate_request < approved) + approved = rate_request; + approved = round_down (approved); + recent_qs_approvals += approved; + } + + Also note that, given that Rate Requests are fairly coarse, the + approved rate should be rounded down when it does not fall exactly on + one of the rates allowed by the encoding scheme. + + Routers that wish to keep close track of the allocated Quick-Start + bandwidth could use Approved Rate reports to learn when rate requests + had been decremented downstream in the network, and also to learn + when a sender begins to use the approved Quick-Start Request. + + + + +Floyd, et al. Experimental [Page 73] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +Appendix E. Possible Additional Uses for the Quick-Start Option + + The Quick-Start Option contains a four-bit Function field in the + third byte, enabling additional uses to be defined for the Quick- + Start Option. In this section, we discuss some of the possible + additional uses that have been discussed for Quick-Start. The + Function field makes it easy to add new functions for the Quick- + Start Option. + + Report of Current Sending Rate: A Quick-Start Request with the + `Report of Current Sending Rate' codepoint set in the Function field + would be using the Rate Request field to report the current estimated + sending rate for that connection. This could accompany a second + Quick-Start Request in the same packet containing a standard rate + request, for a connection that is using Quick-Start to increase its + current sending rate. + + Request to Increase Sending Rate: A codepoint for `Request to + Increase Sending Rate' in the Function field would indicate that the + connection is not idle or just starting up, but is attempting to use + Quick-Start to increase its current sending rate. This codepoint + would not change the semantics of the Rate Request field. + + RTT Estimate: If a codepoint for `RTT Estimate' was used, a field for + the RTT Estimate would contain one or more bits giving the sender's + rough estimate of the round-trip time, if known. E.g., the sender + could estimate whether the RTT was greater or less than 200 ms. + Alternately, if the sender had an estimate of the RTT when it sends + the Rate Request, the two-bit Reserved field at the end of the + Quick-Start Option could be used for a coarse-grained encoding of the + RTT. + + Informational Request: An Informational Request codepoint in the + Function field would indicate that a request is purely informational, + for the sender to find out if a rate request would be approved, and + what size rate request would be approved when the Informational + Request is sent. For example, an Informational Request could be + followed one round-trip time later by a standard Quick-Start Request. + A router approving an Informational Request would not consider this + as an approval for Quick-Start bandwidth to be used, and would not be + under any obligation to approve a similar standard Quick-Start + Request one round-trip time later. An Informational Request with a + rate request of zero could be used by the sender to find out if all + of the routers along the path supported Quick-Start. + + Use Format X for the Rate Request Field: A Quick-Start codepoint for + `Use Format X for the Rate Request Field' would indicate that an + alternate format was being used for the Rate Request field. + + + +Floyd, et al. Experimental [Page 74] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + Do Not Decrement: A Do Not Decrement codepoint could be used for a + Quick-Start Request where the sender would rather have the request + denied than to have the rate request decremented in the network. + This could be used if the sender was only interested in using Quick- + Start if the original rate request was approved. + + Temporary Bandwidth Use: A Temporary codepoint has been proposed to + indicate that a connection would only use the requested bandwidth for + a single time interval. + +Normative References + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC + 793, September 1981. + + [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, + November 1990. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 2460, December 1998. + + [RFC2581] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion + Control", RFC 2581, April 1999. + + [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of + Explicit Congestion Notification (ECN) to IP", RFC 3168, + September 2001. + + [RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's + Initial Window", RFC 3390, October 2002. + + [RFC3742] Floyd, S., "Limited Slow-Start for TCP with Large + Congestion Windows", RFC 3742, March 2004. + +Informative References + + [RFC792] Postel, J., "Internet Control Message Protocol", STD 5, RFC + 792, September 1981. + + [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, + April 1992. + + [RFC1812] Baker, F., Ed., "Requirements for IP Version 4 Routers", + RFC 1812, June 1995. + + + + +Floyd, et al. Experimental [Page 75] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, + October 1996. + + [RFC2113] Katz, D., "IP Router Alert Option", RFC 2113, February + 1997. + + [RFC2140] Touch, J., "TCP Control Block Interdependence", RFC 2140, + April 1997. + + [RFC2205] Braden, R., Zhang, L., Berson, S., Herzog, S., and S. + Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 + Functional Specification", RFC 2205, September 1997. + + [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange + (IKE)", RFC 2409, November 1998. + + [RFC2415] Poduri, K. and K. Nichols, "Simulation Studies of Increased + Initial TCP Window Size", RFC 2415, September 1998. + + [RFC2488] Allman, M., Glover, D., and L. Sanchez, "Enhancing TCP Over + Satellite Channels using Standard Mechanisms", BCP 28, RFC + 2488, January 1999. + + [RFC2661] Townsley, W., Valencia, A., Rubens, A., Pall, G., Zorn, G., + and B. Palter, "Layer Two Tunneling Protocol 'L2TP'", RFC + 2661, August 1999. + + [RFC2784] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P. Traina, + "Generic Routing Encapsulation (GRE)", RFC 2784, March + 2000. + + [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., + Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., Zhang, + L., and V. Paxson, "Stream Control Transmission Protocol", + RFC 2960, October 2000. + + [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol + Label Switching Architecture", RFC 3031, January 2001. + + [RFC3124] Balakrishnan, H. and S. Seshan, "The Congestion Manager", + RFC 3124, June 2001. + + [RFC3234] Carpenter, B. and S. Brim, "Middleboxes: Taxonomy and + Issues", RFC 3234, February 2002. + + [RFC3344] Perkins, C., Ed., "IP Mobility Support for IPv4", RFC 3344, + August 2002. + + + + +Floyd, et al. Experimental [Page 76] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [RFC3360] Floyd, S., "Inappropriate TCP Resets Considered Harmful", + BCP 60, RFC 3360, August 2002. + + [RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows", + RFC 3649, December 2003. + + [RFC3662] Bless, R., Nichols, K., and K. Wehrle, "A Lower Effort + Per-Domain Behavior (PDB) for Differentiated Services", RFC + 3662, December 2003. + + [RFC3697] Rajahalme, J., Conta, A., Carpenter, B., and S. Deering, + "IPv6 Flow Label Specification", RFC 3697, March 2004. + + [RFC3775] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support + in IPv6", RFC 3775, June 2004. + + [RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D., Ludwig, + R., Mahdavi, J., Montenegro, G., Touch, J., and L. Wood, + "Advice for Internet Subnetwork Designers", BCP 89, RFC + 3819, July 2004. + + [RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M. + Stenberg, "UDP Encapsulation of IPsec ESP Packets", RFC + 3948, January 2005. + + [RFC4301] Kent, S. and K. Seo, "Security Architecture for the + Internet Protocol", RFC 4301, December 2005. + + [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, December + 2005. + + [RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC + 4306, December 2005. + + [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. + + [RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control + Message Protocol (ICMPv6) for the Internet Protocol Version + 6 (IPv6) Specification", RFC 4443, March 2006. + + [AHO98] M. Allman, C. Hayes and S. Ostermann. An evaluation of TCP + with Larger Initial Windows. ACM Computer Communication + Review, July 1998. + + + +Floyd, et al. Experimental [Page 77] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [B05] Briscoe, B., "Review: Quick-Start for TCP and IP", + <http://www.cs.ucl.ac.uk/staff/B.Briscoe/pubs.html>, + November 2005. + + [BW97] G. Brasche and B. Walke. Concepts, Services and Protocols + of the new GSM Phase 2+ General Packet Radio Service. IEEE + Communications Magazine, pages 94--104, August 1997. + + [GPAR02] A. Gurtov, M. Passoja, O. Aalto, and M. Raitola. Multi- + Layer Protocol Tracing in a GPRS Network. In Proceedings of + the IEEE Vehicular Technology Conference (Fall VTC2002), + Vancouver, Canada, September 2002. + + [H05] P. Hoffman, email, October 2005. Citation for + acknowledgement purposes only. + + [HKP01] M. Handley, C. Kreibich and V. Paxson, Network Intrusion + Detection: Evasion, Traffic Normalization, and End-to-End + Protocol Semantics, Proc. USENIX Security Symposium 2001. + + [Jac88] V. Jacobson, Congestion Avoidance and Control, ACM SIGCOMM. + + [JD02] Manish Jain, Constantinos Dovrolis, End-to-End Available + Bandwidth: Measurement Methodology, Dynamics, and Relation + with TCP Throughput, SIGCOMM 2002. + + [K03] S. Kunniyur, "AntiECN Marking: A Marking Scheme for High + Bandwidth Delay Connections", Proceedings, IEEE ICC '03, + May 2003. <http://www.seas.upenn.edu/~kunniyur/>. + + [KAPS02] Rajesh Krishnan, Mark Allman, Craig Partridge, James P.G. + Sterbenz. Explicit Transport Error Notification (ETEN) for + Error-Prone Wireless and Satellite Networks. Technical + Report No. 8333, BBN Technologies, March 2002. + <http://www.icir.org/mallman/papers/>. + + [KHR02] Dina Katabi, Mark Handley, and Charles Rohrs, Internet + Congestion Control for Future High Bandwidth-Delay Product + Environments. ACM Sigcomm 2002, August 2002. + <http://ana.lcs.mit.edu/dina/XCP/>. + + [KK03] A. Kuzmanovic and E. W. Knightly. TCP-LP: A Distributed + Algorithm for Low Priority Data Transfer. INFOCOM 2003, + April 2003. + + + + + + + +Floyd, et al. Experimental [Page 78] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [KSEPA04] Rajesh Krishnan, James Sterbenz, Wesley Eddy, Craig + Partridge, Mark Allman. Explicit Transport Error + Notification (ETEN) for Error-Prone Wireless and Satellite + Networks. Computer Networks, 46(3), October 2004. + + [L05] Guohan Lu, Nonce in TCP Quick Start, September 2005. + <http://www.net-glyph.org/~lgh/nonce-usage.pdf>. + + [MH06] Mathis, M. and J. Heffner, "Packetization Layer Path MTU + Discovery", Work in Progress, December 2006. + + [MAF04] Alberto Medina, Mark Allman, and Sally Floyd, Measuring + Interactions Between Transport Protocols and Middleboxes, + Internet Measurement Conference 2004, August 2004. + <http://www.icir.org/tbit/". + + [MAF05] Alberto Medina, Mark Allman, and Sally Floyd. Measuring + the Evolution of Transport Protocols in the Internet. + Computer Communications Review, April 2005. + + [MaxNet] MaxNet Home Page, + <http://netlab.caltech.edu/~bartek/maxnet.htm>. + + [P00] Joon-Sang Park, Bandwidth Discovery of a TCP Connection, + report to John Heidemann, 2000, private communication. + Citation for acknowledgement purposes only. + + [PABL+05] Ruoming Pang, Mark Allman, Mike Bennett, Jason Lee, Vern + Paxson, Brian Tierney. A First Look at Modern Enterprise + Traffic. ACM SIGCOMM/USENIX Internet Measurement + Conference, October 2005. + + [PRAKS02] Craig Partridge, Dennis Rockwell, Mark Allman, Rajesh + Krishnan, James P.G. Sterbenz. A Swifter Start for TCP. + Technical Report No. 8339, BBN Technologies, March 2002. + <http://www.icir.org/mallman/papers/>. + + [RW03] Mattia Rossi and Michael Welzl, On the Impact of IP Option + Processing, Preprint-Reihe des Fachbereichs Mathematik - + Informatik, No. 15, Institute of Computer Science, + University of Innsbruck, Austria, October 2003. + + [RW04] Mattia Rossi and Michael Welzl, On the Impact of IP Option + Processing - Part 2, Preprint-Reihe des Fachbereichs + Mathematik - Informatik, No. 26, Institute of Computer + Science, University of Innsbruck, Austria, July 2004. + + + + + +Floyd, et al. Experimental [Page 79] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + + [S02] Ion Stoica, private communication, 2002. Citation for + acknowledgement purposes only. + + [SAF06] Pasi Sarolahti, Mark Allman, and Sally Floyd. Determining + an Appropriate Sending Rate Over an Underutilized Network + Path. February 2006. + <http://www.icir.org/floyd/quickstart.html>. + + [SGF05] Singh, M., Guha, S., and P. Francis, "Utilizing spare + network bandwidth to improve TCP performance", ACM SIGCOMM + 2005 Work in Progress session, August 2005, + <https://www.guha.cc/saikat/pub/sigcomm05-lowtcp.pdf>. + + [SHA1] "Secure Hash Standard", FIPS, U.S. Department of Commerce, + Washington, D.C., publication 180-1, April 1995. + + [SH02] Srikanth Sundarrajan and John Heidemann. Study of TCP + Quick Start with NS-2. Class Project, December 2002. Not + publicly available; citation for acknowledgement purposes + only. + + [V02] A. Venkataramani, R. Kokku, and M. Dahlin. TCP Nice: A + Mechanism for Background Transfers. OSDI 2002. + + [VH97] V. Visweswaraiah and J. Heidemann, Improving Restart of + Idle TCP Connections, Technical Report 97-661, University + of Southern California, November 1997. + + [W00] Michael Welzl: PTP: Better Feedback for Adaptive + Distributed Multimedia Applications on the Internet, IPCCC + 2000 (19th IEEE International Performance, Computing, And + Communications Conference), Phoenix, Arizona, USA, 20-22 + February 2000. + <http://www.welzl.at/research/publications/>. + + [ZDPS01] Y. Zhang, N. Duffield, V. Paxson, and S. Shenker, On the + Constancy of Internet Path Properties, Proc. ACM SIGCOMM + Internet Measurement Workshop, November 2001. + + [ZQK00] Y. Zhang, L. Qiu, and S. Keshav, Speeding Up Short Data + Transfers: Theory, Architectural Support, and Simulation + Results, NOSSDAV 2000, June 2000. + + + + + + + + + +Floyd, et al. Experimental [Page 80] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +Authors' Addresses + + Sally Floyd + Phone: +1 (510) 666-2989 + ICIR (ICSI Center for Internet Research) + EMail: floyd@icir.org + URL: http://www.icir.org/floyd/ + + Mark Allman + ICSI Center for Internet Research + 1947 Center Street, Suite 600 + Berkeley, CA 94704-1198 + Phone: (440) 235-1792 + EMail: mallman@icir.org + URL: http://www.icir.org/mallman/ + + Amit Jain + F5 Networks + EMail: a.jain@f5.com + + Pasi Sarolahti + Nokia Research Center + P.O. Box 407 + FI-00045 NOKIA GROUP + Finland + Phone: +358 50 4876607 + EMail: pasi.sarolahti@iki.fi + + + + + + + + + + + + + + + + + + + + + + + + +Floyd, et al. Experimental [Page 81] + +RFC 4782 Quick-Start for TCP and IP January 2007 + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2007). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST, + AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + +Floyd, et al. Experimental [Page 82] + |