You are on page 1of 14

Congestion Control

Transport Layer 3-1


Principles of Congestion Control

Congestion:
 informally: “too many sources sending too much
data too fast for network to handle”
 different from flow control!
 manifestations:
 lost packets (buffer overflow at routers)
 long delays (queueing in router buffers)
 a top-10 problem!

Transport Layer 3-2


Scenario 1: Queuing Delays
Host A lout
 two senders, two
lin : original data

receivers
 one router,
Host B unlimited shared
output link buffers

infinite buffers
 no retransmission

 large delays
when congested
 maximum
achievable
throughput
Transport Layer 3-3
Scenario 2: Retransmits

 one router, finite buffers


 sender retransmission of lost packet

Host A lin : original lout


data
l'in : original data, plus
retransmitted data

Host B finite shared output


link buffers

Transport Layer 3-4


Scenario 3: Congestion Near Receiver
 four senders
Q: what happens as l
 multihop paths in
and l increase ?
 timeout/retransmit in
Host A lout
lin : original data
l'in : original data, plus
retransmitted data

finite shared output


link buffers

Host B

Transport Layer 3-5


Approaches towards congestion control
Two broad approaches towards congestion control:

End-end congestion Network-assisted


control: congestion control:
 no explicit feedback from  routers provide feedback
network to end systems
 congestion inferred from  single bit indicating
end-system observed loss, congestion (SNA,
delay DECbit, TCP/IP ECN,
 approach taken by TCP ATM)
 explicit rate sender
should send at

Transport Layer 3-6


TCP Congestion Control
 end-end control (no network How does sender
assistance) perceive congestion?
 sender limits transmission:  loss event = timeout or
LastByteSent-LastByteAcked 3 duplicate acks
 CongWin  TCP sender reduces
 Roughly, rate (CongWin) after
CongWin loss event
rate = Bytes/sec
RTT three mechanisms:
 CongWin is dynamic, function  AIMD
slow start
of perceived network 
conservative after
congestion 
timeout events
Transport Layer 3-7
TCP AIMD
multiplicative decrease: additive increase:
cut CongWin in half increase CongWin by
after loss event 1 MSS every RTT in
the absence of loss
congestion
window
events: probing
24 Kbytes

16 Kbytes

8 Kbytes

time

Long-lived TCP connection


Transport Layer 3-8
TCP Slow Start
 When connection begins,
 When connection begins,
CongWin = 1 MSS increase rate
exponentially fast until
 Example: MSS = 500
bytes & RTT = 200 msec first loss event
 initial rate = 20 kbps
 available bandwidth may
be >> MSS/RTT
 desirable to quickly ramp
up to respectable rate

Transport Layer 3-9


TCP Slow Start (more)
 When connection Host A Host B
begins, increase rate
exponentially until

RTT
first loss event:
 double CongWin every
RTT
 done by incrementing
CongWin for every ACK
received
 Summary: initial rate
is slow but ramps up
exponentially fast time

Transport Layer 3-10


Refinement
Philosophy:
 After 3 dup ACKs:
• 3 dup ACKs indicates
 CongWin is cut in half
network capable of
 window then grows delivering some segments
linearly • timeout before 3 dup
 But after timeout event: ACKs is “more alarming”
 CongWin instead set to
1 MSS;
 window then grows
exponentially
 to a threshold, then
grows linearly

Transport Layer 3-11


Refinement (more)
Q: When should the
exponential
increase switch to
linear?
A: When CongWin
gets to 1/2 of its
value before
timeout.

Implementation:
 Variable Threshold
 At loss event, Threshold is
set to 1/2 of CongWin just
before loss event

Transport Layer 3-12


Summary: TCP Congestion Control

 When CongWin is below Threshold, sender in


slow-start phase, window grows exponentially.
 When CongWin is above Threshold, sender is in
congestion-avoidance phase, window grows linearly.
 When a triple duplicate ACK occurs, Threshold
set to CongWin/2 and CongWin set to
Threshold.

 When timeout occurs, Threshold set to


CongWin/2 and CongWin is set to 1 MSS.

Transport Layer 3-13


TCP sender congestion control
Event State TCP Sender Action Commentary
ACK receipt Slow Start CongWin = CongWin + MSS, Resulting in a doubling of
for previously (SS) If (CongWin > Threshold) CongWin every RTT
unacked set state to “Congestion
data Avoidance”
ACK receipt Congestion CongWin = CongWin+MSS * Additive increase, resulting
for previously Avoidance (MSS/CongWin) in increase of CongWin by
unacked (CA) 1 MSS every RTT
data
Loss event SS or CA Threshold = CongWin/2, Fast recovery,
detected by CongWin = Threshold, implementing multiplicative
triple Set state to “Congestion decrease. CongWin will not
duplicate Avoidance” drop below 1 MSS.
ACK
Timeout SS or CA Threshold = CongWin/2, Enter slow start
CongWin = 1 MSS,
Set state to “Slow Start”
Duplicate SS or CA Increment duplicate ACK count CongWin and Threshold not
ACK for segment being acked changed

Transport Layer 3-14

You might also like