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)
- Optionnel (non traité dans cet article): openssl pour la sécurité TLS
Note : Lors de l’installation de MySQL-server, une invite vous demande un mot de passe super utilisateur; Retenez-le :)!
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)
- Répertoire d’installation : le code source est pré-configuré pour fonctionner selon un chemin de fichier standard
- Créer le dossier /opt/OpenIMSCore/ et s’y rendre :
mkdir /opt/OpenIMSCore
cd /opt/OpenIMSCore - Créer le dossier ser_ims et y placer les serveurs CSCF (edit 2017) :
mkdir ser_ims
svn checkout https://svn.code.sf.net/p/openimscore/code/ser_ims/trunk/ ser_ims/ - Créer le dossier FHoSS et y placer le serveur HSS (edit 2017) :
mkdir FHoSS
svn checkout https://svn.code.sf.net/p/openimscore/code/FHoSS/trunk/ FHoSS/
- Créer le dossier /opt/OpenIMSCore/ et s’y rendre :
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 - 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
- Un JDK >=1.5 doit être installé sur la machine. Pour s’en assurer :
- It’s done !
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 ».
É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.
- Placez-vous dans le dossier d’openIMS et effectuer les 3 dumps suivants :
- 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.1Attention: 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.testAttention: 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
- 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 :
É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> :
-
Partie 1: Présentation et pré-requis
- Présentation du dossier;
- Principe de la gestion des profils et identités utilisateurs au sein d’une architecture IMS;
- Création et mise en place d’une machine virtuelle pour IMS;
-
Partie 2: Cœur de réseau IMS
- Installation d’un cœur de réseau IMS (OpenIMSCore) [page actuelle];
- Quelques infos sur la configuration réseau pour l’interface FHoSS;
- Configuration d’abonnés IMS;
- Configuration et utilisation d’un client IMS;
-
Partie 3: Serveurs d’application
- Quelques infos sur l’ajout et la configuration d’un serveur d’application IMS;
- Installation d’un serveur de présence (OpenSIPs);
- Installation d’un serveur IPTV (UCT IPTv Advanced);
- Mise en place d’un serveur de VOD.
Comment Faire le script de demarrage automatique et dans quel fichier on le mettra
j’ai essayé d’installer mais un erreur survenue ‘ ERROR: load_module: could not open module ‘
Bonjour moi aussi j’ai eu la même erreur . Avez vous trouvé une solution
[…] OpenIMScore et WaterClear sont des solutions opensource permettant l’implémentation d’un réseau IMS en l’utilisant l’ordinateur comme ressource matérielle principale. […]
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
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 ».
[…] 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 […]
bonjour,svp je voudrai savoir sur quel logiel se fait l’installation de Open IMS core
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
je l’ai défini mais rien s’execute pour mon probleme avec /bin/java non reconnue
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
J’ai le même problème.
As-tu arrivé à trouver une solution?
Bon je pense que j’ai resolu le probleme. Si tu executes le script par /FHoSS/deploy/ et PAS par FHoSS/scripts/.
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
Salut,
en exécutant la commande:
svn checkout http://svn.berlios.de/svnroot/repos/openimscore/ser_ims/trunk ser_ims
J’obtiens le message d’erreur suivant:
svn: Repository moved temporarily to ‘http://www.berlios.de/’; please relocate
Besoin d’aide, Merci.
essaie ces liens:
svn checkout https://svn.code.sf.net/p/openimscore/code/ser_ims/trunk/
svn checkout https://svn.code.sf.net/p/openimscore/code/FHoSS/trunk/
svn checkout https://svn.code.sf.net/p/openimscore/code/JavaDiameterPeer/trunk/
svn checkout https://svn.code.sf.net/p/openimscore/code/CDiameterPeer/trunk/
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
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
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???
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?
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?
slt il ne reconnait pas votre jdk
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
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
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:~#
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 !