Javis in action : Slow Start Algorithm

 About Slow-Start Algorithm

 Simulation showing Slow-Start Algorithm

 

About Slow-Start Algorithm:

The additive increase (increase the congestion window linearly) takes TCP too long to reach or close to the available capacity of a network since a cold start. In the other words, the additive increase causes low link utilization. TCP therefore provides another mechanism called slow-start to alleviate the problem.

 

From a cold start, TCP slow-start mechanism increases the congestion window exponentially instead of linearly. It means that the TCP congestion window extends in the following scheme: 1, 2, 4, 8, 16, ... . By using just described strategy, higher link capacity can be utilized in the same amount of time.

 

The diagram below shows the scenario of TCP slow-start mechanism:

Assumption: The maximum congestion window size is 8. Therefore, the congestion window size will not increase after it reaches the size 8.

Description: The sender starts with the congestion window size 1. Upon each ACK from the receiver, the sender increases the congestion window size by 1. For example, when the sender receives "ACK 1", its congestion window size is increased to be 2. Thus, in the next window, the sender can send 2 packets consecutively without receiving any ACKs from the receiver.

 

The simulation showing Slow-Start algorithm:

Tools:

1. Javis version 0.2 (Applet version)

2. ns version 2.1b6

Topology Desctiption: There are 2 nodes named "0" and "1" in the topology.

"0" is a sender. "1" acts as a receiver.

Link Description: There is one duplex-link connecting between "0" and "1". The characterizations of the the link are as follow:

0.1 Mb 100 ms DropTail

Assumption: The maximum congestion window size ("maxcwnd_" variable) is set to 8.

 File Name: slow-start-out.nam.gz

Simulation Description: At time 0.1, the sender starts sending a packet with a traced variable cwnd_ = 1. After the sender receives an Ack for the first packet, the sender increases the traced variable cwnd_ to be 2 and sends out the second packet followed by the third packet without waiting for an Ack of the second packet. At time 0.832, the congestion window size reaches 8. The sender therefore cannot increase its congestion window since then. In the other words, since time 0.832, the sender can send only 8 packets per window.