OpenIMSCore : Installation and Configuration Guide

Hi there, my current project (also and next few posts) will be on subject of IMS. For faculty research I must install and examine an I-CSCF part of IMS subsystem. So let’s go :

The IP Multimedia Subsystem or IP Multimedia Core Network Subsystem (IMS) is an architectural framework for delivering Internet Protocol (IP) multimedia services. It was originally designed by the wireless standards body 3rd Generation Partnership Project (3GPP), as a part of the vision for evolving mobile networks beyond GSM. Its original formulation (3GPP Rel-5) represented an approach to delivering “Internet services” over GPRS. This vision was later updated by 3GPP, 3GPP2 and ETSI TISPAN by requiring support of networks other than GPRS, such as Wireless LANCDMA2000 and fixed line.

To ease the integration with the Internet, IMS uses IETF protocols wherever possible, e.g. Session Initiation Protocol (SIP). According to the 3GPP,[1] IMS is not intended to standardize applications but rather to aid the access of multimedia and voice applications from wireless and wireline terminals, i.e. create a form of fixed-mobile convergence (FMC). This is done by having a horizontal control layer that isolates the access network from the service layer. From a logical architecture perspective, services need not have their own control functions, as the control layer is a common horizontal layer. However in implementation this does not necessarily map into greater reduced cost and complexity.

Alternative and overlapping technologies for access and provisioning of services across wired and wireless networks include combinations of Generic Access Networksoft switches and “naked” SIP. (SOURCE : wiki)


The network architecture, IP Multimedia Subsystem (IMS) has become standard thanks to the collaboration of Telecoms & Internet converged Services & Protocols for Advanced Networks (TISPAN) and The Third Generation Partnership Project (3GPP) standardization committees set up by the body European Telecommunications Standards Institute (ETSI).

IMS (IP Multimedia Subsystem) plays an important role in delivering key services such as Quality of Service (QoS), security, instant messaging (IM), IP Television (IPTV), etc.. both fixed and mobile networks.
The basic structure of IMS that enables it to support IM and chat services is as follows:

    • Home Subscriber Server (HSS)
    • Proxy – Call Session Control Function (P-CSCF)
    • Interrogating – Call Session Control Function (I-CSCF)
    • Serving – Call Session Control Function (S-CSCF)


What is OpenIMSCore?

OpenIMSCore is an OpenSource project (Fraunhofer FOKUS, German organization that focuses on research and development of new technologies) which produced the eponymous software: software that implements the functionality of the 3 types of CSCF and an approximate version, but still effective, HSS. The project OpenIMSCore appartiente an OpenSource project OpenIMS Playground (managed by the same group FOKUS) much more extensive than trying to implement all the services defined by the IMS standard.

For more information about Playground OpenIMS OpenIMSCore and I recommend you look at the following sites:


Early IMS

There is a need for an IMS version that offers similar features but doesn’t require the investments necessary for full IMS. This version has been defined as Early IMS, and has the following advantages:

  • The user entity does not have to support IPv6
  • The user entity does not require an USIM/ISIM
  • The user entity does not have to support IPsec

However, as some of the IMS security mechanisms rely on the presence of a USIM/ISIM, such as user identification, the use of Early IMS has security implications that should be acknowledged.

Advantages and Issues

Advantages over existing systems

  • The core network is independent of a particular access technology
  • Integrated mobility for all network applications
  • Easier migration of applications from fixed to mobile users
  • Faster deployment of new services based on standardized architecture
  • An end to unique or customized applications, leading to lower CAPEX and OPEX
  • New applications such as presence information, videoconferencing, Push to talk over cellular (POC), multiparty gaming, community services and content sharing.
  • Evolution to combinational services, for example by combining instant messaging and voice
  • User profiles are stored in a central location
  • The architecture is designed for easy scalability and redundancy

Differences with free VoIP

