Guía de instalación

Vista general

Esta página es para ayudarte a arrancar el Open IMS Core. En la distribución SVN, todo se encuentra pre-configurado y suministrado con un conjunto mínimo de datos que deberían ser suficientes para establecer una simple prueba de “Alice-llama a-Bob”.

Instalación rápida

Si anteriormente ya has realizado el proceso de instalación, esta sección te ayudará a refescar tu memoria acerca de los pasos que deberías seguir. Si es tu primera vez, omítela de momento y comienza con el Paso 1.

mkdir /opt/OpenIMSCore
cd /opt/OpenIMSCore

mkdir FHoSS
svn checkout https://svn.code.sf.net/p/openimscore/code/FHoSS/trunk FHoSS

mkdir ser_ims
svn checkout https://svn.code.sf.net/p/openimscore/code/ser_ims/trunk ser_ims

cd FHoSS
ant compile deploy
cd ..

cd ser_ims
make install-libs all
cd ..

mysql -u root -p < FHoSS/scripts/hss_db.sql
mysql -u root -p < FHoSS/scripts/userdata.sql

mysql -u root -p < ser_ims/cfg/icscf.sql

cp ser_ims/cfg/*.cfg .
cp ser_ims/cfg/*.xml .
cp ser_ims/cfg/*.sh .

Paso 1: Requisitos previos

  • Requerimientos de hardware
    • Una PC actual con Linux debería ser suficiente
    • Si deseas obtener el máximo rendimiento:
      • Agregar varios Gigabytes de RAM
      • Disponer de varios CPUs/Cores
      • Gigabit Ethernet sería de ayuda
  • Acceso de red
    • Inter-domain NAT no es de nuestro interés, así que disponer de una dirección IP pública estaría bien
    • Un servidor DNS que pueda controlarse si es que tu no deseas tener uno dentro del mismo PC Linux
  • Requerimientos de software
      • ~100 MBytes de espacio de disco para estar seguros
      • GCC3/4, make, JDK1.5, ant
      • MySQL instalado e inicializado (u otro DBMS si es que puedes lidiar con él)
      • bison, flex
      • libxml2 (> 2.6), libmysql – ambos con librerías de desarrollo
      • Linux kernel 2.6, así como ipsec-tools (setkey) si desearas utilizar seguridad IPSec
      • Opcional: openssl si quisieras habilitar la seguridad TLS
      • bind instalado y ejecutándose (u otro servidor de nombres de dominio si es que puedes lidia con él)
      • Navegador en el PC o que pueda conectarse a é (para provisionar usuarios)

    Nota: Se considera que tienes todo esto instalado, configurado y ejecutándose.

    Nota: Se asume, que por ahora, deseas instalar todo en 1 solo PC.

Paso 2: Obtener el código fuente

  • ¿Dónde? – Código reciente en https://sourceforge.net/p/openimscore/code
    (necesitarás tener instalado Subversion).
    Enesta página puedes encontrar mucha mas información acerca de las fuentes .
  • ¿Qué?
    • Los CSCFs: ser_ims/trunk
    • El HSS: FHoSS/trunk
  • ¿Cómo? – El códio fuente se encuentra pre-configurado para trabajar desde una ruta de ficheros estándar:

Paso 3: Compilar

  • ser_ims
    • ¡¡¡Nuevo!!! Ejecuta “make install-libs all” dentro de ser_ims
      cd ser_ims
      make install-libs all
      cd ..
    • Si algo falla, probablemente no cuentas con todos los requisitos previos.
  • FHoSS
    • Si no tienes un JDK >=1.5, consigue uno antes de continuar
    • Asegúrate de que la versión del JDK que estás utilizando es >= 1.5!!!
      # java -version
      java version “1.5.0_07”
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
      Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode)A menudo se da el caso de que los usuarios acaban de instalar un JDK 1.5 pero aún siguen utilizando su antiguo JDK instalado. Si ves muchos errores, revisa esto antes de publicar un bug report.
    • Ejecuta “ant compile deploy” dentro de FHoSS
      ¡¡¡Nuevo!!! ¡¡¡ya no se necesita “ant gen” !!!
      cd FHoSS
      ant compile
      ant deploy
      cd ..
  • Mientras esperas a que termine la compilación, puedes seguir adelante y realizar el paso 4.

Paso 4: Configurar el entorno

  • Notas:
    • Todos los ejemplos de instalación están configurados para trabajar únicamente en el loopback local y el dominio por defecto es “open-ims.test”.
    • Los derechos de acceso de MySQL están configurados para acceso local únicamente
    • Recomendamos que primeros intentes de esta manera y posteriormente realices tus cambios.:
      • Reemplaza 127.0.0.1 con tu dirección IP en donde sea requerido
      • Reemplaza el dominio local (open-ims.test) con el tuyo propio
      • Cambia las contraseñas de la base de datos

      Para esta operación, ser_ims/cfg/configurator.sh puede ayudarte.

  • DNS
    • Un fichero de zona DNS puede encontrarse dentro de ser_ims/cfg/open-ims.dnszone
    • Cópialo a tu directorio de configuración de bind (servidor de nombres)
    • Edita el fichero named.conf e inserta el anterior fichero ahí (Sería grandioso agregar también entradas de DNS inversas)
    • Reinicia el servidor de nombres
    • Prueba que los nombres sean resueltos correctamente (no olvides que el fichero /etc/resolv.conf apunte hacia tu nuevo servidor DNS!)
  • MySQL
    • Ejecuta los volcados SQL (mysql -u root -p -h localhost < dump.sql):
      ¡¡¡Nuevo!!! “hssdb.sql” fue reemplazado por “hss_db.sql” !!!
      mysql -u root -p -h localhost < ser_ims/cfg/icscf.sql
      mysql -u root -p -h localhost < FHoSS/scripts/hss_db.sql
      mysql -u root -p -h localhost < FHoSS/scripts/userdata.sql
    • Revisa si las bases de datos se encuentran ahí y son accesibles

Paso 5: Configurar el núcleo IMS

  • Hasta aquí, deberías tener funcionando tanto MySQL como el DNS
  • CSCFs
    • Copia los siguientes ficheros a /opt/OpenIMSCore u otra ubicación que desees:
      pcscf.cfg, pcscf.sh, icscf.cfg, icscf.xml, icscf.sh, scscf.cfg, scscf.xml, scscf.sh,cp ser_ims/cfg/*.cfg .
      cp ser_ims/cfg/*.xml .
      cp ser_ims/cfg/*.sh .
  • FHoSS
    • Echa un vistazo a los ficheros de configuración dentro de FHoSS/deploy/ (disponible después de que el paso 3 se ha completado)
  • Edita estos ficheros con tus propias preferencias (no olvides actualizar el fichero de zona DNS de acuerdo a tus preferencias y reinicia el servidor de nombres)

Paso 6: Iniciar los componentes

  • CSCFs
    • Inicia el pcscf.sh, el icscf.sh y el scscf.sh
    • Todos estos scripts deberían ejecutarse en paralelo.
    • Nos encanta depurar, así que por defecto, se mantendrían en primer plano.
    • Por defecto, periódicamente deberías ver mensajes de registro con el contenido del registrar y los enlaces diameter abiertos
  • FHoSS
    • Inicia el FHoSS/deploy/startup.sh
    • Si el anterior paso falla, revisa que tengas la variable de entorno JAVA_HOME correctamente exportado y/o modifica el script que acabas de intentar iniciar.
    • Revisa la interfaz web en http://localhost:8080/
    • Revisa si los Diameter Peers se conectan unos con otros. Puedes ver esto en la consola del FHoSS o en la del I/S-CSCF

Paso 7: Configurar abonados

  • FHoSS
    • Por defecto, el FHoSS viene suministrado con un par de usuarios de muestra:
    • Utiliza estos usuarios o inserta otros nuevos.
      • Crea una Subcripción (Subscription)
      • Crea una Identidad Privada (Private Identity)
      • Crea una Identidad Pública (Public Identity)
      • Enlázalas
  • Pasarela SIP-to-IMS (SIP-to-IMS Gateway)
    • La pasarela SIP-to-IMS (SIP-to-IMS Gateway) ya está obsoleta y fue desechada del proyecto. Ve el Anexo y las FAQ para mayor información sobre como utilizar el Open IMS Core con clientes que solo tengan capacidad de autenticación MD5.
  • Configuración del terminal de usuario IMS
    • Proporciona al UE tus propios datos o utiliza uno de los usuarios por defecto
    • Alice:
      • Identidad Privada (Private Identity): alice@open-ims.test
      • Clave Secreta (Secret Key): alice
      • OP: 0x00…0
      • AMF: 0x00…0
      • Uso de Clave de Anonimato (Use of Anonimity Key): habilitar (enable)
      • Identidad Pública (Public Identity): sip:alice@open-ims.test
      • Dominio (Realm): open-ims.test
      • Strict Outbound Proxy: sip:pcscf.open-ims.test:4060
    • Bob: procede de manera similar al caso anterior de Alice
  • Configuración del terminal de usuario SIP
    • Alice:
      • Parte Usuario del SIP URI: alice
      • Parte Host del SIP URI/Domain/realm: open-ims.test
      • Contraseña: alice
      • Strict Outbound Proxy: sip:pcscf.open-ims.test:4060
      • ¡¡¡ Asegúrate de que tu cliente SIP efectúe REGISTER sip:open-ims.test y no REGISTER sip:pcscf.open-ims.test:4060 !!!
      • !!! Lee el Anexo y las FAQ relacionados con la utilización de clientes con capacidad de autenticación únicamente MD5con el Open IMS Core
    • Bob: procede de manera similar al caso de Alice

Paso 8: Realizar Test!

  • Este es el último paso. Hasta aquí, deberías tener todo instalado y configurado
  • El proceso de registro utiliza todos los componentes y como tal, es una buena prueba de que todo está activo y ejecutándose
  • Utiliza Wireshark para ver que sucede:
    • Observa el tráfico SIP en los puertos 4060, 5060 y 6060
    • Observa el tráfico Diameter en los puertos 3868, 3869 y 3870

Anexo A – Como configurar el DNS

Aparentemente, muchos usuarios tienen dificultades al configurar un servidor DNS. Aunque no sea nuestro propósito enseñarte esto, aquí tienes un resumen de este proceso. Pero sé consciente de que esto no significa que estemos ofreciendo ningún soporte adicional para ello y que no tengas que leer el manual del DNS. Si crees que /etc/hosts será suficiente, estás equivocado ya que este no puede ayudarte con consultas DNS especiales como NAPTR y SRV.

Así que, ¿como hacer para tener un servidor DNS activo y ejecutándose?

  • Instala el paquete bind (a menudo llamado named) para tu distribución
  • Asegúrate de tener privilegios de root
  • Ubica el fichero named.conf (podría estar dentro de /etc o /etc/bind o /etc/named)
  • Edita ese fichero de acuerdo a tus necesidades. Aquí están algunas cosas que necesitas ahí dentro:options {

    forward first;
    forwarders {
    {THE_IP_ADDRESS_OF_YOUR_UPSTREAM_DNS_SERVER;} ;
    };

    };

    zone “open-ims.test” IN {
    type master;
    file “pri/open-ims.dnszone”;
    notify no;
    };

    En algunas distribuciones, este fichero incluye otros ficheros, así que asegúrate de hurgar también entre ellos.

    LA_DIRECCION_DE_TU_SERVIDOR_DNS_UPSTREAM puede encontrarse dentro de /etc/resolv.conf.

  • Ahora copia el fichero /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone a donde lo has configurado anteriormente
    (pri/open-ims.dnszone)
    cp /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone /var/bind/pri/
    chown -R named:named /var/bind/pri/open-ims.dnszone
  • Luego, inicia o reinica el servidor DNS (recuerda que los cambios en estos ficheros de configuración no son monitorizados por tanto tendrás que enviar un SIGHUP o hacer un reinicio para que sean recargados).
    /etc/init.d/named restart
  • Ahora deberías probar si funciona. Mira si en la respuesta obtienes la contestación correcta.
    dig @127.0.0.1 pcscf.open-ims.test
  • Para usarlo verdaderamente, necesitarías configurarlo como un servidor DNS para tu máquina. Así es como tu fichero /etc/resolv.conf debería parecerse:
    # cat /etc/resolv.conf
    nameserver 127.0.0.1
    search open-ims.test
    domain open-ims.test
  • ¡Recuerda que algunas utilerías como los clientes DHCP sobreescriben este fichero por defecto!

Anexo B – Como configurar clientes SIP

El antiguo módulo SIP2IMS que efectuaba la traducción de autenticación de MD5 a AKA (MD5-to-AKA authentication translation) ha sido eliminado por ser obsoleto ya que el núcleo puede efectuar autenticación MD5 también. Otra razón es que su funcionalidad era seriamente defectuosa por el hecho de que era un proxy SIP en lugar de ser un completo B2BUA.

Así que, ¿Como registrar a un cliente?

  • Primero proporciona los usuarios (o utiliza los que vienen por defecto sip:alice@open-ims.test or sip:bob@open-ims.test).
    Asegúrate de que en la interface de provisionamiento del HSS en la configuración de la Identidad Privada tu permites el uso de Digest-MD5 para los respectivos usuarios
  • Luego, tienes dos opciones para que el S-CSCF disencadene una autenticación MD5
    1. Modifica el cliente para que envie un parámetro “algorithm=MD5” dentro del encabezado de autorización (Authorization header) dentro del primer REGISTER no autorizado (unauthorized REGISTER).
    2. O modifica el scscf.cfg y habilita la autorización MD5 como el método de autenticación por defecto en lugar de
      AKAv1-MD5.
  • A continuación, solo asegúrate de que el cliente esté utilizando la dirección del P-CSCF (sip:pcscf.open-ims.test:4060 por defecto) como
    strict outbound proxy y que el REGISTER Request-URI sea “sip:open-ims.test” (o tu propio nombre de dominio) y no
    “sip:pcscf.open-ims.test:4060” ya que muchos clientes SIP aquí fallan.

Anexo C – Cambiando el Nombre de Dominio y la Dirección IP de los ficheros de configuración

OpenIMSCore está preconfigurado para trabajar con el dominio “open-ims.test” y la dirección ip del dispositivo loopback por defecto, “127.0.0.1”.
Siguiendo las anteriores instrucciones de instalación sin cambiar los ficheros de configuración el entorno se configuraría exitósamente. Por algunas razones (como realizar test de itinerancia(roaming), comunicación con otras entidades externas), necesitarías cambiar el nombre de dominio. En tal caso, podrías utilizar un script de configuración (configurator.sh) el cual está almacenado bajo el directorio /opt/OpenIMSCore/ser_ims/cfg/

¿El script solamente cambia los ficheros *.cfg?

No, también puede reconfigurar ficheros *.xml , *.sql y de configuración del FHoSS (*.properties).

¿Como hago uso de configurator.sh?

  • Puedes ejecutarlo directamente y traer los ficheros a cambiar como argumentos. Ve el ejemplo de abajo:# pwd
    /opt/OpenIMSCore
    # ser_ims/cfg/configurator.sh ser_ims/cfg/scscf.cfg ser_ims/cfg/icscf.xml \
    FHoSS/deploy/hss_db.sql FHoSS/deploy/hss.properties
  • Luego copia los ficheros al directorio /opt/OpenIMSCore
  • Observa que tienes que respaldar tus ficheros de configuración que deseas reconfigurar