Sems PDF
Sems PDF
FRAFOS GmbH
Introduction
The SIP Express Media Server (SEMS) is a VoIP media and application platform for SIP based
VoIP services. SEMS offers a wide selection of media services commonly found in VoIP
networks such as announcement services, conferencing, Interactive Voice Response (IVR)
services, voice-mail, click-to-dial and other voice messaging and recording services.
SEMS was designed as a general platform for implementing SIP-based media services and
applications. To cover the basic needs of service providers and enterprises SEMS already
incorporates a number of applications such as conferencing and IVR. To enable the
development of new services and the customization of available services to the exact
needs of our customers, SEMS incorporates flexible and open APIs.
As depicted in Figure 1 the SEMS architecture can be roughly divided into three parts;
namely core components, application programming interfaces and applications.
Audio Processing
• The audio processing components handle the coding and decoding of audio
signals.
• Currently SEMS is capable of working with G711u/a, G726, GSM, iLBC, L16,G722,
Speex; on request: G729a, G729a/b, AMR.
• SEMS is capable of transcoding audio data from one format to the other.
• The audio processing modules include different algorithms for jitter handling, loss
compensation, audio mixing and playout delay reduction
SIP Processing
• Compliant to RFC 3261
High Availability
• Active standby or cluster configuration
To have access to these modules and develop new application logic SEMS offers
developers two types of APIs. The SEMS API is a low level API that provides the developers
with a high level of flexibility but requires a solid understanding of SEMS and a good
command of the C++ programming language. The Domain Specific Modeling (DSM)
language provides an abstraction level of the details of the SEMS API and enables
developers to implement new application logic based on already available components in
a shorter time.
• the consequent internal separation into signaling and media processing realms and
the event based structure simplifies application development by keeping the
application away from dealing with hard concurrency problems
• all application processing is essentially sequentialized, thus minimizing the need for
locking
• most signaling/application threads are sleeping most of the time, and modern
schedulers are able to cope with scheduling this type of load very effectively and
• multi-processor and multi-core systems can be utilized.
By using inheritance and polymorphism provided with the C++ language, applications can
be written on different levels of abstraction from the underlying signaling and media
infrastructure. This is achieved by default implementations of the event handlers, which
can be selectively overwritten. For example, an application that only needs to execute
application logic when a call starts (i.e. the media session starts) and ends can implement
only the onSessionStart and the onBye event handlers and use the other event handlers of
the default implementation. An application which needs to tie into the very details of the
signaling can implement all signaling message event handlers, or for example the
onSipRequest and onSipReply event handlers.
Every call in SEMS has an media input (source) and an output (sink), to which media
processing elements can be attached via the API. Implemented in the SEMS core are basic
media processing elements (audio file I/O, ring tone generation, conference connector,
echo), and elements which can contain or mix basic audio elements (audio playlist, mixer,
delay line) and audio filters. Audio elements can also be implemented by the application
module. The execution context for all media processing is the media processing thread,
and it is synchronous. Control of the media processing is done by locking the audio
elements of a call and synchronous actions to change the audio chain; feedback to the
application logic is implemented through event passing.
There are other useful building blocks for applications in the core (thread handling,
garbage collector, SIP header parser) and also in component modules, which can extend
the system's functionality through an internal, dynamically typed interfacing system. These
components implement functionality as an in-memory database mainly used for
monitoring, SIP registration client, RPC methods (XMLRPC and json-rpc), SIP UAC
authentication, SIP session timers.
In contrast to simpler state transition diagram types like Moore state diagrams, their
expressiveness and thus applicability to real world problems is increased by several
measures.
First, short running processes, so called actions, can be bound to transitions and entry or
exit of a state, which introduces flexibility in the way processing can be defined.
Second, through the introduction of hierarchical states, a system can be examined and
modified at varying detail and abstraction levels, and common transitions can be bound
together.
Third, concurrency can be handled by AND decomposition (or orthogonal states), which
greatly reduces the complexity of implementation, as it prevents the so called state
explosion which can with simpler state transition diagrams especially occur when handling
concurrent interactions with other systems or distinct protocols in the same entity.
• Granularity: As with the native C++ event handler API, it is possible to write
applications using the media server on different abstraction levels. It is possible to
write applications on higher abstraction levels with simplicity, while applications
with fine control of the signaling can use lower level API functionality.
• Extensibility: The DSM language has a small core , is modular and easily extensible.
SEMS Applications
As part of the SEMS platform a number of ready applications are already implemented.
These applications are implemented using the SEMS APIs and can be extended and
customized by users of SEMS.
Multi-Party Conferencing
SEMS provides a scalable and efficient multi-party conferencing solution supporting
bridging users that might be using different audio codes. Some of the features supported
by the SEMS conferencing solution:
The conferencing solution can be used for dial-in and dial-out scenarios as well as be
integrated into other applications using its REST and XMLRPC interfaces.
Announcement Server
SEMS can be configured as an announcement server that plays a certain message at the
occurrence of a certain event. The logic for deciding which file to play at which event can
be configured using DSM.
Developers of commercial applications can acquire a license from FRAFOS which would
allow them to include SEMS in their non-open source products.
The target system for SEMS is POSIX environment, for example servers running Debian
GNU/Linux(TM), SUN Solaris (TM) or Mac OS X. SEMS builds on top of POSIX threads
(pthreads), GNU libc (glibc), Standard Template Library (STL) and BSD sockets. Optionally,
specific functionality can be added by using functionality from the libraries spandsp, lame,
libspeex, flite, OpenSSL, libev.
About FRAFOS
FRAFOS GmbH is a manufacturer of VoIP solutions with offices in Berlin and Prague.
FRAFOS was incorporated as privately held company in May 2010, in Berlin, Germany.
The history of FRAFOS team and technology goes back to the late nineties. As researchers
at the prestigious German public R&D institute Fraunhofer FOKUS, the FRAFOS founders
were the among the first to work the SIP and RTP standards and to develop open source
solutions that paved the way for the VoIP revolution.
FRAFOS offers SIP session management and security solutions of the latest generation that
come either as a standalone solution or as a cloud ready implementation. The flagship
product of FRAFOS, the ABC SBC, offers open interfaces and built in multimedia
applications such as recording and announcements. The ABC SBC enables the operators to
simplify their service infrastructure and prepares them for future challenges.