Archive for the ‘application server’ Category

Tutorial de openimscore: Instalando open ims en forma exitosa en debian

August 19, 2008

IMS significa IP Multimedia subsystem, la 3GPP normalizo la evoluciòn de las redes a un all ip con una serie de servicios en una arquitectura unica agnostica del medio de acceso: fijo, movil, cable, etc. Dentro de los moviles no importa el acceso tambien: CDMA1x, EVDO, GSM, UMTS, HSDPA, HSUPA, LTE, etc. El core IMS en su arquitectura esta concebido para interactuar con cualquier medio de acceso, por lo cual esta basado en una serie de servidores, en su forma mas basica: CSCF y HSS. El primero (CSCF) esta dividido en tres fundamentales: P-CSCF (proxy sip), I-CSCF (interrogating call sesion control function) y el S-CSCF (service call sesion function. A este nivel hablamos de un core all ip, con transoporte TCP/UDP, y con protocolos bien especificos y definidos: sip, diameter entre otros. Los organismos encargados de estandarizar: 3GPP(GSM/UMTS), 3GPP2(CDMA/EVDO) y TISPAN (fijo).

Este ecosistema es un crisol de oportunidades para usar tecnologias basadas en open source, ya que en teoria con un puñado de servidores con linux (o cualquier otro OS) podriamos empezar a dar servicios tipo IMS. Tambien se supone que la integraciòn de nuevos servicios a la red deberia ser mucho mas rapido que los actuales, ya que no se deberia diseñar cada servicio para cada red especifica, sino que todos los aplication server irian contra el s-cscf, o en su defecto contra el sdp (service delivery platform), que no es mas que otro servidor contra el cual descargar procesamiento del s-cscf, a su vez agregar un punto de monitoreo de calidad y ofrecer a terceros proveedores conectar sus AS (aplication server) a nuestra plataforma IMS sin que le metan mano a un elemento sensible en la estabilidad de la red como el S-CSCF. Esto podria ir desde aplicaciones de juegos online, mapas, planos, servicios basados en localizacion, incluyendo aplicaciones tipo touch screen, por ejemplo hacemos un dibujo sobre la pantalla tactil de equipo y lo transmitimos a los compañeros de un meeting remoto, a su vez podriamos estar en una videoconferencia con otro grupo de trabajo, respondiendo un email urgente a nuestro jefe y esperando por una transferencia bancaria. El unico limite aqui seria el ancho de banda disponible, la tecnologia alambrica o inalambrica utilizada, la capacidad de procesamiento de los servidores (CSCF y HSS) y la imaginacion.

Para la conexion a redes legacy esta estandarizado el MGCF (media gateway control function, el cual tiene fncionalidad de softswitch) , y los MGW (MediaGateway) que permiten la conversion de protocolos, codecs y señalizacion (Signaling Gateway), estos elementos nos permiten conectividad y continuidad de la red IMS hacia otras redes legacy.

En definitiva IMS ofrece un estandard de evoluciòn a los operadores, respetando la integracion e interconectividad con otras redes IMS y legacy, ademas de ser un gran integrador de servicios diversos, los cuales podrian ser agregados a la red en una forma mucho mas rapida y transparente, menor tiempo de integracion de servicios influye directamente en los costos.

IMS puede ser visto como el esfuerzo de tratar de unificar en una sola plataforma el acceso a servicios compartidos por diferentes tipos de metodos de acceso (sean fijos o moviles). Es tambien una arquitectura estandarizada que busca hacer mas eficiente y rapido la forma en que son accesados y desplegados dichos servicios. De esta forma con un IMS core bien estructurado y estandard, las empresas de telecomunicaciones podrian asegurar la inversion de las plataformas de servicios asi cambien en forma radical el metodo de acceso (cable, ADSL, EVDO, UMTS, WIMAX, LTE, etc).

Tambien puede ser visto como la inclusion de un core que permite la horizontalizacion de las plataformas de servicios, en las cuales los elementos comunes de control, autenticacion, base de datos podrian estar en servidores comunes (HSS, I-CSCF, S-CSCF) y solo el servicio como tal en servidores individuales.

Aqui tratamos sobre como compilar y poner en funcionamiento un sistema IMS basado en open source: openimscore. Este proyecto es llevado por el grupo FOKUS, grupo sin fines de lucro que se encarga de desarrollar tecnologias open source al mundo de las telecomunicaciones. Aqui esta estudiado para ser implementado sobre una plataforma debian, tambien podria ser instalado sobre una maquina virtual tipo vmware con linux.

Open IMS es una excelente oportunidad de estudiar y aprender mas sobre IMS, de probar y armar maquetas que podrian servir para mostrar y experimentar con los tiempos de integracion de los servicios. No es una plataforma diseñada con fines de ofrecer servicio comercial debido principalmente a estas carencias:

- Plaforma de monitoreo,

- Plataforma de operacion y mantenimiento (O&M)

- Servidores redundantes, en caso de falla, asegurar la alta disponibilidad de la plataforma.

- Sistema de aprovisionamiento

- Seguridad

- Estadisticas

- Integracion a billing, generacion de cdr, etc.

Procedimiento aplicado a servidor Debian ETCH, version de kernel 2.6.18

1.- Instalar subversion:
apt-get install subversion

2.- Crear el siguiente directorio:
mkdir /opt/OpenIMSCore/
chown -R username /opt/OpenIMSCore/

3.- Crear los directorios CSCFs y FHoSS:
cd /opt/OpenIMSCore
mkdir ser_ims
mkdir FHoSS

4.- Bajarse la ultima version de open-ims via subversion:

svn checkout http://svn.berlios.de/svnroot/repos/openimscore/ser_ims/trunk ser_ims svn

svn checkout http://svn.berlios.de/svnroot/repos/openimscore/FHoSS/trunk FHoSS

5.- Chequear que todos estos paquetes esten correctamente instalados, la version de java debe ser >=1.5.0:

apt-get install mysql-server libmysqlclient15-dev libxml2 libxml2-dev bind ant flex bison

Agregar a sources.list este repositorio:

deb http://ftp.es.debian.org/debian/ etch main contrib non-free

deb-src http://ftp.es.debian.org/debian/ etch main contrib non-free

Con este repositorio nos aseguramos que vamos a tener java-1.5.0

Luego no olvidarse de hacer:

apt-get update
apt-get install sun-java5-jdk

Tambien podemos buscar las fuentes de la pagina de sun y compilar el proyecto completo.

Despues de instalar mysql tambien debemos setear una password, ya que por default esta en blanco:

mysqladmin -u root password ‘my_password’

Arranque del servidor mysql:

/etc/init.d/mysqld start

6.- Configurar servidor DHCP y DNS:

Editar el archivo /etc/dhcp3/dhclient.conf y desmarcar esta linea:

prepend domain_name_servers 127.0.0.1;

Copiar este archivo a la carpeta de trabajo:

sudo cp /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone /etc/bind/

Agregar estas lineas al archivo: /etc/bind/named.conf.local

zone “open-ims.test” {

type master;

file “/etc/bind/open-ims.dnszone”;

};

Despues reiniciamos el servicio de DNS:

/etc/init.d/bind9 restart

El archivo open-ims.dnszone se crea en la compilacion del proyecto, luego hay que copiarlo de la carpeta /opt/OpenIMSCore a la carpeta /etc/bind
En este archivo debemos cambiar la ip por default (127.0.0.1) por la IP publica, y luego este DNS propio sera seteado en la configuracion TCP/IP (propiedades) como DNS a ser escogido en las otras maquinas en donde tendremos los clientes SIP e IMS.

Aunque si bien es cierto que el estandard IMS de la 3GPP habla de un servidor dns para resolver el nombre del dominio, tambien es posible configurar del lado del cliente el archivo host con una entrada que indique la equivalencia dominio-ip. En cualquier sistema operativo esto es posible. En windows por ejemplo esta en:

C:\WINDOWS\system32\drivers\etc

Con esto nos ahoramos el servidor dns por lo menos de una manera experimental (laboratorios, maquetas, etc)

7.- Compilacion del proyecto:

En /opt/OpenIMSCore/ser_ims

make install-libs all

Setear las variables de entorno de java:

export JAVA_HOME=”/usr/lib/jvm/java-1.5.0-sun/jre/”

Compilar el FHoSS en /opt/OpenIMSCore/FHoSS

ant compile deploy

Una vez que esta compilado en proyecto debemos copiar los siguientes archivos al directorio de trabajo /opt/OpenIMSCore/ por cuestiones de comodidad mas que necesidad:

cp /opt/OpenIMSCore/ser_ims/cfg/* /opt/OpenIMSCore/

8.- Configurar las bases de datos:

Debemos colocarnos en el directorio /opt/OpenIMSCore/:

# mysql -uroot -p < /opt/OpenIMSCore/ser_ims/cfg/icscf.sql
# mysql -uroot -p < /opt/OpenIMSCore/FHoSS/scripts/hss_db.sql
# mysql -uroot -p < /opt/OpenIMSCore/FHoSS/scripts/userdata.sql

9.- Poner direccion IP publica y dominio propio

Podemos setear nuestro propio dominio de tres formas:

  • Tenemos un dominio por el cual pagamos
  • Configuramos nuestro DNS server (bind) para que haga la traduccion, en ese caso solo tenemos que configurar en la configuracion TCP/IP de todos los clientes que se quieran conectar a nuestra red que usen nuestro DNS, eso no interfiere con su navegacion normal ya que tendremos el cuidado de configurar correcatmente las opciones de conectarse a otros DNS publicos a traves del nuestro.
  • Usar un servicio gratuito de DNS tal como no-ip o algun otro servicio gratuito de traduccion


Hay que cambiar un monton de cosas en los archivos de configuraciòn, pero es facil usando el script:

./configurator.sh

Esta ubicado en /opt/OpenIMSCore/

Este script cambia la IP por default (127.0.0.1) por la IP que quieran poner, tambien pregunta para cambiar el dominio open-ims.test por cualquier otro. Cambia los archivos .cfg, .xml y .properties

10.- Arreglar archivo hss.properties para poder conectar via web con IP publica

Este archivo esta ubicado en: /opt/OpenIMSCore/FHoSS/deploy. Este archivo no lo modifica el script anterior asi que debemos hacerlo a mano.
Aqui debemos abrir el archivo en cuestion y cambiarle la IP por default (127.0.0.1) por la IP
publica del servidor.

Para conectar a la pagina web del HSS y poder ver usuarios, agregar usuarios y modificar servicios ponemos en cualquier navegador:

IP del servidor HSS:8080

Claves por default:

Clave administrador: hssAdmin
Pwd: hss

Clave usuario solo lectura: hss
Pwd: hss

11.- Arranque del sistema

El sistema arranca desde cuatro shell serparados en este orden, en modo root, en el directorio /opt/OpenIMSCore/ y se deben ejecutar los siguientes scripts: pcscf.sh, icscf.sh, scscf.sh (es recomendable respetar el orden). Estos script arrojan algunos errores en el proceso de arranque por que es imposible tener los tres levantados al mismo tiempo, pero luego que el sistema esta arriba no hay problema (no es mayor motivo de alarma).

Por ultimo en el directorio /opt/OpenIMSCore/FHoSS/deploy/ el script: startup.sh

Para simplificar el trabajo podemos hacer un script como el que vemos aqui:

#!/bin/bash
sleep 1
gnome-terminal -e ./icscf.sh
sleep 1
gnome-terminal -e ./scscf.sh
sleep 1
gnome-terminal -e ./pcscf.sh
sleep 1
gnome-terminal -e ./fhoss.sh

La ultima linea arranca el FHoSS.

12.- ¿Como probar el sistema?

Yo he probado el x-lite, aunque no es un cliente IMS propiamante dicho, tiene muchas funcionalidades interesante. Su configuracion es muy sencilla, solo debemos recordar que la autenticacion es del tipo md5 y no akav, por lo tanto debemos modificar esto en el hss via web y luego agregar estas lineas en el archivo scscf.cfg en el directorio: /opt/OpenIMSCore/
Estas lineas le indican al S-CSCF que el desde el HSS se decide el tipo de autenticaciòn por suscriptor:

modparam(“scscf”,”registration_default_algorithm”,”HSS-Selected”)

Se debe marcar con numeral (#) las otras opciones para evitar conflictos.

En este archivo hay varias opciones: solo autenticar digest-MD5, solo AKAV1, solo AKAV2, etc.

Hay otros tipos de clientes IMS propiamente dichos, procedo a enumerarlos, interesante seria tener algunos que podamos probar en una red celular, y que ademas a esta plataforma le agreguemos un gateway que permita hacer el puente a redes legacy y que seamos visibles desde esas redes con un numero propio de esta redes.

Puertos que se usan en IMS:

Elemento

Port Number

P-CSCF

4060

I-CSCF

5060

S-CSCF

6060

Diameter

3868, 3869, 3870

El Proxy-Call sesion control function (P-CSCF) contra el que se registran los equipos via sip usa el puerto 4060, ojo con esto que debemos indicarselo a los clientes IMS o SIP.

13.- Configuracion del sistema open-ims con cada servidor en una plataforma

De esta forma es posible tener cada servidor CSCF en una maquina diferente, aumentando la eficiencia de la plataforma.


14.- Uso de asterisk como aplication server

Tambien es posible usar asterisk como aplication server, debido a lo versatil de la plataforma asterisk, los AGI y la cantidad de opciones de desarrollo elaboradas para esta plataforma la hacen muy util como servidor de aplicaciones. Hay varios servidores de aplicacion que podemos probar.

SIPSEE
SIPSEE (SIP Servlet Execution Environment) es una solucion de FOKUS para funcionar como SIP Application Server (SIP AS). Este provee soporte multimédia sobre SIP/HTTP/Diameter.
Actua como un SIP proxy, SIP Redirect o B2BUA (Back to Back User Agent). Un API (Application Programming Interface) es usada y es compatible con JSR116 – SIP Servlet API.

SIPSEE es diseñado e implementado con soporte para SIP y HTTP y permitir el acesso a servicios IMS de clientes SIP a través de un browser HTTP potenciando servicios como Click2Dial, See What I See, etc.

Este software es IMS compliant.

Mobicents
Mobicents es un SIP Application Server mas popular para la plataforma Java.

Ventajas:
• IMS compliant.
• Bastante conocido y con mucho soporte.

WeSIP
WeSIP es un SIP y HTTP Application Server implementado sobre OpenSER. No es open source. Gratuito para uso no comercial.

Desventajas:
• No es open source. Gratuito para uso no comercial.





Follow

Get every new post delivered to your Inbox.

Join 249 other followers