Installation d’un cœur de réseau IMS

Cet article a pour but de vous montrer les différentes étapes nécessaires pour la mise en place du cœur de réseau d’une architecture IMS.

Dans cette optique, nous utiliserons l’implémentation open source « Open IMS Core », développé par l’institut Fraunhofer FOKUS de Berlin. Si vous n’avez pas lu l’article sur le projet OpenIMSCore, c’est le bon moment pour aller y jeter un coup d’œil : OpenIMSCore Project.

Note sur la performance: Dans ce tutorial, les différents serveurs du cœur de réseau IMS (hss, .-cscf) sont installés sur une même machine, sans configuration réseau spécifique (localhost). Nous y reviendrons dans un autre article, et nous verrons comment basculer vers une configuration plus avancée en dissociant les différents serveurs sur plusieurs machines et comment basculer d’une configuration en localhost vers une adresse IP spécifique.

Note sur la sécurité: Comme expliqué précédemment, le but de ce tutoriel est de mettre en place une architecture de test. Nous n’abordons donc que très peu le thème de la sécurité (ce sera le sujet d’un article à venir).
Concernant l’activation du compte root, nous vous rappelons que son utilisation est, de manière générale, très fortement déconseillée. Pour rappel, nous avons dans notre cas commencé par une installation en root pour appréhender les différents outils et serveurs. Nous avons par la suite repris l’intégralité des installations en désactivant le compte root (entres autres).

 

Étape 1: Pré-requis

apt-get update

  • Configuration matérielle et réseau :
    • Une machine Linux opérationnelle ou une VM Linux (voir comment créer sa VM -Ubuntu- pour IMS);
    • Environ 100 à 150 Mo d’espace libre;
    • De préférence 1Go de RAM;
    • Un serveur DNS configurable pré-installé (par exemple bind9, normalement par défaut sur les dernières configuration Linux);
    • et enfin… un accès internet fonctionnel!! (pour ceux utilisant une machine virtuelle).
  • Outils et Libraries :
    • Pour la récupération des sources: SVN
    • Pour la compil: GCC3/4, make, ant
    • Analyseur lexical et syntaxique: flex, bison
    • JDK1.5 (default-jdk ou openjdk)
    • libmysql (++3 à l’heure actuelle), libmysql-dev (++dev), (libmysql-java), libxml2, libxml2-dev
    • curl, libcurl4-gnutls-dev
    • ipsec-tools (pour le chiffrement de clées)
    • MySQL-server, bind9 (configurés pour un lancement à chaque démarrage de la machine, pour plus de simplicité – normalement par défaut lors de l’installation)
    • Note : Lors de l’installation de MySQL-server, une invite vous demande un mot de passe super utilisateur; Retenez-le :)!

    • Optionnel (non traité dans cet article): openssl pour la sécurité TLS
  • Note: A ce stade, toutes les libraires & outils sont installés, lancés et fonctionnels.

 

Étape 2: Récupération du code source d’OpenIMSCore (via SVN)

Note: Il est bien sur possible de modifier les chemins d’installation. Cependant, dans un premier temps, il est préférable de garder ceux par défauts proposé par OpenIMSCore (sinon, vous pouvez modifier les fichiers de configuration en fonction de votre arborescence).

 

Étape 3: Compilation d’openIMSCore

  • Compilation des serveurs .cscf (ser_ims) :

    cd ser_ims
    make install-libs all

  • Note: Si une erreur survient lors de la compilation, c’est probablement qu’une librairie est manquante : étudié l’erreur, elle devrait afficher la « missing library ».

  • Compilation du serveur FHoSS :
    • Un JDK >=1.5 doit être installé sur la machine. Pour s’en assurer :

      # java -version
      java version « 1.6.0_20 »
      OpenJDK Runtime Environment (IcedTea6 1.9.7) (6b20-1.9.7-0ubuntu1)
      OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)

      Attention: Si vous venez juste d’installer un JDK>=1.5, vérifier que cette dernière version soit bien prise en compte par le système (il se peut que votre système soit encore lié à une ancienne version du JDK, malgré l’installation d’une version JDK plus récente).

    • Compilation et déploiement :

      cd ../FHoSS
      ant compile
      ant deploy

  • It’s done !

 

