Congestion Control, High-Speed Networking
- Random Early Discard
- Speeding up:
- Faster technologies
- New challenges
Random Early Discard (RED)
- uses packet drop to notify sender of congestion (designed to
work with TCP/IP networks)
- intent is that by dropping a packet "early",
the source will slow down, avoiding dropping a
lot of packets later.
RED: drop algorithm
- len: current length,
L: average queue length,
W: weight, typically 0.002,
count: packets since last drop
- when packet arrives:
- L = (1 - W) * L + W * len
- if L <= Min, queue packet
- if Min < L < Max
- with probability P(L, count) drop packet, count = 0
- otherwise queue the packet, count += 1
- P increases until a packet is dropped:
P' = MaxP * (L - Min) / (Max - Min),
P = P' / (1 - count * P')
- if Max <= L, drop the packet, count = 0
In-class exercise
- len = 700
- L = 599
- W = 0.002,
- count = 100
- Min = 500
- Max = 1000
- MaxP = 0.02
- compute:
- the new average length L
- the probability P of dropping the packet
- you may use appropriate approximations
Faster Networks
- TCP/IP developed for 56Kb/s land lines
- experience: Ethernet (10 Mb/s), modems (10-60Kb/s)
- new technologies:
- 100 Mb/s Ethernet
- ATM
- Gigabit Ethernet
- what happens when things go faster?
When things go faster
- throughput increases, but
- speed of light remains (approximately) the same, so
- latency does not decrease significantly, so
- do things to avoid round-trips
Latency and Throughput
- throughput = size / latency
- what we really care about is
latency = propagation + transmission + queue
- transmission = size / bandwidth
For fast networks (i.e. when bandwidth is large, transmission
and queuing delays are small),
- throughput =~ size / propagation
- latency =~ propagation
What Breaks
- connection setup/teardown is slow
- resource reservation is slow
- feedback from the network is slow:
- congestion control is unresponsive
- must buffer lots of data in case of packet loss
Trading Througput for Latency
- Prefetch (takes more bandwidth)
- Cache (takes more memory)
- Reuse (saves latency)
- Forward Error Correction (takes more bandwidth, saves latency)