CN Unit-3
CN Unit-3
Transport Layer
lo a n s
transport protocols run in
gi p
tr
c a or
end systems
le t
nd
-e
send side: breaks app
dn
messages into segments,
passes to network
layer
rcv side: reassembles
application
transpo
rt
network
segments into messages, data link
physica
passes to app layer l
between processes =
processes
kids
relies on, app messages = letters
enhances, in envelopes
transport protocol =
network Ann
layer and Bill who demux to
services in- house siblings
network-layer protocol =
postal service
Transport Layer 3-5
Internet transport-layer
protocols
reliable, in-order
application
transpo
rt
lo a n s
d
kata link
gi p
tr
c a or
link
physica physical
control l networ
le t
k data
nd
flow control link
-e
physic
n d
network
al
connection data
link
services not
available:
delay guarantees Transport Layer 3-6
Chapter 3
outline
1. transport- 5. connection-
layer services oriented
2. multiplexing and transport: TCP
demultiplexing segment structure
3. connectionless reliable data
transport: UDP transfer
flow control
4. principles of reliable
connection
data transfer
management
6. principles of
congestion control
7. TCP congestion
control Transport Layer 3-7
Multiplexing/
demultiplexing
multiplexing at
handle
sender:data from demultiplexing at
sockets,
multiple add transport header use header info to
receiver:
(later used for received
deliver segments to correct
demultiplexing) socket
application
sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
checksum
Application Layer 2-
Chapter 3
outline
1. transport- 5. connection-
layer services oriented
2. multiplexing and transport: TCP
demultiplexing segment structure
3. connectionless reliable data
transport: UDP transfer
flow control
4. principles of reliable
connection
data transfer
management
6. principles of
congestion control
7. TCP congestion
control Transport Layer 3-22
Principles of reliable
data transfer
important in application, transport, link
layers
top-10 list of important networking topics!
send receive
side
side
transfer
but control info will flow on both directions!
use finite state machines (FSM) to specify
sender, receiver
state: when in this event causing state transition
“state” next state stat actions taken on state transition stat
uniquely e event
determined by e
next
1 2
event actions
sende receiv
r er
Transport Layer 3-28
rdt2.0: channel with bit
errors
underlying channel may flip bits in packet
checksum to detect bit errors
the question: how to recover from
errors:
acknowledgements (ACKs): receiver explicitly tells
sender that pkt received O K
negative acknowledgements (NAKs): receiver explicitly
tells sender that pkt had errors
senderHow do humans
retransmits pkt onrecover
receipt offrom
NAK
new mechanisms “errors”
in rdt2.0during
(beyond rdt1.0):
error detectionconversation?
receiver feedback: control msgs (ACK,NAK) rcvr-
>sender
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
(b) packet
loss
Transport Layer 3-42
rdt3.0 in
sender receive
action
sender send pkt0
r
receiver pkt0
pkt0 rcv
ack0 send
pkt0
rcv
send pkt0 send rcv ack0
ack0 pkt0 ack0
rcv ack0 send rcv pkt1
ack0 pkt1 pkt1
send
send rcv pkt1 ack1
pkt1
ack1 ack1
pkt1 send
X ack1
los timeou
s resend
t pkt1
rcv
timeou
resend pkt1 pkt1rcv pkt0 (detect
pkt1
t rcv send
pkt1 (detect
send
ack1 duplicate)
pkt1 ack1
ack1 send
duplicate) pkt0 a
rcv
ack1
rcv ack1 send
pkt0
send pkt0 ack1 rcv ack1 ck0
send p ack0 rcv
pkt0 rcv (detect
ack0 send pkt0 k pkt0
pkt0 send
duplicate)
ack0 t
0 ack0
(c) ACK (d) premature timeout/
a delayed
loss ACK ck0
Transport Layer 3-43
Performance of
rdt3.0
rdt3.0 is correct, but performance stinks
e.g.: 1 Gbps link, 15 ms prop. delay, 8000 bit
packet: L 8000 bits
= = 8 microsecs
Dtrans = R
109 bits/sec
U sender: utilization – fraction of time sender busy
sendingU L/R .008
sender = 0.00027
RTT + L / R = 30.008 =
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
U 3L / R .0024
sender = =
30.008 = 0.00081
RTT + L / R
1])
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_tim
er Transport Layer 3-48
GBN: receiver extended
FSM default
udt_send(sndpkt) rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
&& hasseqnum(rcvpkt,expectedseqnum)
expectedseqnum=1 Wait extract(rcvpkt,data)
sndpkt = deliver_data(data)
make_pkt(expectedseqnum,ACK,chksum) sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++
data window
size N
acknowledgements:
seq # of next byte
expected from other sender sequence number
space
side sent sent,
usable
not- ACKed yet ACKed but not
cumulative ACK not
usable (“in-flight”) yet
sent
Q: how receiver
handles out-of-order incoming
source port # segment
dest port #to
sender
segments sequence number
acknowledgement number
A: TCP spec doesn’t A rwnd
checksum urg pointer
say,
- up to implementor Transport Layer 3-63
TCP seq. numbers,
ACK s Host Host
A B
User
simple telnet
scenario
350
300
s 250
d
n
o
ce
si
ll
i
m
(T
T
R 200
sampleRTT
150
EstimatedRT
T
sdnocesilli
100
( TTR
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
time
SampleRTT Estimated RTT Transport Layer 3-62
TCP round trip time,
timeout
timeout interval: EstimatedRTT plus “safety
margin”
estimate SampleRTT deviation from
large variation in EstimatedRTT -> EstimatedRTT:
larger safety margin
DevRTT = (1- )*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically,
= 0.25)
TimeoutInterval =
EstimatedRTT + 4*DevRTT
estimated RTT “safety
margin”
SendBase=92
Seq=92, 8 bytes of Seq=92, 8 bytes of
data data
Seq=100, 20 bytes of
ACK=100 data
X
ACK=100
t uoe
t uoe
mit
ACK=120
mti
Seq=92, 8 bytes of Seq=92, 8
data SendBase=100 bytes of
SendBase=120 data
ACK=100
ACK=120
SendBase=120
Seq=100, 20 bytes of
data
ACK=100
X
t uoe
ACK=120
mti
Seq=120, 15 bytes of
data
cumulative ACK
ACK=100
ACK=100
t uoe
ACK=100
mti
ACK=100
Seq=100,
fast retransmit after sender
20 bytes
receipt of triple duplicate
of data
ACK Transport Layer 3-76
Chapter 3
outline
1. transport- 5. connection-
layer services oriented
2. multiplexing and transport: TCP
demultiplexing segment structure
3. connectionless reliable data
transport: UDP transfer
flow control
4. principles of reliable
connection
data transfer
management
6. principles of
congestion control
7. TCP congestion
control Transport Layer 3-77
TCP flow
control
application
application process
may remove data applicatio
from TCP socket n
buffers …. TCP socket OS
receiver
… slower than TCP buffers
receiver is
delivering (sender
TCP
is sending) cod
e
IP
flow cod
e
receiver controls sender, so
control
sender won’t overflow
receiver’s buffer by transmitting from
too much, too fast sender
receiver protocol
stack
Transport Layer 3-78
TCP flow
control
receiver “advertises” free
buffer space by including to application
rwnd value in TCP process
header of receiver-to-
sender segments RcvBuffer buffered data
RcvBuffer size set via
socket options (typical default rwnd free buffer space
is 4096 bytes)
many operating systems
autoadjust TCP segment
RcvBuffer payloads
sender limits amount of
unacked (“in-flight”) data to receiver-side
receiver’s rwnd value buffering
guarantees receive buffer
will not overflow
Transport Layer 3-79
Chapter 3
outline
1. transport- 5. connection-
layer services oriented
2. multiplexing and transport: TCP
demultiplexing segment structure
3. connectionless reliable data
transport: UDP transfer
flow control
4. principles of reliable
connection
data transfer
management
6. principles of
congestion control
7. TCP congestion
control Transport Layer 3-80
Connection
Management
before exchanging data, sender/receiver
“handshake”:
agree to establish connection (each knowing the other
willing to establish connection)
agree on connection parameters
application application
choose choose
req_conn(x) x req_conn(x)
x
ESTAB ESTAB
retrans acc_conn(x) retrans acc_conn(x)
mit mit
req_conn(x req_conn(x
) )
data(x+ accept
req_conn(x) 1)
ESTA ESTA data(x+
B B 1)
connection connection
clien x server retransm x server
completes
clien
it completes
t forgets t data(x+
terminat x terminate req_conn(x) forgets x
es 1)
s
ESTAB ESTAB
data(x+ accept
half open connection! 1) data(x+
(no client!) 1)
Transport Layer 3-83
TCP 3-way
handshake
client server
state state
LISTEN choose init seq num, LISTEN
x send TCP SYN
SYNSENT msg SYNbit=1,
Seq=x choose init seq num,
y send TCP SYNACK
msg, acking SYN SYN RCVD
SYNbit=1, Seq=y
ACKbit=1;
received SYNACK(x) ACKnum=x+1
ESTAB indicates server is live;
send ACK for SYNACK;
this segment may contain ACKbit=1,
client-to-server data
ACKnum=y+1 received ACK(y)
indicates client is
live ESTAB
Socket connectionSocket =
welcomeSocket.accept();
Socket clientSocket =
SYN(x) newSocket("hostname","port
number");
SYNACK(seq=y,ACKnum=x+1)
create new socket for
communication back to client listen SYN(seq=x)
SYN SYN
rcvd sent
SYNACK(seq=y,ACKnum=x+1)
ESTAB ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
CLOSED
R/
2
delay
o
ut
R/ R/
in 2 in 2
maximum per-connection large delays as arrival
throughput: R/2 rate,
in, approaches capacity
Transport Layer 3-90
Causes/costs of congestion: scenario
2 one router, finite buffers
sender retransmission of timed-out packet
application-layer input = application-layer output: in =
out transport-layer input includes retransmissions :
in
‘ni
in : original data
out
'in: original data, plus
retransmitted data
Host A
knowledge
o
ut
sender sends only when
router buffers available
R/
in 2
A no buffer space!
Host B
ou
retransmissions but
t
asymptotic goodput
sender only resends if is still R/2 (why?)
packet known to be in R/2
lost
in : original data
out
'in: original data, plus
retransmitted data
Host B
ou
sender times out prematurely, retransmissions
t
including duplicated
sending two copies, both of that are delivered!
which are delivered in R/2
in
timeout
cop 'in out
y
Host B
ou
sender times out prematurely, retransmissions
t
including duplicated
sending two copies, both of that are delivered!
which are delivered in R/2
“costs” of
congestion:
more work (retrans) for given “goodput”
unneeded retransmissions: link carries multiple copies of
pkt
decreasing goodput
Host D
Host C
C/
in ’
2
half)
cwnd: TCP sender
tim
e
Transport Layer 3-103
TCP Congestion Control:
details
sender sequence number
space cwnd TCP sending rate:
roughly: send cwnd
cwnd is dynamic,
function of perceived
network congestion
Transport Layer 3-104
TCP Slow
Start
when connection begins,
Host A Host B
increase rate
exponentially until first one segme
n t
loss event:
RTT
initially cwnd = 1 MSS two segme
nts
double cwnd every RTT
done by
incrementing cwnd four segme
nts
for every ACK
received
summary: initial rate
is slow but ramps up time
exponentially fast
Transport Layer 3-105
TCP: detecting, reacting to
loss
loss indicated by timeout:
cwnd set to 1 MSS;
window then grows exponentially (as in slow
start) to threshold, then grows linearly
loss indicated by 3 duplicate ACKs: TCP RENO
dup AC Ks indicate network capable of
delivering some segments
cwnd is cut in half window then grows linearly
TCP Tahoe always sets cwnd to 1 (timeout or
3 duplicate acks)
Implementation:
variable ssthresh
on loss event, ssthresh
is set to 1/2 of cwnd
just before loss event
recovery
duplicate ACK
cwnd = cwnd + MSS
transmit new segment(s), as allowed
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 3
W bytes/sec
avg TCP thruput =
4 RTT
W/
2
TCP connection 1
bottleneck
router
capacity R
TCP connection 2
Connection 1 throughput R