Software IP-PBX y pruebas de carga

¡Buen día a todos! Desde hace varios años, me dedico a la telefonía IP y comencé a notar que, aunque Internet está lleno de información, no solo estoy hablando del segmento ruso, sino que a veces puedes encontrar el que necesitas solo en algún "foro abandonado", o no lo es en absoluto . Si hay suficiente información sobre la telefonía IP y el protocolo SIP en sí, entonces no hay datos sobre cómo se construye un software IP-PBX, cómo se prueba y depura por razones obvias, o lo es, pero está escrito en un lenguaje que solo alguien que puede entender durante muchos años trabaja en esta área



Decidí llenar estos vacíos y hacer mi propia contribución, esta información será informativa y útil para principiantes, los usuarios más experimentados pueden enfatizar algo nuevo para ellos mismos, en cualquier caso, todos estaremos en el negro. Los planes en este momento son grandes: escribir un ciclo de publicaciones, resumiendo el conocimiento que he adquirido, por razones obvias no publicaré ensamblajes, máquinas virtuales, etc., lo más importante es dirigir, y el que camina encontrará su camino.



Quizás suficiente de las letras, comencemos como siempre con la teoría. Dado que esta publicación será leída por usuarios con un nivel de conocimiento diferente, intentaré que sea breve y clara.



Introducción



Un software IP-PBX es una central telefónica automática basada en el protocolo IP, cuyo "cerebro" es un software especial que implementa la conmutación de voz (en este caso, paquetes de voz) y otros servicios prestados a los suscriptores.



Ahora veamos cómo funciona todo esto, no lo describiré en detalle de inmediato, tomará mucho tiempo y, por lo tanto, habrá algunas incorrecciones y omisiones.



El suscriptor levanta el teléfono e ingresa el número, se activa una alarma de inmediato, que controlará la sesión de transmisión de flujo de voz, para esto hay una serie de protocolos de los que se pueden distinguir dos SIP y H.323. Por el momento, SIP ha ganado una gran popularidad y en esta publicación se tendrá en cuenta. Además, suponemos que usando el protocolo SIP se estableció una conexión lógica entre los suscriptores, y luego se necesita una voz.



El suscriptor habla al receptor: su voz se codifica utilizando un códec de software o hardware en un conjunto de bits. Codec es un algoritmo de compresión de voz, el PCMA más simple y más común. Luego, estos bits se envían utilizando el protocolo RTP al destinatario.



Para resumir todo lo anterior, tenemos el protocolo SIP que gestiona la sesión de comunicación, incluye el protocolo SDP, que describe la sesión (códecs usados ​​y disponibles y otra información), estos protocolos se empaquetan en el transporte TCP o UDP y utilizan el protocolo IP enviado en la dirección especificada. Tan pronto como se establece una conexión lógica, la voz se comprime usando el códec y se empaqueta en RTP y se envía al destinatario usando el protocolo IP.



Ahora tratemos de responder la pregunta principal: ¿quién controla todo esto? El interruptor de software o softswitch para abreviar es el "cerebro" de un software IP-PBX que gestiona todas las interacciones internas y externas. Softswitch es bien conocido por nosotros, todos han escuchado sobre Asterisk y Freeswitch. Hay pagos, hay gratuitos, hay con una interfaz gráfica, hay sin.



En la Figura 1, he representado un diagrama de bloques de un software IP-PBX, considerámoslo con más detalle. En primer lugar, es un sistema operativo (SO), debe ser compatible con el hardware, tener los repositorios necesarios y ser conveniente para el trabajo. No hablaremos sobre hardware, que sea un servidor. Según los deseos del cliente (TOR), se selecciona el "cerebro" de nuestra IP-PBX - Softswitch, puede ser el mismo Asterisk o Freeswitch o un Softswitch escrito a mano. En la figura, dividí Softswitch y software, de hecho, puede ser una aplicación, todo depende de los requisitos del cliente, puede tomar un Freeswitch listo para usar, escribir un programa que lo gestionará y también implementar funcionalidades adicionales. Todo está claro con el servidor web, necesitamos una capa entre el cliente http y Softswitch. Bueno, y en consecuencia la base de datos,no reescribiremos constantemente los archivos de configuración. El sistema operativo nos brinda un entorno para el trabajo, también es necesario escribir controladores adicionales si queremos conectar las placas FXO y E1.



imagen

Fig. 1. Diagrama de bloques de un software IP-PBX



Ahora puede exhalar, la teoría descrita está muy condensada, pero es necesaria para una mayor comprensión del material.



Probador SIPp y StarTrinity SIP



Hace unas semanas, se estableció la tarea: probar la carga que nuestro software IP-PBX puede soportar. Después de una larga búsqueda, me encontré con un generador de llamadas Sipp gratuito y pagué StarTrinity SIP Tester. A continuación, describiré brevemente las capacidades de estas aplicaciones.



Tal vez comenzaré con el más simple: con StarTrinity SIP Tester. La aplicación funciona solo en Windows, tiene una gran cantidad de características, registro de usuarios, actúa como un servidor de registro, envía llamadas salientes con muchos parámetros, recibe llamadas entrantes y envía mensajes específicos, de hecho, puedes escribir el script tú mismo y la aplicación te ayudará con esto. Pero toda la funcionalidad es el tema de una publicación separada, necesitamos lo más básico para el trabajo: la capacidad de enviar llamadas en un intervalo determinado, sin olvidarnos de RTP. Y ahora lo más importante es que esta aplicación es de pago, pero los desarrolladores también proporcionan una versión gratuita ligeramente simplificada, pero de hecho, incluso una versión simplificada se puede utilizar si eres inteligente.



