Chapter 3 V6.01
Chapter 3 V6.01
Transport Layer
lo
gi
transport protocols run in
ca
end systems
le
nd
send side: breaks app
-e
d n
messages into segments,
tra
passes to network layer
ns
po
rcv side: reassembles
t r
segments into messages, application
passes to app layer transport
network
more than one transport data link
physical
protocol available to apps
Internet: TCP and UDP
lo
data link physical
gi
physical
flow control
ca
network
le
data link
nd
connection setup physical
-e
n
network
d
unreliable, unordered
tra
data link
physical
ns
delivery: UDP
po
network
data link
r t
physical
no-frills extension of network
data link application
“ best-effort” IP physical
network
data link
transport
network
data link
services not
physical
physical
available:
delay guarantees
bandwidth guarantees
Transport Layer 3-6
Chapter 3 outline
3.1 transport-layer 3.5 connection-oriented
services transport: TCP
3.2 multiplexing and segment structure
demultiplexing reliable data transfer
3.3 connectionless flow control
transport: UDP connection
management
3.4 principles of
reliable data 3.6 principles of
transfer congestion control
3.7 TCP congestion
control
application
length checksum
why is there a UDP?
no connection
application establishment (which
data can add delay)
(payload) simple: no connection
state at sender, receiver
small header size
no congestion control:
UDP segment format UDP can blast away as
fast as desired
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
send receive
side side
sender receiver
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)
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)
L 8000 bits
Dtrans = R = = 8 microsecs
109 bits/sec
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
User
types
‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
300
(milliseconds)
RTT
250
RTT (milliseconds)
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) Transport Layer 3-62
SampleRTT Estimated RTT
TCP round trip time, timeout
timeout interval: EstimatedRTT plus “ safety
margin”
large variation in EstimatedRTT -> larger safety margin
estimate SampleRTT deviation from EstimatedRTT:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeo
ACK=100
ut
ut
X
ACK=100
ACK=120
SendBase=120
X
ut
ACK=120
cumulative ACK
Transport Layer 3-69
TCP ACK generation [RFC 1122, RFC 2581]
ACK=100
timeo
ACK=100
ut
ACK=100
ACK=100
Seq=100, 20 bytes of data
IP
flow control code
receiver controls sender, so
sender won’ t overflow
receiver’ s buffer by from sender
transmitting too much, too fast
receiver protocol stack
network network
2-way handshake:
Q: will 2-way handshake
always work in network?
variable delays
Let’s talk retransmitted messages (e.g.
ESTAB req_conn(x)) due to message
OK loss
ESTAB message reordering
can’ t “ see” other side
choose x
req_conn(x)
ESTAB
acc_conn(x)
ESTAB
choose x choose x
req_conn(x) req_conn(x)
ESTAB ESTAB
retransmit acc_conn(x) retransmit acc_conn(x)
req_conn(x) req_conn(x)
ESTAB ESTAB
data(x+1) accept
req_conn(x)
retransmit data(x+1)
data(x+1)
connection connection
client x completes server x completes server
client
terminates forgets x terminates forgets x
req_conn(x)
ESTAB ESTAB
data(x+1) accept
half open connection! data(x+1)
(no client!)
Transport Layer 3-79
TCP 3-way handshake
Socket connectionSocket =
welcomeSocket.accept();
Socket clientSocket =
SYN(x) newSocket("hostname","port
number");
SYNACK(seq=y,ACKnum=x+1)
create new socket for listen SYN(seq=x)
communication back to client
SYN SYN
rcvd sent
SYNACK(seq=y,ACKnum=x+1)
ESTAB ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
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
R/2
delay
out
Host A
out
sender sends only when
router buffers available
in R/2
A no buffer space!
Host B
Transport Layer 3-89
Causes/costs of congestion: scenario
2
Idealization: known R/2
loss packets can be
lost, dropped at router when sending at R/2,
due to full buffers some packets are
out
retransmissions but
sender only resends if asymptotic goodput
packet known to be lost is still R/2 (why?)
in R/2
Host B
Transport Layer 3-90
Causes/costs of congestion: scenario
2
Realistic: duplicates R/2
packets can be lost,
dropped at router due to when sending at R/2,
some packets are
out
full buffers retransmissions
including duplicated
sender times out that are delivered!
prematurely, sending two in R/2
copies, both of which are
delivered in
timeout
copy out
'in
Host B
Transport Layer 3-91
Causes/costs of congestion: scenario
2
Realistic: duplicates R/2
packets can be lost,
dropped at router due to when sending at R/2,
some packets are
out
full buffers retransmissions
including duplicated
sender times out that are delivered!
prematurely, sending two in R/2
copies, both of which are
delivered
“ costs” of congestion:
more work (retrans) for given “ goodput”
unneeded retransmissions: link carries multiple copies
of pkt
decreasing goodput
Host D
Host C
in’ C/2
end-end network-assisted
congestion congestion control:
control: routers provide
no explicit feedback feedback to end
from network systems
congestion inferred single bit indicating
from end-system
observed loss, congestion (SNA,
delay DECbit, TCP/IP
approach taken by ECN, ATM)
TCP explicit rate for
sender to send at
Transport Layer 3-95
Case study: ATM ABR congestion
control
ABR: available bit RM (resource
rate: management) cells:
sent by sender, interspersed
“ elastic service” with data cells
if sender’ s path bits in RM cell set by switches
“ underloaded” : (“ network-assisted” )
sender should use NI bit: no increase in rate
(mild congestion)
available bandwidth
CI bit: congestion
if sender’ s path indication
congested: RM cells returned to sender
sender throttled to by receiver, with bits intact
minimum
guaranteed rate
time
Transport Layer 3-99
TCP Congestion Control:
details
sender sequence number space
cwnd TCP sending rate:
roughly: send cwnd
bytes, wait RTT for
last byte last byte ACKS, then send
ACKed sent, not-
yet ACKed
sent more bytes
(“in-flight”)
cwnd
sender limits transmission: rate ~
~ bytes/sec
RTT
LastByteSent- < cwnd
LastByteAcked
cwnd is dynamic, function of
perceived network congestion
RTT
loss event:
initially cwnd = 1 MSS two segm
ents
double cwnd every RTT
done by incrementing
cwnd for every ACK four segm
ents
received
summary: initial rate is
slow but ramps up
exponentially fast time
Implementation:
variable ssthresh
on loss event, ssthresh
is set to 1/2 of cwnd just
before loss event
W/2
TCP connection 1
bottleneck
router
capacity R
TCP connection 2
Connection 1 throughput R
Transport Layer 3-108
Fairness (more)
Fairness and UDP Fairness, parallel TCP
multimedia apps connections
application can open
often do not use
TCP multiple parallel
do not want rate connections between two
throttled by hosts
congestion control web browsers do this
instead use UDP: e.g., link of rate R with 9
send audio/video at existing connections:
constant rate, new app asks for 1 TCP, gets
tolerate packet loss rate R/10
new app asks for 11 TCPs, gets
R/2