TCP Congestion Control Jennifer Rexford Fall 2014 (TTh 3:00-4:20 in CS 105) COS 561: Advanced Computer Networks http://www.cs.princeton.edu/courses/archive/fall14/cos561/ Holding the Internet Together • Distributed cooperation for resource allocation – BGP: what end-to-end paths to take (for ~50K ASes) – TCP: what rate to send over each path (for ~3B hosts) AS 2 AS 1 AS 3 AS 4 2 What Problem Does a Protocol Solve? • BGP path selection – Select a path that each AS on the path is willing to use – Adapt path selection in the presence of failures • TCP congestion control – Prevent congestion collapse of the Internet – Allocate bandwidth fairly and efficiently • But, can we be more precise? – Define mathematically what problem is being solved – To understand the problem and analyze the protocol – To predict the effects of changes in the system – To design better protocols from first principles 3 Fairness 4 Fair and Efficient Use of a Resource • Suppose n users share a single resource –Like the bandwidth on a single link –E.g., 3 users sharing a 30 Gbps link • What is a fair allocation of bandwidth? –Suppose user demand is “elastic” (i.e., unlimited) –Allocate each a 1/n share (e.g., 10 Gbps each) • But, “equality” is not enough –Which allocation is best: [5, 5, 5] or [18, 6, 6]? –[5, 5, 5] is more “fair”, but [18, 6, 6] more efficient5 –What about [5, 5, 5] vs. [22, 4, 4]? Fair Use of a Single Resource • What if some users have inelastic demand? – E.g., 3 users where 1 user only wants 6 Gbps – And the total link capacity is 30 Gbps • Should we still do an “equal” allocation? – E.g., [6, 6, 6] – But that leaves 12 Gbps unused • Should we allocate in proportion to demand? – E.g., 1 user wants 6 Gbps, and 2 each want 20 Gbps – Allocate [4, 13, 13]? • Or, give the least demanding user all he wants? – E.g., allocate [6, 12, 12]? 6 Max-Min Fairness • The allocation must be “feasible” – Total allocation should not exceed link capacity • Protect the less fortunate – Any attempt to increase the allocation of one user – … necessarily decreases the allocation of another user with equal or lower allocation • Fully utilize a “bottlenecked” resource – If demand exceeds capacity, the link is fully used • Progressive filling algorithm – Grow all rates until some users stop having demand – Continue increasing all remaining rates till link is full 7 Resource Allocation Over Paths B A Three users A, B, and C Two 30 Gbps links C • Maximum throughput: [30, 30, 0] – Total throughput of 60, but user C starves • Max-min fairness: [15, 15, 15] – Equal allocation, but throughput of just 45 • Proportional fairness: [20, 20, 10] – Balance trade-off between throughput and equality – Throughput of 50, and penalize C for using 2 busy links 8 Distributed Algorithm for Achieving Fairness 9 Network Utility Maximization (NUM) • Users (i) – Rate allocation: xi – Utility function: U(xi) U(xi) • Network links (l) – Link capacity: cl – Routes: Rli=1 if link l on path i, Rli=0 otherwise xi maximize Si U(xi) subject to Si Rlixi cl variables xi ≥ 0 10 Network Utility and Fairness Alpha-fair utility – U(x) = x1-a/(1-a) for a ≠ 1 – U(x) = log(x) for a = 1 concave U(x) (diminishing returns) x Max Proportional throughput fairness 0 1 Max-min fairness ∞ small a large a (more elastic demand) (more fair) 11 Solving NUM Problems maximize Si U(xi) subject to Si Rlixi cl variables xi ≥ 0 • Convex optimization – Maximizing a concave objective – Subject to convex constraints • Benefits – Locally optimal solution is globally optimal – Can be solved efficiently on a centralized computer • “Decomposable” into many smaller problems 12 Move Constraints to Objective max Si U(xi) subject to Si Rlixi cl variables xi ≥ 0 decoupled across sessions coupled across sessions max Si U(xi) + Sl pl (cl – Si in S(l) xi) decoupled across sessions decoupled across links max Si [U(xi) – (Sl in L(i) pl ) xi] + Sl pl cl 13 Decomposition offered link load yl = S Rlixi rates xi Link l User i pl[t] = (pl[t-1] - b (cl – yl))+ max (U(xi) – qi) xi prices pl path cost qi = S pl 14 Link Prices and Implicit Feedback • What are the link prices pl? – Measure of congestion – Amount of traffic in excess of capacity – That is, the packet loss! • What are the path costs qi? – Sum of the link prices pl along the path – If loss is low, sum of link loss is roughly path loss • No need for explicit feedback! – User i can observe the path loss qi on path i – Link l can observe the offered load yl on link l 15 Coming Back to TCP • Reverse engineering – TCP Reno Utilities are arctan(x) Prices are end-to-end packet loss – TCP Vegas Utilities are log(x), i.e., proportional fairness Prices are end-to-end packet delays • Forward engineering – Use decomposition to design new variants of TCP – E.g., TCP FAST • Simplifications – Fixed set of connections, focus on equilibrium behavior, 16 ignore feedback delays and queuing dynamics TCP Congestion Control 17 Detecting and Reacting to Loss • Detecting packet loss – Timeout – Triple duplicate ACK • Reacting to loss – Retransmit the lost packet – Decrease the congestion window (how much?) • Reacting to non-loss – Increase the congestion window (how much?) • Additive increase, multiplicative decrease 18 TCP Tahoe vs. TCP Reno • Two similar versions of TCP – TCP Tahoe (SIGCOMM’88 paper) – TCP Reno (1990) • TCP Tahoe – Always repeat slow start after a loss – Assign slow-start threshold to half of congestion window • TCP Reno – Repeat slow start after timeout-based loss – Divide congestion window in half after triple dup ACK 19 TCP Sawtooth Behavior Congestion Window timeout triple dup ACK t 20 Discussion 21