Considerações sobre medição de JITTER em operadoras VOIP no Wireshark [Artigo]
Neste artigo, tratamos do assunto jitter quando trabalhamos com Asterisk e operadoras VoIP.
[ Hits: 4.635 ]
Por: Rogerio Eduardo Silva Silveira em 07/10/2016 | Blog: http://www.vivaolinux.com.br/~Algorista
O Wireshark é uma ferramenta fantástica para estudo de pacotes de rede, mas envolve sutilezas que podem nos confundir na medição de jitter em operadoras VoIP.
Em comunicações digitais o padrão de digitalização de VOZ utilizando-se o codec G711 é de 8 mil vezes a cada segundo ou 8KHz, frequência utilizada para comutação do sinal analógico da voz em sinais digitais utilizando-se uma amplitude de 256 Bits. Ou seja, para cada segundo de comunicação não compactada utilizando-se esse tipo de sample teremos (8000x256)÷8= 256KBps.
A função do codec é digitalizar/converter a voz do usuário em uma sequência de pacotes capazes de serem transmitidos pelas redes de dados.
Outros protocolos são responsáveis pelo controle da comunicação na entrega deste áudio em seu destino de forma sequencial e ordenada (ex.: UDP/RTP). Tais protocolos carregam informações sobre o payload de áudio que levam; uma destas informações é o número de sequência necessário para ordenamento do áudio do outro lado e medir perdas de dados no meio de comunicação, e um TIMESTAMP, que é o tempo de referência do áudio para correta decodificação e no tempo correto do outro lado.
Ref.: RTP: A Transport Protocol for Real-Time Applications
Normalmente com um sample de 8Khz um pacote de áudio RTP contem 20ms de áudio, traduzindo 160 posições de sample em cada pacote:
X=(8000*20) ÷1000
Daí o incremento do campo de TIMESTAMP de 160 em 160 para cada pacote RTP monitorado.
A análise que o Wireshark faz sobre jitter é uma media de todo o tempo de atraso sobre toda a comunicação. Então como são stream pequenos um atraso grande em apenas um pacote acaba por deixar toda a análise alterada, e é exatamente isto o que ocorre com operadoras voip por terem um pdd (post dial delay) alto.
Na figura abaixo temos realçado em um trafego sip exatamente o que seria o post dial delay:
PDD seria o intervalo de tempo entre o invite para a operadora e o recebimento do "180 ringing". Infelizmente o asterisk não mede o pdd portanto para conseguir tal medição ou mudamos o código c do app_dial.c ou recorremos a informações AMI. Em próximo post será detalhado as duas abordagens.
Na análise por amostragem das comunicações VOIP selecionando-se uma ligação onde o jitter médio foi alto, diagnostica-se que após a solicitação de discagem para a operadora, o primeiro pacote RTP sai da operadora e chega no PABX, uma pequena pausa se estende variando de 3 a 8 segundos para o próximo pacote RTP (PDD), a partir daí todos os outros pacotes RTP sequenciais chegam ao PABX com um jitter muito baixo (dentro do padrão acima descrito) com uma diferença media de 0.02 ou 20 ms segundos de atraso entre cada pacote.
A análise que o Wireshark faz sobre jitter é uma media de todo o tempo de atraso sobre toda a comunicação. Então como são stream pequenos um atraso grande em apenas um pacote acaba por deixar toda a análise alterada.
No último print temos uma análise do jitter por pacote para o primeiro stream mostrado.
Entre o primeiro e o segundo pacote temos um jitter muito alto realmente. Mas após isso todos os pacotes seguem com o delay de no máximo 40 milisegundos.
Segue abaixo os prints que comprovam o descrito.
Para verificação de jitter em operadoras voip pelo Wireshark devemos verificar se o pdd foi significativo, e; em caso positivo devemos excluí-lo do cálculo. O ideal como dito acima é a existência da informação pdd em cada ligação para melhor compreensão do jitter.