It’s possible to run free VoIP applications over the regular Internet. Then why do we need IMS, if all the power of the Internet is already available for 3G users?

  • Quality of Service : The network offers no guarantees about the amount of bandwidth a user gets for a particular connection or about the delay the packets experience. Consequently, the quality of a VoIP conversation can vary dramatically throughout its duration.
    • Contrasting view: The underlying routing structure of the Internet can effectively eliminate bandwidth and latency issues for the vast majority of VoIP calls. And what the Internet itself doesn’t handle can be handled by sophisticated audio processing at the terminal endpoints of calls.
      • Re-Contrasting view: The Internet Core network may handle bandwidth and latency issues, mainly due to statistical reasons. The problem with free VoIP is that the Internet Access Provider can not easily differentiate free VoIP service from any further bandwidth consuming application in the access network. Especially the last mile is the bottleneck and with IMS the ISP/operator can guarantee QoS since he “knows” which service (e.g. VoIP) has been requested by the user.
  • Charging of multimedia services : Videoconferences can transfer a large amount of information, but the telecom operator can’t charge separately for this data. Some business models might be more beneficial for the user (for instance: a fixed price per message, not per byte); others might charge extra for better QoS.
    • Contrasting view: Complex charging structures are a legacy of the telephone industry and are not needed on Internet connections which are typically flat-rate. The cost of monitoring traffic to distinguish between different types of bytes greatly adds to the cost of delivering those bytes.
      • Re-Contrasting view: IMS charging is very simple and built-in. An unlimited flat-rate for all users would penalize the majority of users who are not interested in downloading several GBytes of movies per week. A flexible (volume, session – time & service, event based) charging architecture creates new opportunities and can be much more attractive for the end-user.
  • Integration of different services : an operator can use services developed by third parties, combine them, integrate them with services they already have, and provide the user with a completely new service. For example: if voicemail and text-to-speech is combined, a voice version of incoming text messages can be provided for blind users.
    • Contrasting view: IMS requires that all services be integrated into, and delivered by the operator’s network. Therefore only those services that “pass muster” with the operator will be supplied to their customers. Operators must incur integration costs, and both the network operator and the third-party service offeror must reach a business agreement on the revenue model for offering the service. Third-party services that network operators don’t – for whatever arbitrary reason – want to offer will never be seen by consumers. This is a dramatic difference from the Internet, where anyone can offer any website service to anyone with an Internet connection.
      • Re-Contrasting view: Any operator controlled service needs to be integrated to guarantee stability, quality, security and ease-of-use. With IMS the integration is just easier (e.g. due to centralized User database) and reduces costs (OPEX and CAPEX – e.g. due to service independent Call Session Controller). With IMS the end-user can expect Internet like services – just without more or less complicated log-in procedures or security concerns. For sure, the Internet community will always be faster in developing potential new applications.




Install Guide

The following installation guide has been tested on two Ubuntu releases: Ubuntu 7.04 Feisty Fawn and Ubuntu 7.10 Gutsy Gibbon. Also I’m currently using Ubutnu 10.10, and I didn’t note any problem, so you may follow this guide for that version of Ubutnu. In addition, this guide in order to test the correct functionality of the system will propose the installation and configuration of a client SIP / IMS UctIMSClient (client developed by the University of Cape Town in South Africa: / ) that helps to determine if the SIP messages are processed correctly by the architecture. If you do not want to use this software you can use any SIP client / IMS stress including:

In these cases, at least in the first instance we do not propose a guide to installing it a configuration. However, for those who want to try, such software is easy to setup and configure them for the information can be easily obtained from the information used to configure UctIMSClient, which from a didactic point of view is the most complete.

For those wishing to implement a greater number of services and components, the University of Cape Town has created the code and its help to install them. In particular, services, products and related installation guides are:

My guide will be a fusion and integration with personal configurations that allowed the software to run properly with ease. In particular, the guides are used:

As you can see, most of the guides running on Ubuntu and in many cases on Ubuntu 7.10 Gutsy Gibbon.

OpenIMSCore: download the source code

To download the source code we need subversion package:

sudo apt-get install subversion

We create folders in which it will place the downloaded source code:

sudo mkdir / opt / OpenIMSCore /

We give you the rights with which we access usually to work on the required folder / opt / OpenIMSCore:

sudo chown-R username / opt / OpenIMSCore /

where instead of username insert the user name that we usually use.
We then create the folders in which you place the code: the code will be placed in a compiled that will produce the features of the CSCF and the other will place the compiled code that will produce the features of HSS.

