You are on page 1of 56

ITS LAB Introduction

2008 Mobile All-IP Networking Laboratory National Chung Cheng University


Dept. Computer Science & Information Engineering
National Chung Cheng University
Dept. Computer Science & Information Engineering

Outline
Goal
Scenario
LAB 1
Install Open IMS Core
LAB 2
Install OSGi Service Platform
LAB 3
Implementation
2
National Chung Cheng University
Dept. Computer Science & Information Engineering

Goal
Construct a environment with Open IMS
Core and OSGi Service Platform, and
simulate a client access service through
OSGi gateway to IMS network.
Implement an Application Server(AS) in
a IMS network.
Also, a UPnP device software needs to
be developed.

3
National Chung Cheng University
Dept. Computer Science & Information Engineering

Scenario
Implement elements:
Application Server(AS)
UPnP device

IMS
UPnP network
devices

OSGi
gateway

4 Internet
National Chung Cheng University
Dept. Computer Science & Information Engineering

LAB 1
Install Open IMS core
What is Open IMS Core?
Requirements
How to install
Test your Open IMS Core

5
National Chung Cheng University
Dept. Computer Science & Information Engineering

What is Open IMS core?


The Open IMS Core is an implementation of
IMS Call Session Control Functions (CSCFs)
and a lightweight Home Subscriber Server
(HSS).

6
National Chung Cheng University
Dept. Computer Science & Information Engineering

What is Open IMS core?(cont.)


P-CSCF
I-CSCF
S-CSCF
HSS
Client
AS

7
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements
Hardware
A current Linux desktop class machine
should be enough
If you want to get ultimate performance:
Add several Gigabytes of RAM
Have as many CPUs/Cores as
Gigabit Ethernet would help

8
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements(cont.)
Network access
Inter-domain NAT is not something we are
interested in, so a public IP address would
be great
Controllable DNS server if you don't want
to have one on your Linux box

9
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements(cont.)
Software
~100 MBytes of disk space to be on the
safe side
GCC3/4, make, JDK1.5, ant
MySQL installed and started (or other
DBMS if you can deal with it)
bison, flex
libxml2 (> 2.6), libmysql - both with
development
10
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements(cont.)
Software
Linux kernel 2.6 and ipsec-tools (setkey) if
you want to use IPSec security
Optional: openssl if you would like to
enable the TLS security
bind installed and running (or other name
server if you can deal with it)
Browser on the box or that can connect to
the box (for user provisioning)

11
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements(cont.)
Install Tips: Ubuntu Linux as example
First, install these software first in the
terminal, type sudo apt-get install
subversion libmysqlclient15-dev
ant libxml2
sun-java6-jdk libxml2-dev
bison bind9
flex
mysql-server

12
National Chung Cheng University
Dept. Computer Science & Information Engineering

Requirements(cont.)
Install Tips: Set up JAVA HOME
environment.
After install Java(JRE & JDK), modify the file:
profile
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.X.X-sun
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

13
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install
Step 1: Get the Source Code
Start the Linux terminal
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
svn checkout
http://svn.berlios.de/svnroot/repos/openimsco
re/ser_ims/trunk ser_ims
14
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Create a new directory FHoSS and checkout
the HSS there
mkdir FHoSS
svn checkout
http://svn.berlios.de/svnroot/repos/openimsco
re/FHoSS/trunk FHoSS

15
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 2: Compile
ser_ims
Do "make install-libs all" in ser_ims
cd ser_ims
make install-libs all
cd ..
If something breaks, you probably don't
have all the prerequisites.

16
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
FHoSS
If you don't have a JDK >=1.5, get one
before proceeding
# java -version

Do "ant compile deploy" in FHoSS


cd FHoSS
ant compile
ant deploy
cd ..

17
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 3: Configure the Environment
Notes
All the installation examples configured to work
only on the local loopback and the default
domain configured as "open-ims.test".
Replace 127.0.0.1 where required with your IP
address.

