0% found this document useful (0 votes)
16 views59 pages

Transport Layer Updated 2023

Uploaded by

ah1350057
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views59 pages

Transport Layer Updated 2023

Uploaded by

ah1350057
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 59

Chapter 3

Transport Layer

A note on the use of these ppt slides:


We’re making these slides freely available to all (faculty, students, readers). Computer
They’re in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously
Networking: A Top
represent a lot of work on our part. In return for use, we only ask the Down Approach
following:
 If you use these slides (e.g., in a class) in substantially unaltered form, 5th edition.
that you mention their source (after all, we’d like people to use our book!) Jim Kurose, Keith
 If you post any slides in substantially unaltered form on a www site, that
you note that they are adapted from (or perhaps identical to) our slides, and Ross
note our copyright of this material. Addison-Wesley, April
Thanks and enjoy! JFK/KWR 2009.
All material copyright 1996-2009
J.F Kurose and K.W. Ross, All Rights Reserved
Transport Layer 3-1
Chapter 3: Transport Layer
Our goals:
 understand  learn about transport
principles behind layer protocols in the
transport layer Internet:
services:  UDP: connectionless
 multiplexing/ transport
demultiplexing  TCP: connection-oriented
 reliable data transport
transfer  TCP congestion control
 flow control
 congestion control

Transport Layer 3-2


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
management
 3.6 TCP congestion
control

Transport Layer 3-3


Transport services and
protocols applicatio
n
 provide logical transport
network
communication between app data link
physical

lo
processes running on

gi
ca
different hosts

enl
 transport protocols run in

d-
en
end systems

d
tr
 send side: breaks app

a ns
po
messages into segments,

tr
passes to network layer applicatio
 rcv side: reassembles n
transport
segments into messages, network
data link
passes to app layer physical

 more than one transport


protocol available to apps
 Internet: TCP and UDP

Transport Layer 3-4


Transport vs. network layer
 network layer: Household analogy:
logical 12 kids sending letters
communication to 12 kids
between hosts  processes = kids
 transport layer:  app messages =
logical letters in envelopes
communication  hosts = houses
between processes  transport protocol =
 relies on, enhances, Ann and Bill
network layer services  network-layer protocol
= postal service

Transport Layer 3-5


Internet transport-layer
protocols
 reliable, in-order applicatio
n
transport
delivery (TCP) network
data link
physical network
 congestion control

lo
data link
network

gi
physical
data link

ca
 flow control physical

l en
 connection setup

d-
en
 unreliable, unordered network

d
data link

tr
a
physicalnetwork
delivery: UDP

ns
data link

po
physical

r
 no-frills extension of

t
network
data link
applicatio
“best-effort” IP physical network
data link
n
transport
 services not available: physical network
data link
physical
 delay guarantees
 bandwidth guarantees

Transport Layer 3-6


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
management
 3.7 TCP congestion
control

Transport Layer 3-7


Multiplexing/demultiplexing
Demultiplexing at rcv host: Multiplexing at send host:
gathering data from multiple
delivering received segments
sockets, enveloping data with
to correct socket
header (later used for
demultiplexing)
= socket = process

P3 P1
P1 P2 P4 application
application application

transport transport transport

network network network

link link link

physical physical physical

host 2 host 3
host 1
Transport Layer 3-8
How demultiplexing works
 host receives IP datagrams
 each datagram has source IP
address, destination IP address 32 bits
 each datagram carries 1
source port # dest port #
transport-layer segment
 each segment has source,
destination port number other header fields
 host uses IP addresses & port
numbers to direct segment to
appropriate socket
application
data
(message)

TCP/UDP segment format

Transport Layer 3-9


Connectionless
demultiplexing
 When host receives
 Create sockets with port
UDP segment:
numbers:
DatagramSocket mySocket1 = new
 checks destination port
DatagramSocket(12534); number in segment
DatagramSocket mySocket2 = new  directs UDP segment to
DatagramSocket(12535); socket with that port
 UDP socket identified by number
 IP datagrams with
two-tuple:
(dest IP address, dest port number) different source IP
addresses and/or
source port numbers
directed to same
socket
Transport Layer 3-10
Connectionless demux (cont)
DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P1
P1
P3

SP: 6428 SP: 6428


DP: 9157 DP: 5775

SP: 9157 SP: 5775


client DP: 6428 DP: 6428 Client
server
IP: A IP: C IP:B

