No es lo mismo tener una PBX que sólo preste servicios de telefonía (voz o video), a tener un sistema de IVR en el que intervegan AGIs, o un sistema de Call Center que se integre, por ejemplo, con un CRM externo, ni es lo mismo un servicio basado en Asterisk 1.4.X que en Asterisk 1.6.X, por los cambios en el núcleo, los módulos y en los componentes adicionales (addons) de cada versión.
En todos estos casos resulta muy conveniente tener una medida aproximada de la cantidad de tráfico y conexiones concurrentes que está en capacidad de soportar la plataforma antes de ponerla en producción, y para ello, presionar la parte del plan de marcado que más pueda afectar su desempeño, resulta una buena idea.
Si bien pudiéramos usar archivos .call (en el caso de Asterisk) para probar la cantidad de llamadas que podemos lograr, por ejemplo, sobre una troncal, la experiencia en Avatar es que es mejor hacernos a un generador de tráfico para el propósito de conocer los límites de nuestro sistema.
En esta entrada veremos cómo servirnos de SIPp, para lograr este próposito.
Advertencia: Se recomienda realizar las pruebas de tráfico sobre un servicio que no se encuentre en producción, o en un horario y bajo un ambiente controlado que no vaya a afectar a los usuarios finales. Es muy fácil exceder la capacidad límite de cualquier plataforma de telefonía (de cualquier fabricante: Cisco, Avaya, Alcatel, Panasonic, etc) ejecutando SIPp desde un cliente con unas características modestas de hardware. El autor no se hace responsable por el uso indebido de los contenidos publicados en esta entrada.
Haciendo una traducción libre de la descripción que aparece en el sitio Oficial:
SIPp es una herramienta libre / de código abierto para pruebas y generación de tráfico sobre el protocolo SIP. Incluye un par de escenarios elementales de SipStone para Agentes de Usuario (UAC y UAS), y permite establecer y liberar múltiples llamadas usando los métodos INVITE y BYE. También está en capacidad de leer escenarios personalizados a partir de archivos XML que describan desde los flujos de llamadas más simples hasta los más complejos. Incorpora características como la visualización dinámica de las estadísticas de las pruebas que se están desarrollando (tasa de llamadas, retardo de ida y vuelta y estadísticas de los mensajes SIP intercambiados), volcado períodico de las estadísticas en formato CSV, TCP y UDP sobre múltiples sockets o multiplexados con gestión de retransmisiones, y la posibilidad de ajustar dinámicamente la tasa de llamadas efectuadas.
Además de todo lo anterior, permite enviar paquetes RTP (a través del escenario PCAP), con lo que es posible simular conversaciones que incluyan flujos multimedia de sonido o video; algo fundamental si consideramos que las aplicaciones de telefonía más populares como Asterisk y FreeSwitch, no son SIP Proxies sino B2BUA (Back to Back User Agent).
Bien, manos a la obra.
Para empezar, debemos instalar SIPp en un equipo cliente desde el cual generaremos llamadas hacia un servidor Asterisk. Vamos a asumir que contamos con un equipo con sistema operativo Linux (aunque SIPp también correr sobre Windows), y preferiblemente con Debian ;-) (o Ubuntu):
apt-get install sipp
Como paso siguiente, editamos el archivo sip.conf para incluir el usuario SIPp:
[sipp]
type=friend
context=sipp
host=dynamic
user=sipp
insecure=invite,port
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
En el extensions.conf creamos el contexto sipp y una extensión de entrada para las llamadas. En el siguiente ejemplo las enviaremos por 30 segundos a la aplicación de música en espera, pero también podríamos usar la aplicación echo, realizar una conferencia con meetme o procesar un AGIs.
[sipp]
exten=987654321,1,Answer
exten=987654321,n,SetMusicOnHold(default)
exten=987654321,n,WaitMusicOnHold(30)
exten=987654321,n,Hangup
Finalmente, ejecutamos SIPp desde el cliente de pruebas con los siguientes parámetros:
sipp -s 987654321 -sn uac -d 1000 -m 10 -r 1 -l 10 -i 192.168.0.2 192.168.0.4 -trace_screen
Donde:
- s: Es el número que vamos a enviar.
- sn:Es el escenario SipStone a usar. Por defecto es User Agent Client.
- d: Es la longitud de la llamada en milisegundos.
- m: Es el número máximo de llamadas a realizarse en la prueba.
- r: Es el número de intentos de llamada por segundo (en inglés CAPS - Calls Per Second)
- l: Es el número máximo de llamadas concurrentes que vamos a establecer.
- i: Establece la IP local para las cabeceras 'Contact:','Via:', y 'From:'. Por defecto es la dirección IP de nuestro cliente.
1 comentarios: