Transport Layer Issues

advertisement
CMPT 771
InternetArchitecture and
Protocols
Transport Layer
Issues
Spring 2015
CMPT771 Transport Layer
1
Transport Layer Issues
Contents:
 overview principles
behind transport
layer services:




multiplexing/demultipl
exing
reliable data transfer
flow control
congestion control
 TCP Performance analysis
 Transport protocols for
media applications
CMPT771 Transport Layer
2
But first,
a general overview of networks (and the Internet)
Telecommunication
networks
Circuit-switched
networks
FDM
TDM
Packet-switched
networks
Networks
with VCs
Datagram
Networks
CMPT771 Transport Layer
3
What Is the Internet?
 A network of networks, joining many government, university
and private computers together and providing an
infrastructure for the use of E-mail, bulletin boards, file
archives, hypertext documents, databases and other
computational resources
 The vast collection of computer networks which form and
act as a single huge network for transport of data and
messages across distances which can be anywhere from the
same office to anywhere in the world.
Written by William F. Slater, III
1996
President of the Chicago Chapter of the Internet Society
CMPT771 Transport Layer
Copyright 2002, William F. Slater, III, Chicago, IL, USA
4
What is the Internet?
 The largest network of networks in the world.
 Uses TCP/IP protocols and packet switching .
 Runs on any communications substrate.
From Dr. Vinton Cerf,
Co-Creator of TCP/IP
CMPT771 Transport Layer
5
Brief History of the Internet
 1968 - DARPA (Defense Advanced Research Projects Agency)
contracts with BBN (Bolt, Beranek & Newman) to create ARPAnet
 1970 - First five nodes:





UCLA
Stanford
UC Santa Barbara
U of Utah, and
BBN
 1974 - TCP specification by Vint Cerf
 1984 – On January 1, the Internet with its 1000 hosts
converts en masse to using TCP/IP for its messaging
CMPT771 Transport Layer
6
Internet Evolution/Organization
CMPT771 Transport Layer
7
ISO 7-layer reference model
application
application
transport
presentation
network
session
link
physical
CMPT771 Transport Layer
8
Internet protocol stack
 application: supporting network
applications

FTP, SMTP, STTP
application
 transport: host-host data transfer
 TCP, UDP
transport
 network: routing of datagrams from
network
source to destination

IP, routing protocols
 link: data transfer between
neighboring network elements

link
physical
PPP, Ethernet
 physical: bits “on the wire”
CMPT771 Transport Layer
9
Internet Standardization Process
 All standards of the Internet are published as RFC
(Request for Comments)



but not all RFCs are Internet Standards !
available: http://www.ietf.org
Till now: RFC7026 (3635 Sept 2003/7439 Jan 2015)
 A typical (but not the only) way of standardization:
 Internet draft
 RFC
 Proposed standard
 Draft standard (requires 2 working implementations)
 Internet standard (declared by Internet Architecture
Board)
CMPT771 Transport Layer
10
Why the Internet ?
 Why not other networks ?
- Telephone
- Wireless networks
- Optical networks
…
 I have two reasons …
CMPT771 Transport Layer
11
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTP/RTCP
CMPT771 Transport Layer
12
Transport layer – the other side of the door
host or
server
host or
server
process
controlled by
app developer
process
socket
socket
TCP with
buffers,
variables
Internet
TCP with
buffers,
variables
controlled
by OS
 API: (1) choose transport protocol; (2) set parameters
CMPT771 Transport Layer
13
Transport services and protocols
 provide logical
communication between
app processes running on
different hosts
 transport protocols run
in end systems
 send side: breaks app
messages into
segments, passes to
network layer
 rcv side: reassembles
segments into
messages, passes to
app layer
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
application
transport
network
data link
physical
CMPT771 Transport Layer
14
Transport vs. network layer
 network layer: logical communication between
devices

Point-to-point
 transport layer: logical communication between
processes/end-hosts


relies on and enhances, network layer services
also called “End-to-End”
J. Saltzer, D. Reed, and D. Clark. End-to-end arguments in system design.
ACM Transactions on Computer Systems, 2(4):277--288, 1984.
CMPT771 Transport Layer
15
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTSP/RTP/RTCP
CMPT771 Transport Layer
16
How demultiplexing works
 host receives IP datagrams
each datagram has source
IP address, destination IP
address
 each datagram carries 1
transport-layer segment
 each segment has source,
destination port number
(recall: well-known port
numbers for specific
applications)
 host uses IP addresses & port
numbers to direct segment to
appropriate socket

32 bits
source port #
dest port #
other header fields
application
data
(message)
TCP/UDP segment format
CMPT771 Transport Layer
17
Connection-oriented demux
 TCP socket identified by 4-tuple:
 source IP address
 source port number
 dest IP address
 dest port number
 recv host uses all four values to direct
segment to appropriate socket
CMPT771 Transport Layer
18
Connection-oriented demux
P2
P3
SP: 80
SP: 80
DP: 9157
DP: 5775
SP: 9157
client
IP: A
DP: 80
P1
P1
P4
SP: 5775
server
IP: C
DP: 80
Client
IP:B
CMPT771 Transport Layer
19
Connection-oriented demux
 TCP socket identified
by 4-tuple:




source IP address
source port number
dest IP address
dest port number
Q:
 Why use 4-tuple?
 recv host uses all four
values to direct
segment to appropriate
socket
CMPT771 Transport Layer
20
Connection-oriented demux
 TCP socket identified
by 4-tuple:




source IP address
source port number
dest IP address
dest port number
 recv host uses all four
values to direct
segment to appropriate
socket
Examples:
 Server host may support
many simultaneous TCP
sockets:

each socket identified by
its own 4-tuple
 Web servers have
different sockets for
each connecting client

non-persistent HTTP will
have different socket for
each request
CMPT771 Transport Layer
21
UDP: User Datagram Protocol
 “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
[RFC 768]
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
CMPT771 Transport Layer
22
UDP: more
 often used for streaming
multimedia apps
 loss tolerant
 rate sensitive
 other UDP uses
 DNS – why ?
