TCP congestion control in Computer Networks - Time & Space Complexity
When studying TCP congestion control, it is important to understand how the time to send data changes as network conditions vary.
We want to know how the control process scales as more data is sent and network congestion changes.
Analyze the time complexity of the following simplified TCP congestion control steps.
cwnd = 1 // congestion window size
while data_to_send > 0:
send min(cwnd, data_to_send) packets
wait for ACKs
if no loss detected:
cwnd += 1 // increase window size
else:
cwnd = cwnd / 2 // reduce window size
data_to_send -= min(cwnd, data_to_send)
This code simulates how TCP adjusts the amount of data it sends based on network feedback.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop that sends packets and adjusts the congestion window.
- How many times: The loop runs until all data is sent, repeating many times depending on network conditions.
As the amount of data to send grows, the number of loop cycles increases roughly in proportion to the data size divided by the congestion window.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 packets | About 10 cycles or fewer due to window growth |
| 100 packets | More than 10 cycles but less than 100 due to window increasing |
| 1000 packets | Many cycles but fewer than 1000 because window grows over time |
Pattern observation: The number of steps grows slower than the data size because the congestion window increases, allowing more data sent per cycle.
Time Complexity: O(\sqrt{n})
This means the time to send all data grows roughly proportional to the square root of the amount of data, adjusted by how the congestion window changes.
[X] Wrong: "TCP congestion control always sends data at a fixed rate regardless of network conditions."
[OK] Correct: TCP changes its sending rate based on feedback, so the time to send data depends on network congestion and window size.
Understanding how TCP congestion control scales with data size shows your grasp of real network behavior and adaptive algorithms, a useful skill in many tech roles.
"What if the congestion window increased by 2 packets each cycle instead of 1? How would the time complexity change?"