3rd Edition: Chapter 3

Download Report

Transcript 3rd Edition: Chapter 3

Chapter 3: Transport Layer
Part B
Course on Computer Communication
and Networks, CTH/GU
The slides are adaptation of the slides made available by
the authors of the course’s main textbook
3: Transport Layer 3b-1
TCP: Overview

RFCs: 793,1122,1323, 2018, 5681
point-to-point:

 bi-directional data flow in same
connection
 MSS: maximum segment size
 one sender, one receiver

reliable, in-order byte steam:

 no “message boundaries”

full duplex data:
connection-oriented:
 handshaking (exchange of control
msgs) inits sender & receiver state
before data exchange
pipelined:
 TCP congestion and flow
control set window size

flow control:
 sender will not overwhelm
receiver

socket
door
application
writes data
application
reads data
TCP
send buffer
TCP
receive buffer
socket
door
congestion control:
 sender will not flood network
with traffic (but still try to
maximize throughput)
segment
Transport Layer 3-2
TCP segment structure
32 bits
URG: urgent data
(generally not used)
source port #
dest port #
sequence number
ACK: ACK # valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
Internet
checksum
(as in UDP)
acknowledgement number
head not
UAP R S F
len used
checksum
counting
by bytes
of data
(not segments!)
receive window
Urg data pointer
options (variable length)
# bytes
rcvr willing
to accept
(flow control)
application
data
(variable length)
Transport Layer 3-3
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-4
TCP seq. numbers, ACKs
outgoing segment from sender
sequence numbers:
 “number” of first byte in
segment’s data
acknowledgements:
 seq # of next byte expected
from other side
 cumulative ACK
