3,Transport Layer 3a-1
Chapter 3,Transport Layer
Chapter goals:
? understand principles
behind transport layer
services:
? multiplexing/demultiplex
ing
? reliable data transfer
? flow control
? congestion control
? instantiation and
implementation in the
Internet
Chapter Overview:
? transport layer services
? multiplexing/demultiplexing
? connectionless transport,UDP
? principles of reliable data
transfer
? connection-oriented transport,
TCP
? reliable transfer
? flow control
? connection management
? principles of congestion control
? TCP congestion control
3,Transport Layer 3a-2
Transport services and protocols
? provide logical communication
between app’ processes
running on different hosts
? transport protocols run in
end systems
? transport vs network layer
services:
? network layer,data transfer
between end systems
? transport layer,data
transfer between processes
? relies on,enhances,network
layer services
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
data link
physical
3,Transport Layer 3a-3
Transport-layer protocols
Internet transport services:
? reliable,in-order unicast
delivery (TCP)
? congestion
? flow control
? connection setup
? unreliable (“best-effort”),
unordered unicast or
multicast delivery,UDP
? services not available,
? real-time
? bandwidth guarantees
? reliable multicast
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
data link
physical
3,Transport Layer 3a-4
application
transport
network
M P2
application
transport
network
Multiplexing/demultiplexing
Recall,segment - unit of data
exchanged between
transport layer entities
? aka TPDU,transport
protocol data unit receiver
Ht
Hn
Demultiplexing,delivering
received segments to
correct app layer processes
segment
segment M
application
transport
network
P1
M
M M
P3 P4
segment
header
application-layer
data
3,Transport Layer 3a-5
Multiplexing/demultiplexing
multiplexing/demultiplexing:
? based on sender,receiver
port numbers,IP addresses
? source,dest port #s in
each segment
? recall,well-known port
numbers for specific
applications
gathering data from multiple
app processes,enveloping
data with header (later used
for demultiplexing)
source port # dest port #
32 bits
application
data
(message)
other header fields
TCP/UDP segment format
Multiplexing:
3,Transport Layer 3a-6
Multiplexing/demultiplexing,examples
host A server B
source port,x
dest,port,23
source port:23
dest,port,x
port use,simple telnet app
Web client
host A
Web
server B
Web client
host C
Source IP,C
Dest IP,B
source port,x
dest,port,80
Source IP,C
Dest IP,B
source port,y
dest,port,80
port use,Web server
Source IP,A
Dest IP,B
source port,x
dest,port,80
3,Transport Layer 3a-7
UDP,User Datagram Protocol [RFC 768]
?, no frills,”,bare bones”
Internet transport
protocol
?,best effort” service,UDP
segments may be:
? lost
? delivered out of order
to app
? connectionless:
? no handshaking between
UDP sender,receiver
? each UDP segment
handled independently
of others
Why is there a UDP?
? no connection
establishment (which can
add delay)
? simple,no connection state
at sender,receiver
? small segment header
? no congestion control,UDP
can blast away as fast as
desired
3,Transport Layer 3a-8
UDP,more
? often used for streaming
multimedia apps
? loss tolerant
? rate sensitive
? other UDP uses
(why?):
? DNS
? SNMP
? reliable transfer over UDP,
add reliability at
application layer
? application-specific
error recover!
source port # dest port #
32 bits
Application
data
(message)
UDP segment format
length checksum
Length,in
bytes of UDP
segment,
including
header
3,Transport Layer 3a-9
UDP checksum
Sender:
? treat segment contents
as sequence of 16-bit
integers
? checksum,addition (1’s
complement sum) of
segment contents
? sender puts checksum
value into UDP checksum
field
Receiver:
? compute checksum of
received segment
? check if computed checksum
equals checksum field value:
? NO - error detected
? YES - no error detected,
But maybe errors
nonethless? More later ….
Goal,detect,errors” (e.g.,flipped bits) in transmitted
segment
3,Transport Layer 3a-10
Principles of Reliable data transfer
? important in app.,transport,link layers
? top-10 list of important networking topics!
? characteristics of unreliable channel will determine
complexity of reliable data transfer protocol (rdt)
3,Transport Layer 3a-11
Reliable data transfer,getting started
send
side
receive
side
rdt_send(),called from above,
(e.g.,by app.),Passed data to
deliver to receiver upper layer
udt_send(),called by rdt,
to transfer packet over
unreliable channel to receiver
rdt_rcv(),called when packet
arrives on rcv-side of channel
deliver_data(),called by
rdt to deliver data to upper
3,Transport Layer 3a-12
Reliable data transfer,getting started
We’ll:
? incrementally develop sender,receiver sides of
reliable data transfer protocol (rdt)
? consider only unidirectional data transfer
? but control info will flow on both directions!
? use finite state machines (FSM) to specify
sender,receiver
state
1 state2
event causing state transition
actions taken on state transition
state,when in this
“state” next state
uniquely determined
by next event
event
actions
3,Transport Layer 3a-13
Rdt1.0,reliable transfer over a reliable channel
? underlying channel perfectly reliable
? no bit erros
? no loss of packets
? separate FSMs for sender,receiver:
? sender sends data into underlying channel
? receiver read data from underlying channel
3,Transport Layer 3a-14
Rdt2.0,channel with bit errors
? underlying channel may flip bits in packet
? recall,UDP checksum to detect bit errors
? the question,how to recover from errors:
? acknowledgements (ACKs),receiver explicitly tells sender
that pkt received OK
? negative acknowledgements (NAKs),receiver explicitly
tells sender that pkt had errors
? sender retransmits pkt on receipt of NAK
? human scenarios using ACKs,NAKs?
? new mechanisms in rdt2.0 (beyond rdt1.0):
? error detection
? receiver feedback,control msgs (ACK,NAK) rcvr->sender
3,Transport Layer 3a-15
rdt2.0,FSM specification
sender FSM receiver FSM
3,Transport Layer 3a-16
rdt2.0,in action (no errors)
sender FSM receiver FSM
3,Transport Layer 3a-17
rdt2.0,in action (error scenario)
sender FSM receiver FSM
3,Transport Layer 3a-18
rdt2.0 has a fatal flaw!
What happens if
ACK/NAK corrupted?
? sender doesn’t know what
happened at receiver!
? san’t just retransmit,
possible duplicate
What to do?
? sender ACKs/NAKs
receiver’s ACK/NAK? What
if sender ACK/NAK lost?
? retransmit,but this might
cause retransmission of
correctly received pkt!
Handling duplicates,
? sender adds sequence
number to each pkt
? sender retransmits current
pkt if ACK/NAK garbled
? receiver discards (doesn’t
deliver up) duplicate pkt
Sender sends one packet,
then waits for receiver
response
stop and wait
3,Transport Layer 3a-19
rdt2.1,sender,handles garbled ACK/NAKs
3,Transport Layer 3a-20
rdt2.1,receiver,handles garbled ACK/NAKs
3,Transport Layer 3a-21
rdt2.1,discussion
Sender:
? seq # added to pkt
? two seq,#’s (0,1) will
suffice,Why?
? must check if received
ACK/NAK corrupted
? twice as many states
? state must,remember”
whether,current” pkt
has 0 or 1 seq,#
Receiver:
? must check if received
packet is duplicate
? state indicates whether
0 or 1 is expected pkt
seq #
? note,receiver can not
know if its last
ACK/NAK received OK
at sender
3,Transport Layer 3a-22
rdt2.2,a NAK-free protocol
? same functionality as
rdt2.1,using ACKs only
? instead of NAK,
receiver sends ACK for
last pkt received OK
? receiver must explicitly
include seq # of pkt
being ACKed
? duplicate ACK at
sender results in same
action as NAK,
retransmit current pkt
sender
FSM
!
3,Transport Layer 3a-23
rdt3.0,channels with errors and loss
New assumption:
underlying channel can
also lose packets (data
or ACKs)
? checksum,seq,#,ACKs,
retransmissions will be
of help,but not enough
Q,how to deal with loss?
? sender waits until
certain data or ACK
lost,then retransmits
? yuck,drawbacks?
Approach,sender waits
“reasonable” amount of
time for ACK
? retransmits if no ACK
received in this time
? if pkt (or ACK) just delayed
(not lost):
? retransmission will be
duplicate,but use of seq,
#’s already handles this
? receiver must specify seq
# of pkt being ACKed
? requires countdown timer
3,Transport Layer 3a-24
rdt3.0 sender
3,Transport Layer 3a-25
rdt3.0 in action
3,Transport Layer 3a-26
rdt3.0 in action
3,Transport Layer 3a-27
Performance of rdt3.0
? rdt3.0 works,but performance stinks
? example,1 Gbps link,15 ms e-e prop,delay,1KB packet:
Ttransmit = 8kb/pkt10**9 b/sec = 8 microsec
Utilization = U = = 8 microsec30.016 msecfraction of timesender busy sending = 0.00015
? 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link
? network protocol limits use of physical resources!
3,Transport Layer 3a-28
Pipelined protocols
Pipelining,sender allows multiple,“in-flight”,yet-to-
be-acknowledged pkts
? range of sequence numbers must be increased
? buffering at sender and/or receiver
? Two generic forms of pipelined protocols,go-Back-N,
selective repeat
3,Transport Layer 3a-29
Go-Back-N
Sender:
? k-bit seq # in pkt header
?,window” of up to N,consecutive unack’ed pkts allowed
? ACK(n),ACKs all pkts up to,including seq # n -,cumulative ACK”
? may receive duplicate ACKs (see receiver)
? timer for each in-flight pkt
? timeout(n),retransmit pkt n and all higher seq # pkts in window
3,Transport Layer 3a-30
GBN,sender extended FSM
3,Transport Layer 3a-31
GBN,receiver extended FSM
receiver simple:
? ACK-only,always send ACK for correctly-received
pkt with highest in-order seq #
? may generate duplicate ACKs
? need only remember expectedseqnum
? out-of-order pkt,
? discard (don’t buffer) -> no receiver buffering!
? ACK pkt with highest in-order seq #
3,Transport Layer 3a-32
GBN in
action
3,Transport Layer 3a-33
Selective Repeat
? receiver individually acknowledges all correctly
received pkts
? buffers pkts,as needed,for eventual in-order delivery
to upper layer
? sender only resends pkts for which ACK not
received
? sender timer for each unACKed pkt
? sender window
? N consecutive seq #’s
? again limits seq #s of sent,unACKed pkts
3,Transport Layer 3a-34
Selective repeat,sender,receiver windows
3,Transport Layer 3a-35
Selective repeat
data from above,
? if next available seq # in
window,send pkt
timeout(n):
? resend pkt n,restart timer
ACK(n) in [sendbase,sendbase+N]:
? mark pkt n as received
? if n smallest unACKed pkt,
advance window base to
next unACKed seq #
sender
pkt n in [rcvbase,rcvbase+N-1]
? send ACK(n)
? out-of-order,buffer
? in-order,deliver (also
deliver buffered,in-order
pkts),advance window to
next not-yet-received pkt
pkt n in [rcvbase-N,rcvbase-1]
? ACK(n)
otherwise:
? ignore
receiver
3,Transport Layer 3a-36
Selective repeat in action
3,Transport Layer 3a-37
Selective repeat:
dilemma
Example,
? seq #’s,0,1,2,3
? window size=3
? receiver sees no
difference in two
scenarios!
? incorrectly passes
duplicate data as new
in (a)
Q,what relationship
between seq # size
and window size?
Chapter 3,Transport Layer
Chapter goals:
? understand principles
behind transport layer
services:
? multiplexing/demultiplex
ing
? reliable data transfer
? flow control
? congestion control
? instantiation and
implementation in the
Internet
Chapter Overview:
? transport layer services
? multiplexing/demultiplexing
? connectionless transport,UDP
? principles of reliable data
transfer
? connection-oriented transport,
TCP
? reliable transfer
? flow control
? connection management
? principles of congestion control
? TCP congestion control
3,Transport Layer 3a-2
Transport services and protocols
? provide logical communication
between app’ processes
running on different hosts
? transport protocols run in
end systems
? transport vs network layer
services:
? network layer,data transfer
between end systems
? transport layer,data
transfer between processes
? relies on,enhances,network
layer services
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
data link
physical
3,Transport Layer 3a-3
Transport-layer protocols
Internet transport services:
? reliable,in-order unicast
delivery (TCP)
? congestion
? flow control
? connection setup
? unreliable (“best-effort”),
unordered unicast or
multicast delivery,UDP
? services not available,
? real-time
? bandwidth guarantees
? reliable multicast
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
data link
physical
3,Transport Layer 3a-4
application
transport
network
M P2
application
transport
network
Multiplexing/demultiplexing
Recall,segment - unit of data
exchanged between
transport layer entities
? aka TPDU,transport
protocol data unit receiver
Ht
Hn
Demultiplexing,delivering
received segments to
correct app layer processes
segment
segment M
application
transport
network
P1
M
M M
P3 P4
segment
header
application-layer
data
3,Transport Layer 3a-5
Multiplexing/demultiplexing
multiplexing/demultiplexing:
? based on sender,receiver
port numbers,IP addresses
? source,dest port #s in
each segment
? recall,well-known port
numbers for specific
applications
gathering data from multiple
app processes,enveloping
data with header (later used
for demultiplexing)
source port # dest port #
32 bits
application
data
(message)
other header fields
TCP/UDP segment format
Multiplexing:
3,Transport Layer 3a-6
Multiplexing/demultiplexing,examples
host A server B
source port,x
dest,port,23
source port:23
dest,port,x
port use,simple telnet app
Web client
host A
Web
server B
Web client
host C
Source IP,C
Dest IP,B
source port,x
dest,port,80
Source IP,C
Dest IP,B
source port,y
dest,port,80
port use,Web server
Source IP,A
Dest IP,B
source port,x
dest,port,80
3,Transport Layer 3a-7
UDP,User Datagram Protocol [RFC 768]
?, no frills,”,bare bones”
Internet transport
protocol
?,best effort” service,UDP
segments may be:
? lost
? delivered out of order
to app
? connectionless:
? no handshaking between
UDP sender,receiver
? each UDP segment
handled independently
of others
Why is there a UDP?
? no connection
establishment (which can
add delay)
? simple,no connection state
at sender,receiver
? small segment header
? no congestion control,UDP
can blast away as fast as
desired
3,Transport Layer 3a-8
UDP,more
? often used for streaming
multimedia apps
? loss tolerant
? rate sensitive
? other UDP uses
(why?):
? DNS
? SNMP
? reliable transfer over UDP,
add reliability at
application layer
? application-specific
error recover!
source port # dest port #
32 bits
Application
data
(message)
UDP segment format
length checksum
Length,in
bytes of UDP
segment,
including
header
3,Transport Layer 3a-9
UDP checksum
Sender:
? treat segment contents
as sequence of 16-bit
integers
? checksum,addition (1’s
complement sum) of
segment contents
? sender puts checksum
value into UDP checksum
field
Receiver:
? compute checksum of
received segment
? check if computed checksum
equals checksum field value:
? NO - error detected
? YES - no error detected,
But maybe errors
nonethless? More later ….
Goal,detect,errors” (e.g.,flipped bits) in transmitted
segment
3,Transport Layer 3a-10
Principles of Reliable data transfer
? important in app.,transport,link layers
? top-10 list of important networking topics!
? characteristics of unreliable channel will determine
complexity of reliable data transfer protocol (rdt)
3,Transport Layer 3a-11
Reliable data transfer,getting started
send
side
receive
side
rdt_send(),called from above,
(e.g.,by app.),Passed data to
deliver to receiver upper layer
udt_send(),called by rdt,
to transfer packet over
unreliable channel to receiver
rdt_rcv(),called when packet
arrives on rcv-side of channel
deliver_data(),called by
rdt to deliver data to upper
3,Transport Layer 3a-12
Reliable data transfer,getting started
We’ll:
? incrementally develop sender,receiver sides of
reliable data transfer protocol (rdt)
? consider only unidirectional data transfer
? but control info will flow on both directions!
? use finite state machines (FSM) to specify
sender,receiver
state
1 state2
event causing state transition
actions taken on state transition
state,when in this
“state” next state
uniquely determined
by next event
event
actions
3,Transport Layer 3a-13
Rdt1.0,reliable transfer over a reliable channel
? underlying channel perfectly reliable
? no bit erros
? no loss of packets
? separate FSMs for sender,receiver:
? sender sends data into underlying channel
? receiver read data from underlying channel
3,Transport Layer 3a-14
Rdt2.0,channel with bit errors
? underlying channel may flip bits in packet
? recall,UDP checksum to detect bit errors
? the question,how to recover from errors:
? acknowledgements (ACKs),receiver explicitly tells sender
that pkt received OK
? negative acknowledgements (NAKs),receiver explicitly
tells sender that pkt had errors
? sender retransmits pkt on receipt of NAK
? human scenarios using ACKs,NAKs?
? new mechanisms in rdt2.0 (beyond rdt1.0):
? error detection
? receiver feedback,control msgs (ACK,NAK) rcvr->sender
3,Transport Layer 3a-15
rdt2.0,FSM specification
sender FSM receiver FSM
3,Transport Layer 3a-16
rdt2.0,in action (no errors)
sender FSM receiver FSM
3,Transport Layer 3a-17
rdt2.0,in action (error scenario)
sender FSM receiver FSM
3,Transport Layer 3a-18
rdt2.0 has a fatal flaw!
What happens if
ACK/NAK corrupted?
? sender doesn’t know what
happened at receiver!
? san’t just retransmit,
possible duplicate
What to do?
? sender ACKs/NAKs
receiver’s ACK/NAK? What
if sender ACK/NAK lost?
? retransmit,but this might
cause retransmission of
correctly received pkt!
Handling duplicates,
? sender adds sequence
number to each pkt
? sender retransmits current
pkt if ACK/NAK garbled
? receiver discards (doesn’t
deliver up) duplicate pkt
Sender sends one packet,
then waits for receiver
response
stop and wait
3,Transport Layer 3a-19
rdt2.1,sender,handles garbled ACK/NAKs
3,Transport Layer 3a-20
rdt2.1,receiver,handles garbled ACK/NAKs
3,Transport Layer 3a-21
rdt2.1,discussion
Sender:
? seq # added to pkt
? two seq,#’s (0,1) will
suffice,Why?
? must check if received
ACK/NAK corrupted
? twice as many states
? state must,remember”
whether,current” pkt
has 0 or 1 seq,#
Receiver:
? must check if received
packet is duplicate
? state indicates whether
0 or 1 is expected pkt
seq #
? note,receiver can not
know if its last
ACK/NAK received OK
at sender
3,Transport Layer 3a-22
rdt2.2,a NAK-free protocol
? same functionality as
rdt2.1,using ACKs only
? instead of NAK,
receiver sends ACK for
last pkt received OK
? receiver must explicitly
include seq # of pkt
being ACKed
? duplicate ACK at
sender results in same
action as NAK,
retransmit current pkt
sender
FSM
!
3,Transport Layer 3a-23
rdt3.0,channels with errors and loss
New assumption:
underlying channel can
also lose packets (data
or ACKs)
? checksum,seq,#,ACKs,
retransmissions will be
of help,but not enough
Q,how to deal with loss?
? sender waits until
certain data or ACK
lost,then retransmits
? yuck,drawbacks?
Approach,sender waits
“reasonable” amount of
time for ACK
? retransmits if no ACK
received in this time
? if pkt (or ACK) just delayed
(not lost):
? retransmission will be
duplicate,but use of seq,
#’s already handles this
? receiver must specify seq
# of pkt being ACKed
? requires countdown timer
3,Transport Layer 3a-24
rdt3.0 sender
3,Transport Layer 3a-25
rdt3.0 in action
3,Transport Layer 3a-26
rdt3.0 in action
3,Transport Layer 3a-27
Performance of rdt3.0
? rdt3.0 works,but performance stinks
? example,1 Gbps link,15 ms e-e prop,delay,1KB packet:
Ttransmit = 8kb/pkt10**9 b/sec = 8 microsec
Utilization = U = = 8 microsec30.016 msecfraction of timesender busy sending = 0.00015
? 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link
? network protocol limits use of physical resources!
3,Transport Layer 3a-28
Pipelined protocols
Pipelining,sender allows multiple,“in-flight”,yet-to-
be-acknowledged pkts
? range of sequence numbers must be increased
? buffering at sender and/or receiver
? Two generic forms of pipelined protocols,go-Back-N,
selective repeat
3,Transport Layer 3a-29
Go-Back-N
Sender:
? k-bit seq # in pkt header
?,window” of up to N,consecutive unack’ed pkts allowed
? ACK(n),ACKs all pkts up to,including seq # n -,cumulative ACK”
? may receive duplicate ACKs (see receiver)
? timer for each in-flight pkt
? timeout(n),retransmit pkt n and all higher seq # pkts in window
3,Transport Layer 3a-30
GBN,sender extended FSM
3,Transport Layer 3a-31
GBN,receiver extended FSM
receiver simple:
? ACK-only,always send ACK for correctly-received
pkt with highest in-order seq #
? may generate duplicate ACKs
? need only remember expectedseqnum
? out-of-order pkt,
? discard (don’t buffer) -> no receiver buffering!
? ACK pkt with highest in-order seq #
3,Transport Layer 3a-32
GBN in
action
3,Transport Layer 3a-33
Selective Repeat
? receiver individually acknowledges all correctly
received pkts
? buffers pkts,as needed,for eventual in-order delivery
to upper layer
? sender only resends pkts for which ACK not
received
? sender timer for each unACKed pkt
? sender window
? N consecutive seq #’s
? again limits seq #s of sent,unACKed pkts
3,Transport Layer 3a-34
Selective repeat,sender,receiver windows
3,Transport Layer 3a-35
Selective repeat
data from above,
? if next available seq # in
window,send pkt
timeout(n):
? resend pkt n,restart timer
ACK(n) in [sendbase,sendbase+N]:
? mark pkt n as received
? if n smallest unACKed pkt,
advance window base to
next unACKed seq #
sender
pkt n in [rcvbase,rcvbase+N-1]
? send ACK(n)
? out-of-order,buffer
? in-order,deliver (also
deliver buffered,in-order
pkts),advance window to
next not-yet-received pkt
pkt n in [rcvbase-N,rcvbase-1]
? ACK(n)
otherwise:
? ignore
receiver
3,Transport Layer 3a-36
Selective repeat in action
3,Transport Layer 3a-37
Selective repeat:
dilemma
Example,
? seq #’s,0,1,2,3
? window size=3
? receiver sees no
difference in two
scenarios!
? incorrectly passes
duplicate data as new
in (a)
Q,what relationship
between seq # size
and window size?