EE 122: Congestion Control The Sequel October 1, 2003
2 Quick Review Slow-Start: cwnd++ upon every new ACK Congestion avoidance: AIMD if cwnd > ssthresh -ACK: cwnd = cwnd + 1/cwnd -Drop: ssthresh =cwnd/2 and cwnd=1 Fast Recovery: -duplicate ACKS: cwnd=cwnd/2 -Timeout: cwnd=1
3 TCP Flavors TCP-Tahoe -cwnd =1 whenever drop is detected TCP-Reno -cwnd =1 on timeout -cwnd = cwnd/2 on dupack TCP-newReno -TCP-Reno + improved fast recovery TCP-Vegas, TCP-SACK
4 TCP Vegas Improved timeout mechanism Decrease cwnd only for losses sent at current rate -avoids reducing rate twice Congestion avoidance phase: -compare Actual rate (A) to Expected rate (E) -if E-A > , decrease cwnd linearly -if E-A < , increase cwnd linearly -rate measurements ~ delay measurements -see textbook for details!
5 TCP-SACK SACK = Selective Acknowledgements ACK packets identify exactly which packets have arrived Makes recovery from multiple losses much easier
6 Standards? How can all these algorithms coexist? Don’t we need a single, uniform standard? What happens if I’m using Reno and you are using Tahoe, and we try to communicate?
7 Equation-Based CC Simple scenario -assume a drop every k’th RTT (for some large k) -w, w+1, w+2,...w+k-1 DROP (w+k-1)/2, (w+k-1)/2+1,... Observations: -In steady state: w= (w+k-1)/2 so w=k-1 -Average window: 1.5(k-1) -Total packets between drops: 1.5k(k-1) -Drop probability: p = 1/[1.5k(k-1)] Throughput: T ~ (1/RTT)*sqrt(3/2p)
8 Equation-Based CC Idea: -Forget complicated increase/decrease algorithms -Use this equation T(p) directly! Approach: -measure drop rate (don’t need ACKs for this) -send drop rate p to source -source sends at rate T(p) Good for streaming audio/video that can’t tolerate the high variability of TCP’s sending rate
9 Question! Why use the TCP equation? Why not use any equation for T(p)?
10 Cheating Three main ways to cheat: -increasing cwnd faster than 1 per RTT -using large initial cwnd -Opening many connections
11 Increasing cwnd Faster AB x DE y Limit rates: x = 2y C x y x increases by 2 per RTT y increases by 1 per RTT
12 Increasing cwnd Faster AB x DE y
13 Larger Initial cwnd AB x DE y x starts SS with cwnd = 4 y starts SS with cwnd = 1
14 Open Many Connections AB x DE y Assume A starts 10 connections to B D starts 1 connection to E Each connection gets about the same throughput Then A gets 10 times more throughput than D
15 Cheating and Game Theory AB x DE y 22, 2210, 35 35, 1015, 15 (x, y) A Increases by 1 Increases by 5 D Increases by 1 Increases by 5 Individual incentives: cheating pays Social incentives: better off without cheating Classic PD: resolution depends on accountability Too aggressive Losses Throughput falls
16 Lossy Links TCP assumes that all losses are due to congestion What happens when the link is lossy? Recall that Tput ~ 1/sqrt(p) where p is loss prob. This applies even for non-congestion losses
17 Example p = 0 p = 1% p = 10%