E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
1
EE 586 Communication andSwitching Networks
Lecture 17
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Overview
Segment structure
RTT Estimation
Reliable data transfer
Flow control
Connection management
Congestion control
(modified by Cheung for EE586; based on K&R original)
2
TCP: Transmission Control Protocol
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-3
TCP flow control
application
process
TCP socket
receiver buffers
TCP
code
IP
code
application
OS
receiver protocol stack
application may
remove data from
TCP socket buffers ….
… slower than TCP
receiver is delivering
(sender is sending)
underline_base
desktop_computer_stylized_medium
from sender
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-4
TCP flow control
application
process
TCP socket
receiver buffers
TCP
code
IP
code
application
OS
receiver protocol stack
application may
remove data from
TCP socket buffers ….
… slower than TCP
receiver is delivering
(sender is sending)
from sender
receiver controls sender, sosender will not overflowreceivers buffer by transmittingtoo much,  too fast
flow control
underline_base
desktop_computer_stylized_medium
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-5
TCP flow control
underline_base
Dark upward diagonal
buffered data
free buffer space
rwnd
RcvBuffer
TCP segment payloads
to application process
receiver advertises freebuffer space by includingrwnd value in TCP headerof receiver-to-sendersegments
RcvBuffer size set viasocket options (typical defaultis 4096 bytes)
many operating systemsautoadjust RcvBuffer
sender limits amount ofunacked (in-flight) data toreceiverrwnd value
guarantees receive bufferwill not overflow
receiver-side buffering
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-6
underline_base
Connection Management
before exchanging data, sender/receiver handshake:
agree to establish connection (each knowing the other willingto establish connection)
agree on connection parameters
connection state: ESTAB
connection variables:
seq # client-to-server
         server-to-client
rcvBuffer size
   at server,client
 
application
network
connection state: ESTAB
connection Variables:
seq # client-to-server
          server-to-client
rcvBuffer size
   at server,client
 
application
network
desktop_computer_stylized_medium
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-7
Q: will 2-way handshakealways work innetwork?
variable delays
retransmitted messages(e.g. req_conn(x)) due tomessage loss
message reordering
Alice
Bob
2-way handshake:
Lets talk
OK
ESTAB
ESTAB
choose x
req_conn(x)
ESTAB
ESTAB
acc_conn(x)
underline_base
Agreeing to establish a connection
desktop_computer_stylized_medium
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
Agreeing to establish a connection
2-way handshake failure scenarios:
retransmit
req_conn(x)
ESTAB
req_conn(x)
half open connection!
(no client!)
clientterminates
server
forgets x
connection
x completes
retransmit
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmit
data(x+1)
accept
data(x+1)
choose x
req_conn(x)
ESTAB
ESTAB
acc_conn(x)
desktop_computer_stylized_medium
clientterminates
ESTAB
choose x
req_conn(x)
ESTAB
acc_conn(x)
data(x+1)
accept
data(x+1)
connection
x completes
server
forgets x
desktop_computer_stylized_medium
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
underline_base
TCP 3-way handshake
SYNbit=1, Seq=x
choose init seq num, x
send TCP SYN msg
ESTAB
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
choose init seq num, y
send TCP SYNACK
msg, acking SYN
ACKbit=1, ACKnum=y+1
received SYNACK(x)
indicates server is live;
send ACK for SYNACK;
this segment may contain
client-to-server data
received ACK(y)
indicates client is live
SYNSENT
ESTAB
SYN RCVD
client state
LISTEN
server state
LISTEN
desktop_computer_stylized_medium
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-10
underline_base
TCP: closing a connection
client, server each close their side of connection
send TCP segment with FIN bit = 1
respond to received FIN with ACK
on receiving FIN, ACK can be combined with ownFIN
simultaneous FIN exchanges can be handled
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
FIN_WAIT_2
CLOSE_WAIT
FINbit=1, seq=y
ACKbit=1; ACKnum=y+1
ACKbit=1; ACKnum=x+1
 wait for server
close
can still
send data
can no longer
send data
LAST_ACK
CLOSED
TIMED_WAIT
 timed wait
for 2*max
segment lifetime
CLOSED
TCP: closing a connection
FIN_WAIT_1
FINbit=1, seq=x
can no longer
send but can
 receive data
