WPI TCP CUBIC in ns3 CS 577 Brett
WPI TCP CUBIC in ns-3 CS 577 Brett Levasseur 12/10/2013
Outline • • • WPI Introduction CUBIC in Linux ns-3 Implementation Results Conclusions 12/10/2013 2
Introduction WPI • TCP grows cwnd too slowly for large bandwidth connections • New TCP Variant needed 10 Gbps 120, 000 Almost 1. 4 hours to take up ½ possible cwnd 100, 000 Bytes 80, 000 60, 000 cwnd 40, 000 20, 000 0 0 12/10/2013 0. 2 0. 4 0. 6 0. 8 Hours 1 1. 2 1. 4 1. 6 1, 250 byte packets ssthresh ~ 8000 bytes 100 ms RTT 3
CUBIC WPI • BIC was first attempt • CUBIC simplified and improved upon BIC • Grow cwnd slower around loss events 12/10/2013 4
CUBIC Basics WPI • cwnd growth • Packet loss C CUBIC parameter t Elapsed time from the last window reduction K Time period to increase W to Wmax W Current cwnd Wmax β 12/10/2013 cwnd at last window reduction Window decrease constant 5
CUBIC Basics 300 WPI Wmax 250 200 150 100 50 W(t=0) 0 0 2 4 6 8 10 12 14 • At loss event set Wmax, reduce cwnd by β and calculate K 12/10/2013 6
CUBIC Basics WPI K 300 W(t=K) 250 W(t=2) 200 150 W(t=1) 100 50 0 0 2 4 6 8 10 12 14 • cwnd grows back to K when t = K 12/10/2013 7
CUBIC in Linux • • • WPI Not implemented as in the CUBIC paper cwnd grows in increments of segment sizes Custom method for calculating cube roots Checks for error conditions Unit scaling 12/10/2013 8
Growing cwnd WPI 1. 2 • Linux only grows cwnd by full segments • CUBIC can grow cwnd less than full segment • Same impact by increasing amount of time between updates 12/10/2013 1 0. 8 0. 6 0. 4 0. 2 0 0 1 2 3 4 5 0 0 1 0. 25 0 0 2 0. 5 4 1 3 0. 75 4 1 9
Scaling in CUBIC WPI • Most scaling is related to time • Variable ‘t’ measured with TCP timestamps – Timestamps use clock cycles to increment – Units are called jiffies in the Linux Kernel • Number of milliseconds in a jiffy depends on the CPU’s clock • Scaling required to get time units correct 12/10/2013 10
ns-3 Implementation WPI • Object oriented design • Generic TCP defined • TCP variants are extended from base • TCP headers and buffers provided • Added Tcp. Cubic object – tcp-cubic. cc – tcp-cubic. h 12/10/2013 11
ns-3 Methods WPI • New. Ack – called for every new ACK received – Normal cwnd updates in slow start – CUBIC updates otherwise • Dup. Ack – called for every duplicate ACK received – Normal operation when < 3 duplicates – For 3 duplicate ACKs reduce cwnd 12/10/2013 12
CUBIC Methods WPI • Cubic. Root – Find the cubic root of a number – Based on Linux Kernel implementation • Cubic. Update – Calculate the cwnd target for CUBIC • Cubic. Tcp. Friendliness – Change the cwnd target for TCP Friendliness • Cubic. Reset – Reset CUBIC parameters 12/10/2013 13
CUBIC Flow New. Ack Cubic. Update If outside slow start Cubic. Root WPI Cubic. Tcp Friendliness Set K for loss event Check TCP Friendliness Recommended cwnd growth 12/10/2013 14
Issues WPI • ns-3 does not have TCP timestamps • Simulation clock used instead • Requires adjustments to calculating ‘t’ due to different units • Could remove the use of jiffy code but much of the Linux implementation relies on scaling factors based on the system clock 12/10/2013 15
Results WPI • Compare to real world CUBIC example • Examine simulation results – Verify cwnd reduction – Verify cwnd growth in relation to Wmax • Compare simulated CUBIC to simulated New. Reno 12/10/2013 16
Simulation Scenario WPI • Simple sender and sink topology • Packet sizes 536 bytes • Transmission rate 1 Mbps • Delay 40 ms • Error rate – Causes lost packets at the receiver 12/10/2013 17
Measurements WPI • Measurement and simulation have similar CUBIC curve • Number of segments similar 12/10/2013 18
Packet Loss • • WPI Before loss cwnd = 216 After loss cwnd = 172 β = 819 BICTCP_BETA_SCALE = 1024 12/10/2013 19
CUBIC Growth WPI convex concave & convex concave • Before and after additional scaling of ‘t’ • More work is needed for using simulator clock with ‘t’ 12/10/2013 20
New. Reno Comparison WPI • Same simulation run with CUBIC and New. Reno • Both increment the same under slow start • CUBIC grows cwnd faster • CUBIC handles packet loss better than New. Reno 12/10/2013 21
Conclusions WPI • Created a CUBIC implementation in ns-3 • Similar cwnd growth to actual CUBIC measurements • Current version outperforms New. Reno • Scaling adjustments required 12/10/2013 22
Questions 12/10/2013 WPI 23
- Slides: 23