RITI: Solución híbrida de PBX virtuales con aprovisionamiento automático en la nube

RITI: Solución híbrida de PBX virtuales con aprovisionamiento automático en la nube


RITI

Abstract

Si bien la telefonía sobre el protocolo IP tiene más de una década entre nosotros, la ubicuidad de Internet, las nuevas tecnologías de hardware abierto, software libre y plataformas en la nube invitan a volver a pensar una solución en este nuevo contexto.

Como tal solución se propone en este proyecto a RITI, compuesto por un equipo de pequeñas dimensiones a instalar en dependencias del cliente y un sistema de aprovisionamiento automático y conmutación telefónica en la nube.

El principal desafío para la obtención de tal producto fue la gran cantidad de componentes de hardware y software a integrar, pasando puntos tan diversos como un Raspberry con su adaptador de interfaces Grandstream, Asterisk con sus contextos de troncales y protocolos, plataformas como AWS y Docker.

Es importante destacar que los objetivos planteados fueron logrados, obteniendo una solución funcional, resiliente y escalable donde la complejidad se centraliza en los componentes alojados en la nube. De esta forma se extienden a la telefonía las ventajas constatadas en los últimos años de la virtualización y la consolidación en la nube.

Finalmente, todos los componentes de software del sistema son o bien proyectos libres de código abierto, o bien desarrollos originales de los autores del mismo.

Abstract English version

Although telephony over IP protocol has more than a decade among us, the ubiquity of the Internet, new open hardware technologies, free software and cloud platforms invite us to rethink a solution in this new context.

As such a solution is proposed in this project to RITI, made up of a small team to be installed in customer premises and an automatic provisioning system and telephone switching in the cloud.

The main challenge for obtaining such a product was the large number of hardware and software components to be integrated, passing points as diverse as a Raspberry with its Grandstream interface adapter, Asterisk with its trunk and protocol contexts, platforms such as AWS and Docker. .

It is important to highlight that the stated objectives were achieved, obtaining a functional, resilient and scalable solution where complexity is centralized in the components hosted in the cloud. In this way, the benefits of virtualization and consolidation in the cloud have been extended to telephony in recent years.

Finally, all the software components of the system are either free open source projects, or original developments by the authors of the same.

Solución propuesta

En este proyecto se propone una alternativa tecnológica novedosa con el fin de lograr una infraestructura para el cliente que sea simplemente instalar y usar, mediante una automatización desarrollada con diversos componentes de software libre, se crean instancias virtuales en Docker alojadas en la nube que funcionara como su motor de servicio, permitiendo que las comunicaciones del cliente pasen de telefonía tradicional a IP, manteniendo número y aparato telefónico de las sucursales.

RITI (nombre del proyecto) automatizará la conexión del dispositivo en la red privada de la solución, donde a partir de la invocación de un servicio, este levante automáticamente el servicio. Este servicio constará de una instancia de virtual PBX en la nube, sin necesidad alguna de configuración ni conocimiento técnico, esta misma será única para cada dispositivo permitiéndole así poder integrarse en la red de RITI y así realizar el nexo con otras terminales. A su vez esto no requiere trámites, compromisos adicionales ni contacto con el proveedor actual de telefonía.

Esta solución es un híbrido que reduce al mínimo indispensable el procesamiento en el equipo de la sucursal, ya que como veremos más adelante, la toma de decisiones del flujo de las llamadas es realizado en la nube.  Es compatible con los equipos de telefonía tradicional, y aprovecha las ventajas del procesamiento en la nube (escalabilidad, redundancia, estabilidad, entre otras).

Algunas de las características de RITI de cara del cliente son que, en caso de corte de electricidad, y que el equipo se quede sin alimentación, las llamadas siguen funcionando como en la telefonía tradicional (desviando las llamadas a la PSTN). Lo mismo ocurre en caso de que el hardware en la dependencia del cliente se quede sin conectividad a Internet. El cliente indistintamente de si la llamada es enviada vía telefonía IP, o por la vía tradicional, disca siempre el mismo número, no es necesario recordar números nuevos.

¿Qué innovamos?

Inversión en infraestructura.

  • El Hardware a instalar en el cliente tiene un costo estimado de un 20% de otras soluciones que existen actualmente.

Conocimiento técnico de instalación

  • El conocimiento técnico necesario para realizar la instalación de dicho Hardware es nulo.