Length, in
bytes of UDP
segment,
including
header
 reliable transfer over UDP:
add reliability at
application layer
 application-specific
error recovery!
32 bits
source port #
dest port #
length
checksum
Application
data
(message)
UDP segment format
CMPT771 Transport Layer
23
Demux:
Connection vs Connection-less
Multi-party video conference
CMPT771 Transport Layer
24
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTSP/RTP/RTCP
CMPT771 Transport Layer
25
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)
CMPT771 Transport Layer
26
Reliable data transfer: getting started
rdt_send(): called from above,
(e.g., by app.). Passed data to
deliver to receiver upper layer
send
side
udt_send(): called by rdt,
to transfer packet over
unreliable channel to receiver
deliver_data(): called by
rdt to deliver data to upper
receive
side
rdt_rcv(): called when packet
arrives on rcv-side of channel
CMPT771 Transport Layer
27
Reliable data transfer: getting started
We’ll:
 incrementally develop sender, receiver sides of
reliable data transfer protocol (rdt)
 What result in unreliability ?
Bit error
 Packet loss – congestion
 Delay – too long

CMPT771 Transport Layer
28
rdt2.0: channel with bit errors
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for
Wait for
call from
ACK or
udt_send(sndpkt)
above
NAK
rdt_rcv(rcvpkt) && isACK(rcvpkt)
L
sender
receiver
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Wait for
call from
below
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
CMPT771 Transport Layer
29
rdt2.0 has a fatal flaw!
What happens if
ACK/NAK corrupted?
 sender doesn’t know what
happened at receiver!
What to do?
 sender NAKs receiver’s
ACK/NAK? What if sender
NAK corrupted?
 retransmit, assuming it is
NAK …
 but this might cause
retransmission of correctly
received pkt!
- packet duplications !
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
CMPT771 Transport Layer
30
rdt2.1: sender, handles garbled ACK/NAKs
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait
for
Wait for
isNAK(rcvpkt) )
ACK or
call 0 from
udt_send(sndpkt)
NAK 0
above
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
L
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
udt_send(sndpkt)
L
Wait for
ACK or
NAK 1
Wait for
call 1 from
above
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
CMPT771 Transport Layer
31
rdt2.1: receiver, handles garbled ACK/NAKs
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq1(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
Wait for
0 from
below
Wait for
1 from
below
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
CMPT771 Transport Layer
32
rdt 2.1 in action
sender
send pkt0
receiver
pkt
ACK
rcv ACK0
send pkt1
pkt
ACK
rcv ACK1
send pkt0
pkt
ACK
rcv pkt0
send ACK0
rcv pkt1
send ACK1
rcv pkt0
send ACK0
a) operation with no corruption
sender
send pkt0
receiver
pkt
ACK
rcv pkt0
send ACK0
rcv ACK0
pkt
send pkt1 X (corrupted)
rcv pkt1
send NAK1
NAK
rcv NAK1
resend pkt1
pkt
ACK
rcv pkt1
send ACK1
b) packet corrupted
CMPT771 Transport Layer
33
rdt 2.1 in action (cont)
receiver
sender
send pkt0
pkt
rcv pkt0
ACK send ACK0
(corrupted) X
rcv ACK0
pkt
resend pkt0
rcv pkt0
send ACK0
ACK
rcv ACK0
send pkt1
pkt
ACK
rcv pkt1
send ACK1
c) ACK corrupted
CMPT771 Transport Layer
34
rdt2.2: a NAK-free protocol
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for
Wait for
isACK(rcvpkt,1) )
ACK
call 0 from
0
udt_send(sndpkt)
above
sender FSM
fragment
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
Wait for
0 from
below
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
receiver FSM
fragment
L
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
CMPT771 Transport Layer
35
rdt 2.2 in action
sender
send pkt0
receiver
pkt0
ACK0
rcv ACK0
send pkt1
pkt1
ACK1
rcv ACK1
send pkt0
pkt0
ACK0
rcv pkt0
send ACK0
rcv pkt1
send ACK1
rcv pkt0
send ACK0
a) operation with no corruption
sender
send pkt0
receiver
pkt0
ACK0
rcv pkt0
send ACK0
rcv ACK0
pkt1
send pkt1
X (corrupted)
rcv pkt1
send ACK0
ACK0
rcv ACK0
resend pkt1
pkt1
ACK1
rcv pkt1
send ACK1
b) packet corrupted
CMPT771 Transport Layer
36
rdt 2.2 in action (cont)
sender
send pkt0
receiver
pkt0
rcv pkt0
ACK0 send ACK0
(corrupted) X
rcv ACK0
pkt0
resend pkt0
rcv pkt0
send ACK0
ACK0
rcv ACK0
send pkt1
pkt1
ACK1
rcv pkt1
send ACK1
c) ACK corrupted
CMPT771 Transport Layer
37
rdt3.0 channels with errors and loss
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
L
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,1)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,0) )
timeout
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
stop_timer
stop_timer
timeout
udt_send(sndpkt)
start_timer
L
Wait
for
ACK0
Wait for
call 0from
above
L
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
Wait
for
ACK1
Wait for
call 1 from
above
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
L
Sender
CMPT771 Transport Layer
38
rdt3.0: Poor performance
sender
receiver
first packet bit transmitted, t = 0
last packet bit transmitted, t = L / R
first packet bit arrives
last packet bit arrives, send ACK
RTT
ACK arrives, send next
packet, t = RTT + L / R
stop and wait
Sender sends one packet,
then waits for receiver
response
Stop-and-Wait
U
sender
=
L/R
RTT + L / R
CMPT771 Transport Layer
39
Performance of rdt3.0
 example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet:
Ttransmit =
U




L (packet length in bits)
8kb/pkt
=
R (transmission rate, bps)
109 b/sec
sender
=
L/R
RTT + L / R
=
.008
30.008
= 8 microsec
= 0.00027
microsec
onds
U sender: utilization – fraction of time sender busy sending
1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link
network protocol limits use of physical resources!
microsec = 10-6sec millisec=ms=10-3s Gb, Mb, Kb
CMPT771 Transport Layer
40
Pipelined protocols
Pipelining: sender allows multiple, “in-flight”, yet-tobe-acknowledged pkts


