# Real Time Control Protocol

El protocol RTCP (o RTP Control Protocol) és un protocol germà del RTP i està definit a RFC 3550.
RTCP proporciona informació de control que està associat amb un flux de dades per a una aplicació multimèdia (flux RTP). Treballa juntament amb RTP en el transport i empaquetat de dades multimèdia, però no transporta cap dada per si mateix. S'usa habitualment per transmetre paquets de control als participants d'una sessió multimèdia de streaming. La funció principal del RTCP és informar de la qualitat de servei proporcionada pel RTP.
Aquest protocol recull estadístiques de la connexió i també informació com ara bytes enviats, paquets enviats, paquets perduts o jitter entre d'altres. Una aplicació pot usar aquesta informació per incrementar la qualitat de servei, ja sigui limitant el flux o usant un còdec de compressió més baixa. En resum. RTCP s'usa per informar de la QoS.
RTCP per si mateix no ofereix cap mena d'encriptació de flux o d'autenticació. Per a tals propòsits es pot usar SRTCP.

## Funcions de RTCP
### Informació del desenvolupament d'una aplicació

Aquesta funció és molt útil per a aplicacions de velocitat adaptativa. Un exemple de la seva utilitat seria reduir la congestió mitjançant l'ús d'un esquema de compressió més agressiu o enviar un stream de més alta qualitat quan hi ha poca congestió. També pot resultar útil per a diagnosticar problemes de xarxa.

### Correlacionar i sincronitzar diferents media streams provinents de l'emissor

Aquí és molt important establir la diferència entre l'identificador de font de sincronització de RTP, l'SSRC i el CNAME del RTCP. Per exemple, un stream d'àudio i vídeo provinents del mateix emissor utilitzen diferents SSRC, ja que en el cas contrari es podrien donar col·lisions d'identificadors SSRC. Per a solucionar aquest problema, RTCP utilitza el concepte de nom canònic (CNAME) que s'assigna a l'emissor. Aquest CNAME és associat a diversos valors SSRC. Així es garanteix que streams que no tenen el mateix ssrc es puguin sincronitzar i ordenar correctament.

### Transferir la identitat d'un emissor

Es transmet en el paquet de descripció de la font explicat més endavant en l'apartat Tipus de paquets

## Tipus de paquets

RTCP defineix diversos tipus de paquets que inclouen:
    - Informes d'emissor: Permeten a l'emissor actiu en una sessió informar sobre estadístiques de recepció i transmissió.
    - Informes de receptor: Els utilitzen els receptors que no són emissors per a enviar estadístiques sobre la recepció.
    - Descripció de la font: Porta els CNAMEs i altres dades que descriuen la informació dels emissors.
    - Paquets de control específics de l'aplicació.
Diversos paquets RTCP poden ser enviats en un mateix missatge UDP.
A continuació explicarem la importància de l'existència d'aquests paquets.
En transmissions multicast la informació de control pot consumir una amplada de banda considerable. Per a fer-se càrrec d'aquest problema RTCP ha establert un mecanisme per a reduir la transmissió d'informació de control a mesura que ingressen més usuaris, que consisteix a limitar la quantitat de trànsit de RTCP en un petit percentatge de tràfic de dades en RTP. Aquest mecanisme també assigna més amplada de banda RTCP als emissors actius.
Un cop un participant sap quanta amplada de banda pot consumir amb el trànsit de RTCP l'aplicació comença a enviar informes periòdics de la tassa adequada. Els informes d'emissor i de receptor contenen informació sobre les dades rebudes de totes les fonts en el període d'informes més recent. El que les diferència és que els informes d'emissor inclouen informació extra sobre l'emissor.
Tant els informes d'emissor (sender reports) com els de receptor (receiver reports) contenen un bloc de dades per font que ha estat escoltada des de l'últim informe. Cada bloc conté les següents estadístiques per a la font determinada:
    · El seu SSRC
    · La fracció de paquets de dades de la font que s'han perdut des que l'últim informe va ser enviat.
    · Nombre total de paquets perduts amb origen en aquesta font des de la primera vegada que va ser escoltada.
    · El nombre de seqüència més alt rebut des d'aquesta font
    · Jitter
    · Últim timestamp (conté l'hora del dia en què l'informe va ser generat) rebut a través de RTCP des de la font.
    · Retard des de l'últim informe d'emissor rebut a través de RTCP per a la font.
Els receptors poden deduir moltes coses a partir d'aquestes informacions sobre l'estat de la sessió. Per exemple, poden veure si altres receptors estan obtenint millor qualitat d'un altre emissor que la que aquests tenen. Això pot ser un indici per a reservar recursos el símptoma d'un problema a la xarxa que ha de ser atès.
Paquet de descripció de la font
Aquest paquet conté com a mínim el SSRC i el CNAME de l'emissor. El nom canònic és derivat, de tal manera que totes les aplicacions que generen media streams que requereixin ser sincronitzades, escolliran el mateix CNAME encara que puguin escollir diferents SSRC. Això permet al receptor identificar el media stream que ve del mateix emissor.
Es poden incloure altres dades en aquest paquet, com ara el nom real de l'usuari i el seu e-mail. Aquests són utilitzats a la interfície de l'usuari per a permetre identificar les persones.

## Capçalera RTCP

Capçalera MAC - Capçalera IP - Capçalera UDP - Capçalera RTCP - Dades
Capçalera RTCP
Versió: 2 bits Indica la versió RTP, que és la mateixa als paquets RTCP que als RTP
Padding: 1 bit Si està activat vol dir que el paquet conté alguns bits de padding al final que no formen part de la informació de control. L'últim byte del padding indica quants bytes de padding s'han d'ignorar.
Count: 5 bits Indica el nombre de blocs d'informes de receptor continguts en aquest paquet
Type: 8 bits Indica el tipus de paquet RTCP
Length: 16 bits Indica la llargada del paquet RTCP