Q: how does receiver handle
out-of-order segments?
 A: TCP spec doesn’t say, up to implementor (keep,
drop, …)
source port #
dest port #
sequence number
acknowledgement number
rwnd
checksum
window size
N
sender sequence number space
sent
ACKed
sent, not- usable not
yet ACKed but not usable
yet sent
(“inflight”)
incoming segment to sender
source port #
dest port #
sequence number
acknowledgement number
rwnd
A
checksum
Transport Layer 3-5
TCP seq. numbers, ACKs
Host B
Host A
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
simple telnet scenario
Transport Layer 3-6
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-7
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
connection state: ESTAB
connection variables:
seq # client-to-server
server-to-client
rcvBuffer size
at server,client
connection state: ESTAB
connection Variables:
seq # client-to-server
server-to-client
rcvBuffer size
at server,client
network
network
Socket clientSocket =
newSocket("hostname","port
number");
Socket connectionSocket =
welcomeSocket.accept();
Transport Layer 3-8
Setting up a connection:
TCP 3-way handshake
client state
server state
LISTEN
choose init seq num, x
send TCP SYN msg
SYNSENT
received SYN/ACK(x)
indicates server is live;
ESTAB
send ACK for SYN/ACK;
this segment may contain
client-to-server data
SYN=1, Seq=x
choose init seq num, y
send TCP SYN/ACK
SYN RCVD
msg, acking SYN
SYN=1, Seq=y
ACK=1; ACKnum=x+1
ACK=1, ACKnum=y+1
received ACK(y)
indicates client is live
ESTAB
Transport Layer 3-9
TCP: closing a connection

client, server both close their side of the
connection
 send TCP segment with FIN bit = 1
respond to received FIN with ACK
 on receiving FIN, ACK can be combined with own FIN
simultaneous FIN exchanges can be handled

RST: alternative way to close connection
immediately, when error occurs
Transport Layer 3-11
TCP: client closing a connection
client state
server state
ESTAB
ESTAB
clientSocket.close()
FIN_WAIT_1
FIN_WAIT_2
can no longer
send but can
receive data
FIN=1, seq=x
CLOSE_WAIT
ACK=1; ACKnum=x+1
wait for server
close
FIN=1, seq=y
TIME_WAIT
timed wait
(typically 30s)
can still
send data
LAST_ACK
can no longer
send data
ACK=1; ACKnum=y+1
CLOSED
CLOSED
Transport Layer 3-12
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-14
TCP flow control
application
might remove data from
TCP socket buffers ….
… slower than TCP
is delivering
(i.e. slower than
sender is sending)
application
process
application
TCP
code
IP
code
flow control
receiver controls sender, so
sender won’t overflow
receiver’s buffer by transmitting
too much, too fast
OS
TCP socket
receiver buffers
from sender
receiver protocol stack
Transport Layer 3-15
TCP flow control

receiver “advertises” free
buffer space by including rwnd
value in TCP header of
receiver-to-sender segments
 RcvBuffer size set via
socket options (typical default is
4096 bytes)
 many operating systems
autoadjust RcvBuffer


sender limits amount of
unacked (“in-flight”) data to
receiver’s rwnd value
to application process
RcvBuffer
rwnd
buffered data
free buffer space
TCP segment payloads
receiver-side buffering
guarantees receive buffer will
not overflow
Transport Layer 3-16
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-17
TCP round trip time, timeout
Q: how to set TCP
timeout value?

Q: how to estimate RTT?

longer than RTT
 but RTT varies


too short: premature
timeout, unnecessary
retransmissions
too long: slow reaction
to segment loss

SampleRTT: measured
time from segment
transmission until ACK
receipt
 ignore retransmissions
SampleRTT will vary, want
a “smoother”
estimatedRTT
 average several recent
measurements, not just
current SampleRTT
Transport Layer 3-18
TCP round trip time, timeout
EstimatedRTT = (1-)*EstimatedRTT + *SampleRTT

RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
RTT (milliseconds)

exponential weighted moving average
influence of past sample decreases exponentially fast
typical value:  = 0.125
RTT (milliseconds)

300
250
200
sampleRTT
150
EstimatedRTT
100
1
8
15
22
29
36
43
50
57
64
71
time (seconnds)
time (seconds)
SampleRTT
Estimated RTT
78
85
92
99
106
Transport Layer 3-19
TCP round trip time, timeout

timeout: EstimatedRTT plus “safety margin”
 large variation in EstimatedRTT -> larger safety margin

estimate SampleRTT deviation from EstimatedRTT:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically,  = 0.25)
TimeoutInterval = EstimatedRTT + 4*DevRTT
estimated RTT
“safety margin”
Transport Layer 3-20
TCP: retransmission scenarios
Host B
Host A
Host B
Host A
SendBase=92
X
ACK=100
Seq=92, 8 bytes of data
timeout
timeout
Seq=92, 8 bytes of data
Seq=100, 20 bytes of data
ACK=100
ACK=120
Seq=92, 8 bytes of data
SendBase=100
ACK=100
Seq=92, 8
bytes of data
SendBase=120
ACK=120
SendBase=120
lost ACK scenario
premature timeout
Transport Layer 3-21
TCP ACK generation
[RFC 1122, RFC 5681]
Event
TCP Receiver action
in-order segment arrival,
no gaps,
everything else already ACKed
Delayed ACK. Wait up to 500ms
for next segment. If no next segment,
send ACK (windows 200 ms)
in-order segment arrival,
no gaps,
one delayed ACK pending
immediately send single
cumulative ACK
out-of-order segment arrival
higher-than-expect seq. #
gap detected
send (duplicate) ACK, indicating seq. #
of next expected byte
arrival of segment that
partially or completely fills gap
immediate send ACK if segment starts
at lower end of gap
3: Transport Layer 3b-23
TCP fast retransmit (RFC 5681)

time-out period often
relatively long:
 long delay before
resending lost packet

IMPROVEMENT: detect
lost segments via
duplicate ACKs
TCP fast retransmit
if sender receives 3
duplicate ACKs for
same data
•
resend unacked
segment with
smallest seq #
 sender sends many
 likely that unacked
segments (pipelining)
segment lost, so don’t
 if a segment is lost, there
