Congestion Control for High Bandwidth-Delay Product Networks D. Katabi (MIT), M. Handley (UCL), C. Rohrs (MIT) – SIGCOMM’02 Presented by Cheng Huang
Basics of TCP Congestion Control Bandwidth-delay product Capacity of the “pipe” between a TCP sender and a TCP receiver Congestion window (cwnd) sender’s estimation of the capacity Additive Increase and Multiplicative Decrease (AIMD) algorithm no loss:cwnd = cwnd + s loss: cwnd = cwnd – cwnd/2
Motivations Inadequacy of TCP, as bandwidth-delay product increases Prone to instability regardless of AQM schemes Inefficient Fairness concern TCP tends to bias against long RTT flows Satellite links, wireless links, etc.
Design Rationale NOT an end-to-end approach Using precise congestion signaling Decoupling efficiency and fairness control
Features of XCP (eXplicit Control Protocol) Maintains high utilization, small queues, and almost no drops, as bandwidth/delay increases drop: less than one in a million packets Maintains good performance in dynamic environment (with many short web-like flows) No bias against long RTT flows
XCP – Sender/Receiver ’ s Role Sender Fill the congestion header Update cwnd = max(cwnd + H_feedback, s) Receiver Copy H_feedback to ACK
XCP – Router ’ s Role Control Interval Estimation Average RTT Efficiency Control Maximize link utilization Fairness Control Achieve fairness among individual flows
Control Interval Estimation Estimation requirement Core stateless Average over flows (not over packets) e.g. two flows have RTTs of 80 ms and 40 ms and the same cwnd = 10 packets, then average RTT over packets is: RTT avg = (80*10+40*20)/(10+20) = (ms) Instead, average RTT over flows is: RTT avg = (80*80*10+40*40*20)/(80*10+40*20) = 60 (ms)
Control Interval Estimation (2) Weight of each packet w i = H_rtt i * (s i / H_cwnd i ) Average RTT sum(w i * H_rtt i ) / sum(w i ) Average cwnd sum(w i * H_cwnd i ) / sum(w i )
Efficiency Controller (EC) Aggragate feedback (total H_feedback) alpha, beta: constant value d: control interval (average RTT) S: spare bandwidth Q: persistent queue size Stability requirement determines alpha = 0.4; beta = Independent of delay, capacity and number of flows
Fairness Controller (FC) Achieve fairness via AIMD algorithm phi > 0, equal throughput increment of all flows phi < 0, throughput decrement proportional to its current throughput Positive feedback (1/w i ) * (p i /H_rtt i ) = C 1 (constant value) sum(p i /H_rtt i ) = phi/d Negative feedback (1/w i ) * (n i /H_rtt i ) = C 2 * H_cwnd i /H_rtt i sum(n i /H_rtt i ) = phi/d
Fairness Controller (FC) (2) Bandwidth shuffling h = max(0, gamma*y - |phi|) gamma = 0.1 y: input traffic
Performance Evaluation Simulation topology I
Performance Evaluation (2) Simulation topology II
The dynamics of XCP (I)
The Dynamics of XCP (II)
Differential Bandwidth Allocation Replace FC phi > 0: allocate throughput increment according to flows’ prices
Gradual Deployment – A TCP-friendly XCP Separate queues to distinguish TCP and XCP traffics Calculate average cwnd of TCP traffics by Update weights to make TCP and XCP fair
Conclusion XCP provides a theoretically sound, yet effective approach to congestion control. It remains excellent performance, independent of link capacity, delay and number of flows.