Transcript Scalable TCP: Improving Performance in Highspeed Wide Area
Scalable TCP: Improving Performance in Highspeed Wide Area Networks
Paper by Tom Kelly Presented by Christoph Jechlitschek
2 The Problem
TCP performs badly with very large congestion windows Converges slowly Underutilizes available link capacity Example: A 1 Gbps flow needs 28 minutes to recover from a single packet loss
3 TCP congestion window update
cwnd cwnd + 1/cwnd; - if no loss was detected cwnd cwnd/2; - if a loss was detected
4 TCP congestion window
5 Scalable TCP congestion window update
cwnd cwnd + 0.01; - if no loss was detected cwnd cwnd – 0.125 * cwnd; - if a loss was detected
6 Scalable TCP congestion window
7 Analysis
Generalized form of update function: cwnd cwnd + a; if no loss detected cwnd cwnd – b * cwnd; if loss detected What makes a = 0.01 and b = 0.125 a good choice?
8 Legacy connections
Traditional connections: - are not designed to use large windows - limited amount of buffers Legacy window size lwnd = 16 Legacy loss rate p l = 5.86 * 10 -3
9 Response curve
Relates a and b Choosing one fixes the other
10 Instantaneous rate variation
Avoid large instantaneous rate variations Coefficient of variance depends on b only Therefore b should be as small as possible
11 Convergence
Converge to a new bound as fast as possible Large a and b speed up convergence Contradicts with earlier statement
Decision 12
Balance variation with converge time Choose a = 0.01 and b = 0.125
13 Experiment setup
14 Gigabit kernel modifications
Increases size of kernel interface queues Avoids unnecessary packet copying Removes debug counters
15 Performance test 1
4 sender/receiver pairs transfer 2 GB files Count number of transfers in 1200 seconds
16 Performance test 1 results
17 Performance test 2
Simulate Web traffic using standard TCP Background bulk transfer with Scalable TCP
18 Performance test 2 results
19 Conclusion
Simple sender-side modifications greatly improved performance No modification to receiver needed Negligible effect on standard TCP connections Incrementally deployable
Questions?