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