O que são os protocolos RTP e RTCP
A explosão dos computadores, associada à disponibilidade de material informático de áudio/vídeo barato e de conexões velozes, provocou o interesse pelo uso da rede Internet para enviar áudio e vídeo, tipos de dados que, tradicionalmente, eram reservados às redes especializadas. Já há alguns anos a videoconferência tornou-se uma prática comum para todos. Porém, a própria natureza da Internet faz com que esta rede não seja adaptada à transmissão dos dados em tempo real e diminua a qualidade dos áudios enviados por ela. Nos últimos anos, várias soluções, sob a forma de mecanismos de controle, foram aplicadas e testadas em softwares de audioconferência e telefones gratuitos pela Internet. As mais correntes são os protocolos RTP e RTCP.
Protocolos para aplicações multimídias
RTP - Real-time Transport Protocol
O objetivo do
RTP (em português, Protocolo de Transferência em Tempo Real) é fornecer um meio uniforme para transmitir em IP dados sujeitos a restrições de tempo real (áudio, vídeos, etc.). A principal função do RTP é a de aplicar números de sequência de pacotes IP para reconstituir as informações de voz ou vídeo, mesmo que a rede subjacente altere a ordem dos pacotes. O RTP permite identificar o tipo de informação transportada, acrescentar indicadores temporais e números de sequência à informação transportada e controlar a chegada ao destino dos pacotes. Além disso, o RTP pode ser veiculado por pacotes Multicast (vários pontos) para encaminhar conversas para destinatários múltiplos.
RTCP - Real-tim Transport Control Protocol
O protocolo
RTCP (em português, Protocolo de Controle de Transferência em Tempo Real) baseia-se em transmissões periódicas de pacotes de controle por todos os participantes da sessão. É um protocolo de controle dos fluxos RTP que permite veicular informações básicas sobre os participantes de uma sessão e sobre a qualidade de serviço.
Como utilizar o RTP e o RTCP
O RTP permite a
gestão dos fluxos multimídia (voz e vídeo) em IP. O RTP funciona em UDP. O cabeçalho RTP comporta informações de sincronização e numeração. A codificação dos dados dependerá do tipo de compressão utilizado. O RFCxxxx especifica o RTP e a adaptação de um método de compressão ao RTP será descrita em um RFC específico.
Um canal RTP é empregado por tipo de fluxo: um para o áudio e outro para o vídeo. O campo xxx é empregado para a sincronização. O RTP oferece um serviço do começo ao fim. Ele acrescenta um cabeçalho que fornece as informações de
timing necessárias para a sincronização de fluxos de tempo real do tipo som e vídeo. O RTP (Real-time Transport Protocol) e o RTCP (Real-time Transport Control Protocol) permitem, respectivamente, transportar e controlar ondas de dados que têm propriedades de tempo real.
O RTP e o RTCP são protocolos que se situam no aplicativo e utilizam os protocolos subjacentes de transporte TCP ou UDP. Porém, a utilização do RTP/RTCP é feita, geralmente, com base no UDP. O RTP e o RTCP podem utilizar o modo Unicast (ponto a ponto) bem como o modo Multicast (multiponto). Cada um deles utiliza uma porta separada: o RTP utiliza a porta par e o RTCP a porta ímpar, imediatamente superior.
Como é o formato do cabeçalho RTP
O
cabeçalho RTP comportará as seguintes informações:
<--------------------------- 32 bits --------------------------->
| V=2 | P | X | CC | M | Sequence number |
| Timestamp |
| Identificador da fonte de sincronização (SSRC) |
| Identificadores da fonte de contribuição (CSRC) |
Veja o significado dos diferentes campos do cabeçalho:
O
campo Versão (V), de 2 bits de comprimento, indica a versão do protocolo;
O
campo padding (P) tem 1 bit; se P for igual a 1, o pacote contém bytes adicionais de preenchimento para terminar o último pacote;
O
campo extensão (X) tem 1 bit; se X for igual a 1, o cabeçalho é seguido de um pacote de extensão;
O
campo CSRC count (CC), de 4 bits, contém o número de CSRC que acompanha o cabeçalho;
O
campo marker (M) tem 1 bit e sua interpretação é definida por um perfil de aplicação;
O
campo payload type (PT), de 7 bits, identifica o tipo de
payload (áudio, vídeo, imagem, texto, HTML, etc.);
O
campo sequence number, de 16 bits, tem valor inicial aleatório e recebe um valor 1 por pacote enviado, o que ajuda a detectar pacotes perdidos;
O
campo timestamp, de 32 bits, reflete o momento em que o primeiro byte do pacote RTP foi mostrado. Este momento deve ser derivado de um relógio que avança de maneira linear para permitir a sincronização e a chegada ao destino;
O
campo SSRC, de 32 bits, identifica de maneira única a fonte; seu valor é escolhido de forma aleatória pela aplicação. O campo SSRC identifica a fonte de sincronização. Este identificador é escolhido de maneira aleatória para que seja único entre todas as fontes de uma mesma sessão. A lista dos CSRC identifica as fontes (SSRC) que contribuíram para a obtenção dos dados contidos no pacote com estes identificadores. O número de identificadores é dado no campo CC;
O
campo CSRC, de 32 bits, identifica as fontes.
Como é o formato do cabeçalho RTCP
O objetivo do RTCP é fornecer diferentes tipos de informações e um
feedback quanto à qualidade de recepção. Ele comportará vários campos, tais como
versão (2 bits);
padding (1 bit);
reception report count, que indica o número de relatórios no pacote;
packet type (8 bits);
length, comprimento do pacote em 32 bits;
SSRC, identificação da fonte específica ao emissor; e
NTP timestamp (64 bits).
Também há os campos
RTP timestamp (32 bits);
sender's packet count , contagem de pacotes do remetente;
sender's byte count, contagem dos bytes do remetente;
SSRC-n, número da fonte cujo fluxo é analisado;
fraction lost (8 bits);
cumulative number of packets lost, número acumulado de pacotes perdidos; e
extended highest sequence number received, número da maior sequência.
Por fim, está o campo
interarrival jitter (32 bits), estimativa do intervalo de tempo do trânsito entre dois pacotes de dados. A fórmula para calculá-lo é
J=J+ (|D (i-1, i)|- J) /16
, onde
i é o primeiro pacote,
i-1 é o pacote precedente,
D é a diferença e
J é o segundo pacote.
O protocolo RTCP comporta ainda os campos
last SR timestamp e
delay since last SR, ambos de 32 bits.
Como é usado o RTCP em relação ao RTP
O
RTCP é um protocolo de controle que mede o desempenho do RTP. Por outro lado, ele não oferece garantias. Por isso, é preciso empregar um protocolo de reserva do tipo RSVP ou garantir que as relações de comunicações utilizadas são dimensionadas corretamente em relação ao uso que é feito delas.
Em quais protocolos funcionam o RTP e o RTCP
O
RTP/RTCP está acima do transporte UDP/TCP. O RTP é um protocolo de sessão, mas está inserido no aplicativo. Cabe ao programador integrá-lo.
Como funciona o fluxo veiculado
O RTP não tem nada a ver com o tipo de fluxo, ele está acima do próprio UDP e, este, por sua vez, acima do IP. O tipo de fluxo é utilizado no IP. Ele traz um número de sequência, um
timestamp (marca temporal que é uma sequência de caracteres mostrando a hora e a data de um evento) e um identificador único da fonte (SSRC).