Seção: Tutoriais VoIP

 

Desempenho VoIP: Tecnologia VoIP

 

Atualmente o TCP/IP está presente na maioria dos sistemas operacionais de redes de pacotes, sendo utilizado em uma gama enorme de aplicações. É um protocolo específico para aplicações não sensíveis ao atraso como a internet. As aplicações de voz são extremamente sensíveis a qualquer atraso, no caso, atraso de pacotes. Dessa forma, os protocolos da camada de transporte não são adequados para aplicações de voz em tempo real, devido à imprevisibilidade desse atraso.

 

O TCP não suporta transmissão de voz em tempo real porque utiliza um mecanismo de recuperação dos dados perdidos por retransmissão, i.e., no caso da perda de um pacote, a liberação dos dados para a aplicação deve esperar por todas as retransmissões, acarretando atrasos intoleráveis. Por outro lado, o TCP é um protocolo confiável. O UDP evita esses problemas de atraso, pois fornece um serviço de datagrama, mas tem como grande desvantagem o fato de não ser confiável.

 

O codificador é o equipamento responsável por digitalizar a voz. Com o sinal digitalizado, a voz pode ser transportada através de uma rede de comutação de pacotes. Até que ocorra a transmissão dos pacotes de voz, estes passarão pelos processamentos necessários nas diferentes camadas da rede.

 

No receptor, todo o processamento inverso deverá ser feito, sendo que o último e mais complexo é transformar o sinal digital para analógico novamente, e recuperar, da forma mais fiel possível, a conversação transmitida.

 

Existem duas classificações para a codificação da voz:

  • Codificação baseada em forma de onda;
  • Codificação paramétrica (Vocoders).

O primeiro método faz a codificação diretamente sobre a forma de onda do sinal através do processo de amostragem. Converte a amplitude de cada amostra para um valor discreto aproximado por valores pertencentes a um conjunto finito. Este último processo é chamado quantização. Já o Vocoder, analisa as amostras de voz e associa os parâmetros apropriados para a modelagem do sinal. Estes parâmetros são enviados ao receptor para que este possa decodificar o sinal recebido e reconstruir a voz.

 

A escolha do codificador de voz (codec) é fundamental para o sucesso da aplicação VoIP. Os codecs modernos são inteligentes e executam funções sobre o fluxo de dados de voz, como: compressão, supressão de silêncio e cancelamento de eco, o que faz com que o fluxo na saída do codec seja normalmente do tipo VBR.

 

O fluxo na saída de um codec de voz se apresenta sob a forma de conjuntos de pacotes de tamanho fixo, emitidos segundo uma cadência constante, o que caracteriza um serviço do tipo ON/OFF em rajada.

 

Um conjunto de pacotes (rajada) é emitido seqüencialmente segundo uma taxa máxima, o que determina o período de ON do serviço. Uma vez emitido um conjunto de pacotes de tamanho fixo, haverá um período de inatividade até que seja emitido o próximo conjunto de pacotes – o que caracteriza o período de OFF do serviço (conferir a figura a seguir).

 

Um exemplo de codificador com essas características é o G.729 do ITU-T, que apresenta uma qualidade de voz boa, com uma pontuação MOS de 3.29 e uma taxa de bit média de apenas 8 kbit/s. Todos esses parâmetros de classificação serão apresentados no decorrer do trabalho.

 

O transporte dos pacotes de voz deve ser realizado pela rede segundo exigências específicas deste serviço, também conhecidas como parâmetros de QoS da aplicação. As redes IP não oferecem nenhum tipo de QoS as suas aplicações multimídia, o que é considerado atualmente o principal empecilho para as aplicações multimídia. MOS (Mean Opinion Score) é uma medida de qualidade da voz amplamente aceita em telefonia que varia entre 1 (ruim) e 5 (excelente).

 

O padrão dominante para transmitir serviços multimídia em redes de pacotes como IP é a recomendação H.323 do ITU-T, que sugere, para o encapsulamento do serviço de voz, a utilização da pilha de protocolos IP/UDP/RTP. No entanto, o H.323 não fornece qualquer garantia de QoS, especifica apenas, como um protocolo de transporte confiável como o TCP, pode ser utilizado para transmissão de informações de controle destes serviços.

 

No âmbito do IETF, as discussões são baseadas em cinco abordagens para o oferecimento real de QoS pela rede: A arquitetura de serviços integrados (IntServ), que utiliza o protocolo RSVP para reserva de recursos, a Arquitetura de Serviços Diferenciados (DiffServ), o MPLS (Multiprotocol Label Switching), o Roteamento com QoS e a Engenharia de Tráfego.

 

Destas abordagens, a arquitetura de serviços integrados com RSVP e a arquitetura de serviços diferenciados (DiffServ) são as que oferecem as melhores perspectivas quando se quer implementar serviços multimídia com QoS efetivo em redes corporativas com abrangência limitada.

 

