slides

Delay-based
Congestion Control
CCW 2003
David Wei
http://netlab.caltech.edu
Topics




Summary of congestion control algorithms
FAST Algorithm
Experimental Results
Open problems
Decision Function
Decision Function
Congestion Signal



Loss
Delay
ECN
Vegas
q=q*
Queueing delay
DUAL
q>q_max/2?
CARD
q>0?
TFRC
p=p*
ECN
Loss
Goodput
Decision Function
using
Binary Signal
Congestion Signal



Loss
Delay
ECN
Delay-Based
Loss-Based
Multi-Valued Signal
FAST / Vegas
TFRC
Binary Signal
CARD /
DUAL
Reno / HSTCP
/ ScalableTCP
Congestion Signal



Loss
Delay
ECN
?
Delay-Based
Loss-Based
Multi-Valued Signal
FAST / Vegas
TFRC
Binary Signal
CARD /
DUAL
Reno / HSTCP
/ ScalableTCP
Reno in High Speed…
Throughput as function of the time
Chicago -> CERN
Linux kernel 2.4.19
Traffic generated by iperf (I measure the throughput over the last 5
sec)
TCP single stream
RTT = 119msMTU = 1500
Duration of the test : 2 hours
Bottleneck=1Gbps
Throughput (Mb/s)
500
400
300
200
100
0
0
1000
2000
3000
4000
Time (s)
5000
6000
By Sylvain Ravot (Caltech)
7000
Difficulties in Large Window

Equilibrium problems



Packet level: AI too slow, MI too drastic
Flow level: required loss probability too small
Dynamic problems


1.5
p
Packet level: must oscillate on binary signal
Flow level: unstable at large window
 Measurement
Improvements:
HSTCP
 Very small loss probability
ScalableTCP

W 
Packet out-of order
5
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
FAST (sc2002) Algorithm
Do the following every other RTT:
per acknowledgment:
 Calculation:
w


* baseRTT t     wt  RTTt
RTTt


*
w 
2
t  RTTt

•
•
Action:
If w(t)>w*: w(t)=w(t)-1
If w(t)<w*: w(t)=w(t)+1
Results on Convergence
 wt  RTTt


* baseRTT t     wt  RTTt
RTTt


*
w 
2
wi t 
i q t   d  cl
l
i
With static link model:
 Single link identical sources: converge
 Single link heterogeneous sources: bounded by
converging sequences
 General case (proofs without delay):
Contraction mapping
Simulation with Matlab
pkt/ms
pkt/ms
pkt
pkt



baseRTT: 550ms,600ms,650ms,700ms,750ms
Alpha=500 pkt
C=5000/12 pkt/ms


q(t )  max q(t  t ) 


wi t   


c
i D t   

i
t ,0 
c


Simulation with Matlab
ms
pkt



baseRTT: 550ms,600ms,650ms,700ms,750ms
Alpha=500
C=5000/12 pkt/ms
Dummynet Testbed
@ Netlab, Caltech
Static throughput
Dynamic sharing on Dummynet

capacity = 800Mbps

Delay = 50 - 200ms

# flows: 1 - 10

iperf throughput

Linux 2.4 (HSTCP: UCL)
Static throughput
queue
FAST
10 Flows
loss
RTT=50ms ~ Linux
200ms
HSTCP
throughput
HSTCP Scalable
HSTCP
STCP
Bottleneck=800Mbps
Linux
Questions?
Thanks