0% found this document useful (0 votes)
83 views15 pages

CN Module 3 PPT - 2.

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views15 pages

CN Module 3 PPT - 2.

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Module 3

Congestion Control
Approaches towards congestion control
two broad approaches towards congestion control:

end-end congestion network-assisted congestion


control: control:

no explicit feedback  routers provide


from network feedback to end
systems
congestion inferred
 single bit indicating
from end-system congestion (SNA, DECbit,
observed loss, delay TCP/IP ECN, ATM)
 explicit rate for sender to
approach taken by send at
TCP
Network Assisted Congestion Control

• Direct feedback may be sent from a network


router to the sender. This form of notification
typically takes the form of a choke packet.

• The second form : when a router


marks/updates a field in a packet to indicate
congestion.
Upon receipt of a marked packet, the
receiver then notifies the sender of the congestion
indication.

Two feedback pathways for network-indicated


congestion information
Case study: ATM ABR congestion control
ABR: available bit rate: RM (resource management) cells:

▪ sent by sender, interspersed with


▪ “elastic service” data cells
▪ if sender’s path ▪ Each data cell contains an explicit
“underloaded”: forward congestion indication
(EFCI) bit.
▪ sender should use available
bandwidth ▪ bits in RM cell set by switches
(“network-assisted”)
▪ if sender’s path ▪ NI bit: no increase in rate (mild congestion)
congested: ▪ CI bit: congestion indication

▪ sender throttled to minimum ▪ RM cells returned to sender by


guaranteed rate receiver, with bits intact
Case study: ATM ABR congestion control
RM cell data cell

▪ two-byte ER (explicit rate) field in RM cell


▪ congested switch may lower ER value in cell
▪ Sender’s send rate thus max supportable rate on path

▪ EFCI bit in data cells: set to 1 in congested switch


▪ if data cell preceding RM cell has EFCI set, receiver sets CI bit in
returned RM cell
TCP congestion control: additive increase
multiplicative decrease
 approach: sender increases transmission rate (window
size), probing for usable bandwidth, until loss occurs
 additive increase: increase cwnd by 1 MSS every
RTT until loss detected
 multiplicative decrease: cut cwnd in half after loss
additively increase window size …
…. until loss occurs (then cut window in half)

congestion window size


cwnd: TCP sender
AIMD saw tooth
behavior: probing
for bandwidth

time
Congestion Control Introduction
▪ If no congestion : increase the rate
▪ If congestion : reduces the send rate
▪ This approach raises three questions:
▪ how does a TCP sender limit the rate at which it sends traffic into its connection
▪ how does a TCP sender perceive that there is congestion on the path between itself and
the destination
▪ what algorithm should the sender use to change its send rate
TCP Congestion Control: details
How does a TCP sender limit the rate at which it sends traffic into its connection
sender sequence number space
cwnd TCP sending rate:
roughly: send cwnd bytes,
wait RTT for ACKS, then send
more bytes
last byte last byte
ACKed sent, not- sent
yet ACKed
(“in-flight”)
cwnd
 sender limits transmission: rate ~
~ bytes/sec
RTT
LastByteSent-
< cwnd
LastByteAcked
 the amount of unacknowledged data at a sender
may not exceed the minimum of cwnd and rwnd
 cwnd is dynamic, function of perceived network
congestion
Congestion details
▪ How a TCP sender perceives that there is congestion on the path between
itself and the destination
▪ “loss event” at a TCP sender
▪ occurrence of either a timeout or
▪ the receipt of three duplicate ACKs from the receiver

▪ Loss event is the indication of congestion on the sender-to-receiver path


▪ When a loss event doesn’t occur
▪ acknowledgments for previously unacknowledged segments will be received at the TCP
sender
Congestion Details
▪ How should a TCP sender determine the rate at which it should send
▪ Three guiding principles:
▪ A lost segment implies congestion, and hence, the TCP sender’s rate should be
decreased when a segment is lost
▪ An acknowledged segment indicates that the network is delivering the sender’s
segments to the receiver, and hence, the sender’s rate can be increased when an ACK
arrives for a previously unacknowledged segment.
▪ Bandwidth probing :
▪ ACKs – increase rate
▪ Loss event – decrease rate
TCP Congestion Control Algorithm
▪ First described in [Jacobson 1988]

▪ Standardized in [RFC 5681].

▪ The algorithm has three major components :


▪ (1) slow start :
▪ value of cwnd begins at 1 MSS and increases by 1 MSS every time a transmitted segment is first
acknowledged
▪ (2) congestion avoidance :
▪ value of cwnd equals ssthresh, congestion avoidance mode starts. Tcp increases cwnd more
cautiously
▪ (3) fast recovery :
▪ if three duplicate ACKs are detected, in which case TCP performs a fast retransmit
TCP Slow Start
Host A Host B
when connection begins, increase
rate exponentially until first loss
event:
one s e gm
 initially cwnd = 1 MSS ent

RTT
 double cwnd every RTT
two segm
 done by incrementing cwnd for en ts
every ACK received

summary: initial rate is slow but


four segm
ramps up exponentially fast ents

Exponential growth ends:


▪ Loss event occurs
▪ Cwnd equals ssthresh, slow start
time
ends and TCP enters congestion
avoidance
TCP: detecting, reacting to loss
 loss indicated by timeout:
 cwnd set to 1 MSS;
 window then grows exponentially (as in slow start) to threshold, then grows linearly
 loss indicated by 3 duplicate ACKs: TCP RENO

 dup ACKs indicate network capable of delivering some segments


 cwnd is cut in half window then grows linearly
 TCP Tahoe always sets cwnd to 1 (timeout or 3 duplicate acks)
TCP: switching from slow start to
CA
Q: when should the
exponential increase
switch to linear?
A: when cwnd gets to 1/2
of its value before
timeout.

Implementation:

variable ssthresh
on loss event, ssthresh is
set to 1/2 of cwnd just
before loss event
Summary: TCP Congestion Control
New
New ACK!
ACK!
duplicate ACK
dupACKcount++ new ACK
new ACK
.
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
cwnd = cwnd+MSS transmit new segment(s), as allowed
dupACKcount = 0
L transmit new segment(s), as allowed
cwnd = 1 MSS
ssthresh = 64 KB cwnd > ssthresh
dupACKcount = 0
slow L congestion
start timeout avoidance
ssthresh = cwnd/2
cwnd = 1 MSS duplicate ACK
timeout dupACKcount = 0 dupACKcount++
ssthresh = cwnd/2 retransmit missing segment
cwnd = 1 MSS
dupACKcount = 0
retransmit missing segment
timeout
New
ACK!
ssthresh = cwnd/2
cwnd = 1 New ACK
dupACKcount = 0
retransmit missing segment cwnd = ssthresh dupACKcount == 3
dupACKcount == 3 dupACKcount = 0
ssthresh= cwnd/2 ssthresh= cwnd/2
cwnd = ssthresh + 3 cwnd = ssthresh + 3
retransmit missing segment retransmit missing segment
fast
recovery
duplicate ACK
cwnd = cwnd + MSS
transmit new segment(s), as allowed

You might also like