JBoss.orgCommunity Documentation
Mobicents SS7 stack at its core requires only Java 1.5(Java SE) if you are using only M3UALinkset
.
However if you plan to use DahdiLinkset
or DialogicLinkset
, respective SS7 cards
needs to be installed on the server along with native libraries.
A simple way to get started is to download and install binary. This will provide you with all the dependencies you need to get going. You can obtain binary release from http://sourceforge.net/projects/mobicents/files
The Mobicents SS7 Stack binary is broken down into a few modules.
The following is a description of the important services and libraries that make up Mobicents SS7 Stack
asn
: Abstract Syntax Notation One (ASN.1) library is used by various Mobicents SS7 Stack
protocols to encode/decode the structured data exchanged between Signaling Point over networks. To know more about asn library refer to
document included with asn. Applications using any of the Mobicents SS7 Stack User Protocols may never need to call asn API directly,
however it must be in classpath as Mobicents SS7 Stack User Protocols refers this library.
ss7
: ss7 contains the service that is deployed in JBoss AS and libraries that end applications refers to.
ss7 is further divided into sub-modules
docs
: User guide for Mobicents SS7 Stack
mobicents-ss7-service
: SS7 service is the core engine as explained in section
Section 2.3, “SS7 Service”
native
: native libraries component to interact with SS7 Card installed on server, runtime component.
As of now native libraries are compiled only for linux OS. However if you plan to use M3UALinkset
there is
no dependency on OS as everything is 100% java.
protocols
: The Mobicents SS7 Stack User Protocols libraries. Your application would directly
call the API's exposed by these libraries. Depending on application you may be either interested in TCAP
,
MAP
or both or ISUP
libraries
shell
: the Command Line Interface (CLI) module to manage the Mobicents SS7 Stack.
Refer ??? to understand how to use shell
Binary release has following layout:
The Mobicents SS7 Stack binary requires that you have JBoss Application Server installed and JBOSS_HOME system property set. To know further details on setting JBOSS_HOME look Appendix B, Setting the JBOSS_HOME Environment Variable
Once JBOSS_HOME is properly set, use ant to deploy the mobicents-ss7-service, shell scripts and shell library.
Ant 1.6 (or higher) is used to install the binary. Instructions for using Ant, including install, can be found at http://ant.apache.org/
[usr]$ cd ss7-1.0.0.BETA6/ss7 [usr]$ ant deploy
To undeploy these services
[usr]$ cd ss7-1.0.0.BETA6/ss7 [usr]$ ant undeploy
While above steps will deploy the necessary ss7 service and shell components, the java.library.path
should be set to point the directory containing native component or should be copied to JBoss native library path manually.
This step is only required if you are using the SS7 board on server.
Starting or stopping Mobicents SS7 Stack is no different than starting or stopping JBoss Application Server
Once installed, you can run server by executing the run.sh (Unix) or run.bat (Microsoft Windows)
startup scripts in the <install_directory>/bin
directory (on Unix or Windows).
If the service started properly you should see following lines in the Unix terminal or Command Prompt depending on your environment:
23:22:26,079 INFO [LinksetManager] SS7 configuration file path /home/abhayani/workarea/mobicents/jboss-5.1.0.GA/server/default/data/linksetmanager.xml 23:22:26,141 INFO [LinksetManager] Started LinksetManager 23:22:26,199 INFO [SS7Service] Starting SCCP stack... 23:22:26,229 INFO [SccpStackImpl] Starting ... 23:22:26,230 INFO [RouterImpl] SCCP Router configuration file: /home/abhayani/workarea/mobicents/jboss-5.1.0.GA/server/default/deploy/mobicents-ss7-service/sccp-routing.txt 23:22:26,261 INFO [SS7Service] SCCP stack Started. SccpProvider bound to java:/mobicents/ss7/sccp 23:22:26,261 INFO [ShellExecutor] Starting SS7 management shell environment 23:22:26,270 INFO [ShellExecutor] ShellExecutor listening at /127.0.0.1:3435 23:22:26,270 INFO [SS7Service] [[[[[[[[[ Mobicents SS7 service started ]]]]]]]]]
If you have started ss7-1.0.0.BETA6 for the first time, there are no Linkset
defined.
You need to use Shell Client to connect to ss7-1.0.0.BETA6 as defined in
??? and create Linkset
as per your need and SS7 card installed
Once the Linkset
are defined, the state and configuration of Linkset
and Link
is persisted by LinksetManager
which stands server re-start.
You can shut down the server(s) you can run server(s) by executing the shutdown.sh -s
(Unix) or
shutdown.bat -s
(Microsoft Windows) scripts in the <install_directory>/bin
directory (on Unix or Windows). Note that if you properly stop the server, you will see the following three lines as the
last output in the Unix terminal or Command Prompt:
[Server] Shutdown complete Shutdown complete Halting VM
Configuration is done through an XML descriptor named jboss-beans.xml
and is
located at $JBOSS_HOME/server/profile_name/deploy/mobicents-ss7-service/META-INF
, where
profile_name is the server profile name.
Concrete implementation of LinksetFactory
is responsible to create
new instances of corresponding Linkset
when instructed by LinksetManager
.
Mobicents SS7 Stack defined three linkset factories :
DahdiLinksetFactory
<bean name="DahdiLinksetFactory"
class="org.mobicents.ss7.hardware.dahdi.oam.DahdiLinksetFactory">
</bean>
DialogicLinksetFactory
<bean name="DialogicLinksetFactory"
class="org.mobicents.ss7.hardware.dialogic.oam.DialogicLinksetFactory">
</bean>
M3UALinksetFactory
<bean name="M3UALinksetFactory"
class="org.mobicents.ss7.m3ua.oam.M3UALinksetFactory">
</bean>
Its highly unlikely that you would require all three factories on same server. If you have dahdi
based
SS7 card installed, keep DahdiLinksetFactory
and remove other two. If you have dialogic
based
SS7 card installed, keep DialogicLinksetFactory
and remove other two. If you don't have any hardware installed and depend on
M3UA, keep M3UALinksetFactory
and remove other two. Nevertheless you can still use above factories in any combinations.
LinksetFactoryFactory
is just a call-back class listening for new factories deployed
and maintains Map of available factory name vs factory. You should never touch this bean.
LinksetManager
is responsible for managing Linkset
and Link
.
<bean name="LinksetManager" class="org.mobicents.ss7.linkset.oam.LinksetManager">
<property name="linksetFactoryFactory">
<inject bean="LinksetFactoryFactory" />
</property>
<property name="persistDir">${jboss.server.data.dir}</property>
</bean>
LinksetManager when started looks for file linksetmanager.xml
containing serialized information of
underlying linksets and links. The directory path is configurable by changing value of persistDir
property.
linksetmanager.xml
should never be edited by hand. Always use Shell Client to connect to
Mobicents SS7 Stack and execute commands.
ShellExecutor
is responsible for listening to incoming command. Received commands are executed on local resources to perform actions like creation of SCCP
routing rule.
<bean name="ShellExecutor" class="org.mobicents.ss7.ShellExecutor">
<property name="address">${jboss.bind.address}</property>
<property name="port">3435</property>
</bean>
By default ShellExecutor listens at jboss.bind.address
and port 3435
.
You may set the address
property to any valid IP address that your host is assigned.
The shell commands are exchanged over TCP/IP.
To understand JBoss bind options look at Installation_And_Getting_Started_Guide
SS7Service
acts as core engine binding all the components together.
To get holistic view of SS7 Service look at Section 2.3, “SS7 Service”
<bean name="SS7Service" class="org.mobicents.ss7.SS7Service">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="org.mobicents.ss7:service=SS7Service",exposedInterface=org.mobicents.ss7.SS7ServiceMBean.class,registerDirectly=true)</annotation>
<property name="jndiName">java:/mobicents/ss7/sccp</property>
<property name="configPath">${catalina.home}/deploy/mobicents-ss7-service/sccp-routing.txt</property>
<property name="linksetManager"><inject bean="LinksetManager" /></property>
<property name="shellExecutor"><inject bean="ShellExecutor" /></property>
</bean>
SS7 service creates new instance of SCCP stack and binds it to JNDI address java:/mobicents/ss7/sccp
.
The JNDI name can be configured to any valid JNDI name specific to your application.
configPath
is configuration path for SCCP Stack.
To know more about SCCP configuration refer Chapter 6, SCCP
linksetManager
property holds the reference to LinksetManager
bean
shellExecutor
property holds the reference to ShellExecutor
bean.
SS7Service
creates link between ShellExecutor
and
LinksetManager
such that all commands for linkset are directed to LinksetManager
.
Mobicents SS7 Stack is an open source project, instructions for building from source are part of the manual! Building from source means you can stay on top with the latest features. Whilst aspects of Mobicents SS7 Stack are quite complicated, you may find ways to become contributors.
Mobicents SS7 Stack works with JDK1.5 and above. you will need also need to have the following tools installed. Minimum requirement version numbers provided.
Subversion Client 1.4
: Instructions for using SVN, including install, can be found at http://subversion.tigris.org
Maven 2.0.9
: Instructions for using Maven, including install, can be found at http://maven.apache.org/
Ant 1.7.0
: Instructions for using Ant, including install, can be found at http://ant.apache.org
Downloading the source code
Use SVN to checkout a specific release source, the base URL is http://mobicents.googlecode.com/svn/tags/protocols/ss7, then add the specific release version, lets consider 1.0.0.BETA6.
[usr]$ svn co http://mobicents.googlecode.com/svn/tags/protocols/ss7/ss7-1.0.0.BETA6
Building the source code
Now that we have the source the next step is to build and install the source. Mobicents SS7 Stack uses Maven 2 to build the system. There are two profiles available "dahdilinux" and "dialogiclinux" appart from default profile that doesn't try to compile the native modules.
Native modules are supported only for linux OS for now.
Use "dahdilinux" profile if linux server on which this code is built already has dahdi module installed. Make sure you pass "include.zap" system property pointing to correct directory where dahdi is installed
[usr]$ cd ss7-1.0.0.BETA6 [usr]$ mvn install -Pdahdilinux -Dinclude.zap=/usr/include/dahdi
Use "dialogiclinux" profile if linux server on which this code is built already has dialogic module installed. Make sure you pass "include.dialogic" system property pointing to correct directory where dialogic libraries are installed
[usr]$ cd ss7-1.0.0.BETA6 [usr]$ mvn install -Pdialogclinux -Dinclude.dialogic=/usr/include/dialogic
To build Mobicents SS7 Stack without building any native libraries use
[usr]$ cd ss7-1.0.0.BETA6 [usr]$ mvn install
If you are using Mobicents SS7 Stack without any native dependencies, Mobicents SS7 Stack can run on any OS.
Use Ant to build the binary .
[usr]$ cd ss7-1.0.0.BETA6/release [usr]$ ant
Similar process as for Section 3.3.1, “Release Source Code Building”, the only change is the SVN source code URL, which is http://mobicents.googlecode.com/svn/trunk/protocols/ss7.