SP provides “return address”

Transport Layer 3-11


Connection-oriented demux
 TCP socket identified  Server host may
by 4-tuple: support many
 source IP address simultaneous TCP
 source port number sockets:
 dest IP address  each socket identified
 dest port number by its own 4-tuple
 recv host uses all four  Web servers have
values to direct different sockets for
segment to each connecting client
appropriate socket  non-persistent HTTP will
have different socket for
each request

Transport Layer 3-12


Connection-oriented demux
(cont)

P1 P4 P5 P6 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A S-IP: B IP:B
IP: C
D-IP:C D-IP:C

Transport Layer 3-13


Connection-oriented demux:
Threaded Web Server

P1 P4 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A S-IP: B IP:B
IP: C
D-IP:C D-IP:C

Transport Layer 3-14


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
management
 3.6 TCP congestion
control

Transport Layer 3-15


UDP: User Datagram Protocol [RFC
768]
 “no frills,” “bare bones”
Internet transport protocol Why is there a UDP?
 “best effort” service, UDP
 no connection
segments may be:
establishment (which can
 lost
add delay)
 delivered out of order
 simple: no connection
to app state at sender, receiver
 connectionless:
 small segment header
 no handshaking
 no congestion control:
between UDP sender,
UDP can blast away as
receiver
fast as desired
 each UDP segment
handled independently
of others

Transport Layer 3-16


UDP: more
 often used for streaming
multimedia apps 32 bits
 loss tolerant
Length, in source port # dest port #
 rate sensitive bytes of UDP length checksum
segment,
 other UDP uses
including
 DNS header
 SNMP
 reliable transfer over Application
UDP: add reliability at data
application layer (message)
 application-specific
error recovery!
UDP segment format

Transport Layer 3-17


UDP checksum
Goal: detect “errors” (e.g., flipped bits) in
transmitted segment

Sender: Receiver:
 treat segment contents  compute checksum of
as sequence of 16-bit received segment
integers  check if computed checksum
 checksum: addition (1’s equals checksum field value:
 NO - error detected
complement sum) of
segment contents  YES - no error detected.

 sender puts checksum But maybe errors


value into UDP nonetheless? More later
….
checksum field

Transport Layer 3-18


Internet Checksum Example
 Note
 When adding numbers, a carryout from the
most significant bit needs to be added to
the result
 Example: add two 16-bit integers

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Transport Layer 3-19
Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
 3.4 Principles of
management
reliable data transfer  3.6 Principles of
congestion control
 3.7 TCP congestion
control
Transport Layer 3-21
TCP: Overview RFCs: 793, 1122, 1323,
2018, 2581

 point-to-point:  full duplex data:


 one sender, one  bi-directional data flow
receiver in same connection
 reliable, in-order byte  MSS: maximum

steam: segment size


 no “message  connection-oriented:
boundaries”  handshaking (exchange
 pipelined: of control msgs) init’s
sender, receiver state
 TCP congestion and flow
before data exchange
control set window size
 flow controlled:
 send
application & receive buffers
w rites data
application
reads data
 sender will not
sock et sock et
door
TCP TCP
door overwhelm receiver
send buffer receive buffer
segm ent

Transport Layer 3-22


TCP segment structure
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement (not segments!)
U A Pnumber
head not
PSH: push data now len used
R S F Receive window
(generally not used) # bytes
checksum Urg data pnter
rcvr willing
RST, SYN, FIN: to accept
Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)

Transport Layer 3-23


TCP seq. #’s and ACKs
Seq. #’s:
Host A Host B
 byte stream
“number” of first User Seq=4
2, A C
byte in segment’s types K=79,
da t a =
‘C’ ‘C’
data host ACKs
ACKs: receipt of

C ‘C’, echoes
 seq # of next byte , d a ta = ‘
3
9 , A CK=4 back ‘C’
expected from e q =7
S
other side
 cumulative ACK host ACKs
receipt Seq=4
Q: how receiver handles of echoed 3, ACK
=80
out-of-order segments ‘C’
 A: TCP spec doesn’t
say, - up to
implementor time
simple telnet scenario

Transport Layer 3-24


An example of TCP Duplex Communication

Host A Host B

User Seq=4
2, AC
K=79, 79
42 data = ‘john

host ACKs
receipt, echoes
ss’ back ‘pass’
= ‘pa
, data
K=46
q=79, AC
Se

