Configuración práctica de Asterisk (5ª parte): Puertos utilizados en los paquetes RTP de audio

En una entrada publica el 12 de junio de 2014 se analizó en este mismo blog el problema de los puertos que deben ser abiertos en el cortafuegos o firewall de la organización a fin de permitir las comunicaciones VoIP. En aquella ocasión, la PBX utilizada para las pruebas fue la NCP 500 de Panasonic, disponible en el aula de telefonía del Instituto de Formación Profesional Tartanga. Las conexiones salientes y entrantes se realizaron a través del operador de VoIP Sarenet, con el cual nuestro instituto tiene contratado el servicio Sarevoz IP. Mediante diversas pruebas y capturas de paquetes con Wireshark comprobamos los tres siguientes hechos:

  • La señalización entre Sarenet y la NCP500 siempre es a través del puerto UDP 5060.
  • En la NCP500,  el tráfico RTP con los paquetes de voz se envía y se recibe a través de puertos UDP comprendidos entre el 12000 y el 12255 y seleccionados de forma dinámica para cada llamada establecida.
  • Sarenet envía y recibe su tráfico RTP mediante puertos UDP seleccionados de forma dinámica y en un rango muy amplio. En las pruebas realizadas comprobamos como a veces los puertos UDP tomaban valores cercanos al 52000 y otras veces valores por encima del 58000.

La NCP500 necesita utilizar un rango de puertos UDP porque para cada llamada IP establecida a su través, ya sea interna o externa, los paquetes de voz RTP se dirigirán a la dirección IP de la tarjeta DSP de la centralita. Puesto que todos los paquetes RTP de diferentes llamadas se dirigen a una única dirección IP, correspondiente a dicha tarjeta DSP, el sistema diferencia los paquetes corresponden a cada llamada a través del número de puerto UDP. Lógicamente, en el caso del proveedor de VoIP Sarenet, el número de puertos utilizados de forma dinámica tiene que ser considerablemente mayor, ya que al utilizar un SBC (Session Border Controller) todo el tráfico RTP de voz entre llamadas de sus clientes pasa a través de dicho SBC.

Puertos UDP utilizados en Asterisk_1Puertos UDP utilizados en el tráfico RTP por la NCP500

Cuando la PBX IP desde la que se realizan las llamadas está basada en Asterisk, también se utilizarán diferentes puertos UDP seleccionados de forma dinámica dentro de un determinado rango, pero dentro de la filosofía de funcionamiento de Asterisk, totalmente configurable por el usuario. Este rango de valores de puertos UDP está fijado en el fichero de configuración /etc/asterisk/rtp.conf

Puertos UDP utilizados en Asterisk_2

 archivo rtp.conf

Como se observa en la configuración por defecto del archivo rtp.conf,  Asterisk utiliza puertos UDP comprendidos entre 10000 y 20000. Si realizamos una captura de paquetes en una llamada recibida desde un interlocutor externo hacia un sistema Asterisk con la configuración del archivo rtp.conf mostrada anteriormente, observaremos lo siguiente:

Puertos UDP utilizados en Asterisk_3

LLamada entrante desde Sarenet a un sistema Asterisk 

En la captura de paquetes anterior se observa que, una vez finalizada la fase de señalización mediante el protocolo SIP, comienza el transporte de voz mediante el envío de paquetes RTP entre Sarenet (194.30.0.111) y el sistema Asterisk (192.168.1.200). Si examinamos los puertos UDP utilizados en dicho tráfico RTP observaremos lo siguiente:

Puertos UDP utilizados en Asterisk_4

Paquete RTP enviado desde Asterisk hacia Sarenet

Puertos UDP utilizados en Asterisk_5

Paquete RTP enviado desde Sarenet hacia Asterisk

Vemos en las capturas anteriores como Asterisk utiliza el puerto UDP número 16088, comprendido en el rango entre 10000 a 20000. Sarenet utiliza el puerto 54026. Recordemos que la información relativa a los puertos que se utilizarán en el tráfico RTP es pasada durante la fase de señalización entre los elementos SIP que intervienen en una llamada SIP, en este caso, el proveedor de VoIP Sarenet y el sistema Asterisk.

Puertos UDP utilizados en Asterisk_6

Puerto UDP a utilizar para audio dentro del mensaje Invite desde Sarenet a Asterisk

Puertos UDP utilizados en Asterisk_7

Puerto UDP a utilizar para audio dentro del mensaje OK desde Asterisk a Sarenet

Si ahora modificamos el rango de valores de puertos UDP utilizados dentro del archivo rtp.conf y fijamos un rango más reducido, por ejemplo de 10000 a 10010, observaremos lo siguiente:

Puertos UDP utilizados en Asterisk_8

Nueva configuración del archivo rtp.conf

Puertos UDP utilizados en Asterisk_9

Paquete RTP enviado desde Asterisk hacia Sarenet

Se observa con claridad que ahora el número de puerto UDP utilizado, el 10008, está en el rango seleccionado en el archivo rtp.conf y lo mismo sucede si examinamos los paquetes RTP enviados desde Sarenet hacia nuestro Asterisk. Las conclusiones que podemos obtener son las siguientes:

  • A la hora de “abrir” puertos en el cortafuegos o firewall de la organización cuando deseamos permitir llamadas desde un sistema Asterisk, es necesario establecer en primer lugar cuantos puertos abiertos son realmente necesarios y ajustar en consecuencia dicho valor en el archivo rtp.conf.
  • El puerto 5060 será necesario abrirlo en todos los casos, ya que es el puerto utilizado por defecto en la señalización SIP.
  • Deberemos de asegurarnos de abrir los puertos UDP que utiliza el proveedor de VoIP cuando nos envía paquetes RTP de audio. En un cortafuegos de tipo doméstico esto no será casi nunca un problema, ya que por defecto suelen tener permitida cualquier entrada desde cualquier dirección IP a la que se ha salido previamente.  Como Asterisk se está registrando periódicamente en nuestro proveedor de VoIP, existe esa “salida” hacia la dirección IP desde la que llegan paquetes RTP de audio. Pero el cortafuegos de una organización puede ser mas restrictivo, y puede permitir todo el tráfico entrante desde una dirección IP  a la que se ha “salido” previamente, pero solo cuando esos paquetes entrantes vienen de determinados puertos TCP o UDP. Si este es el caso, comprobaremos que en una llamada IP, a pesar de que la señalización finaliza con éxito, una vez establecida la llamada, faltará el audio de entrada, de salida o ambos, dependiendo de las restricciones programadas en dicho cortafuegos.
Esta entrada fue publicada en Telefonía IP. Guarda el enlace permanente.

1 respuesta a Configuración práctica de Asterisk (5ª parte): Puertos utilizados en los paquetes RTP de audio

  1. Jose Cardoz dijo:

    Hola, todo el material que exponen en este blog me ha ayudado a aprender mucho sobre asterisk, inclusive ya estoy desarrollando mis propios proyectos, ahora necesito saber si uds. podrían ayudarme en algo que no he conseguido información detallada de como se instala y se configura el servidor stun en issabel o es que se instala aparte en otra maquina, tengo muchas dudas al respecto, ya que me funciona todo desde un router normal, haciendo forwarding, pero cuando se instalo detrás del firewall no se escucha el audio. ya lei algo al respecto, pero no entiendo mucho. Gracias por su colaboración en el aprendizaje de esta maravillosa teologiza

Deja un comentario

Tu dirección de correo electrónico no será publicada.