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