One document matched: draft-floyd-tcp-highspeed-02.ps


%!PS-Adobe-3.0
%%BoundingBox: 24 24 588 768
%%Title: Enscript Output
%%For: Sally Floyd
%%Creator: GNU enscript 1.6.1
%%CreationDate: Wed Feb 19 14:48:16 2003
%%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 (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 665 M
(Internet Engineering Task Force                              Sally Floyd) s
5 654 M
(INTERNET DRAFT                                                      ICSI) s
5 643 M
(draft-floyd-tcp-highspeed-02.txt                          February, 2003) s
5 599 M
(               HighSpeed TCP for Large Congestion Windows) s
5 555 M
(                          Status of this Memo) s
5 522 M
(   This document is an Internet-Draft and is in full conformance with) s
5 511 M
(   all provisions of Section 10 of RFC2026.) s
5 489 M
(   Internet-Drafts are working documents of the Internet Engineering) s
5 478 M
(   Task Force \(IETF\), its areas, and its working groups.  Note that) s
5 467 M
(   other groups may also distribute working documents as Internet-) s
5 456 M
(   Drafts.) s
5 434 M
(   Internet-Drafts are draft documents valid for a maximum of six months) s
5 423 M
(   and may be updated, replaced, or obsoleted by other documents at any) s
5 412 M
(   time.  It is inappropriate to use Internet- Drafts as reference) s
5 401 M
(   material or to cite them other than as "work in progress.") s
5 379 M
(   The list of current Internet-Drafts can be accessed at) s
5 368 M
(   http://www.ietf.org/ietf/1id-abstracts.txt) s
5 346 M
(   The list of Internet-Draft Shadow Directories can be accessed at) s
5 335 M
(   http://www.ietf.org/shadow.html.) s
5 313 M
(Abstract) s
5 291 M
(   This document proposes HighSpeed TCP, a modification to TCP's) s
5 280 M
(   congestion control mechanism for use with TCP connections with large) s
5 269 M
(   congestion windows.  The congestion control mechanisms of the current) s
5 258 M
(   Standard TCP constrains the congestion windows that can be achieved) s
5 247 M
(   by TCP in realistic environments.  For example, for a Standard TCP) s
5 236 M
(   connection with 1500-byte packets and a 100 ms round-trip time,) s
5 225 M
(   achieving a steady-state throughput of 10 Gbps would require an) s
5 214 M
(   average congestion window of 83,333 segments, and a packet drop rate) s
5 203 M
(   of at most one congestion event every 5,000,000,000 packets \(or) s
5 192 M
(   equivalently, at most one congestion event every 1 2/3 hours\).  This) s
5 181 M
(   is widely acknowledged as an unrealistic constraint.  To address this) s
5 170 M
(   limitation of TCP, this document proposes HighSpeed TCP, and solicits) s
5 159 M
(   experimentation and feedback from the wider community.) s
5 104 M
(Floyd                         Experimental                      [Page 1]) s
_R
S
%%Page: (2) 2
%%BeginPageSetup
_S
24 24 translate
/pagenum 2 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   TO BE DELETED BY THE RFC EDITOR UPON PUBLICATION:) s
5 643 M
(   Changes from draft-floyd-tcp-highspeed-01.txt:) s
5 621 M
(   * Added a section on "Tradeoffs for Choosing Congestion Control) s
5 610 M
(   Parameters".) s
5 588 M
(   * Added mention of Scalable TCP from Tom Kelly.) s
5 566 M
(   Changes from draft-floyd-tcp-highspeed-00.txt:) s
5 544 M
(   * Added a discussion on related work about changing the PMTU.) s
5 522 M
(   * Added a discussion of an alternate, linear response function.) s
5 500 M
(   * Added a discussion of the TCP window scale option.) s
5 478 M
(   * Added a discussion of HighSpeed TCP as roughly emulating the) s
5 467 M
(   congestion control response of N parallel TCP connections.) s
5 445 M
(   * Added a discussion of the time to converge to fairness.) s
5 423 M
(   * Expanded the Introduction.) s
5 401 M
(1.  Introduction.) s
5 379 M
(   This document proposes HighSpeed TCP, a modification to TCP's) s
5 368 M
(   congestion control mechanism for use with TCP connections with large) s
5 357 M
(   congestion windows.  In a steady-state environment, with a packet) s
5 346 M
(   loss rate p, the current Standard TCP's average congestion window is) s
5 335 M
(   roughly 1.2/sqrt\(p\) segments.  This places a serious constraint on) s
5 324 M
(   the congestion windows that can be achieved by TCP in realistic) s
5 313 M
(   environments.  For example, for a Standard TCP connection with) s
5 302 M
(   1500-byte packets and a 100 ms round-trip time, achieving a steady-) s
5 291 M
(   state throughput of 10 Gbps would require an average congestion) s
5 280 M
(   window of 83,333 segments, and a packet drop rate of at most one) s
5 269 M
(   congestion event every 5,000,000,000 packets \(or equivalently, at) s
5 258 M
(   most one congestion event every 1 2/3 hours\).) s
5 236 M
(   To address this fundamental limitation of TCP and of the TCP response) s
5 225 M
(   function \(the function mapping the steady-state packet drop rate to) s
5 214 M
(   TCP's average sending rate in packets per round-trip time\), this) s
5 203 M
(   document proposes modifying the TCP response function for regimes) s
5 192 M
(   with higher congestion windows.  This document also solicits) s
5 181 M
(   experimentation and feedback on HighSpeed TCP from the wider) s
5 170 M
(   community.) s
5 148 M
(   Because HighSpeed TCP's modified response function would only take) s
5 104 M
(Floyd                         Experimental                      [Page 2]) s
_R
S
%%Page: (3) 3
%%BeginPageSetup
_S
24 24 translate
/pagenum 3 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   effect with higher congestion windows, HighSpeed TCP does not modify) s
5 654 M
(   TCP behavior in environments with mild to heavy congestion, and) s
5 643 M
(   therefore does not introduce any new dangers of congestion collapse.) s
5 632 M
(   However, if relative fairness between HighSpeed TCP connections is to) s
5 621 M
(   be preserved, then in our view any modification to the TCP response) s
5 610 M
(   function should be globally-agreed-upon in the IETF, rather than made) s
5 599 M
(   as ad hoc decisions by individual implementors or TCP senders.) s
5 588 M
(   Modifications to the TCP response function would also have) s
5 577 M
(   implications for transport protocols that use TFRC and other forms of) s
5 566 M
(   equation-based congestion control, as these congestion control) s
5 555 M
(   mechanisms directly use the TCP response function [TFRC].) s
5 533 M
(   This proposal for HighSpeed TCP focuses specifically on a proposed) s
5 522 M
(   change to the TCP response function, and its implications for TCP.) s
5 511 M
(   This document does not address what we view as a separate fundamental) s
5 500 M
(   issue, of the mechanisms required to enable best-effort connections) s
5 489 M
(   to *start* with large initial windows.  In our view, while HighSpeed) s
5 478 M
(   TCP proposes a somewhat fundamental change to the TCP response) s
5 467 M
(   function, at the same time it is a relatively simple change to) s
5 456 M
(   implement in a single TCP sender, and presents no dangers in terms of) s
5 445 M
(   congestion collapse.  In contrast, in our view, the problem of) s
5 434 M
(   enabling connections to *start* with large initial windows is) s
5 423 M
(   inherently more risky and structurally more difficult, requiring some) s
5 412 M
(   form of explicit feedback from all of the routers along the path.) s
5 401 M
(   This is another reason why we would propose addressing the problem of) s
5 390 M
(   starting with large initial windows separately, and on a separate) s
5 379 M
(   timetable, from the problem of modifying the TCP response function.) s
5 357 M
(2.  The Problem Description.) s
5 335 M
(   This section describes the number of round-trip times between) s
5 324 M
(   congestion events required for a Standard TCP flow to achieve an) s
5 313 M
(   average throughput of B bps, given packets of D bytes and a round-) s
5 302 M
(   trip time of R seconds.  A congestion event refers to a window of) s
5 291 M
(   data with one or more dropped or ECN-marked packets \(where ECN stands) s
5 280 M
(   for Explicit Congestion Notification\).) s
5 258 M
(   From Appendix A, achieving an average TCP throughput of B bps) s
5 247 M
(   requires a loss event at most every BR/\(12D\) round-trip times.  This) s
5 236 M
(   is illustrated in Table 1, for R = 0.1 seconds and D = 1500 bytes.) s
5 225 M
(   The table also gives the average congestion window W of BR/\(8D\), and) s
5 214 M
(   the steady-state packet drop rate P of 1.5/W^2.) s
5 104 M
(Floyd                         Experimental                      [Page 3]) s
_R
S
%%Page: (4) 4
%%BeginPageSetup
_S
24 24 translate
/pagenum 4 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(    TCP Throughput \(Mbps\)   RTTs Between Losses       W       P) s
5 654 M
(    ---------------------   -------------------   ------    -----) s
5 643 M
(                1                    5.5             8.3    0.02) s
5 632 M
(               10                   55.5            83.3    0.0002) s
5 621 M
(              100                  555.5           833.3    0.000002) s
5 610 M
(             1000                 5555.5          8333.3    0.00000002) s
5 599 M
(            10000                55555.5         83333.3    0.0000000002) s
5 577 M
(   Table 1: RTTs Between Congestion Events for Standard TCP, for) s
5 566 M
(   1500-Byte Packets and a Round-Trip Time of 0.1 Seconds.) s
5 544 M
(   This document proposes HighSpeed TCP, a minimal modification to TCP's) s
5 533 M
(   increase and decrease parameters, for TCP connections with larger) s
5 522 M
(   congestion windows, to allow TCP to achieve high throughput with more) s
5 511 M
(   realistic requirements for the steady-state packet drop rate.) s
5 500 M
(   Equivalently, HighSpeed TCP has more realistic requirements for the) s
5 489 M
(   number of round-trip times between loss events.) s
5 467 M
(3.  Design Guidelines.) s
5 445 M
(   Our proposal for HighSpeed TCP is motivated by the following) s
5 434 M
(   requirements:) s
5 412 M
(   * Achieve high per-connection throughput without requiring) s
5 401 M
(   unrealistically low packet loss rates.) s
5 379 M
(   * Reach high throughput reasonably quickly when in slow-start.) s
5 357 M
(   * Reach high throughput without overly long delays when recovering) s
5 346 M
(   from multiple retransmit timeouts, or when ramping-up from a period) s
5 335 M
(   with small congestion windows.) s
5 313 M
(   * No additional feedback or support required from routers:) s
5 291 M
(   For example, the goal is for acceptable performance in both ECN-) s
5 280 M
(   capable and non-ECN-capable environments, and with Drop-Tail as well) s
5 269 M
(   as with Active Queue Management such as RED in the routers.) s
5 247 M
(   * No additional feedback required from TCP receivers.) s
5 225 M
(   * TCP-compatible performance in environments with moderate or high) s
5 214 M
(   congestion:) s
5 192 M
(   Equivalently, the requirement is that there be no additional load on) s
5 181 M
(   the network \(in terms of increased packet drop rates\) in environments) s
5 170 M
(   with moderate or high congestion.) s
5 148 M
(   * Performance at least as good as Standard TCP in environments with) s
5 104 M
(Floyd                         Experimental                      [Page 4]) s
_R
S
%%Page: (5) 5
%%BeginPageSetup
_S
24 24 translate
/pagenum 5 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   moderate or high congestion.) s
5 643 M
(   * Acceptable transient performance, in terms of increases in the) s
5 632 M
(   congestion window in one round-trip time, responses to severe) s
5 621 M
(   congestion, and convergence times to fairness.) s
5 599 M
(   Currently, users wishing to achieve throughputs of 1Gbps or more) s
5 588 M
(   typically open up multiple TCP connections in parallel, or use MulTCP) s
5 577 M
(   [CO98,GRK99], which behaves roughly like the aggregate of N virtual) s
5 566 M
(   TCP connections.  While this approach suffices for the occasional) s
5 555 M
(   user on well-provisioned links, it leaves the parameter N to be) s
5 544 M
(   determined by the user, and results in more aggressive performance) s
5 533 M
(   and higher steady-state packet drop rates if used in environments) s
5 522 M
(   with periods of moderate or high congestion.  We believe that a new) s
5 511 M
(   approach is needed that offers more flexibility, more effectively) s
5 500 M
(   scales to a wide range of available bandwidths, and competes more) s
5 489 M
(   fairly with Standard TCP in congested environments.) s
5 467 M
(4.  Non-Goals.) s
5 445 M
(   The following are explicitly *not* goals of our work:) s
5 423 M
(   * Non-goal: TCP-compatible performance in environments with very low) s
5 412 M
(   packet drop rates.) s
5 390 M
(   We note that our proposal does not require, or deliver, TCP-) s
5 379 M
(   compatible performance in environments with very low packet drop) s
5 368 M
(   rates, e.g., with packet loss rates of 10^-5 or 10^-6.  As we discuss) s
5 357 M
(   later in this document, we assume that Standard TCP is unable to make) s
5 346 M
(   effective use of the available bandwidth in environments with loss) s
5 335 M
(   rates of 10^-6 in any case, so that it is acceptable and appropriate) s
5 324 M
(   for HighSpeed TCP to perform more aggressively than Standard TCP is) s
5 313 M
(   such an environment.) s
5 291 M
(   * Non-goal: Ramping-up more quickly than allowed by slow-start.) s
5 269 M
(   It is our belief that ramping-up more quickly than allowed by slow-) s
5 258 M
(   start would necessitate more explicit feedback from routers along the) s
5 247 M
(   path.  The proposal for HighSpeed TCP is focused on changes to TCP) s
5 236 M
(   that could be effectively deployed in the current Internet) s
5 225 M
(   environment.) s
5 203 M
(   * Non-goal: Avoiding oscillations in environments with only one-way,) s
5 192 M
(   long-lived flows all with the same round-trip times.) s
5 170 M
(   While we agree that attention to oscillatory behavior is useful,) s
5 159 M
(   avoiding oscillations in aggregate throughput has not been our) s
5 148 M
(   primary consideration, particularly for simplified environments) s
5 104 M
(Floyd                         Experimental                      [Page 5]) s
_R
S
%%Page: (6) 6
%%BeginPageSetup
_S
24 24 translate
/pagenum 6 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   limited to one-way, long-lived flows all with the same, large round-) s
5 654 M
(   trip times.  Our assessment is that some oscillatory behavior in) s
5 643 M
(   these extreme environments is an acceptable price to pay for the) s
5 632 M
(   other benefits of HighSpeed TCP.) s
5 610 M
(5.  Modifying the TCP Response Function.) s
5 588 M
(   The TCP response function, w = 1.2/sqrt\(p\), gives TCP's average) s
5 577 M
(   congestion window w in MSS-sized segments, as a function of the) s
5 566 M
(   steady-state packet drop rate p [FF98].  This TCP response function) s
5 555 M
(   is a direct consequence of TCP's Additive Increase Multiplicative) s
5 544 M
(   Decrease \(AIMD\) mechanisms of increasing the congestion window by) s
5 533 M
(   roughly one segment per round-trip time in the absence of congestion,) s
5 522 M
(   and halving the congestion window in response to a round-trip time) s
5 511 M
(   with a congestion event.  This response function for Standard TCP is) s
5 500 M
(   reflected in the table below.  In this proposal we restrict our) s
5 489 M
(   attention to TCP performance in environments with packet loss rates) s
5 478 M
(   of at most 10^-2, and so we can ignore the more complex response) s
5 467 M
(   functions that are required to model TCP performance in more) s
5 456 M
(   congested environments with retransmit timeouts.  From Appendix A, an) s
5 445 M
(   average congestion window of W corresponds to an average of W/1.5) s
5 434 M
(   round-trip times between loss events for Standard TCP.) s
5 412 M
(       Packet Drop Rate P   Congestion Window W    RTTs Between Losses) s
5 401 M
(       ------------------   -------------------    -------------------) s
5 390 M
(              10^-2                     12                8) s
5 379 M
(              10^-3                     38               25) s
5 368 M
(              10^-4                    120               80) s
5 357 M
(              10^-5                    379              252) s
5 346 M
(              10^-6                   1200              800) s
5 335 M
(              10^-7                   3795             2530) s
5 324 M
(              10^-8                  12000             8000) s
5 313 M
(              10^-9                  37948            25298) s
5 302 M
(              10^-10                120000            80000) s
5 280 M
(   Table 2: TCP Response Function for Standard TCP.  The average) s
5 269 M
(   congestion window W in MSS-sized segments is given as a function of) s
5 258 M
(   the packet drop rate P.) s
5 236 M
(   To specify a modified response function for HighSpeed TCP, we use) s
5 225 M
(   three parameters, Low_Window, High_Window, and High_P.  To ensure TCP) s
5 214 M
(   compatibility, the HighSpeed response function uses the same response) s
5 203 M
(   function as Standard TCP when the current congestion window is at) s
5 192 M
(   most Low_Window, and uses the HighSpeed response function when the) s
5 181 M
(   current congestion window is greater than Low_Window.  In this) s
5 170 M
(   document we set Low_Window to 38 MSS-sized segments, corresponding to) s
5 159 M
(   a packet drop rate of 10^-3 for TCP.) s
5 104 M
(Floyd                         Experimental                      [Page 6]) s
_R
S
%%Page: (7) 7
%%BeginPageSetup
_S
24 24 translate
/pagenum 7 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   To specify the upper end of the HighSpeed response function, we) s
5 654 M
(   specify the packet drop rate needed in the HighSpeed response) s
5 643 M
(   function to achieve an average congestion window of 83000 segments.) s
5 632 M
(   This is roughly the window needed to sustain 10Gbps throughput, for a) s
5 621 M
(   TCP connection with the default packet size and round-trip time used) s
5 610 M
(   earlier in this document.  For High_Window set to 83000, we specify) s
5 599 M
(   High_P of 10^-7; that is, with HighSpeed TCP a packet drop rate of) s
5 588 M
(   10^-7 allows the HighSpeed TCP connection to achieve an average) s
5 577 M
(   congestion window of 83000 segments.  We believe that this loss rate) s
5 566 M
(   sets an achieveable target for high-speed environments, while still) s
5 555 M
(   allowing acceptable fairness for the HighSpeed response function when) s
5 544 M
(   competing with Standard TCP in environments with packet drop rates of) s
5 533 M
(   10^-4 or 10^5.) s
5 511 M
(   For simplicity, for the HighSpeed response function we maintain the) s
5 500 M
(   property that the response function gives a straight line on a log-) s
5 489 M
(   log scale \(as does the response function for Standard TCP, for low to) s
5 478 M
(   moderate congestion\).  This results in the following response) s
5 467 M
(   function, for values of the average congestion window W greater than) s
5 456 M
(   Low_Window:) s
5 434 M
(     W = \(p/Low_P\)^S Low_Window,) s
5 412 M
(   for Low_P the packet drop rate corresponding to Low_Window, and for S) s
5 401 M
(   as following constant [FRS02]:) s
5 379 M
(     S = \(log High_Window - log Low_Window\)/\(log High_P - log Low_P\).) s
5 357 M
(   For example, for Low_Window set to 38, we have Low_P of 10^-3 \(for) s
5 346 M
(   compatibility with Standard TCP\).  Thus, for High_Window set to 83000) s
5 335 M
(   and High_P set to 10^-7, we get the following response function:) s
5 313 M
(     W = 0.12/p^0.835.                                    \(1\)) s
5 291 M
(   This HighSpeed response function is illustrated in Table 3 below.) s
5 280 M
(   For HighSpeed TCP, the number of round-trip times between losses,) s
5 269 M
(   1/\(pW\), equals 12.7 W^0.2, for W > 38 segments.) s
5 104 M
(Floyd                         Experimental                      [Page 7]) s
_R
S
%%Page: (8) 8
%%BeginPageSetup
_S
24 24 translate
/pagenum 8 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(       Packet Drop Rate P   Congestion Window W    RTTs Between Losses) s
5 654 M
(       ------------------   -------------------    -------------------) s
5 643 M
(              10^-2                    12                   8) s
5 632 M
(              10^-3                    38                  25) s
5 621 M
(              10^-4                   263                  38) s
5 610 M
(              10^-5                  1795                  57) s
5 599 M
(              10^-6                 12279                  83) s
5 588 M
(              10^-7                 83981                 123) s
5 577 M
(              10^-8                574356                 180) s
5 566 M
(              10^-9               3928088                 264) s
5 555 M
(              10^-10             26864653                 388) s
5 533 M
(   Table 3: TCP Response Function for HighSpeed TCP.  The average) s
5 522 M
(   congestion window W in MSS-sized segments is given as a function of) s
5 511 M
(   the packet drop rate P.) s
5 489 M
(   We believe that the problem of backward compatibility with Standard) s
5 478 M
(   TCP requires a response function that is quite close to that of) s
5 467 M
(   Standard TCP for loss rates of 10^-1, 10^-2, or 10^-3.  We believe,) s
5 456 M
(   however, that such stringent TCP-compatibility is not required for) s
5 445 M
(   smaller loss rates, and that an appropriate response function is one) s
5 434 M
(   that gives a plausible packet drop rate for a connection throughput) s
5 423 M
(   of 10Gbps.  This also gives a slowly increasing number of round-trip) s
5 412 M
(   times between loss events as a function of a decreasing packet drop) s
5 401 M
(   rate.) s
5 379 M
(   Another way to look at the HighSpeed response function is to consider) s
5 368 M
(   that HighSpeed TCP is roughly emulating the congestion control) s
5 357 M
(   response of N parallel TCP connections, where N is initially one, and) s
5 346 M
(   where N increases as a function of the HighSpeed TCP's congestion) s
5 335 M
(   window.  Thus for the HighSpeed response function in Equation \(1\)) s
5 324 M
(   above, the response function can be viewed as equivalent to that of) s
5 313 M
(   N\(W\) parallel TCP connections, where N\(W\) varies as a function of the) s
5 302 M
(   congestion window W.  Recall that for a single standard TCP) s
5 291 M
(   connection, the average congestion window equals 1.2/sqrt\(p\).  For N) s
5 280 M
(   parallel TCP connections, the aggregate congestion window W_n equals) s
5 269 M
(   N*1.2/sqrt\(p\).  From the HighSpeed response function in Equation \(1\)) s
5 258 M
(   and the relationship above, we can derive the following:) s
5 236 M
(    N\(W\) = 0.23*W^\(0.4\)) s
5 214 M
(   for N\(W\) the number of parallel TCP connections emulated by the) s
5 203 M
(   HighSpeed TCP response function, and for N\(W\) >= 1.  This is shown in) s
5 192 M
(   Table 4 below.) s
5 104 M
(Floyd                         Experimental                      [Page 8]) s
_R
S
%%Page: (9) 9
%%BeginPageSetup
_S
24 24 translate
/pagenum 9 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(       Congestion Window W         Number N\(W\) of Parallel TCPs) s
5 654 M
(       -------------------         -------------------------) s
5 643 M
(                1                            1) s
5 632 M
(               10                            1) s
5 621 M
(              100                            1.4) s
5 610 M
(            1,000                            3.6) s
5 599 M
(           10,000                            9.2) s
5 588 M
(          100,000                           23.0) s
5 566 M
(   Table 4: Number N\(W\) of parallel TCP connections roughly emulated by) s
5 555 M
(   the HighSpeed TCP response function.) s
5 533 M
(   We do not in this document attempt to seriously evaluate the) s
5 522 M
(   HighSpeed response function for congestion windows greater than) s
5 511 M
(   100,000 packets.  We believe that we will learn more about the) s
5 500 M
(   requirements for sustaining the throughput of best-effort connections) s
5 489 M
(   in that range as we gain more experience with HighSpeed TCP with) s
5 478 M
(   congestion windows of thousands and tens of thousands of packets.) s
5 467 M
(   There also might be limitations to the per-connection throughput that) s
5 456 M
(   can be realistically achieved for best-effort traffic in the absence) s
5 445 M
(   of additional support or feedback from the routers along the path.) s
5 423 M
(6.  Fairness Implications of the HighSpeed Response Function.) s
5 401 M
(   The Standard and Highspeed Response Functions can be used directly to) s
5 390 M
(   infer the relative fairness between flows using the two response) s
5 379 M
(   functions.  For example, given a packet drop rate P, assume that) s
5 368 M
(   Standard TCP has an average congestion window of W_Standard, and) s
5 357 M
(   HighSpeed TCP has a higher average congestion window of W_HighSpeed.) s
5 346 M
(   In this case, a single HighSpeed TCP connection is receiving) s
5 335 M
(   W_HighSpeed/W_Standard times the throughput of a single Standard TCP) s
5 324 M
(   connection competing in the same environment.) s
5 302 M
(   This relative fairness is illustrated below in Table 5, for the) s
5 291 M
(   parameters used for the Highspeed response function in the section) s
5 280 M
(   above.  The second column gives the relative fairness, for the) s
5 269 M
(   steady-state packet drop rate specified in the first column.  To help) s
5 258 M
(   calibrate, the third column gives the aggregate average congestion) s
5 247 M
(   window for the two TCP connections, and the fourth column gives the) s
5 236 M
(   bandwidth that would be needed by the two connections to achieve that) s
5 225 M
(   aggregate window and packet drop rate, given 100 ms round-trip times) s
5 214 M
(   and 1500-byte packets.) s
5 104 M
(Floyd                         Experimental                      [Page 9]) s
_R
S
%%Page: (10) 10
%%BeginPageSetup
_S
24 24 translate
/pagenum 10 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(     Packet Drop Rate P   Fairness  Aggregate Window  Bandwidth) s
5 654 M
(     ------------------   --------  ----------------  ---------) s
5 643 M
(            10^-2            1.0              24        2.8 Mbps) s
5 632 M
(            10^-3            1.0              76        9.1 Mbps) s
5 621 M
(            10^-4            2.2             383       45.9 Mbps) s
5 610 M
(            10^-5            4.7            2174      260.8 Mbps) s
5 599 M
(            10^-6           10.2           13479        1.6 Gbps) s
5 588 M
(            10^-7           22.1           87776       10.5 Gbps) s
5 577 M
(            10^-8           47.9          586356       70.3 Gbps) s
5 566 M
(            10^-9          103.5         3966036      475.9 Gbps) s
5 555 M
(            10^-10         223.9        26984653     3238.1 Gbps) s
5 533 M
(   Table 5: Relative Fairness between the HighSpeed and Standard) s
5 522 M
(   Response Functions.) s
5 489 M
(   Thus, for packet drop rates of 10^-4, a flow with the HighSpeed) s
5 478 M
(   response function can expect to receive 2.2 times the throughput of a) s
5 467 M
(   flow using the Standard response function, given the same round-trip) s
5 456 M
(   times and packet sizes.  With packet drop rates of 10^-6 \(or 10^-7\),) s
5 445 M
(   the unfairness is more severe, and we have entered the regime where a) s
5 434 M
(   Standard TCP connection requires a congestion event at most every 800) s
5 423 M
(   \(or 2530\) round-trip times in order to make use of the available) s
5 412 M
(   bandwidth.  Our judgement would be that there are not a lot of TCP) s
5 401 M
(   connections effectively operating in this regime today, with) s
5 390 M
(   congestion windows of thousands of packets, and that therefore the) s
5 379 M
(   benefits of the HighSpeed response function would outweigh the) s
5 368 M
(   unfairness that would be experienced by Standard TCP in this regime.) s
5 357 M
(   However, one purpose of this document is to solicit feedback on this) s
5 346 M
(   issue.  The parameter Low_Window determines directly the point of) s
5 335 M
(   divergence between the Standard and HighSpeed Response Functions.) s
5 313 M
(   The third column of Table 5, the Aggregate Window, gives the) s
5 302 M
(   aggregate congestion window of the two competing TCP connections,) s
5 291 M
(   with HighSpeed and Standard TCP, given the packet drop rate specified) s
5 280 M
(   in the first column.  From Table 5, a HighSpeed TCP connection would) s
5 269 M
(   receive ten times the bandwidth of a Standard TCP in an environment) s
5 258 M
(   with a packet drop rate of 10^-6.  This would occur when the two) s
5 247 M
(   flows sharing a single pipe achieved an aggregate window of 13479) s
5 236 M
(   packets.  Given a round-trip time of 100 ms and a packet size of 1500) s
5 225 M
(   bytes, this would occur with an available bandwidth for the two) s
5 214 M
(   competing flows of 1.6 Gbps.) s
5 192 M
(   Next we consider the time that it takes two HighSpeed TCP flows to) s
5 181 M
(   converge to fairness.  The worst case for convergence to fairness) s
5 170 M
(   occurs when a new flow is starting up, competing against a high-) s
5 159 M
(   bandwidth existing flow, and the new flow suffers a packet drop and) s
5 148 M
(   exits slow-start while its window is still small.  In the worst case,) s
5 104 M
(Floyd                         Experimental                     [Page 10]) s
_R
S
%%Page: (11) 11
%%BeginPageSetup
_S
24 24 translate
/pagenum 11 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   consider that the new flow has entered the congestion avoidance phase) s
5 654 M
(   while its window is only one packet.  A standard TCP flow in) s
5 643 M
(   congestion avoidance increases its window by at most one packet per) s
5 632 M
(   round-trip time, and after N round-trip times has only achieved a) s
5 621 M
(   window of N packets \(when starting with a window of 1 in the first) s
5 610 M
(   round-trip time\).  In contrast, a HighSpeed TCP flows increases much) s
5 599 M
(   faster than a standard TCP flow while in the congestion avoidance) s
5 588 M
(   phase, and we can expect its convergence to fairness to be much) s
5 577 M
(   better.  This is shown in Table 6 below.  The script used to generate) s
5 566 M
(   this table is given in Appendix C.) s
5 544 M
(     RTT  HS_Window Standard_TCP_Window) s
5 533 M
(     ---  --------- -------------------) s
5 522 M
(     100       131        100) s
5 511 M
(     200       475        200) s
5 500 M
(     300      1131        300) s
5 489 M
(     400      2160        400) s
5 478 M
(     500      3601        500) s
5 467 M
(     600      5477        600) s
5 456 M
(     700      7799        700) s
5 445 M
(     800     10567        800) s
5 434 M
(     900     13774        900) s
5 423 M
(    1000     17409       1000) s
5 412 M
(    1100     21455       1100) s
5 401 M
(    1200     25893       1200) s
5 390 M
(    1300     30701       1300) s
5 379 M
(    1400     35856       1400) s
5 368 M
(    1500     41336       1500) s
5 357 M
(    1600     47115       1600) s
5 346 M
(    1700     53170       1700) s
5 335 M
(    1800     59477       1800) s
5 324 M
(    1900     66013       1900) s
5 313 M
(    2000     72754       2000) s
5 291 M
(   Table 6:  For a HighSpeed and a Standard TCP connection, the) s
5 280 M
(   congestion window during congestion avoidance phase \(starting with a) s
5 269 M
(   congestion window of 1 packet during RTT 1.) s
5 247 M
(   The classic paper on relative fairness is from Chiu and Jain [CJ89].) s
5 236 M
(   This paper shows that AIMD \(Additive Increase Multiplicative) s
5 225 M
(   Decrease\) converges to fairness in an environment with synchronized) s
5 214 M
(   congestion events.  From [CJ89], it is easy to see that MIMD and AIAD) s
5 203 M
(   do not converge to fairness in this environment.  However, the) s
5 192 M
(   results of [CJ89] do not apply to an asynchronous environment such as) s
5 181 M
(   that of the current Internet, where the frequency of congestion) s
5 170 M
(   feedback can be different for different flows.  For example, it has) s
5 159 M
(   been shown that MIMD converges to fair states in a model with) s
5 148 M
(   proportional instead of synchronous feedback in terms of packet drops) s
5 104 M
(Floyd                         Experimental                     [Page 11]) s
_R
S
%%Page: (12) 12
%%BeginPageSetup
_S
24 24 translate
/pagenum 12 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   [GV02].  Thus, we are not concerned about abandoning a strict model) s
5 654 M
(   of AIMD for HighSpeed TCP.) s
5 632 M
(7.  Translating the HighSpeed Response Function into Congestion Control) s
5 621 M
(Parameters.) s
5 599 M
(   For equation-based congestion control such as TFRC, the HighSpeed) s
5 588 M
(   Response Function above could be used directly by the TFRC congestion) s
5 577 M
(   control mechanism.  However, for TCP the HighSpeed response function) s
5 566 M
(   would have to be translated into additive increase and multiplicative) s
5 555 M
(   decrease parameters.  The HighSpeed response function cannot be) s
5 544 M
(   achieved by TCP with an additive increase of one segment per round-) s
5 533 M
(   trip time and a multiplicative decrease of halving the current) s
5 522 M
(   congestion window; HighSpeed TCP will have to modify either the) s
5 511 M
(   increase or the decrease parameter, or both.  We have concluded that) s
5 500 M
(   HighSpeed TCP is most likely to achieve an acceptable compromise) s
5 489 M
(   between moderate increases and timely decreases by modifying both the) s
5 478 M
(   increase and the decrease parameter.) s
5 456 M
(   That is, for HighSpeed TCP let the congestion window increase by a\(w\)) s
5 445 M
(   segments per round-trip time in the absence of congestion, and let) s
5 434 M
(   the congestion window decrease to w\(1-b\(w\)\) segments in response to a) s
5 423 M
(   round-trip time with one or more loss events.  Thus, in response to a) s
5 412 M
(   single acknowledgement HighSpeed TCP increases its congestion window) s
5 401 M
(   in segments as follows:) s
5 379 M
(    w <- w + a\(w\)/w.) s
5 357 M
(   In response to a congestion event, HighSpeed TCP decreases as) s
5 346 M
(   follows:) s
5 324 M
(    w <- \(1-b\(w\)\)w.) s
5 302 M
(   For Standard TCP, a\(w\) = 1 and b\(w\) = 1/2, regardless of the value of) s
5 291 M
(   w.  HighSpeed TCP uses the same values of a\(w\) and b\(w\) for w <=) s
5 280 M
(   Low_Window.  This section specifies a\(w\) and b\(w\) for HighSpeed TCP) s
5 269 M
(   for larger values of w.) s
5 247 M
(   For w = High_Window, we have specified a loss rate of High_P.  From) s
5 236 M
(   [FRS02], or from elementary calculations, this requires the following) s
5 225 M
(   relationship between a\(w\) and b\(w\) for w = High_Window:) s
5 203 M
(    a\(w\) = High_Window^2 * High_P * 2 * b\(w\)/\(2-b\(w\).     \(2\)) s
5 181 M
(   We use the parameter High_Decrease to specify the decrease parameter) s
5 170 M
(   b\(w\) for w = High_Window, and use Equation \(2\) to derive the increase) s
5 159 M
(   parameter a\(w\) for w = High_Window.  Along with High_P = 10^-7 and) s
5 148 M
(   High_Window = 83000, for example, we specify High_Decrease = 0.1,) s
5 104 M
(Floyd                         Experimental                     [Page 12]) s
_R
S
%%Page: (13) 13
%%BeginPageSetup
_S
24 24 translate
/pagenum 13 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   specifying that b\(83000\) = 0.1, giving a decrease of 10% after a) s
5 654 M
(   congestion event.  Equation \(2\) then gives a\(83000\) = 72, for an) s
5 643 M
(   increase of 72 segments, or just under 0.1%, within a round-trip) s
5 632 M
(   time, for w = 83000.) s
5 610 M
(   This moderate decrease strikes us as acceptable, particularly when) s
5 599 M
(   coupled with the role of TCP's ACK-clocking in limiting the sending) s
5 588 M
(   rate in response to more severe congestion [BBFS01].  A more severe) s
5 577 M
(   decrease would require a more aggressive increase in the congestion) s
5 566 M
(   window for a round-trip time without congestion.  In particular, a) s
5 555 M
(   decrease factor High_Decrease of 0.5, as in Standard TCP, would) s
5 544 M
(   require an increase of 459 segments per round-trip time when w =) s
5 533 M
(   83000.) s
5 511 M
(   Given decrease parameters of b\(w\) = 1/2 for w = Low_Window, and b\(w\)) s
5 500 M
(   = High_Decrease for w = High_Window, we are left to specify the value) s
5 489 M
(   of b\(w\) for other values of w > Low_Window.  From [FRS02], we let) s
5 478 M
(   b\(w\) vary linearly as the log of w, as follows:) s
5 456 M
(    b\(w\) = \(High_Decrease - 0.5\) \(log\(w\)-log\(W\)\) / \(log\(W_1\)-log\(W\)\) +) s
5 445 M
(   0.5.) s
5 423 M
(   The increase parameter a\(w\) can then be computed as follows:) s
5 401 M
(    a\(w\) = w^2 * p\(w\) * 2 * b\(w\)/\(2-b\(w\)\),) s
5 379 M
(   for p\(w\) the packet drop rate for congestion window w.  From) s
5 368 M
(   inverting Equation \(1\), we get p\(w\) as follows:) s
5 346 M
(    p\(w\) = 0.078/w^1.2.) s
5 324 M
(   We assume that experimental implementations of HighSpeed TCP for) s
5 313 M
(   further investigation will use a pre-computed look-up table for) s
5 302 M
(   finding a\(w\) and b\(w\).  For example, the implementation from Tom) s
5 291 M
(   Dunigan adjusts the a\(w\) and b\(w\) parameters every 0.1 seconds.  In) s
5 280 M
(   the appendix we give such a table for our default values of) s
5 269 M
(   Low_Window = 38, High_Window = 83,000, High_P = 10^-7, and) s
5 258 M
(   High_Decrease = 0.1.  These are also the default values in the NS) s
5 247 M
(   simulator; example simulations in NS can be run with the command) s
5 236 M
(   "./test-all-tcpHighspeed" in the directory tcl/test.) s
5 214 M
(8.  An alternate, linear response functions.) s
5 192 M
(   In this section we explore an alternate, linear response function for) s
5 181 M
(   HighSpeed TCP that has been proposed by a number of other people, in) s
5 170 M
(   particular by Glenn Vinnicombe and Tom Kelly.  Similarly, it has been) s
5 159 M
(   suggested by others that a less "ad-hoc" guideline for a response) s
5 148 M
(   function for HighSpeed TCP would be to specify a constant value for) s
5 104 M
(Floyd                         Experimental                     [Page 13]) s
_R
S
%%Page: (14) 14
%%BeginPageSetup
_S
24 24 translate
/pagenum 14 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   the number of round-trip times between congestion events.) s
5 643 M
(   Assume that we keep the value of Low_Window as 38 MSS-sized segments,) s
5 632 M
(   indicating when the HighSpeed response function diverges from the) s
5 621 M
(   current TCP response function, but that we modify the High_Window and) s
5 610 M
(   High_P parameters that specify the upper range of the HighSpeed) s
5 599 M
(   response function.  In particular, consider the response function) s
5 588 M
(   given by High_Window = 380,000 and High_P = 10^-7, with Low_Window =) s
5 577 M
(   38 and Low_P = 10^-3 as before.) s
5 555 M
(   Using the equations in Section 5, this would give the following) s
5 544 M
(   Linear response function, for w > Low_Window:) s
5 522 M
(     W = 0.038/p.) s
5 500 M
(   This Linear HighSpeed response function is illustrated in Table 7) s
5 489 M
(   below.  For HighSpeed TCP, the number of round-trip times between) s
5 478 M
(   losses, 1/\(pW\), equals 1/0.38, or equivalently, 26, for W > 38) s
5 467 M
(   segments.) s
5 445 M
(       Packet Drop Rate P   Congestion Window W    RTTs Between Losses) s
5 434 M
(       ------------------   -------------------    -------------------) s
5 423 M
(              10^-2                    12                   8) s
5 412 M
(              10^-3                    38                  26) s
5 401 M
(              10^-4                   380                  26) s
5 390 M
(              10^-5                  3800                  26) s
5 379 M
(              10^-6                 38000                  26) s
5 368 M
(              10^-7                380000                  26) s
5 357 M
(              10^-8               3800000                  26) s
5 346 M
(              10^-9              38000000                  26) s
5 335 M
(              10^-10            380000000                  26) s
5 313 M
(   Table 7: An Alternate, Linear TCP Response Function for HighSpeed) s
5 302 M
(   TCP.  The average congestion window W in MSS-sized segments is given) s
5 291 M
(   as a function of the packet drop rate P.) s
5 269 M
(   Given a constant decrease b\(w\) of 1/2, this would give an increase) s
5 258 M
(   a\(w\) of w/Low_Window, or equivalently, an constant increase of) s
5 247 M
(   1/Low_Window packets per acknowledgement, for w > Low_Window.) s
5 236 M
(   Another possibility is Scalable TCP [K03], which uses a fixed) s
5 225 M
(   decrease b\(w\) of 1/8 and a fixed increase per acknowledgement of) s
5 214 M
(   0.01.  This gives an increase a\(w\) per window of 0.005 w, for a TCP) s
5 203 M
(   with delayed acknowledgements.) s
5 181 M
(   The relative fairness between the alternate Linear response function) s
5 170 M
(   and the standard TCP response function is illustrated below in Table) s
5 159 M
(   8.) s
5 104 M
(Floyd                         Experimental                     [Page 14]) s
_R
S
%%Page: (15) 15
%%BeginPageSetup
_S
24 24 translate
/pagenum 15 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(     Packet Drop Rate P   Fairness  Aggregate Window  Bandwidth) s
5 654 M
(     ------------------   --------  ----------------  ---------) s
5 643 M
(            10^-2            1.0              24        2.8 Mbps) s
5 632 M
(            10^-3            1.0              76        9.1 Mbps) s
5 621 M
(            10^-4            3.2             500       60.0 Mbps) s
5 610 M
(            10^-5           15.1            4179      501.4 Mbps) s
5 599 M
(            10^-6           31.6           39200        4.7 Gbps) s
5 588 M
(            10^-7          100.1          383795       46.0 Gbps) s
5 577 M
(            10^-8          316.6         3812000      457.4 Gbps) s
5 566 M
(            10^-9         1001.3        38037948     4564.5 Gbps) s
5 555 M
(            10^-10        3166.6       380120000    45614.4 Gbps) s
5 533 M
(   Table 8: Relative Fairness between the Linear HighSpeed and Standard) s
5 522 M
(   Response Functions.) s
5 489 M
(   One attraction of the linear response function is that it is scale-) s
5 478 M
(   invariant, with a fixed increase in the congestion window per) s
5 467 M
(   acknowledgement, and a fixed number of round-trip times between loss) s
5 456 M
(   events.  My own assumption would be that having a fixed length for) s
5 445 M
(   the congestion epoch in round-trip times, regardless of the packet) s
5 434 M
(   drop rate, would be a poor fit for an imprecise and imperfect world) s
5 423 M
(   with routers with a range of queue management mechanisms, such as the) s
5 412 M
(   Drop-Tail queue management that is common today.  For example, a) s
5 401 M
(   response function with a fixed length for the congestion epoch in) s
5 390 M
(   round-trip times might give less clearly-differentiated feedback in) s
5 379 M
(   an environment with steady-state background losses at fixed intervals) s
5 368 M
(   for all flows \(as might occur with a wireless link with occasional) s
5 357 M
(   short error bursts, giving losses for all flows every N seconds) s
5 346 M
(   regardless of their sending rate\).) s
5 324 M
(   While it is not a goal to have perfect fairness in an environment) s
5 313 M
(   with synchronized losses, it would be good to have moderately) s
5 302 M
(   acceptable performance in this regime.  This goal might argue against) s
5 291 M
(   a response function with a constant number of round-trip times) s
5 280 M
(   between congestion events.  However, this is a question that could) s
5 269 M
(   clearly use additional research and investigation.  In addition,) s
5 258 M
(   flows with different round-trip times would have different time) s
5 247 M
(   durations for congestion epochs even in the model with a linear) s
5 236 M
(   response function.) s
5 214 M
(   The third column of Table 8, the Aggregate Window, gives the) s
5 203 M
(   aggregate congestion window of two competing TCP connections, one) s
5 192 M
(   with Linear HighSpeed TCP and one with Standard TCP, given the packet) s
5 181 M
(   drop rate specified in the first column.  From Table 8, a Linear) s
5 170 M
(   HighSpeed TCP connection would receive fifteen times the bandwidth of) s
5 159 M
(   a Standard TCP in an environment with a packet drop rate of 10^-5.) s
5 148 M
(   This would occur when the two flows sharing a single pipe achieved an) s
5 104 M
(Floyd                         Experimental                     [Page 15]) s
_R
S
%%Page: (16) 16
%%BeginPageSetup
_S
24 24 translate
/pagenum 16 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   aggregate window of 4179 packets.  Given a round-trip time of 100 ms) s
5 654 M
(   and a packet size of 1500 bytes, this would occur with an available) s
5 643 M
(   bandwidth for the two competing flows of 501 Mbps.  Thus, because the) s
5 632 M
(   Linear HighSpeed TCP is more aggressive than the HighSpeed TCP) s
5 621 M
(   proposed above, it also is less fair when competing with Standard TCP) s
5 610 M
(   in a high-bandwidth environment.) s
5 588 M
(9.  Tradeoffs for Choosing Congestion Control Parameters.) s
5 566 M
(   A range of metrics can be used for evaluating choices for congestion) s
5 555 M
(   control parameters for HighSpeed TCP.  My assumption in this section) s
5 544 M
(   is that for a response function of the form w = c/p^d, for constant c) s
5 533 M
(   and exponent d, the only response functions that would be considered) s
5 522 M
(   are response functions with 1/2 <= d <= 1.  The two ends of this) s
5 511 M
(   spectrum are represented by current TCP, with d = 1/2, and by the) s
5 500 M
(   linear response function described in Section 8 above, with d = 1.) s
5 489 M
(   HighSpeed TCP lies somewhere in the middle of the spectrum, with d =) s
5 478 M
(   0.835.) s
5 456 M
(   Response functions with exponents less than 1/2 can be eliminated) s
5 445 M
(   from consideration because they would be even worse than standard TCP) s
5 434 M
(   in accomodating connections with high congestion windows.) s
5 412 M
(9.1.  The Number of Round-Trip Times between Loss Events.) s
5 390 M
(   Response functions with exponents greater than 1 can be eliminated) s
5 379 M
(   from consideration because for these response functions, the number) s
5 368 M
(   of round-trip times between loss events decreases as congestion) s
5 357 M
(   decreases.  For a response function of w = c/p^d, with one loss event) s
5 346 M
(   or congestion event every 1/p packets, the number of round-trip times) s
5 335 M
(   between loss events is w^\(\(1/d\)-1\)/c^\(1/d\).  Thus, for standard TCP) s
5 324 M
(   the number of round-trip times between loss events is linear in w.) s
5 313 M
(   In contrast, one attraction of the linear response function, as) s
5 302 M
(   described in Section 8 above, is that it is scale-invariant, in terms) s
5 291 M
(   of a fixed increase in the congestion window per acknowledgement, and) s
5 280 M
(   a fixed number of round-trip times between loss events.) s
5 258 M
(   However, for a response function with d > 1, the number of round-trip) s
5 247 M
(   times between loss events would be proportional to w^\(\(1/d\)-1\), for a) s
5 236 M
(   negative exponent \(\(1/d\)-1\), setting smaller as w increases.  This) s
5 225 M
(   would seem undesirable.) s
5 203 M
(9.2.  The Number of Packet Drops per Loss Event, with Drop-Tail.) s
5 181 M
(   A TCP connection increases its sending rate by a\(w\) packets per) s
5 170 M
(   round-trip time, and in a Drop-Tail environment, this is likely to) s
5 159 M
(   result in a\(w\) dropped packets during a single loss event.  One) s
5 148 M
(   attraction of standard TCP is that it has a fixed increase per round-) s
5 104 M
(Floyd                         Experimental                     [Page 16]) s
_R
S
%%Page: (17) 17
%%BeginPageSetup
_S
24 24 translate
/pagenum 17 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   trip time of one packet, minimizing the number of packets that would) s
5 654 M
(   be dropped in a Drop-Tail environment.  For an environment with some) s
5 643 M
(   form of Active Queue Management, and in particular for an environment) s
5 632 M
(   that uses ECN, the number of packets dropped in a single congestion) s
5 621 M
(   event would not be a problem.  However, even in these environments,) s
5 610 M
(   larger increases in the sending rate per round-trip time result in) s
5 599 M
(   larger stresses on the ability of the queues in the router to absorb) s
5 588 M
(   the fluctuations.) s
5 566 M
(   HighSpeed TCP plays a middle ground between the metrics of a moderate) s
5 555 M
(   number of round-trip times between loss events, and a moderate) s
5 544 M
(   increase in the sending rate per round-trip time.  As shown in) s
5 533 M
(   Appendix B, for a congestion window of 83,000 packets, HighSpeed TCP) s
5 522 M
(   increases its sending rate by 70 packets per round-trip time,) s
5 511 M
(   resulting in roughly 70 packet drops for each congestion event in a) s
5 500 M
(   Drop-Tail environment.  This increased aggressiveness is the price) s
5 489 M
(   paid by HighSpeed TCP for its increased scalability.  A large number) s
5 478 M
(   of packets dropped per congestion event could result in synchronized) s
5 467 M
(   drops from multiple flows, with a possible loss of throughput as a) s
5 456 M
(   result.) s
5 434 M
(   Scalable TCP has an increase a\(w\) of 0.005 w packets per round-trip) s
5 423 M
(   time.  For a congestion window of 83,000 packets, this gives an) s
5 412 M
(   increase of 415 packets per round-trip time, resulting in roughly 415) s
5 401 M
(   packet drops per congestion event in a Drop-Tail environment.) s
5 379 M
(   Thus, HighSpeed TCP and its variants place increased demands on queue) s
5 368 M
(   management in routers, relative to Standard TCP.  \(This is rather) s
5 357 M
(   similar to the increased demands on queue management that would) s
5 346 M
(   result from using N parallel TCP connections instead of a single) s
5 335 M
(   Standard TCP connection.\)) s
5 313 M
(10.  Slow-Start.) s
5 291 M
(   An companion internet-draft on "Limited Slow-Start for TCP with Large) s
5 280 M
(   Congestion Windows" [F02b] proposes a modification to TCP's slow-) s
5 269 M
(   start procedure that can significantly improve the performance of TCP) s
5 258 M
(   connections slow-starting up to large congestion windows.  For TCP) s
5 247 M
(   connections that are able to use congestion windows of thousands \(or) s
5 236 M
(   tens of thousands\) of MSS-sized segments \(for MSS the sender's) s
5 225 M
(   MAXIMUM SEGMENT SIZE\), the current slow-start procedure can result in) s
5 214 M
(   increasing the congestion window by thousands of segments in a single) s
5 203 M
(   round-trip time.  Such an increase can easily result in thousands of) s
5 192 M
(   packets being dropped in one round-trip time.  This is often counter-) s
5 181 M
(   productive for the TCP flow itself, and is also hard on the rest of) s
5 170 M
(   the traffic sharing the congested link.) s
5 148 M
(   [F02b] proposes Limited Slow-Start, limiting the number of segments) s
5 104 M
(Floyd                         Experimental                     [Page 17]) s
_R
S
%%Page: (18) 18
%%BeginPageSetup
_S
24 24 translate
/pagenum 18 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   by which the congestion window is increased for one window of data) s
5 654 M
(   during slow-start, in order to improve performance for TCP) s
5 643 M
(   connections with large congestion windows.  We have separated out) s
5 632 M
(   Limited Slow-Start to a separate draft because it can be used both) s
5 621 M
(   with Standard or with HighSpeed TCP.) s
5 599 M
(   Limited Slow-Start is illustrated in the NS simulator, for snapshots) s
5 588 M
(   after May 1, 2002, in the tests "./test-all-tcpHighspeed tcp1A" and) s
5 577 M
(   "./test-all-tcpHighspeed tcpHighspeed1" in the subdirectory) s
5 566 M
(   "tcl/lib".) s
5 544 M
(   In order for best-effort flows to safely start-up faster than slow-) s
5 533 M
(   start, e.g., in future high-bandwidth networks, we believe that it) s
5 522 M
(   would be necessary for the flow to have explicit feedback from the) s
5 511 M
(   routers along the path.  There are a number of proposals for this,) s
5 500 M
(   ranging from a minimal proposal for an IP option that allows TCP SYN) s
5 489 M
(   packets to collect information from routers along the path about the) s
5 478 M
(   allowed initial sending rate [J02], to proposals with more power that) s
5 467 M
(   require more fine-tuned and continuous feedback from routers.  These) s
5 456 M
(   proposals all are somewhat longer-term proposals that the HighSpeed) s
5 445 M
(   TCP proposal in this document, requiring longer lead times and more) s
5 434 M
(   coordination for deployment, and will be discussed in later) s
5 423 M
(   documents.) s
5 401 M
(11.  Other limitations on window size.) s
5 379 M
(   The TCP header uses a 16-bit field to report the receive window size) s
5 368 M
(   to the sender.  Unmodified, this allows a window size of at most) s
5 357 M
(   2**16 = 65K bytes.  With window scaling, the maximum window size is) s
5 346 M
(   2**30 = 1073M bytes [RFC 1323].  Given 1500-byte packets, this allows) s
5 335 M
(   a window of up to 715,000 packets.) s
5 313 M
(12.  Related Work in HighSpeed TCP.) s
5 291 M
(   HighSpeed TCP has been separately investigated in simulations by) s
5 280 M
(   Sylvia Ratnasamy and by Evandro de Souza, and reports of some of) s
5 269 M
(   these simulations should be available shortly.  The simulations by) s
5 258 M
(   Evandro verify the fairness properties of HighSpeed TCP when sharing) s
5 247 M
(   a link with Standard TCP.) s
5 225 M
(   These simulations explore the relative fairness of HighSpeed TCP) s
5 214 M
(   flows when competing with Standard TCP.  The simulation environment) s
5 203 M
(   include background forward and reverse-path TCP traffic limited by) s
5 192 M
(   the TCP receive window, along with a small amount of forward and) s
5 181 M
(   reverse-path traffic from the web traffic generator.  Most of the) s
5 170 M
(   simulations so far explore performance on a simple dumbbell topology) s
5 159 M
(   with a 1Gbps link with a propagation delay of 50 ms.  Simulations) s
5 148 M
(   have been run both the Adaptive RED and with DropTail queue) s
5 104 M
(Floyd                         Experimental                     [Page 18]) s
_R
S
%%Page: (19) 19
%%BeginPageSetup
_S
24 24 translate
/pagenum 19 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   management.) s
5 643 M
(   Future work to explore in more detail includes convergence times) s
5 632 M
(   after new flows start-up; recovery time after a transient outage; the) s
5 621 M
(   response to sudden severe congestion, and investigations of the) s
5 610 M
(   potential for oscillations.  Additional future work includes) s
5 599 M
(   evaluating more fully the choices of parameters for HighSpeed TCP.) s
5 588 M
(   We invite contributions from others in this work.) s
5 566 M
(   Suggestions to other citations of related work would also be welcome.) s
5 544 M
(13.  Relationship to other Work.) s
5 522 M
(   Our assumption is that HighSpeed TCP will be used along with the TCP) s
5 511 M
(   SACK option, and also with the increased Initial Window of three or) s
5 500 M
(   four segments, as allowed by [AFP02].  For paths that have) s
5 489 M
(   substantial reordering, TCP performance would be greatly improved by) s
5 478 M
(   some of the mechanisms still in the research stages for robust) s
5 467 M
(   performance in the presence of reordered packets.) s
5 445 M
(   Our view is that HighSpeed TCP is largely orthogonal to proposals for) s
5 434 M
(   higher PMTU \(Path MTU\) values [M02].  Unlike changes to the PMTU,) s
5 423 M
(   HighSpeed TCP does not require any changes in the network or at the) s
5 412 M
(   TCP receiver, and works well in the current Internet.  Our assumption) s
5 401 M
(   is that HighSpeed TCP would be useful even with larger values for the) s
5 390 M
(   PMTU.  In particular, unlike the current congestion window, the PMTU) s
5 379 M
(   gives no information about the bandwidth-delay product available to) s
5 368 M
(   that particular flow.) s
5 346 M
(   A related approach is that of a virtual MTU, where the actual MTU of) s
5 335 M
(   the path might be limited [VMSS,S02].  The virtual MTU approach has) s
5 324 M
(   not been fully investigated, and we do not explore the virtual MTU) s
5 313 M
(   approach further in this document.) s
5 291 M
(14.  Conclusions.) s
5 269 M
(   This is an initial proposal, and we are asking from feedback from the) s
5 258 M
(   wider community.  We have explored this proposal in simulations,) s
5 247 M
(   though we have not yet finished our reports on these simulations.  We) s
5 236 M
(   would welcome additional analysis, simulations, and particularly,) s
5 225 M
(   experimentation.  More information on simuations and experiments is) s
5 214 M
(   available from the HighSpeed TCP Web Page [HSTCP].) s
5 192 M
(   There are three parameters that determine the HighSpeed Response) s
5 181 M
(   Function, and an additional parameter that determines HighSpeed TCP's) s
5 170 M
(   tradeoffs between increases and decreases using that response) s
5 159 M
(   function.  We solicit feedback on our setting of these parameters as) s
5 148 M
(   well as on other issues.) s
5 104 M
(Floyd                         Experimental                     [Page 19]) s
_R
S
%%Page: (20) 20
%%BeginPageSetup
_S
24 24 translate
/pagenum 20 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   We are bringing this proposal to the IETF to be considered as an) s
5 654 M
(   Experimental RFC.  One reason to bring this to the IETF at this stage) s
5 643 M
(   is that HighSpeed TCP proposes a rather significant change in the) s
5 632 M
(   underlying TCP response function, and in our view any such change) s
5 621 M
(   would have to be globally agreed-upon.  It seems advisable to us to) s
5 610 M
(   bring such a proposal to the IETF for feedback even in its) s
5 599 M
(   preliminary stages.) s
5 577 M
(   Another reason to bring this proposal to the IETF is that, while) s
5 566 M
(   several people have conducted evaluations of HighSpeed TCP using) s
5 555 M
(   simulations, our belief is that the "real" evaluations will have to) s
5 544 M
(   happen in experiments and in actual deployment.  As part of this) s
5 533 M
(   experimentation, HighSpeed TCP has been implemented in the Linux) s
5 522 M
(   2.4.16 Web100 kernel [HSTCP].  It seemed to us that it was advisable,) s
5 511 M
(   at this stage, to bring the proposal for HighSpeed TCP to the IETF) s
5 500 M
(   and to seek Experimental status.) s
5 478 M
(15.  Acknowledgements) s
5 456 M
(   The HighSpeed TCP proposal is from joint work with Sylvia Ratnasamy) s
5 445 M
(   and Scott Shenker \(and was initiated by Scott Shenker\).  Additional) s
5 434 M
(   investigations of HighSpeed TCP were joint work with Evandro de Souza) s
5 423 M
(   and Deb Agarwal.  We thank Tom Dunigan for the implementation in the) s
5 412 M
(   Linux 2.4.16 Web100 kernel, and for resulting experimentation with) s
5 401 M
(   HighSpeed TCP.  We are grateful to the End-to-End Research Group, the) s
5 390 M
(   members of the Transport Area Working Group, and to members of the) s
5 379 M
(   IPAM program in Large Scale Communication Networks for feedback.  We) s
5 368 M
(   thank Glenn Vinnicombe for framing the Linear response function in) s
5 357 M
(   the parameters of HighSpeed TCP.  We are also grateful for) s
5 346 M
(   contributions and feedback from the following individuals: Tom Kelly,) s
5 335 M
(   Jitendra Padhye, Stanislav Shalunov, Paul Sutter, Brian Tierney, Joe) s
5 324 M
(   Touch.  Thanks to Jeffrey Hsu and Andrew Reiter for feedback on) s
5 313 M
(   earlier versions of this document.) s
5 291 M
(16.  Normative References) s
5 269 M
(   [RFC2581] M. Allman and V. Paxson, "TCP Congestion Control", RFC) s
5 258 M
(   2581, April 1999.) s
5 236 M
(17.  Informative References) s
5 214 M
(   [AFP02] Allman, M., Floyd, S., and Partridge, C., "Increasing TCP's) s
5 203 M
(   Initial Window", internet-draft draft-ietf-tsvwg-initwin-04.txt,) s
5 192 M
(   work-in-progress, June 2002.) s
5 170 M
(   [BBFS01] Deepak Bansal, Hari Balakrishnan, Sally Floyd, and Scott) s
5 159 M
(   Shenker, "Dynamic Behavior of Slowly-Responsive Congestion Control) s
5 148 M
(   Algorithms", SIGCOMM 2001, August 2001.) s
5 104 M
(Floyd                         Experimental                     [Page 20]) s
_R
S
%%Page: (21) 21
%%BeginPageSetup
_S
24 24 translate
/pagenum 21 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   [CJ89] D. Chiu and R. Jain, "Analysis of the Increase and Decrease) s
5 654 M
(   Algorithms for Congestion Avoidance in Computer Networks", Computer) s
5 643 M
(   Networks and ISDN Systems, Vol. 17, pp. 1-14, 1989.) s
5 621 M
(   [CO98] J. Crowcroft and P. Oechslin, "Differentiated end-to-end) s
5 610 M
(   services using a weighted proportional fair share TCP", Computer) s
5 599 M
(   Communication Review, 28\(3\):53--69, 1998.) s
5 577 M
(   [FF98] Floyd, S., and Fall, K., "Promoting the Use of End-to-End) s
5 566 M
(   Congestion Control in the Internet", IEEE/ACM Transactions on) s
5 555 M
(   Networking, August 1999.) s
5 533 M
(   [FRS02] Sally Floyd, Sylvia Ratnasamy, and Scott Shenker, "Modifying) s
5 522 M
(   TCP's Congestion Control for High Speeds", May 2002.  URL) s
5 511 M
(   "http://www.icir.org/floyd/notes.html".) s
5 489 M
(   [GRK99] Panos Gevros, Fulvio Risso and Peter Kirstein, "Analysis of a) s
5 478 M
(   Method for Differential TCP Service" In Proceedings of the IEEE) s
5 467 M
(   GLOBECOM'99, Symposium on Global Internet , December 1999, Rio de) s
5 456 M
(   Janeiro, Brazil.) s
5 434 M
(   [GV02] S. Gorinsky and H. Vin, "Extended Analysis of Binary) s
5 423 M
(   Adjustment Algorithms", Technical Report TR2002-39, Department of) s
5 412 M
(   Computer Sciences, The University of Texas at Austin, August 2002.) s
5 401 M
(   URL "http://www.cs.utexas.edu/users/gorinsky/pubs.html".) s
5 379 M
(   [HSTCP] HighSpeed TCP Web Page, URL) s
5 368 M
(   "http://www.icir.org/floyd/hstcp.html".) s
5 346 M
(   [J02] Amit Jain and Sally Floyd, "Quick-Start for TCP and IP",) s
5 335 M
(   internet draft draft-amit-quick-start-00.txt, work in progress, 2002.) s
5 313 M
(   [K03] Tom Kelly, "Scalable TCP: Improving Performance in HighSpeed) s
5 302 M
(   Wide Area Networks", February 2003.  URL "http://www-) s
5 291 M
(   lce.eng.cam.ac.uk/~ctk21/scalable/".) s
5 269 M
(   [M02] Matt Mathis, "Raising the Internet MTU", Web Page, URL) s
5 258 M
(   "http://www.psc.edu/~mathis/MTU/".) s
5 236 M
(   [RFC 1323] V. Jacobson, R. Braden, and D. Borman, TCP Extensions for) s
5 225 M
(   High Performance, RFC 1323, May 1992.) s
5 203 M
(   [S02] Stanislav Shalunov, TCP Armonk, draft, 2002, URL) s
5 192 M
(   "http://www.internet2.edu/~shalunov/tcpar/".) s
5 170 M
(   [TFRC] Mark Handley, Jitendra Padhye, Sally Floyd, and Joerg Widmer,) s
5 159 M
(   TCP Friendly Rate Control \(TFRC\): Protocol Specification, internet) s
5 148 M
(   draft draft-ietf-tsvwg-tfrc-04.txt, work in progress, 2002.) s
5 104 M
(Floyd                         Experimental                     [Page 21]) s
_R
S
%%Page: (22) 22
%%BeginPageSetup
_S
24 24 translate
/pagenum 22 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(   [VMSS] "Web100 at ORNL", Web Page,) s
5 654 M
(   "http://www.csm.ornl.gov/~dunigan/netperf/web100.html".) s
5 632 M
(18.  Security Considerations) s
5 610 M
(   This proposal makes no changes to the underlying security of TCP.) s
5 588 M
(19.  IANA Considerations) s
5 566 M
(   There are no IANA considerations regarding this document.) s
5 544 M
(A.  TCP's Loss Event Rate in Steady-State) s
5 522 M
(   This section gives the number of round-trip times between congestion) s
5 511 M
(   events for a TCP flow with D-byte packets, for D=1500, as a function) s
5 500 M
(   of the connection's average throughput B in bps.  To achieve this) s
5 489 M
(   average throughput B, a TCP connection with round-trip time R in) s
5 478 M
(   seconds requires an average congestion window w of BR/\(8D\) segments.) s
5 456 M
(   In steady-state, TCP's average congestion window w is roughly) s
5 445 M
(   1.2/sqrt\(p\) segments.  This is equivalent to a lost event at most) s
5 434 M
(   once every 1/p packets, or at most once every 1/\(pw\) = w/1.5 round-) s
5 423 M
(   trip times.  Substituting for w, this is a loss event at most every) s
5 412 M
(   \(BR\)/12D\)round-trip times.) s
5 390 M
(   An an example, for R = 0.1 seconds and D = 1500 bytes, this gives) s
5 379 M
(   B/180000 round-trip times between loss events.) s
5 357 M
(B.  A table for a\(w\) and b\(w\).) s
5 335 M
(   This section gives a table for the increase and decrease parameters) s
5 324 M
(   a\(w\) and b\(w\) for HighSpeed TCP, for the default values of Low_Window) s
5 313 M
(   = 38, High_Window = 83000, High_P = 10^-7, and High_Decrease = 0.1.) s
5 104 M
(Floyd                         Experimental                     [Page 22]) s
_R
S
%%Page: (23) 23
%%BeginPageSetup
_S
24 24 translate
/pagenum 23 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(        w  a\(w\)  b\(w\)) s
5 654 M
(     ----  ----  ----) s
5 643 M
(       38     1  0.50) s
5 632 M
(      118     2  0.44) s
5 621 M
(      221     3  0.41) s
5 610 M
(      347     4  0.38) s
5 599 M
(      495     5  0.37) s
5 588 M
(      663     6  0.35) s
5 577 M
(      851     7  0.34) s
5 566 M
(     1058     8  0.33) s
5 555 M
(     1284     9  0.32) s
5 544 M
(     1529    10  0.31) s
5 533 M
(     1793    11  0.30) s
5 522 M
(     2076    12  0.29) s
5 511 M
(     2378    13  0.28) s
5 500 M
(     2699    14  0.28) s
5 489 M
(     3039    15  0.27) s
5 478 M
(     3399    16  0.27) s
5 467 M
(     3778    17  0.26) s
5 456 M
(     4177    18  0.26) s
5 445 M
(     4596    19  0.25) s
5 434 M
(     5036    20  0.25) s
5 423 M
(     5497    21  0.24) s
5 412 M
(     5979    22  0.24) s
5 401 M
(     6483    23  0.23) s
5 390 M
(     7009    24  0.23) s
5 379 M
(     7558    25  0.22) s
5 368 M
(     8130    26  0.22) s
5 357 M
(     8726    27  0.22) s
5 346 M
(     9346    28  0.21) s
5 335 M
(     9991    29  0.21) s
5 324 M
(    10661    30  0.21) s
5 313 M
(    11358    31  0.20) s
5 302 M
(    12082    32  0.20) s
5 291 M
(    12834    33  0.20) s
5 280 M
(    13614    34  0.19) s
5 269 M
(    14424    35  0.19) s
5 258 M
(    15265    36  0.19) s
5 247 M
(    16137    37  0.19) s
5 236 M
(    17042    38  0.18) s
5 225 M
(    17981    39  0.18) s
5 214 M
(    18955    40  0.18) s
5 203 M
(    19965    41  0.17) s
5 192 M
(    21013    42  0.17) s
5 181 M
(    22101    43  0.17) s
5 170 M
(    23230    44  0.17) s
5 159 M
(    24402    45  0.16) s
5 148 M
(    25618    46  0.16) s
5 104 M
(Floyd                         Experimental                     [Page 23]) s
_R
S
%%Page: (24) 24
%%BeginPageSetup
_S
24 24 translate
/pagenum 24 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(    26881    47  0.16) s
5 654 M
(    28193    48  0.16) s
5 643 M
(    29557    49  0.15) s
5 632 M
(    30975    50  0.15) s
5 621 M
(    32450    51  0.15) s
5 610 M
(    33986    52  0.15) s
5 599 M
(    35586    53  0.14) s
5 588 M
(    37253    54  0.14) s
5 577 M
(    38992    55  0.14) s
5 566 M
(    40808    56  0.14) s
5 555 M
(    42707    57  0.13) s
5 544 M
(    44694    58  0.13) s
5 533 M
(    46776    59  0.13) s
5 522 M
(    48961    60  0.13) s
5 511 M
(    51258    61  0.13) s
5 500 M
(    53677    62  0.12) s
5 489 M
(    56230    63  0.12) s
5 478 M
(    58932    64  0.12) s
5 467 M
(    61799    65  0.12) s
5 456 M
(    64851    66  0.11) s
5 445 M
(    68113    67  0.11) s
5 434 M
(    71617    68  0.11) s
5 423 M
(    75401    69  0.10) s
5 412 M
(    79517    70  0.10) s
5 401 M
(    84035    71  0.10) s
5 390 M
(    89053    72  0.10) s
5 379 M
(    94717    73  0.09) s
5 357 M
(   Table 9: Parameters for HighSpeed TCP.) s
5 335 M
(   This table was computed with the following Perl program:) s
5 104 M
(Floyd                         Experimental                     [Page 24]) s
_R
S
%%Page: (25) 25
%%BeginPageSetup
_S
24 24 translate
/pagenum 25 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(    $top = 100000;) s
5 654 M
(    $num = 38;) s
5 643 M
(    if \($num == 38\) {) s
5 632 M
(      print "     w  a\(w\)  b\(w\)\\n";) s
5 621 M
(      print "  ----  ----  ----\\n";) s
5 610 M
(      print "    38     1  0.50\\n";) s
5 599 M
(      $oldb = 0.50;) s
5 588 M
(      $olda = 1;) s
5 577 M
(    }) s
5 566 M
(    while \($num < $top\) {) s
5 555 M
(      $bw = \(0.1 -0.5\)*\(log\($num\)-log\(38\)\)/\(log\(83000\)-log\(38\)\)+0.5;) s
5 544 M
(      $aw = \($num**2*2.0*$bw\) / \(\(2.0-$bw\)*$num**1.2*12.8\);) s
5 533 M
(      if \($aw > $olda + 1\) {) s
5 522 M
(         printf "%6d %5d  %3.2f0, $num, $aw, $bw;) s
5 511 M
(         $olda = $aw;) s
5 500 M
(      }) s
5 489 M
(      $num ++;) s
5 478 M
(    }) s
5 456 M
(   Table 10: Perl Program for computing parameters for HighSpeed TCP.) s
5 434 M
(C.  Exploring the time to converge to fairness.) s
5 412 M
(   This section gives the Perl program used to compute the congestion) s
5 401 M
(   window growth during congestion avoidance.) s
5 104 M
(Floyd                         Experimental                     [Page 25]) s
_R
S
%%Page: (26) 26
%%BeginPageSetup
_S
24 24 translate
/pagenum 26 def
/fname (draft-floyd-tcp-highspeed-02.txt) def
/fdir () def
/ftail (draft-floyd-tcp-highspeed-02.txt) def
/user_header_p false def
%%EndPageSetup
5 698 M
(draft-floyd-tcp-highspeed-02                               February 2003) s
5 665 M
(    $top = 2001;) s
5 654 M
(    $hswin = 1;) s
5 643 M
(    $regwin = 1;) s
5 632 M
(    $rtt = 1;) s
5 621 M
(    $lastrtt = 0;) s
5 610 M
(    $rttstep = 100;) s
5 599 M
(    if \($hswin == 1\) {) s
5 588 M
(      print "  RTT  HS_Window Standard_TCP_Window0;) s
5 577 M
(      print "  ---  --------- -------------------0;) s
5 566 M
(    }) s
5 555 M
(    while \($rtt < $top\) {) s
5 544 M
(      $bw = \(0.1 -0.5\)*\(log\($hswin\)-log\(38\)\)/\(log\(83000\)-log\(38\)\)+0.5;) s
5 533 M
(      $aw = \($hswin**2*2.0*$bw\) / \(\(2.0-$bw\)*$hswin**1.2*12.8\);) s
5 522 M
(      if \($aw < 1\) {) s
5 511 M
(          $aw = 1;) s
5 500 M
(      }) s
5 489 M
(      if \($rtt >= $lastrtt + $rttstep\) {) s
5 478 M
(        printf "%5d %9d %10d0, $rtt, $hswin, $regwin;) s
5 467 M
(        $lastrtt = $rtt;) s
5 456 M
(      }) s
5 445 M
(      $hswin += $aw;) s
5 434 M
(      $regwin += 1;) s
5 423 M
(      $rtt ++;) s
5 412 M
(    }) s
5 390 M
(   Table 11: Perl Program for computing the window in congestion) s
5 379 M
(   avoidance.) s
5 357 M
(   AUTHORS' ADDRESSES) s
5 324 M
(      Sally Floyd) s
5 313 M
(      Phone: +1 \(510\) 666-2989) s
5 302 M
(      ICIR \(ICSI Center for Internet Research\)) s
5 291 M
(      Email: floyd@icir.org) s
5 280 M
(      URL: http://www.icir.org/floyd/) s
5 258 M
(      This draft was created in August 2002.) s
5 104 M
(Floyd                         Experimental                     [Page 26]) s
_R
S
%%Trailer
%%Pages: 26
%%DocumentNeededResources: font Courier-Bold Courier 
%%EOF

PAFTECH AB 2003-20262026-04-22 22:38:43