Jump to content

IP Telephony/Spring 2013/OpenIMSProject

From Wikiversity

The People:

[edit | edit source]

Members:

  • Amruta Dhotre
  • Amol Deodhar
  • Isha Arora
  • Parshva Mehta
  • Sai Nagarjun Ankala

Mentor:

  • Sundar Ramakrishnan

The Drive

[edit | edit source]

There are both business and technical drivers associated with IMS deployment, that will bring benefits in service creation capabilities as well as in cost optimization

  • BUSINESS DRIVERS

IMS offers richer user experience with sophisticated business models

  • TECHNICAL DRIVERS

IMS is able to deliver services faster, at lower cost and independently of devices, access and media types

Advanatages over the traditional non-IMS setup:

  • Access agnostic
  • Services independent
  • Open architecture
  • Multi-device
  • Vendor independent

The Architecture

[edit | edit source]

The openIMS core consists of two fundamental components:

Call Session Control Function

There are three different types of CSCF that exist viz. Proxy-CSCF, Serving-CSCF and the Interrogating-CSCF, commonly known as P-CSCF, S-CSCF and I-CSCF, respectively.

  • P-CSCF

This is the entry point into the IMS network. It serves as a edge server essentially and is located in the visited network or the home network if the visited network does not support IMS. P-CSCF is The Boss in this openIMS architecture. It is the decision maker and sits on the path of all signalling, can inspect every signal, provides authentication for the subscribers, etc.

  • forwards the registration requests received from the UE to the I-CSCF
  • forwards the SIP messages to the S-CSCF that administrate the user, whose address is defined during the registation
  • forwards the request and the answers to the UE
  • S-CSCF

It is a SIP server always located in the home network. The S-CSCF uses DIAMETER Cx and Dx interfaces to the HSS to download and upload user profiles - it has no local storage of the user. All necessary information is loaded from the HSS.

  • it handles SIP registrations, which allows it to bind the user location (e.g. the IP address of the terminal) and the SIP address
  • it decides to which application server(s) the SIP message will be forwarded, in order to provide their services
  • it provides routing services, typically using ENUM lookups
  • there can be multiple S-CSCFs in the network for load distribution and high availability reasons. It's the HSS that assigns the S-CSCF to a user, when it's queried by the I-CSCF
  • I-CSCF
  • its IP address is published in the DNS of the domain (using NAPTR and SRV type of DNS records), so that remote servers can find it, and use it as a forwarding point (e.g. registering) for SIP packets to this domain
  • I-CSCF queries the HSS using the DIAMETER Cx interface to retrieve the user location and then routes the SIP request to its assigned S-CSCF
  • Also functions as a Topology Hiding Inter-network Gateway


Home Subscriber Server

HSS is the master user database that supports the IMS network entities that handle the call sessions

  • it contains the subscription-related information (user profiles), used by the control layer
  • it contains subcription information used by the service layer
  • it provides data used to perform authentication and authorization of the user
  • it can provide information about the physical location of user


The IMS Setup

[edit | edit source]

Step 1 : Pre-Requisites!

  • Hardware Requirements:
Atleast 2GB of RAM with Ubuntu 11.10 installed on it
  • Network Access:
For setting DHCP IP:
sudo vi/etc/network/interfaces
auto lo
iface eth0 inet loopback
auto dhcp
iface eth0 inet dhcp
Also edit /etc/dhcp/dhclient.conf and uncomment the line:
domain-name-servers 127.0.0.1;
sudo/etc/init.d/networking restart
  • Software Requirements:
gcc3/4, make, subversion, bison, flex, libxml2, libmysql, curl.
  • DNS Setup:
copy file:
from /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone
to /etc/bind/ open-ims.dnszone
Go to /etc/bind/named.conf.default-zones and type the code below into that file:
zone "open-ims.test"
IN {
type master;
file "/etc/bind/open-ims.dnszone";
notify no;
};
Go to named.conf.options
Forwarders
{
127.0.0.1;
}
Go to /etc/resolv.conf:
Name server: 127.0.0.1
Domain: open-ims.test
Search: open-ims.test


/etc/hosts : (Note : If qmail error comes up , then edit the hosts file and point the address of your dns server to www.yourdnsdomainname.com Ubuntu)
127.0.0.1 localhost
127.0.0.1 open-ims.test
open-ims.dnszone:
$ORIGIN open-ims.test.
$TTL IN
.
.
Pcscf 1D IN A 127.0.0.1
.
.
Icscf 1D IN A 127.0.0.1
Restart the bind server: sudo /etc/init.d/bind9 restart
To test DNS SERVER (TO RESOLVE HOST NAMES):
dig @127.0.0.1pcscf.open-ims.test


  • mySQL Setup:
If you get error in this step then you don’t have mysql server properly installed.
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
Check if the databases are in there and accessible mysql -u root –p
For viewing database : show databases
To swith database, or to use the table within the particular the database : use (whatever table)
Shows tables : show tables
Check the table hss_db : Select * from hss_db. You should be able to see information regarding Alice and Bob which are the two default subscribers provided by FoKuSS but these are currenly unregistered.


Step 2 : Getting the Source Code!
The source code is pre-configured to work from a standard file path:

Create /opt/OpenIMSCore and go there : mkdir /opt/OpenIMSCore
cd /opt/OpenIMSCore
Create a new directory ser_ims and checkout the CSCFs there: mkdir ser_ims
cd /opt/OpenIMSCore
svn checkout http://svn.berlios.de/svnroot/repos/openimscore/ser_ims/trunk ser_ims
Create a new directory FHoSS and checkout the HSS there: mkdir FHoSS
cd /opt/OpenIMSCore
svn checkout http://svn.berlios.de/svnroot/repos/openimscore/FHoSS/trunk FHoSS


Step 3 : Compile!

ser_ims compile
go to cd ser_ims
make install-libs all
(Note : If something breaks, you probably don't have all the prerequisites.)
FHoSS compile
If you don't have a JDK >=1.5, get one before proceeding
Make sure, that the JDK version that you are using is >= 1.5!!!
Do "ant compile deploy" in FHoSS
cd FHoSS
ant compile
ant deploy

Step 4: Start the Components!

Start pcscf.sh, icscf.sh and scscf.sh
cd /opt/OpenIMSCore and then start
Sudo ./pcscf.sh
Sudo ./icscf.sh
Sudo ./scscf.sh
cd /opt/OpenIMSCore/FHoSS/deploy
sh startup.sh ( If something breaks you probably don’t have the correct java path. For this edit startup.sh point it to your java path )
Note: Run everything in separate terminals.
At this point , the FHoSS web console should start and login as admin user:
Username : hssAdmin
Password : hss
Search in USER IDENTITIES, there should be 2 default users Alice and Bob . They will get registered after registering them using an appropriate client.

Step 5: Cient Configuration!

– We used sipP version 3.3 ( Reason: Awesome VOIP software which shows actual message transfer )
sudo apt-get install ncurses-dev
sudo apt-get install build-essential
Grab sipp 3.3 from sourceforge.net
Sudo wget –m –nd http://sourceforge.net/projects/sipp/files/latest/download?source=files
extract it locally
tar -xzf sipp.3.3.tar.gz
cd sipp.3.3
Open ./sipp.3.3/scenario.hpp and add this line
#include <limits.h>
after
#include <sys/socket.h>
save the file, and in the terminal and do make pcapplay ( This is for passing RTP packets)

The Call Flows

[edit | edit source]

Here we have two scenarios:

The first one shows the case when the users are contacting the IMS Core for the first time. This time the users need to first register themselves!
Second scenarios is where the users were already registered and the call goes through from the UAC to the UAS!