Étape 4: Configuration de l’environnement: DNS et MySQL

  • Précisions :
    • Rappelez-vous: la configuration initiale d’openIMSCore permet uniquement un fonctionnement en localhost (dans un premier temps en tout cas).

    • Par ailleurs, le domaine par défaut est « open-ims.test ». Il est préférable de ne pas le modifier pour l’instant.

  • Configuration de MySQL :
    • Placez-vous dans le dossier d’openIMS et effectuer les 3 dumps suivants :

      cd /opt/OpenIMSCore/
      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

    • Le mot de passe demandé est le mot de passe super utilisateur de MySQL.
    • Vérifier que la base est accessible et chargée :

      mysql -u root -p -h localhost
      show databases;

      Vous devriez voir apparaitre 2 tables supplémentaires : hss_db et icscf.

  • Configuration du DNS :
    • Un exemple de fichier de zone DNS est présent dans le répertoire d’installation d’openIMS. Copier-le dans le répertoire de configuration de votre DNS :

      cp ser_ims/cfg/open-ims.dnszone /etc/bind/

    • Editer le named.conf.local (toujours dans /etc/bind/) pour prendre en compte cette nouvelle zone (ajouter les lignes suivantes):

      zone « open-ims.test » {
      type master;
      file « /etc/bind/open-ims.dnszone »;
      };

    • Vérifier que le named.conf fasse bien appel à ce fichier. Pour cela, la ligne suivante doit être présente dans le named.conf:

      include « /etc/bind/named.conf.local »;

      Ajoutez-la si ce n’est pas le cas.

    • Editer le fichier /etc/resolv.conf, supprimer (ou commenter) le contenu existant et ajouter les lignes suivantes :

      search open-ims.test
      domain open-ims.test
      nameserver 127.0.0.1

      Attention: A chaque redémarrage de l’OS, ce fichier va être écrasé par le Network Manager. Ainsi, faites un backup de ce fichier (nous l’utiliserons dans notre script automatique de lancement des serveurs, que nous verrons à la fin de ce tutoriel) :

      cp /etc/resolv.conf /etc/resolv.conf.ims

    • Editer le fichier /etc/hosts et ajouter les lignes suivantes :

      127.0.0.1 localhost
      127.0.0.1 open-ims.test mobicents.open-ims.test ue.open-ims.test presence.ope
      n-ims.test icscf.open-ims.test scscf.open-ims.test
      pcscf.open-ims.test hss.open-ims.test

      Attention: Comme précédemment, faites un backup de ce fichier :

      cp /etc/hosts /etc/hosts.ims

    • Redémarrer le serveur DNS :

      /etc/init.d/bind9 restart

    • Vérifier que le changement de configuration a bien été pris en compte (via dig) :

      dig open-ims.test

 