range of sequence numbers must be increased
buffering at sender and/or receiver
CMPT771 Transport Layer
41
Pipelining: increased utilization
sender
receiver
first packet bit transmitted, t = 0
last bit transmitted, t = L / R
first packet bit arrives
last packet bit arrives, send ACK
last bit of 2nd packet arrives, send ACK
last bit of 3rd packet arrives, send ACK
RTT
ACK arrives, send next
packet, t = RTT + L / R
U
=
sender
3*L/R
RTT + L / R
=
.024
30.008
Increase utilization
by a factor of 3
= 0.0008
microsecon
ds
 Two generic forms of pipelined protocols: go-Back-N,
selective repeat
CMPT771 Transport Layer
42
Go-Back-N
Sender:
 k-bit seq # in pkt header
 “window” of up to N, consecutive unack’ed pkts allowed – sliding
window
 ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”
may deceive duplicate ACKs (see receiver)
 timer for the packet of send_base
 timeout(n): retransmit pkt n and all higher seq # pkts in window

CMPT771 Transport Layer
43
GBN: sender extended FSM
rdt_send(data)
L
base=1
nextseqnum=1
if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum)
start_timer
nextseqnum++
}
else
refuse_data(data)
Wait
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)
timeout
start_timer
udt_send(sndpkt[base])
udt_send(sndpkt[base+1])
…
udt_send(sndpkt[nextseqnum-1])
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_timer
CMPT771 Transport Layer
44
GBN: receiver extended FSM
default
udt_send(sndpkt)
L
Wait
expectedseqnum=1
sndpkt =
make_pkt( 0, ACK, chksum )
rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
&& hasseqnum(rcvpkt,expectedseqnum)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++
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!
 Re-ACK pkt with highest in-order seq #
CMPT771 Transport Layer
45
GBN in
action
CMPT771 Transport Layer
46
GBN: sender extended FSM
rdt_send(data)
L
base=1
nextseqnum=1
if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum)
start_timer
nextseqnum++
}
else
refuse_data(data)
Wait
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)
timeout
start_timer
udt_send(sndpkt[base])
udt_send(sndpkt[base+1])
…
udt_send(sndpkt[nextseqnum-1])
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_timer
CMPT771 Transport Layer
47
Receiver
Sender
GBN in
action
send pkt0
send pkt1
send pkt2
send pkt3
Cumulative ACK
rcv ACK0
send pkt4
rcv ACK1
send pkt5
(loss)X
(loss)X
(loss)X
rcv pkt0
send ACK0
rcv pkt1
send ACK1
rcv pkt2
send ACK2
rcv pkt3
send ACK3
rcv pkt4
send ACK4
rcv pkt5
send ACK5
rcv ACK5
send pkt6
send pkt7
send pkt8
send pkt9
CMPT771 Transport Layer
48
Receiver
Sender
GBN in
action
send pkt0
send pkt1
send pkt2
send pkt3
Cumulative ACK
rcv ACK0
send pkt4
rcv ACK1
send pkt5
(loss)X
(loss)X
(loss)X
rcv pkt0
send ACK0
rcv pkt1
send ACK1
rcv pkt2
send ACK2
rcv pkt3
send ACK3
rcv pkt4
send ACK4
rcv pkt5
send ACK5
rcv ACK5
send pkt6
send pkt7
send pkt8
send pkt9
CMPT771 Transport Layer
49
Sender
send pkt0
GBN in
action
Premature
timeout
send pkt1
send pkt2
Receiver
rcv pkt0
send ACK0
rcv pkt1
send ACK1
send pkt3
rcv ACK0
rcv pkt3,discard
send ACK1
send pkt4
rcv ACK1
rcv pkt2
send ACK2
rcv pkt4,discard
send ACK2
send pkt5
pkt2 timeout
send pkt2,3,4,5
rcv pkt5,discard
send ACK2
CMPT771 Transport Layer
50
Sender
send pkt0
GBN in
action
Premature
timeout
send pkt1
send pkt2
Receiver
rcv pkt0
send ACK0
rcv pkt1
send ACK1
send pkt3
rcv ACK0
rcv pkt3,discard
send ACK1
send pkt4
rcv ACK1
rcv pkt2
send ACK2
rcv pkt4,discard
send ACK2
send pkt5
pkt2 timeout
send pkt2,3,4,5
rcv pkt5,discard
send ACK2
CMPT771 Transport Layer
51
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
CMPT771 Transport Layer
52
Selective repeat: sender, receiver windows
CMPT771 Transport Layer
53
Selective repeat
sender
data from above :
receiver
pkt n in [rcvbase, rcvbase+N-1]
 if next available seq # in
 send ACK(n)
timeout(n):
 in-order: deliver (also
window, send pkt
 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 #
 out-of-order: buffer
deliver buffered, in-order
pkts), advance window to
next not-yet-received pkt
pkt n in
[rcvbase-N,rcvbase-1]
 ACK(n)
otherwise:
 ignore
CMPT771 Transport Layer
54
Selective repeat in action
CMPT771 Transport Layer
55
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? Will
this happen in GBN ?
CMPT771 Transport Layer
56
Go Back N vs. Selective Repeat
 Efficiency
 No loss
 Loss
• Bursty loss
• Sporadic loss
 Resource consumption
 Buffer space
 Timer
• How to implement multi-timers ?
CMPT771 Transport Layer
57
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTP/RTCP
CMPT771 Transport Layer
58
TCP: Overview
RFCs: 793, 1122, 1323, 2018, 2581
 End-to-end, unicast:
 one sender, one receiver
 reliable, in-order byte
steam:

no “message boundaries”
 Pipelined (not stop-wait):
 TCP congestion and flow
control set window size
 send & receive buffers
socket
door
application
writes data
application
reads data
TCP
send buffer
TCP
receive buffer
 full duplex data:
 bi-directional data flow
in same connection
 connection-oriented:
 handshaking (exchange
of control msgs) init’s
sender, receiver state
before data exchange
 flow controlled:
 sender will not
overwhelm receiver
socket
door
segment
CMPT771 Transport Layer
59
TCP: Overview
 End-to-end, unicast:
 one sender, one receiver
RFCs: 793, 1122, 1323, 2018, 2581
Multicast
Unicast
Broadcast
OR
Anycast
CMPT771 Transport Layer
60
TCP segment structure
32 bits
URG: urgent data
(generally not used)
ACK: ACK #
valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
Internet
checksum
(as in UDP)
source port #
dest port #
sequence number
acknowledgement number
head not
UA P R S F
len used
checksum
Receive window
Urg data pnter
Options (variable length)
counting
by bytes
of data
(not segments!)
# bytes
rcvr willing
to accept
application
data
(variable length)
CMPT771 Transport Layer
61
TCP Connection Setup
Three way handshake:
Step 1: client host sends TCP SYN segment to server
 specifies initial seq #
 no data
Step 2: server host receives SYN, replies with SYNACK
segment
server allocates buffers
 specifies server initial seq. #
Step 3: client receives SYNACK, replies with ACK segment,
which may contain data – piggyback

Q: Is 3-way handshake perfect ?
CMPT771 Transport Layer
62
TCP reliable data transfer
 TCP creates rdt
service on top of IP’s
unreliable service
 Pipelined segments
 Cumulative acks
 TCP uses single
retransmission timer
 Retransmissions are
triggered by:


timeout events
duplicate acks
 Initially consider
simplified TCP sender:


ignore duplicate acks
ignore flow control,
congestion control
CMPT771 Transport Layer
63
TCP ACK generation
[RFC 1122, RFC 2581]
Event at Receiver
TCP Receiver action
Arrival of in-order segment with
expected seq #. All data up to
expected seq # already ACKed
Delayed ACK. Wait up to 500ms
for next segment. If no next segment,
send ACK
Arrival of in-order segment with
expected seq #. One other
segment has ACK pending
Immediately send single cumulative
ACK, ACKing both in-order segments
Arrival of segment that
partially or completely fills gap
Immediate send ACK, provided that
segment starts at lower end of gap
Arrival of out-of-order segment
higher-than-expect seq. # .
Gap detected
Immediately send duplicate ACK,
indicating seq. # of next expected byte
CMPT771 Transport Layer
64
Fast Retransmit
 Time-out period may be relatively long:
 eRTT+4DevRTT
 long delay before resending lost packet
 Solution: Fast Retransmit
 Hint: GBN
CMPT771 Transport Layer
65
GBN in
action
CMPT771 Transport Layer
66
Fast Retransmit
 Time-out period may
be relatively long:


eRTT+4DevRTT
long delay before
resending lost packet
 Detect lost segments
via duplicate ACKs.


Sender often sends
many segments back-toback
If segment is lost,
there will likely be many
duplicate ACKs.
 If sender receives 3
ACKs for the same
data, it supposes that
segment after ACKed
data was lost:

