What is congestion and why is it an important problem for CS 78 Computer Networks ? Congestion Control

Andrew T. Campbell [email protected]

How does the source Principles of Congestion Control determine congestion? Congestion: • informally: “too many sources sending too much data too fast for network to handle” • different from flow control! • manifestations: – lost packets (buffer overflow at routers) – long delays (queueing in router buffers) • Can be a serious problem

Two approaches towards congestion Congestion Scenarios control - what’s the tradeoffs? H λ o s o u t t End-end congestion Network-assisted congestion A control control H o • routers provide feedback s • no explicit feedback t to end systems B from network – single bit indicating • congestion inferred congestion (SNA, from end-system DECbit, TCP/IP ECN, observed loss, delay ATM) • approach taken by TCP – explicit rate sender Another “cost” of congestion: should send at • when packet dropped, any “upstream transmission capacity used for that packet was wasted!

1 TCP’s end-to-end approach TCP congestion control: additive AIMD (Additive Increase, Multiplicative increase, multiplicative decrease Decrease) • Approach: increase transmission rate (window size), probing for usable , until loss occurs – additive increase: increase CongWin by 1 MSS every RTT until loss detected

– multiplicative cdongeestcion rease: cut CongWin in half window

after loss 24 Kbytes

16 Kbytes Saw tooth 8 Kbytes behavior: probing time for bandwidth

time

TCP Congestion Control TCP Slow Start

• Sender limits transmission: How does sender • When connection • When connection LastByteSent-LastByteAcked perceive congestion? begins, CongWin = 1 begins, increase rate ≤ CongWin • loss event = timeout or MSS • Roughly, exponentially fast until 3 duplicate acks – Example: MSS = 500 first loss event CongWin bytes & RTT = 200 rate = Bytes/sec • TCP sender reduces RTT rate (CongWin) after msec • CongWin is dynamic, function of loss event – initial rate = 20 kbps perceived Three mechanisms: • available bandwidth – AIMD may be >> MSS/RTT – slow start – desirable to quickly – conservative after ramp up to timeout events respectable rate

TCP Slow Start (more) TCP timing during slow start

• When connection Host A Host B begins, increase rate one segment exponentially until first T T loss event: R two – double CongWin every segments RTT – done by incrementing CongWin for every ACK fo ur segme received nts • Summary: initial rate is slow but ramps up exponentially fast time

2 Refinement Inferring loss Q: When should the exponential • After 3 dup ACKs: • 3 dup ACKs indicates increase switch to – CongWin is cut in half linear? network capable of – window then grows linearly A: When CongWin delivering some segments gets to 1/2 of its • But after timeout event: value before – CongWin instead set to 1 Max timeout. Seg Size (MSS); •timeout indicates a “more – window then grows alarming” congestion exponentially scenario Implementation: – to a threshold, then grows • Variable Threshold linearly • At loss event, Threshold is set to 1/2 of CongWin just before loss event

TCP sender congestion control TCP Congestion Control

• When CongWin is below Threshold, sender in slow-start phase, window grows exponentially.

• When CongWin is above Threshold, sender is in congestion-avoidance phase, window grows linearly.

• When a triple duplicate ACK occurs, Threshold set to CongWin/2 and CongWin set to Threshold.

• When timeout occurs, Threshold set to CongWin/2 and CongWin is set to 1 MSS.

Congestion control’s evolution TCP throughput

• What’s the average throughout of TCP as a function of window size and RTT? – Ignore slow start • Let W be the window size when loss occurs. • When window is W, throughput is W/RTT • Just after loss, window drops to W/2, throughput to W/2RTT. • Average throughout: .75 W/RTT

3 TCP: The fairness issue Why is TCP fair?

if K TCP sessions share same bottleneck link Two competing sessions: of bandwidth R, each should have average • Additive increase gives rate of R/K slope of 1, as throughout increases • Multiplicative decrease decreases throughput proportionally

Fairness

Fairness and UDP Fairness and parallel TCP • Multimedia apps often connections do not use TCP • nothing prevents app from – do not want rate throttled opening parallel by congestion control connections between 2 • Instead use UDP: hosts. – pump audio/video at • Web browsers do this constant rate, tolerate • Example: link of rate R supporting 9 cnctions; • Research area: TCP – new app asks for 1 TCP, gets friendly rate R/10 – new app asks for 11 TCPs, gets R/2 !

4