host ACKs
receipt, send
back use Seq=4
6, ACK
=83 da
password ta =‘CNT
4704’

Sequence number is
time
based on bytes, not packets!
simple telnet scenario
ACK Only in Duplex Communication ?


pass
, data = ‘
K=46
q=79, AC
Se

host ACKs
receipt, send
back use Seq=4
6, ACK
=83 da
password ta =‘CNT
4704’

tion
dat a sec
=53,
no time
83 , ACK
Seq=

ACK only packet, seq# is the first byte


to be transmitted in the future
(the packet has no data section)

26
TCP Round Trip Time and
Timeout
Q: how to set TCP Q: how to estimate RTT?
timeout value?  SampleRTT: measured time
 longer than RTT from segment transmission
 but RTT varies
until ACK receipt
 ignore retransmissions
 too short: premature
timeout  SampleRTT will vary, want
 unnecessary estimated RTT “smoother”
 average several recent
retransmissions
 too long: slow measurements, not just
reaction to segment current SampleRTT
loss

Transport Layer 3-27


TCP Round Trip Time and
Timeout
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

 Exponential weighted moving average


 influence of past sample decreases exponentially fast
 typical value:  = 0.125

Transport Layer 3-28


Example RTT estimation:
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

300

250
RTT (milliseconds)

200

150

100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)

SampleRTT Estimated RTT

Transport Layer 3-29


TCP Round Trip Time and
Timeout
Setting the timeout
 EstimtedRTT plus “safety margin”
 large variation in EstimatedRTT -> larger safety margin
 first estimate of how much SampleRTT deviates from EstimatedRTT:

DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|

(typically,  = 0.25)

Then set timeout interval:

TimeoutInterval = EstimatedRTT + 4*DevRTT

Transport Layer 3-30


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
 3.4 Principles of
management
reliable data transfer  3.6 Principles of
congestion control
 3.7 TCP congestion
control
Transport Layer 3-31
TCP reliable data transfer
 TCP creates rdt  Retransmissions are
service on top of IP’s triggered by:
unreliable service  timeout events
 Pipelined segments  duplicate acks
 Cumulative acks  Initially consider
 TCP uses single simplified TCP
retransmission timer sender:
 ignore duplicate acks
 ignore flow control,
congestion control

Transport Layer 3-32


TCP sender events:
data rcvd from app: timeout:
 Create segment with  retransmit segment
seq # that caused timeout
 seq # is byte-stream  restart timer
number of first data Ack rcvd:
byte in segment  If acknowledges
 start timer if not
previously unacked
already running (think segments
of timer as for oldest  update what is known
unacked segment) to be acked
 expiration interval:  start timer if there are
TimeOutInterval outstanding segments

Transport Layer 3-33


TCP: retransmission scenarios
Host A Host B Host A Host B

Seq=9 Seq=9
2, 8 b 2, 8 b
y t es d y t es d
at a

Seq=92 timeout
at a Seq=
100,
20 b y
t es d
timeout

ata
=100
ACK 0
10
X CK
A AC
=
K =120
loss
Seq=9 Seq=9
2, 8 b 2, 8 b
y t es d Sendbase y t es d
at a
at a

Seq=92 timeout
= 100
SendBase
= 120 =1 20
K
CK =100 AC
A

SendBase
= 100 SendBase
= 120 premature timeout
time time
lost ACK scenario
Transport Layer 3-34
TCP retransmission scenarios
(more)
Host A Host B

Seq=9
2, 8 b
y t es d
at a

=100
timeout

Seq=1 A CK
00 , 2 0
b y t es
dat a
X
loss

SendBase CK =120
A
= 120

time
Cumulative ACK scenario

Transport Layer 3-35


TCP ACK generation [RFC 1122, RFC
2581]

Event at Receiver TCP Receiver action


Arrival of in-order segment with Delayed ACK. Wait up to 500ms
expected seq #. All data up to for next segment. If no next segment,
expected seq # already ACKed send ACK

Arrival of in-order segment with Immediately send single cumulative


expected seq #. One other ACK, ACKing both in-order segments
segment has ACK pending

Arrival of out-of-order segment Immediately send duplicate ACK,


higher-than-expect seq. # . indicating seq. # of next expected byte
Gap detected

Arrival of segment that Immediate send ACK, provided that


partially or completely fills gap segment starts at lower end of gap

Transport Layer 3-36