Étape 5: Fichiers de configuration et de lancement des serveurs d’openIMS

  • Copier les fichiers de configuration .cfg et .xml, ainsi que les scripts de lancement .sh des serveurs x-cscf dans le répertoire de votre choix (nous avons choisis de les placer dans le répertoire d’openIMS pour plus de simplicité et d’organisation) :

    cd /opt/OpenIMSCore/
    cp ser_ims/cfg/*.cfg /opt/OpenIMSCore/
    cp ser_ims/cfg/*.xml /opt/OpenIMSCore/
    cp ser_ims/cfg/*.sh /opt/OpenIMSCore/

  • Vous pouvez éditer ses fichiers selon vos préférences.

 

Étape 6: Lancement d’openIMS

  • Serveurs x-cscf:
    • Lancer les fichiers pcscf.sh, icscf.sh et scscf.sh
    • Ces trois serveurs doivent fonctionner en parallèles; Vous pouvez lancer ces trois serveurs sur une même VM, cela ne pose aucun problème technique (en revanche, pas top au au niveau des performances)

    • Garder les terminaux ouverts, vous devriez pourvoir observer tout le trafic entre ces serveurs.
  • Serveur FHoSS :
    • Lancer le serveur via FHoSS/deploy/startup.sh
    • Il est possible que vous obteniez une erreur lors du lancement du script; dans ce cas, il est fort probable que celle-ci soit liée à la variable d’environnement JAVA_HOME. Vérifier que cette variable a été correctement exporté. Si ce n’est pas le cas, lancer la commande suivante dans un terminal :

      export JAVA_HOME= »/usr/lib/jvm/java-1.6.0-openjdk/ »

      Modifier le chemin en fonction de votre arborescence. Par ailleurs, il est possible également que cette variable soit écrasé à chaque redémarrage de la machine.

    • Vérifier que le FHoSS est correctement lancée en accédant à l’interface http://localhost:8080/.

 

Étape 7: Création d’un script de démarrage automatique

Comme expliqué précédemment dans ce tutorial, il peut être utile de créer un script qui lance de manière automatique les différents serveurs et qui s’occupe de faire les configurations nécessaire avant le lancement des serveurs (par exemple mettre à jour/exporter la variable JAVA_HOME, etc.).
En voici un basique mais qui fait le nécessaire (pour une installation en root):

#!/bin/bash

read -p « Lancement du coeur IMS. Appuyer sur une touche pour continuer.. »
export JAVA_HOME= »/usr/lib/jvm/java-1.6.0-openjdk/ »
cp /etc/resolv.conf.ims /etc/resolv.conf
cp /etc/hosts.ims /etc/hosts
cd /opt/OpenIMSCore/
gnome-terminal –geometry=70×20+100+350 -e ./pcscf.sh
read -p « PCSCF: OK! Appuyer sur une touche pour continuer.. »
gnome-terminal –geometry=70×20+200+350 -e ./icscf.sh
read -p « ICSCF: OK! Appuyer sur une touche pour continuer.. »
gnome-terminal –geometry=70×20+300+350 -e ./scscf.sh
read -p « SCSCF: OK! Appuyer sur une touche pour continuer.. »
cd FHoSS/deploy/
gnome-terminal –geometry=70×20+400+350 -e ./startup.sh
read -p « FHoSS: OK! Appuyer sur une touche pour continuer.. »

 

 

Référence Dossier <Mise en place d’un serveur de streaming vidéo> :


IMS NetworkIMS WayInstall OpenIMSOpenIMS Coretutorial IMS
Comments ( 26 )
Add Comment
  • nassa

    Comment Faire le script de demarrage automatique et dans quel fichier on le mettra

  • mehdi

    j’ai essayé d’installer mais un erreur survenue ‘ ERROR: load_module: could not open module ‘

    • Coumba

      Bonjour moi aussi j’ai eu la même erreur . Avez vous trouvé une solution

  • jenny

    Bonjour, merci pour ce tuto, très intéressant
    Cependant j’ai un problème, j’ai suivie toutes les étapes d’installation, tout à bien fonctionné, mais quand je lance l’interface web du FHoSS les utilisateurs BOB et ALICE ont pour status « not registered »

    SVP que puis je faire pour résoudre ce problème
    merci

    • Black

      Il faut que tu ais une application client IMS (logiciel exemple monster). Et avec ce logiciel tu pourras te connecter. C’est ainsi que l’état « not registered » changera en « resgisterd ».

  • *OpenIMSCore* Fail to restart bind9 in the installation step – Internet and Tecnnology Answers for Geeks

    […] the OpenIMSCore. I use ubuntu in VM Machine and followed the following posts to install OpenIMSCore Installing an IMS network heart. I went through all the first steps and now getting stuck at the step configuring DNS […]

  • niandou

    bonjour,svp je voudrai savoir sur quel logiel se fait l’installation de Open IMS core

  • BAH

    Bonjour,
    pour ce qui ont des problèmes sur la partie JAVA, exemple: Building Classpath
    Classpath is lib/*.jar::log4j.properties:..
    FHoSS/deploy/startup.sh: ligne 15: /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java: Aucun fichier ou dossier de ce type.
    Il faut définir la variable d’environnement dans le fichier dans le fichier ~/.bashrc
    export JAVA_HOME= »/usr/lib/jvm/java-1.7.0-openjdk-amd64″
    export PATH=$PATH:$JAVA_HOME/bin

    • jackbauer

      je l’ai défini mais rien s’execute pour mon probleme avec /bin/java non reconnue

  • diallo

    je te felicite pour ce tuto.
    je rencontre un probleme pour le lancement du hss.
    j’ai l’erreur suivante:
    Error: Could not find or load main class de.fhg.fokus.hss.main.HSSContainer

    • konkon

      J’ai le même problème.
      As-tu arrivé à trouver une solution?

    • konkon

      Bon je pense que j’ai resolu le probleme. Si tu executes le script par /FHoSS/deploy/ et PAS par FHoSS/scripts/.

  • RAFAEL SANZIO

    bonjour, je suis à la loupe toutes les recommandations dictées dans le tuto mais lorsque je cherche à installer les paquets OpenIMSCore ser_ims et FHOSS, on me dit de relocaliser berlios.de. je ne comprend pas ce que cela veut dire. j’ai tellement besoin de ça vue que je travaille sur un projet et que c’est seul openimscore qui me permet vraiment de realiser quelque chose et donc le temps presse.
    merci à tous,
    obrigado,
    gracias,
    thanks

  • dhikra

    j’arrive pas a faire enregistrer un abonnée même alice et bob il m’indique dans l’interface NOT-REGISTRED je ne sais pas pourquoi

  • dhikra

    j’ai effectué toutes les étapes pour l’installation du coeur. Seulement j’ai des difficultés à lancer le FHoSS. il me met cette erreur

    ERROR de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine – I_Snd_Conn_Req StateMachine: Peer scscf.open-ims.test can not be resolved.

    Pourriez vous m’aider?
    Merci

  • olfa

    j ai suivi tt le tutoriel mais j ai un pb au redémarrage de DNS en effet j ai pas le fichier /etc/init.d/bind9 (je suis ss fedora 20)

    pourriez-vous m’aider svp???

  • romy

    Merci pour le tutoriel..
    Seulement j’ai des problèmes avec mon JDK
    j’ai bien exporté le JAVA-HOME mais au lancement du FHoSS j’ai
    Classpath is lib/*.jar::log4j.properties:..
    Exception in thread « main » java.lang.NoClassDefFoundError: de/fhg/fokus/hss/main/HSSContainer
    Caused by: java.lang.ClassNotFoundException: de.fhg.fokus.hss.main.HSSContainer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    Could not find the main class: de.fhg.fokus.hss.main.HSSContainer. Program will exit.

    C’est quoi la solution?

  • emmanuel

    Salut j’ai aimer ton tuto, c’est vraiment du bon travail. Je viens de le suivre mais j’ai une erreur au niveau du lancement de FHoSS.

    J’ai verifier ce que je peut sur la variable d’environnement mais toujours l’erreur suivant persiste:

    Building Classpath
    Classpath is lib/*.jar::log4j.properties:..
    FHoSS/deploy/startup.sh: ligne 15: /usr/lib/jvm/java-1.0.6-openjdk-i386/bin/java: Aucun fichier ou dossier de ce type

    Pourriez vous me regarder sa svp?

    • malonethiof

      slt il ne reconnait pas votre jdk

  • Sam

    Bonjour
    j’ai effectué toutes les étapes pour l’installation du coeur. Seulement j’ai des difficultés à lancer le FHoSS. il me met une erreur

    ERROR de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine – I_Snd_Conn_Req StateMachine: Peer scscf.open-ims.test can not be resolved.

    Pourriez vous m’aider?
    Merci

    • kris

      Bonsoir Sam
      est ce que tu peux trouver le probleme sur
      ERROR de.fhg.fokus.diameter.DiameterPeer.peer.StateMachine – I_Snd_Conn_Req StateMachine: Peer scscf.open-ims.test can not be resolved. j’ai cherché la solution par tout sur le net je n’ai pas trouvé.
      si tu as trouvé la solution fais moi signe.
      thanks

  • Guy Salvatore

    bonjour

    j’ai suivi le mode opératoire, j’ai une erreur lorsque le dns démarre

    voici une capture; pouvez-vous m’indiquer les pistes de recherche d’erreur et/ou m’envoyer les fichiers de configuration dns

    nb: ubuntu 11.4, vmware 3.1.4

    par avance merci

    Guy Salvatore

    root@ubuntu:~# /etc/init.d/bind9 restart
    * Stopping domain name service… bind9 rndc: connect failed: 127.0.0.1#953: connection refused
    [ OK ]
    * Starting domain name service… bind9 [fail]
    root@ubuntu:~# /etc/init.d/bind9 status
    * could not access PID file for bind9
    root@ubuntu:~#

    • Y

      Bonjour,

      A première vu, il semblerait que le problème provienne des droits d’accès sur le fichier PID de bind9. Il est possible que ces droits d’accès du fichier aient été modifié lors de l’édition des fichiers de conf. En reprenant les erreurs dans l’ordre :
      root@ubuntu:~# /etc/init.d/bind9 restart
      * Stopping domain name service… bind9 rndc: connect failed: 127.0.0.1#953: connection refused
      [ OK ]

      Cette première erreur n’en est pas vraiment une en soit dans le sens ou, si bind9 n’est pas fonctionnel, la commande stop sur le serveur renvoie un #953: connection refused. Rien de bien inquiétant donc jusqu’ici.

      Le vrai problème est donc l’accès au PID file. Comme dit précédemment, cela provient très probablement de droits d’accès erronés.
      Cependant, la source peut également provenir d’une erreur dans la syntaxe du fichier /etc/bind/named.conf.local ou /etc/bind/named.conf. Il vaut mieux vérifier ces fichiers dans un premier temps avant de modifier les droits d’accès;
      Voici le contenu de ces deux fichiers pour la configuration d’openIMS;
      Fichier /etc/bind/named.conf
      include "/etc/bind/named.conf.options";
      include "/etc/bind/named.conf.local";
      include "/etc/bind/named.conf.default-zones";

      Fichier /etc/bind/named.conf.local
      zone "open-ims.test" {
      type master;
      file "/etc/bind/open-ims.dnszone";
      };

      Dans tous les cas, vous pouvez utiliser les deux commandes suivantes pour vérifier vos fichiers de confs et votre zone DNS:
      named-checkconf /etc/bind/named.conf.local
      named-checkzone open-ims.test /etc/bind/open-ims.dnszone

      Si ces deux fichiers sont ok (et que named.conf.default-zones et named.conf.options n’ont pas été modifié), modifier les droits d’accès comme suit:
      chown bind:bind /var/run/named/named.pid
      chmod +rw /var/run/named/named.pid

      bind devrait à présent pouvoir accéder au PID file. Si tel est le cas, n’oubliez pas ensuite de modifier les droits d’accès en fonction de vos propres besoins.
      Dans le cas contraire, n’hésitez pas à poster en commentaire le contenu du fichier de log de bind, qui nous devrait nous apporter plus d’informations sur l’erreur.

      Bonne continuation avec IMS !