next up previous
Next: Error Recovery Up: Congestion Control Algorithm Previous: Adjusting the window

Startup

Currently, the algorithm used by TCP at startup is the slow start algorithm used by TCP Reno with two modifications: the initial cwnd is set to two segments instead on one so that initial values for DFi,j can be calculated and the algorithm may stop slow start before ssthresh > cwnd if any relative delay measurement or Nti exceeds n/2. During slowstart the congestion window doubles every round-trip time, leading to an exponential growth in the congestion window. Many divergent problems have been identified with slow start. On the one hand, the algorithm actually causes the congestion window to grow very quickly and such rapid growth often leads to congestion in the data path. This is the approach taken by TCP Reno to find the optimal window size. In contrast, for connections with very high bandwidth delay products, slow start is actually too slow, and if a transfer is very short it is possible that the pipe is never filled, which leads to underutilization of the network and renders short transfers very expensive.

In TCP-Santa Cruz, slow start is stopped as soon as any congestion is identified in the forward path, i.e. as soon as DFi,j > 0 for any measurement, we stop the exponential increase and move to our congestion avoidance algorithm. Once stopped, slow start begins again only if a timeout occurs. The complete state diagram showing the adjustment of the congestion window during startup and congestion avoidance is shown in Figure 6.


  
Figure 6: The congestion avoidance policy and slow start followed by TCP-Santa Cruz.


next up previous
Next: Error Recovery Up: Congestion Control Algorithm Previous: Adjusting the window
Chris Parsa
2000-01-25