wait for timeout
will likely be many
duplicate ACKs.
Implicit NAK!
Q: Why need at
least 3?
Transport Layer 3b-25
TCP fast retransmit
Host B
Host A
Seq=92, 8 bytes of data
Seq=100, 20 bytes of data
X
timeout
ACK=100
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
fast retransmit after sender
receipt of triple duplicate ACK
Transport Layer 3-26
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-27
Principles of congestion control
congestion:


informally: “too many sources sending too much
data too fast for network to handle”
manifestations:
 lost packets (buffer overflow at routers)
 long delays (queueing in router buffers)
different from
flow control!
Causes/costs of congestion: scenario 1


lout
Host A
unlimited shared
output link buffers
R/2
delay

two senders, two
receivers, average rate of
data is lin
one router, infinite
buffers
output link capacity: R
(no retransmission in the
“picture” yet)
Host B
throughput:
lout

original data: lin

lin R/2
maximum per-connection
throughput: R/2

lin R/2
large delays as arrival rate, lin,
approaches capacity
Transport Layer 3-29
Causes/costs of congestion: scenario 2


packets can be lost, dropped
at router due to full buffers
sender times out prematurely,
sending two copies, both of
which are delivered
R/2
when sending at R/2,
some packets are
retransmissions
including duplicated
that are delivered!
lout
Realistic: duplicates
lin
R/2
“costs” of congestion:


more work (retrans) for given “goodput” (application-level
throughput)
unneeded retransmissions: links carry multiple copies of pkt
Transport Layer 3-31
Causes/costs of congestion: scenario 3
lout
C/2
lin’
another “cost” of congestion:
 when packets dropped, any “upstream
transmission capacity used for that packet was
wasted!
Transport Layer 3-32
Approaches towards congestion control
two broad approaches towards congestion control:
end-end congestion
control:



no explicit feedback
from network
congestion inferred
from end-system
observed loss, delay
approach taken by TCP
network-assisted
congestion control:

routers provide
feedback to end systems
 single bit indicating
congestion
 explicit rate for
sender to send at
Transport Layer 3-33
Roadmap Transport Layer





transport layer services
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data transfer
connection-oriented transport: TCP
 reliable transfer
• Acknowledgements
• Connection management
• Flow control and buffer space
• + timeout: how to estimate?
 Congestion control
• Principles
• TCP congestion control
3: Transport Layer 3b-34
TCP congestion control:
additive increase multiplicative decrease
end-end control (no network assistance), sender limits transmission
How does sender perceive congestion?
cwnd
 loss = timeout or 3 duplicate acks
~
bytes/sec
rate ~
 TCP sender reduces rate (CongWin) then
RTT

AIMD saw tooth
behavior: probing
for bandwidth
cwnd: TCP sender
congestion window size
 additive increase: increase cwnd by 1 MSS every RTT until loss
detected
 multiplicative decrease: cut cwnd in half after loss
 To start with: slow start
additively increase window size …
…. until loss occurs (then cut window in half)
time
Transport Layer 3-35
TCP Slow Start
when connection begins,
increase rate
exponentially until first
loss event:
Host B
RTT

Host A
 initially cwnd = 1 MSS
 double cwnd every RTT
 done by incrementing
cwnd for every ACK
received

summary: initial rate is
slow but ramps up
exponentially fast
time
Transport Layer 3-37
TCP cwnd: from exp. to linear growth
Q: when should the
exponential
increase switch to
linear?
A: when cwnd gets to
1/2 of its value
before timeout.
Implementation:


variable ssthresh (slow start
threshold)
on loss event, ssthresh is set to
1/2 of cwnd just before loss event
Transport Layer 3-39
Fast recovery (Reno)
Session’s experience
3-40
Chapter 3: summary

principles behind transport
layer services:
 multiplexing, demultiplexing
 reliable data transfer
 flow control
 congestion control

instantiation, implementation
in the Internet
next:
 leaving the network
“edge” (application,
transport layers)
 into the network