Fast Retransmit
 Time-out period  If sender receives 3
often relatively long: ACKs for the same
 long delay before data, it supposes that
resending lost packet segment after ACKed
 Detect lost segments data was lost:
via duplicate ACKs.  fast retransmit: resend
 Sender often sends segment before timer
many segments back- expires
to-back
 If segment is lost,
there will likely be
many duplicate ACKs.

Transport Layer 3-37


Host A Host B

X
timeout

r es e n
d 2 nd s
egme
nt

time

Figure 3.37 Resending a segment after triple duplicate ACK Layer


Transport 3-38
Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
 3.4 Principles of
management
reliable data transfer  3.6 Principles of
congestion control
 3.7 TCP congestion
control
Transport Layer 3-39
TCP Flow Control
flow control
sender won’t
 receive side of TCP
overflow
connection has a receiver’s buffer by
receive buffer: transmitting too
much,
too fast
 speed-matching
service: matching
the send rate to the
receiving app’s drain
rate
 app process may be
slow at reading from
buffer
Transport Layer 3-40
TCP Flow control: how it
works
 Rcvr advertises spare
room by including
value of RcvWindow in
segments
 Sender limits
(Suppose TCP receiver unACKed data to
discards out-of-order RcvWindow
segments)  guarantees receive
 spare room in buffer buffer doesn’t
= RcvWindow overflow
= RcvBuffer-[LastByteRcvd -
LastByteRead]

Transport Layer 3-41


Transport Layer 3-42
Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
 3.4 Principles of
management
reliable data transfer  3.6 Principles of
congestion control
 3.7 TCP congestion
control
Transport Layer 3-43
TCP Connection Management
Recall: TCP sender, receiver Three way handshake:
establish “connection”
before exchanging data Step 1: client host sends TCP
segments SYN segment to server
 initialize TCP variables:  specifies initial seq #
 seq. #s  no data
 buffers, flow control info
Step 2: server host receives
(e.g. RcvWindow) SYN, replies with SYNACK
 client: connection initiator segment
