[VOIP] Captura e análise de pacotes VoIP

Captura dos pacotes

Como todos já devem saber, quando o problema é extremamente complexo e os debugs não estão sendo muito claros, devemos partir para a captura de pacotes.

Ao ler sobre este termo, já nos vem a cabeça o Wireshark, sendo este o importante e famoso software de análise de protocolos. Através deste software podemos capturar todo o tráfego em uma interface para analisar as sinalizações, protocolos, etc.

O intuito desde documento não será abordar o Wireshark (para isso existe diversos artigos na internet a fora explicando em como utilizá-lo) mas sim em QUANDO devemos fazer uma captura de pacotes para análise de problemas relacionados a VoIP.

Pois bem, como dito acima, a "captura de pacotes" (em ingles o termo é conhecido como Sniffing) consiste em capturar todo o tráfego sendo transmitido ou recebido através de uma interface de redes para ser possível analisar os pacotes, mas para que essa captura seja feita é necessário algumas configurações na sua infraestrutura.

Por exemplo, é necessário capturar todo o tráfego de uma interface do Switch onde um IP Phone está conectado. Para isso o administrador de redes faz o espelhamento da porta (através da feature SPAN - Switched Port Analyzer) onde o telefone está conectado para outra interface que está conectada a um computador e com o Wireshark aberto em modo de captura. No momento da captura é efetuado os devidos testes para reprodução do problema/comportamento e assim que finalizado, a captura é interrompida para iniciar a análise. Veja na imagem abaixo uma ilustração do exemplo acima.

span01.PNG

O exemplo acima demonstra uma captura de pacotes para analizar os pacotes RTP (Real-Time Protocol) trocados entre o IP Phone A e o IP Phone B.

Existem várias formas de SPAN, todas abordadas neste documento oficial.

Lembrando que o SPAN é aplicado em camada 2 apenas. Mas e se for necessário uma captura em um Voice Gateway que é interligado a um provedor SIP ? Bom, em casos assim podemos utilizar a feature IP Traffic Export (disponivel a partir da IOS 12.4) para capturar, e exportar para um servidor FTP, TFTP e analisar depois com o Wireshark.  Conforme exibido na imagem abaixo.

spanlayer3.PNG


Agora que já sabemos o que é e como fazer uma captura de pacotes, como devemos iniciar a análise ? Bom, primeiro deve-se ter mapeado aonde está o problema. Se o problema é relacionado a ligações ficando presas, digitos não sendo enviados, podemos deduzir que é algo relacionado a sinalização, portanto deve-se focar no protocolo SCCP ou SIP, se for problemas de one-way voice (voz em apenas um sentido da chamada) devemos checar o protocolo RTP

Analisando a captura dos pacotes

Agora vem a parte interessante: Analisar os pacotes capturados.

Utilizando o Wireshark, abra a captura e reserve um bom tempo para analisar as informações. Felizmente o Wireshark possui diversos filtros e expressões para que a investigação seja mais rápida, e com base nestes filtros (que com certeza você encontrou em um excelente documento na internet explicando como usar o Wireshark) é possível filtrar origem, destino, tipo do pacote, protocolo etc etc etc....

Eu particularmente já tive que fazer diversas capturas para analisar chamadas voip, principalmente com problemas de One-Way Voice. Em captura de chamadas VoIP, é possivel "reconstruir" a conversa utilizando o Wireshark, sendo este  um importante recurso para validar estes problemas de "a pessoa do outro lado não me escuta, mas eu escuto ela".

DICA: One Way Voice é ocasionado por Balanceamento/Roteamento indevido dos pacotes RTP ou bloqueio em regras de Firewall

Para analizar os fluxos de voz presentes em sua captura com o Wireshark, vá em Telephony >> RTP >> Show All Streams

wire1.png


Como podemos ver na imagem acima, temos 14 Streams RTP nesta captura. Cada sentido da chamada possui o seu Stream (entrada/saida).

Ao selecionar um dos Streams e clicarmos em Analyze, podemos ver a origem e o destino da chamada e outras diversas informações como Jitter, perdas, etc.


wire2.png

Ao clicarmos em Player, abrirá uma nova janela. Clique em Decode, e selecione o Stream para que o botão Play fique ativo para que você possa ouvir o áudio. Conforme exibido na imagem abaixo.


wire3.png


Caso, sua análise forense exija que você exporte o arquivo, este poderá ser salvo em formato .raw ou .au.

Exportando o áudio capturado

Agora que a chamada foi capturada, analisada e exportada.... como podemos fazer para converter o arquivo .raw ou .au em WAV para que possamos ouvir o audio sem o uso do Wireshark? Simples, utilize o Audacity.

No Audacity, vá em Arquivo > Importar > Dados Raw...

Selecione o arquivo e em seguida insira as informações referente ao Codec utilizado na chamada.


wire4.png

Se você não informar os dados corretamente a conversão não funcionará. Conforme exibido na imagem acima, podemos ver que o Codec é G711a-law, Little-Endian (ordem dos bytes) e a frequência de 8000Hz.

Pronto, clique em importar e o áudio estará no Audacity, a partir dai você pode exportar para o formato que desejar, inclusive MP3.

Histórico de versão
Revisão #
1 de 1
Última actualização:
‎02-15-2014 03:38 PM
Actualizado por:
 
Etiquetas (1)