TCP-Congestion-Control-Algorithms
TCP-Congestion-Control-Algorithms
The TCP congestion control algorithm has three major phases (a) slow start, (b) congestion
avoidance, and (c) fast recovery. In slow-start, TCP is aggressive and increases cwnd by one
MSS with every new acknowledgement. In congestion avoidance, TCP is cautious and
increases the cwnd by one MSS per round-trip time. Slow-start and congestion avoidance are
mandatory components of all TCP congestion control algorithms. In the event of a packet loss
(inferred by timeout or triple duplicate acknowledgements), the TCP congestion control
algorithm reduces the congestion window to 1 (e.g., Old Tahoe, Tahoe) or by half (e.g., New
Reno). In fast recovery, TCP seeks to recover from intermittent packet losses while maintaining
a high congestion window. The new versions of TCP, including TCP New Reno, incorporate fast
recovery as well. Figure 1-1 presents a simplified view of the TCP New Reno congestion control
algorithm highlighting slow-start, congestion avoidance and fast recovery phases.
Figure 1-1: A simplified view of FSM of the TCP New Reno congestion control algorithm
Figure 1-2: List of scenarios for the example of TCP Congestion Control Algorithms
NetSim UI displays the configuration file corresponding to this experiment as shown below:
Figure 1-3: List of scenarios for the example of TCP Congestion Control Algorithms
1.3 Procedure
Old Tahoe
Step 1: A network scenario is designed in NetSim GUI comprising of 2 Wired Nodes and 2
Routers in the “Internetworks” Network Library.
Step 2: In the Wired Node 1(Source node), the Congestion Control Algorithm in the Transport
layer properties is set to OLD TAHOE .
To configure any properties in the nodes, click on the node, expand the property panel on the
right side, and change the properties as described.
Step 3: In the General Properties of In the Wired Node 1(Source node), Wireshark Capture is
set to Online.
Step 4: The link properties are configured as shown in the table below. To set the wired link
properties, click on the link, expand the link property panel on the right, and configure the
settings as mentioned in the table.
Step 5: Configure CBR application between Wired node 1 and Wired node 2 by clicking on Set
traffic tab from the ribbon on top. To configure application properties, click on created
application and set the Packet Size to 1460 Bytes and Inter Arrival Time to 1168 microseconds
by keeping the transport layer to TCP.
Step 6: Click on Show/Hide info > Device IP check box in the NetSim GUI to view the network
topology along with the IP address.
Tahoe
Step 1: In Wired Node 1 (the source node), the congestion control algorithm is set to TAHOE
under the transport layer properties.
New Reno
Step 1: In Wired Node 1 (the source node), the congestion control algorithm is set to NEW
RENO under the transport layer properties.
1.4 Output
We have enabled WireShark Capture in Wired Node 1. The PCAP file is generated during the
simulation. From the PCAP file, the congestion window evolution graph can be obtained as
follows. In Wireshark, select any data packet with a left click, then, go to Statistics > TCP
Stream Graphs > Window Scaling.
The congestion window evolution for Old Tahoe, Tahoe and New Reno congestion control
algorithms are presented in Figure 1-4, Figure 1-5, and Figure 1-6, respectively.
Table 1-2 shows the throughput values of different congestion control algorithms (obtained from
the Application Metrics).
Figure 1-4: Congestion window evolution with TCP Old Tahoe. We note that Old Tahoe infers packet loss
only with timeouts, and updates the slow-start threshold ssthresh and congestion window cwnd as
ssthresh = cwnd/2 and cwnd = 1
Figure 1-5: Congestion window evolution with TCP Tahoe. We note that Tahoe infers packet loss with
timeout and triple duplicate acknowledgements, and updates the slow-start threshold ssthresh and
congestion window cwnd as ssthresh = cwnd/2 and cwnd = 1
Figure 1-6: Congestion window evolution with TCP New Reno. We note that New Reno infers packet loss
with timeout and triple duplicate acknowledgements and updates the slow-start threshold ssthresh and
congestion window cwnd as ssthresh = cwnd/2 and cwnd = ssthresh + 3MSS (in the event of triple
duplicate acknowledgements).
2. We note that TCP New Reno reports a higher long term average throughput (in
comparison with Old Tahoe and Tahoe, see Table 1-2) as it employs fast retransmit and
recovery to recover from packet losses.
1.6 Exercises
1. Impact of Bit Error Rate on TCP Congestion Control Algorithms
Consider the similar experiment, change the BER value 1 × 10−7, 2 × 10−7,5 × 10−7,
1 × 10−6 on link 2, simulate it for 500 seconds and compare the performance of TCP Old
Tahoe, Tahoe, and New Reno by analyzing the throughput under different error rates.
Also, attach the window scaling graph obtained from Wireshark for 1 × 10−7 case.
Consider the similar experiment by varying the Maximum Segment Size (MSS) to 500, 700,
900, and 1100 bytes. Simulate the network for 500 seconds and compare the performance
of TCP Old Tahoe, Tahoe, and New Reno by analysing the throughput under different
segment sizes.
Construct the scenario using 2 Routers and 2 Wired node, set the link properties similar to
settings done in experiment, configure a video application with a generation rate of 5 Mbps,
set transport protocol to TCP and vary the TCP congestion control algorithm. Tabulate the
throughput and jitter values obtained for each case and discuss how each TCP congestion
control algorithm affected throughput and jitter. Include window scaling screenshots to
support your analysis and highlight any notable differences in the graphs.
Configure the Independent Gaussian model with the following values to generate 5 Mbps of
video
The generation rate for video application can be calculated by using the formula shown
below:
Construct the scenario using 3 wired node and 2 Routers, set the link speed to 20 Mbps,
propagation delay and BER to 0, configure a video application with a generation rate of 5
Mbps, set transport protocol to TCP and vary the TCP congestion control algorithm.
Tabulate the throughput and jitter values obtained for each case and discuss how each TCP
congestion control algorithm affected throughput and jitter.
Case a: Increase the transmitter count to 3 (add one more wired node to the existing
setup) and create one video application from newly dropped device and increase the
bottleneck link capacity to 30 Mbps. Vary the TCP congestion control algorithms and
tabulate the throughput and jitter values obtained for each algorithm.
Case b: Increase the transmitter count to 4 (add one more wired node for case a) and
create one video application from newly dropped device and increase the bottleneck link
capacity to 40 Mbps. Vary the TCP congestion control algorithms and tabulate the
throughput and jitter values obtained for each algorithm.