One document matched: draft-amit-quick-start-03.ps


%!PS-Adobe-3.0
%%BoundingBox: 24 24 588 768
%%Title: Enscript Output
%%For: Sally Floyd
%%Creator: GNU enscript 1.6.1
%%CreationDate: Sat Sep 25 10:36:32 2004
%%Orientation: Portrait
%%Pages: (atend)
%%DocumentMedia: Letter 612 792 0 () ()
%%DocumentNeededResources: (atend)
%%EndComments
%%BeginProlog
%%BeginResource: procset Enscript-Prolog 1.6 1
%
% Procedures.
%

/_S {	% save current state
  /_s save def
} def
/_R {	% restore from saved state
  _s restore
} def

/S {	% showpage protecting gstate
  gsave
  showpage
  grestore
} bind def

/MF {	% fontname newfontname -> -	make a new encoded font
  /newfontname exch def
  /fontname exch def

  /fontdict fontname findfont def
  /newfont fontdict maxlength dict def

  fontdict {
    exch
    dup /FID eq {
      % skip FID pair
      pop pop
    } {
      % copy to the new font dictionary
      exch newfont 3 1 roll put
    } ifelse
  } forall

  newfont /FontName newfontname put

  % insert only valid encoding vectors
  encoding_vector length 256 eq {
    newfont /Encoding encoding_vector put
  } if

  newfontname newfont definefont pop
} def

/SF { % fontname width height -> -	set a new font
  /height exch def
  /width exch def

  findfont
  [width 0 0 height 0 0] makefont setfont
} def

/SUF { % fontname width height -> -	set a new user font
  /height exch def
  /width exch def

  /F-gs-user-font MF
  /F-gs-user-font width height SF
} def

/M {moveto} bind def
/s {show} bind def

/Box {	% x y w h -> -			define box path
  /d_h exch def /d_w exch def /d_y exch def /d_x exch def
  d_x d_y  moveto
  d_w 0 rlineto
  0 d_h rlineto
  d_w neg 0 rlineto
  closepath
} def

/bgs {	% x y height blskip gray str -> -	show string with bg color
  /str exch def
  /gray exch def
  /blskip exch def
  /height exch def
  /y exch def
  /x exch def

  gsave
    x y blskip sub str stringwidth pop height Box
    gray setgray
    fill
  grestore
  x y M str s
} def

% Highlight bars.
/highlight_bars {	% nlines lineheight output_y_margin gray -> -
  gsave
    setgray
    /ymarg exch def
    /lineheight exch def
    /nlines exch def

    % This 2 is just a magic number to sync highlight lines to text.
    0 d_header_y ymarg sub 2 sub translate

    /cw d_output_w cols div def
    /nrows d_output_h ymarg 2 mul sub lineheight div cvi def

    % for each column
    0 1 cols 1 sub {
      cw mul /xp exch def

      % for each rows
      0 1 nrows 1 sub {
        /rn exch def
        rn lineheight mul neg /yp exch def
        rn nlines idiv 2 mod 0 eq {
	  % Draw highlight bar.  4 is just a magic indentation.
	  xp 4 add yp cw 8 sub lineheight neg Box fill
	} if
      } for
    } for

  grestore
} def

% Line highlight bar.
/line_highlight {	% x y width height gray -> -
  gsave
    /gray exch def
    Box gray setgray fill
  grestore
} def

% Column separator lines.
/column_lines {
  gsave
    .1 setlinewidth
    0 d_footer_h translate
    /cw d_output_w cols div def
    1 1 cols 1 sub {
      cw mul 0 moveto
      0 d_output_h rlineto stroke
    } for
  grestore
} def

% Column borders.
/column_borders {
  gsave
    .1 setlinewidth
    0 d_footer_h moveto
    0 d_output_h rlineto
    d_output_w 0 rlineto
    0 d_output_h neg rlineto
    closepath stroke
  grestore
} def

% Do the actual underlay drawing
/draw_underlay {
  ul_style 0 eq {
    ul_str true charpath stroke
  } {
    ul_str show
  } ifelse
} def

% Underlay
/underlay {	% - -> -
  gsave
    0 d_page_h translate
    d_page_h neg d_page_w atan rotate

    ul_gray setgray
    ul_font setfont
    /dw d_page_h dup mul d_page_w dup mul add sqrt def
    ul_str stringwidth pop dw exch sub 2 div ul_h_ptsize -2 div moveto
    draw_underlay
  grestore
} def

/user_underlay {	% - -> -
  gsave
    ul_x ul_y translate
    ul_angle rotate
    ul_gray setgray
    ul_font setfont
    0 0 ul_h_ptsize 2 div sub moveto
    draw_underlay
  grestore
} def

% Page prefeed
/page_prefeed {		% bool -> -
  statusdict /prefeed known {
    statusdict exch /prefeed exch put
  } {
    pop
  } ifelse
} def

% Wrapped line markers
/wrapped_line_mark {	% x y charwith charheight type -> -
  /type exch def
  /h exch def
  /w exch def
  /y exch def
  /x exch def

  type 2 eq {
    % Black boxes (like TeX does)
    gsave
      0 setlinewidth
      x w 4 div add y M
      0 h rlineto w 2 div 0 rlineto 0 h neg rlineto
      closepath fill
    grestore
  } {
    type 3 eq {
      % Small arrows
      gsave
        .2 setlinewidth
        x w 2 div add y h 2 div add M
        w 4 div 0 rlineto
        x w 4 div add y lineto stroke

        x w 4 div add w 8 div add y h 4 div add M
        x w 4 div add y lineto
	w 4 div h 8 div rlineto stroke
      grestore
    } {
      % do nothing
    } ifelse
  } ifelse
} def

% EPSF import.

/BeginEPSF {
  /b4_Inc_state save def    		% Save state for cleanup
  /dict_count countdictstack def	% Count objects on dict stack
  /op_count count 1 sub def		% Count objects on operand stack
  userdict begin
  /showpage { } def
  0 setgray 0 setlinecap
  1 setlinewidth 0 setlinejoin
  10 setmiterlimit [ ] 0 setdash newpath
  /languagelevel where {
    pop languagelevel
    1 ne {
      false setstrokeadjust false setoverprint
    } if
  } if
} bind def

/EndEPSF {
  count op_count sub { pos } repeat	% Clean up stacks
  countdictstack dict_count sub { end } repeat
  b4_Inc_state restore
} bind def

