EECS 122: Introduction to Computer Networks TCP Variations Computer Science Division Department of Electrical Engineering and Computer Sciences University of California, Berkeley Berkeley, CA 94720-1776 Katz, Stoica F04 Today’s Lecture: 11 2 17, 18, 19 6 10,11 Transport 14, 15, 16 7, 8, 9 21, 22, 23 25 Application Network (IP) Link Physical Katz, Stoica F04 2 Outline TCP congestion control - Quick Review TCP flavors Equation-based congestion control Impact of losses Cheating Router-based support - RED ECN Fair Queueing XCP Katz, Stoica F04 3 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 Katz, Stoica F04 4 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 Katz, Stoica F04 5 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! Katz, Stoica F04 6 TCP-SACK SACK = Selective Acknowledgements ACK packets identify exactly which packets have arrived Makes recovery from multiple losses much easier Katz, Stoica F04 7 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? Katz, Stoica F04 8 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) Katz, Stoica F04 9 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 Katz, Stoica F04 10 Question! Why use the TCP equation? Why not use any equation for T(p)? Katz, Stoica F04 11 Cheating Three main ways to cheat: - increasing cwnd faster than 1 per RTT - using large initial cwnd - Opening many connections Katz, Stoica F04 12 Increasing cwnd Faster A C y D x B y E x increases by 2 per RTT y increases by 1 per RTT Limit rates: x = 2y x Katz, Stoica F04 13 Increasing cwnd Faster x A B y D E 60 50 40 30 20 10 487 460 433 406 379 352 325 298 271 244 217 190 163 136 109 82 55 28 1 0 Katz, Stoica F04 14 Larger Initial cwnd A D x y B E x starts SS with cwnd = 4 y starts SS with cwnd = 1 Katz, Stoica F04 15 Open Many Connections A D x y B E 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 Katz, Stoica F04 16 Cheating and Game Theory A D A x B y E D Increases by 1 Increases by 1 Increases by 5 Increases by 5 22, 22 10, 35 35, 10 15, 15 Individual incentives: cheating pays Social incentives: better off without cheating (x, y) Too aggressive Losses Throughput falls Classic PD: resolution depends on accountability Katz, Stoica F04 17 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 Katz, Stoica F04 18 Example 60 p=0 50 40 30 20 p = 1% 10 p = 10% 0 1 26 51 76 101 126 151 176 201 226 251 276 301 326 351 376 401 426 451 476 Katz, Stoica F04 19 What can routers do to help? Katz, Stoica F04 Paradox Routers are in middle of action But traditional routers are very passive in terms of congestion control - FIFO - Drop-tail Katz, Stoica F04 21 FIFO: First-In First-Out Maintain a queue to store all packets Send packet at the head of the queue Next to transmit Arriving packet Queued packets Katz, Stoica F04 22 Tail-drop Buffer Management Drop packets only when buffer is full Drop arriving packet Next to transmit Arriving packet Drop Katz, Stoica F04 23 Ways Routers Can Help Packet scheduling: non-FIFO scheduling Packet dropping: - not drop-tail - not only when buffer is full Congestion signaling Katz, Stoica F04 24 Question! Why not use infinite buffers? - no packet drops! Katz, Stoica F04 25 The Buffer Size Quandary Small buffers: - often drop packets due to bursts - but have small delays Large buffers: - reduce number of packet drops (due to bursts) - but increase delays Can we have the best of both worlds? Katz, Stoica F04 26 Random Early Detection (RED) Basic premise: - router should signal congestion when the queue first starts building up (by dropping a packet) - but router should give flows time to reduce their sending rates before dropping more packets Therefore, packet drops should be: - early: don’t wait for queue to overflow - random: don’t drop all packets in burst, but space drops out Katz, Stoica F04 27 RED FIFO scheduling Buffer management: - Probabilistically discard packets - Probability is computed as a function of average queue length (why average?) Discard Probability 1 0 min_th max_th queue_len Average Queue Length Katz, Stoica F04 28 RED (cont’d) min_th – minimum threshold max_th – maximum threshold avg_len – average queue length - avg_len = (1-w)*avg_len + w*sample_len Discard Probability 1 0 min_th max_th queue_len Average Queue Length Katz, Stoica F04 29 RED (cont’d) If (avg_len < min_th) enqueue packet If (avg_len > max_th) drop packet If (avg_len >= min_th and avg_len < max_th) enqueue packet with probability P Discard Probability (P) 1 0 min_th max_th queue_len Average Queue Length Katz, Stoica F04 30 RED (cont’d) P = max_P*(avg_len – min_th)/(max_th – min_th) Improvements to spread the drops (see textbook) Discard Probability max_P 1 P 0 min_th max_th queue_len Average Queue Length avg_len Katz, Stoica F04 31 Average vs Instantaneous Queue Katz, Stoica F04 32 RED Advantages High network utilization with low delays Average queue length small, but capable of absorbing large bursts Many refinements to basic algorithm make it more adaptive (requires less tuning) Katz, Stoica F04 33 Explicit Congestion Notification Rather than drop packets to signal congestion, router can send an explicit signal Explicit congestion notification (ECN): - instead of optionally dropping packet, router sets a bit in the packet header - If data packet has bit set, then ACK has ECN bit set Backward compatibility: - bit in header indicates if host implements ECN - note that not all routers need to implement ECN Katz, Stoica F04 34 Picture A B W W/2 Katz, Stoica F04 35 ECN Advantages No need for retransmitting optionally dropped packets No confusion between congestion losses and corruption losses Katz, Stoica F04 36 Remaining Problem Internet vulnerable to CC cheaters! Single CC standard can’t satisfy all applications - EBCC might answer this point Goal: - make Internet invulnerable to cheaters - allow end users to use whatever congestion control they want How? Katz, Stoica F04 37 One Approach: Nagle (1987) Round-robin among different flows - one queue per flow Katz, Stoica F04 38 Round-Robin Discussion Advantages: protection among flows - Misbehaving flows will not affect the performance of wellbehaving flows • Misbehaving flow – a flow that does not implement any congestion control - FIFO does not have such a property Disadvantages: - More complex than FIFO: per flow queue/state - Biased toward large packets – a flow receives service proportional to the number of packets Katz, Stoica F04 39 Solution? Bit-by-bit round robin Can you do this in practice? No, packets cannot be preempted (why?) …we can only approximate it Katz, Stoica F04 40 Fair Queueing (FQ) Define a fluid flow system: a system in which flows are served bit-by-bit Then serve packets in the increasing order of their deadlines Advantages - Each flow will receive exactly its fair rate Note: - FQ achieves max-min fairness Katz, Stoica F04 41 Max-Min Fairness Denote - C – link capacity N – number of flows ri – arrival rate Max-min fair rate computation: 1. compute C/N 2. if there are flows i such that ri <= C/N, update C and N C C i s.t r C / N ri 3. if no, f = C/N; terminate 4. go to 1 i A flow can receive at most the fair rate, i.e., min(f, ri) Katz, Stoica F04 42 Example C = 10; r1 = 8, r2 = 6, r3 = 2; N = 3 C/3 = 3.33 C = C – r3 = 8; N = 2 C/2 = 4; f = 4 8 6 2 10 4 4 2 f = 4: min(8, 4) = 4 min(6, 4) = 4 min(2, 4) = 2 Katz, Stoica F04 43 Implementing Fair Queueing Idea: serve packets in the order in which they would have finished transmission in the fluid flow system Katz, Stoica F04 44 Example Flow 1 (arrival traffic) Flow 2 (arrival traffic) Service in fluid flow system Packet system 1 2 3 4 5 6 time 1 2 3 4 5 time 1 1 1 2 2 2 3 3 1 3 4 5 4 2 3 4 6 5 4 5 5 time 6 time Katz, Stoica F04 45 System Virtual Time: V(t) Measure service, instead of time V(t) slope – rate at which every active flow receives service - C – link capacity - N(t) – number of active flows in fluid flow system at time t V(t) V (t ) C t N (t ) time Service in fluid flow system 1 2 1 2 3 3 4 4 5 6 5 time Katz, Stoica F04 46 Fair Queueing Implementation Define - Fi k- finishing time of packet k of flow i (in system virtual time reference system) - aik- arrival time of packet k of flow i - Lk - length of packet k of flow i i The finishing time of packet k+1 of flow i is Fi k 1 max( V (aik 1 ), Fi k ) Lki 1 Katz, Stoica F04 47 FQ Advantages FQ protect well-behaved flows from ill-behaved flows Example: 1 UDP (10 Mbps) and 31 TCP’s sharing a 10 Mbps link 10 2 9 1.8 RED 8 7 6 5 4 3 2 Throughput(Mbps) Throughput(Mbps) 1.4 1.2 1 0.8 0.6 0.4 1 0.2 0 0 1 4 7 10 13 16 19 22 25 28 31 Flow Number FQ 1.6 1 4 7 10 13 16 19 22 25 28 31 Flow Number Katz, Stoica F04 48 Alternative Implementations of Max-Min Deficit round-robin Core-stateless fair queueing - label packets with rate - drop according to rates - check at ingress to make sure rates are truthful Approximate fair dropping - keep small sample of previous packets estimate rates based on these apply dropping as above wins because few large flows • per-elephant state, not per-mouse state RED-PD: not max-min, but punishes big cheaters Katz, Stoica F04 49 Big Picture FQ does not eliminate congestion it just manages the congestion You need both end-host congestion control and router support for congestion control - end-host congestion control to adapt - router congestion control to protect/isolate Katz, Stoica F04 50 Explicit Rate Signaling (XCP) Each packet contains: cwnd, RTT, feedback field Routers indicate to flows whether to increase or decrease: - give explicit rates for increase/decrease amounts - feedback is carried back to source in ACK Separation of concerns: - aggregate load - allocation among flows Katz, Stoica F04 51 XCP (continued) Aggregate: - measures spare capacity and avg queue size - computes desired aggregate change: D=aRS-bQ Allocation: - uses AIMD positive feedback is same for all flows negative feedback is proportional to current rate when D=0, reshuffle bandwidth all changes normalized by RTT • want equal rates, not equal windows Katz, Stoica F04 52 XCP (continued) Challenge: - how to give per-flow feedback without per-flow state? - do you keep track of which flows you’ve signaled and which you haven’t? Solution: - figure out desired change - divide from expected number of packets from flow in time interval - give each packet share of rate adjustment - flow totals up all rate adjustment Katz, Stoica F04 53