RTCP

O Protocolo de Transporte em Tempo Real (Real Time Control Protocol) ou protocolo de controle RTP é baseado na transmissão periódica de pacotes de controle para todos os participantes da sessão, usando o mesmo mecanismo de distribuição dos pacotes de dados. O protocolo fundamental deve prover a multiplexação dos dados e controle dos pacotes, por exemplo, separando os números das portas com UDP.

O protocolo RTCP realiza basicamente quatro funções:

1. O RTCP provê um retorno (feedback) da qualidade do serviço (QoS – Quality of Service) da distribuição de dados. Tal distribuição é parte do protocolo de transporte RTP e está relacionado com o controle de fluxo e congestionamento de outros protocolos de transporte.

2. O RTCP carrega um identificador do nível de transporte para um código RTP chamado de nome canônico ou CNAME (canonical name). Já que o identificador SSRC pode mudar se um conflito for descoberto ou um programa for reiniciado, os receptores pedem o CNAME para saber a localização de cada participante. Receptores também podem requisitar o CNAME para associar múltiplos fluxos de dados de um determinado participante num conjunto de sessões RTP, para sincronizar áudio e vídeo, por exemplo.

3. As duas primeiras funcionalidades requerem que todos os participantes enviem pacotes RTCP, portanto a taxa deve ser controlada para que RTP possa ser escalado para um grande número de participantes. Com cada participante enviando os seus pacotes de controle para todos os outros, cada um pode observar independentemente do número de participantes. Esse número é usado para calcular a taxa que cada pacote é enviado.

4. E uma função opcional do protocolo é de conduzir a sessão com o mínimo de informação de controle, por exemplo, a identificação de um participante aparecendo da interface com o usuário. Isso é mais usado em sessões “mais soltas” onde os participantes podem entrar e sair sem um controle de membros.

As funções um, dois e três devem ser utilizadas em todos os ambientes, mas particularmente em ambientes de transmissão múltipla (multicast) IP. Os designers de aplicações RTP devem evitar mecanismos que trabalhem apenas com uma transmissão (unicast) e que não vão escalonar para um grande número de usuários. Transmissões de RTCP pode controlar separadamente os remetentes e destinatários para os casos como os links unidirecionais onde o feedback dos receptores não é possível.

O protocolo ainda pode ser utilizado com o enfoque em segurança. Ele pode ser usado para encriptar a mensagem de um usuário, caso ele assim deseje. O algoritmo de encriptação default é o DES (Data Encryption Standard ou encriptação oficial de dados) no cipher block chaining (CBC) mode (ou modo de corrente de blocos de cifras). Qualquer aplicação que use encriptação em RTP deve ser compatível com o DES, de forma a poder utilizar suas funcionalidades.

Formato do pacote RTPC:

Essa especificação define vários tipos de pacotes RTPC para transportar uma variedade de informações de controle:

SR: Relato de Remetente (Sender Report), para a transmissão e recepção de estatísticas dos participantes que são remetentes ativos. Em adição às características do RR referente ao feedback de qualidade de recepção, ele contém informações sobre os dados enviados, ou seja, informações sobre sincronização entre mídias, contador cumulativo de pacotes, e número de bytes enviados.

RR: Relato de Destinatário (Receiver Report), para a recepção de estatísticas dos participantes que não são remetentes ativos, ou seja, estão apenas recebendo pacotes. Estes pacotes contêm um feedback que indica se a qualidade de recepção foi boa, incluindo o número máximo de pacotes recebidos, o número de pacotes perdidos, o atraso entre chegadas, e o tempo de sincronização calculado entre emissor e receptor.

SDES: Descrição dos códigos de itens, incluindo CNAME.

BYE: Indica o fim da participação.

APP: Função específica da aplicação.


Estrutura do protocolo:

• Versão – Itentifica a versão do RTP que é a mesma dos pacotes RTPC como nos pacotes de dados RTP.

• P (Padding ou preenchimento) – Quando ativado, esse pacote RTCP contém alguns octetos de padding que não fazem parte das informações de controle. O último octeto do padding é a conta de quantos octetos de padding existem e deve ser ignorado. Padding pode ser necessário por alguns algoritmos de encriptação com blocos de tamanho fixo.

• RC – Contador de Recepção (Reception report count). O número de blocos de recepção recebidos está contido nesse pacote. O valor zero é um valor válido. O pacote do tipo Contains a constante 200 para identificar esse pacote como um pacote RTCP SR.

• Tamanho – O tamanho desse pacote RTCP é uma palavra de 32 bits menos um, incluindo o cabeçalho e algum padding. (Zero é uma opção válida e evita a possibilidade de um loop infinito ao escanear um pacote RTCP, enquanto contar uma palavra de 32 bit evita a necessidade de validar um múltiplo de 4).

RTCP e VOIP

O protocolo RTPC é usado em sinalização de VoIP e o RTP é utilizado para enviar e receber a voz. No entanto, RTP/RTCP são usados com outros protocolos. Voz é geralmente encapsulada em UDP sem necessidade de ACK (Acknowledment, um sinal de recebimento) usados em TCP. Porém, como as Redes IP podem rotear pacotes em diferentes caminhos até o seu destino, os pacotes RTP podem chegar fora de ordem, terem atrasos ou serem perdidos. Isso pode gerar distorção na voz, como por exemplo, a voz robótica ou ter falhas no recebimento da voz.

Uma opção para melhorar a qualidade do VoIP numa rede de baixa transmissão é usar a compressão de cabeçalho. Usando o CRTP (Compressed Real-time Transport Protocol ou protocolo de transporte em tempo real comprimido), cabeçalhos RTP, UDP e IP caem de 44 bits para de 2-4 bits.