O protocolo RSVP funciona no topo do protocolo IP, na camada de transporte. É um protocolo de controle e sinalização, compatível com o ICMP ou IGMP. O RSVP foi projetado para funcionar com os protocolos de roteamento, considerando um único receptor ou um grupo de receptores.

 

Algumas aplicações são direcionadas para apenas um receptor (unicast) enquanto que outras podem enviar dados a mais de um receptor (multicast), sem ter que especificar cada destinatário para a rede. Com o RSVP, a aplicação é capaz de notificar antecipadamente quais os recursos da rede que serão necessários para atender às exigências de QoS da aplicação (sinalização).


Os roteadores envolvidos fazem uma reserva e se comprometem a oferecer estes recursos de forma garantida. Se o roteador não é capaz de disponibilizar de forma garantida estes recursos, a aplicação não pode ser implementada. Neste caso, a origem é imediatamente notificada, evitando-se desperdício de tempo e recursos numa tentativa se chance de sucesso.

Os componentes do RSVP são o transmissor, o receptor e os roteadores intermediários que intervém na rota entre a origem e o destino dos pacotes. Seu funcionamento pode se resumido como segue: o transmissor origina os dados, especifica o destino dos mesmos e define para a rede as exigências de QoS em relação ao transporte destes dados.


O receptor, por sua vez, envia notificações para os roteadores envolvidos para que aloquem recursos em termo de banda e buffers e assim permitam repassar os pacotes segundo as exigências de QoS definidas. Somente depois de completados estes passos, em ambos os sentidos (bidirecional), são emitidos os pacotes contendo os dados de voz. A abordagem segundo a arquitetura de DiffServ é mais recente que a abordagem do IntServ.


O objetivo principal do DiffServ é o oferecimento de uma arquitetura mais escalável e mais gerenciável para obter diferenciação de serviços em redes IP. O DiffServ parte do pressuposto de que este objetivo pode ser alcançado, centrando o foco não em fluxos de pacotes individuais, mas em fluxos de tráfego agregados – formados por um conjunto de aplicações com requisitos de serviço semelhantes.


O protocolo RTP (Real Time Protocol) é um mecanismo genérico para suportar a integração de voz, vídeo e dados e foi definido pela RFC 1889. Sua função principal é agir como uma interface melhorada entre as aplicações de tempo real e os protocolos das camadas já existentes. De maneira geral, o RTP tenta, mas não garante o fornecimento de pacotes no tempo desejado ou de acordo com uma qualidade de serviço especificada.

O cabeçalho do RTP fornece o número de seqüência e a informação de tempo através de uma etiqueta de tempo (time-stamp) que é necessária para a remontagem do fluxo de tempo real, a partir dos pacotes IP recebidos. O protocolo, no entanto, não assegura que os pacotes sejam entregues em ordem, nem tão pouco oferece uma garantia de tempo de entrega dos pacotes – o que o torna pouco confiável.


As aplicações geralmente usam o RTP junto com o UDP, porém pode ser usado com outros protocolos de transporte. A tabela abaixo mostra como fica um pacote IP utilizando os protocolos ideais para transmissão de voz.

 


Figura 1: Pacote IP Gerado por uma Aplicação de Voz G.711.

 

O campo payload inclui o esquema de codificação usado pelo media gateway para digitalizar a voz. Isso auxilia o receptor a reconstruir a voz de acordo com o algoritmo específico de codificação que foi utilizado pelo transmissor.


O protocolo RTCP é um protocolo que pode ser usado juntamente com o RTP, porém sua utilização não é necessária para que o RTP funcione. Trata-se de um protocolo opcional cuja principal função é transmitir periodicamente pacotes de controle para os participantes de uma conversação com o objetivo de monitorar a qualidade de serviço e transportar informações úteis de tais participantes. Trata-se de um protocolo bastante utilizado em aplicações de videoconferência.


Embora as informações retornadas pelo RTCP não informem onde determinado problema está ocorrendo (somente informa que está ocorrendo um problema), elas podem servir como ferramenta para localizar o problema. Como as informações são geradas por diferentes gateways em uma rede, isso ajuda a delimitar a área da rede em que o problema pode estar ocorrendo.

A quantidade de largura de banda utilizada pelo RTCP deve ser pequena para que não atrapalhe o transporte dos dados, no caso a voz. Algumas especificações do IETF recomendam que a fração de largura de banda que deve ser usada pelo RTCP deve ser 5% da largura utilizada pelo RTP.


Para que a voz seja transmitida através de uma rede IP, utilizando o protocolo UDP da camada de transporte, ela primeiramente deve ser codificada, ou seja, deve-se transformar o sinal analógico da voz em um sinal digital, para que o mesmo possa fazer parte do campo de dados de um pacote IP.

Tal codificação é feita utilizando-se equipamentos especiais, que além de codificar também irão comprimir os dados. Tais dispositivos são chamados de codecs. Os mais modernos além de comprimir ainda fazem supressão de silêncio e cancelamento de eco. Esses dispositivos serão mostrados na próxima seção.