Network Congestion Problem
- Too many sources send too much data too fast for network to handle.
- Manifested when:
- long delays (queuing in intermediate router buffers)
- packet loss (buffer overflow at routers)
Network consists of wired and wireless connections

The differences in network throughput of wired and wireless connections cause:
- congestion to occur in intermediate routers.
- degraded overall throughput (100 Mbps).
- packet lantecy to increase due to packet queuing inside buffer.
Solution: Congestion Control

Congestion Control
Approach
- Step1: measure the throughput of the connection.
- Step2: match the sending rate to the throughput.
Challenge 1 : Capacity Variations
- Mobility causes capacity variations
- Competition between connections causes capacity variations
Challenge 2: Fairness

End-to-end congestion control

- no explicit feedback from network.
- congestion is inferred from observed data lost and delay.
- approach taken by TCP.
Pure end-to-end solution without cooperation from the network: probing for the capacity

- Sending rate slowly increases until bottleneck.
- Packets start to drop once the sending rate exceeds the network capacity.
- Sending rate slowly decreases until packet drops disappear and a maximum throughput is acheived.
- Repeat the process.
AIMD (Additive Increase Multiplicative Decrease): de-facto TCP Congestion Control Algorithm

- Approach:
- senders can increase sending rate until congestion occurs, then decrease sending rate on congesion.
- Additive Increase:
- Increase sending rate by 1 maximum segment size every RTT until loss is detected.
- Multiplicative Decrease:
- Cut sending rate in half at each loss event.
Why AIMD?

- AIMD is a distributed and asynchronous algorithm which has been shown to
- optimize congestion control rates to be network-wide.
- have desirable stability properties.
- These senders using AIMD end up using fair amount of bandwidth.