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). 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 represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we’d like people to use our book!) 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 note our copyright of this material.
Computer Networking: A Top Down Approach 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
Thanks and enjoy! JFK/KWR All material copyright 1996-2010 J.F Kurose and K.W. Ross, All Rights Reserved Transport Layer
3-1
Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer
3.5 Connection-oriented transport: TCP
segment structure reliable data transfer flow control connection management
3.6 Principles of congestion control 3.7 TCP congestion control
Transport Layer
3-2
Principles of Congestion Control Congestion:
informally: “too many sources sending too much data too fast for network to handle” different from flow control! manifestations: lost packets (buffer overflow at routers) long delays (queueing in router buffers) a top-10 problem!
Transport Layer
3-3
Causes/costs of congestion: scenario 1
two senders, two receivers one router, infinite buffers no retransmission
Host A
Host B
λout
λin : original data
unlimited shared output link buffers
large delays when congested maximum achievable throughput Transport Layer
3-4
Causes/costs of congestion: scenario 2
one router, finite buffers sender retransmission of timed-out packet application-layer input = application-layer output: λin = λout transport-layer input includes retransmissions : λ‘in λin λin : original data λ'in: original data, plus
λout
retransmitted data
Host B Host A
finite shared output link buffers Transport Layer
3-5
Congestion scenario 2a: ideal case sender sends only when router buffers available
λout
R/2
λin
λin : original data λ'in: original data, plus
copy
R/2
λout
retransmitted data
Host B Host A
free buffer space!
finite shared output link buffers Transport Layer
3-6
Congestion scenario 2b: known loss
packets may get dropped at router due to full buffers sometimes lost
sender only resends if packet known to be lost (admittedly idealized) λin : original data λ'in: original data, plus
copy
λout
retransmitted data
Host B Host A
no buffer space!
Transport Layer
3-7
Congestion scenario 2b: known loss packets may get dropped at router due to full buffers sometimes not lost
sender only resends if packet known to be lost (admittedly idealized)
R/2
when sending at R/ 2, some packets are retransmissions but asymptotic goodput is still R/2 (why?)
λout
λin
λin : original data λ'in: original data, plus
R/2
λout
retransmitted data
Host B Host A
free buffer space!
Transport Layer
3-8
Congestion scenario 2c: duplicates
packets may get dropped at router due to full buffers sender times out prematurely, sending two copies, both of which are delivered
R/2
λin
λin λ'in
timeout copy
when sending at R/ 2, some packets are retransmissions including duplicated that are delivered!
λout
R/2
λout
Host B Host A
free buffer space!
Transport Layer
3-9
Congestion scenario 2c: duplicates
packets may get 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!
λout
λin
R/2
“costs” of congestion:
more work (retrans) for given “goodput” unneeded retransmissions: link carries multiple copies of pkt decreasing goodput
Transport Layer
3-10
Causes/costs of congestion: scenario 3
four senders multihop paths timeout/retransmit
Q: what happens as λ
in and λ
increase ? in
Host A
λin : original data
λout
λ'in : original data, plus retransmitted data
finite shared output link buffers
Host B
Transport Layer
3-11
Causes/costs of congestion: scenario 3 H o st A
λ o u t
H o st B
another “cost” of congestion: when packet dropped, any “upstream transmission capacity used for that packet was wasted! Transport Layer
3-12
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 (SNA, DECbit, TCP/IP ECN, ATM) explicit rate sender should send at
Transport Layer
3-13
Case study: ATM ABR congestion control ABR: available bit rate:
“elastic service” if sender’s path “underloaded”: sender should use available bandwidth if sender’s path congested: sender throttled to minimum guaranteed rate
RM (resource management) cells:
sent by sender, interspersed with data cells bits in RM cell set by switches (“network-assisted”) NI bit: no increase in rate (mild congestion) CI bit: congestion indication RM cells returned to sender by receiver, with bits intact
Transport Layer
3-14
Case study: ATM ABR congestion control
two-byte ER (explicit rate) field in RM cell
congested switch may lower ER value in cell sender’ send rate thus maximum supportable rate on path
EFCI bit in data cells: set to 1 in congested switch
if data cell preceding RM cell has EFCI set, sender sets CI bit in returned RM cell Transport Layer
3-15
Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer
3.5 Connection-oriented transport: TCP
segment structure reliable data transfer flow control connection management
3.6 Principles of congestion control 3.7 TCP congestion control
Transport Layer
3-16
TCP congestion control: additive increase, multiplicative decrease
approach: increase transmission rate (window size), probing for usable bandwidth, until loss occurs additive increase: increase cwnd by 1 MSS every RTT until loss detected multiplicative decrease: cut cwnd in half after loss
saw tooth behavior: probing for bandwidth
cwnd: congestion window size
congestion window
24 Kbytes
16 Kbytes
8 Kbytes
time time Transport Layer
3-17
TCP Congestion Control: details
sender limits transmission: LastByteSent-LastByteAcked ≤ cwnd
roughly, rate =
cwnd RTT
Bytes/sec
cwnd is dynamic, function of perceived network congestion
How does sender perceive congestion? loss event = timeout or 3 duplicate acks TCP sender reduces rate (cwnd) after loss event three mechanisms: AIMD slow start conservative after timeout events
Transport Layer
3-18
TCP Slow Start when connection begins, increase rate exponentially until first loss event: 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
Host A RTT
Host B one segm ent
two segm ents
four segm
ents
time
Transport Layer
3-19
Refinement: inferring loss
after 3 dup ACKs: cwnd is cut in half window then grows linearly but after timeout event: cwnd instead set to 1 MSS; window then grows exponentially to a threshold, then grows linearly
Philosophy: 3
dup ACKs indicates network capable of delivering some segments timeout indicates a “more alarming” congestion scenario
Transport Layer
3-20
Refinement Q: when should the exponential increase switch to linear? A: when cwnd gets to 1/2 of its value before timeout.
Implementation:
variable ssthresh on loss event, ssthresh is set to 1/2 of cwnd just before loss event
Transport Layer
3-21
Summary: TCP Congestion Control duplicate ACK dupACKcount++ Λ
cwnd = 1 MSS ssthresh = 64 KB dupACKcount = 0
slow start
timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment
dupACKcount == 3 ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment
New ACK! new ACK cwnd = cwnd+MSS dupACKcount = 0 transmit new segment(s), as allowed cwnd > ssthresh Λ
timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment
timeout ssthresh = cwnd/2 cwnd = 1 dupACKcount = 0 retransmit missing segment
New ACK!
.
new ACK cwnd = cwnd + MSS (MSS/cwnd) dupACKcount = 0 transmit new segment(s), as allowed
congestion avoidance duplicate ACK dupACKcount++
New ACK! New ACK cwnd = ssthresh dupACKcount = 0
fast recovery
dupACKcount == 3 ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment
duplicate ACK cwnd = cwnd + MSS transmit new segment(s), as allowed
Transport Layer
3-22
TCP throughput 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-23
TCP Futures: TCP over “long, fat pipes”
example: 1500 byte segments, 100ms RTT, want 10 Gbps throughput requires window size W = 83,333 in-flight segments throughput in terms of loss rate:
1.22⋅ MSS RTT L
➜ L = 2·10-10 Wow – a very small loss rate! new versions of TCP for high-speed
Transport Layer
3-24
TCP Fairness fairness goal: if K TCP sessions share same bottleneck link of bandwidth R, each should have average rate of R/K TCP connection 1
TCP connection 2
bottleneck router capacity R
Transport Layer
3-25
Why is TCP fair? two competing sessions:
additive increase gives slope of 1, as throughout increases multiplicative decrease decreases throughput proportionally equal bandwidth share
R Connection 2 throughput
loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase
Connection 1 throughput R Transport Layer
3-26
Fairness (more) Fairness and UDP multimedia apps often do not use TCP
do not want rate throttled by congestion control
instead use UDP:
pump audio/video at constant rate, tolerate packet loss
Fairness and parallel TCP connections nothing prevents app from opening parallel connections between 2 hosts. web browsers do this example: link of rate R supporting 9 connections;
new app asks for 1 TCP, gets rate R/10 new app asks for 11 TCPs, gets R/2 !
Transport Layer
3-27
Chapter 3: Summary
principles behind transport layer services: multiplexing, demultiplexing reliable data transfer flow control congestion control instantiation and implementation in the Internet UDP TCP
Next: leaving the network “edge” (application, transport layers) into the network “core” Transport Layer
3-28