Socket clientSocket = new
Socket("hostname","port
 server allocates buffers
number");  specifies server initial

 server: contacted by client seq. #


Socket connectionSocket = Step 3: client receives SYNACK,
welcomeSocket.accept(); replies with ACK segment,
which may contain data

Transport Layer 3-44


TCP Connection Setup ---
Three-Way Handshaking

Step 1: client host sends TCP SYN


segment to server client server
 specifies initial seq #
SY
 no data seq=c N,
lient_s
eq
Step 2: server host receives SYN,
,
replies with SYN/ACK segment /ACK
SYN er_seq,
serv +1
seq= ient_seq
 server allocates buffers ack=c l

 specifies server initial seq.


ACK,
seq=c
# ack=s
lient_s
e
erver_ q+1
seq+1
Step 3: client receives SYN/ACK,
replies with ACK segment,
which may contain data
TCP Connection Management (cont.)

Closing a connection: client server

client closes socket: close


FIN
clientSocket.close();

Step 1: client end system


ACK
sends TCP FIN control close
segment to server FIN

Step 2: server receives FIN,

timed wait
ACK
replies with ACK. Closes
connection, sends FIN.

closed

Transport Layer 3-46


TCP Connection Management (cont.)

Step 3: client receives FIN, client server


replies with ACK.
closing
FIN
 Enters “timed wait” - will
respond with ACK to
received FINs
ACK
closing
Step 4: server, receives ACK. FIN
Connection closed.

Note: with small


timed wait
ACK
modification, can handle
simultaneous FINs. closed

closed

Transport Layer 3-47


TCP Connection Management
(cont)

TCP server
lifecycle

TCP client
lifecycle

Transport Layer 3-48


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-
services oriented transport:
 3.2 Multiplexing and TCP
demultiplexing  segment structure
 3.3 Connectionless
 reliable data transfer
 flow control
transport: UDP
 connection
 3.4 Principles of
management
reliable data transfer  3.6 TCP congestion
control

Transport Layer 3-49


TCP congestion control: additive
increase, multiplicative decrease
 Approach: increase transmission rate (window size), probing for usable
bandwidth, until loss occurs
 additive increase: increase CongWin by 1 MSS every RTT until loss
detected
 multiplicative decrease: cut CongWin in half after loss ( TCP Reno )
congestion window size

co n g e stio n
w in d o w

2 4 K b yte s

Saw tooth
behavior: probing 1 6 K b yte s

for bandwidth
8 K b yte s

time
tim e

Transport Layer 3-50


TCP Congestion Control:
details
 sender limits transmission: How does sender
LastByteSent-LastByteAcked perceive congestion?
 CongWin  loss event = timeout
 Roughly, or 3 duplicate acks
CongWin  TCP sender reduces
rate = Bytes/sec
RTT rate (CongWin) after
 CongWin is dynamic, function loss event
of perceived network three mechanisms:
 AIMD
congestion
 slow start
 conservative after
timeout events
Transport Layer 3-51
TCP Slow Start
 When connection begins,  When connection
CongWin = 1 MSS begins, increase rate
 Example: MSS = 500 bytes exponentially fast until
& RTT = 200 msec first loss event
 initial rate = 20 kbps
 Rate=500/200*10-3
=2.5KB/sec=20Kbps
 available bandwidth may
be >> MSS/RTT
 desirable to quickly ramp
up to respectable rate

Transport Layer 3-52


TCP Slow Start (more)
 When connection Host A Host B
begins, increase rate
one s e gm
exponentially until ent

RTT
first loss event:
two segm
 double CongWin every en ts
RTT
 done by incrementing
four segm
CongWin for every ents
ACK received
 Summary: initial rate
is slow but ramps up
exponentially fast time

Transport Layer 3-53


 After 3 dup ACKs:
 CongWin is cut in half
 window then grows linearly
Philosophy:
 But after timeout event:
 CongWin instead set to 1 MSS;
 3 dup ACKs indicates
 window then grows exponentially
 to a threshold, then grows linearly
network capable of
delivering some
segments
 timeout indicates a
“more alarming”
congestion scenario

Transport Layer 3-54


Refinement
Q: When should the
exponential increase
switch to linear?
A: When CongWin gets
to 1/2 of its value

CWND
before timeout.

Implementation:
 Variable Threshold
 At loss event, Threshold
is set to 1/2 of CongWin
just before loss event

Transport Layer 3-55


Summary: TCP Congestion Control
 When CongWin is below Threshold, sender in slow-start
phase, window grows exponentially.
 When CongWin is above Threshold, sender is in congestion-
avoidance phase, window grows linearly.
 When a triple duplicate ACK occurs, Threshold set to
CongWin/2 and CongWin set to Threshold. ( TCP Reno )
 When a triple duplicate ACK occurs, Threshold set to
CongWin/2 and CongWin set to 1 MSS ( TCP Tahoe )
 When timeout occurs, Threshold set to CongWin/2 and
CongWin is set to 1 MSS. ( for both TCP Tahoe and TCO Reno )

Transport Layer 3-56


TCP sender congestion
control
State Event TCP Sender Action Commentary
Slow Start ACK receipt CongWin = CongWin + MSS, Resulting in a doubling of
(SS) for previously If (CongWin > Threshold) CongWin every RTT
unacked set state to “Congestion
data Avoidance”
Congestion ACK receipt CongWin = CongWin+MSS * Additive increase, resulting
Avoidance for previously (MSS/CongWin) in increase of CongWin by
(CA) unacked 1 MSS every RTT
data
SS or CA Loss event Threshold = CongWin/2, Fast recovery,
detected by CongWin = Threshold, implementing multiplicative
triple Set state to “Congestion decrease. CongWin will not
duplicate Avoidance” drop below 1 MSS.
ACK
SS or CA Timeout Threshold = CongWin/2, Enter slow start
CongWin = 1 MSS,
Set state to “Slow Start”
SS or CA Duplicate Increment duplicate ACK count CongWin and Threshold
ACK for segment being acked not changed

Transport Layer 3-57


TCP throughput ( TCP Reno )
 What’s the average throughout of TCP
as a function of window size and RTT?
 Ignore slow start
 Let W be the window size when loss
occurs.
 When window is W, throughput is W/RTT
 Just after loss, window drops to W/2,
throughput to W/2RTT.
 Average throughout: .75 W/RTT

Transport Layer 3-58


Chapter 3: Summary
 principles behind transport
layer services:
 multiplexing,
demultiplexing
 reliable data transfer
 flow control
 congestion control
Next:
 instantiation and  leaving the network
implementation in the Internet “edge” (application,
 UDP
transport layers)
 TCP
 into the network
“core”

Transport Layer 3-59

You might also like