Transcript TCP
CSEE W4140
Networking Laboratory
Lecture 7: TCP congestion control
Jong Yul Kim
03.04.2009
Announcements
Midterm next week in class(1:10~2:25 pm)
Problems from the lab exercises, quiz
Subnets
Network protocols
Similar to ARP exercises we did in class
For example, learn how TCP sequence numbers,
ACK numbers work
Problems about debugging networks
Lab 5 part 2 after Spring Break
Lab report for lab 5 part 1 is due after spring
break
Short review of TCP from last time
Characteristics of the IP network
Delivers packets from host to host
May lose packets (discarded by routers)
Doesn’t care about packet order
TCP is a
reliable,
in-order,
byte-stream service
(delivers data from application to application)
Short review of TCP from last time
TCP is a reliable, in-order, byte-stream
service
The beauty of TCP is that it works without
explicit support from the network
Each end of the connection cooperate to make
sure packets are delivered reliably and in order
Techniques used by TCP
Sequence numbers
Acknowledgements (and numbers)
Retransmissions
Timer
Today’s lecture
TCP Flow Control
Throttling the rate of sender so that the
receiver’s buffer does not overflow
TCP Congestion Control
Throttling the rate of sender in the face
of network congestion
TCP Flow Control (Receive Window)
When a connection is established, the
receiver allocates a receive buffer.
Incoming packets are stored in the buffer
so that the application can read data from
the buffer.
TCP Flow Control (Receiver
behavior)
The receiver lets
the sender know:
IP header TCP header
20 bytes
TCP data
20 bytes
0
15 16
Source Port Number
31
Destination Port Number
Sequence number (32 bits)
Acknowledgement number (32 bits)
header
length
0
Flags
TCP checksum
window size
urgent pointer
Options (if any)
DATA
20 bytes
how much space is
left in the buffer
= RcvWindow
by placing that
value in the window
size field
in every segment
that it sends to the
sender
TCP Flow Control (Sender behavior)
Sender can fill up the spare room in the
receiver’s buffer by sending more data
Sender maintains the size of data that has
already been sent but unacknowledged =
bytes_unACKed
Makes sure that
bytes_unACKed ≤ RcvWindow
Network Congestion
Why does congestion occur?
Too many senders sending at high rate
Routers dropping packets due to overflowing
buffers
What are the symptoms?
Packet loss
Packet queuing delay
More retransmission more packet loss
Link bandwidth wasted on retransmissions
TCP Congestion Control
Remember: TCP has no support from
the network about congestions
Need to use end-to-end congestion
control
TCP relies on perceived network
congestion and throttles the sending
rate accordingly
How does TCP know there is
congestion in the network?
Answer:
packet loss
Timeout
Three duplicate
ACKs shown in
diagram on right
How does TCP limit sending rate?
Using a variable called congestion
window = CongWin
Size of unacknowledged data must be
less than CongWin
bytes_unACKed ≤ CongWin
Sending rate is roughly
CongWin/RTT bytes/sec
We can throttle the sending rate by controlling CongWin
TCP Congestion Control Algorithm
Is an algorithm that controls CongWin
Simply stated:
Packet loss (=congestion) decrease CongWin
All is well increase CongWin
Three main parts
Additive-Increase, Multiplicative Decrease
Slow Start
Reaction to timeout events
Additive Increase, Multiplicative Decrease
(AIMD)
Additive Increase
Increase CongWin by 1 MSS every RTT
while there is no packet loss
Multiplicative Decrease
Decrease CongWin by half when packet
is lost
Additive Increase, Multiplicative Decrease
(AIMD)
Congestion Avoidance phase
Slow Start (SS)
When connection is established
CongWin is set to 1 MSS
Increase CongWin by 1 MSS every ACK
Different from Additive Increase
Until a loss occurs
Result is an exponentially fast growth in
sending rate
Slow Start (SS)
Reaction to Timeouts
We already discussed that TCP perceives
congestion through packet loss
Packet is considered lost when:
Timeout occurs
Three duplicate ACKs are received
But timeouts and three duplicate ACKs are
different.
What do they tell about the severity of
congestion?
Reaction to Timeouts
Let’s do something different for
timeout.
Reset CongWin to 1 MSS
Begin again from Slow Start
Slow start (exponential increase) until
when?
New variable called Threshold
Threshold is set to ½ CongWin
After Threshold, do AIMD instead of SS
Three-Way Handshake
Why is two-way handshake not enough?
Main Points of Lab 5 Parts 5~8
More about TCP
Interactive applications over TCP
Data transfer applications over TCP
Retransmissions
Congestion Control
Parts of Lab 5 may not be done
because of the use of serial WAN link