% Check PostScript language level.
/languagelevel where {
  pop /gs_languagelevel languagelevel def
} {
  /gs_languagelevel 1 def
} ifelse
%%EndResource
%%BeginResource: procset Enscript-Encoding-88591 1.6 1
/encoding_vector [
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/space        	/exclam       	/quotedbl     	/numbersign   	
/dollar       	/percent      	/ampersand    	/quoteright   	
/parenleft    	/parenright   	/asterisk     	/plus         	
/comma        	/hyphen       	/period       	/slash        	
/zero         	/one          	/two          	/three        	
/four         	/five         	/six          	/seven        	
/eight        	/nine         	/colon        	/semicolon    	
/less         	/equal        	/greater      	/question     	
/at           	/A            	/B            	/C            	
/D            	/E            	/F            	/G            	
/H            	/I            	/J            	/K            	
/L            	/M            	/N            	/O            	
/P            	/Q            	/R            	/S            	
/T            	/U            	/V            	/W            	
/X            	/Y            	/Z            	/bracketleft  	
/backslash    	/bracketright 	/asciicircum  	/underscore   	
/quoteleft    	/a            	/b            	/c            	
/d            	/e            	/f            	/g            	
/h            	/i            	/j            	/k            	
/l            	/m            	/n            	/o            	
/p            	/q            	/r            	/s            	
/t            	/u            	/v            	/w            	
/x            	/y            	/z            	/braceleft    	
/bar          	/braceright   	/tilde        	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/space        	/exclamdown   	/cent         	/sterling     	
/currency     	/yen          	/brokenbar    	/section      	
/dieresis     	/copyright    	/ordfeminine  	/guillemotleft	
/logicalnot   	/hyphen       	/registered   	/macron       	
/degree       	/plusminus    	/twosuperior  	/threesuperior	
/acute        	/mu           	/paragraph    	/bullet       	
/cedilla      	/onesuperior  	/ordmasculine 	/guillemotright	
/onequarter   	/onehalf      	/threequarters	/questiondown 	
/Agrave       	/Aacute       	/Acircumflex  	/Atilde       	
/Adieresis    	/Aring        	/AE           	/Ccedilla     	
/Egrave       	/Eacute       	/Ecircumflex  	/Edieresis    	
/Igrave       	/Iacute       	/Icircumflex  	/Idieresis    	
/Eth          	/Ntilde       	/Ograve       	/Oacute       	
/Ocircumflex  	/Otilde       	/Odieresis    	/multiply     	
/Oslash       	/Ugrave       	/Uacute       	/Ucircumflex  	
/Udieresis    	/Yacute       	/Thorn        	/germandbls   	
/agrave       	/aacute       	/acircumflex  	/atilde       	
/adieresis    	/aring        	/ae           	/ccedilla     	
/egrave       	/eacute       	/ecircumflex  	/edieresis    	
/igrave       	/iacute       	/icircumflex  	/idieresis    	
/eth          	/ntilde       	/ograve       	/oacute       	
/ocircumflex  	/otilde       	/odieresis    	/divide       	
/oslash       	/ugrave       	/uacute       	/ucircumflex  	
/udieresis    	/yacute       	/thorn        	/ydieresis    	
] def
%%EndResource
%%EndProlog
%%BeginSetup
%%IncludeResource: font Courier-Bold
%%IncludeResource: font Courier
/HFpt_w 10 def
/HFpt_h 10 def
/Courier-Bold /HF-gs-font MF
/HF /HF-gs-font findfont [HFpt_w 0 0 HFpt_h 0 0] makefont def
/Courier /F-gs-font MF
/F-gs-font 10 10 SF
/#copies 1 def
% Pagedevice definitions:
gs_languagelevel 1 gt {
  <<
    /PageSize [612 792] 
  >> setpagedevice
} if
/d_page_w 564 def
/d_page_h 744 def
/d_header_x 0 def
/d_header_y 744 def
/d_header_w 564 def
/d_header_h 0 def
/d_footer_x 0 def
/d_footer_y 0 def
/d_footer_w 564 def
/d_footer_h 0 def
/d_output_w 564 def
/d_output_h 744 def
/cols 1 def
%%EndSetup
%%Page: (1) 1
%%BeginPageSetup
_S
24 24 translate
/pagenum 1 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 731 M
(Internet Engineering Task Force                                  A. Jain) s
5 720 M
(INTERNET-DRAFT                                               F5 Networks) s
5 709 M
(draft-amit-quick-start-03.txt                                   S. Floyd) s
5 698 M
(Expires: March 2005                                            M. Allman) s
5 687 M
(                                                                    ICIR) s
5 676 M
(                                                            P. Sarolahti) s
5 665 M
(                                                  Nokia / Univ. Helsinki) s
5 654 M
(                                                       25 September 2004) s
5 621 M
(                       Quick-Start for TCP and IP) s
5 588 M
(Status of this Memo) s
5 566 M
(    By submitting this Internet-Draft, we certify that any applicable) s
5 555 M
(    patent or other IPR claims of which we are aware have been) s
5 544 M
(    disclosed, or will be disclosed, and any of which we become aware) s
5 533 M
(    will be disclosed, in accordance with RFC 3668 \(BCP 79\).) s
5 511 M
(    By submitting this Internet-Draft, we accept the provisions of) s
5 500 M
(    Section 3 of RFC 3667 \(BCP 78\).) s
5 478 M
(    Internet-Drafts are working documents of the Internet Engineering) s
5 467 M
(    Task Force \(IETF\), its areas, and its working groups. Note that) s
5 456 M
(    other groups may also distribute working documents as Internet-) s
5 445 M
(    Drafts.) s
5 423 M
(    Internet-Drafts are draft documents valid for a maximum of six) s
5 412 M
(    months and may be updated, replaced, or obsoleted by other documents) s
5 401 M
(    at any time. It is inappropriate to use Internet- Drafts as) s
5 390 M
(    reference material or to cite them other than as "work in progress.") s
5 368 M
(    The list of current Internet-Drafts can be accessed at) s
5 357 M
(    http://www.ietf.org/ietf/1id-abstracts.txt) s
5 335 M
(    The list of Internet-Draft Shadow Directories can be accessed at) s
5 324 M
(    http://www.ietf.org/shadow.html.) s
5 302 M
(Abstract) s
5 269 M
(    This draft specifies an optional Quick-Start mechanism for transport) s
5 258 M
(    protocols, in cooperation with routers, to determine an allowed) s
5 247 M
(    sending rate at the start and at times in the middle of a data) s
5 203 M
(Jain/Floyd/Allman/Sarolahti                                     [Page 1]) s
_R
S
%%Page: (2) 2
%%BeginPageSetup
_S
24 24 translate
/pagenum 2 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    transfer.  While Quick-Start is designed to be used by a range of) s
5 676 M
(    transport protocols, in this document we describe its use with TCP.) s
5 665 M
(    By using Quick-Start, a TCP host, say, host A, would indicate its) s
5 654 M
(    desired sending rate in bytes per second, using a Quick Start) s
5 643 M
(    Request option in the IP header of a TCP packet.  A Quick-Start) s
5 632 M
(    request for a higher sending rate would be sent in a TCP packet.) s
5 621 M
(    Each router along the path could, in turn, either approve the) s
5 610 M
(    requested rate, reduce the requested rate, or indicate that the) s
5 599 M
(    Quick-Start request is not approved.  If the Quick-Start request is) s
5 588 M
(    not approved, then the sender would use the default congestion) s
5 577 M
(    control mechanisms.  The Quick-Start mechanism can determine if) s
5 566 M
(    there are routers along the path that do not understand the Quick-) s
5 555 M
(    Start Request option, or have not agreed to the Quick-Start rate) s
5 544 M
(    request.  TCP host B communicates the final rate request to TCP host) s
5 533 M
(    A in a transport-level Quick-Start Response in an answering TCP) s
5 522 M
(    packet.  Quick-Start is designed to allow connections to use higher) s
5 511 M
(    sending rates when there is significant unused bandwidth along the) s
5 500 M
(    path, and all of the routers along the path support the Quick-Start) s
5 489 M
(    Request.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                     [Page 2]) s
_R
S
%%Page: (3) 3
%%BeginPageSetup
_S
24 24 translate
/pagenum 3 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    TO BE DELETED BY THE RFC EDITOR UPON PUBLICATION:) s
5 665 M
(     Changes from draft-amit-quick-start-02.txt:) s
5 654 M
(     * Added a discussion on Using Quick-Start in the Middle of a) s
5 643 M
(       Connection.  The request would be on the total rate,) s
5 632 M
(       not on the additional rate.) s
5 621 M
(     * Changed name "Initial Rate" to "Rate Request", and changed) s
5 610 M
(       the units from packets per second to bytes per second.) s
5 599 M
(     * The following sections are new:) s
5 588 M
(       - The Quick-Start Request Option for IPv6) s
5 577 M
(       - Quick-Start in IP Tunnels) s
5 566 M
(       - When to Use Quick-Start) s
5 555 M
(       - TCP: Responding to a Loss of a Quick-Start Packet) s
5 544 M
(       - TCP: A Quick-Start Request for a Larger Initial Window) s
5 533 M
(       - TCP: A Quick-Start Request after an Idle Period) s
5 522 M
(       - The Quick-Start Mechanisms in DCCP and other Transport) s
5 511 M
(         Protocols) s
5 500 M
(       - Quick-Start with DCCP) s
5 489 M
(       - Implementation and Deployment Issues) s
5 478 M
(       - Design Decisions) s
5 467 M
(     * Added a discussion of Kunniyur's Anti-ECN proposal.) s
5 456 M
(     * Added a section on simulations, with a brief discussion of the) s
5 445 M
(       simulations by Srikanth Sundarrajan.) s
5 423 M
(     Changes from draft-amit-quick-start-01.txt:) s
5 412 M
(     * Added a discussion in the related work section about the) s
5 401 M
(       possibility of optimistically sending a large initial window,) s
5 390 M
(       without explicit permission of routers.) s
5 379 M
(     * Added a discussion in the related work section about the) s
5 368 M
(       tradeoffs of XCP vs. Quick-Start.) s
5 357 M
(     * Added a section on "The Quick-Start Request: Packets or Bytes?") s
5 335 M
(     Changes from draft-amit-quick-start-00.txt:) s
5 324 M
(     * The addition of a citation to [KHR02].) s
5 313 M
(     * The addition of a Related Work section.) s
5 302 M
(     * Deleted the QS Nonce, in favor of a random initial value for the) s
5 291 M
(       QS TTL.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                     [Page 3]) s
_R
S
%%Page: (4) 4
%%BeginPageSetup
_S
24 24 translate
/pagenum 4 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(                             Table of Contents) s
5 665 M
(    1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . .   6) s
5 654 M
(    2. Assumptions and General Principles. . . . . . . . . . . . . .   7) s
5 643 M
(       2.1. Overview of Quick-Start. . . . . . . . . . . . . . . . .   8) s
5 632 M
(    3. The Quick-Start Request in IP . . . . . . . . . . . . . . . .  11) s
5 621 M
(       3.1. The Quick-Start Request Option for IPv4. . . . . . . . .  11) s
5 610 M
(       3.2. The Quick-Start Request Option for IPv6. . . . . . . . .  13) s
5 599 M
(       3.3. Processing the Quick-Start Request at) s
5 588 M
(       Routers . . . . . . . . . . . . . . . . . . . . . . . . . . .  14) s
5 577 M
(       3.4. Deciding the Permitted Rate Request at a) s
5 566 M
(       Router. . . . . . . . . . . . . . . . . . . . . . . . . . . .  15) s
5 555 M
(       3.5. Quick-Start in IP Tunnels. . . . . . . . . . . . . . . .  15) s
5 544 M
(    4. The Quick-Start Mechanisms in TCP . . . . . . . . . . . . . .  17) s
5 533 M
(       4.1. When to Use Quick-Start. . . . . . . . . . . . . . . . .  18) s
5 522 M
(       4.2. The Quick-Start Response Option in the TCP) s
5 511 M
(       header. . . . . . . . . . . . . . . . . . . . . . . . . . . .  19) s
5 500 M
(       4.3. TCP: Sending the Quick-Start Response. . . . . . . . . .  20) s
5 489 M
(       4.4. TCP: Receiving and Using the Quick-Start) s
5 478 M
(       Response Packet . . . . . . . . . . . . . . . . . . . . . . .  20) s
5 467 M
(       4.5. TCP: Responding to a Loss of a Quick-Start) s
5 456 M
(       Packet. . . . . . . . . . . . . . . . . . . . . . . . . . . .  21) s
5 445 M
(       4.6. TCP: A Quick-Start Request for a Larger Ini-) s
5 434 M
(       tial Window . . . . . . . . . . . . . . . . . . . . . . . . .  22) s
5 423 M
(       4.7. TCP: A Quick-Start Request after an Idle) s
5 412 M
(       Period. . . . . . . . . . . . . . . . . . . . . . . . . . . .  24) s
5 401 M
(       4.8. An Example Quick-Start Scenario with TCP . . . . . . . .  25) s
5 390 M
(    5. The Quick-Start Mechanism in other Transport Pro-) s
5 379 M
(    tocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25) s
5 368 M
(       5.1. Quick-Start with DCCP. . . . . . . . . . . . . . . . . .  26) s
5 357 M
(    6. Evaluation of Quick-Start . . . . . . . . . . . . . . . . . .  28) s
5 346 M
(       6.1. Benefits of Quick-Start. . . . . . . . . . . . . . . . .  28) s
5 335 M
(       6.2. Costs of Quick-Start . . . . . . . . . . . . . . . . . .  29) s
5 324 M
(       6.3. Protection against Misbehaving Nodes . . . . . . . . . .  30) s
5 313 M
(       6.4. Quick-Start with QoS-enabled Traffic . . . . . . . . . .  33) s
5 302 M
(       6.5. Limitations of Quick-Start . . . . . . . . . . . . . . .  33) s
5 291 M
(       6.6. Simulations with Quick-Start . . . . . . . . . . . . . .  34) s
5 280 M
(    7. Related Work. . . . . . . . . . . . . . . . . . . . . . . . .  34) s
5 269 M
(       7.1. Fast Start-ups without Explicit Information) s
5 258 M
(       from Routers. . . . . . . . . . . . . . . . . . . . . . . . .  34) s
5 247 M
(       7.2. Optimistic Sending without Explicit Informa-) s
5 236 M
(       tion from Routers . . . . . . . . . . . . . . . . . . . . . .  35) s
5 225 M
(       7.3. Fast Start-ups with other Information from) s
5 214 M
(       Routers . . . . . . . . . . . . . . . . . . . . . . . . . . .  36) s
5 203 M
(       7.4. Fast Start-ups with more Fine-Grained Feed-) s
5 192 M
(       back from Routers . . . . . . . . . . . . . . . . . . . . . .  37) s
5 181 M
(    8. Implementation and Deployment Issues. . . . . . . . . . . . .  37) s
5 170 M
(       8.1. Implementation Issues for Sending Quick-) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                     [Page 4]) s
_R
S
%%Page: (5) 5
%%BeginPageSetup
_S
24 24 translate
/pagenum 5 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(       Start Requests. . . . . . . . . . . . . . . . . . . . . . . .  38) s
5 676 M
(       8.2. Implementation Issues for Processing Quick-) s
5 665 M
(       Start Requests. . . . . . . . . . . . . . . . . . . . . . . .  38) s
5 654 M
(       8.3. Possible Deployment Scenarios. . . . . . . . . . . . . .  38) s
5 643 M
(       8.4. Would QuickStart packets take the slow path) s
5 632 M
(       in routers? . . . . . . . . . . . . . . . . . . . . . . . . .  39) s
5 621 M
(       8.5. A Comparison with the Deployment Problems of) s
5 610 M
(       ECN . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40) s
5 599 M
(    9. Security Considerations . . . . . . . . . . . . . . . . . . .  40) s
5 588 M
(    10. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . .  40) s
5 577 M
(    11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .  41) s
5 566 M
(    A. Design Decisions. . . . . . . . . . . . . . . . . . . . . . .  41) s
5 555 M
(       A.1. Alternate Mechanisms for the Quick-Start) s
5 544 M
(       Request: ICMP and RSVP. . . . . . . . . . . . . . . . . . . .  41) s
5 533 M
(          A.1.1. ICMP. . . . . . . . . . . . . . . . . . . . . . . .  41) s
5 522 M
(          A.1.2. RSVP. . . . . . . . . . . . . . . . . . . . . . . .  42) s
5 511 M
(       A.2. Alternate Encoding Functions . . . . . . . . . . . . . .  43) s
5 500 M
(       A.3. The Quick-Start Request: Packets or Bytes? . . . . . . .  44) s
5 489 M
(       A.4. Quick-Start Semantics: Total Rate or Addi-) s
5 478 M
(       tional Rate?. . . . . . . . . . . . . . . . . . . . . . . . .  46) s
5 467 M
(       A.5. Alternate Responses to the Loss of a Quick-) s
5 456 M
(       Start Packet. . . . . . . . . . . . . . . . . . . . . . . . .  46) s
5 445 M
(       A.6. Why Not Include More Functionality?. . . . . . . . . . .  47) s
5 434 M
(       A.7. A QuickStart Nonce?. . . . . . . . . . . . . . . . . . .  49) s
5 423 M
(    Normative References . . . . . . . . . . . . . . . . . . . . . .  50) s
5 412 M
(    Informative References . . . . . . . . . . . . . . . . . . . . .  51) s
5 401 M
(    IANA Considerations. . . . . . . . . . . . . . . . . . . . . . .  53) s
5 390 M
(    AUTHORS' ADDRESSES . . . . . . . . . . . . . . . . . . . . . . .  54) s
5 379 M
(    Full Copyright Statement . . . . . . . . . . . . . . . . . . . .  54) s
5 368 M
(    Intellectual Property. . . . . . . . . . . . . . . . . . . . . .  54) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                     [Page 5]) s
_R
S
%%Page: (6) 6
%%BeginPageSetup
_S
24 24 translate
/pagenum 6 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(1.  Introduction) s
5 654 M
(    Each TCP connection begins with a question: "What is the appropriate) s
5 643 M
(    sending rate for the current network path?"  The question is not) s
5 632 M
(    answered explicitly for TCP, but each TCP connection determines the) s
5 621 M
(    sending rate by probing the network path and altering the congestion) s
5 610 M
(    window \(cwnd\) based on perceived congestion.  Each connection starts) s
5 599 M
(    with a pre-configured initial congestion window \(ICW\).  Currently,) s
5 588 M
(    TCP allows an initial window of between one and four MSS-sized) s
5 577 M
(    segments [RFC2581,RFC3390].  The TCP connection then probes the) s
5 566 M
(    network for available bandwidth using the slow-start procedure) s
5 555 M
(    [Jac88,RFC2581], doubling cwnd during each congestion-free round-) s
5 544 M
(    trip time \(RTT\).) s
5 522 M
(    The slow-start algorithm can be time-consuming --- especially over) s
5 511 M
(    networks with large bandwidth or long delays.  It may take a number) s
5 500 M
(    of RTTs in slow-start before the TCP connection begins to fully use) s
5 489 M
(    the available bandwidth of the network.  For instance, it takes) s
5 478 M
(    log_2\(N\) - 2 round-trip times to build cwnd up to N segments,) s
5 467 M
(    assuming an initial congestion window of 4 segments.  This time in) s
5 456 M
(    slow-start is not a problem for large file transfers, where the) s
5 445 M
(    slow-start stage is only a fraction of the total transfer time.) s
5 434 M
(    However, in the case of moderate-sized web transfers the connection) s
5 423 M
(    might carry out its entire transfer in the slow-start phase, taking) s
5 412 M
(    many round-trip times, where one or two RTTs might have been) s
5 401 M
(    sufficient.) s
5 379 M
(    A fair amount of work has already been done to address the issue of) s
5 368 M
(    choosing the initial congestion window for TCP, with RFC 3390) s
5 357 M
(    allowing an initial window of up to four segments based on the MSS) s
5 346 M
(    used by the connection [RFC3390].  Our underlying premise is that) s
5 335 M
(    explicit feedback from all of the routers along the path would be) s
5 324 M
(    required, in the current architecture, for best-effort connections) s
5 313 M
(    to use initial windows significantly larger than those allowed by) s
5 302 M
(    [RFC3390], in the absence of other information about the path.) s
5 280 M
(    The Congestion Manager [RFC3124] and TCP control block sharing) s
5 269 M
(    [RFC2140] both propose sharing congestion information among multiple) s
5 258 M
(    TCP connections with the same endpoints.  With the Congestion) s
5 247 M
(    Manager, a new TCP connection could start with a high initial cwnd) s
5 236 M
(    if it was sharing the path and the cwnd with a pre-existing TCP) s
5 225 M
(    connection to the same destination that had already obtained a high) s
5 214 M
(    congestion window.  RFC 2140 discusses ensemble sharing, where an) s
5 203 M
(    established connection's congestion window could be `divided up' to) s
5 192 M
(    be shared with a new connection to the same host.  However, neither) s
5 181 M
(    of these approaches addresses the case of a connection to a new) s
5 170 M
(    destination, with no existing or recent connection \(and therefore) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                         Section 1.  [Page 6]) s
_R
S
%%Page: (7) 7
%%BeginPageSetup
_S
24 24 translate
/pagenum 7 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    congestion control state\) to that destination.) s
5 665 M
(    Quick-Start would not be the first mechanism for explicit) s
5 654 M
(    communication from routers to transport protocols about sending) s
5 643 M
(    rates.  Explicit Congestion Notification \(ECN\) gives explicit) s
5 632 M
(    congestion control feedback from routers to transport protocols,) s
5 621 M
(    based on the router detecting congestion before buffer overflow) s
5 610 M
(    [RFC3168].  In contrast, routers do not use Quick-Start to get) s
5 599 M
(    congestion information, but instead use Quick-Start as an optional) s
5 588 M
(    mechanism to give permission to transport protocols to use higher) s
5 577 M
(    sending rates, based on the ability of all the routers along the) s
5 566 M
(    path to determine if their respective output links are significantly) s
5 555 M
(    underutilized.) s
5 522 M
(2.  Assumptions and General Principles) s
5 500 M
(    This section describes the assumptions and general principles behind) s
5 489 M
(    the design of the Quick-Start mechanism.) s
5 467 M
(    Assumptions:) s
5 445 M
(    * The data transfer in the two directions of a connection traverses) s
5 434 M
(    different queues, and possibly even different routers.  Thus, any) s
5 423 M
(    mechanism for determining the allowed sending rate would have to be) s
5 412 M
(    used independently for each direction.) s
5 390 M
(    * The path between the two endpoints is relatively stable, such that) s
5 379 M
(    the path used by the Quick-Start request is generally the same path) s
5 368 M
(    used by the Quick-Start packets one round-trip time later.) s
5 346 M
(    * Any new mechanism must be incrementally deployable, and might not) s
5 335 M
(    be supported by all of the routers and/or end-hosts.  Thus, any new) s
5 324 M
(    mechanism must be able to accommodate non-supporting routers or end-) s
5 313 M
(    hosts without disturbing the current Internet semantics.) s
5 291 M
(    General Principles:) s
5 269 M
(    * Our underlying premise is that explicit feedback from all of the) s
5 258 M
(    routers along the path would be required, in the current) s
5 247 M
(    architecture, for best-effort connections to use initial windows) s
5 236 M
(    significantly larger than those allowed by [RFC3390], in the absence) s
5 225 M
(    of other information about the path.) s
5 203 M
(    * A router should only approve a request for a higher sending rate) s
5 192 M
(    if the output link is underutilized.  Any other approach will result) s
5 181 M
(    in either per-flow state at the router, or the possibility of a) s
5 170 M
(    \(possibly transient\) queue at the router.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                         Section 2.  [Page 7]) s
_R
S
%%Page: (8) 8
%%BeginPageSetup
_S
24 24 translate
/pagenum 8 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    * No per-flow state should be required at the router.) s
5 665 M
(    There are also a number of questions regarding the Quick-Start) s
5 654 M
(    mechanism that are discussed later in this document.) s
5 632 M
(    Open Questions:) s
5 610 M
(    * Would the benefits of the Quick-Start mechanism be worth the added) s
5 599 M
(    complexity?) s
5 577 M
(    The benefits and drawbacks of Quick-Start are discussed in more) s
5 566 M
(    detail in Section 6 on "Evaluation of Quick-Start".) s
5 544 M
(    * A practical consideration is that packets with known and unknown) s
5 533 M
(    IP options are often dropped in the current Internet [MAF04].) s
5 511 M
(    This does not preclude using Quick-Start in Intranets.  Further,) s
5 500 M
(    [MAF04] also shows that over time the blocking of packets) s
5 489 M
(    negotiating ECN has dropped, and therefore an incremental deployment) s
5 478 M
(    story for Quick-Start based on IP Options is not out of the) s
5 467 M
(    question.  Appendix A.1 on "Alternate Mechanisms for the Quick-Start) s
5 456 M
(    Request" discusses the possibility of using RSVP or ICMP instead of) s
5 445 M
(    IP Options for carrying Quick-Start Requests to routers.) s
5 423 M
(    * Apart from the merits and shortcomings of the Quick-Start) s
5 412 M
(    mechanism, is there likely to be a compelling need to add explicit) s
5 401 M
(    congestion-related feedback from routers over and above the one-bit) s
5 390 M
(    feedback from ECN?) s
5 368 M
(    If the answer to the question above is yes, should we be considering) s
5 357 M
(    mechanisms that, while more complex, are also sufficiently more) s
5 346 M
(    powerful than Quick-Start?  This is discussed further in Appendix) s
5 335 M
(    A.6 on "Why Not Include More Functionality".) s
5 302 M
(2.1.  Overview of Quick-Start) s
5 280 M
(    In this section we give an overview of the use of Quick-Start with) s
5 269 M
(    TCP, used to request a higher congestion window.  The description in) s
5 258 M
(    this section is non-normative; the normative description of Quick-) s
5 247 M
(    Start with IP and TCP follows in Sections 3 and 4. Quick-Start can) s
5 236 M
(    be used in the middle of a connection, e.g., after an idle or) s
5 225 M
(    underutilized period, as well as for the initial sending rate; these) s
5 214 M
(    uses of Quick-Start are discussed later in the document.) s
5 192 M
(    Quick-Start requires end-points and routers to work together, with) s
5 181 M
(    end-points requesting a higher sending rate in the Quick-Start) s
5 170 M
(    Request \(QSR\) option in IP, and routers along the path approving,) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                       Section 2.1.  [Page 8]) s
_R
S
%%Page: (9) 9
%%BeginPageSetup
_S
24 24 translate
/pagenum 9 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    modifying, discarding or ignoring \(and therefore disallowing\) the) s
5 676 M
(    Quick-Start Request.  The receiver uses reliable, transport-level) s
5 665 M
(    mechanisms to inform the sender of the status of the Quick-Start) s
5 654 M
(    Request.  In addition, Quick-Start assumes a unicast, congestion-) s
5 643 M
(    controlled transport protocol; we do not consider the use of Quick-) s
5 632 M
(    Start for multicast traffic.) s
5 610 M
(    The Quick-Start Request Option includes a request for a sending rate) s
5 599 M
(    in bytes per second, and a Quick-Start TTL \(QS TTL\) to be) s
5 588 M
(    decremented by every router along the path that understands the) s
5 577 M
(    option and approves the request.  The Quick-Start TTL is initialized) s
5 566 M
(    by the sender to a random value.  The transport receiver returns the) s
5 555 M
(    rate and information about the TTL to the sender using transport-) s
5 544 M
(    level mechanisms.  In particular, the receiver computes the) s
5 533 M
(    difference between the Quick-Start TTL and the TTL in the IP header) s
5 522 M
(    of the Quick-Start request packet, and returns this in the Quick-) s
5 511 M
(    Start response.  The sender uses this information to determine if) s
5 500 M
(    all of the routers along the path decremented the Quick-Start TTL,) s
5 489 M
(    approving the Quick-Start Request.) s
5 467 M
(    If the request is approved by all of the routers along the path,) s
5 456 M
(    then the TCP sender combines this allowed rate with the measurement) s
5 445 M
(    of the round-trip time, and ends up with an allowed TCP window.) s
5 434 M
(    This window is sent rate-paced over the round-trip time, or until an) s
5 423 M
(    ACK packet is received.) s
5 401 M
(    Figure 1 shows a successful use of Quick-Start, with both routers) s
5 390 M
(    along the path approving the Quick-Start Request.  In this example,) s
5 379 M
(    Quick-Start is used by TCP to establish the initial congestion) s
5 368 M
(    window.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                       Section 2.1.  [Page 9]) s
_R
S
%%Page: (10) 10
%%BeginPageSetup
_S
24 24 translate
/pagenum 10 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(            Sender        Router 1       Router 2          Receiver) s
5 676 M
(            ------        --------       --------          --------) s
5 665 M
(          | Quick-Start Request) s
5 654 M
(          | in SYN or SYN/ACK -->) s
5 643 M
(          |) s
5 632 M
(          |               Decrement) s
5 621 M
(          |               QS TTL) s
5 610 M
(          |               to approve) s
5 599 M
(          |               request -->) s
5 588 M
(          |) s
5 577 M
(          |                              Decrement) s
5 566 M
(          |                              QS TTL) s
5 555 M
(          |                              to approve) s
5 544 M
(          |                              request -->) s
5 533 M
(          |) s
5 522 M
(          |                                           Return Quick-Start) s
5 511 M
(          |                                            info to sender in) s
5 500 M
(          |                                          <-- TCP ACK packet.) s
5 489 M
(          |) s
5 478 M
(          | Quick-Start approved,) s
5 467 M
(          | translate to cwnd.) s
5 456 M
(          V Send cwnd paced over one RTT. -->) s
5 434 M
(                    Figure 1: A successful Quick-Start Request.) s
5 401 M
(    Figure 2 shows an unsuccessful use of Quick-Start, with one of the) s
5 390 M
(    routers along the path not approving the Quick-Start Request.  If) s
5 379 M
(    the Quick-Start Request is not approved, then the sender uses the) s
5 368 M
(    default congestion control mechanisms for that transport protocol,) s
5 357 M
(    including the default initial congestion window, response to idle) s
5 346 M
(    periods, etc.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 2.1.  [Page 10]) s
_R
S
%%Page: (11) 11
%%BeginPageSetup
_S
24 24 translate
/pagenum 11 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(            Sender        Router 1       Router 2          Receiver) s
5 676 M
(            ------        --------       --------          --------) s
5 665 M
(          | Quick-Start Request) s
5 654 M
(          | in SYN or SYN/ACK -->) s
5 643 M
(          |) s
5 632 M
(          |               Decrement) s
5 621 M
(          |               QS TTL) s
5 610 M
(          |               to approve) s
5 599 M
(          |               request -->) s
5 588 M
(          |) s
5 577 M
(          |                              Forward packet) s
5 566 M
(          |                              without modifying) s
5 555 M
(          |                              Quick-Start Option. -->) s
5 544 M
(          |) s
5 533 M
(          |                                           Return Quick-Start) s
5 522 M
(          |                                            info to sender in) s
5 511 M
(          |                                          <-- TCP ACK packet.) s
5 500 M
(          |) s
5 489 M
(          | Quick-Start not approved.) s
5 478 M
(          V Use default initial cwnd. -->) s
5 456 M
(                    Figure 2: An unsuccessful Quick-Start Request.) s
5 401 M
(3.  The Quick-Start Request in IP) s
5 368 M
(3.1.  The Quick-Start Request Option for IPv4) s
5 346 M
(    The Quick-Start Request for IPv4 is defined as follows:) s
5 324 M
(            0          1          2          3) s
5 313 M
(       +----------+----------+----------+----------+) s
5 302 M
(       | Option   | Length=4 |  QS TTL  | Rate     |) s
5 291 M
(       |          |          |          | Request  |) s
5 280 M
(       +----------+----------+----------+----------+) s
5 258 M
(       Figure 1.  The Quick-Start Request Option for IPv4.) s
5 236 M
(    The first byte contains the option field, which includes the one-bit) s
5 225 M
(    copy flag, the 2-bit class field, and the 5-bit option number \(to be) s
5 214 M
(    assigned by IANA\).) s
5 192 M
(    The second byte contains the length field, indicating an option) s
5 181 M
(    length of four bytes.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.1.  [Page 11]) s
_R
S
%%Page: (12) 12
%%BeginPageSetup
_S
24 24 translate
/pagenum 12 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    The third byte contains the Quick-Start TTL \(QS TTL\) field.  The) s
5 676 M
(    sender sets the QS TTL field to a random value.  Routers that) s
5 665 M
(    approve the Quick-Start Request decrement the QS TTL \(mod 256\).  The) s
5 654 M
(    QS TTL is used by the sender to detect if all of the routers along) s
5 643 M
(    the path understood and approved the Quick-Start option.) s
5 621 M
(    The transport sender also calculates and remembers the TTL Diff, the) s
5 610 M
(    difference between the IP TTL value and the QS TTL value in the) s
5 599 M
(    Quick-Start request packet, as follows:) s
5 577 M
(    TTL Diff = \( IP TTL - QS TTL \) mod 256.                         \(1\)) s
5 555 M
(    The fourth byte is the Rate Request field.  The sender initializes) s
5 544 M
(    the Rate Request to the desired sending rate, including an estimate) s
5 533 M
(    of the transport and IP header overhead.) s
5 511 M
(    Our current proposal for an encoding function uses only the first) s
5 500 M
(    four bits of the fourth byte, leaving the other four bits reserved) s
5 489 M
(    for future use.  The encoding function sets the request rate to) s
5 478 M
(    K*2^N bps, for N the value in the Rate Request field, and for K set) s
5 467 M
(    to 40,000.  For N=0, the rate request would be set to zero,) s
5 456 M
(    regardless of the encoding function.  This is illustrated in the) s
5 445 M
(    table below.  For a four-bit Rate Request field, the request range) s
5 434 M
(    would be from 80 Kbps to 1.3 Gbps.  Alternate encodings for the Rate) s
5 423 M
(    Request are given in Appendix A.2.) s
5 401 M
(          N     Rate Request \(in Kbps\)) s
5 390 M
(         ---    -------------------) s
5 379 M
(          0            0) s
5 368 M
(          1           80) s
5 357 M
(          2          160) s
5 346 M
(          3          320) s
5 335 M
(          4          640) s
5 324 M
(          5        1,280) s
5 313 M
(          6        2,560) s
5 302 M
(          7        5,120) s
5 291 M
(          8       10,240) s
5 280 M
(          9       20,480) s
5 269 M
(         10       40,960) s
5 258 M
(         11       81,920) s
5 247 M
(         12      163,840) s
5 236 M
(         13      327,680) s
5 225 M
(         14      655,360) s
5 214 M
(         15    1,310,720) s
5 192 M
(         Mapping from the Rate Request field to the rate request in Kbps.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.1.  [Page 12]) s
_R
S
%%Page: (13) 13
%%BeginPageSetup
_S
24 24 translate
/pagenum 13 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Routers can approve the Quick-Start Request for a lower rate by) s
5 676 M
(    decreasing the Rate Request in the Quick-Start Request.) s
5 654 M
(    We note that unlike a Quick-Start Request sent at the beginning of a) s
5 643 M
(    connection, when a Quick-Start Request is sent in the middle of a) s
5 632 M
(    connection, the connection could already have an established) s
5 621 M
(    congestion window or sending rate.  The Rate Request is the) s
5 610 M
(    requested total rate for the connection, including the current rate) s
5 599 M
(    of the connection; the Rate Request is *not* a request for an) s
5 588 M
(    additional sending rate over and above the current sending rate.  If) s
5 577 M
(    the Rate Request is denied, or lowered to a value below the) s
5 566 M
(    connection's current sending rate, then the sender can ignore the) s
5 555 M
(    request, and revert to the default congestion control mechanisms of) s
5 544 M
(    the transport protocol.) s
5 522 M
(    In IPv4, a change in IP options at routers requires recalculating) s
5 511 M
(    the IP header checksum.) s
5 478 M
(3.2.  The Quick-Start Request Option for IPv6) s
5 456 M
(    The Quick-Start Request Option for IPv6 is placed in the Hop-by-Hop) s
5 445 M
(    Options extension header that is processed at every network node) s
5 434 M
(    along the communication path [RFC 2460]. The option format following) s
5 423 M
(    the generic Hop-by-Hop Options header is similar to the IPv4 format) s
5 412 M
(    with the exception that the Length field should exclude the common) s
5 401 M
(    type and length fields in the option format and be set to 2.) s
5 379 M
(            0          1          2          3) s
5 368 M
(       +----------+----------+----------+----------+) s
5 357 M
(       | Option   | Length=2 |  QS TTL  | Rate     |) s
5 346 M
(       |          |          |          | Request  |) s
5 335 M
(       +----------+----------+----------+----------+) s
5 313 M
(       Figure 2.  The Quick-Start Request Option for IPv6.) s
5 291 M
(    The transport receiver compares the Quick-Start TTL with the IPv6) s
5 280 M
(    Hop Limit field in order to calculate the TTL Diff.  \(The Hop Limit) s
5 269 M
(    in IPv6 is the equivalent of the TTL in IPv6.\)  That is, TTL Diff is) s
5 258 M
(    calculated as follows:) s
5 236 M
(    TTL Diff = \( IPv6 Hop Limit - QS TTL \) mod 256.) s
5 225 M
(    \(1\)) s
5 203 M
(    Unlike IPv4, modifying or deleting the Quick-Start Request IPv6) s
5 192 M
(    Option does not require checksum re-calculation, because the IPv6) s
5 181 M
(    header does not have a checksum field, and modifying the Quick-Start) s
5 170 M
(    Request in the IPv6 Hop-by-Hop options header does not affect the) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.2.  [Page 13]) s
_R
S
%%Page: (14) 14
%%BeginPageSetup
_S
24 24 translate
/pagenum 14 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    IPv6 pseudo-header checksum used in upper-layer checksum) s
5 676 M
(    calculations.) s
5 654 M
(    Note that [RFC2460] specifies that when a specific flow label has) s
5 643 M
(    been assigned to packets, the contents of the Hop-by-Hop options,) s
5 632 M
(    excluding the next header field, must originate with the same) s
5 621 M
(    contents throughout the IP flow lifetime.  This requirement would) s
5 610 M
(    have to be modified to implement Quick-Start on an IPv6) s
5 599 M
(    implementation that uses flow labels, because the Quick-Start) s
5 588 M
(    Request option would be included in only a small fraction of the) s
5 577 M
(    packets during a flow lifetime.) s
5 544 M
(3.3.  Processing the Quick-Start Request at Routers) s
5 522 M
(    Each participating router can either terminate or forward the Quick-) s
5 511 M
(    Start Request.  The router terminates the Quick-Start Request if the) s
5 500 M
(    router is not underutilized, and therefore has decided not to grant) s
5 489 M
(    the Quick-Start Request.) s
5 467 M
(    The preferable method for a router to terminate the Quick-Start) s
5 456 M
(    Request is to delete the Quick-Start Request from the IP header.  A) s
5 445 M
(    less preferable but possibly more efficient method is to simply) s
5 434 M
(    forward the packet with the Quick-Start Request unchanged, or with) s
5 423 M
(    the Rate Request set to zero.) s
5 401 M
(    If the participating router has decided to approve the Quick-Start) s
5 390 M
(    Request, it does the following:) s
5 368 M
(    * It decrements the QS TTL by one.) s
5 346 M
(    * If the router is only willing to approve an Rate Request less than) s
5 335 M
(    that in the Quick-Start Request, then the router puts the smaller) s
5 324 M
(    Rate Request in that field of the Quick-Start Request.  The router) s
5 313 M
(    MUST NOT increase the Rate Request in the Quick-Start Request.) s
5 291 M
(    * In IPv4, it updates the IP header checksum.) s
5 269 M
(    A non-participating router forwards the Quick-Start Request) s
5 258 M
(    unchanged, without decrementing the QS TTL.  Of course, the non-) s
5 247 M
(    participating router still decrements the TTL field in the IP) s
5 236 M
(    header, as is required for all routers [RFC1812].  As a result, the) s
5 225 M
(    TCP sender will be able to detect that the Quick-Start Request had) s
5 214 M
(    not been understood or approved by all of the routers along the) s
5 203 M
(    path.) s
5 181 M
(    A router that modifies or deletes the Quick-Start Request in the) s
5 170 M
(    IPv4 header also has to update the IPv4 Header checksum.  For IPv6,) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.3.  [Page 14]) s
_R
S
%%Page: (15) 15
%%BeginPageSetup
_S
24 24 translate
/pagenum 15 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    no checksum updates are needed.) s
5 654 M
(3.4.  Deciding the Permitted Rate Request at a Router) s
5 632 M
(    In this section we briefly outline how a router might decide whether) s
5 621 M
(    or not to approve a Quick-Start Request.  As an example, the router) s
5 610 M
(    could ask the following questions:) s
5 588 M
(    * Has the router's output link been underutilized for some time) s
5 577 M
(    \(e.g., several seconds\).) s
5 555 M
(    * Would the output link remain underutilized if the arrival rate was) s
5 544 M
(    to increase by the aggregate rate requests that the router has) s
5 533 M
(    approved over the last fraction of a second?) s
5 511 M
(    Answering this question requires that the router have some knowledge) s
5 500 M
(    of the available bandwidth on the output link for that output queue.) s
5 489 M
(    It also requires that the router keep two counters, one indicating) s
5 478 M
(    the total aggregate Rate Requests that have been approved over the) s
5 467 M
(    recent interval of time, and one for the total aggregate Rate) s
5 456 M
(    Requests approved over the previous interval of time.  Thus, if an) s
5 445 M
(    underutilized router experiences a SYN flood, then the router would) s
5 434 M
(    begin to deny Rate Request requests, even if the router remains) s
5 423 M
(    underutilized.) s
5 401 M
(    * If the router's output link has been underutilized and the) s
5 390 M
(    aggregate Quick Start Request Rate options granted is low enough to) s
5 379 M
(    prevent a near-term bandwidth shortage, then the router could) s
5 368 M
(    approve the Quick-Start Request.  The router could allow an Rate) s
5 357 M
(    Request that was a small fraction of the available unused bandwidth) s
5 346 M
(    of the output link.) s
5 313 M
(3.5.  Quick-Start in IP Tunnels) s
5 291 M
(    In this section we consider the effect of IP tunnels on Quick-Start.) s
5 280 M
(    In the discussion, we use TTL Diff, defined earlier as the) s
5 269 M
(    difference between the IP TTL and the Quick-Start TTL, mod 256.) s
5 258 M
(    Recall that the sender considers the Quick-Start request approved if) s
5 247 M
(    the value of TTL Diff for the packet entering the network is the) s
5 236 M
(    same as the value of TTL Diff for the packet exiting the network.) s
5 214 M
(    There are two legitimate ways for handling the Quick-Start Request) s
5 203 M
(    with IP tunnels:) s
5 181 M
(    \(1\) The tunnel ingress node does not support Quick-Start, or does) s
5 170 M
(    not approve the Quick-Start request. The node could strip the Quick-) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.5.  [Page 15]) s
_R
S
%%Page: (16) 16
%%BeginPageSetup
_S
24 24 translate
/pagenum 16 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Start Request option from the IP header before encapsulation.) s
5 676 M
(    Alternately, the ingress node can decrement the IP TTL before) s
5 665 M
(    encapsulation, while leaving the Quick-Start TTL unchanged, changing) s
5 654 M
(    TTL Diff.  This is the assumed behavior of current IP tunnels that) s
5 643 M
(    are not aware of Quick-Start.) s
5 621 M
(    For a tunnel ingress node that does not support Quick-Start,) s
5 610 M
(    problems with a Quick-Start Request could still occur if a tunnel) s
5 599 M
(    discards the outer header at egress and does not decrement the inner) s
5 588 M
(    IP TTL at the ingress.  In this case, if both the inner IP TTL and) s
5 577 M
(    the Quick-Start TTL are decremented after decapsulation at a Quick-) s
5 566 M
(    Start aware egress, or if neither is decremented at the egress, then) s
5 555 M
(    TTL Diff would be the same after egress as it was before ingress, so) s
5 544 M
(    that it would wrongly appear that all the routers in the tunnel had) s
5 533 M
(    approved the Quick-Start request.  Fortunately, we are not aware of) s
5 522 M
(    tunnel technologies that operate this way; to the best of our) s
5 511 M
(    knowledge, all tunnels decrement the IP TTL either at the ingress) s
5 500 M
(    before encapsulation, or at the egress router after decapsulation,) s
5 489 M
(    thus changing TTL Diff.) s
5 467 M
(    Even the extreme case when the tunnel ingress is at the TCP sender) s
5 456 M
(    and the tunnel egress is at the TCP receiver, our assumption is that) s
5 445 M
(    the IP TTL will be decremented either at the tunnel ingress or at) s
5 434 M
(    the tunnel egress, changing TTL Diff and preventing the end-nodes) s
5 423 M
(    from wrongly inferring that the Quick-Start Request was approved by) s
5 412 M
(    all of the routers along the path.  If there are tunnels where the) s
5 401 M
(    IP TTL in not decremented, perhaps for PPP over SSH, then additional) s
5 390 M
(    attention will have to be paid to the robustness of Quick-Start in) s
5 379 M
(    these environments.) s
5 357 M
(    A Quick-Start aware egress must also make sure that the Quick-Start) s
5 346 M
(    Request is not approved if for some reason the inner header includes) s
5 335 M
(    the Quick-Start Request option, but the outer header does not.  In) s
5 324 M
(    this case the egress node should remove the Quick-Start Request) s
5 313 M
(    option from the inner header after decapsulation.  Alternately, the) s
5 302 M
(    egress node could decrement the Rate Request in the Quick-Start) s
5 291 M
(    Request option to zero.) s
5 269 M
(    \(2\) The tunnel ingress node may choose to support Quick-Start, and) s
5 258 M
(    locally approve the Quick-Start Request.  In this case the IP TTL) s
5 247 M
(    and Quick-Start option must be copied from the inner IP header to) s
5 236 M
(    the outer header at the tunnel ingress. Upon decapsulation, the IP) s
5 225 M
(    TTL and the Quick-Start option in the outer IP header must be copied) s
5 214 M
(    back to the inner header.  If the ingress router decrements the IP) s
5 203 M
(    TTL in the inner header before encapsulation, or in the outer header) s
5 192 M
(    after encapsulation, then if the ingress router wishes to approve) s
5 181 M
(    the Quick-Start request, it must decrement the Quick-Start TTL at) s
5 170 M
(    the same time, so as not to change TTL Diff.  Similarly, if the) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 3.5.  [Page 16]) s
_R
S
%%Page: (17) 17
%%BeginPageSetup
_S
24 24 translate
/pagenum 17 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    egress router wishes to approve the Quick-Start request, then when) s
5 676 M
(    it decrements the IP TTL in the outer header before decapsulation,) s
5 665 M
(    or in the inner header after decapsulation, it must decrement the) s
5 654 M
(    Quick-Start TTL at the same time.) s
5 632 M
(    A tunnel ingress node can support a Quick-Start request without) s
5 621 M
(    explicitly verifying that the tunnel egress also supports Quick-) s
5 610 M
(    Start.  All that the ingress node has to do is to decrement the IP) s
5 599 M
(    TTL, but not the Quick-Start TTL, in the inner header after) s
5 588 M
(    encapsulation.  In this case, if the egress node simply discards the) s
5 577 M
(    outer header at the egress point, TTL Diff will be different after) s
5 566 M
(    the tunnel egress than it was at the tunnel ingress, and the Quick-) s
5 555 M
(    Start will not be considered by the end-nodes as having been) s
5 544 M
(    approved in the network.  Thus, the tunnel ingress node on its own) s
5 533 M
(    can provide protection against egress nodes that might discard the) s
5 522 M
(    outer header at the egress point.) s
5 489 M
(4.  The Quick-Start Mechanisms in TCP) s
5 467 M
(    This section describes how the Quick-Start mechanism would be used) s
5 456 M
(    in TCP.  We first sketch the procedure and then tightly define it in) s
5 445 M
(    the subsequent subsections.) s
5 423 M
(    If a TCP sender, say host A, would like to use Quick-Start, the TCP) s
5 412 M
(    sender puts the requested sending rate in bytes per second,) s
5 401 M
(    appropriately formatted, in the Quick-Start Request option in the IP) s
5 390 M
(    header of the TCP packet, called the Quick-Start request packet.) s
5 379 M
(    \(We will be somewhat loose in our use of "packet" vs. "segment" in) s
5 368 M
(    this section.\)  For initial start-up, the Quick-Start request packet) s
5 357 M
(    can be either the SYN or SYN/ACK packet, as described above.  The) s
5 346 M
(    requested rate includes an estimate for the transport and IP header) s
5 335 M
(    overhead.  The TCP receiver, say host B, returns the Quick-Start) s
5 324 M
(    Response option in the TCP header in the responding SYN/ACK packet) s
5 313 M
(    or ACK packet, called the Quick-Start response packet, informing) s
5 302 M
(    host A of the results of their request.) s
5 280 M
(    If the acknowledging packet does not contain a Quick-Start Response,) s
5 269 M
(    or contains a Quick-Start Response with the wrong value for the TTL) s
5 258 M
(    Diff, then host A MUST assume that its Quick-Start request failed.) s
5 247 M
(    In this case, host A uses TCP's default congestion control) s
5 236 M
(    procedure.  For initial start-up, host A uses the default initial) s
5 225 M
(    congestion window.) s
5 203 M
(    If the returning packet contains a valid Quick-Start Response, then) s
5 192 M
(    host A uses the information in the response, along with its) s
5 181 M
(    measurement of the round-trip time, to determine the Quick-Start) s
5 170 M
(    congestion window \(QS-cwnd\).  Quick-Start packets are defined as) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                        Section 4.  [Page 17]) s
_R
S
%%Page: (18) 18
%%BeginPageSetup
_S
24 24 translate
/pagenum 18 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    packets sent as the result of a successful Quick-Start request, up) s
5 676 M
(    to the time when the first Quick-Start packet is acknowledged.  In) s
5 665 M
(    order to use Quick-Start, the TCP host is also required to use rate-) s
5 654 M
(    based pacing to pace out Quick-Start packets at the rate indicated) s
5 643 M
(    in the Quick-Start Response.) s
5 621 M
(    The two TCP end-hosts can independently decide whether to request) s
5 610 M
(    Quick-Start.  For example, host A could sent a Quick-Start Request) s
5 599 M
(    in the SYN packet, and host B could also send a Quick-Start Request) s
5 588 M
(    in the SYN/ACK packet.) s
5 555 M
(4.1.  When to Use Quick-Start) s
5 533 M
(    In addition to the use of Quick-Start when a connection is) s
5 522 M
(    established, there are several additional points in a connection) s
5 511 M
(    when a transport protocol may want to issue a Rate Request.  We) s
5 500 M
(    first re-iterate the notion that Quick-Start is a coarse-grained) s
5 489 M
(    mechanism.  That is, Quick-Start's Rate Requests are not meant to be) s
5 478 M
(    used for fine-grained control of the transport's sending rate.) s
5 467 M
(    Rather, the transport can issue a Rate Request when no information) s
5 456 M
(    about the appropriate sending rate is available, and the default) s
5 445 M
(    congestion control mechanisms might be significantly underestimating) s
5 434 M
(    the appropriate sending rate.) s
5 412 M
(    The following are the potential points where Quick-Start may be) s
5 401 M
(    useful:) s
5 368 M
(        \(1\) At connection initiation when the transport has no idea of) s
5 357 M
(        the capacity of the network, as discussed above.  \(A transport) s
5 346 M
(        that uses TCP Control Block sharing, the Congestion Manager, or) s
5 335 M
(        the like may not need Quick-Start to determine an appropriate) s
5 324 M
(        rate.\)) s
5 291 M
(        \(2\) After a lengthy idle period when the transport no longer has) s
5 280 M
(        a validated estimate of the available bandwidth for this flow.) s
5 247 M
(        \(3\) After a host has been explicitly informed that a link in the) s
5 236 M
(        path has gone down and has come back up.  In this case, the) s
5 225 M
(        network has changed in unknown ways and the sender has lost its) s
5 214 M
(        validated assessment of the appropriate sending rate.) s
5 181 M
(        \(4\) After a host has received explicit indications that one of) s
5 170 M
(        the endpoints has moved its point of network attachment.  This) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.1.  [Page 18]) s
_R
S
%%Page: (19) 19
%%BeginPageSetup
_S
24 24 translate
/pagenum 19 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(        can happen due to some underlying mobility mechanism like Mobile) s
5 676 M
(        IP [RFC3344,RFC3775].  Some transports, such as SCTP [RFC2960],) s
5 665 M
(        may associate with multiple IP addresses and can switch) s
5 654 M
(        addresses \(and, therefore network paths\) in mid-connection.  If) s
5 643 M
(        the transport has concrete knowledge of a changing network path) s
5 632 M
(        then the current sending rate may not be appropriate and the) s
5 621 M
(        transport sender may use Quick-Start to probe the network for) s
5 610 M
(        the appropriate rate at which to send.  \(Alternatively,) s
5 599 M
(        traditional slow start should be used in this case when Quick-) s
5 588 M
(        Start is not available.\)) s
5 555 M
(        \(5\) After an application-limited period when the sender has been) s
5 544 M
(        using only a small amount of its appropriate share of the) s
5 533 M
(        network capacity, and has no valid estimate for its fair share.) s
5 522 M
(        In this case, Quick-Start may be an appropriate mechanism to) s
5 511 M
(        assess the available capacity on the network path.) s
5 478 M
(    Of the above, this document recommends that a TCP MAY attempt to use) s
5 467 M
(    Quick-Start in cases \(1\) and \(2\).  Cases \(3\) and \(4\) require) s
5 456 M
(    external notifications not presently defined for TCP or other) s
5 445 M
(    transport protocols.  Case \(5\) requires further thought and) s
5 434 M
(    investigation with regard to how the transport protocol could detect) s
5 423 M
(    it was in a situation that would warrant transmitting a Quick-Start) s
5 412 M
(    Rate Request.) s
5 368 M
(4.2.  The Quick-Start Response Option in the TCP header) s
5 346 M
(    TCP's Quick-Start Response option is defined as follows:) s
5 324 M
(            0          1          2          3) s
5 313 M
(       +----------+----------+----------+----------+) s
5 302 M
(       |  Kind    | Length=4 |  Rate    |   TTL    |) s
5 291 M
(       |          |          | Request  |   Diff   |) s
5 280 M
(       +----------+----------+----------+----------+) s
5 258 M
(       Figure 2.  The Quick-Start Response option in the TCP header.) s
5 236 M
(    The first byte of the Quick-Start Response option contains the) s
5 225 M
(    option kind, identifying the TCP option \(to be assigned by IANA\).) s
5 203 M
(    The second byte of the Quick-Start Response option contains the) s
5 192 M
(    option length in bytes.  The length field is set to four bytes.) s
5 170 M
(    The third byte of the Quick-Start Response option contains the) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.2.  [Page 19]) s
_R
S
%%Page: (20) 20
%%BeginPageSetup
_S
24 24 translate
/pagenum 20 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    allowed Rate Request, formatted as in the Quick-Start Request) s
5 676 M
(    option.) s
5 654 M
(    The fourth byte of the TCP option contains the TTL Diff.  The TTL) s
5 643 M
(    Diff contains the difference between the IP TTL and QS TTL fields in) s
5 632 M
(    the received Quick-Start request packet, as calculated in equation) s
5 621 M
(    \(1\).) s
5 588 M
(4.3.  TCP: Sending the Quick-Start Response) s
5 566 M
(    An end host, say host B, that receives a TCP packet containing a) s
5 555 M
(    Quick-Start Request passes the Quick-Start Request, along with the) s
5 544 M
(    value in the IP TTL field, to the receiving TCP layer.) s
5 522 M
(    If the TCP host is willing to permit the Quick-Start Request, then a) s
5 511 M
(    Quick-Start Response option is included in the TCP header of the) s
5 500 M
(    corresponding acknowledgement packet.  The Rate Request in the) s
5 489 M
(    Quick-Start Response option is set to the received value of the Rate) s
5 478 M
(    Request in the Quick-Start Request option, or to a lower value if) s
5 467 M
(    the TCP receiver is only willing to allow a lower Rate Request.  The) s
5 456 M
(    TTL Diff in the Quick-Start Response is set to the difference) s
5 445 M
(    between the IP TTL value and the QS TTL value as given in equation) s
5 434 M
(    \(1\).) s
5 412 M
(    When the Quick-Start Response is being sent on the SYN/ACK, in) s
5 401 M
(    response to a Quick-Start Request on the SYN, then the Quick-Start) s
5 390 M
(    Response will be resent if the SYN/ACK is retransmitted.  When the) s
5 379 M
(    Quick-Start Response is being sent on an ACK, for example in) s
5 368 M
(    response to the Quick-Start Request on the SYN/ACK, then the Quick-) s
5 357 M
(    Start Response MUST be resent on data packets until that TCP host) s
5 346 M
(    receives an acknowledgement from the other endpoint.) s
5 313 M
(4.4.  TCP: Receiving and Using the Quick-Start Response Packet) s
5 291 M
(    A TCP host, say TCP host A, that sent a Quick-Start Request and) s
5 280 M
(    receives an answering Quick-Start Response in the acknowledgement) s
5 269 M
(    first checks that the Quick-Start Response is valid.  The Quick-) s
5 258 M
(    Start Response is valid if it contains the correct value for the TTL) s
5 247 M
(    Diff, and an equal or lesser value for the Rate Request than that) s
5 236 M
(    transmitted in the Quick-Start Request.  If this check is not) s
5 225 M
(    successful, then the Quick-Start request failed, and the TCP host) s
5 214 M
(    MUST use the default TCP congestion window that it would have used) s
5 203 M
(    without Quick-Start.) s
5 181 M
(    If the checks of the TTL Diff and the Rate Request are successful,) s
5 170 M
(    then the TCP host sets its Quick-Start congestion window \(in terms) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.4.  [Page 20]) s
_R
S
%%Page: (21) 21
%%BeginPageSetup
_S
24 24 translate
/pagenum 21 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    of MSS-sized segments\), QS_cwnd, as follows:) s
5 665 M
(    QS_cwnd = \(R * T\) / \(MSS + H\)                                \(2\)) s
5 643 M
(    where R the Rate Request in bytes per second, T the measured round-) s
5 632 M
(    trip time in seconds, and H the estimated header size in bytes) s
5 621 M
(    \(e.g., 40 bytes\).  [Derivation: the sender gets R bytes per second) s
5 610 M
(    including packet headers, but only R*MSS/\(MSS+H\) bytes per second,) s
5 599 M
(    or equivalently R*T*MSS/\(MSS+H\) bytes per round-trip time, of) s
5 588 M
(    application data.]  The TCP host sets its congestion window cwnd to) s
5 577 M
(    QS-cwnd only if QS-cwnd is greater than cwnd; otherwise QS-cwnd is) s
5 566 M
(    ignored.  If QS-cwnd is used, the TCP host sets a flag that it is in) s
5 555 M
(    Quick-Start mode, and while in Quick-Start mode the TCP sender uses) s
5 544 M
(    rate-based pacing, pacing out Quick-Start packets at the specified) s
5 533 M
(    Rate Request.  Quick-Start mode ends when the TCP host receives an) s
5 522 M
(    ACK for one of the Quick-Start packets.) s
5 500 M
(    Because the Quick-Start request packet might not have used the fast) s
5 489 M
(    path in routers, the round-trip time measurement for the Quick-Start) s
5 478 M
(    request might be unnecessarily large.  If the congestion window has) s
5 467 M
(    not been fully used when the first ack arrives ending the Quick-) s
5 456 M
(    Start mode, then the congestion window is decreased to the amount) s
5 445 M
(    that has actually been used so far.  This should address the problem) s
5 434 M
(    of an overly-large congestion window from an overly-large) s
5 423 M
(    measurement of the round-trip time.) s
5 401 M
(    If the Quick-Start mode ends with all Quick-Start packets being) s
5 390 M
(    successfully acknowledged, the TCP sender returns to using the) s
5 379 M
(    default congestion control mechanisms.  After all the packets are) s
5 368 M
(    acknowledged from a Quick-Start request for an initial window, for) s
5 357 M
(    example, the TCP sender remains in slow-start, if permitted by) s
5 346 M
(    ssthresh, continuing to increase its congestion window rather) s
5 335 M
(    aggressively from one round-trip time to the next.  To add) s
5 324 M
(    robustness, the TCP sender is required to use Limited Slow-Start) s
5 313 M
(    along with Quick-Start.  With Limited Slow-Start, the TCP sender) s
5 302 M
(    limits the number of packets by which the congestion window is) s
5 291 M
(    increased for one window of data during slow-start [F02a].) s
5 258 M
(4.5.  TCP: Responding to a Loss of a Quick-Start Packet) s
5 236 M
(    For TCP, we have defined a ``Quick-Start packet'' as one of the) s
5 225 M
(    packets sent in the window immediately following a successful Quick-) s
5 214 M
(    Start request.  After detecting the loss of a Quick-Start packet,) s
5 203 M
(    TCP MUST revert to the default congestion control procedures that) s
5 192 M
(    would have been used if the Quick-Start request had not been) s
5 181 M
(    approved.  For example, if Quick-Start is used for setting the) s
5 170 M
(    initial window, and a packet from the initial window is lost, then) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.5.  [Page 21]) s
_R
S
%%Page: (22) 22
%%BeginPageSetup
_S
24 24 translate
/pagenum 22 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    the TCP sender must then slow-start with the default initial window) s
5 676 M
(    that would have been used if Quick-Start had not been used.  In) s
5 665 M
(    addition to reverting to the default congestion control mechanisms,) s
5 654 M
(    the sender must take into account that the Quick-Start congestion) s
5 643 M
(    window was too large.  Thus, the sender should decrease ssthresh to) s
5 632 M
(    at most half the number of Quick-Start packets that were) s
5 621 M
(    successfully transmitted.  Section A.5 discusses possible) s
5 610 M
(    alternatives in responding to the loss of a Quick-Start packet.) s
5 577 M
(4.6.  TCP: A Quick-Start Request for a Larger Initial Window) s
5 555 M
(    Some of the issues of using Quick-Start are related to the specific) s
5 544 M
(    scenario in which Quick-Start is used.  This section discusses the) s
5 533 M
(    following issues that arise when Quick-Start is used by TCP to) s
5 522 M
(    request a larger initial window: \(1\) determining the rate to) s
5 511 M
(    request; \(2\) interactions with Path MTU Discovery; and \(3\) Quick-) s
5 500 M
(    Start request packets that are eaten by middleboxes.) s
5 478 M
(    \(1\) Determining the rate to request:) s
5 467 M
(    When Quick-Start is requested by TCP connections at web servers \(or) s
5 456 M
(    at server-related middleboxes\), the web server knows the amount of) s
5 445 M
(    data ready to be transferred, along with the history of successful) s
5 434 M
(    and unsuccessful Quick-Start requests, and can use this information) s
5 423 M
(    in choosing Rate Requests.  In the absence of other information,) s
5 412 M
(    there could be a configured value for the Quick-Start Rate Request.) s
5 401 M
(    Quick-Start will be more effective if Quick-Start requests are not) s
5 390 M
(    larger than necessary;  every Quick-Start request that is approved) s
5 379 M
(    but not used takes away from the bandwidth pool available for) s
5 368 M
(    granting successive Quick-Start requests.  Therefore, it is) s
5 357 M
(    recommended that the request for the initial sending rate be) s
5 346 M
(    somewhat conservative, in order to improve the chances for more) s
5 335 M
(    Quick-Start requests to be approved.) s
5 313 M
(    \(2\) Interactions with Path MTU Discovery:) s
5 302 M
(    A second issue when Quick-Start is used to request a large initial) s
5 291 M
(    window concerns the interactions between the large initial window) s
5 280 M
(    and Path MTU Discovery.  Some of the issues are discussed in RFC) s
5 269 M
(    3390:) s
5 236 M
(        "When larger initial windows are implemented along with Path MTU) s
5 225 M
(        Discovery [RFC1191], alternatives are to set the "Don't) s
5 214 M
(        Fragment" \(DF\) bit in all segments in the initial window, or to) s
5 203 M
(        set the "Don't Fragment" \(DF\) bit in one of the segments.  It is) s
5 192 M
(        an open question as to which of these two alternatives is best.") s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.6.  [Page 22]) s
_R
S
%%Page: (23) 23
%%BeginPageSetup
_S
24 24 translate
/pagenum 23 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Unfortunately, the sender doesn't necessarily know the Path MTU when) s
5 676 M
(    it sends packets in the initial window.  The sender should be) s
5 665 M
(    conservative in the packet size used.  Sending a large number of) s
5 654 M
(    overly-large packets with the DF bit set is not desirable, but) s
5 643 M
(    sending a large number of packets that are fragmented in the network) s
5 632 M
(    can be equally undesirable.) s
5 610 M
(    One possibility would be for the sender to delay using the approved) s
5 599 M
(    rate request for one round-trip time, while it sends a small number) s
5 588 M
(    of packets to do Path MTU Discovery.  While delaying the use of an) s
5 577 M
(    approved rate request indefinitely is not acceptable, delaying the) s
5 566 M
(    use for one round-trip time is within the bounds of acceptable) s
5 555 M
(    behavior.) s
5 533 M
(    In the future, it might be possible for the TCP SYN packet to do a) s
5 522 M
(    probe about the Path MTU.  For example, [W03] has proposed an IP) s
5 511 M
(    Option that queries routers for their MTU before starting a Path MTU) s
5 500 M
(    Discovery process.) s
5 478 M
(    \(3\) Quick-Start request packets that are eaten by middleboxes:) s
5 467 M
(    It is always possible for a TCP SYN packet carrying a Quick-Start) s
5 456 M
(    request to be dropped in the network due to congestion, or to be) s
5 445 M
(    blocked due to interactions with middleboxes.  Measurement studies) s
5 434 M
(    of interactions between transport protocols and middleboxes [MAF04]) s
5 423 M
(    show that for 70% of the web servers investigated, no connection is) s
5 412 M
(    established if the TCP SYN packet contains an unknown IP option \(and) s
5 401 M
(    for 43% of the web servers, no connection is established if the TCP) s
5 390 M
(    SYN packet contains an IP TimeStamp Option\).  In both cases, this is) s
5 379 M
(    presumably due to middleboxes along that path.) s
5 357 M
(    If the TCP sender doesn't receive a response to the SYN or SYN/ACK) s
5 346 M
(    packet containing the Quick-Start Request, then the TCP sender) s
5 335 M
(    SHOULD resend the SYN or SYN/ACK packet without the Quick-Start) s
5 324 M
(    Request.  Similarly, if the TCP sender receives a TCP reset in) s
5 313 M
(    response to the SYN or SYN/ACK packet containing the Quick-Start) s
5 302 M
(    Request, then the TCP sender SHOULD resend the SYN or SYN/ACK packet) s
5 291 M
(    without the Quick-Start Request [RFC3360].) s
5 269 M
(    While RFC 1122 and 2988 recommend that the sender should set the) s
5 258 M
(    initial RTO to three seconds, many TCP implementations set the) s
5 247 M
(    initial RTO to one second.  For a TCP SYN packet sent with a Quick-) s
5 236 M
(    Start request, we recommend an RTO of one second, so that the sender) s
5 225 M
(    can retransmit the SYN packet reasonably promptly if the original) s
5 214 M
(    TCP SYN packet is dropped by a middlebox in the network.) s
5 192 M
(    We note that if the TCP SYN packet is using the IP Quick-Start) s
5 181 M
(    Option for a Quick-Start request, and it also using bits in the TCP) s
5 170 M
(    header to negotiate ECN-capability with the TCP host at the other) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.6.  [Page 23]) s
_R
S
%%Page: (24) 24
%%BeginPageSetup
_S
24 24 translate
/pagenum 24 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    end, then the drop of a TCP SYN packet could be due to congestion,) s
5 676 M
(    to a middlebox dropping the packet because of the IP Option, or) s
5 665 M
(    because of a middlebox dropping the packet because of the) s
5 654 M
(    information in the TCP header negotiating ECN.  In this case, the) s
5 643 M
(    sender could resend the dropped packet without either the Quick-) s
5 632 M
(    Start or the ECN requests.  Alternately, the sender could resend the) s
5 621 M
(    dropped packet with only the ECN request in the TCP header,) s
5 610 M
(    resending the TCP SYN packet without either the Quick-Start or the) s
5 599 M
(    ECN requests if the second TCP SYN packet is dropped.  The second) s
5 588 M
(    choice seems reasonable to us, given that a TCP SYN packet today is) s
5 577 M
(    more likely to be blocked due to IP Options than due to an ECN) s
5 566 M
(    request in the TCP header.) s
5 533 M
(4.7.  TCP: A Quick-Start Request after an Idle Period) s
5 511 M
(    This section discusses the following issues that arise when Quick-) s
5 500 M
(    Start is used by TCP to request a larger window after an idle) s
5 489 M
(    period: \(1\) determining the rate to request; and \(2\) the response if) s
5 478 M
(    Quick-Start packets are dropped;) s
5 456 M
(    \(1\) Determining the rate to request:) s
5 445 M
(    After an idle period, an easy rule of thumb would be for the TCP) s
5 434 M
(    sender to determine the largest congestion window that the TCP) s
5 423 M
(    connection achieved since the last packet drop, to translate this) s
5 412 M
(    congestion window to a sending rate, and use this rate in the Quick-) s
5 401 M
(    Start request after the idle period.  If the request is granted,) s
5 390 M
(    then the sender essentially restarts with its old congestion window) s
5 379 M
(    from before the idle period.) s
5 357 M
(    The sender should not use Quick-Start if the idle period has been) s
5 346 M
(    less than an RTO, and the congestion window has not decayed down to) s
5 335 M
(    less than half of its value at the start of the idle period.) s
5 313 M
(    \(2\) Response if Quick-Start packets are dropped:) s
5 302 M
(    If Quick-Start packets are dropped after an idle period, then the) s
5 291 M
(    sender should revert to half of the Quick-Start window, or to the) s
5 280 M
(    congestion window that the sender would have used if the Quick-Start) s
5 269 M
(    request had not been approved, whichever is smaller.) s
5 247 M
(    A technical question is whether a Quick-Start Request sent in the) s
5 236 M
(    middle of a connection could carry a data payload.  For example, for) s
5 225 M
(    TCP, a Quick-Start Request in the middle of a connection could carry) s
5 214 M
(    a data payload, or could be in a TCP acknowledgement packet.  Is) s
5 203 M
(    there any advice in this regard that should be offered to the) s
5 192 M
(    transport protocol?) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 4.7.  [Page 24]) s
_R
S
%%Page: (25) 25
%%BeginPageSetup
_S
24 24 translate
/pagenum 25 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(4.8.  An Example Quick-Start Scenario with TCP) s
5 665 M
(    The following is an example scenario in the case when both hosts) s
5 654 M
(    request Quick-Start for setting their initial windows:) s
5 632 M
(    * The TCP SYN packet from Host A contains a Quick-Start Request in) s
5 621 M
(    the IP header.) s
5 599 M
(    * Routers along the forward path modify the Quick-Start Request as) s
5 588 M
(    appropriate.) s
5 566 M
(    * Host B receives the Quick-Start Request in the SYN packet, and) s
5 555 M
(    calculates the TTL Diff.  If Host B approves the Quick-Start) s
5 544 M
(    Request, then Host B sends a Quick-Start Response in the TCP header) s
5 533 M
(    of the SYN/ACK packet.  Host B also sends a Quick-Start Request in) s
5 522 M
(    the IP header of the SYN/ACK packet.) s
5 500 M
(    * Routers along the reverse path modify the Quick-Start Request as) s
5 489 M
(    appropriate.) s
5 467 M
(    * Host A receives the Quick-Start Response in the SYN/ACK packet,) s
5 456 M
(    and checks the TTL Diff and Rate Request for validity.  If they are) s
5 445 M
(    valid, then Host A sets its initial congestion window appropriately,) s
5 434 M
(    and sets up rate-based pacing to be used with the initial window.) s
5 423 M
(    If the Quick-Start Response is not valid, then Host A uses TCP's) s
5 412 M
(    default initial window.) s
5 390 M
(    Host A also calculates the TTL Diff for the Quick-Start Request in) s
5 379 M
(    the incoming SYN/ACK packet, and sends a Quick-Start Response in the) s
5 368 M
(    TCP header of the ACK packet.) s
5 346 M
(    * Host A repeats sending the Quick-Start Response in data packets at) s
5 335 M
(    least once per round-trip time until it receives an acknowledgement) s
5 324 M
(    from Host B for one of those data packets.) s
5 302 M
(    * Host B receives the Quick-Start Response in an ACK packet, and) s
5 291 M
(    checks the TTL Diff and Rate Request for validity.  If the Quick-) s
5 280 M
(    Start Response is valid, then Host B sets its initial congestion) s
5 269 M
(    window appropriately, and sets up rate-based pacing to be used with) s
5 258 M
(    its initial window.  If the Quick-Start Response is not valid, then) s
5 247 M
(    Host B uses TCP's default initial window.) s
5 214 M
(5.  The Quick-Start Mechanism in other Transport Protocols) s
5 192 M
(    The section earlier specified the use of Quick-Start in TCP.  In) s
5 181 M
(    this section, we generalize this to give guidelines for the use of) s
5 170 M
(    Quick-Start with other transport protocols.  We also discuss briefly) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                        Section 5.  [Page 25]) s
_R
S
%%Page: (26) 26
%%BeginPageSetup
_S
24 24 translate
/pagenum 26 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    how Quick-Start could be specified for other transport protocols.) s
5 665 M
(    The general guidelines for Quick-Start in transport protocols are as) s
5 654 M
(    follows:) s
5 632 M
(    * Quick-Start is only specified for unicast transport protocols with) s
5 621 M
(    appropriate congestion control mechanisms.) s
5 599 M
(    * A transport-level mechanism is needed for the Quick-Start response) s
5 588 M
(    from the receiver to the sender.  This response contains the Rate) s
5 577 M
(    Request and the TTL Diff.  The Quick-Start response should ideally) s
5 566 M
(    be sent reliably.) s
5 544 M
(    * The sender checks the validity of the Quick-Start response.) s
5 522 M
(    * The sender has an estimate of the round-trip time, and translates) s
5 511 M
(    the Quick-Start response into an allowed window or allowed sending) s
5 500 M
(    rate.  The sender starts sending Quick-Start packets, rate-paced out) s
5 489 M
(    at the approved sending rate.) s
5 467 M
(    * After the sender receives the first acknowledgement packet for a) s
5 456 M
(    Quick-Start packet, no more Quick-Start packets are sent.  The) s
5 445 M
(    sender adjusts its current congestion window or sending rate to be) s
5 434 M
(    consistent with the actual amount of data that was transmitted in) s
5 423 M
(    that round-trip time.) s
5 401 M
(    * When the last Quick-Start packet is acknowledged, the sender) s
5 390 M
(    continues using the standard congestion control mechanisms of that) s
5 379 M
(    protocol.) s
5 357 M
(    * If one of the Quick-Start packets is lost, then the sender reverts) s
5 346 M
(    to the standard congestion control method of that protocol that) s
5 335 M
(    would have been used if the Quick-Start request had not been) s
5 324 M
(    approved.  In addition, the sender takes into account the) s
5 313 M
(    information that the Quick-Start congestion window was too large) s
5 302 M
(    \(e.g., by decreasing ssthresh in TCP\).) s
5 269 M
(5.1.  Quick-Start with DCCP) s
5 247 M
(    DCCP is a new transport protocol for congestion-controlled,) s
5 236 M
(    unreliable datagrams, intended for applications such as streaming) s
5 225 M
(    media, Internet telephony, and on-line games.  In DCCP, the) s
5 214 M
(    application has a choice of congestion control mechanisms, with the) s
5 203 M
(    currently-specified Congestion Control Identifiers \(CCIDs\) being) s
5 192 M
(    CCID 2 for TCP-like congestion control, and CCID 3 for TFRC, an) s
5 181 M
(    equation-based form of congestion control. We refer the reader to) s
5 170 M
(    [KHF04] for a more detailed description of DCCP, and of the) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 5.1.  [Page 26]) s
_R
S
%%Page: (27) 27
%%BeginPageSetup
_S
24 24 translate
/pagenum 27 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    congestion control mechanisms.) s
5 665 M
(    Because CCID 3 uses a rate-based congestion control mechanism, it) s
5 654 M
(    raises some new issues about the use of Quick-Start with transport) s
5 643 M
(    protocols.  In this document we don't attempt to specify the use of) s
5 632 M
(    Quick-Start with DCCP.  However, we do discuss some of the issues) s
5 621 M
(    that might arise.) s
5 599 M
(    In considering the use of Quick-Start with CCID 3 for requesting a) s
5 588 M
(    higher initial sending rate, the following questions arise: \(1\) how) s
5 577 M
(    does the sender respond if a Quick-Start packet is dropped; and \(2\)) s
5 566 M
(    when does the sender determine that there has been no feedback from) s
5 555 M
(    the receiver, and reduce the sending rate?) s
5 533 M
(    \(1\) How does the sender respond if a Quick-Start packet is dropped:) s
5 522 M
(    As in TCP, if an initial Quick-Start packet is dropped, the CCID 3) s
5 511 M
(    sender should revert to the congestion control mechanisms it would) s
5 500 M
(    have used if the Quick-Start request had not been approved.) s
5 478 M
(    \(2\) When does the sender decide there has been no feedback from the) s
5 467 M
(    receiver:) s
5 456 M
(    Unlike TCP, CCID 3 does not use acknowledgements for every packet,) s
5 445 M
(    or for every other packet.  In contrast, the CCID 3 receiver sends) s
5 434 M
(    feedback to the sender roughly once per round-trip time.  In CCID 3,) s
5 423 M
(    the allowed sending rate is halved if no feedback is received from) s
5 412 M
(    the receiver in at least four round-trip times \(when the sender is) s
5 401 M
(    sending at least one packet every two round-trip times\).  When a) s
5 390 M
(    Quick-Start request is used, it would seem prudent to use a smaller) s
5 379 M
(    time interval, e.g., to reduce the sending rate if no feedback is) s
5 368 M
(    received from the receiver in at least two round-trip times.) s
5 346 M
(    The question also arises of how the sending rate should be reduced) s
5 335 M
(    after a period of no feedback from the receiver.  The default CCID 3) s
5 324 M
(    response of halving the sending rate might not be sufficient; an) s
5 313 M
(    alternative would be to reduce the sending rate to the sending rate) s
5 302 M
(    that would have been used if no Quick-Start request had been) s
5 291 M
(    approved.  That is, if a CCID 3 sender uses a Quick-Start request,) s
5 280 M
(    special rules might be required to handle the sender's response to a) s
5 269 M
(    period of no feedback from the receiver regarding the Quick-Start) s
5 258 M
(    packets.) s
5 236 M
(    Similarly, in considering the use of Quick-Start with CCID 3 for) s
5 225 M
(    requesting a higher sending rate after an idle period, the following) s
5 214 M
(    questions arise: \(1\) what rate does the sender request; \(2\) what is) s
5 203 M
(    the response to a loss; and \(3\) when does the sender determine that) s
5 192 M
(    there has been no feedback from the receiver, and the sending rate) s
5 181 M
(    must be reduced?) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 5.1.  [Page 27]) s
_R
S
%%Page: (28) 28
%%BeginPageSetup
_S
24 24 translate
/pagenum 28 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    \(1\) What rate does the sender request:) s
5 676 M
(    As in TCP, there is a straightforward answer to the rate request) s
5 665 M
(    that the CCID 3 sender should use in requesting a higher sending) s
5 654 M
(    rate after an idle period.  The sender knows the current loss event) s
5 643 M
(    rate, either from its own calculations or from feedback from the) s
5 632 M
(    receiver, and can determine the sending rate allowed by that loss) s
5 621 M
(    event rate.  This is the upper bound on the sending rate that should) s
5 610 M
(    be requested by the CCID 3 sender.  A Quick-Start request is useful) s
5 599 M
(    with CCID 3 when the sender is coming out of an idle or) s
5 588 M
(    underutilized period, because in standard operation CCID 3 does not) s
5 577 M
(    allow the sender to send more that twice as fast as the receiver has) s
5 566 M
(    reported received in the most recent feedback message.) s
5 544 M
(    \(2\) What is the response to loss:) s
5 533 M
(    The response to the loss of Quick-Start packets should be to return) s
5 522 M
(    to the sending rate that would have been used if Quick-Start had not) s
5 511 M
(    been requested.) s
5 489 M
(    \(3\) When does the sender decide there has been no feedback from the) s
5 478 M
(    receiver:) s
5 467 M
(    As in the case of the initial sending rate, it would seem prudent to) s
5 456 M
(    reduce the sending rate if no feedback is received from the receiver) s
5 445 M
(    in at least two round-trip times.  It seems likely that in this) s
5 434 M
(    case, the sending rate should be reduced to the sending rate that) s
5 423 M
(    would have been used if no Quick-Start request had been approved.) s
5 390 M
(6.  Evaluation of Quick-Start) s
5 357 M
(6.1.  Benefits of Quick-Start) s
5 335 M
(    The main benefit of Quick-Start is the faster start-up for the) s
5 324 M
(    transport connection itself.  For a small TCP transfer of one to) s
5 313 M
(    five packets, Quick-Start is probably of very little benefit;  at) s
5 302 M
(    best, it might shorten the connection lifetime from three to two) s
5 291 M
(    round-trip times \(including the round-trip time for connection) s
5 280 M
(    establishment\).  Similarly, for a very large transfer, where the) s
5 269 M
(    slow-start phase would have been only a small fraction of the) s
5 258 M
(    connection lifetime, Quick-Start would be of limited benefit.) s
5 247 M
(    Quick-Start would not significantly shorten the connection lifetime,) s
5 236 M
(    but it might eliminate or at least shorten the start-up phase.) s
5 225 M
(    However, for moderate-sized connections in a well-provisioned) s
5 214 M
(    environment, Quick-Start could allow the entire transfer of M) s
5 203 M
(    packets to be completed in one round-trip time \(after the initial) s
5 192 M
(    round-trip time for the SYN exchange\), instead of the log_2\(M\)-2) s
5 181 M
(    round-trip times that it would normally for the data transfer, in an) s
5 170 M
(    uncongested environments \(assuming an initial window of four) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.1.  [Page 28]) s
_R
S
%%Page: (29) 29
%%BeginPageSetup
_S
24 24 translate
/pagenum 29 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    packets\).) s
5 654 M
(6.2.  Costs of Quick-Start) s
5 621 M
(    This section discusses the costs of Quick-Start for the connection) s
5 610 M
(    and for the routers along the path.) s
5 588 M
(    The cost of having a Quick-Start packet dropped:) s
5 577 M
(    For the sender the biggest risk in using Quick-Start lies in the) s
5 566 M
(    possibility of suffering from congestion-related losses of the) s
5 555 M
(    Quick-Start packets.  This should be an unlikely situation because) s
5 544 M
(    routers are expected to approve Quick-Start Requests only when they) s
5 533 M
(    are significantly underutilized. However, a transient increase in) s
5 522 M
(    cross-traffic in one of the routers, a sudden decrease in available) s
5 511 M
(    bandwidth on one of the links, or congestion at a non-IP queue could) s
5 500 M
(    result in packet losses even when the Quick-Start Request was) s
5 489 M
(    approved by all of the routers along the path.  If a Quick-Start) s
5 478 M
(    packet is dropped, then the sender reverts to the congestion control) s
5 467 M
(    mechanisms it would have used if the Quick-Start request has not) s
5 456 M
(    been approved, so the performance cost to the connection of having a) s
5 445 M
(    Quick-Start packet dropped is small, compared to the performance) s
5 434 M
(    without Quick-Start.  \(On the other hand, the performance difference) s
5 423 M
(    between Quick-Start with a Quick-Start packet dropped and Quick-) s
5 412 M
(    Start with no Quick-Start packet dropped can be considerable.\)) s
5 390 M
(    Added complexity at routers:) s
5 379 M
(    The main cost of Quick-Start at routers concerns the costs of added) s
5 368 M
(    complexity.  The added complexity at the end-points is moderate, and) s
5 357 M
(    might easily be outweighed by the benefit of Quick-Start to the end) s
5 346 M
(    hosts.  The added complexity at the routers is also somewhat) s
5 335 M
(    moderate; it involves estimating the unused bandwidth on the output) s
5 324 M
(    link over the last several seconds, processing the Quick-Start) s
5 313 M
(    request, and keeping a counter of the aggregate Quick-Start rate) s
5 302 M
(    approved over the last fraction of a second.  However, this added) s
5 291 M
(    complexity at routers adds to the development cycle, and could) s
5 280 M
(    prevent the addition of other competing functionality to routers.) s
5 269 M
(    Thus, careful thought would have to be given to the addition of) s
5 258 M
(    Quick-Start to IP.) s
5 236 M
(    The slow path in routers:) s
5 225 M
(    Another drawback of Quick-Start is that packets containing the) s
5 214 M
(    Quick-Start Request message might not take the fast path in routers.) s
5 203 M
(    This would mean extra delay for the end hosts, and extra processing) s
5 192 M
(    burden for the routers.  This extra burden is mitigated somewhat by) s
5 181 M
(    the following factors: only very few packets would carry the Quick-) s
5 170 M
(    Start Request option;  very small flows of, say, one to five packets) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.2.  [Page 29]) s
_R
S
%%Page: (30) 30
%%BeginPageSetup
_S
24 24 translate
/pagenum 30 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    would receive little benefit from Quick-Start, and presumeably would) s
5 676 M
(    not use the Quick-Start Request;  flows from end hosts with low-) s
5 665 M
(    bandwidth access links would receive little benefit from Quick-) s
5 654 M
(    Start, and hopefully could be configured not to use the Quick-Start) s
5 643 M
(    Request.  In addition, in typical environments where most of the) s
5 632 M
(    packets belong to large flows, the burden of the Quick-Start Option) s
5 621 M
(    on routers would be considerably reduced.  Nevertheless, it is still) s
5 610 M
(    conceiveable, in the worst case, that up to 10% of the packets were) s
5 599 M
(    Quick-Start packets, and this could slow down the processing of) s
5 588 M
(    Quick-Start packets in routers considerably.  In particular, because) s
5 577 M
(    many Quick-Start packets are likely to be TCP SYN or SYN/ACK) s
5 566 M
(    packets, the slow processing of Quick-Start packets would slow down) s
5 555 M
(    the establishment of the corresponding TCP connections.) s
5 533 M
(    Multiple paths:) s
5 522 M
(    One limitation of Quick-Start is that it presumes that the data) s
5 511 M
(    packets of a connection will follow the same path as the Quick-Start) s
5 500 M
(    request packet.  If this is not the case, then the connection could) s
5 489 M
(    be sending the Quick-Start packets, at the approved rate, along a) s
5 478 M
(    path that was already congested, or that became congested as a) s
5 467 M
(    result of this connection.  This is, however, similar to what would) s
5 456 M
(    happen if the connection's path was changed in the middle of the) s
5 445 M
(    connection, when the connection had already established the allowed) s
5 434 M
(    initial rate.) s
5 412 M
(    Non-IP queues:) s
5 401 M
(    A problem of any mechanism for feedback from routers at the IP level) s
5 390 M
(    is that there can be queues and bottlenecks in the end-to-end path) s
5 379 M
(    that are not in IP-level routers.  As an example, these include) s
5 368 M
(    queues in layer-two Ethernet or ATM networks.  One possibility would) s
5 357 M
(    be that an IP-level router adjacent to such a non-IP queue or) s
5 346 M
(    bottleneck would be configured to reject Quick-Start requests if) s
5 335 M
(    that was appropriate.) s
5 302 M
(6.3.  Protection against Misbehaving Nodes) s
5 280 M
(    In this section we discuss the protection against receivers lying) s
5 269 M
(    about the Quick-Start Request, and against other possible) s
5 258 M
(    misbehaviors regarding Quick-Start.  First, we note that it is not) s
5 247 M
(    necessarily in the receiver's interest to lie about the Quick-Start) s
5 236 M
(    Request.  If the sender sends at too-high of an initial rate, and) s
5 225 M
(    has a packet dropped, this does not improve the performance of the) s
5 214 M
(    connection, relative to the case when the Quick-Start Request was) s
5 203 M
(    not approved.) s
5 181 M
(    Receivers lying about whether the request was approved:) s
5 170 M
(    The use of the Quick-Start TTL initialized by the sender to a random) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.3.  [Page 30]) s
_R
S
%%Page: (31) 31
%%BeginPageSetup
_S
24 24 translate
/pagenum 31 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    value makes it difficult for the receiver to lie to the sender about) s
5 676 M
(    whether the request has been approved by all of the routers along) s
5 665 M
(    the path.  If a router that understands the Quick-Start Request) s
5 654 M
(    deletes the Request, or zeroes the QS TTL in the request, then the) s
5 643 M
(    chances of a downstream router or misbehaving receiver guessing the) s
5 632 M
(    value of the QS TTL is at most 1/256.) s
5 610 M
(    In particular, if a router deletes the Quick-Start Request, it is) s
5 599 M
(    unlikely that the receiver would be able to send a valid Quick-Start) s
5 588 M
(    Response back to the sender.  Similarly, if there are routers along) s
5 577 M
(    the path that do not understand or approve of the Quick-Start) s
5 566 M
(    Request, and that forward the Quick-Start Request unchanged, it) s
5 555 M
(    would be not be easy for a downstream router or the receiver to) s
5 544 M
(    cheat and modify the QS TTL field so that the request was considered) s
5 533 M
(    valid, because the downstream routers do not know the initial value) s
5 522 M
(    for the QS TTL.) s
5 500 M
(    Receivers lying about the rate request:) s
5 489 M
(    The receiver could lie to the sender about the Rate Request in the) s
5 478 M
(    received Quick-Start Request.  However, the receiver doesn't know) s
5 467 M
(    the Rate Request in the original Quick-Start Request sent by the) s
5 456 M
(    sender, and a higher Rate Request reported by the receiver will only) s
5 445 M
(    be considered valid by the sender if it is no higher than the Rate) s
5 434 M
(    Request originally requested by the sender.  This limits the ability) s
5 423 M
(    of the receiver to cheat.  For example, if the sender sends a Quick-) s
5 412 M
(    Start Request with an Rate Request of X, and the receiver reports) s
5 401 M
(    receiving a Quick-Start Request with an Rate Request of Y > X, then) s
5 390 M
(    the sender knows that either some router along the path) s
5 379 M
(    malfunctioned \(increasing the Rate Request inappropriately\), or the) s
5 368 M
(    receiver is lying about the Rate Request in the received packet.) s
5 346 M
(    However, if the sender sends a Quick-Start Request with an Rate) s
5 335 M
(    Request of Z, the receiver receives the Quick-Start Request with an) s
5 324 M
(    approved Rate Request of X, and reports an Rate Request of Y, for X) s
5 313 M
(    < Y < Z, then the receiver succeeds in lying to the sender about the) s
5 302 M
(    approved rate.) s
5 280 M
(    One protection against such misbehavior from the receiver would be) s
5 269 M
(    for a router decreasing a Rate Request in a Quick-Start Request to) s
5 258 M
(    report the decrease directly to the sender.  However, it is) s
5 247 M
(    hopefully sufficient protection that the receiver does not know the) s
5 236 M
(    Rate Request in the original Quick-Start Request.) s
5 214 M
(    One way to add additional protection would be for senders to use) s
5 203 M
(    some degree of randomization in the requested Rate Request, so that) s
5 192 M
(    it is difficult for receivers to guess the original value for the) s
5 181 M
(    Rate Request.  However, this is more difficult if there is fairly) s
5 170 M
(    coarse granularity in the set of rate requests available to the) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.3.  [Page 31]) s
_R
S
%%Page: (32) 32
%%BeginPageSetup
_S
24 24 translate
/pagenum 32 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    sender.) s
5 665 M
(    Similarly, a router could attempt to cheat and increase the rate) s
5 654 M
(    request, but this would only be effective if there were no) s
5 643 M
(    downstream routers that denied the Rate Request.) s
5 621 M
(    Misbehaving routers:) s
5 610 M
(    In addition to protecting against misbehaving receivers, it is) s
5 599 M
(    necessary also to protect against misbehaving routers.  Consider) s
5 588 M
(    collusion between an ingress router and an egress router belonging) s
5 577 M
(    to the same Intranet.  The ingress router could decrement the Rate) s
5 566 M
(    Request at the ingress, with the egress router increasing it again) s
5 555 M
(    at the egress.  The routers between the ingress and egress that) s
5 544 M
(    approved the decremented rate request might not have been willing to) s
5 533 M
(    approve the larger, original request.) s
5 511 M
(    Another form of collusion would be for the ingress router to inform) s
5 500 M
(    the egress router out-of-band of the IP TTL and QS TTL in the) s
5 489 M
(    request packet at the ingress.  This would enable the egress router) s
5 478 M
(    to modify the QS TTL so that it appeared that all of the routers) s
5 467 M
(    along the path had approved the request.  We would note that in the) s
5 456 M
(    extreme case, there does not appear to be any protection against a) s
5 445 M
(    colluding ingress and egress router.  Even if an intermediate router) s
5 434 M
(    had deleted the Quick-Start Request Option from the packet, the) s
5 423 M
(    ingress router could have sent the Quick-Start Request Option to the) s
5 412 M
(    egress router out-of-band, with the egress router inserting the) s
5 401 M
(    Quick-Start Request Option, with a modified QS TTL field, back in) s
5 390 M
(    the packet.) s
5 368 M
(    However, unlike ECN, there is somewhat less incentive for) s
5 357 M
(    cooperating ingress and egress routers to collude to falsely modify) s
5 346 M
(    the Quick-Start Request so that it appears to have been approved by) s
5 335 M
(    all of the routers along the path.  With ECN, a colluding ingress) s
5 324 M
(    router could falsely mark a packet as ECN-capable, with the) s
5 313 M
(    colluding egress router returning the ECN field in the IP header to) s
5 302 M
(    its original non-ECN-capable codepoint, and congested routers along) s
5 291 M
(    the path could have been fooled into not dropping that packet.  This) s
5 280 M
(    collusion would give an unfair competitive advantage to the traffic) s
5 269 M
(    protected by the colluding ingress and egress routers.) s
5 247 M
(    In contrast, with Quick-Start, the ingress and egress routers) s
5 236 M
(    colluding to make it falsely appear that a Quick-Start request was) s
5 225 M
(    approved does not necessarily give an advantage to the traffic) s
5 214 M
(    covered by that collusion.  If some router along the path really) s
5 203 M
(    does not have enough available bandwidth to approve the Quick-Start) s
5 192 M
(    request, then the Quick-Start packets sent as a result of the) s
5 181 M
(    falsely-approved request could be dropped in the network, to the) s
5 170 M
(    resulting disadvantage of the connection.  Thus, while the ingress) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.3.  [Page 32]) s
_R
S
%%Page: (33) 33
%%BeginPageSetup
_S
24 24 translate
/pagenum 33 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    and egress routers could collude to prevent intermediate routers) s
5 676 M
(    from denying a Quick-Start request, it would generally not be to the) s
5 665 M
(    connection's advantage for this to happen.) s
5 643 M
(    Of course, if the congested router was ECN-capable, and the) s
5 632 M
(    colluding ingress and egress routers were lying about ECN-capability) s
5 621 M
(    as well as about Quick-Start, then the result could be that the) s
5 610 M
(    Quick-Start request falsely appears to the sender to have been) s
5 599 M
(    approved, the Quick-Start packets falsely appear to the congested) s
5 588 M
(    router to be ECN-capable, and the colluding routers succeed in) s
5 577 M
(    giving a competitive advantage to the traffic protected by their) s
5 566 M
(    collusion.) s
5 533 M
(6.4.  Quick-Start with QoS-enabled Traffic) s
5 511 M
(    The discussion in this paper has largely been of Quick-Start with) s
5 500 M
(    default, best-effort traffic.  However, Quick-Start could also be) s
5 489 M
(    used by traffic using some form of differentiated services, and) s
5 478 M
(    routers could take the traffic class into account when deciding) s
5 467 M
(    whether or not to grant the Quick-Start request.  We don't address) s
5 456 M
(    this context further in this paper, since it is orthogonal to the) s
5 445 M
(    specification of Quick-Start.  However, we note that routers should) s
5 434 M
(    be discouraged from granting Quick-Start requests for higher-) s
5 423 M
(    priority traffic when this is likely to result in significant packet) s
5 412 M
(    loss for lower-priority traffic.) s
5 379 M
(6.5.  Limitations of Quick-Start) s
5 357 M
(    The Quick-Start proposal, taken together with the recent proposal) s
5 346 M
(    for HighSpeed TCP [F02], could go a significant way towards) s
5 335 M
(    extending the range of performance for best-effort traffic in the) s
5 324 M
(    Internet.  However, there are many things that the Quick-Start) s
5 313 M
(    proposal would not accomplish.  Quick-Start is not a congestion) s
5 302 M
(    control mechanism, and would not help in making more precise use of) s
5 291 M
(    the available bandwidth, that is, of achieving the goal of very high) s
5 280 M
(    throughput with very low delay and very low packet loss rates.) s
5 269 M
(    Quick-Start would not give routers more control over the decrease) s
5 258 M
(    rates of active connections.  One of the open questions addressed) s
5 247 M
(    later in this document is whether the limited capabilities of Quick-) s
5 236 M
(    Start are sufficient to warrant standardization and deployment, or) s
5 225 M
(    whether more work is needed to explore the space of potential) s
5 214 M
(    mechanisms.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 6.5.  [Page 33]) s
_R
S
%%Page: (34) 34
%%BeginPageSetup
_S
24 24 translate
/pagenum 34 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(6.6.  Simulations with Quick-Start) s
5 665 M
(    Quick-Start was added to the NS simulator [SH02] by Srikanth) s
5 654 M
(    Sundarrajan, and additional functionality was added by Pasi) s
5 643 M
(    Sarolahti.  The validation test is at `test-all-quickstart' in the) s
5 632 M
(    'tcl/test' directory in NS.  The initial simulation studies from) s
5 621 M
(    [SH02] show a significant performance improvement using Quick-Start) s
5 610 M
(    for moderate-sized flows \(between 4KB and 128KB\) in under-utilized) s
5 599 M
(    environments.  These studies are of file transfers, with the) s
5 588 M
(    improvement measured as the relative increase in the overall) s
5 577 M
(    throughput for the file transfer.  The study shows that potential) s
5 566 M
(    improvement from Quick-Start is proportional to the delay-bandwidth) s
5 555 M
(    product of the path.) s
5 522 M
(7.  Related Work) s
5 500 M
(    Any evaluation of Quick-Start must include a discussion of the) s
5 489 M
(    relative benefits of approaches that use no explicit information) s
5 478 M
(    from routers, and of approaches that use more fine-grained feedback) s
5 467 M
(    from routers as part of a larger congestion control mechanism.  We) s
5 456 M
(    discuss three classes of proposals \(no explicit feedback from) s
5 445 M
(    routers; explicit feedback about the initial rate; and more fine-) s
5 434 M
(    grained feedback from routers\) in the sections below.) s
5 401 M
(7.1.  Fast Start-ups without Explicit Information from Routers) s
5 379 M
(    One possibility would be for senders to use information from the) s
5 368 M
(    packet streams to learn about the available bandwidth, without) s
5 357 M
(    explicit information from routers.  These techniques would not allow) s
5 346 M
(    a start-up as fast as that available from Quick-Start, in an) s
5 335 M
(    underutilized environment;  one has to have sent some packets) s
5 324 M
(    already to use the packet stream to learn about available bandwidth.) s
5 313 M
(    However, these techniques could allow a start-up considerably faster) s
5 302 M
(    than the current slow-start.  While it seems clear that approaches) s
5 291 M
(    *without* explicit feedback from the routers will be strictly less) s
5 280 M
(    powerful that is possible *with* explicit feedback, it is also) s
5 269 M
(    possible that approaches that are more aggressive than slow-start) s
5 258 M
(    are possible without explicit feedback from routers.) s
5 236 M
(    Periodic packet streams:) s
5 225 M
(    [JD02] explores the use of periodic packet streams to estimate the) s
5 214 M
(    available bandwidth along a path.  The idea is that the one-way) s
5 203 M
(    delays of a periodic packet stream show an increasing trend when the) s
5 192 M
(    stream's rate is higher than the available bandwidth.  While [JD02]) s
5 181 M
(    states that the proposed mechanism does not cause significant) s
5 170 M
(    increases in network utilization, losses, or delays when done by one) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 7.1.  [Page 34]) s
_R
S
%%Page: (35) 35
%%BeginPageSetup
_S
24 24 translate
/pagenum 35 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    flow at a time, the approach could be problematic if conducted) s
5 676 M
(    concurrently by a number of flows.  [JD02] also gives an overview of) s
5 665 M
(    some of the earlier work on inferring the available bandwidth from) s
5 654 M
(    packet trains.) s
5 632 M
(    Swift-Start:) s
5 621 M
(    The Swift Start proposal from [PRAKS02] combines packet-pair and) s
5 610 M
(    packet-pacing techniques, beginning with a four-segment burst of) s
5 599 M
(    packets to estimate the available bandwidth along the path.) s
5 577 M
(    While continued research on the limits of the ability of TCP and) s
5 566 M
(    other transport protocols to learn of available bandwidth without) s
5 555 M
(    explicit feedback from the router seems useful, we note that there) s
5 544 M
(    are several fundamental advantages of explicit feedback from) s
5 533 M
(    routers.) s
5 511 M
(    \(1\) Explicit feedback is faster than implicit feedback:) s
5 500 M
(    One advantage of explicit feedback from the routers is that it) s
5 489 M
(    allows the transport sender to reliably learn of available bandwidth) s
5 478 M
(    in one round-trip time.) s
5 456 M
(    \(2\) Explicit feedback is more reliable than implicit feedback:) s
5 445 M
(    A second advantage of explicit feedback from the routers is that the) s
5 434 M
(    available bandwidth along the path does not necessarily map to the) s
5 423 M
(    allowed sending rate for an individual flow.  As an example, if the) s
5 412 M
(    TCP sender sends four packets back-to-back in the initial window,) s
5 401 M
(    and the TCP receiver reports that the data packets were received) s
5 390 M
(    with roughly the same spacing as they were transmitted, does this) s
5 379 M
(    mean that the flow can infer an underutilized path?  And how fast) s
5 368 M
(    can the flow send in the next round-trip time?  Do the results) s
5 357 M
(    depend on the level of statistical multiplexing at the congested) s
5 346 M
(    link, and on the number of flows attempting a faster start-up at the) s
5 335 M
(    same time?) s
5 302 M
(7.2.  Optimistic Sending without Explicit Information from Routers) s
5 280 M
(    Another possibility that has been suggested [S02] is for the sender) s
5 269 M
(    to start with a large initial window without explicit permission) s
5 258 M
(    from the routers and without bandwidth estimation techniques, and) s
5 247 M
(    for the first packet of the initial window to contain information) s
5 236 M
(    such as the size or sending rate of the initial window.  The) s
5 225 M
(    proposal would be that congested routers would use this information) s
5 214 M
(    in the first data packet to drop or delay many or all of the packets) s
5 203 M
(    from that initial window.  In this way a flow's optimistically-large) s
5 192 M
(    initial window would not force the router to drop packets from) s
5 181 M
(    competing flows in the network.  Such an approach would seem to) s
5 170 M
(    require some mechanism for the sender to ensure that the routers) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 7.2.  [Page 35]) s
_R
S
%%Page: (36) 36
%%BeginPageSetup
_S
24 24 translate
/pagenum 36 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    along the path understood the mechanism for marking the first packet) s
5 676 M
(    of a large initial window.) s
5 654 M
(    Obviously there would be a number of questions to consider about an) s
5 643 M
(    approach of optimistic sending.) s
5 621 M
(    \(1\) Incremental deployment:) s
5 610 M
(    One question would be the potential complications of incremental) s
5 599 M
(    deployment, where some of the routers along the path might not) s
5 588 M
(    understand the packet information describing the initial window.) s
5 566 M
(    \(2\) Congestion collapse:) s
5 555 M
(    There could also be concerns about congestion collapse if many flows) s
5 544 M
(    used large initial windows, many packets were dropped from) s
5 533 M
(    optimistic initial windows, and many congested links ended up) s
5 522 M
(    carrying packets that are only going to be dropped downstream.) s
5 500 M
(    \(3\) Distributed Denial of Service attacks:) s
5 489 M
(    A third key question would be the potential role of optimistic) s
5 478 M
(    sender in amplifying the damage done by a Distributed Denial of) s
5 467 M
(    Service \(DDoS\) attack.) s
5 445 M
(    \(4\) Performance hits if a packet is dropped:) s
5 434 M
(    A fourth issue would be to quantify the performance hit to the) s
5 423 M
(    connection when a packet is dropped from one of the initial windows.) s
5 390 M
(7.3.  Fast Start-ups with other Information from Routers) s
5 368 M
(    There have been several proposals somewhat similar to Quick-Start,) s
5 357 M
(    where the transport protocol collects explicit information from the) s
5 346 M
(    routers along the path.) s
5 324 M
(    An IP Option about the free buffer size:) s
5 313 M
(    In related work, Joon-Sang Park and John Heidemann investigated the) s
5 302 M
(    use of a slightly different IP option for TCP connections to) s
5 291 M
(    discover the available bandwidth along the path [P00].  In that) s
5 280 M
(    proposal, the IP option would query the routers along the path about) s
5 269 M
(    the smallest available free buffer size. Also, the IP option would) s
5 258 M
(    have been sent after the initial SYN exchange, when the TCP sender) s
5 247 M
(    already had an estimate of the round-trip time.) s
5 225 M
(    The Performance Transparency Protocol:) s
5 214 M
(    The Performance Transparency Protocol \(PTP\) includes a proposal for) s
5 203 M
(    a single PTP packet that would collect information from routers) s
5 192 M
(    along the path from the sender to the receiver [W00].  For example,) s
5 181 M
(    a single PTP packet could be used to determine the bottleneck) s
5 170 M
(    bandwidth along a path.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 7.3.  [Page 36]) s
_R
S
%%Page: (37) 37
%%BeginPageSetup
_S
24 24 translate
/pagenum 37 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    ETEN:) s
5 676 M
(    Additional proposals for end nodes to collect explicit information) s
5 665 M
(    from routers include Explicit Transport Error Notification \(ETEN\),) s
5 654 M
(    which includes a cumulative mechanism to notify endpoints of) s
5 643 M
(    aggregate congestion statistics along the path [KAPS02].) s
5 610 M
(7.4.  Fast Start-ups with more Fine-Grained Feedback from Routers) s
5 588 M
(    Proposals for more fine-grained congestion-related feedback from) s
5 577 M
(    routers include XCP [KHR02] and AntiECN marking [K03].  Section A.6) s
5 566 M
(    discusses in more detail the relationship between Quick-Start and) s
5 555 M
(    proposals for more fine-grained per-packet feedback from routers.) s
5 533 M
(    XCP:) s
5 522 M
(    Proposals such as XCP for new congestion control mechanisms based on) s
5 511 M
(    more feedback from routers are more powerful than Quick-Start, but) s
5 500 M
(    also are more complex to understand and more difficult to deploy.) s
5 489 M
(    XCP routers maintain no per-flow state, but provide more fine-) s
5 478 M
(    grained feedback to end-nodes than the one-bit congestion feedback) s
5 467 M
(    of ECN.  The per-packet feedback from XCP can be positive or) s
5 456 M
(    negative, and specifies the increase or decrease in the sender's) s
5 445 M
(    congestion window when this packet is acknowledged.) s
5 423 M
(    AntiECN:) s
5 412 M
(    The AntiECN proposal is for a single bit in the packet header that) s
5 401 M
(    routers could set to indicate that they are underutilized.  For each) s
5 390 M
(    TCP ACK arriving at the sender indicating that a packet has been) s
5 379 M
(    received with the Anti-ECN bit set, the sender would be able to) s
5 368 M
(    increase its congestion window by one packet, as it would during) s
5 357 M
(    slow-start.) s
5 324 M
(8.  Implementation and Deployment Issues) s
5 302 M
(    This section discusses some of the implementation issues with Quick-) s
5 291 M
(    Start.   This section also discusses some of the key deployment) s
5 280 M
(    issues, such as the chicken-and-egg deployment problems of) s
5 269 M
(    mechanisms that have to be deployed in both routers and end nodes in) s
5 258 M
(    order to work, and the problems posed by the wide deployment of) s
5 247 M
(    middleboxes today that block the use of known or unknown IP Options.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                        Section 8.  [Page 37]) s
_R
S
%%Page: (38) 38
%%BeginPageSetup
_S
24 24 translate
/pagenum 38 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(8.1.  Implementation Issues for Sending Quick-Start Requests) s
5 665 M
(    Section 4.6 has discussed some of the issues with deciding the) s
5 654 M
(    initial sending rate to request.  Quick-Start raises additional) s
5 643 M
(    issues about the communication between the transport protocol and) s
5 632 M
(    the application, and about the use of the past history with Quick-) s
5 621 M
(    Start in the end node.) s
5 599 M
(    One possibility is that a protocol implementation could provide an) s
5 588 M
(    API for applications to indicate when they want to request Quick-) s
5 577 M
(    Start, and what rate they would like to request.  In the) s
5 566 M
(    conventional socket API this could be a socket option that is set) s
5 555 M
(    before a connection is established.  Some applications, such those) s
5 544 M
(    that use TCP for bulk transfers, do not have interest in the) s
5 533 M
(    transmission rate, but they might know the amount of data that can) s
5 522 M
(    be sent immediately. Based on this, the sender implementation could) s
5 511 M
(    decide whether Quick-Start would be useful, and what rate should be) s
5 500 M
(    requested.  Datagram-based real-time streaming applications, on the) s
5 489 M
(    other hand, may have a specific preference on the transmission rate) s
5 478 M
(    and they could indicate the required rate explicitly to the) s
5 467 M
(    transport protocol to be used in the Quick-Start Request.) s
5 434 M
(8.2.  Implementation Issues for Processing Quick-Start Requests) s
5 412 M
(    A router or other network host must be able to determine the) s
5 401 M
(    approximate bandwidth of its outbound network interfaces in order to) s
5 390 M
(    process incoming Quick-Start rate requests, including those that) s
5 379 M
(    originate from the host itself.  One possibility would be for hosts) s
5 368 M
(    to rely on configuration information to determine link bandwidths;) s
5 357 M
(    this has the drawback of not being robust to errors in) s
5 346 M
(    configuration.  Another possibility would be for network device) s
5 335 M
(    drivers to infer the bandwidth for the interface and to communicate) s
5 324 M
(    this to the IP layer.) s
5 302 M
(    Particular issues will arise for wireless links with variable) s
5 291 M
(    bandwidth, where decisions will have to be made about how frequently) s
5 280 M
(    the network host gets updates of the changing bandwidth.  It seems) s
5 269 M
(    appropriate that Quick-Start Requests would be handled particularly) s
5 258 M
(    conservatively for links with variable bandwidth.  to avoid cases) s
5 247 M
(    where Quick-Start Requests are approved, the link bandwidth is) s
5 236 M
(    reduced, and the data packets that are send end up being dropped.) s
5 203 M
(8.3.  Possible Deployment Scenarios) s
5 181 M
(    Because of possible problems discussed above concerning using Quick-) s
5 170 M
(    Start over some network paths, the most realistic initial deployment) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 8.3.  [Page 38]) s
_R
S
%%Page: (39) 39
%%BeginPageSetup
_S
24 24 translate
/pagenum 39 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    of Quick-Start would likely to take place in Intranets and other) s
5 676 M
(    controlled environments.  Quick-Start is most useful on high) s
5 665 M
(    bandwidth-delay paths that are significantly underutilized. The) s
5 654 M
(    primary initial users of Quick-Start would likely be in) s
5 643 M
(    organizations that provide network services to their users and also) s
5 632 M
(    have control over a large portion of the network path.) s
5 610 M
(    Below are a few examples of networking environments where Quick-) s
5 599 M
(    Start would potentially be useful.  These are the environments that) s
5 588 M
(    might consider an initial deployment of Quick-Start in the routers) s
5 577 M
(    and end-nodes, where the incentives for routers to deploy Quick-) s
5 566 M
(    Start might be the most clear.) s
5 544 M
(    * Centrally-administrated organizational Intranets often have large) s
5 533 M
(    network capacity and the networks are underutilized for most of the) s
5 522 M
(    time.   with the network nodes along the path administrated by a) s
5 511 M
(    single organization.  Such Intranets might also include high-) s
5 500 M
(    bandwidth and high-delay paths to remote sites.  In such an) s
5 489 M
(    environment, Quick-Start would be of benefit to users, and there) s
5 478 M
(    would be a clear incentive for the deployment of Quick-Start in) s
5 467 M
(    routers.) s
5 445 M
(    * Quick-Start could also be useful in high-delay environments of) s
5 434 M
(    Cellular Wide-Area Wireless Networks such as the GPRS [BW97] and) s
5 423 M
(    their enhancements and next generations. For example, GPRS EDGE) s
5 412 M
(    \(Enhanced Data for GSM Evolution\) is expected to provide wireless) s
5 401 M
(    bandwidth of up to 384 Kbps \(roughly 32 1500-byte packets per) s
5 390 M
(    second\) while the GPRS round-trip times are typically up to one) s
5 379 M
(    second excluding any possible queueing delays in the network) s
5 368 M
(    [GPAR02]. In addition, these networks sometimes have variable) s
5 357 M
(    additional delays due to resource allocation that could be avoided) s
5 346 M
(    by keeping the connection path constantly utilized, starting from) s
5 335 M
(    initial slow start.  Thus, Quick-Start could be of significant) s
5 324 M
(    benefit to users in these environments.) s
5 302 M
(    * Geostationary Orbit \(GEO\) satellite links have one-way propagation) s
5 291 M
(    delays on the order of 250 ms while the bandwidth is typically) s
5 280 M
(    measured in megabits per second [RFC2488]. Because of the) s
5 269 M
(    considerable bandwidth-delay product on the link, TCP's slow start) s
5 258 M
(    is a major performance limitation in the beginning of the) s
5 247 M
(    connection.  A large initial congestion window would be useful to) s
5 236 M
(    users of such satellite links.) s
5 203 M
(8.4.  Would QuickStart packets take the slow path in routers?) s
5 181 M
(    How much delay would the slow path add to the processing time for) s
5 170 M
(    this packet?  Similarly, if QuickStart packets took the slow path,) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section 8.4.  [Page 39]) s
_R
S
%%Page: (40) 40
%%BeginPageSetup
_S
24 24 translate
/pagenum 40 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    how much stress would it add to routers for there to be many more) s
5 676 M
(    packets on the slow path, because of the number of packets using) s
5 665 M
(    QuickStart?  These are both questions to be considered for the) s
5 654 M
(    deployment of Quick-Start in the Internet.) s
5 621 M
(8.5.  A Comparison with the Deployment Problems of ECN) s
5 599 M
(    For ECN, only one router along the path has to understand.  For) s
5 588 M
(    Quick-Start, all of the routers along the path would have to) s
5 577 M
(    understand.  Also, Quick-Start has the complicating factor of using) s
5 566 M
(    IP Options, while ECN uses a field in the IP header itself.) s
5 533 M
(9.  Security Considerations) s
5 511 M
(    One security consideration would be if Quick-Start resulted in the) s
5 500 M
(    sender using an Rate Request that was inappropriately large,) s
5 489 M
(    resulting in congestion along the path.  Such congestion could) s
5 478 M
(    result in an unacceptable level of packet drops along the path.) s
5 467 M
(    Such congestion could also be part of a Denial of Service attack.) s
5 445 M
(    A misbehaving TCP sender could use a non-conformant initial) s
5 434 M
(    congestion window even without the use of Quick-Start, so we) s
5 423 M
(    restrict our attention to problems with Quick-Start with conformant) s
5 412 M
(    TCP senders.  \(We also note that if the TCP sender is a busy web) s
5 401 M
(    server, then the TCP sender has some incentive to be conformant in) s
5 390 M
(    this regard.\)  Section 6.3 discusses the dangers of receivers or) s
5 379 M
(    routers lying about the Quick-Start rate request, or about whether) s
5 368 M
(    the rate request was approved.) s
5 335 M
(10.  Conclusions) s
5 313 M
(    We are presenting the Quick-Start mechanism as a proposal for a) s
5 302 M
(    simple, understandable, and incrementally-deployable mechanism that) s
5 291 M
(    would be sufficient to allow connections to start up with large) s
5 280 M
(    initial rates, or large initial congestion windows, in) s
5 269 M
(    overprovisioned, high-bandwidth environments.  We expect there will) s
5 258 M
(    be an increasing number of overprovisioned, high-bandwidth) s
5 247 M
(    environments where the Quick-Start mechanism, or another mechanism) s
5 236 M
(    of similar power, could be of significant benefit to a wide range of) s
5 225 M
(    traffic.  We are presenting the Quick-Start mechanism as a request) s
5 214 M
(    for feedback from the Internet community in considering these) s
5 203 M
(    issues.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                       Section 10.  [Page 40]) s
_R
S
%%Page: (41) 41
%%BeginPageSetup
_S
24 24 translate
/pagenum 41 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(11.  Acknowledgements) s
5 665 M
(    The authors wish to thank Mark Handley for discussions of these) s
5 654 M
(    issues.  The authors also thank the End-to-End Research Group, the) s
5 643 M
(    Transport Services Working Group, and members of IPAM's program on) s
5 632 M
(    Large Scale Communication Networks for both positive and negative) s
5 621 M
(    feedback on this proposal.  We thank Srikanth Sundarrajan for the) s
5 610 M
(    initial implementation of Quick-Start in the NS simulator, and for) s
5 599 M
(    the initial simulation study.  We also thank Mohammed Ashraf, John) s
5 588 M
(    Border, Tom Dunigan, John Heidemann, Dina Katabi, and Vern Paxson) s
5 577 M
(    for feedback.  This draft builds upon the concepts described in) s
5 566 M
(    [RFC3390], [AHO98], [RFC2415], and [RFC3168].) s
5 544 M
(    This is a modification of a draft originally by Amit Jain for) s
5 533 M
(    Initial Window Discovery.) s
5 500 M
(A.  Design Decisions) s
5 467 M
(A.1.  Alternate Mechanisms for the Quick-Start Request: ICMP and RSVP) s
5 445 M
(    This document has proposed using an IP Option for the Quick-Start) s
5 434 M
(    Request from the sender to the receiver, and using transport) s
5 423 M
(    mechanisms for the Quick-Start Response from the receiver back to) s
5 412 M
(    the sender.  In this section we discuss alternate mechanisms, and) s
5 401 M
(    consider whether ICMP [RFC792, RFC2463] or RSVP [RFC2205] protocols) s
5 390 M
(    could be used for delivering the Quick-Start Request.) s
5 357 M
(A.1.1.  ICMP) s
5 335 M
(    Being a control protocol used between Internet nodes, one could) s
5 324 M
(    argue that ICMP is the ideal method for requesting a permission for) s
5 313 M
(    faster startup from routers.  The ICMP header is above the IP) s
5 302 M
(    header.  Quick-Start would be done with ICMP as follows: If the ICMP) s
5 291 M
(    protocol is used to implement Quick-Start, the equivalent of the) s
5 280 M
(    Quick-Start IP option would be carried in the ICMP header of the) s
5 269 M
(    ICMP Quick-Start Request.  The ICMP Quick-Start Request would have) s
5 258 M
(    to pass by the routers on the path to the receiver; for now, we) s
5 247 M
(    don't address the mechanisms that would be needed to accomplish) s
5 236 M
(    this.  A router that approves the Quick-Start Request would take the) s
5 225 M
(    same actions as in the case with the Quick-Start IP Option, and) s
5 214 M
(    forward the packet to the next router along the path.  A router that) s
5 203 M
(    does not approve the Quick-Start Request, even with a decreased) s
5 192 M
(    value for the Requested Rate, would delete the ICMP Quick-Start) s
5 181 M
(    Request, and send an ICMP Reply to the sender that the request was) s
5 170 M
(    not approved.  If the ICMP Reply was dropped in the network, and did) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                    Section A.1.1.  [Page 41]) s
_R
S
%%Page: (42) 42
%%BeginPageSetup
_S
24 24 translate
/pagenum 42 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    not reach the receiver, the sender would still know that the request) s
5 676 M
(    was not approved from the absence of feedback from the receiver.  If) s
5 665 M
(    the ICMP Quick-Start request was dropped in the network due to) s
5 654 M
(    congestion, the sender would assume that the request was not) s
5 643 M
(    approved.  If the ICMP Quick-Start Request reached the receiver, the) s
5 632 M
(    receiver would use transport-level mechanisms to send a response to) s
5 621 M
(    the sender, exactly as with the IP Option.) s
5 599 M
(    One benefit of using ICMP would be that the delivery of the TCP SYN) s
5 588 M
(    packet or other initial packet would not be delayed by IP option) s
5 577 M
(    processing at routers.  A greater advantage is that if middleboxes) s
5 566 M
(    were blocking packets with Quick-Start Requests, using the Quick-) s
5 555 M
(    Start Request in a separate ICMP packet would mean that the) s
5 544 M
(    middlebox behavior would not affect the connection as a whole.  \(To) s
5 533 M
(    get this robustness to middleboxes with TCP using an IP Quick-Start) s
5 522 M
(    Option, one would have to have a TCP-level Quick-Start Request) s
5 511 M
(    packet that was sent concurrently but separately from the TCP SYN) s
5 500 M
(    packet.\)) s
5 478 M
(    However, there are a number of disadvantages to using ICMP.  Some) s
5 467 M
(    firewalls and middleboxes may not forward the ICMP Quick-Start) s
5 456 M
(    Request packets.  \(If the ICMP Reply packet is dropped in the) s
5 445 M
(    network, this is not a problem, as we stated above.\) In addition, it) s
5 434 M
(    would be difficult, if not impossible, for a router in the middle of) s
5 423 M
(    an IP tunnel to deliver an ICMP Reply packet to the actual source,) s
5 412 M
(    for example when the inner IP header is encrypted as in IPsec tunnel) s
5 401 M
(    mode [RFC2401].  Again, however, the ICMP Reply packet would not be) s
5 390 M
(    essential to the correct operation of ICMP Quick-Start.) s
5 368 M
(    Unauthenticated out-of-band ICMP messages could enable some types of) s
5 357 M
(    attacks by third-party malicious hosts that are not possible when) s
5 346 M
(    the control information is carried in-band with the IP packets that) s
5 335 M
(    can only be altered by the routers on the connection path. Finally,) s
5 324 M
(    as a minor concern, using ICMP would cause a small amount of) s
5 313 M
(    additional traffic in the network, which is not the case when using) s
5 302 M
(    IP options.) s
5 269 M
(A.1.2.  RSVP) s
5 247 M
(    With some modifications RSVP [RFC2205] could be used as a bearer) s
5 236 M
(    protocol for carrying the Quick-Start Requests. Because routers are) s
5 225 M
(    expected to process RSVP packets more extensively than the normal) s
5 214 M
(    transport protocol IP packets, delivering a Quick-Start rate request) s
5 203 M
(    using an RSVP packet would seem an appealing choice. However, Quick-) s
5 192 M
(    Start with RSVP would require a few differences from the) s
5 181 M
(    conventional usage of RSVP. Quick-Start would not require periodical) s
5 170 M
(    refreshing of soft state, because Quick-Start does not require per-) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                    Section A.1.2.  [Page 42]) s
_R
S
%%Page: (43) 43
%%BeginPageSetup
_S
24 24 translate
/pagenum 43 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    connection state in routers.  Quick-Start Requests would be) s
5 676 M
(    transmitted downstream from the sender to receiver in the RSVP Path) s
5 665 M
(    messages, which is different from the conventional RSVP model where) s
5 654 M
(    the reservations originate from the receiver. Furthermore, the) s
5 643 M
(    Quick-Start Response would be sent using the transport-level) s
5 632 M
(    mechanisms instead of using the RSVP Resv message.) s
5 610 M
(    If RSVP was used for carrying a Quick-Start Request, a new "Quick-) s
5 599 M
(    Start Request" class object would be included in the RSVP Path) s
5 588 M
(    message that is sent from the sender to receiver. The object would) s
5 577 M
(    contain the rate request field in addition to the common length and) s
5 566 M
(    type fields. The Send_TTL field in the RSVP common header could be) s
5 555 M
(    used as the equivalent of the QS TTL field.  The Quick-Start capable) s
5 544 M
(    routers along the path would inspect the Quick-Start Request object) s
5 533 M
(    in the RSVP Path message, decrement Send_TTL and adjust the rate) s
5 522 M
(    request field if needed. If an RSVP router did not understand the) s
5 511 M
(    Quick-Start Request object, it would reject the entire RSVP message) s
5 500 M
(    and send an RSVP PathErr message back to the sender.  When an RSVP) s
5 489 M
(    message with the Quick-Start Request object reaches the receiver,) s
5 478 M
(    the receiver sends a Quick-Start Reply message in the corresponding) s
5 467 M
(    transport protocol header in the same way as described in the) s
5 456 M
(    context of IP options earlier. If the RSVP message with the Quick-) s
5 445 M
(    Start Request object was dropped along the path, the transport) s
5 434 M
(    sender would simply proceed with the normal congestion control) s
5 423 M
(    procedures.) s
5 401 M
(    Much of the discussion about benefits and drawbacks of using ICMP) s
5 390 M
(    for making the Quick-Start Request also applies to the RSVP case. If) s
5 379 M
(    the Quick-Start Request was transmitted in a separate packet instead) s
5 368 M
(    of as an IP option, the transport protocol packet delivery would not) s
5 357 M
(    be delayed due to IP option processing at the routers, and the) s
5 346 M
(    initial transport packets would reach their destination more) s
5 335 M
(    reliably. The possible disadvantages of using ICMP and RSVP are also) s
5 324 M
(    expected to be similar: middleboxes in the network may not be able) s
5 313 M
(    to forward the Quick-Start Request messages, and the IP tunnels) s
5 302 M
(    might cause problems for processing the Quick-Start Requests.) s
5 269 M
(A.2.  Alternate Encoding Functions) s
5 247 M
(    In this section we look at alternate encoding functions for the Rate) s
5 236 M
(    Request field in the Quick-Start Request.  The main requirements for) s
5 225 M
(    this function is that it should have a sufficiently wide range for) s
5 214 M
(    the requested rate.  There is no need for overly-fine-grained) s
5 203 M
(    precision in the requested rate.  Similarly, while it would be) s
5 192 M
(    attractive for the encoding function to be easily computable, it is) s
5 181 M
(    also possible for end-nodes and routers to simply store the) s
5 170 M
(    256-entry table giving the mapping between the value N in the Rate) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.2.  [Page 43]) s
_R
S
%%Page: (44) 44
%%BeginPageSetup
_S
24 24 translate
/pagenum 44 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Request field, and the actual rate request f\(N\).) s
5 665 M
(    Linear functions:) s
5 654 M
(    The Quick-Start Request contains an 8-bit field for the Rate) s
5 643 M
(    Request.  One possible proposal would be for this field to be) s
5 632 M
(    formatted in bits per second, scaled so that one unit equals 80) s
5 621 M
(    Kbps.  Thus, for the value N in the Rate Request field, the) s
5 610 M
(    requested rate is 80,000*N bps.  This gives a request range between) s
5 599 M
(    80 Kbps and 20.48 Mbps.  For 1500-byte packets, this corresponds to) s
5 588 M
(    a request range between 6 and 1706 packets per second.) s
5 566 M
(    Powers of two:) s
5 555 M
(    If a granularity of factors of two is sufficient for the Rate) s
5 544 M
(    Request, then the encoding function with the most range would be for) s
5 533 M
(    the requested rate to be K*2^N, for N the value in the Rate Request) s
5 522 M
(    field, and for K some constant.  For N=0, the rate request would be) s
5 511 M
(    set to zero, regardless of the encoding function.  For example, for) s
5 500 M
(    K=40,000, the request range would be from 80 Kbps to 40*2^256 Kbps.) s
5 489 M
(    This clearly would be an unnecessarily large request range.) s
5 467 M
(    For a four-bit Rate Request field, the upper limit on the rate) s
5 456 M
(    request is 1.3 Gbps.  It is possible that an upper limit of 1.3 Gbps) s
5 445 M
(    would be fine for the Quick-Start rate request, and that connections) s
5 434 M
(    wishing to start up with a higher initial sending rate should be) s
5 423 M
(    encouraged to use other mechanisms, such as the explicit reservation) s
5 412 M
(    of bandwidth.  If an upper limit of 1.3 Gbps is not acceptable, then) s
5 401 M
(    five bits could be used for the Rate Request field.) s
5 379 M
(    If the granularity of factors of two is too coarse, then the) s
5 368 M
(    encoding function could use a base less than two.  An alternate form) s
5 357 M
(    for the encoding function would be to use a hybrid of linear and) s
5 346 M
(    exponential functions.) s
5 324 M
(    We note that the Rate Request also has to be constrained by the) s
5 313 M
(    abilities of the transport protocol.  For example, for TCP with) s
5 302 M
(    Window Scaling, the maximum window is at most 2**30 bytes.  For a) s
5 291 M
(    TCP connection with a long, 1 second round-trip time, this would) s
5 280 M
(    give a maximum sending rate of 1.07 Gbps.) s
5 247 M
(A.3.  The Quick-Start Request: Packets or Bytes?) s
5 225 M
(    One of the design questions is whether the Rate Request field should) s
5 214 M
(    be in bytes per second or in packets per second.  We will discuss) s
5 203 M
(    this separately from the perspective of the transport, and from the) s
5 192 M
(    perspective of the router.) s
5 170 M
(    For TCP, the results from the Quick-Start Request are translated) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.3.  [Page 44]) s
_R
S
%%Page: (45) 45
%%BeginPageSetup
_S
24 24 translate
/pagenum 45 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    into a congestion window in bytes, using the measured round-trip) s
5 676 M
(    time and the MSS.  This window applies only to the bytes of data) s
5 665 M
(    payload, and does not include the bytes in the TCP or IP packet) s
5 654 M
(    headers.  Other transport protocols would conceivably use the Quick-) s
5 643 M
(    Start Request directly in packets per second, or could translate the) s
5 632 M
(    Quick-Start Request to a congestion window in packets.) s
5 610 M
(    The assumption of this draft is that the router only approves the) s
5 599 M
(    Quick-Start Request when the output link is significantly) s
5 588 M
(    underutilized.  For this, the router could measure the available) s
5 577 M
(    bandwidth in bytes per second, or could convert between packets and) s
5 566 M
(    bytes by some mechanism.) s
5 544 M
(    If the Quick-Start Request was in bytes per second, and applied only) s
5 533 M
(    to the data payload, then the router would have to convert from) s
5 522 M
(    bytes per second of data payload, to bytes per second of packets on) s
5 511 M
(    the wire.  If the Rate Request field was in bytes per second and the) s
5 500 M
(    sender ended up using very small packets, this could translate to a) s
5 489 M
(    significantly larger number in terms of bytes per second on the) s
5 478 M
(    wire.  Therefore, for a Quick-Start Request in bytes per second, it) s
5 467 M
(    makes most sense for this to include the transport and IP headers as) s
5 456 M
(    well as the data payload.  Of course, this will be at best a rough) s
5 445 M
(    approximation on the part of the sender; the transport-level sender) s
5 434 M
(    might not know the size of the transport and IP headers in bytes,) s
5 423 M
(    and might know nothing at all about the separate headers added in IP) s
5 412 M
(    tunnels downstream.  This rough estimate seems sufficient, however,) s
5 401 M
(    given the overall lack of fine precision in Quick-Start) s
5 390 M
(    functionality.) s
5 368 M
(    It has been suggested that the router could possibly use information) s
5 357 M
(    from the MSS option in the TCP packet header of the SYN packet to) s
5 346 M
(    convert the Quick-Start Request from packets per second to bytes per) s
5 335 M
(    second, or vice versa.  The MSS option is defined as the maximum MSS) s
5 324 M
(    that the TCP sender expects to receive, not the maximum MSS that the) s
5 313 M
(    TCP sender plans to send [RFC793].  However, it is probably often) s
5 302 M
(    the case that this MSS also applies as an upper bound on the MSS) s
5 291 M
(    used by the TCP sender in sending.) s
5 269 M
(    We note that the sender does not necessarily know the Path MTU when) s
5 258 M
(    the Quick-Start Request is sent, or when the initial window of data) s
5 247 M
(    is sent.  Thus, with IPv4, packets from the initial window could end) s
5 236 M
(    up being fragmented in the network if the "Don't Fragment" \(DF\) bit) s
5 225 M
(    is not set [RFC1191].  A Rate Request in bytes per second is) s
5 214 M
(    reasonably robust to fragmentation.  Clearly a Rate Request in) s
5 203 M
(    packets per second is less robust in the presence of fragmentation.) s
5 192 M
(    Interactions between larger initial windows and Path MTU Discovery) s
5 181 M
(    are discussed in more detail in RFC 3390 [RFC3390].) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.3.  [Page 45]) s
_R
S
%%Page: (46) 46
%%BeginPageSetup
_S
24 24 translate
/pagenum 46 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    For a Quick-Start Request in bytes per second, the transport senders) s
5 676 M
(    would have the additional complication of estimating the bandwidth) s
5 665 M
(    usage added by the packet headers.) s
5 643 M
(    We have chosen an Rate Request field in bytes per second rather than) s
5 632 M
(    in packets per second because it seems somewhat more robust,) s
5 621 M
(    particularly to routers.) s
5 588 M
(A.4.  Quick-Start Semantics: Total Rate or Additional Rate?) s
5 566 M
(    For a Quick-Start Request sent in the middle of a connection, there) s
5 555 M
(    are two possible semantics for the Rate Request field, as follows:) s
5 533 M
(    \(1\) Total Rate: The requested Rate Request is the requested total) s
5 522 M
(    rate for the connection, including the current rate; or) s
5 500 M
(    \(2\) Additional Rate: The requested Rate Request is the requested) s
5 489 M
(    increase in the total rate for that connection, over and above the) s
5 478 M
(    current sending rate.) s
5 456 M
(    In this section we consider briefly the tradeoffs between these two) s
5 445 M
(    options, and explain why we have chosen the `Total Rate' semantics.) s
5 423 M
(    The Total Rate semantics makes it easier for routers to ``allocate'') s
5 412 M
(    the same rate to all connections.  This lends itself to fairness,) s
5 401 M
(    and improves convergence times between old and new connections.) s
5 379 M
(    The Additional Rate semantics lends itself to gaming by the) s
5 368 M
(    connection, with the sender sending frequent Quick-Start Requests in) s
5 357 M
(    the hope of gaining a higher rate.) s
5 335 M
(    For either of these alternatives, there would not be room to report) s
5 324 M
(    the current sending rate in the Quick-Start Option using the current) s
5 313 M
(    minimal format for the Quick-Start Request.  Thus, either the Quick-) s
5 302 M
(    Start Option would have to take more than four bytes to include a) s
5 291 M
(    report of the current sending rate, or the current sending rate) s
5 280 M
(    would not be reported to the routers.) s
5 236 M
(A.5.  Alternate Responses to the Loss of a Quick-Start Packet) s
5 214 M
(    Section 4.5 discusses TCP's response to the loss of a Quick-Start) s
5 203 M
(    packet in the initial window.  This section discusses several) s
5 192 M
(    alternate responses.) s
5 170 M
(    One possible alternative to reverting to the default slow-start) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.5.  [Page 46]) s
_R
S
%%Page: (47) 47
%%BeginPageSetup
_S
24 24 translate
/pagenum 47 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    after the loss of a Quick-Start packet from the initial window would) s
5 676 M
(    have been to halve the congestion window and continue in congestion) s
5 665 M
(    avoidance.  However, we note that this would not have been a) s
5 654 M
(    desirable response for either the connection or for the network as a) s
5 643 M
(    whole.  The packet loss in the initial window indicates that Quick-) s
5 632 M
(    Start failed in finding an appropriate congestion window, meaning) s
5 621 M
(    that the congestion window after halving may easily also be wrong.) s
5 599 M
(    A more moderate alternate would be to continue in congestion) s
5 588 M
(    avoidance from a window of \(W-D\)/2, where W is the Quick-Start) s
5 577 M
(    congestion window, and D is the number of packets dropped or marked) s
5 566 M
(    from that window.) s
5 533 M
(A.6.  Why Not Include More Functionality?) s
5 511 M
(    As Section 6.5 discussed, this proposal for Quick-Start is a rather) s
5 500 M
(    coarse-grained mechanism that would allow connections to use larger) s
5 489 M
(    initial windows along underutilized paths, but that does not attempt) s
5 478 M
(    to provide a next-generation transport protocol, and does not) s
5 467 M
(    attempt the goal of providing very high throughput with very low) s
5 456 M
(    delay.  As Section 7.4 discusses, there are a number of proposals) s
5 445 M
(    such as XCP and AntiECN for more fine-grained per-packet feedback) s
5 434 M
(    from routers that the current congestion control mechanisms, that do) s
5 423 M
(    attempt these more ambitious goals.) s
5 401 M
(    Compared to proposals such as XCP and AntiECN, Quick-Start offers) s
5 390 M
(    much less control;  Quick-Start does not attempt to provide a new) s
5 379 M
(    congestion control mechanism, but simply to get permission from) s
5 368 M
(    routers for a higher sending rate at start-up, or after an idle) s
5 357 M
(    period.  At the same time, Quick-Start would allow larger initial) s
5 346 M
(    windows that would proposals such as AntiECN, requires less input to) s
5 335 M
(    routers than XCP, and would require less frequent feedback from) s
5 324 M
(    routers than any new congestion control mechanism.  Thus, Quick-) s
5 313 M
(    Start is less powerful in general than proposals for new congestion) s
5 302 M
(    control mechanisms such as XCP and AntiECN, but as powerful or more) s
5 291 M
(    powerful in terms of the specific issue of allowing larger initial) s
5 280 M
(    windows, and \(we think\) more amenable to incremental deployment in) s
5 269 M
(    the current Internet.) s
5 247 M
(    We do not discuss proposals such as XCP in detail, but simply note) s
5 236 M
(    that there are a number of open questions.  One question concerns) s
5 225 M
(    whether there is a pressing need for more sophisticated congestion) s
5 214 M
(    control mechanisms such as XCP in the Internet.  Quick-Start is) s
5 203 M
(    inherently a rather crude tool that does not deliver assurances) s
5 192 M
(    about maintaining high link utilization and low queueing delay;) s
5 181 M
(    Quick-Start is designed for use in environments that are) s
5 170 M
(    significantly underutilized, and addresses the single question of) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.6.  [Page 47]) s
_R
S
%%Page: (48) 48
%%BeginPageSetup
_S
24 24 translate
/pagenum 48 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    whether a higher sending rate is allowed.  New congestion control) s
5 676 M
(    mechanisms with more fine-grained feedback from routers could allow) s
5 665 M
(    faster startups even in environments with rather high link) s
5 654 M
(    utilization.  Is this a pressing requirement?  Are the other) s
5 643 M
(    benefits of more fine-grained congestion control feedback from) s
5 632 M
(    routers a pressing requirement?) s
5 610 M
(    We would argue that even if more fine-grained per-packet feedback) s
5 599 M
(    from routers was implemented, it is reasonable to have a separate) s
5 588 M
(    mechanism such as Quick-Start for indicating an allowed initial) s
5 577 M
(    sending rate, or an allowed total sending rate after an idle or) s
5 566 M
(    underutilized period.) s
5 544 M
(    One fundamental difference between Quick-Start and current proposals) s
5 533 M
(    for fine-grained per-packet feedback is that the feedback of Quick-) s
5 522 M
(    Start is per-connection, giving an allowed sending rate for the) s
5 511 M
(    connection as a whole, while the proposals for per-packet feedback) s
5 500 M
(    for congestion control are about the increase or decrease in the) s
5 489 M
(    rate or window per-packet, when a particular data packet is) s
5 478 M
(    acknowledged.) s
5 456 M
(    A second difference is that unlike per-packet feedback, Quick-Start) s
5 445 M
(    lends itself to more than just a few bits of feedback from routers) s
5 434 M
(    to indicate the initial sending rate allowed by the router.  While) s
5 423 M
(    XCP also allocates a byte for per-packet feedback, there has been) s
5 412 M
(    discussion of variants of XCP with less per-packet feedback.  This) s
5 401 M
(    would be more like other proposals such as anti-ECN that use a) s
5 390 M
(    single bit of feedback from routers to indicate that the sender can) s
5 379 M
(    increase as fast as slow-starting, in response to this particular) s
5 368 M
(    packet acknowledgement.  In general, there is probably considerable) s
5 357 M
(    power in fine-grained proposals with only two bits of feedback,) s
5 346 M
(    indicating that the sender should decrease, maintain, or increase) s
5 335 M
(    the sending rate or window when this packet is acknowledged.) s
5 324 M
(    However, the power of Quick-Start would be considerably limited if) s
5 313 M
(    it was restricted to only two bits of feedback; it seems likely that) s
5 302 M
(    determining the initial sending rate fundamentally requires more) s
5 291 M
(    bits of feedback from routers than does the everyday, per-packet) s
5 280 M
(    feedback to increase or decrease the sending rate.) s
5 258 M
(    On a more practical level, one difference between Quick-Start and) s
5 247 M
(    proposals for per-packet feedback is that there are fewer open) s
5 236 M
(    issues with Quick-Start than there would be with a new congestion) s
5 225 M
(    control mechanism.  For example, for a mechanism for requesting a) s
5 214 M
(    initial sending rate, the fairness issues of a general congestion) s
5 203 M
(    control mechanism go away, and there is no need for the end nodes to) s
5 192 M
(    tell the routers the round-trip time and congestion window, as is) s
5 181 M
(    done in XCP; all that is needed is for the end nodes to report the) s
5 170 M
(    requested sending rate.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.6.  [Page 48]) s
_R
S
%%Page: (49) 49
%%BeginPageSetup
_S
24 24 translate
/pagenum 49 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(                                                     Proposals for) s
5 676 M
(                               Quick-Start           Per-Packet Feedback) s
5 665 M
(         +------------------+----------------------+----------------------+) s
5 654 M
(          Semantics:        | Allowed sending rate | Change in rate/window,) s
5 643 M
(                            |  per connection.     |  per-packet.) s
5 632 M
(         +------------------+----------------------+----------------------+) s
5 621 M
(          Relationship to   | In addition.         | Replacement.) s
5 610 M
(          congestion ctrl:  |                      |) s
5 599 M
(         +------------------+----------------------+----------------------+) s
5 588 M
(          Frequency:        | Start-up, or after   | Every packet.) s
5 577 M
(                            |  an idle period.     |) s
5 566 M
(         +------------------+----------------------+----------------------+) s
5 555 M
(          Limitations:      | Only useful on       | General congestion) s
5 544 M
(                            |  underutilized paths.|  control mechanism.) s
5 533 M
(         +------------------+----------------------+----------------------+) s
5 522 M
(          Input to routers: | Rate request.        | RTT, cwnd, request \(XCP\).) s
5 511 M
(                            |                      | None \(Anti-ECN\).) s
5 500 M
(         +------------------+----------------------+----------------------+) s
5 489 M
(          Bits of feedback: | One byte.            | A few bits would) s
5 478 M
(                            |                      |  suffice?) s
5 467 M
(         +------------------+----------------------+----------------------+) s
5 445 M
(           Differences between Quick-Start and Proposals for) s
5 434 M
(             Fine-Grained Per-Packet Feedback.) s
5 401 M
(    A separate question concerns whether mechanisms such as Quick-Start,) s
5 390 M
(    in combination with HighSpeed TCP and other changes in progress,) s
5 379 M
(    would make a significant contribution towards meeting some of these) s
5 368 M
(    needs for new congestion control mechanisms.  This could be viewed) s
5 357 M
(    as a positive step of meeting some of the current needs with a) s
5 346 M
(    simple and reasonably deployable mechanism, or alternately, as a) s
5 335 M
(    negative step of unnecessarily delaying more fundamental changes.) s
5 324 M
(    Without answering this question, we would note that our own approach) s
5 313 M
(    tends to favor the incremental deployment of relatively simple) s
5 302 M
(    mechanisms, as long as the simple mechanisms are not short-term) s
5 291 M
(    hacks but mechanisms that lead the overall architecture in the) s
5 280 M
(    fundamentally correct direction.) s
5 247 M
(A.7.  A QuickStart Nonce?) s
5 225 M
(    An earlier version of this document included a QuickStart Nonce that) s
5 214 M
(    was initialized by the sender to a non-zero, `random' eight-bit) s
5 203 M
(    number, along with a QS TTL that was initialized to the same value) s
5 192 M
(    at the TTL in the IP header.  The QuickStart Nonce would have been) s
5 181 M
(    returned by the TCP receiver to the TCP sender in the Quick-Start) s
5 170 M
(    Response.  A router could deny the Quick-Start request by failing to) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                      Section A.7.  [Page 49]) s
_R
S
%%Page: (50) 50
%%BeginPageSetup
_S
24 24 translate
/pagenum 50 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    decrement the QS TTL field, by zeroing the QS Nonce field, or by) s
5 676 M
(    deleting the Quick-Start Request from the packet header.  The QS) s
5 665 M
(    Nonce was included to provide some protection against broken) s
5 654 M
(    downstream routers, or against misbehaving TCP receivers who might) s
5 643 M
(    be inclined to lie about the Rate Request.  This protection is now) s
5 632 M
(    provided by the use of a random initial value for the QS TTL field.) s
5 610 M
(    With the old QuickStart Nonce, along with the QS TTL field set to) s
5 599 M
(    the same value as the TTL field in the IP header, the Quick-Start) s
5 588 M
(    Request mechanism would have been self-terminating; the Quick-Start) s
5 577 M
(    Request would terminate at the first participating router after a) s
5 566 M
(    non-participating router had been encountered on the path.  This) s
5 555 M
(    would have minimized unnecessary overhead incurred by routers) s
5 544 M
(    because of option processing for the Quick-Start Request.  Thus, one) s
5 533 M
(    disadvantage of the new approach with a random initial value for the) s
5 522 M
(    QS TTL field is that intermediate routers can no longer determine) s
5 511 M
(    when some upstream router has not understood the QuickStart option.) s
5 500 M
(    However, a disadvantage of the old approach was that it offered no) s
5 489 M
(    protection against downstream routers or the TCP receiver hiding) s
5 478 M
(    evidence of upstream routers that do not understand the QuickStart) s
5 467 M
(    option.) s
5 434 M
(Normative References) s
5 412 M
(    [RFC793] J. Postel, Transmission Control Protocol, RFC 793,) s
5 401 M
(    September 1981.) s
5 379 M
(    [RFC1191] Mogul, J. and S. Deering, Path MTU Discovery, RFC 1191,) s
5 368 M
(    November 1990.) s
5 346 M
(    [RFC2460] S. Deering and R. Hinden. Internet Protocol, Version 6) s
5 335 M
(    \(IPv6\) Specification. RFC 2460, December 1998.) s
5 313 M
(    [RFC2581] M. Allman, V. Paxson, and W. Stevens. TCP Congestion) s
5 302 M
(    Control.  RFC 2581. April 1999.) s
5 280 M
(    [RFC3168] Ramakrishnan, K.K., Floyd, S., and Black, D.  The Addition) s
5 269 M
(    of Explicit Congestion Notification \(ECN\) to IP.  RFC 3168, Proposed) s
5 258 M
(    Standard, September 2001.) s
5 236 M
(    [RFC3390] M. Allman, S. Floyd, and C. Partridge. Increasing TCP's) s
5 225 M
(    Initial Window. RFC 3390, October 2002.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 50]) s
_R
S
%%Page: (51) 51
%%BeginPageSetup
_S
24 24 translate
/pagenum 51 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(Informative References) s
5 665 M
(    [RFC792] J. Postel. Internet Control Message Protocol. RFC 792,) s
5 654 M
(    September 1981.) s
5 632 M
(    [RFC1812] F. Baker \(ed.\). Requirements for IP Version 4 Routers. RFC) s
5 621 M
(    1812, June 1995.) s
5 599 M
(    [RFC2140] J. Touch. TCP Control Block Interdependence.  RFC 2140.) s
5 588 M
(    April 1997.) s
5 566 M
(    [RFC2205] R. Braden, et al. Resource ReSerVation Protocol \(RSVP\) --) s
5 555 M
(    Version 1 Functional Specification. RFC 2205, September 1997.) s
5 533 M
(    [RFC2309] B. Braden, D. Clark, J. Crowcroft, B. Davie, S. Deering,) s
5 522 M
(    D. Estrin, S. Floyd, V. Jacobson, G. Minshall, C. Partridge, L.) s
5 511 M
(    Peterson, K.  Ramakrishnan, S. Shenker, J. Wroclawski, L. Zhang,) s
5 500 M
(    Recommendations on Queue Management and Congestion Avoidance in the) s
5 489 M
(    Internet, RFC 2309, April 1998.) s
5 467 M
(    [RFC2401] S. Kent and R. Atkinson. Security Architecture for the) s
5 456 M
(    Internet Protocol. RFC 2401, November 1998.) s
5 434 M
(    [RFC2415] K. Poduri and K. Nichols. Simulation Studies of Increased) s
5 423 M
(    Initial TCP Window Size. RFC 2415. September 1998.) s
5 401 M
(    [RFC2416] T. Shepard and C. Partridge.  When TCP Starts Up With Four) s
5 390 M
(    Packets Into Only Three Buffers.  RFC 2416. September 1998.) s
5 368 M
(    [RFC2463] A. Conta and S. Deering. Internet Control Message Protocol) s
5 357 M
(    \(ICMPv6\) for the Internet Protocol Version 6 \(IPv6\) Specification.) s
5 346 M
(    RFC 2463, December 1998.) s
5 324 M
(    [RFC2488] M. Allman, D. Glover, and L. Sanchez. Enhancing TCP Over) s
5 313 M
(    Satellite Channels using Standard Mechanisms. RFC 2488. January) s
5 302 M
(    1999.) s
5 280 M
(    [RFC2960] R. Stewart, et. al. Stream Control Transmission Protocol.) s
5 269 M
(    RFC 2960, October 2000.) s
5 247 M
(    [RFC3124] H. Balakrishnan and S. Seshan. The Congestion Manager. RFC) s
5 236 M
(    3124. June 2001.) s
5 214 M
(    [RFC3344] C. Perkins \(ed.\). IP Mobility Support for IPv4. RFC 3344,) s
5 203 M
(    August 2002.) s
5 181 M
(    [RFC3360] S. Floyd.  Inappropriate TCP Resets Considered Harmful.) s
5 170 M
(    RFC 3360, August 2002.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 51]) s
_R
S
%%Page: (52) 52
%%BeginPageSetup
_S
24 24 translate
/pagenum 52 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    [RFC3775] D. Johnson, C. Perkins, and J. Arkko. Mobility Support in) s
5 676 M
(    IPv6. RFC 3775, June 2004.) s
5 654 M
(    [AHO98] M. Allman, C. Hayes and S. Ostermann. An evaluation of TCP) s
5 643 M
(    with Larger Initial Windows. ACM Computer Communication Review, July) s
5 632 M
(    1998.) s
5 610 M
(    [BW97] G. Brasche and B. Walke. Concepts, Services and Protocols of) s
5 599 M
(    the new GSM Phase 2+ General Packet Radio Service. IEEE) s
5 588 M
(    Communications Magazine, pages 94--104, August 1997.) s
5 566 M
(    [FF99] Floyd, S., and Fall, K., Promoting the Use of End-to-End) s
5 555 M
(    Congestion Control in the Internet, IEEE/ACM Transactions on) s
5 544 M
(    Networking, August 1999.) s
5 522 M
(    [F02] Floyd, S., HighSpeed TCP for Large Congestion Windows,) s
5 511 M
(    internet-draft draft-floyd-tcp-highspeed-01.txt, work in progress,) s
5 500 M
(    August 2002.) s
5 478 M
(    [F02a] Floyd, S., Limited Slow-Start for TCP with Large Congestion) s
5 467 M
(    Windows, internet-draft draft draft-floyd-tcp-slowstart-01.txt, work) s
5 456 M
(    in progress, August 2002.) s
5 434 M
(    [GPAR02] A. Gurtov, M. Passoja, O. Aalto, and M. Raitola. Multi-) s
5 423 M
(    Layer Protocol Tracing in a GPRS Network. In Proceedings of the IEEE) s
5 412 M
(    Vehicular Technology Conference \(Fall VTC2002\), Vancouver, Canada,) s
5 401 M
(    September 2002.) s
5 379 M
(    [Jac88] V. Jacobson, Congestion Avoidance and Control, ACM SIGCOMM) s
5 357 M
(    [JD02] Manish Jain, Constantinos Dovrolis, End-to-End Available) s
5 346 M
(    Bandwidth: Measurement Methodology, Dynamics, and Relation with TCP) s
5 335 M
(    Throughput, SIGCOMM 2002.) s
5 313 M
(    [KHR02] Dina Katabi, Mark Handley, and Charles Rohrs, Internet) s
5 302 M
(    Congestion Control for Future High Bandwidth-Delay Product) s
5 291 M
(    Environments. ACM Sigcomm 2002, August 2002.  URL) s
5 280 M
(    "http://ana.lcs.mit.edu/dina/XCP/".) s
5 258 M
(    [KHF04] E. Kohler, M. Handley, and S. Floyd, Datagram Congestion) s
5 247 M
(    Control Protocol \(DCCP\), internet draft draft-ietf-dccp-spec-07.txt,) s
5 236 M
(    work in progress, July 2004.) s
5 214 M
(    [K03] S. Kunniyur, "AntiECN Marking: A Marking Scheme for High) s
5 203 M
(    Bandwidth Delay Connections", Proceedings, IEEE ICC '03, May 2003.) s
5 192 M
(    URL "http://www.seas.upenn.edu/~kunniyur/".) s
5 170 M
(    [KAPS02] Rajesh Krishnan, Mark Allman, Craig Partridge, James P.G.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 52]) s
_R
S
%%Page: (53) 53
%%BeginPageSetup
_S
24 24 translate
/pagenum 53 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Sterbenz. Explicit Transport Error Notification \(ETEN\) for Error-) s
5 676 M
(    Prone Wireless and Satellite Networks. Technical Report No. 8333,) s
5 665 M
(    BBN Technologies, March 2002.  URL) s
5 654 M
(    "http://roland.lerc.nasa.gov/~mallman/papers/".) s
5 632 M
(    [MAF04] Alberto Medina, Mark Allman, and Sally Floyd, Measuring) s
5 621 M
(    Interactions Between Transport Protocols and Middleboxes, Internet) s
5 610 M
(    Measurement Conference 2004, August 2004.  URL) s
5 599 M
(    "http://www.icir.org/tbit/".) s
5 577 M
(    [PK98] Venkata N. Padmanabhan and Randy H. Katz, TCP Fast Start: A) s
5 566 M
(    Technique For Speeding Up Web Transfers, IEEE GLOBECOM '98, November) s
5 555 M
(    1998.) s
5 533 M
(    [P00] Joon-Sang Park, Bandwidth Discovery of a TCP Connection,) s
5 522 M
(    report to John Jeidemann, 2000, private communication.  Citation for) s
5 511 M
(    acknowledgement purposes only.) s
5 489 M
(    [PRAKS02] Craig Partridge, Dennis Rockwell, Mark Allman, Rajesh) s
5 478 M
(    Krishnan, James P.G. Sterbenz. A Swifter Start for TCP. Technical) s
5 467 M
(    Report No. 8339, BBN Technologies, March 2002.  URL) s
5 456 M
(    "http://roland.lerc.nasa.gov/~mallman/papers/".) s
5 434 M
(    [S02] Ion Stoica, private communication, 2002.  Citation for) s
5 423 M
(    acknowledgement purposes only.) s
5 401 M
(    [SH02] Srikanth Sundarrajan and John Heidemann.  Study of TCP Quick) s
5 390 M
(    Start with NS-2.  Class Project, December 2002.  Not publically) s
5 379 M
(    available; citation for acknowledgement purposes only.) s
5 357 M
(    [W00] Michael Welzl: PTP: Better Feedback for Adaptive Distributed) s
5 346 M
(    Multimedia Applications on the Internet, IPCCC 2000 \(19th IEEE) s
5 335 M
(    International Performance, Computing, And Communications) s
5 324 M
(    Conference\), Phoenix, Arizona, USA, 20-22 February 2000.  URL) s
5 313 M
(    "http://informatik.uibk.ac.at/users/c70370/research/publications/".) s
5 291 M
(    [W03] Michael Welzl, PMTU-Options: Path MTU Discovery Using Options,) s
5 280 M
(    expired internet-draft draft-welzl-pmtud-options-01.txt, work-in-) s
5 269 M
(    progress.  February 2003.) s
5 236 M
(IANA Considerations) s
5 214 M
(    The only IANA Considerations would be the addition of an IP option) s
5 203 M
(    to the list of IP options, and the addition of a TCP option to the) s
5 192 M
(    list of TCP options.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 53]) s
_R
S
%%Page: (54) 54
%%BeginPageSetup
_S
24 24 translate
/pagenum 54 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(AUTHORS' ADDRESSES) s
5 654 M
(    Amit Jain) s
5 643 M
(    F5 Networks) s
5 632 M
(    Email : a.jain@f5.com) s
5 610 M
(    Sally Floyd) s
5 599 M
(    Phone: +1 \(510\) 666-2989) s
5 588 M
(    ICIR \(ICSI Center for Internet Research\)) s
5 577 M
(    Email: floyd@icir.org) s
5 566 M
(    URL: http://www.icir.org/floyd/) s
5 544 M
(    Pasi Sarolahti) s
5 533 M
(    Nokia Research Center) s
5 522 M
(    P.O. Box 407) s
5 511 M
(    FI-00045 NOKIA GROUP) s
5 500 M
(    Finland) s
5 489 M
(    Phone: +358 50 4876607) s
5 478 M
(    Email: pasi.sarolahti@iki.fi) s
5 445 M
(Full Copyright Statement) s
5 423 M
(    Copyright \(C\) The Internet Society 2004.  This document is subject) s
5 412 M
(    to the rights, licenses and restrictions contained in BCP 78, and) s
5 401 M
(    except as set forth therein, the authors retain all their rights.) s
5 379 M
(    This document and the information contained herein are provided on) s
5 368 M
(    an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE) s
5 357 M
(    REPRESENTS OR IS SPONSORED BY \(IF ANY\), THE INTERNET SOCIETY AND THE) s
5 346 M
(    INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR) s
5 335 M
(    IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF) s
5 324 M
(    THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED) s
5 313 M
(    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.) s
5 280 M
(Intellectual Property) s
5 258 M
(    The IETF takes no position regarding the validity or scope of any) s
5 247 M
(    Intellectual Property Rights or other rights that might be claimed) s
5 236 M
(    to pertain to the implementation or use of the technology described) s
5 225 M
(    in this document or the extent to which any license under such) s
5 214 M
(    rights might or might not be available; nor does it represent that) s
5 203 M
(    it has made any independent effort to identify any such rights.) s
5 192 M
(    Information on the procedures with respect to rights in RFC) s
5 181 M
(    documents can be found in BCP 78 and BCP 79.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 54]) s
_R
S
%%Page: (55) 55
%%BeginPageSetup
_S
24 24 translate
/pagenum 55 def
/fname (quickstart.txt) def
/fdir () def
/ftail (quickstart.txt) def
/user_header_p false def
%%EndPageSetup
5 720 M
(INTERNET-DRAFT             Expires: March 2005            September 2004) s
5 687 M
(    Copies of IPR disclosures made to the IETF Secretariat and any) s
5 676 M
(    assurances of licenses to be made available, or the result of an) s
5 665 M
(    attempt made to obtain a general license or permission for the use) s
5 654 M
(    of such proprietary rights by implementers or users of this) s
5 643 M
(    specification can be obtained from the IETF on-line IPR repository) s
5 632 M
(    at http://www.ietf.org/ipr.) s
5 610 M
(    The IETF invites any interested party to bring to its attention any) s
5 599 M
(    copyrights, patents or patent applications, or other proprietary) s
5 588 M
(    rights that may cover technology that may be required to implement) s
5 577 M
(    this standard.  Please address the information to the IETF at ietf-) s
5 566 M
(    ipr@ietf.org.) s
5 126 M
(Jain/Floyd/Allman/Sarolahti                                    [Page 55]) s
_R
S
%%Trailer
%%Pages: 55
%%DocumentNeededResources: font Courier-Bold Courier 
%%EOF

PAFTECH AB 2003-20262026-04-23 02:49:20