Congestion Control
What is Congestion Control?
Congestion control is a set of techniques used by connection-oriented protocols like TCP to prevent network congestion by controlling the amount of data sent into the network.
Why is Congestion Control useful?
It helps maintain network performance and avoids packet loss or delays caused by overwhelming network resources, ensuring fair bandwidth usage among multiple users.
How does Congestion Control work?
TCP uses algorithms like Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery to dynamically adjust the sending rate based on network feedback and detected packet loss.
Where is Congestion Control used?
It is used in all TCP-based communications across the internet and private networks to maintain reliable and efficient data transmission.
Which OSI layer does Congestion Control belong to?
Congestion control mechanisms are implemented at the Transport Layer (Layer 4) of the OSI model.
Is Congestion Control Windows specific?
No, congestion control algorithms are part of the TCP implementation on all major operating systems including Windows, Linux, and macOS.
Is Congestion Control Linux specific?
No, Linux implements TCP congestion control with various algorithms, and this functionality is common across all platforms supporting TCP.
Which Transport Protocol uses Congestion Control?
TCP (Transmission Control Protocol) primarily uses congestion control techniques to manage network traffic.
Is Congestion Control using client-server model?
Yes, congestion control is used in client-server communication to ensure that data flows efficiently and fairly between sender and receiver.
In this section, you are going to learn
Terminology
Version Info
setup
Congestion Control - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Normal Traffic |
Send data under normal conditions |
No congestion detected |
2 |
High Traffic Volume |
Send large data quickly |
Congestion detected |
3 |
Sudden Traffic Spike |
Abrupt increase in traffic |
Congestion control triggered |
4 |
Packet Loss Detection |
Simulate packet loss |
Congestion control activated |
5 |
Timeout Detection |
Simulate timeout |
Congestion window reduced |
6 |
Duplicate ACKs |
Send duplicate ACKs |
Fast retransmit triggered |
7 |
Triple Duplicate ACKs |
Send 3 duplicate ACKs |
Fast recovery initiated |
8 |
Slow Start Phase |
Begin connection |
Exponential window growth |
9 |
Congestion Avoidance Phase |
After slow start |
Linear window growth |
10 |
Fast Retransmit |
Detect loss via ACKs |
Retransmit lost packet |
11 |
Fast Recovery |
Recover from loss |
Resume transmission smoothly |
12 |
Window Size Increase |
Increase congestion window |
Throughput improves |
13 |
Window Size Decrease |
Decrease window after loss |
Throughput reduced |
14 |
Zero Window Size |
Receiver sets window to 0 |
Sender pauses transmission |
15 |
Window Probe |
Probe zero window |
Receiver responds with window update |
16 |
RTT Measurement |
Measure round-trip time |
RTT calculated accurately |
17 |
Bandwidth Estimation |
Estimate available bandwidth |
Bandwidth used efficiently |
18 |
Buffer Overflow |
Simulate buffer overflow |
Congestion detected |
19 |
Queue Delay |
Increase queue delay |
Congestion signaled |
20 |
ECN Enabled |
Use Explicit Congestion Notification |
ECN flags processed |
21 |
ECN Disabled |
Disable ECN |
No ECN flags used |
22 |
Random Early Detection |
Drop packets early |
Congestion avoided |
23 |
TCP Reno Behavior |
Use Reno algorithm |
Reno phases executed correctly |
24 |
TCP Tahoe Behavior |
Use Tahoe algorithm |
Tahoe phases executed correctly |
25 |
TCP Cubic Behavior |
Use Cubic algorithm |
Cubic growth observed |
26 |
TCP BBR Behavior |
Use BBR algorithm |
Bandwidth-based control applied |
27 |
Congestion Window Saturation |
Max out window size |
No further growth allowed |
28 |
Congestion Window Reset |
Reset window after loss |
Window set to initial value |
29 |
ACK Delay |
Delay ACKs artificially |
RTT increases, window adjusted |
30 |
ACK Burst |
Send burst of ACKs |
Window grows rapidly |
31 |
Retransmission Timeout |
Trigger RTO |
Congestion window reset |
32 |
Multiple Loss Events |
Simulate multiple losses |
Multiple recovery phases triggered |
33 |
No Congestion |
Send small data |
No control triggered |
34 |
Idle Connection |
No data sent for long |
Window remains unchanged |
35 |
Reconnection |
Reconnect after termination |
Slow start initiated again |
36 |
Flow Control Interaction |
Combine with flow control |
Both mechanisms work together |
37 |
Application-Limited Flow |
App sends limited data |
Window growth paused |
38 |
Delayed ACKs |
ACKs delayed intentionally |
RTT increases, window adjusted |
39 |
ACK Loss |
ACKs lost in transit |
Retransmission triggered |
40 |
Mixed Traffic |
Mix of large and small packets |
Adaptive control applied |
41 |
Network Jitter |
Simulate jitter |
RTT variation handled |
42 |
Network Congestion |
Simulate real congestion |
Control mechanisms activated |
43 |
Link Failure |
Simulate link drop |
Connection reset |
44 |
Recovery After Congestion |
Resume normal traffic |
Window grows again |
45 |
Congestion in VPN |
Simulate congestion over VPN |
VPN handles congestion |
46 |
Congestion in NAT |
Simulate congestion behind NAT |
NAT handles control correctly |
47 |
Congestion in Proxy |
Simulate congestion via proxy |
Proxy forwards control signals |
48 |
Congestion in Cloud |
Simulate cloud network congestion |
Cloud handles control efficiently |
49 |
Congestion in Mobile Network |
Simulate mobile congestion |
Mobile TCP adapts |
50 |
Congestion Logging |
Log congestion events |
Logs generated successfully |
Reference links