0% found this document useful (0 votes)
75 views14 pages

6 TCP Congestion Control

TCP uses AIMD (Additive Increase Multiplicative Decrease) congestion control where the congestion window is increased by one packet per RTT during congestion avoidance but halved on congestion signals like packet loss or timeouts. Variants like Vegas try to avoid congestion by reducing the rate if the actual rate falls below the expected rate based on base RTT. RED drops packets randomly before the queue is full to provide early explicit congestion notification.

Uploaded by

akash
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)
75 views14 pages

6 TCP Congestion Control

TCP uses AIMD (Additive Increase Multiplicative Decrease) congestion control where the congestion window is increased by one packet per RTT during congestion avoidance but halved on congestion signals like packet loss or timeouts. Variants like Vegas try to avoid congestion by reducing the rate if the actual rate falls below the expected rate based on base RTT. RED drops packets randomly before the queue is full to provide early explicit congestion notification.

Uploaded by

akash
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
You are on page 1/ 14

TCP Congestion Control

• Idea
– assumes best-effort network (FIFO or FQ routers)each
source determines network capacity for itself
– uses implicit feedback
– ACKs pace transmission (self-clocking)
• Challenge
– determining the available capacity in the first place
– adjusting to changes in the available capacity
Additive Increase/Multiplicative
Decrease
• Objective: adjust to changes in the available capacity
• New state variable per connection: CongestionWindow
– limits how much data source has in transit
MaxWin = MIN(CongestionWindow, AdvertisedWindow)
EffWin = MaxWin - (LastByteSent - LastByteAcked)
• Idea:
– increase CongestionWindow when congestion goes down
– decrease CongestionWindow when congestion goes up
AIMD (cont)
• Question: how does the source determine
whether or not the network is congested?
• Answer: a timeout occurs
– timeout signals that a packet was lost
– packets are seldom lost due to transmission error
– lost packet implies congestion
AIMD (cont)
• Algorithm:
– increment CongestionWindow by
one packet per RTT (linear
increase)
– divide CongestionWindow by
two whenever a timeout occurs
(multiplicative decrease)
• In practice:
– increment a little for each ACK
Increment = MSS * (MSS/CongestionWindow)
CongestionWindow += Increment
AIMD (cont)

SAWTOOTH BEHAVIOUR
Slow Start
• Objective: determine the
available capacity in the first
• Idea:
– begin with CongestionWindow =
1 packet
– double CongestionWindow each
RTT (increment by 1 packet for
each ACK)
• Exponential growth, but slower
than all at once
• Used:
– when first starting connection
– when connection goes dead
waiting for timeout
Fast Retransmit and Fast Recovery
• Every time a data packet
arrives at the receiving side,
the receiver responds with an
acknowledgement.
• when a packet arrives out of
order TCP resends the same
acknowledgement it sent the
last time called duplicate ACK.
• The sender waits until it sees
some number of duplicate
ACKs and then retransmits
the missing packet.
Congestion Avoidance
• TCP’s strategy :
– control congestion once it happens
– repeatedly increase load in an effort to find the point at
which congestion occurs, and then back off
• Alternative strategy:
– predict when congestion is about to happen
– reduce rate before packets start being discarded
– call this congestion avoidance, instead of congestion
control
• Two possibilities:
– router-centric: DECbit and RED Gateways
– host-centric: TCP Vegas
DECbit
• Add binary congestion bit to each packet header
• Router
– monitors average queue length over last busy+idle cycle
– set congestion bit if average queue length > 1
– attempts to balance throughput against delay Queue
length Current time Time
– Destination echoes bit back to source
– Source records how many packets resulted in set bit
– If less than 50% of last windowís worth had bit set
• increase CongestionWindow by 1 packet
– If 50% or more of last windowís worth had bit set
• decrease CongestionWindow by 0.875 times
Random Early Detection (RED)
• Notification is implicit
– just drop the packet (TCP will timeout)
– could make explicit by marking the packet
• Early random drop
– rather than wait for queue to become full, drop each arriving
packet with some drop probability whenever the queue length
exceeds some drop level
• Compute average queue length
AvgLen = (1 - Weight) * AvgLen + Weight * SampleLen 0 < Weight < 1 (usually 0.002)
SampleLen is queue length each time a packet arrives
RED Details (cont)
• Two queue length thresholds
if AvgLen <= MinThreshold then
enqueue the packet
if MinThreshold < AvgLen < MaxThreshold then
calculate probability P drop arriving packet with
probability P
if MaxThreshold <= AvgLen then
drop arriving packet
TCP Vegas
• Idea: source watches for some sign that router’s queue is building up and
congestion will happen too; e.g.,
– RTT grows
– sending rate flattens
• Algorithm
Let BaseRTT be the minimum of all measured RTTs (commonly the RTT of the first packet)
If not overflowing the connection, then ExpectRate = CongestionWindow/BaseRTT
• Source calculates sending rate (ActualRate) once per RTT
• Source compares ActualRate with ExpectRate
Diff = ExpectedRate - ActualRate
if Diff < α
increase CongestionWindow linearly
else if Diff > β
decrease CongestionWindow linearly
else
leave CongestionWindow unchanged

You might also like