cd / opt / OpenIMSCore
mkdir ser_ims
mkdir FHoSS

Now we download the code:

svn checkout ser_ims
svn checkout FHoSS

In this case, we consider that the internet connection is done in a straightforward manner. If we are behind a proxy must properly configure subversion.

OpenIMSCore: Install the necessary packages for compiling

We need a number of packages to compile. To install a terminal run the following command:

sudo apt-get install sun-java6-jdk mysql-server libmysqlclient15-dev libxml2 libxml2-dev bison flex front bind9

OpenIMSCore: configure the DHCP Server and DNS Server

Since we are requiring that the DNS server turns on our machine, then we must delete the # and activates the option prepend domain-name-servers; in the file / etc/dhcp3/dhclient.conf. Remember to open the following file with root privileges.

Copy the file to open ims.dnszone in the / etc / bind:

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

I remember that bind is a DNS server OpenSource.
Append to the file / etc / bind / named.conf.local the following lines:

areas “open-ims.test” {

type master;

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


Restart the DNS server with the following command:

sudo / restart etc/init.d/bind9

We need to ensure that the DNS server can be contacted from our PC, which is why we edit the file / etc / resolv.conf and add the following lines:

search open-ims.test

We verify that it works properly pinging ims.test

As a rule, we get an answer. If the ping does not work, restart the network interface (localhost) or attiviamola, in the case has not been activated:

sudo / etc / init.d / networking restart

and rieseguiamo ping with the command described above.
This is the most complex phase of the entire installation as in many cases the software does not work properly due to incorrect configuration of the server bind.

OpenIMSCore: Configure Database

IMS architecture as it happens, even in OpenIMSCore implements a MySQL database. For this reason we must set it by introducing the information is related to I-CSCF to HSS that.
Run the following commands:

cd / opt / OpenIMSCore
mysql-u root-p <ser_ims / cfg / icscf.sql
mysql-u root-p <FHoSS / scripts / hss_db.sql
mysql-u root-p <FHoSS / scripts / userdata.sql

There will be prompted for a password, which by default is set in MySql: why simply press Enter.

OpenIMSCore: Building from source

Initially compile the CSCF. To do this we run the following commands:

cd / opt / OpenIMSCore / ser_ims /
sudo make install-libs all

The duration of completion varies depending on the characteristics of the machine where you install the software. In general, the duration is between 5-10 minutes.
To fill the other hand HSS (FHoSS in OpenIMSCore) we need to set the environment variable JAVA using the command:

export JAVA_HOME = “/ usr/lib/jvm/java-1.6.0-sun”

Since this environment variable must be set each time you run the script for the execution of FHoSS, I advise you to change. Bashrcpresent in your home directory:

gedit ~ /. bashrc

Glue the end the following string:

export JAVA_HOME = “/ usr/lib/jvm/java-1.6.0-sun”

export CLASSPAT=.$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:/usr/lib/jvm/java-6-sun/lib

save and close the file. Launch:

source ~ /. bashrc

to apply the changes to environment variables.
Compile using the following commands FHoSS

cd / opt / OpenIMSCore / FHoSS
ant compile deploy

Finally ZhDataType.xsd modify the file in the directory / opt / OpenIMSCore / FHoSS / xsd /

gedit / opt / OpenIMSCore / FHoSS / xsd / ZhDataType.xsd

and replace the line

schemaLocation = “” />


schemaLocation = “file: / / / opt / OpenIMSCore / FHoSS / xsd / xml.xsd” />

OpenIMSCore: Execution of various scripts

To facilitate the implementation copy all files and configuration of all FHoSS CSCF and associated run script in the / opt / OpenIMSCore /:

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

Finally we run all the entities OpenIMSCore. I recommend you open a new tab (Ctrl + Male + T) to each entity and set the tab title.
For P-CSCF lanciarce

/ Opt / OpenIMSCore /

To run I-CSCF

/ Opt / OpenIMSCore /

To launch the S-CSCF

/ Opt / OpenIMSCore /

To launch FHoSS

/ Opt / OpenIMSCore /

If you can see an error writing something like :”

set_mod_param_regax: No module matching <pcscf> found  i ERROR CURL_ERROR_SIZE"
it means that you must install
and compile FhoSS from the begining.

OpenIMSCore: Test and install OpenIMSCore UctIMSClient

To test OpenIMSCore, UctIMSClient need to install (in my case). If you want to install or use any other software that supports SIP as explained in the introduction.

UctIMSClient: Installation guide will be posted in next post.

UctIMSClient: Configuration

We must initially launch UctIMSClient, opening a new tab and set the title of Bob:


As a rule, the default settings UctIMSClient conform to the information contained in the HSS and conform to the topology of the network.The figure below presents the user configuration that Bob is already configured in the database. The same configurations of the Public User Identity unless, Private User Identity and Password.

However in the case of Bob:

  • Public User Identity: sip: bob@open-ims.test
  • Private User Identity: bob@open-ims.test
  • Password: bob

Also open another tab with the title of Alice and launched another UctIMSClient:


In the case of Alice:

  • Public User Identity: sip: alice@open-ims.test
  • Private User Identity: alice@open-ims.test
  • Password: alice


UctIMSClient: sending the message register and deregister SIP call

To run the register, simply click on the Register as Alice in Alice’s case, the terminal, as well as in the figure below, in the case of Bob, click on the Register button as in the case of Bob Bob terminal.

Simply click on the Deregister deregister UctIMSClient to perform the desired user that owns the client UctIMSClient.
I also recommend using the Call key or Answer, ricordatoci to correctly address the SIP address to which the call. If you are using the terminal of Alice, the address where the call is to address sip: bob@open-ims.test, as well as in the figure below.

OpenIMSCore: add new users and manage HSS (optional)

To add a new user and to manage the HSS, we facilitated the GUI is called through a web browser.
To do this, open Firefox and type in:


You will be prompted for username and password and enter the following information:

Username: hssAdmin
Password: hss

I remember it is case-sensitive.

OpenIMSCore: Customize the IMS network

You can change the realm (in the case of default was open-ims.test) and the IP address of the whole network (in case of default was
The developers have made ​​a bash script called that lets you edit the configuration files useful for customizing the IMS network on a single machine, that is, all the scripts of various IMS entities must be launched from the same machine.

It ‘important to remember that this script can be used only once from a successful installation: in practice, if installed correctly OpenIMSCore, you can use, but if you edit configuration files manually or use after OpenIMSCore installing, you can not reuse the script and you are forced or edit to make that effect to the new changes or you need to manually edit the configuration file (this complex for the average user)

The script is, if you followed this guide, in / opt / openIMSCore. To customize the IMS network, run:

. / pcscf.cfg icscf.cfg icscf.xml scscf.cfg scscf.xml ser_ims / cfg / icscf.sql FHoSS / deploy / DiameterPeerHSS.xml FHoSS / deploy / FHoSS / scripts / hss_db.sql FHoSS / scripts / userdata.sql

You will be asked, as mentioned previously, the realm and the IP address.
Once done, you must update the database using the shell the following commands:

cd / opt / OpenIMSCore
mysql-u root-p <ser_ims / cfg / icscf.sql
mysql-u root-p <FHoSS / scripts / hss_db.sql
mysql-u root-p <FHoSS / scripts / userdata.sql

If you changed the IP or the realm, you must review the information of users and network settings present in the HSS.
Finally, you must restart the various entities. In particular, you have to block 3 CSCF using Ctrl + C while you block FHoSS typing exit. Re-enabled services using respectively the commands in the 4 tabs:
For P-CSCF lanciarce

/ Opt / OpenIMSCore /

To run I-CSCF

/ Opt / OpenIMSCore /

To launch the S-CSCF

/ Opt / OpenIMSCore /

To launch FHoSS

/ Opt / OpenIMSCore /

References and Support

We list the references that I made up.

As for support, pointing you to the possible ways to get help:

Please test it and let me know if there are errors in the guide or if you make mistakes in installing or configuring OpenIMSCore. When it becomes stable, I think I will return in the ubuntu documentation.

Until next time,

cheers from cold Sarajevo 🙂