Trámites y compromisos con proveedores de servicios de telefonía

  • Este producto, directamente no requiere de dichos trámites y/o compromisos, funciona sobre el servicio actual, sin configuraciones adicionales.

Tecnológica:

  • Las costosas soluciones actuales, requieren o bien migrar toda la tecnología y equipos a IP, o bien instalar costosos equipos en las sucursales con todo el procesamiento en dicho equipo.

  • Esta solución es un híbrido que reduce el procesamiento en el equipo de la sucursal, es compatible con los equipos de telefonía tradicional, y aprovecha las ventajas del procesamiento en la nube (escalabilidad, redundancia, estabilidad, entre otras).

¿Porque surge la idea?

  • Necesidad de gran cantidad de empresas de reducir costos de llamadas.
  • Se encontró que la forma de realizar esto es implementar una solución de Hardware
  • Configuración mínima o nula
  • Bajo coste
  • Reducidas dimensiones
  • Permite telefonía IP y telefonía tradicional
  • La dependencia donde se instalará el Hardware, no necesariamente será en un lugar físico perteneciente a la empresa
  • Lograr diseñar un equipo, que sea tan simple como conectar un teléfono, pero internamente tan inteligente como la mejor telefonía IP.

En qué consiste el Proyecto?

  • RITI es un sistema para la gestión de PBX virtuales en la nube y su vínculo con los dispositivos físicos instalados en las dependencias de clientes a través de Internet.
  • Llamaremos a dichos equipos: RitiBox.
  • El sistema permite crear instancias de PBX virtuales en la nube, como respuesta a la instalación de un RitiBox.
  • Realizando de manera automática
  • El despliegue del servidor
  • La configuración de la PBX cloud y local
  • La vinculación de las PBX
  • Llamaremos a estas instancias RitiCloud.
  • Esto se realizó implementando las últimas tecnologías de virtualización, cómputo en la nube, y redes definidas por software.

Premios:

  • Ganador de Financiación ANII-CII2 
  • Ganador de concurso como mejor proyecto de Ingeniería 2018.

El mayor desafío de todo el proyecto fue integrar más de 20 tecnologías distintas logrando que sean de rápida aprovisicion y con mínima interacción humana. En la siguiente imagen se puede visualizar las distintas tecnologías:

Capas:

El proyecto podemos dividirlo en seis capas diferentes, las mismas brevemente se explican en el siguiente punteo:

  1. Interfaz o Box: Se describe el Hardware seleccionado, los distintos componentes de este y su lógica de configuración a la hora de poder brindar un servicio de telefonía. Se habla de FreePBX, Python, Raspberry, IAX2, SIP, Grandstream e invocación de servicios web.

  2. Frontend: Se describe cómo se diseñó la aplicación web para poder generar el servicio de autoprovisionamiento y despliegue automático de las instancias. Se habla de Gunicorn y Flask.

  3. Backend, Control y Automatización: En esta sección se explicará cómo trabaja el centro lógico del servicio, desde el despliegue automático de las instancias hasta la reconfiguración de todas de forma segura y ordenada. Se habla de Ansible, Celery y Redis.

  4. Cómputo o Plataforma: Se describe la tecnología de virtualización, mostrando las ventajas de la utilización de contenedores y la integración con el punto 3. Se habla de Docker, Portainer y AWS.

  5. Integración, Conectividad y Datos: Se describe como se integrará los diversos módulos, dando hincapié en la seguridad y privacidad de las comunicaciones, como también el registro de la información transversal al servicio. Se habla de HA Proxy, VPN PPTP, Base de datos, IAX2 y Redes superpuestas por medio de Consul.

  6. Monitoreo: Se describe la solución de monitoreo implementada Zabbix, como se logró que la misma trabaje de forma automática dentro del alcance de los contenedores Docker. Se habla de Zabbix.

Esquema general de la solución

Partiendo del diagrama expuesto en la sección anterior se presenta el siguiente esquema. Este brinda una visión completa de todos componentes del sistema, y su interconexión:

El objetivo de este esquema es dar un panorama general de la gran cantidad de componentes del sistema, lograr tener una visión de la proporción de los componentes que son desplegados en la nube, y los que son desplegados en la dependencia física del cliente.

Modelos de instancias:

  • Instancia Master : Es un host docker con contenedores para provisionar el FrontEnd, Backend y BBDD. 

  • Instancia Slave : Es un host docker que aloja los contenedores Asterisk correspondientes a los ritiBox.

Para lograr que todas las instancias “Esclavo” se pueda comunicar entre ellas utilizamos el protocolo VXLAN implementado utilizando la tecnología Consul , como se puede puede observar en el diagrama:

Se crea una red mesh que todos las instancias de micro-PBX pueden hablar una contra.

VOIP RitiCloud: Asterisk

Para el despliegue de los RitiCloud en dockers, se implementó Asterisk puro, sin capas extra. Esto es principalmente debido a:

-La necesidad de reducir tamaño de imágenes docker

-La necesidad de ganar control sobre los flujos VoIP

VoIP: Ejemplo flujo de llamadas en misma empresa

Flujo de alto nivel de llamada entre cliente A y B:

Conclusiones

Antes de evaluar los resultados de este proyecto, es de utilidad repasar los objetivos planteados al comienzo del desarrollo:

  1. Crear un dispositivo que se autoprovisone de forma automática con el servidor maestro sin previa configuración.

  2. Servicio WEB que permite una automatización de comunicación entre cliente y maestro.

  3. Crear instancias virtuales de PBX a través de la API del servicio WEB en el punto anterior, donde su mecanismo sería el siguiente:

  4. Registro de nuevo cliente y reconfiguración de las demás.

  5. Monitoreo automático de las instancias y servicios de aprovisionamiento.

  6. Comunicación IP entre los dispositivos de la red.

  7. El sistema debe estar compuesto en su totalidad por software libre.

  8. La solución no puede estar atada a ningún proveedor en particular.

  9. Todo el tráfico tiene que ser privado.

En primer lugar, se debe decir que estos objetivos fueron cumplidos en su totalidad. RITI fue un proyecto en el cual su principal dificultad fue la integración de más de veinte tecnologías diferentes para lograr un producto funcional con un propósito determinado.

Durante la etapa de investigación y modelado de la idea, realizamos cursos de APIs en Flask, Docker y Docker Swarm para poder entender mejor cada una de estas tecnologías de forma tal que nos facilite la integración de los módulos.

Logramos poder brindar una solución que sea escalable pensando las aplicaciones como microservicios que puedan ser desplegados de forma distribuida en distintos hosts de forma automática, controlada y segura. Los microservicios nos permiten aislar las funcionalidades de tal forma que cada instancia (en nuestro caso contenedores Docker en la “nube”) cubra una funcionalidad básica y este pueda ser fácilmente reemplazado en caso de falla o upgrade de software.  De esta forma podemos hablar de que logramos un flujo de despliegue continuo, ya que se logró automatizar el aprovisionamiento de una central telefónica en la nube manteniendo la independencia del cliente y privacidad del mismo.

Gracias a la arquitectura de la solución modular, a nivel macro, es decir considerando todos los posibles clientes, vemos que nuestro sistema es tolerable a fallas de un componente a la vez de forma tal de garantizar que nuestro servicio no sea afectado en la totalidad.

Uno de nuestros objetivos primarios era lograr un hardware lo suficientemente robusto que garantizara la funcionalidad del servicio de telefonía en cualquier condición, incluso ante una pérdida de conectividad o energía eléctrica. Si bien el mismo se puede mejorar en muchos aspectos como tamaño, capacidad ociosa, costo de producción vemos que es un éxito el contar con estas características.

Siguiendo en el plano del hardware nuestro mecanismo de automatización consta del registro del número público del cliente, gracias esto y por medio de nuestros algoritmos de armado de rutas telefónicas, podemos garantizar que el cliente siempre disque exactamente el mismo número indistintamente la ruta por la cual se redirigirá el tráfico.

Otro rasgo importante de la solución es la capacidad de un monitoreo automático, la misma se propuso en la solución de automatización gracias a la implementación de unos proxys de monitoreo. Estos proxys de monitoreo trabajando directamente sobre la API de Docker.

RITI una solución híbrida de telefonía Cloud o también denominado Cloud PBX, garantiza ser totalmente independiente de cualquier esquema de “nube”, dejando la misma la posibilidad abierta de desplegarse en una solución tradicional de Datacenter con tecnologías de VMware, HyperV o Citrix como también en cualquier proveedor de cómputo cloud como AWS, Azure o GCP.

Todas las funcionalidades detalladas, fueron evaluadas a través de un proceso de pruebas realizadas sobre el sistema, demostrando que es capaz de funcionar correctamente.


© 2024 Thanks! Gracias!⚡️