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