Fraunhofer OpenIMSCore

Posted: October 14, 2010 in technical
Tags: , , , , , , , , , , , , , , , , , , ,

WONDERFUL tool. Kindda weird to configure at first, but, once you have clear in mind what you want to do, it seems really intuitive.

I have it on a debian 5.0.5. Installed in /opt/OpenIMSCore

It has 4 main components:

P-CSCF, I-CSCF, S-CSCF and HSS – and, as far as I have understood from my knowledgeable colleagues who have done this, these components can be installed separately on different machine. I have installed them bulky on a single machine.

Ah, and it needs a DB server (HSS being a DB afterall) – I have used MySQL and a DNS server – I have used bind9, on the same machine. The Fraunhofers are nice guys and give you the DNS file zone and a lot of scripts to make your work of configuring the proxies, as well as adding and managing users, much easier.

So, briefly, where are the configuration files, what I have changed in each of them to make them work, which scripts I have used and what users I have (the IMS dumps from the previous post shows a user called Cristina who registers to this IMS core and does a SIP call – we’ll see that also).

imacandi:/opt/OpenIMSCore# ls         pcscf.cfg       scscf.cfg  TGPPGq.xml
add-user-cristina.sql      delete-user-cristina.sql  icscf.cfg       icscf.xml   TGPPRx.xml
add-user-sin.sql           delete-user-sin.sql        mgcf.cfg       pcscf.xml       scscf.xml            FHoSS                     icscf.thig.cfg  ser_ims    trcf.cfg
I guess it would be nice and mostly USEFUL, to read the OpenIMSCore install howto (don’t worry, is not long) BEFORE continuing – at least if you want to apply the following information as a “howto”. If you are reading just as a lecture, you may just continue.
And we are firstly interested in the configuration files of the proxies and the database. They are already created at installation time, and I have copied them (as per the installation howto), directly under /opt/OpenIMSCore.
They are:
The pcscf.cfg is the config for the P-CSCF – big surprise, heh?
The only change I made here was the IP address the P-CSCF uses for opening the socket:
This file has the directives for the modules to be loaded by the pcscf daemon and also the main routing logic.  This routing logic part is a set of decisional actions based on the values of different headers from the SIP messages, like the Method type or the length of the message, or the value of max_forwards header or whether or not this is the initiator of a dialog and so on…
The pcscf.xml is another configuration file, containing declarations of the DiameterPeer, FQDN, Default Route, Realms and Authentication Identifiers. The only changes I’ve done in this file where related to the port where the P-CSCF listens for the Diameter communication:
<Acceptor port=”3867″ bind=”″/>
This is specially useful if you have the HSS on a different machine (which is the real use-case).
And there is also the, which is a basic start/stop script.
Now, the example with the pcscf config above is basically the same for the icscf and scscf.
The /opt/OpenIMSCore/FHoSS/deploy/DiameterPeerHSS.xml file contains some similar configuration for the HSS, where the only change was the Acceptor IP and port.
Oh, and one more thing, in order to be able to actually start the HSS you need to have the JAVA_HOME variable set.
Mine is JAVA_HOME=/usr/lib/jvm/java-6-sun.
Then I’ve started the HSS like this:
# cd /opt/OpenIMSCore/FHoSS/deploy
# ./
By default, everything starts in debug mode, so I have 4 screens where I start the P, S, I and HSS, and then another one to play with.
It looks like this:
— At this is the no-TLS way to configure it: not much to configure, actually.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s