La versión gratuita le permite hacer 150 llamadas, mientras que puede haber 50 conexiones simultáneas. Pero después de reiniciar, el contador se reinicia y puede enviar llamadas nuevamente. Las Figuras 2 y 3 muestran la aplicación StarTrinity SIP Tester, podemos ver en qué dirección, a qué número, de quién, qué códec, intervalo y otra información de llamada. También vale la pena señalar que hay una interfaz web y la capacidad de crear scripts por mí mismo, pero lo que no me gustó es que no puedes hacer scripts con los parámetros incorrectos.



imagen

Figura 2. Versión de pago de StarTrinity SIP Tester



imagen

Figura 3. Versión gratuita de StarTrinity SIP Tester



Si StarTrinity SIP Tester es una hermosa interfaz gráfica que está lista para funcionar de inmediato, entonces Sipp se me presentó como una especie de "monstruo", que debe descargar, compilar y agregar los paquetes necesarios. Pero resultó que esto no debe temerse, los desarrolladores han dejado una excelente guía en el sitio que describe el proceso de instalación y las capacidades de esta aplicación. Le advertirán de inmediato que lleva varios días aprender a escribir scripts, pero esto es una ventaja, comprenderá a fondo el protocolo SIP y examinará sus campos. En pocas palabras, hay scripts incorporados, enviaron y aceptaron las llamadas más comunes, todavía estamos buscando el resto en Internet, algunos usuarios comparten, pero tuve que sentarme a estudiar las especificaciones y escribir mis scripts. Sipp está disponible tanto en Windows como en Linux, pero funciona más estable en Linux.



Ahora hasta el punto, es costoso asignar una máquina solo para Sipp, tomamos y hacemos una máquina virtual, uso VirtualBox en Ubuntu, no tuve problemas. Instalado de acuerdo con la guía, vaya a la carpeta de la aplicación e inicie la aplicación con las teclas necesarias.



imagen

Fig. 4. Generador de llamadas Sipp



No describiré la funcionalidad Sipp, es similar a StarTrinity SIP Tester, qué aplicación es mejor, no hay una respuesta definitiva, llegué a la conclusión de que se complementan perfectamente.



Pruebas de estrés



Ahora que sabemos qué es un software IP-PBX y cómo funciona, también conocemos la funcionalidad de los generadores de llamadas.



Una vez más, durante las pruebas, debemos comprender el modo de operación del software IP-PBX: modo proxy (la señalización RTP + está proxied), medio proxy (solo la señalización está proxied), solicitar redirección (mensaje 300). Esto determinará si necesitamos habilitar RTP en algunos escenarios o no. En la Figura 5, he bosquejado varios casos de prueba.



Opción 1: probamos el software IP-PBX en modo tránsito, para esto necesitamos dos PC diferentes. En el PBX, registramos una ruta, respectivamente, desde un Sipp / StarTrinity SIP Tester, generamos llamadas a otro Sipp / StarTrinity SIP Tester. Te lo diré de inmediato con StarTrinity SIP Tester en Sipp (o viceversa). No intenté generar llamadas, pero en teoría deberían ser totalmente compatibles.



Opción 2: probamos el software IP-PBX en modo de tránsito, para esto necesitamos dos PC diferentes. En la PBX, registramos la ruta, respectivamente, desde un Sipp / StarTrinity SIP Tester generamos llamadas a Asterisk. Para Asterisk, uso la máquina virtual VirtualBox en Ubuntu, no tengo problemas. En el plan de marcado de Asterisk, escriba lo siguiente:



imagen



Cuando llama a este número, Asterisk responde y envía toda la voz recibida.



imagen

Fig. 5. Opciones de configuración del equipo para pruebas de carga



Opción 3: probamos el software IP-PBX en el modo de estación terminal, para esto necesitamos una PC y teléfonos IP, configuramos la respuesta automática en los teléfonos. Registramos teléfonos IP en la central, respectivamente, desde un Sipp / StarTrinity SIP Tester generamos llamadas a ellos.



Opción 4: probamos el software IP-PBX en el modo de estación terminal, para esto necesitamos una PC y SLT analógicos. En la PBX, prescribimos TA analógico, respectivamente, de un Sipp / StarTrinity SIP Tester generamos llamadas a ellos. Hasta donde sé, pero yo mismo no he encontrado ciertos dispositivos que estén conectados a líneas analógicas y puedan programarse, por ejemplo, para levantar el teléfono cuando llames, pero si estas opciones no están disponibles, tendrás que levantar los tubos manualmente.



Eso es todo, por supuesto, activamos los registros en el software IP-PBX, o mostramos la consola con depuración y observamos los errores que han ocurrido. Así es como se pueden determinar los límites de rendimiento y falla. Por cierto, consejos, instale Wireshark, tshark, tcpdump en la máquina virtual, para que pueda monitorear y analizar todo el tráfico en su interfaz en tiempo real.



Resumiendo



Para resumir, nos familiarizamos superficialmente con la construcción de un software IP-PBX y generadores de llamadas Sipp y StarTrinity SIP Tester y aprendimos a simular la carga. Si lo piensa, puede probar con seguridad toda la pila Sip con estos generadores de llamadas.



Eso es todo por hoy, estoy esperando sus comentarios y observaciones, si desea compartir su experiencia, solo me alegraré.



CARGANDO…



Enlaces



1.Sipp sipp.readthedocs.io/en/v3.6.0/#

2.StarTrinity SIP Tester startrinity.com/VoIP/SipTester/SipTester.aspx

3.Books y otra información asterisk.ru/knowledgebase/books



All Articles