martes, 27 de mayo de 2014

Análisis del tráfico VoIP con Wireshark

Introducción

Una vez que el sistema PBX de VoIP está implantando, es hora de observar el comportamiento/rendimiento de los elementos involucrados en la comunicación: centralita/proveedor de VoIP, teléfonos IP y softphones.

Llevaremos a cabo parte de esta tarea empleando la aplicación Wireshark. Su función principal es la captura de tráfico generado entre aplicaciones/dispositivos que utilizan alguno de los protocolos de comunicación estudiados, dentro de una red de datos.

La captura de paquetes VoIP permitirá la extracción de conversaciones contenidas en este tipo de conexiones.

Para lograr nuestro objetivo, utilizaremos un fichero de captura (extensión .pcap) que contenga un fragmento de la comunicación entre dos dispositivos VoIP basada en los siguientes protocolos:
  • El protocolo de señalización SIP: Cuya función será la de establecer, coordinar y concluir la comunicación entre los usuarios. Se basará, a su vez, en el protocolo de descripción de sesión (SDP) orientado a sesiones de comunicación multimedia (ancho de banda y códecs).
  • El protocolo de transporte RTP: Encargado de la transferencia del audio. 

Conocimientos previos

Propiedades del protocolo SIP

  • Maneja identificadores similares a las etiquetas del lenguaje de marcado HTML. Por ejemplo, la referencia a un abonado tiene la forma abonado@dominio.
  • Los componentes del protocolo:
    • Agente de Usuario (cliente/servidor) y Agente de redirecciones
    • Servidor Proxy/de registro/de localización
  • Tipos de mensajes:
    • INVITE: Establece una sesión entre agentes de usuario. Contiene información sobre los usuarios y el tipo de datos transferido (audio / vídeo).
    • ACK: Confirma el establecimiento de una sesión.
    • OPTION: Solicitud de información de capacidades.
    • BYE: Mensaje de finalización de la conexión.
    • CANCEL: Elimina una petición pendiente sin influir en la sesión actual.
    • REGISTER: Registra la dirección SIP de un usuario.
  • Códigos de respuesta:
    • 1xx: Mensaje de información.
    • 2xx: Respuesta positiva. Se recibió la solicitud y ha sido aceptada.
    • 3xx: Respuesta postergada. Son necesarios otras tareas antes de determinar si es posible establecer la llamada.
    • 4xx: Error en la petición.
    • 5xx: Fuera de servicio temporal.
    • 6xx: No aceptada la llamada.

Propiedades del protocolo RTP

Tras el establecimiento de la conexión, ahora le toca el turno a la transmisión del audio (voz). Para ello se utiliza el protocolo de transporte en tiempo real (RTP). Encargado de la transferencia y recepción de los datos en el orden correcto. También dispone de información acerca de los códecs de audio/vídeo.

Captura de paquetes VoIP 

Después de descargar e instalar la aplicación, iniciamos Wireshark desde el grupo de programas Wireshark. Accediendo al menú [capture]>[interfaces] veremos la lista adaptadores de red encontrados por el programa. Seleccionaremos la interfaz sobre la que deseamos  capturar el tráfico.


Y a continuación pulsamos en el botón [options] de la interfaz y habilitamos la resolución de nombres de red y asegurándonos que la captura de paquetes en modo promiscuo está habilitada. Al final iniciamos la captura haciendo clic sobre el botón [Start].


Una vez concluida la recogida de datos, detenemos la captura pulsando en el botón [Stop capture] en la barra de herramientas de Wireshark.


Y salvamos el fichero eligiendo [Save] o [Save as] en el menú [File] y asegurándonos que tenemos activa la opción “All packets” y el tipo “Wireshark/tcpdump/... -libpcap (*.cap,*..pcap)”. 


Análisis de paquetes VoIP

Con el fichero .pcap generado en el apartado anterior disponemos de toda la información necesaria para estudiar la sesión VoIP establecida entre llamante y llamado.

Solicitud de establecimiento de sesión: A través del protocolo SIP se realiza una petición de conexión (request) con la orden INVITE desde el teléfono llamante sobre el teléfono IP llamado:


Estudiando las diferentes partes de este mensaje obtendremos la siguiente información:

    • Cabecera (header): Identifica los agentes usuario origen y destino así como la descripción de la sesión:
      • Via: Establece las propiedades de la ruta de comunicación (protocolo: UDP, dirección IP y puerto destino entre otros).
      • From: Llamante.
      • To: Llamado.
      • Call-ID: Identificador de la sesión.
      • C-Seq: Nº de secuencia.
    • Cuerpo (Body): Ofrece información en detalle de las propiedades de transmisión del audio en base al protocolo de SDP.
  • Sesión aceptada:

  • Finalización de sesión:

De manera simplificada, la secuencia de la sesión sigue un patrón similar al de la figura siguiente:

Wireshark también ofrece la posibilidad de visualizar esta secuencia (flujo –flow-) dentro del apartado de análisis gráfico [Statistics] >[Flow chart] > (*) Displayed packets:


Reproducción de la conversación a partir del fichero .pcap 

Dentro del menú de telefonía [Telephony] de la pantalla principal pulsamos sobre la opción [VoIP calls] y observamos en la pantalla de la aplicación los paquetes obtenidos que forman parte de la comunicación IP a analizar.

La transmisión de la voz está asociada al protocolo RTP. Es posible conocer las características de la transmisión de audio filtrando el contenido del archivo .pcap con la palabra clave “rtp” tal y como muestra la figura anterior.

El campo donde se detalla las propiedades del códec utilizado es “tipo de carga útil” (Payload type): en el ejemplo mostrado tenemos: ITU-T G.711 PCMA (8), es decir usa el códec de audio G.711, estandarizado por ITU con una frecuencia de muestreo 8KHz y el algoritmo PCMA para compresión/descompresión.

Para conocer la duración de la conversación VoIP así como la referencia a los participantes y el protocolo utilizado simplemente debemos acceder a la opción [Telephony]>[VoIP Calls]:


Al seleccionar uno de las llamadas completadas, podremos escuchar su contenido pulsando sobre el botón [Player].


<>

No hay comentarios:

Publicar un comentario