Os protocolos RTP/RTCP

A dupla de protocolos RTP - Protocolo de Transferência em Tempo Real - e RTCP - Protocolo de Controle de Transferência em Tempo Real - é largamente utilizada para garantir a qualidade e a operação de videoconferências e outras transmissões de áudio na internet. Confira mais sobre esses protocolos no artigo abaixo.

O que são os protocolos RTP e RTCP

Cada vez mais realizamos videoconferências para conversar com as pessoas pela internet. No entanto, a internet não é um ambiente naturalmente adaptado à transmissão de dados em tempo real, o que pode diminuir 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 videoconferência e telefonia. As mais correntes e com melhor desempenho são os protocolos RTP e RTCP.

Protocolos para aplicações multimídias

RTP - Real-time Transport Protocol

O objetivo do RTP é fornecer um meio uniforme de transmissão de dados sujeitos a restrições de tempo real. A principal função do RTP é aplicar números de sequência de pacotes IP para reconstituir as informações de áudio 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-time Transport Control Protocol

O protocolo RTCP 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.

Um canal RTP é empregado por tipo de fluxo: um para áudio e outro para vídeo. O RTP acrescenta um cabeçalho que fornece as informações de timing necessárias para a sincronização de fluxos de tempo real. O RTP e o RTCP permitem, respectivamente, transportar e controlar pacotes de dados que têm propriedades de tempo real.

O RTP e o RTCP são protocolos que se situam no software e utilizam geralmente o protocolo de transporte UDP. Eles podem utilizar o modo Unicast (ponto a ponto) ou 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 ou preenchimento (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 dado transferido (á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 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), fração dos dados perdida; 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, 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 (sequência de caracteres mostrando hora e data de um evento) e um identificador único da fonte (SSRC).

Foto: © Antonio Guillem - 123RF.com

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
Este documento, intitulado 'Os protocolos RTP/RTCP', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade