Archivo
Install Janus WebRTC Gateway in Debian
Desde hace varios meses vengo trabajando algunas cosas con mi amigo de aventuras tecnológicas Alfredo Pastor @AlfredoPastorL sobre la plataforma «Janus» pero qué es?
Por que no solo de Asterisk vive el hombre, se puede decir que Janus es auto denominado por la empresa Meetecho como un «WebRTC Gateway» de múltiple propósito, proporciona funcionalidades de comunicación para el uso de WebRTC con un navegador, a través del intercambio mensajes JSON y retransmitir comunicación RTP / RTCP . es posible desarrollar implementaciones de aplicaciones como pruebas de eco, web conference, grabadoras de medios, pasarelas SIP y similares.
En este caso vamos a ver como instalarlo correctamente en una plataforma DEBIAN
1.- Instalación de dependencias
#apt-get install aptitude
#aptitude install libmicrohttpd-dev libjansson-dev libnice-dev libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool automake make git cmake
Luego removemos los paquetes de correspondientes a rtp srtp ya que vamos a instalar nuevas versiones desde fuentes.
#apt-get remove libsrtp0 libsrtp0-dev
#apt-get autoremove libsrtp0 libsrtp0-dev
2.- Instalación de SRTP
#cd /opt/
#wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
tar xfv v1.5.4.tar.gz
#cd libsrtp-1.5.4
#./configure –prefix=/usr –enable-openssl
#make shared_library && make install
3.- Instalación de USRSCTP
#cd /opt/
#git clone https://github.com/sctplab/usrsctp
#cd usrsctp
#./bootstrap
#./configure –prefix=/usr/lib64 && make && make install
4.- Instalación de LIBWEBSOCKETS
#cd /opt/
#git clone https://github.com/warmcat/libwebsockets.git
#libwebsockets
#mkdir build && cd build/
#cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS=»-fpic» ..
#make && make install
5.- Instalación de DXYGEN y GRAPHVIZ
#aptitude install doxygen graphviz
6.- Instalación de RABBITMQ
#cd /opt
#git clone https://github.com/alanxz/rabbitmq-c
#cd rabbitmq-c
#git submodule init
#git submodule update
#autoreconf -i
#./configure –prefix=/usr && make && make install
7.- Instalación de PAHO
#cd /opt
#git clone https://github.com/eclipse/paho.mqtt.c.git
#cd paho.mqtt.c
#make && make install
8.- Instalación de JANUS
#cd /opt
#git clone https://github.com/meetecho/janus-gateway.git
#cd janus-gateway
#sh autogen.sh
#./configure –prefix=/opt/janus
#make
#make install
#make configs
#./configure –disable-rabbitmq
#./configure –enable-docs
9.- Instalación del servidor Web
#apt-get install apache2
Ahora copiamos las paginas de ejemplo
#cp -R /opt/janus-gateway/html/ /var/www/
#cd /var/www/html/
10.- Pruebas
Si todo salio bien deberíamos poder levantar Janus de la siguiente forma :
#/opt/janus/bin/janus
Eso quiere decir que Janus está en funcionamiento, luego ingresaremos al servidor Web de la siguiente forma : http://debian/ y veremos los siguiente
Si desean ver el manual en video Alfredo realizó todo el proceso incluido como funcionan los demos de Janus
En el siguiente post haremos una guia de como enlazar Janus con Asterisk
Instalación de Kamailio en Centos 7
Es indudable que Kamailio es uno de los software mas potentes en el mundo de la VoIP , por los diferentes escenarios que puedes construir relativos a seguridad, escalabilidad, redundancia y todo lo que termina en «dad»
Sin embargo mucha gente que comienza a aprender su funcionamiento se choca con la curva de aprendizaje, que es necesario tener para entender este programa, como lo dije en un tweet «si no te gusta la consola, kamailio no es lo tuyo» sin embargo nada es imposible de aprender por su puesto.
Antes de comenzar definamos rápidamente un par de cosas, Kamailio no es igual ni parecido a Asterisk, formalmente Asterisk es lo que se llamaría un «back to back user agent» o «B2UA» el cual es utilizado tradicionalmente para ser una PBX IP ya que cuenta con un sin numero de aplicaciones para un PLANTA IP como voicemail, IVR, Colas,etc,etc.
En cambio Kamailio es un SIP PROXY en todos los sentidos, como su nombre lo dice, este tipo de software solo conversa SIP y nada mas, el cual puede trabajar como proxy proiamente, location server, registrar server, servidor de presencia, call routing (LCR) los cuales son algunos de los roles en los que puede trabajar.
Ahora la pregunta sería, para los nativos Asterisk, puedo usar Kamailio como lo uso con Asterisk ?
Pues la respuesta sería que no, ya que si bien es cierto ambos trabajar para brindar servicios de SIP VoIP tienen diferentes usos.
Entonces para que uso Kamailio?
Se puede usar para extender funcionalidades que de pronto Asterisk queda limitado, como por ejemplo, escalar usuarios, ya que Kamailio solo trabaja con SIP su consumo de procesamiento es mucho menor al de Asterisk y puede trabajar como servidor de registro, tambien puedo usarlo para balancear carga hacia un conjunto de servidores Asterisk, o para que sea mi servidor de proteccion hacia internet, solo por citar algunos ejemplos.
Entonces puedo integrar Asterisk con Kamailio ?
Si, puedo integrarlo de muchas maneras en realidad, algunas muy sencillas otras mas complicadas pero si se puede, de hecho hay varios proyectos y/o productos que han integrado con gran exito Kamalio-Asterisk como Elastix MT SIP WISE
Una vez que hemos revisado un poco para que podemos usar Kamailio, vamos a comenzar con este primer post sobre como instalar Kamailio sobre Centos 7 en una instalación mínima.
1.- Configurar el sistema base
Luego de instalar Centos 7 al mínimo es necesario «arreglar» un par de cosas
Instalar editor, ifconfig , EPEL
yum install net-tools vim
yum -y install epel-release
Desactivar SELINUX
vi /etc/selinux/config
SELINUX=disabled
Desactivar Firewall
systemctl disable firewalld
systemctl status firewalld
2.- Instalar Kamailio
Ahora vamos a instalar desde los repositorios.
Agregar un repositorio
vi /etc/yum.repos.d/kamailio.repo
[kamailio]
name=RPMs for Kamailio on CentOS 7
type=rpm-md
baseurl=http://rpm.kamailio.org/stable/CentOS_7/
gpgcheck=1
gpgkey=http://rpm.kamailio.org/stable/CentOS_7/repodata/repomd.xml.key
enabled=1
Instalar Kamailio básico
yum install kamailio kamailio-utils kamailio-debuginfo
3.- Crear un archivo de configuración básico
vim /etc/kamailio/kamailio.cfg
##### Inicio
debug=2
log_stderror=yes
fork=yes
mpath=»/usr/lib64/kamailio/modules»
loadmodule «pv.so»
loadmodule «xlog.so»
route {
xlog(«L_INFO»,»Requerimiento entrante: $rm de $si a $ru \n»);
forward();
}
onreply_route {
xlog(«L_INFO»,»Respuesta entrante: $rm $rr – de $si a $ru \n»);
}
##### Fin
4.- Levantar el servicio y revisar LOG
Levantamos el servicio y si todo está bien veremos esto
También es necesario, sobre todo si salen errores verificar los logs
Algunos Links que deberías ver si te interesa saber un poco mas de Kamailio :
Kamailio :: A Quick Introduction
http://es.slideshare.net/oej/kamailio-a-quick-introduction
http://es.slideshare.net/miconda/kamailiothestory
En otros post veremos un poco mas kamailio y algunas aplicaciones practicas.
Espero les sirva.
Saludos
Juan Oliva
Trunking SIP entre Elastix MT y Gateway E1 Dinstar
Desde la aparición de ElastixMT muchos han tenido dificultades para realizar integración sobre todo de proveedores, en muchos casos por problemas de compresión de Kamilio , sin embargo en otros como el escenario que vamos a desarrollar, la integración es prácticamente transparente, por supuesto sabiendo como es que funcionan las cosas evidentemente.
El escenario que vamos a desarrollar es el siguiente :
En este caso vamos a tener ElastixMT troncalizado via SIP con un Gateway de la marca Dinstar que a su vez está configurado para conversar con un E1 PRI de algún proveedor.
En este caso no me voy a central mucho en la configuración del E1 en el gateway , para ello pueden revisar el post anterior donde hay mucho detalle de ello.
Vamos concentrarnos en la troncal SIP entre el ElastixMT y el gateway.
1.- Crear la troncal SIP en el Gateway
Dentro del equipo vamos a SIP Config -> SIP Tunk y luego creamos nuestra troncal de la siguiente forma.
Como vemos estamos apuntando a la IP 192.168.10.200 que pertenece a ElastixMT en el puerto 5060
2.- Crear la troncal SIP en ElastixMT
Sección General
Donde la IP 192.168.10.111 es la del Gateway
3.- Verificar el estado del Trunk
En el caso del Gateway vamos a Status & Statistics -> IP Trunk Status y veremos en el campo Link Status que se encuentra establecido.
Luego vamos al CLI de asterisk en ElastixMT y veremos
En este caso ya tenemos reconocida la dirección IP del Gateway en el SIP TRUNK.
4.- Declarar y asignar DID en ElastixMT
Primero vamos a declarar el DID en PBX / PBX / DID / New DID
Luego vamos a asignar asignarle el DID creado a la organización SILCOM en Manager / Organizaction / Organization/ Add DID y quedaría de la siguiente forma:
5.- Crear rutas entrantes
Vamos a PBX / PBX / Inbound Routes y creamos la ruta de la siguiente forma :
En este caso estamos declarando que cuando exista una llamada al DID la en rute a la extensión 101 de la organización.
6.- Pruebas de llamadas
Una vez que tenemos todo configurado realizamos llamadas desde lal DID desde PSTN que en rutará hacia nuestro ElastixMT y a la extensión 101.
Como vemos ingresa la llamada , ahora algunas capturas de lo que muestra el CLI
Luego vamos que se establece la ruta del canal hacia la extensión 101 definida previamente.
7.- Conclusiones
- En este escenario especifico no es necesario modificar de alguna forma el comportamiento de Kamailio.
- Para estas pruebas no se realizaron mayores configuraciones a bajo nivel mas que las mostradas en el tutorial.
- La configuración del Trunk SIP solo fue probada en un equipo Dinstar MTG1000 , sin embargo no se descarta que pueda funcionar para otro tipo de gateways.
También se recomienda leer los post previos para una mejor comprensión del funcionamiento de ElastixMT:
- Interconexión entre Elastix y Gateway Dinstar vía PRI E1
- Troncalización de Elastix MT y A2BILLING mediante SIP
- Elastix 3 Multi Tenant – Configuración 1 (Extensiones y trunks)
- Configurando seguridad en Elastix MT
Espero les sirva
Saludos
Juan Oliva