6. Protocollo di controllo RTP -- RTCP (RTP Control Protocol -- RTCP)
Il protocollo di controllo RTP (RTCP) si basa sulla trasmissione periodica di pacchetti di controllo a tutti i partecipanti nella sessione, utilizzando lo stesso meccanismo di distribuzione dei pacchetti di dati. Il protocollo sottostante DEVE fornire il multiplexing dei pacchetti di dati e di controllo, ad esempio utilizzando numeri di porta separati con UDP.
RTCP svolge quattro funzioni:
-
La funzione principale è fornire feedback sulla qualità della distribuzione dei dati. Questa è una parte integrante del ruolo di RTP come protocollo di trasporto ed è correlata alle funzioni di controllo di flusso e congestione di altri protocolli di trasporto.
-
RTCP trasporta un identificatore persistente a livello di trasporto per una sorgente RTP chiamato nome canonico o CNAME. Poiché l'identificatore SSRC può cambiare se viene scoperto un conflitto o se un programma viene riavviato, i ricevitori richiedono il CNAME per tenere traccia di ciascun partecipante.
-
Le prime due funzioni richiedono che tutti i partecipanti inviino pacchetti RTCP, quindi la velocità deve essere controllata affinché RTP possa scalare fino a un gran numero di partecipanti. Facendo inviare a ciascun partecipante i propri pacchetti di controllo a tutti gli altri, ciascuno può osservare in modo indipendente il numero di partecipanti. Questo numero viene utilizzato per calcolare la velocità con cui vengono inviati i pacchetti.
-
Una quarta funzione OPZIONALE è trasmettere informazioni minime di controllo della sessione, ad esempio l'identificazione del partecipante da visualizzare nell'interfaccia utente. Questo è più probabilmente utile nelle sessioni "debolmente controllate" in cui i partecipanti entrano ed escono senza controllo dell'appartenenza o negoziazione dei parametri.
Le funzioni 1-3 DOVREBBERO essere utilizzate in tutti gli ambienti, ma in particolare nell'ambiente multicast IP. I progettisti di applicazioni RTP DOVREBBERO evitare meccanismi che possono funzionare solo in modalità unicast e non scalano a numeri maggiori.
6.1 Formato del pacchetto RTCP (RTCP Packet Format)
Questa specifica definisce diversi tipi di pacchetti RTCP per trasportare una varietà di informazioni di controllo:
- SR (Rapporto mittente, Sender Report): per statistiche di trasmissione e ricezione da partecipanti che sono mittenti attivi
- RR (Rapporto ricevente, Receiver Report): per statistiche di ricezione da partecipanti che non sono mittenti attivi
- SDES (Descrizione sorgente, Source Description): per elementi incluso CNAME
- BYE: indica la fine della partecipazione
- APP: funzioni specifiche dell'applicazione
Ogni pacchetto RTCP inizia con una parte fissa simile a quella dei pacchetti di dati RTP, seguita da elementi strutturati che possono essere di lunghezza variabile a seconda del tipo di pacchetto ma terminano sempre su un limite di 32 bit.
6.2 Intervallo di trasmissione RTCP (RTCP Transmission Interval)
RTP è progettato per consentire a un'applicazione di adattarsi automaticamente alle dimensioni di sessione che vanno da pochi partecipanti a migliaia. La larghezza di banda della sessione RTP è divisa tra le porzioni dati e controllo, con RTCP tipicamente allocato al 5% della larghezza di banda della sessione.
6.3 Regole di invio e ricezione dei pacchetti RTCP (RTCP Packet Send and Receive Rules)
Le regole per l'invio e la ricezione dei pacchetti RTCP sono attentamente progettate per ottenere un funzionamento corretto per sessioni di tutte le dimensioni.
6.4 Rapporti mittente e ricevente (Sender and Receiver Reports)
I ricevitori RTP forniscono feedback sulla qualità di ricezione utilizzando pacchetti di rapporto RTCP che possono assumere una delle due forme a seconda che il ricevitore sia anche un mittente o meno.
6.5 SDES: Pacchetto RTCP di descrizione sorgente (SDES: Source Description RTCP Packet)
Il pacchetto SDES è una struttura a tre livelli composta da un'intestazione e zero o più blocchi, ciascuno dei quali è composto da elementi che descrivono la sorgente identificata in quel blocco.
6.6 BYE: Pacchetto RTCP di arrivederci (BYE: Goodbye RTCP Packet)
Il pacchetto BYE indica che una o più sorgenti non sono più attive.
6.7 APP: Pacchetto RTCP definito dall'applicazione (APP: Application-Defined RTCP Packet)
Il pacchetto APP è destinato all'uso sperimentale man mano che vengono sviluppate nuove applicazioni e nuove funzionalità.