clientSocket.close()
client state
server state
ESTAB
ESTAB
desktop_computer_stylized_medium
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-12
congestion:
informally: too many sources sending too muchdata too fast for network to handle
different from flow control!
manifestations:
lost packets (buffer overflow at routers)
long delays (queueing in router buffers)
a top-10 problem!
underline_base
Principles of congestion control
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Goals of Congestion Control
Efficiency criterion – to maximize the overallthroughput of the network
= each flow should control their sending rates to preventcongestion collapse
Fairness criterion – (for single bottleneck) eachflow should have equal share of bandwidth
Transport Layer
3-13
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-14
TCP congestion control:
rgoal:  TCP sender should transmit as fast as possible,but without congesting network
mQ: how to find rate just below congestion level
rdecentralized: each TCP sender sets its own rate, basedon implicit feedback:
mACK: segment received (a good thing!), network notcongested, so increase sending rate
mlost segment: assume loss due to congested network,so decrease sending rate
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-15
underline_base
Rate(Window)-based control
sender limits transmission:
cwnd is dynamic, function ofperceived networkcongestion
TCP sending rate:
roughly: send cwndbytes, wait RTT forACKS, then sendmore bytes
last byte
ACKed
sent, not-yetACKed
(in-flight)
last bytesent
cwnd
LastByteSent-
LastByteAcked
<
cwnd
sender sequence number space
rate
~
cwnd
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
underline_base
Window size & Sending Rate
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
16
(modified by Cheung for EE586; based on K&R original)
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-17
Joint fairness and efficiency goal: if 2 flows share samebottleneck link of bandwidth R, each should have averagerate of R/2
Flow 1, R1
bottleneck
router
capacity R
Flow 2, R2
Two flows - single bottleneck
R2
 Sending rate of Flow 1
Sending rate of Flow 2
R1
R1+R2<R
Inefficienct
R1+R2=R
Efficient but
Unfair to flow 1
R1+R2=R
Efficient but
Unfair to flow 2
R1+R2>R
Heavy loss
Congestion collapse
R1=R2=R/2
Efficient
and Fair
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
Distributed Control of Sending Rates
Each sender is not awareof the presence of othersenders.
Each sender can sensecongestion due to lossevents.
Distributed control
Increase sending rate whenno loss
Decrease sending ratewhen loss
Same action for everysender
Additive : R  
Multiplicative: cR for c>1 or c<1
3-18
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
Which is optimal?
3-19
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
Which is optimal?
3-20
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
Which is optimal?
3-21
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
Which is optimal?
3-22
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
Which is optimal?
3-23
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
Bandwidth Probing (steady state)
underline_base
AIMD: additive increase multiplicative decrease
approach: sender increases transmission rate (windowsize), probing for usable bandwidth, until loss occurs
additive increase: increase  cwnd by 1 MSS everyRTT until loss detected (i.e. rate increase by 1/RTT)
multiplicative decrease: cut cwnd in half after loss(i.e. rate decrease by a factor of ½)
cwnd: TCP sender
congestion window size
AIMD saw tooth
behavior: probing
for bandwidth
additively increase window size …
…. until loss occurs (then cut window in half)
time
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-25
TCP Slow Start
when connection begins,raise rate exponentiallyuntil first loss event:
initially cwnd = 1 MSS
double cwnd every RTT
done by incrementingcwnd for every ACKreceived
Back to additive increaseafter hitting ½ of old rate
summary: initial rate isslow but ramps upexponentially fast
Host A
one segment
RTT
Host B
time
two segments
four segments
underline_base
desktop_computer_stylized_medium
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-26
Q: when should theexponentialincrease switch tolinear?
A: when cwnd getsto 1/2 of its valuebefore timeout.
 
Implementation:
variable ssthresh
on loss event, ssthreshis set to 1/2 of cwnd justbefore loss event
underline_base
TCP: switching from slow start to CA
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-27
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
Transport Layer
3-28
underline_base
TCP Futures: TCP over long, fat pipes
example: 1500 byte segments, 100ms RTT, want10 Gbps throughput
requires W = 83,333 in-flight segments
throughput in terms of segment loss probability, L[Mathis 1997]:
➜ to achieve 10 Gbps throughput, need a loss rate of L= 2·10-10   – a very small loss rate!
new versions of TCP for high-speed
TCP throughput =
1.22
.
MSS
RTT
L