E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
1
Summary of TCP (2/2)
Review
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Important Points
Flow Control = avoid buffer overflow at receiver
Tell sender how much space remains (rwnd in header)
“One more slice of pizza and I’ll be full!”
Connection Management
Why? Establish connection to allocate resource anddestroy connection to deallocate resource
How to establish? 3-way handshake
Why not 2-way? Phantom request and data
Mechanism: SYN flag, sequence # and ack #
underline_base
(modified by Cheung for EE586; based on K&R original)
2
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
2-way vs. 3-way
underline_base
(modified by Cheung for EE586; based on K&R original)
3
ESTB
ESTB
2-way
3-way
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Important Points
Congestion Control = Two goals
1.Efficiency = max usage without congestion collapse
2.Fairness = everybody gets equal share
TCP modulates the sender’s window-size (cwnd)
Sending rate = cwnd/RTT  (“rate”-based control)
Achieve efficiency
increase cwnd until “loss” - claim unused bandwidth
decrease cwnd after “loss” – avoid congestion
Fairness = Additive Increase Multiplicative Decrease
increase cwnd by one segment per RTT
reduce cwnd by half with “loss”
Converge to the fair “sweet” spot in long run
underline_base
(modified by Cheung for EE586; based on K&R original)
4
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Changing cwnd = changing rate
(modified by Cheung for EE586; based on K&R original)
5
underline_base
first packet bit transmitted, t = 0
sender
receiver
RTT
last bit transmitted, t = L / R
first packet bit arrives
last packet bit arrives, send ACK
ACK arrives, send next
packet, t = RTT + L / R
last bit of 2nd packet arrives, send ACK
last bit of 3rd packet arrives, send ACK
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Why is AIMD optimal?
3-6
Additive Increase,
Additive Decrease
Mult. Increase,
Mult. Decrease
Multi. Increase,
Additive Decrease
Additive Increase,
Multi. Decrease
Starting Scenario 1
Starting Scenario 2
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
TCP Tahoe
Additive Increase = Increase 1 MSS in 1 RTT
Congestion Avoidance
Increase cwnd by 1 MSSMSS/cwnd per ack
Why?
# of packets sent (or ack recv) in 1 RTT = cwnd/MSS
 cwnd/MSS  1 MSSMSS/cwnd = 1 MSS in 1 RTT
Loss Event = time-out or 3 duplicate ACKS
Multiplicative Decrease = Cut cwnd in half
Slow Start
Set ssthresh = cwnd/2 then cwnd = 1 MS
cwnd := cwnd+1MSS for each ack until cwnd=ssthresh
In 1 RTT:  cwnd := cwnd+cwnd/MSS*1 MSS = 2cwndmultiplicative increase!
 
(modified by Cheung for EE586; based on K&R original)
7
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Transport Layer
3-8
underline_base
TCP Reno versus Tahoe
Time-out – slowstart
3 dup acks
half cwnd
Fast Recovery
Fast Recovery:
if timeout, Slow start
if dup ack, additiveincrease
If new ack, move tocongestion avoidance
TCP Reno:
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Transport Layer
3-9
Summary: TCP Congestion Control
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmit missing segment
cwnd > ssthresh
congestion
avoidance
cwnd = cwnd + MSS    (MSS/cwnd)
dupACKcount = 0
transmit new segment(s), as allowed
new ACK
.
dupACKcount++
duplicate ACK
 
fast
recovery
cwnd = cwnd + MSS
transmit new segment(s), as allowed
duplicate ACK
ssthresh= cwnd/2
cwnd = ssthresh + 3
retransmit missing segment
dupACKcount == 3
timeout
ssthresh = cwnd/2
cwnd = 1
dupACKcount = 0
retransmit missing segment
ssthresh= cwnd/2
cwnd = ssthresh + 3
retransmit missing segment
dupACKcount == 3
cwnd = ssthresh
dupACKcount = 0
New ACK
slow
start
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmit missing segment
cwnd = cwnd+MSS
dupACKcount = 0
transmit new segment(s), as allowed
new ACK
dupACKcount++
duplicate ACK
cwnd = 1 MSS
ssthresh = 64 KB
dupACKcount = 0
New
ACK!
New
ACK!
New
ACK!
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 3
TCP Reno
(modified by Cheung for EE586; based on K&R original)
10
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Transport Layer
3-11
underline_base
TCP throughput
avg. TCP thruput as function of window size, RTT?
ignore slow start, assume always data to send
W: window size (measured in bytes) where loss occurs
avg. window size (# in-flight bytes) is ¾ W
avg. thruput is 3/4W per RTT
W
W/2
avg TCP thruput =
3
4
W
RTT
bytes/sec
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 4
Recall the macroscopic description of TCP throughput. In the period of time from when the connection’s rate varies from W/(2RTT) to W/RTT, only one packet is lost (at the very end of the period).
Show that the loss rate (fraction of packets lost) is equal to 

𝐿= 1  3 8  𝑊 2 + 3 4 𝑊 

Hint: find the number of packets sent when the window changes from W/2 to W. Recall in an additive increase, a 	window grows by 1 MSS every RTT and in one RTT, one window worth of data is sent

Use the result from a) to show that if a connection has loss rate L, then its average rate is approximately given by 

 1.22∙𝑀𝑆𝑆 𝑅𝑇𝑇  𝐿
(modified by Cheung for EE586; based on K&R original)
12
underline_base
Express W in terms of L usingpart (a) by assuming that W isbig then plug this back into thethroughput eq