“core”
 UDP
 TCP
Transport Layer 3-42
Some review questions on this part







Describe TCP’s flow control
Why does TCp do fast retransmit upon a 3rd ack and not a 2nd?
Describe TCP’s congestion control: principle, method for detection
of congestion, reaction.
Can a TCP’s session sending rate increase indefinitely?
Why does TCP need connection management?
Why does TCP use handshaking in the start and the end of
connection?
Can an application have reliable data transfer if it uses UDP? How
or why not?
3: Transport Layer 3b-43
Reading instructions chapter 3


KuroseRoss book
Careful
Quick
3.1, 3.2, 3.4-3.7
3.3
Other resources (further, optional study)
 Eddie Kohler, Mark Handley, and Sally Floyd. 2006. Designing DCCP: congestion
control without reliability. SIGCOMM Comput. Commun. Rev. 36, 4 (August 2006), 27-38.
DOI=10.1145/1151659.1159918 http://doi.acm.org/10.1145/1151659.1159918
 http://research.microsoft.com/apps/video/default.aspx?id=104005
Transport Layer 3-44
TCP delay modeling (slow start
–
related)
Q: How long does it take to
Notation, assumptions:
receive an object from a Web  Assume one link between client
server after sending a
and server of rate R
request?
 Assume: fixed congestion


TCP connection establishment
data transfer delay




window, W segments
S: MSS (bits)
O: object size (bits)
no retransmissions (no loss, no
corruption)
Receiver has unbounded buffer
3: Transport Layer 3b-51
TCP delay Modeling: simplified, fixed
window
K:= O/WS
Case 1: WS/R > RTT + S/R:
ACK for first segment in window
returns before window’s worth
of data nsent
delay = 2RTT + O/R
delay 
Case 2: WS/R < RTT + S/R:
wait for ACK after sending
window’s worth of data sent
delay = 2RTT + O/R
+ (K-1)[S/R + RTT - WS/R]
O
P
 2 RTT   idleTim ep
3: Transport Layer 3b-52
TCP Delay Modeling: Slow Start
initiate TCP
connection
Delay components:
• 2 RTT for connection estab request
object
and request
• O/R to transmit object
RTT
• time server idles due to slow
start
Server idles:
P = min{K-1,Q} times
where
- Q = #times server stalls
until cong. window is larger
than a “full-utilization” window
(if the object were of
object
unbounded size).
delivered
- K = #(incremental-sized)
congestion-windows that
“cover” the object.
first window
= S/R
second window
= 2S/R
third window
= 4S/R
fourth window
= 8S/R
complete
transmission
Example:
• O/S = 15 segments
time at
server
time at
•
K
=
4
windows
client
•Q=2
• Server idles P = min{K-1,Q} = 2 times
3: Transport Layer 3b-53
TCP Delay Modeling (slow start - cont)
S
 RTT  timefrom when server startstosend segment
R
untilserver receivesacknowledgement
initiate TCP
connection
2k 1
S
 time to transmit the kth window
R

request
object
S
k 1 S 

RTT

2
R
  idle timeafter thekth window
R


first window
= S/R
RTT
second window
= 2S/R
third window
= 4S/R
P
O
delay   2 RTT   idleTim ep
R
p 1
P
O
S
S
  2 RTT   [  RTT  2 k 1 ]
R
R
k 1 R
O
S
S
  2 RTT  P[ RTT  ]  (2 P  1)
R
R
R
fourth window
= 8S/R
complete
transmission
object
delivered
time at
client
time at
server
3: Transport Layer 3b-54
TCP Delay Modeling (4)
Recall K = number of windows that cover object
How do we calculate K ?
K  min{k : 20 S  21 S    2 k 1 S  O}
 min{k : 20  21    2 k 1  O / S}
O
 min{k : 2  1  }
S
O
 min{k : k  log2 (  1)}
S
O


 log2 (  1)
S


k
Calculation of Q, number of idles for infinite-size object,
is similar.
3: Transport Layer 3b-55