Os protocolos RTP/RTCP

Abril 2017

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).

Veja também


RTP/RTCP protocols
RTP/RTCP protocols
Protocolos RTP/RTCP
Protocolos RTP/RTCP
Die RTP/RTCP Protokolle
Die RTP/RTCP Protokolle
Les protocoles RTP/RTCP
Les protocoles RTP/RTCP
I protocolli RTP/RTCP
I protocolli RTP/RTCP
Última modificação: 24 de abril de 2017 às 14:57 por ninha25.
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.