RTP
Real Time Transport Protocol
e RTCP, RTP Control Protocol
Maria Luisa MERANI
1
PREMESSA
Dal momento che le applicazioni real-time (o near realtime) dovrebbero “fare la parte del leone” sulla Internet dei
prossimi anni
p
tra queste VoIP e video conferenza
non sorprende che enti di standardizzazione riconosciuti a
livello internazionale
IETF
ITU
siano impegnati da diversi anni nella definizione e
promulgazione di standard per questa classe di
applicazioni
2
SCOPO
Consentire a compagnie diverse
diverse, a
sviluppatori distinti, di creare nuovi prodotti
– applicazioni interattive real-time
real time –
interoperabili
RTP è stato ideato e standardizzato a questo
scopo
di H. Schulzrinne
ad oggi piuttosto popolare e
complementare
l
t
ad
d altri
lt i protocolli
t
lli (SIP
(SIP, H
H.323)
323)
3
PUNTO DI PARTENZA
UDP rappresenta la soluzione più adeguata a livello
trasporto per le applicazioni real-time, ma
non fornisce supporto
pp
per veicolare informazioni basilari p
p
per un
servizio di telefonia a pacchetto e per videoconferenza
– Numero di sequenza
– Informazioni sul timing associato all’informazione
all informazione trasportata
» Campioni audio
» Frame video
A questo sopperisce RTP
Normalmente impiegato “on top of UDP”
Definito negli RFC 3550 e 3551
– 2003
– http://www.ietf.org/rfc.html
4
ARCHITETTURA PROCOLLARE
Host RTP
Applicazione
(media encoding e/o decoding)
RTP
RTCP
UDP
IP
5
RTP
Che cosa fornisce
Sequence numbering
Timestamp
p
Payload identification
Delivery monitoring
E che cosa NON fornisce
Garanzia sulla consegna
P
Prenotazione
t i
di risorse
i
((no QoS)
Q S)
Instaurazione della connessione
Se si sviluppa un’applicazione incorporando RTP, anziché uno schema
proprietario, l’applicazione interagirà più facilmente con altre applicazioni
multimediali di rete ☺
6
ALCUNE DEFINIZIONI
Sessione RTP
Identifica un set di partecipanti coinvolti in una comunicazione via
RTP
Ciascun partecipante della sessione è identificato da
Indirizzo IP di destinazione
– Unicast (o multicast)
Una coppia di porte UDP di destinazione
– Quella dal valore più basso è per il trasporto dati (RTP)
– Quella con il valore più alto per il controllo (RTCP)
In una comunicazione multimediale ciascun flusso è – in generale –
veicolato via sessioni RTP distinte
Esempio: videoconferenza a due
– 2 sessioni RTP: 1 sessione video e 1 sessione audio, ma in tutto … 4
flussi RTP
OPPURE
– Bundling audio e video in un unico flusso (dipende dall’encoder) => 1
sessione RTP
7
I DUE CONTESTI D’USO
UNICAST
FLUSSO RTP
FLUSSO RTP
RTCP
MA ANCHE …
MULTICAST
FLUSSO RTP
FLUSSI RTP
RTCP
8
FORMATO HEADER RTP
0
31
DEFAULT header
12 byte
9
CONTINUA
V Version
2 bit
La versione corrente è la 2
P Padding
1 bit
Se settato, il pacchetto contiene dei byte di “riempimento” alla fine;
nell’ultimo byte è contenuta l’indicazione del numero di byte di padding
X Extension
1 bit
Se settato, l’header canonico (12 byte) è seguito da una estensione
(header extension appunto)
M Marker
M k bit
1 bit
Segnala una condizione significativa relativamente al payload
Es. termine di un video frame (frame boundary)
10
CONTINUA
PT Payload Type
7 bit
Precisa il tipo di dati trasportati
Equivalentemente
– Per uno stream audio specifica il tipo di encoder impiegato
– Per uno stream video il tipo di codifica video
Nel caso di codifica adattativa e di modifica all’interno di una sessione,
attraverso tale campo il sender informa anticipatamente il destinatario
della variazione che a breve introdurrà
Interessante:
– Esiste sia un mapping di default, che staticamente associa ad un
determinato valore di PT
– ES: 0 per ITU G
G.711
711 µ-law
µ law audio
audio, 26 per Motion JPEG video …
Ma anche
– La possibilità di definire via segnalazione “out-of-band” (SIP, RTSP,
H 323) la corrispondenza
H.323)
» Valori per il payload type compresi tra 96 e 127 sono riservati a tale
scopo (per il profilo RTP audio/video)
11
CONTINUA
Sequence number
16 bit
Incrementato di una unità per ogni pacchetto RTP
Impiegato lato receiver per
– ripristinare la sequenza originaria
– rilevare eventuali perdite di pacchetti
Valore iniziale è random
Timestamp
32 bit
Riporta
p
l’istante di campionamento
p
del p
primo byte
y dei dati contenuti nel
payload RTP
Ottenuto da un clock presente lato sender
La frequenza del clock è media-dependent
media dependent
- Per audio payload tipicamente il clock coincide con la frequenza di
campionamento (es. 8 KHz), per video payload 90 KHz
Valore iniziale è random
Viene incrementato anche se la sorgente è inattiva
12
CONTINUA
SSRC
32 bit
Def. Synchronization source (SSRC): la sorgente di uno stream di
pacchetti RTP
Tale campo individua la sorgente attraverso un identifier
Valore random
Entro
E
t medesima
d i
sessione
i
RTP d
due sorgentiti non h
hanno llo stesso
t
identificatore
CC e CSRC
Def. Contributing source (CSRC): una sorgente che ha contribuito
ad uno stream generato da un mixer
CC numero di sorgenti che compaiono nella lista CS
CC:
CSRC
C
successiva
CSRC lista degli
g identificatori delle sorgenti
g
che contribuiscono al
payload del pacchetto
13
E … RTCP?
14
RTCP – RTP C
Control
t lP
Protocol
t
l
Protocollo p
per il controllo
fornisce feedback periodici sulla qualità di ricezione
Consente l’identificazione dei partecipanti alla sessione
Ulteriori informazioni al loro riguardo
Notifiche di variazioni nei partecipanti alla sessione
Informazioni necessarie per la sincronizzazione di diversi media
stream
La sua implementazione è interpretabile come costituita
da tre componenti
I pacchetti (con i loro diversi formati)
Le regole di temporizzazione per l’invio dei pacchetti di controllo
Il database di ogni partecipante
VIP
M LM
15
TRASPORTO DEI PACCHETTI RTCP
Abbiamo già visto che
Ciascuna sessione è identificata per il singolo partecipante da
Indirizzo IP
Due porte UDP
– La porta per i dati RTP dovrebbe essere PARI
– La porta
p
p
per RTCP immediatamente successiva alla p
precedente
(DISPARI)
Ultima release di RTP rilassa tali vincoli e consente anche
l’assegnazione di porte non adiacenti
I pacchetti RTCP non sono mai trasportati individualmente
Raggruppati in compound packet
Eccone un esempio …
16
RTCP COMPOUND PACKET
17
PACCHETTI RTCP
Le specifiche RTCP ne definiscono di 5 tipi diversi
Receiver report RR
Sender report SR
Source description SDES
Membership management BYE
Application-defined (APP)
18
RTCP Receiver
R
i
Reports
R
t RR
Utilizzati per eseguire report sulla qualità di ricezione
Inviati da tutti i partecipanti alla sessione RTP che ricevono dati
Pacchetti identificati dal valore 201 nel campo
p p
packet type
yp
Un pacchetto contiene
il SSRC del partecipante che invia il report
I report block, che a loro volta possono contenere stime di
Loss fraction
Interarrival jitter
– Stima della varianza del tempo di transito attraverso la rete
– Misurato in timestamp units
Altro …
Alt
19
SULLA STIMA DEL JITTER
Per calcolare la varianza del tempo di transito
Sia Si il timestamp RTP del pacchetto i-simo e
Ri l’istante di arrivo di tale p
pacchetto
Differenza nel tempo di transito relativo:
D(i, j ) = ( R j − S j ) − ( Ri − Si )
Calcolo del jitter attraverso la determinazione di una media mobile:
J i = J i −1
(
D(i − 1, i ) − J )
+
i −1
16
20
UTILITÀ dei
d i RR
1 Per il sender del flusso
1.
Può modificare la velocità di invio in accordo al feedback ricevuto
Loss rate elevate => riduzione send rate e/o tecniche di
mascheramento dell’errore lato sender più potenti
Aumento improvviso del jitter => congestione in atto => riduzione send
rate
2. Altri partecipanti alla sessione
Possono determinare se eventuali problemi sono locali o comuni a
dicersi ricevitori
3. Per un “third-party”
È possibile
ibil monitorare
it
attraverso
tt
i pacchetti
h tti RTCP RR llo ““stato
t t di
salute” della rete
21
RTCP Sender
S d Reports
R
t SR
Pacchetti inviati dai partecipanti alla sessione che
recentemente hanno inviato dati
Pacchetti identificati dal valore 200 nel campo packet type
informazioni sui dati inviati, principalmente per la sincronizzazione
di stream multipli
Lyp-sync audio/video
22
RTCP PACCHETTI SDES
Pacchetti identificati dal valore 202 nel campo packet type
Impiegati per convogliare l’identificazione
l identificazione del partecipante
e dettagli ulteriori (gli item)
Indirizzo e-mail
Numero di telefono
…
L’informazione è tipicamente fornita dall’utente
E spesso mostrata nella GUI dell’applicazione
23
CONTINUA
Esempi di item che un pacchetto SDES può contenere
CNAME item
Identificatore stabile e permanente (al contrario della SSRC)
Può essere impiegato per associare sessioni RTP audio e video distinte a
scopo di sincronizzazione
Si tratta dell’unico item obbligatorio
Proposto nella forma [email protected]
NAME item
Nome del partecipante
EMAIL item
Es. [email protected]
PHONE item
Es + 39 059 2056166
Es.
LOCATION item
GPS linked
…
24
RTCP BYE
RTCP fornisce un controllo lasco della membership per la
sessione attraverso il pacchetto BYE
Identificato dal p
packet type
yp 203
Indica quando un partecipante lascia la sessione (o quando
cambia il suo SSRC)
P ò contenere
Può
t
l’indicazione
l’i di
i
sull motivo
ti d
dell’abbandono
ll’ bb d
d
della
ll
sessione
Utile in fase di display
Tali pacchetti
Possono andare perduti
Alcune applicazioni non li generano
ERGO
…
25
RTCP P
Pacchetti
h tti Application-Defined
A li ti
D fi d
Consente delle estensioni definite dalla singola
applicazione che viene sviluppata
Il packet type corrispondente è 204
Pacchetti impiegati per
Estensioni non-standard
Sperimentazione di nuove estensioni
26
SCALABILITÀ iin RTCP
La frequenza di invio dei compound packet che RTCP
prevede non è fissa, ma variabile
Dipende da
tipo di media stream
numero di partecipanti alla sessione
Obiettivo?
Confinare il traffico totale RTCP ad una frazione del traffico totale
della sessione
Tipicamente
p ca e te il 5%, ulteriormente
u te o e te scorporato
sco po ato in:
– 25% per i sender, 75% per i receiver SE i sender sono meno del 25% del
totale della popolazione
– ripartito
p
equamente
q
tra tutti i p
partecipanti
p
SE i sender sono p
più del 25%
DUNQUE, se il numero di partecipanti cresce …
27
CONTINUA
I compound packet vengono inviati periodicamente
La loro trasmissione è governata da
Un tempo che intercorre tra un invio ed un successivo
– Detto REPORTING_INTERVAL
un timer
ti
“ d ” che
“random”
h iintroduce
t d
un offset
ff t rispetto
i
tt a ttale
l valore
l
28
CONTINUA
Il valore dell’intervallo
dell intervallo risultante è comunque confrontato
con un valore di minimo assoluto
Default 5 s
Se il valore computato risultasse inferiore al minimo, si impiega il
minimo
Ulti
Ultima
release
l
RTP consente
t di ridurre
id
ulteriormente
lt i
t ttale
l iintervallo
t
ll
Per sessioni con una banda superiore a 72 kbit/s
Il valore del reporting interval deve venire ricomputato
ogniqualvolta
g q
il numero di partecipanti alla sessione varia
la frazione dei sender varia
29
ESEMPIO 1
Diffusione in streaming da un video server a 2 Mbit/s
Impiega RTP-over-IP multicast
Traffico RTCP
0.05 * 2 Mbit/s = 100 kbit/s così ripartito:
25% al sender (il video server)
25 kbit/s
75% ai ricevitori
75 kbit/s
Se R ricevitori, idealmente ciascuno dovrebbe spedire i compound
packet
k t RTCP ad
d una frequenza
f
– Ftx=75X103/(R * L) pacchetti/s, se L=dimensione del pacchetto
Equivalentemente il reporting interval sarà pari a
– REPORTING_INTERVAL= 1/Ftx
30
ESEMPIO 2 – maggiormente
i
t realistico
li ti
Internet radio station
Audio MP3 @ 128 kbit/s
Impiega
p g RTP-over-IP multicast
Audience di 1000 ascoltatori
Come per l’esempio precedente, il valore della banda destinata al
controllo è quello di default
5%
Idem per il valore minimo del reporting interval
5s
Di
Dimensione
i
media
di pacchetti
h i RTCP
90 byte (header UDP/IP inclusi)
31
CONTINUA - precisazione
i
i
Il tempo di invio T tra un pacchetto di controllo ed il
successivo viene randomizzato
T = REPORTING _ INTERVAL ⋅ (rand
d (0.5,1.5))
Evita p
problemi di sincronizzazione tra p
partecipanti
p
I report arrivano tutti insieme, contemporaneamente
Se si tratta del primo pacchetto, il tempo di invio è
T first
1
= ⋅T
2
32
CONTINUA
Un nuovo membro si aggiunge all’audience
all audience
Ipotizza che ci siano solo due partecipanti alla sessione (lui ed il
sender)
Non ha ancora ricevuto alcun pacchetto RTCP!
Dunque i sender sono più del 25% del totale
0.05 ⋅128 ⋅103
Ftx =
= 4.444 pacchetti RTCP/s
90 ⋅ 8 ⋅ 2
REPORTING _ INTERVAL =
1
1
=
= .225 s
Ftx 4.4444...
ma
.225 s < 5 s
dunque
REPORTING _ INTERVAL =
1
[5 ⋅ rand (0.5,1.5)] s
2
33
CONTINUA
Mentre il partecipante attende di inviare il suo primo reporting interval,
riceve a sua volta pacchetti RTCP che gli consentono di aggiornare la
sua stima sul numero di partecipanti alla sessione
ES. se l’applicazione invia il primo RTCP packet dopo 3.22 s, in
tale intervallo riceve approssimativamente 21 pacchetti
Perché? …
Adesso la frazione dei sender stimata è inferiore al 25% del totale,
dunque il reporting interval viene stimato in
(0.05 ⋅128 ⋅103 ) ⋅ 0.75
Ftx =
= 0.317 pacchetti RTCP/s
21⋅ 90 ⋅ 8
REPORTING _ INTERVAL =
1
= 3.15 s
Ftx
di nuovo
3.15 s < 5 s
dunque
REPORTING _ INTERVAL = 5 ⋅ rand (0.5,1.5) s
34
CONTINUA
Dinamicamente, la frequenza di invio dei pacchetti RTCP
Dinamicamente
da parte del nuovo partecipante viene aggiornata
Aumenta g
gradualmente, all’aumentare del numero di p
partecipanti
p
della cui esistenza il nuovo membro si accorge
35
POSSIBILI PROBLEMI
SE la sessione è costituita da un numero elevato di
partecipanti, una new entry impiega un intervallo non
trascurabile p
prima di stimare correttamente tale valore
Durante tale intervallo, la new entry invia pacchetti RTCP ad una
frequenza più elevata rispetto a quanto dovrebbe fare
Ingressi graduali
Nessun problema
p
STEP JOIN
Congestione
N esattamente
Non
tt
t quell che
h sii d
desidera
id
d
da un protocollo
t
ll di controllo
t ll
low-rate …
36
MA …
Quali sono le grandezze che occorrono al singolo
partecipante per determinare il reporting interval?
E come può il singolo partecipante alla sessione stimare
tali grandezze?
Banda allocata a RTCP
Frazione tipicamente fissata della banda della sessione
Banda della sessione:
– Numero di sender simultanei X bit rate del singolo flusso audio/video
Dimensione media pacchetti RTCP inviati e ricevuti
Numero totale dei partecipanti
Frazione dei partecipanti che sono sender
37
DATABASE d
deii PARTECIPANTI
Ogni partecipante costruisce ed aggiorna in modalità
distribuita un DATABASE per ogni sessione
Esempi
p di variabili contenute nel database
Dimensione media dei pacchetti RTCP trasmessi e ricevuti dal
partecipante
Numero di partecipanti alla sessione
Numero di quelli che hanno inviato pacchetti dati RTP durante l’ultimo
reporting_interval
– i sender
Ultimo sequence number impiegato
…
38
Scarica

multimediali di rete