18
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
DNS
A sample DNS zone file can be found in
ser_ims/cfg/open-ims.dnszone
Copy it to your bind configuration
directory(/etc/bind9)
Edit named.conf and insert the file there .

19
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Restart the name server
Test that the names are resolvable (don't forget
about /etc/resolv.conf pointing to your new
DNS server!)
Example: ping open-ims.test

20
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
MySQL
Type the MySQL comands:
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

21
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 4: Configure the IMS Core
By now you should have MySQL and DNS
working
Copy the following files to
/opt/OpenIMSCore:
pcscf.cfg, pcscf.sh, icscf.cfg, icscf.xml,
icscf.sh, scscf.cfg, scscf.xml, scscf.sh
Take a look at the configuration files in
FHoSS/deploy/

22
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 5: Start the components
CSCFs
Start pcscf.sh, icscf.sh and scscf.sh
FHoSS
Start FHoSS/deploy/startup.sh
Check the web interface on
http://localhost:8080/
Username: hssAdmin
password: hss

23
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 6: Configure Subscribers
By default, FHoSS comes provisioned with a
couple of sample users:
alice@open-ims.test
bob@open-ims.test

24
National Chung Cheng University
Dept. Computer Science & Information Engineering

How to install(cont.)
Step 7: Test!
Use Wireshark to see what's going on:
Monitor ports 4060, 5060 and 6060 for SIP
traffic
Monitor ports 3868, 3869 and 3870 for
Diameter traffic
For detail guide, please refer to:
http://www.openimscore.org/installation_g
uide

25
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core


Ubuntu Linux as example:
Strat linux terminal
Change the directory to /opt/OpenIMSCore/
Type ./pcscf.sh to run P-CSCF.

26
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


You can see the P-CSCF start running.

27
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Open another two Linux terminal.
Type ./icscf.sh in one terminal and ./scscf.sh in
another terminal to run I-CSCF and S-CSCF.
After above, you can see both are running.

28
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Again, open one Linux terminal.
Type ./fhoss.sh to run HSS(FHoSS).

29
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


You can see the HSS is running.

30
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Check the web interface on http://localhost:8080/

31
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


FOKUS OpenIC
Client for IMS network.
You can test your Open
IMS Core by setting up
the clients to make a
test call.

32
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Run OpenIC
Type ./OpenIC_Lite.sh in
terminal where your OpenIC
directory is.
First time you run it, you will
see the Configuration Wizard.
Take bob as example:
Display name: Bob
Public Identity: bob@open-ims.test
Private Identity: bob@open-ims.test
Secret Key: bob
Proxy Server: 127.0.0.1:4060
Realm: open-ims.test 33
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Start two clients at the same time, set one as Alice,
another one as Bob.
Login them to the Open IMS core.

34
National Chung Cheng University
Dept. Computer Science & Information Engineering

Test your Open IMS core(cont.)


Make a call from Alice to Bob.
Call connected?
If successful, two clients will be connected.

35
National Chung Cheng University
Dept. Computer Science & Information Engineering

LAB 2
Install OSGi Service Platform
Reference the OSGi ppt.

36
National Chung Cheng University
Dept. Computer Science & Information Engineering

LAB 3
Implementation
Application Server
JAIN SIP
UPnP device

37
National Chung Cheng University
Dept. Computer Science & Information Engineering

Introduction to JAIN SIP


The Java-standard interface to a SIP
signaling stack.
Standardizes the interface to the stack.
Standardizes message interface.
Standardizes events and event semantics.
Application portability - verified via the
TCK.

38
National Chung Cheng University
Dept. Computer Science & Information Engineering

Introduction to JAIN SIP(cont.)


Designed for developers who require
powerful access to the SIP protocol.
JAIN SIP can be utilized in a user agent,
proxy, registrar or imbedded into a
service container.

39
National Chung Cheng University
Dept. Computer Science & Information Engineering

JAIN SIP Functionality


