ch3 cs536 Fall2023
ch3 cs536 Fall2023
Applications
application
… built on ...
Reliable (or unreliable) transport transport
… built on ...
network
Best-effort global packet delivery
… built on ... link
Best-effort local packet delivery
… built on ... physical
lo g
ica
l en
§ transport protocols actions in end
d-e
systems:
nd
local or
tra
• sender: breaks application messages regional ISP
nsp
into segments, passes to network layer
ort
home network content
• receiver: reassembles segments into provider
network
messages, passes to application layer datacenter
applicationnetwork
transport
network
Sender:
application § is passed an application- application
app. msg
layer message
transport § determines segment TThhtransport
app. msg
header fields values
network (IP) § creates segment network (IP)
link
§ passes segment to IP link
physical physical
Receiver:
application § receives segment from IP application
§ checks header values
app. msg
transport § extracts application-layer transport
message
network (IP) network (IP)
§ demultiplexes message up
link to application via socket link
physical physical
Th app. msg
lo g
• congestion control
ica
• flow control
l en
d-e
• connection setup
nd
local or
§ UDP: User Datagram Protocol
tra
regional ISP
nsp
• unreliable, unordered delivery
ort
home network content
provider
• no-frills extension of “best-effort” IP network datacenter
applicationnetwork
application
application application
transport transport
(UDP) (UDP)
link link
physical physical
link
§ passes segment to IP link
physical physical
data to/from
UDP segment format application layer
Transmitted: 5 6 11
Received: 4 6 11
receiver-computed
checksum
= sender-computed
checksum (as received)
sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Note: when adding numbers, a carryout from the most significant bit needs to be
added to the result
* Check out the online interactive exercises for more examples: http://gaia.cs.umass.edu/kurose_ross/interactive/
Transport Layer: 3-32
Internet checksum: weak protection!
example: add two 16-bit integers
0 1
1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0
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 Even though
numbers have
sum 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 changed (bit
flips), no change
checksum 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 in checksum!
sender receiver
X packets received
packets in queue/buffer errors loss
Packet delivery misbehaviors Transport Layer: 3-36
Principles of reliable data transfer
sending receiving
process process
application data data
transport
reliable channel
transport
network
unreliable channel
sending receiving
process process
application data data
transport
sender-side of receiver-side
Complexity of reliable data reliable data
transfer protocol
of reliable data
transfer protocol
transfer protocol will depend
(strongly) on characteristics of transport
network
unreliable channel (lose, unreliable channel
corrupt, reorder data?)
reliable service implementation
sending receiving
process process
application data data
transport
sender-side of receiver-side
Sender, receiver do not know reliable data
transfer protocol
of reliable data
transfer protocol
the “state” of each other, e.g.,
was a message received? transport
network
§ unless communicated via a unreliable channel
message
reliable service implementation
unreliable channel
udt_send(): called by rdt rdt_rcv(): called when packet
to transfer packet over arrives on receiver side of
Bi-directional communication over
unreliable channel to receiver unreliable channel channel
Transport Layer: 3-41
Reliable data transfer: getting started
We will:
§ incrementally develop sender, receiver sides of reliable data transfer
protocol (rdt)
§ consider only unidirectional data transfer
• but control info will flow in both directions!
§ use finite state machines (FSM) to specify sender, receiver
event causing state transition
actions taken on state transition
state: when in this “state”
next state uniquely state state
determined by next 1 event
event 2
actions
sender receiver
sender receiver
X packets received
packets in the buffer errors loss
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
Summary: reliable data transfer
Version Channel Mechanism
rdt1.0 Reliable nothing
channel
rdt2.0 bit errors (1)error detection via checksum
(no loss) (2)receiver feedback (ACK/NAK)
(3)retransmission upon NAK
rdt2.1 Same as 2.0 handling fatal flaw with rdt 2.0:
(4)need seq #. for each packet
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer
L/R L/R
Usender=
RTT + L / R
.008 RTT
=
30.008
= 0.00027
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
rcv_base
Not received
Transport Layer: 3-85
Go-Back-N in action: No loss
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
012345678 send pkt2 receive pkt0, send ack0
012345678 send pkt3 receive pkt1, send ack1
(wait) receive pkt2, send ack2
receive pkt3, send ack3
012345678 rcv ack0, send pkt4
012345 678 rcv ack1, send pkt5
0123456 78 rcv ack2, send pkt6 receive pkt4, send ack4
01234567 8 rcv ack3, send pkt7 receive pkt5, send ack5
receive pkt6, send ack6
pkt0 timeout
receive pkt7, send ack7
pkt1 timeout
pkt2 timeout
pkt3 timeout
pkt4 timeout
Transport Layer: 3-86
Go-Back-N in action: Loss
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
012345678 send pkt3 Xloss receive pkt1, send ack1
(wait)
receive pkt3, discard,
012345678 rcv ack0, send pkt4 (re)send ack1
012345678 rcv ack1, send pkt5 receive pkt4, discard,
(re)send ack1
ignore duplicate ACK receive pkt5, discard,
(re)send ack1
pkt 2 timeout
012345678 send pkt2
012345678 send pkt3
012345678 send pkt4 rcv pkt2, deliver, send ack2
012345678 send pkt5 rcv pkt3, deliver, send ack3
rcv pkt4, deliver, send ack4
rcv pkt5, deliver, send ack5
a dilemma!
0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 0123012
example:
0123012
0123012 pkt3
X
0123012
§ seq #s: 0, 1, 2, 3 (base 4 counting) pkt0 will accept packet
with seq number 0
§ window size=3 (a) no problem
0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 X 0123012
X 0123012
X
timeout
retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer: 3-92
Selective repeat:
sender window receiver window
(after receipt) (after receipt)
a dilemma!
0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 0123012
example:
0123012
0123012 pkt3
X
§ seq #s: 0, 1, 2, 3 (base 4 counting) § receiver can’t
0123012
pkt0 will accept packet
see sender side with seq number 0
§ window size=3 (a) no problem
§ receiver
behavior
identical in both
cases!
§0something’s
123012 pkt0
Q: what relationship is needed 0(very)
1 2 3 0 1wrong!
2 pkt1 0123012
window size
Acknowledgements: N
User types‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs receipt
of‘C’, echoes back ‘C’
Seq=79, ACK=43, data = ‘C’
host ACKs receipt
of echoed ‘C’
Seq=43, ACK=80
(milliseconds)
300
250
RTT (milliseconds)
RTT
200
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
time (seconds)
SampleRTT Estimated RTT
Transport Layer: 3-102
TCP round trip time, timeout
§ timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT: want a larger safety margin
TimeoutInterval = EstimatedRTT + 4*DevRTT
* Check out the online interactive exercises for more examples: http://gaia.cs.umass.edu/kurose_ross/interactive/
Transport Layer: 3-103
TCP Sender (simplified)
event: data received from event: timeout
application § retransmit segment that
caused timeout
§ create segment with seq #
§ restart timer
§ seq # is byte-stream number
of first data byte in segment
event: ACK received
§ start timer if not already
running § if ACK acknowledges
previously unACKed segments
• think of timer as for oldest
unACKed segment • update what is known to be
ACKed
• expiration interval:
TimeOutInterval • start timer if there are still
unACKed segments
Transport Layer: 3-104
TCP Receiver: ACK generation [RFC 5681]
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
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
=100
timeout
A CK
=100
A CK
=100
Receipt of three duplicate ACKs A CK
IP
flow control code
receiver controls sender, so
sender won’t overflow
receiver’s buffer by from sender
application application
network network
LAST_ACK
FINbit=1, seq=y
TIMED_WAIT can no longer
send data
ACKbit=1; ACKnum=y+1
timed wait
for 2*max CLOSED
segment lifetime
CLOSED Makes the client wait for a duration long enough for an ACK to be lost
and a FIN to arrive. If a FIN arrives, restart the timer 2*max-segment-lifetime
Drop any delayed segments during timer=2*max-segment-time (2min default) Transport Layer: 3-126
Chapter 3: roadmap
§ Transport-layer services
§ Multiplexing and demultiplexing
§ Connectionless transport: UDP
§ Principles of reliable data transfer
§ Connection-oriented transport: TCP
§ Principles of congestion control
§ TCP congestion control
§ Evolution of transport-layer
functionality
Transport Layer: 3-127
Principles of congestion control
Congestion:
§ informally: “too many sources sending too much data too fast for
network to handle”
§ manifestations:
• long delays (queueing in router buffers)
• packet loss (buffer overflow at routers)
§ different from flow control! congestion control:
§ a top-10 problem! too many senders,
sending too fast
router
§ may indicate congestion level or
explicitly set sending rate
§ TCP ECN, ATM, DECbit protocols
Transport Layer: 3-140
Chapter 3: roadmap
§ Transport-layer services
§ Multiplexing and demultiplexing
§ Connectionless transport: UDP
§ Principles of reliable data transfer
§ Connection-oriented transport: TCP
§ Principles of congestion control
§ TCP congestion control
§ Evolution of transport-layer
functionality
Transport Layer: 3-141
TCP Congestion Control
vIdea
§ Assumes best-effort network
§ Each source determines network capacity for itself
§ Implicit feedback via ACKs or timeout events
§ Feedback control system in practice
§ ACKs pace transmission (self-clocking)
vChallenge
§ Determining initial available capacity
§ Adjusting to changes in capacity in a timely manner
loss
congestion window size
24 Kbytes
Saw tooth
behavior: probing
16 Kbytes
for bandwidth
8 Kbytes
time
time
What AIMD? TCP Fairness
Two competing sessions:
r Additive increase gives slope of 1, as throughout
increases
r multiplicative decrease decreases throughput
proportionally
R equal bandwidth share
Connection 2 throughput
Connection 1 throughput R
TCP Congestion Control (RFC 5681)
RTT
cwnd<ssthresh two segm
• Goal: double cwnd ents
Slow Start cwnd <= ssthresh; cwnd doubles per RTT cwnd+=1MSS per ACK
• cwnd = 1 MSS
§ why resetting?
• heavy loss detected
Pkt 5
)
ack5 (4 dup
th
5 6 7 8 9
5
Fast recovery w/ additional dup ACK (upon 4th dup)
10
ssh = 2, cwnd = 5 +1 =6 Pkt 10
send pkt 10
ack10 10
5 6 7 8 9 10 ack11
10 11 11
Pkt 11
11
Slow start also upon ack10 12 pkt 12
12
ssh =2 cwnd =2 + 1 = 3
Send new packet 12
10 11 12 ack 11
Pkt 13
Congestion avoidance upon ack11 13 13
ssh =2
Ack12
11 12 13
Pkt 14
Congestion avoidance upon ack 12 14 14
ssh =2
Ack13
12 13 14
Pkt 15
Congestion avoidance upon ack 13 15
16 Pkt 16 15
ssh =2 cwnd = 3 + 3/3=4 16
Send packets 15, 16 Ack14
16
Ack15 Ack
13 14 15 16 Ack17
Network IP IP
TCP handshake
(transport layer) QUIC handshake
data
TLS handshake
(security)
data
GET GET
HTTP
GET QUIC QUIC QUIC QUIC QUIC QUIC
encrypt encrypt encrypt encrypt encrypt encrypt
QUIC QUIC QUIC QUIC QUIC QUIC
TLS encryption TLS encryption RDT RDT RDT RDT
error!
RDT RDT