fast retransmit: resend
segment before timer
expires
CMPT771 Transport Layer
67
Fast retransmit algorithm:
event: ACK received, with ACK field value of y
if (y > SendBase) {
SendBase = y
if (there are currently not-yet-acknowledged segments)
start timer
}
else {
increment count of dup ACKs received for y
if (count of dup ACKs received for y = 3) {
resend segment with sequence number y
}
a duplicate ACK for
already ACKed segment
fast retransmit
CMPT771 Transport Layer
68
TCP Round Trip Time and Timeout
Q: how to estimate RTT?
 SampleRTT: measured time from segment transmission
until ACK receipt
One RTT sample
CMPT771 Transport Layer
69
TCP Round Trip Time and Timeout
 Problem 2:
SampleRTT will vary -> atypical

Need the trend of RTT: history –> future
average several recent measurements, not just current
SampleRTT
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
300
RTT (milliseconds)

250
200
150
100
1
8
15
22
29
36
43
50
57
64
71
78
85
92
99
106
time (seconnds)
SampleRTT
Estimated RTT
CMPT771 Transport Layer
70
TCP Round Trip Time and Timeout
EstimatedRTT =
(1- )*
EstimatedRTT + *SampleRTT
 typical value:  = 0.125
 influence of past sample decreases exponentially fast

Exponential weighted moving average
CMPT771 Transport Layer
71
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTSP/RTP/RTCP
CMPT771 Transport Layer
72
Principles of Congestion Control
Congestion:
 informally: “too many sources sending too much
data too fast for network to handle”
 Solution

Sender controls sending rate
 different from flow control!
 Flow control: not overwhelm receiver
 Congestion control: not overwhelm network
 another top-10 problem!
CMPT771 Transport Layer
73
Approaches towards congestion control
Two broad approaches towards congestion control:
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
End-end congestion
control:
 no explicit feedback from
network
 congestion inferred from
end-system observed loss,
delay
 approach taken by TCP
Fast, accurate, but expensive
CMPT771 Transport Layer
74
TCP Congestion Control
 end-end control (no network assistance)
 sender limits transmission:
LastByteSent-LastByteAcked
 CongWin
RcvWindow?
 min { rcwWindow, CongWin }
 CongWin is dynamic, function of perceived
network congestion


Too high a rate -> congestion
Too low a rate -> low network utilization
CMPT771 Transport Layer
75
TCP Congestion Control
How does sender perceive congestion?
 loss event
 TCP sender reduces rate (CongWin) after loss
event
Loss event = timeout or 3 duplicate acks
three mechanisms:



AIMD (additive increase multiplicative decrease)
slow start
conservative after timeout events
CMPT771 Transport Layer
76
1. TCP AIMD
additive increase:
increase CongWin by
1 MSS every RTT in
the absence of loss
events: probing
multiplicative decrease :
cut CongWin in half
after loss event
congestion
window
24 Kbytes
16 Kbytes
8 Kbytes
Sawtooth
time
Long-lived TCP connection
CMPT771 Transport Layer
77
2. TCP Slow Start
 When connection begins,
CongWin = 1 MSS


Example: MSS = 500 bytes
& RTT = 200 msec
initial rate = 20 kbps
 When connection begins,
increase rate exponentially
fast until first loss event
 available bandwidth may
be >> MSS/RTT

desirable to quickly ramp
up to respectable rate
CMPT771 Transport Layer
78
2. TCP Slow Start (more)
 When connection


Host B
RTT
begins, increase rate
exponentially until
first loss event:
Host A
double CongWin every
RTT
done by incrementing
CongWin for every ACK
received
 Summary: initial rate
is slow but ramps up
exponentially fast
time
CMPT771 Transport Layer
79
3. Refinement (TCP Reno)
Philosophy:
 After 3 dup ACKs:
is cut in half
 window then grows
linearly
 But after timeout event:
 CongWin instead set to
1 MSS;
 window then grows
exponentially
 to a Threshold, then
grows linearly
 CongWin
• 3 dup ACKs indicates
network capable of
delivering some segments
• timeout before 3 dup
ACKs is “more alarming”
TCP versions:
Tahoe -> Reno -> Sack
Vegas, Westwood …
(Nevada)
CMPT771 Transport Layer
80
Q: Threshold: When will
exponential increase
switch to linear?
A: When CongWin gets to
1/2 of its value before
timeout.
congestion window size
(segments)
Refinement (more)
Implementation:
 Variable Threshold
 At a loss event, Threshold
is set to 1/2 of CongWin
just before loss event
14
TimeOut
12
10
TCP
Reno
8
6
threshold
4
TCP
Tahoe
2
0
1
2 3
4 5 6 7 8 9 10 11 12 13 14 15
Transmission round
Series1
Series2
CMPT771 Transport Layer
81
TCP congestion behavior (1)
TimeOut
12
10
(segments)
congestion window size
14
8
6
threshold
4
2
0
1
2
3
4
5
6
7
8
9
10
11
12
13 14
15
Transmission round
Series1
Series2
CMPT771 Transport Layer
82
TCP congestion behavior (2)
3 Dup Ack
12
10
(segments)
congestion window size
14
8
6
threshold
4
TCP
Tahoe
2
0
1
2
3
4
5
6
7
8
9
10
11
12
13 14
15
Transmission round
Series1
Series2
CMPT771 Transport Layer
83
TCP congestion behavior (3)
3 Dup Ack
TCP
Reno
12
10
(segments)
congestion window size
14
8
6
threshold
4
TCP
Tahoe
2
0
1
2
3
4
5
6
7
8
9
10
11
12
13 14
15
Transmission round
Series1
Series2
CMPT771 Transport Layer
84
Summary: TCP Congestion Control (Reno)
 When CongWin is below Threshold, sender in
slow-start phase, window grows exponentially.
 When CongWin is above Threshold, sender is in
congestion-avoidance phase, window grows linearly.
 When a triple duplicate ACK occurs, Threshold
set to CongWin/2 and CongWin set to
Threshold.
 When timeout occurs, Threshold set to
CongWin/2 and CongWin is set to 1 MSS.
V. Jacobson, Congestion Avoidance and Control. Proceedings of
ACM SIGCOMM '88, Aug. 1988.
CMPT771 Transport Layer
85
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTP/RTCP
CMPT771 Transport Layer
86
TCP Fairness
Fair: 1. Equal share
2. Full utilization
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
CMPT771 Transport Layer
87
TCP AIMD
additive increase:
increase CongWin by
1 MSS every RTT in
the absence of loss
events: probing
multiplicative decrease :
cut CongWin in half
after loss event
congestion
window
24 Kbytes
16 Kbytes
8 Kbytes
Sawtooth
time
Long-lived TCP connection
CMPT771 Transport Layer
88
Why is TCP fair?
Two competing sessions:
 Additive increase gives slope of 1, as throughout increases
 multiplicative decrease decreases throughput proportionally
R
equal bandwidth share
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
CMPT771 Transport Layer
89
Why is TCP fair?
Known:
x0>y0
y
R
x=y
(x0/2+Δ/2, y0/2+Δ/2)
(x0+Δ, y0+Δ)
(x0+Δ/2, y0+Δ/2)
(x0,y0)
Connection 1 throughput R
x
CMPT771 Transport Layer
90
Why is TCP fair?
D.M. Chiu and R. Jain, "Analysis of the Increase and Decrease
Algorithms for Congestion Avoidance in Computer Networks,"
Computer Networks and ISDN Systems, pp. 1-14, 1989.
R
x=y
Connection 1 throughput R
CMPT771 Transport Layer
91
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTSP/RTP/RTCP
CMPT771 Transport Layer
92
Internet multimedia: simplest approach
 audio or video stored in file
 files transferred as HTTP object


received in entirety at client
then passed to player
audio, video not streamed:
 no, “pipelining,” long delays until playout!
CMPT771 Transport Layer
93
Internet multimedia: naïve streaming approach
 browser GETs metafile
 browser launches player, passing metafile
 player contacts server (HTTP)
 server streams audio/video to player (HTTP/TCP)
CMPT771 Transport Layer
94
Streaming Multimedia: UDP or TCP?
TCP
 rate fluctuates due to TCP congestion control
 Saw-tooth behavior
 larger playout delay
 smooth TCP delivery rate/retransmission
 HTTP/TCP passes more easily through firewalls
UDP
 short playout delay (2-5 seconds)
 lower overhead
 smoothed rate
 error recovery
 Not 100%, but real-time
CMPT771 Transport Layer
95
Problem with UDP: Unresponsive Flows
 Unresponsive flows

Do not use congestion control, and in particular, do not reduce
their load on the network when subjected to packet drops
 Results

self-interference: link capacity < stream  drop own
packets
• typical for residential access links

mutual interference: multiple streams competing for
bottleneck bandwidth
• loss as congestion indicator  rude streams push aside
polite ones
 Example: TCP competing with unresponsive UDP



TCP flows reduce sending rates in response to congestion
Uncooperative UDP flows capture the available bandwidth
Unfair to TCP, or even starve TCP
CMPT771 Transport Layer
96
Re-engineering the network, or hosts ?
 Deployment of packet scheduling disciplines in
routers to isolate each flow (next chapter)

Re-engineer the Internet
 End-to-end congestion control and use of
incentives

Re-engineer the hosts
 Pricing mechanisms
 All three approaches are not mutually exclusive
CMPT771 Transport Layer
97
Objective: TCP-friendly
“long-term throughput does not exceed the throughput
of a conformant TCP connection under the same conditions”
non-TCP
TCP
non-TCP
Internet
TCP
CMPT771 Transport Layer
98
TCP-friendly congestion control
 Two common approaches:
 rate-based: control rate of traffic
 window-based: limit number of unacknowledged packets
• window size controls rate, so related
 Careful: ≠ flow control = prevents end-system
buffer overflow

however, window-based control can be used for both
CMPT771 Transport Layer
99
Window-based ?
 Window control not really appropriate for multimedia
applications:


time-scale too short (~ RTT)  constantly switch codecs 
visible or audible transitions
may start or drop below minimum codec rate
 Flow control not needed since receiver will need to process
data at the nominal (codec) rate
CMPT771 Transport Layer
100
Rate or Equation based
 Question
 Given observed parameters of a path, what’s R, the longterm throughput of a TCP flow, as if it is running over this
path ?
 Solution
 Ensure that the sending rate is no more than T
• TCP Friendly Rate Control (TFRC) and many variations
 Sub-questions
 What are the parameters ?
 How to estimate them ?
 T as a function of the parameters ?
CMPT771 Transport Layer
101
Performance evaluation
Typical Methods
 Measurement

Ping, traceroute
 Simulation
 Ns-2
 Analytical modeling
 Math
CMPT771 Transport Layer
102
TCP Throughput Equation




Round-trip delay T
Packet size L
Loss event rate q
Retransmission timeout TRTO ~ 4T
L
R =
T
2q
3q
+ T R T O (3
)q(1 + 32q2 )
3
8
Padhye, J., Firoiu, V., Towsley, D., and Kurose, J., Modeling TCP Throughput: a Simple
Model and its Empirical Validation, UMASS CMPSCI Tech Report TR98-008, Feb. 1998.
CMPT771 Transport Layer
103
TCP Throughput Equation: Simplified Version




Round-trip delay T
Packet size L
Loss rate q
Retransmission timeout TRTO
~ 4T
L
R =
T
2q
3q
+ T R T O (3
)q(1 + 32q2 )
3
8
1.22L
R »
T q
CMPT771 Transport Layer
104
Derivation (1)
Focus on AIMD in steady-state only



Round-trip delay T
Packet size L
Loss event rate q
(N - 1)
R =
L
To
•In one cycle (T0), cwnd grows until a
maximum valueW, then a loss is encountered,
which reduces cwnd to W/2 .
N ? To ?
Assume N packets are sent in one cycle
CMPT771 Transport Layer
105
Derivation (2)
W
T0 =
T
2
N =
To W
ò0
(t )
3
dt = W
T
8
2
In one cycle (T0), cwnd grows until a maximum
valueW, then a loss is encountered, which
reduces cwnd to W/2 .
•Exactly a full window is sent per round trip
time T, thus the window increases by one
packet per T
q = 1/ N
Þ W = 2
Þ R =
2 1
3 q
(N - 1)
L =
T0
1
( - 1)
q
L »
T
2 1
T
3 q
3
L
2
q
If q is small (<5%)
(N - 1)
R =
L
To
Assume N packets are sent in one cycle
CMPT771 Transport Layer
106
Beyond Congestion Control: Client-side operations
Media Player
 jitter removal
 decompression
 error concealment
 graphical user interface
w/ controls for interactivity
CMPT771 Transport Layer
107
Jitter Removal: Client Buffering
variable
network
delay
client video
reception
constant bit
rate video
playout at client
buffered
video
constant bit
rate video
transmission
client playout
delay
time
CMPT771 Transport Layer
108
Client Buffering
constant
drain
rate, d
variable fill
rate, x(t)
buffered
video
 Client-side buffering, playout delay compensate
for network-added delay, delay jitter
 Q: How to determine the playout delay ?
CMPT771 Transport Layer
109
Case Study: Real-time interactive applications
 PC-2-PC phone

instant messaging services
are providing this
 PC-2-phone
Going to now look at a
PC-2-PC Internet phone
example in detail
Dialpad
 Net2phone
 Phone-2-Phone
 videoconference with
Webcams

CMPT771 Transport Layer
110
Interactive Multimedia: Internet Phone
Introduce Internet Phone by way of an example
 speaker’s audio: alternating talk spurts, silent periods.

64 kbps during talk spurt
 pkts generated only during talk spurts

20 msec chunks at 8 Kbytes/sec: 160 bytes data
 application-layer header added to each chunk.
 Chunk+header encapsulated into UDP segment.
 application sends UDP segment into socket every 20 msec
during talkspurt.
CMPT771 Transport Layer
111
Internet Phone: Packet Loss and Delay
 network loss: IP datagram lost due to network congestion
(router buffer overflow)
 delay loss: IP datagram arrives too late for playout at
receiver


delays: processing, queueing in network; end-system (sender,
receiver) delays
typical maximum tolerable delay: 400 ms
 loss tolerance: depending on voice encoding, losses
concealed, packet loss rates between 1% and 10% can be
tolerated.
CMPT771 Transport Layer
112
Delay Jitter
variable
network
delay
(jitter)
client
reception
constant bit
rate playout
at client
buffered
data
constant bit
rate
transmission
client playout
delay
time
 Consider the end-to-end delays of two consecutive packets:
difference can be more or less than 20 msec
CMPT771 Transport Layer
113
Internet Phone: Fixed Playout Delay
 Receiver attempts to playout each chunk exactly q msecs
after chunk was generated.
 chunk has time stamp t: play out chunk at t+q .
 chunk arrives after t+q: data arrives too late for playout,
data “lost”
 Tradeoff for q:
 large q: less packet loss
 small q: better interactive experience
CMPT771 Transport Layer
114
Fixed Playout Delay
• Sender generates packets every 20 msec during talk spurt.
• First packet received at time r
• First playout schedule: begins at p
• Second playout schedule: begins at p’
packets
loss
packets
generated
packets
received
playout schedule
p' - r
playout schedule
p-r
time
r
p
p'
CMPT771 Transport Layer
115
Internet Phone: Fixed Playout Delay
 Tradeoff for q:


large q: less packet loss
small q: better interactive experience
packets
loss
packets
generated
packets
received
playout schedule
p' - r
playout schedule
p-r
time
r
p
p'
CMPT771 Transport Layer
116
Adaptive Playout Delay, I
 Goal: minimize playout delay, keeping late loss rate low
 Approach: adaptive playout delay adjustment:



Estimate network delay, adjust playout delay at beginning of each talk
spurt.
Silent periods compressed and elongated.
Chunks still played out every 20 msec during talk spurt.
t i  timestamp of the ith packet
ri  the time packet i is received by receiver
p i  the time packet i is played at receiver
ri  t i  network delay for ith packet
d i  estimate of average network delay after receiving ith packet
Dynamic estimate of average delay at receiver:
di  (1  u)di 1  u( ri  ti )
where u is a fixed constant (e.g., u = .01).
CMPT771 Transport Layer
117
Adaptive playout delay II
Also useful to estimate the average deviation of the delay, vi :
vi  (1  u)vi 1  u | ri  ti  di |
The estimates di and vi are calculated for every received packet, although they are only
used at the beginning of a talk spurt.
For first packet in talk spurt, playout time is:
pi  ti  di  Kvi
where K is a positive constant.
Remaining packets in talkspurt are played out periodically
CMPT771 Transport Layer
118
Adaptive Playout, III
Q:
How does receiver determine whether packet is first in a
talkspurt?
 If no loss, receiver looks at successive timestamps.

difference of successive stamps > 20 msec -->talk spurt begins.
 With loss possible, receiver must look at both time stamps and
sequence numbers.

difference of successive stamps > 20 msec and sequence numbers
without gaps --> talk spurt begins.
CMPT771 Transport Layer
119
How to deal with packet loss ?
 Network loss
 Delay loss
 ARQ ?
 Non-realtime
CMPT771 Transport Layer
120
Recovery from packet loss – FEC (1)
forward error correction (FEC): simple scheme
 for every group of n chunks create a redundant chunk by
exclusive OR-ing the n original chunks
 send out n+1 chunks, increasing the bandwidth by factor
1/n.
 can reconstruct the original n chunks if there is at most
one lost chunk from the n+1 chunks
CMPT771 Transport Layer
121
Recovery from packet loss – FEC (2)
 Playout delay needs to be fixed to the time to receive all
n+1 packets
 Tradeoff:
 increase n, less bandwidth waste
 increase n, longer playout delay
 increase n, higher probability that 2 or more chunks will
be lost
CMPT771 Transport Layer
122
Recovery from packet loss – FEC (3)
2nd FEC scheme
• “piggyback lower
quality stream”
• send lower resolution
audio stream as the
redundant information
• for example, nominal
stream PCM at 64 kbps
and redundant stream
GSM at 13 kbps.
• Whenever there is non-consecutive loss, the
receiver can conceal the loss.
• Can also append (n-1)st and (n-2)nd low-bit rate
chunk
CMPT771 Transport Layer
123
Recovery from packet loss - Interleaving
Interleaving
 chunks are broken
up into smaller units
 for example, 4 5 msec units per
chunk
 Packet contains small units from
different chunks
 if packet is lost, still have most
of every chunk
 has no redundancy overhead
 but adds to playout delay
CMPT771 Transport Layer
124
 Q: Does Interleaving reduce error rate ?
CMPT771 Transport Layer
125
More Error Recovery (1)
 Advanced error detection and correction codes

(n, k, 2s +1) Reed Solomon Code:
k
2s
n
Based on Galois Field (GF, a finite field)
Can detect 2s errors
Can correct s errors
Generally can correct  erasures and b errors if
 + 2b  2s
 Digital fountain – Tornado code
CMPT771 Transport Layer
126
More Error Recovery (2)
 Joint source-channel coding
 Shannon’s coding theory
 Performance
• Joint source-channel coding = separate coding


But … infinite block length
So … infinite delay
 Channel estimation
 Adaptive source coding – channel aware
CMPT771 Transport Layer
127
Outline
 1. Transport-layer
services
 2. Multiplexing and
demultiplexing
 3. Connectionless
transport: UDP
 4. Principles of reliable
data transfer
 5. Connection-oriented




transport: TCP
6. TCP congestion control
7. TCP fairness and delay
performance
8. TCP friendly control
9. RTSP/RTP/RTCP
CMPT771 Transport Layer
128
Beyond UDP: Protocol Stack for Streaming
RTSP
UDP/RTP/RTCP
CMPT771 Transport Layer
129
User Control of Streaming Media: RTSP
HTTP
 Does not target multimedia content
 No commands for fast forward, etc.
 HTTP streaming ? DASH ?
RTSP: RFC 2326
 Client-server application layer protocol.
 For user to control display: rewind, fast forward, pause,
resume, repositioning, etc…
Real-time Streaming Protocol
CMPT771 Transport Layer
130
RTSP (Real-Time Streaming Protocol)
What it doesn’t do:
 does not define how audio/video is encapsulated for streaming
over network
 does not restrict how streamed media is transported; it can
be transported over UDP or TCP
 does not specify how the media player buffers audio/video
CMPT771 Transport Layer
131
RTSP Example
Scenario:
 metafile communicated to web browser
 browser launches player
 player sets up an RTSP control connection, data connection to
streaming server
CMPT771 Transport Layer
132
Metafile Example
<title>Twister</title>
<session>
<group language=en lipsync>
<switch>
<track type=audio
e="PCMU/8000/1"
src = "rtsp://audio.example.com/twister/audio.en/lofi">
<track type=audio
e="DVI4/16000/2" pt="90 DVI4/8000/1"
src="rtsp://audio.example.com/twister/audio.en/hifi">
</switch>
<track type="video/jpeg"
src="rtsp://video.example.com/twister/video">
</group>
</session>
CMPT771 Transport Layer
133
RTSP Operation
CMPT771 Transport Layer
134
RTSP Exchange Example
C: SETUP rtsp://audio.example.com/twister/audio RTSP/1.0
Transport: rtp/udp; compression; port=3056; mode=PLAY
S: RTSP/1.0 200 1 OK
Session 4231
C: PLAY rtsp://audio.example.com/twister/audio.en/lofi RTSP/1.0
Session: 4231
Range: npt=0-  normal playback time
C: PAUSE rtsp://audio.example.com/twister/audio.en/lofi RTSP/1.0
Session: 4231
Range: npt=37
C: TEARDOWN rtsp://audio.example.com/twister/audio.en/lofi RTSP/1.0
Session: 4231
S: 200 3 OK
CMPT771 Transport Layer
135
RTSP: out of band control
FTP uses an “out-of-band” control
channel:
 A file is transferred over one
TCP connection.
 Control information (directory
changes, file deletion, file
renaming, etc.) is sent over a
separate TCP connection.
 The “out-of-band” and “inband” channels use different
port numbers.
RTSP messages are also sent outof-band:
 RTSP control messages use
different port numbers than
the media stream: out-ofband.

Port 554
 The media stream is
considered “in-band”.
CMPT771 Transport Layer
136
RTSP vs. HTTP
 Out-of-band – in band
 Stateful - stateless
CMPT771 Transport Layer
137
Real-Time Protocol (RTP)
 RTP specifies a packet structure for packets carrying
audio and video data
 RFC 1889.
 RTP packet provides



payload type identification
packet sequence numbering
timestamping
CMPT771 Transport Layer
138
RTP runs on top of UDP
RTP libraries provide a transport-layer interface
that extend UDP:
• port numbers, IP addresses
• payload type identification
• packet sequence numbering
• time-stamping
 Interoperability: If two
Internet phone applications
run RTP, then they are able
to work together
CMPT771 Transport Layer
139
RTP Example
 Consider sending 64 kbps
PCM-encoded voice over
RTP.
 Application collects the
encoded data in chunks,
e.g., every 20 msec = 160
bytes in a chunk.
 The audio chunk along with
the RTP header form the
RTP packet, which is
encapsulated into a UDP
segment.
 RTP header indicates type
of audio encoding in each
packet

sender can change
encoding during a
conference.
 RTP header also contains
sequence numbers and
timestamps.
CMPT771 Transport Layer
140
RTP Header
Payload Type (7 bits): Indicates type of encoding currently being
used. If sender changes encoding in middle of conference, sender
informs the receiver through this payload type field.
•Payload
•Payload
•Payload
•Payload
•Payload
•Payload
type 0: PCM mu-law, 64 kbps
type 3, GSM, 13 kbps
type 7, LPC, 2.4 kbps
type 26, Motion JPEG
type 31. H.261
type 33, MPEG2 video
Sequence Number (16 bits): Increments by one for each RTP packet
sent, and may be used to detect packet loss and to restore packet
sequence.
CMPT771 Transport Layer
141
RTP Header (2)
 Timestamp field (32 bytes long). Reflects the sampling instant of
the first byte in the RTP data packet.
 For audio, timestamp clock typically increments by one for each
sampling period (for example, each 125 usecs for a 8 KHz
sampling clock)
 if application generates chunks of 160 encoded samples, then
timestamp increases by 160 for each RTP packet when source is
active. Timestamp clock continues to increase at constant rate
when source is inactive.
 SSRC field (32 bits long). Identifies the source of the RTP
stream. Each stream in a RTP session should have a distinct SSRC.
CMPT771 Transport Layer
142
RTP and Quality-of-Service
 RTP does not provide any mechanism to ensure timely
delivery of data or provide other quality of service
guarantees.
 RTP encapsulation is only seen at the end systems: it is not
seen by intermediate routers.

Routers providing best-effort service do not make any special
effort to ensure that RTP packets arrive at the destination in a
timely matter.
CMPT771 Transport Layer
143
Real-Time Control Protocol (RTCP)
 Works in conjunction with
RTP.
 Each participant in RTP
session periodically transmits
RTCP control packets to all
other participants.
 Each RTCP packet contains
sender and/or receiver
reports

 Statistics include number of
packets sent, number of
packets lost, interarrival
jitter, etc.
 Feedback can be used to
control performance
 Sender may modify its
transmissions based on
feedback
report statistics useful to
application
CMPT771 Transport Layer
144
RTCP Packets
Receiver report packets:
 fraction of packets lost,
last sequence number,
average interarrival jitter.
Sender report packets:
 SSRC of the RTP stream,
the current time, the
number of packets sent, and
the number of bytes sent.
Source description packets:
 e-mail address of sender,
sender's name, SSRC of
associated RTP stream.
 Provide mapping between
the SSRC and the
user/host name.
CMPT771 Transport Layer
145
Synchronization of Streams
 RTCP can synchronize
different media streams
within a RTP session.
 Consider videoconferencing
app for which each sender
generates one RTP stream for
video and one for audio.
 Timestamps in RTP packets
tied to the video and audio
sampling clocks
 not tied to the wall-clock
time
 Each RTCP sender-report
packet contains (for the most
recently generated packet in
the associated RTP stream):


timestamp of the RTP packet
wall-clock time for when
packet was created.
 Receivers can use this
association to synchronize the
playout of audio and video.
CMPT771 Transport Layer
146
Confused ?!
RTSP: Real-Time Streaming Protocol
RTP: Real-Time (transport) Protocol
RTCP: Real-Time Control Protocol
Q: Who controls (sending rate, FEC settings, …)
RTP ?
RTCP ?
More on later…
Henning Schulzrinne, RTP website
http://www.cs.columbia.edu/~hgs/rtp/
CMPT771 Transport Layer
147
What’s hot/difficult now?
TCP/UDP penetration
 Firewall/NAT
 STUN ?
 HTTP streaming ?
Wireless mobile TCP
 Different loss/error patterns
 Energy
 Mobility/multihome
Ultra high speed networks
 Slow TCP ?
 TCP incast
 TCP in a data center
 Virtualization
CMPT771 Transport Layer
148
Download