JAIN SIP supports the SIP protocol
functionality described in RFC 3261.
JAIN SIP the following SIP extensions;
RFC 2976 allows for the carrying of session
related control information that is
generated during a session.
RFC 3262 provide information on progress
of the request processing.
RFC 3265 the ability to request
asynchronous notification of events.
40
National Chung Cheng University
Dept. Computer Science & Information Engineering

JAIN SIP Functionality(cont.)


RFC 3311 allows the caller or callee to
provide updated session information
before a final response.
RFC 3326 the ability to know why a SIP
request was issued.
RFC 3428 allows the transfer of Instant
Messages.
RFC 3515 requests that the recipient refer
to a resource provided in the request.

41
National Chung Cheng University
Dept. Computer Science & Information Engineering

JAIN SIP Object Architecture

42
National Chung Cheng University
Dept. Computer Science & Information Engineering

JAIN SIP Messaging Architecture

43
National Chung Cheng University
Dept. Computer Science & Information Engineering

SipStack Interface
Manages Listening Points and Providers.
SipStack associated with an IP address.
Can have multiple Listening points.
Application can have multiple SipStacks.
Cannot be deleted once created.
Instantiated by the SipFactory and initialized with a
property set.
"javax.sip.* properties are reserved and names
defined for stack configuration properties.
Defines retransmission settings.
Defines router information.
44
National Chung Cheng University
Dept. Computer Science & Information Engineering

SipProvider Interface
Register a SipListener to the SipProvider.
Notifies registered Listener of Events
De-register a SipListener from the SipProvider.
Once de-registered, no longer receive Events from
SipProvider.
Client and Server Transaction creation methods.
For sending Request and Response messages statefully.
CallIdHeader creation method.
Send Requests and Responses statelessly.
Listening Point manipulation methods.
Only one provider per listening point.

45
National Chung Cheng University
Dept. Computer Science & Information Engineering

SipListener Interface
A single SipListener per SipStack which
implies a single Listener in the architecture
All SipProviders associated to a Sipstack have the
same SipListener.
Process Request's either statefully or
statelessly dependent on application logic.
Process Response's to a recently sent
Requests statefully.
Process Transaction timeouts and retransmits
Timer events.
Transaction processing46notifications
National Chung Cheng University
Dept. Computer Science & Information Engineering

Generic SIP Application Structure

47
National Chung Cheng University
Dept. Computer Science & Information Engineering

Code Overview
Import the SIP libraries.
The file name is the same with the main
class.

48
National Chung Cheng University
Dept. Computer Science & Information Engineering

SIP Stack Preparation


Init() initiate SipStack and Factories

Initiate it in main section.

49
National Chung Cheng University
Dept. Computer Science & Information Engineering

Receiving a SIP Request


processRequest() - SIP stack will call it
automatically when receiving a request.

50
National Chung Cheng University
Dept. Computer Science & Information Engineering

Receiving a SIP Response(cont.)


processResponse() - which is called by
the SIP stack when a SIP response
message arrives

51
National Chung Cheng University
Dept. Computer Science & Information Engineering

Sending a SIP Request


Procedure can roughly be split into four subsections:
1. Create main elements
2. Create message
3. Complete message
4. Send message
The following main SIP elements are minimally needed to
construct a message:
Request URI
Method
Call-ID header
CSeq header
From header
An array of Via headers
Max-forwards header
52
National Chung Cheng University
Dept. Computer Science & Information Engineering

Sending a SIP Request


processINVITE()
processACK()
processBYE()
processCANCEL()
processOPTION()
processREGISTER()

53
National Chung Cheng University
Dept. Computer Science & Information Engineering

Dealing With Error Conditions


processTimeout()
is called when the end point receiving the
message doesn't answer in time in time.
processIOException()
is called when an I/O Exception happens

54
National Chung Cheng University
Dept. Computer Science & Information Engineering

References
FOKUS Open IMS Core - http://www.openimscore.org/
OpenIC - http://www.open-ims.org/openic/
JAIN SIP - https://jain-sip.dev.java.net/

55
National Chung Cheng University
Dept. Computer Science & Information Engineering

Q&A
Any Questions?

56

You might also like