When a body of independent auditors and experts
that the State of California consider open-source software and Voice
over Internet Protocol telephony (VoIP) as two measures to cut costs in
2004, that was the signal that open source and VoIP should unite. After
all, what’s better than free software? Open source projects in other
fields like used in , , , and .
Why can’t the same happen with communications? (Hint: it can.) Open
source is better, because you have access to the code. What’s better
than open source? Open source that’s focused on VoIP. That’s what you
get here — 74 open source apps tucked into categories that you can use
“as is” or change to fit your specific VoIP needs.
The following apps and resources are categorized by ,
H.323, IAX, and RTP protocols and include clients, libraries,
gatekeepers, and any other open source resource available for those
specific protocols plus and IVR platforms. You’ll also find tools like , apps, and middleware that applies to one or more of the previously mentioned protocols.
H.323 Clients (User Agents)
VoIP traditionally uses ,
a rather complicated protocol that uses multiple ports and a binary
code for data. But apps like FreeSWITCH make H.323 seem like a piece of
cake with its all-in-one application. The following H.323 clients are
broken down into Multiplatform, Linux, MacOS X, and Windows.
Multiplatform
-
– FreeSWITCH is a telephony platform designed to facilitate the
creation of voice and chat driven products scaling from a soft-phone up
to a soft-switch. It can be used as a simple switching engine, a media
gateway or a media server to host IVR applications using simple scripts
or XML to control the callflow. FreeSWITCH runs on several operating
systems including Windows, Max OS X, Linux, BSD, and Solaris on both 32-
and 64- bit platforms. Note: FreeSWITCH is also multiprotocol,
as it works with SIP, IAX2 and GoogleTalk to make it easy to interface
with other open source PBX systems.
- –
Yate (Yet Another Telephony Engine) is a next-generation telephony
engine that is the first open source telephony application capable of
handling 600 H323 calls; while currently focused on Voice over Internet
Protocol (VoIP) and PSTN, its power lies in its ability to be easily
extended. Voice, video, data and instant messaging can all be unified
under Yate’s flexible routing engine, maximizing communications
efficiency and minimizing infrastructure costs for businesses. YATE can
be used for anything from a VoIP server to an IVR engine. The software
is written in C++ and it supports scripting in various programming
languages (such as those supported by the currently implemented embedded
PHP, Python and Perl interpreters) and even any Unix shell. Note: YATE
is multiprotocol, as it works with SIP and IAX, and H.323 protocol is
stable supported just by Yate. The most used application of Yate is as a
SIP-H323 translator because is the only open source stable translator.
Linux
- – Ekiga (formely known as GnomeMeeting) is an open source VoIP and video conferencing application for. Note: Ekiga
uses both the H.323 and SIP protocols. It supports many audio and video
codecs, and is interoperable with other SIP compliant software and also
with Microsoft NetMeeting.
MacOS X
- – XMeeting is the first H.323 compatible video conferencing client for Mac OS X.
Windows
-
– The OpenH323 project aims to create a full featured, interoperable
implementation of the ITU-T H.323 teleconferencing protocol that can be
used by personal developers and by commercial users without charge.
H.323 Gatekeeper
- – The GNU Gatekeeper (GnuGk) is a full featured cross-platform H.323 gatekeeper, available freely under GPL license.
H.232 Radius Platform
- –
While there are quite large number of Radius servers (including free)
available in the world, little number of them (if any) are developed
with VoIP specific needs in mind. BSDRadius is a RADIUS – compliant AAA
(Authentication, Authorization, Accounting) server with CHAP-password
authentication for H.323. Platform-independent, but has not been tested
on Windows.
SIP Clients (User Agents)
SIP (Session Initiation Protocol) is currently described by the
SIP is a popular open standard replacement from IETF (Internet
Engineering TasForce) for H.323 signaling standard for managing
multimedia session initiation. SIP can be used to initiate voice, video
and multimedia sessions, for both interactive applications (e.g. an IP
phone call or a videoconference) and not interactive ones (e.g. a Video
Streaming). It is the more promising candidate as call setup signaling
for the present day and future IP based telephony services, as it has
been also proposed for session initiation related uses, such as for
messaging, gaming, etc.SIP needs two ports, one for the command exchange
and one for the RTP stream which contains the voice. It’s easier to
work with firewalls than H.323, but you still need to have a proxy
running. The following SIP UAs are divided into two groups for
Multiplatform and Linux only:
Multi-Platform
- – A
nifty little default skin (Metal Gear) for SFLphone holds a
multi-protocol (SIP/IAX) multi-GUI desktop VoIP phone for use in Desktop
environments. The project is being developed on Linux, but should (“and
must”) be portable to various flavors of BSD operating systems (and
maybe win32) with some involvement.
- –
With linphone you can communicate freely with people over the internet,
with voice, video, and text instant messaging. Linphone is stable under
Linux, but FreeBSD and OpenBSD are reported to work.
- –
Minisip was developed by Ph.D and Master students at the Royal Institute
of Technology (KTH, Stockholm, Sweden). It can be used to make phone
calls, instant message and videocalls to your buddies connected to the
same SIP network. Runs on multiple Operating Systems (Linux PC, Linux
familiar IPAQ PDA, Windows XP and soon Windows Mobile 2003 SE).
- –
The flagship product of the OpenWengo project is a softphone which
allows you to make free PC to PC video and voice calls, and to integrate
all your IM contacts in one place. Through their partnership with, they also offer very cheap PC to telephone and SMS rates. Available for Linux, MacOSX, and Windows.
- – Make phone calls to your friends and family directly from your computer with the latest software from Linspire. PhoneGaim is built right into Gaim.
-
– sipXtapi is a comprehensive client library and software development
kit (SDK) for SIP-based user agents. It includes SIP signaling support
as well as a media framework. A complete and very feature rich softphone
can be built easily by adding a graphical user interface on top of
sipXtapi. Alternatively, sipXtapi was engineered to be embedded into
existing applications adding real-time communications to such
applications. sipXtapi is primarily developed under WIN32; however,
sipXtapi can be built and used under Linux and MacOs X. WinCE support is
in development.
- – OpenZoep (pronounced “open soup”), developed by ,
is a client-side telephony and instant messaging (IM) communications
engine. It supports computer-to-computer (peer-to-peer) VoIP calls,
instant messaging, and outbound PSTN and SIP calls to free and premium
SIP providers.
Linux
- Cockatoo –
Cockatoo is a project that focuses on implementing SIP/SIMPLE as an
extension for Thunderbird (XPCOM component/XUL interface) that enables
users to phone contacts from an address book and see their presence
state. Functionalities are included into Thunderbird as an XPCOM
component.
- YeaPhone – The goal of the YeaPhone project is to bring VoIP-Software together with the (USB-P1K)
and at the same time make a PC keyboard and monitor unnecessary. This
makes YeaPhone ideal for “Embedded Devices” as these do typically need
extra devices for user interaction (in this case the handset) while
working very energy efficient.
- –
Twinkle is a soft phone for your voice over IP communications using the
SIP protocol. You can use it for direct IP phone to IP phone
communication or in a network using a SIP proxy to route your calls.
Windows
-
– 1VideoConference allows its Web, Audio/ Video phone, Skype, Msn and
Yahoo users to instantly participate in live web conferences without the
need for lengthy downloads or complicated installations. Simply drop a
small piece of code onto your website and instantly create an online
video conference room. All you need is a web cam and an internet
connection and seconds later you can show presentations, share
applications or users’ desktops, hold live webinars, discuss new
strategies face to face with business partners, and more…
SIP Proxies
-
– Open Source SIP was created in March 2006 as a project to foster the
development of commercially viable SIP applications. The Open Source SIP
project is sponsored by Solegy, and draws on over six years of research
and development.
-
– Partysip is a modular application where some capabilities are added
and removed through GPL plugins. Depending on the list of included
plugins, partysip can be used as a SIP registrar, a SIP redirect server
or statefull server, or a SIP service provider (game session, answering
machine, etc.).
- – MjSip
is a complete java-based implementation of a SIP stack that provides API
and implementation bound together into one package. The MjSip stack has
been used in research activities by Dpt. of Information Engineering at and by . MjSip includes all classes and methods for creating SIP-based applications.
- – OpenSER
is an open source GPL project that aims to develop a robust and
scalable SIP server. Spawned from FhG FOKUS SIP Express Router (SER) by
two core developers and one main contributor of SER, OpenSER promotes a
development strategy open for contributions.
-
– SIP Express Router (ser) is a high-performance, configurable, free
SIP server. It can act as registrar, proxy or redirect server. SER
features an application-server interface, presence support, SMS gateway,
SIMPLE2Jabber gateway, RADIUS/syslog accounting and authorization,
server status monitoring, FCP security, etc. Web-based user
provisioning, serweb, available.
-
– Siprox is an proxy/masquerading daemon for the SIP protocol that
handles registrations of SIP clients on a private IP network and
performs rewriting of the SIP message bodies to make SIP connections
possible via an masquerading firewall. It allows SIP clients (like
kphone, linphone) to work behind an IP masquerading firewall or router.
SIP Protocol Stacks and Libraries
-
– The OpenSIPStack Library is an implementation of the Session
Initiation Protocol as described in RFC 3261. The primary goal of the
library is to provide application developers with a fully compliant
interface to the SIP protocol with scalability and stability in mind.
The OpenSIPStack Library has both low level interface and high level
interface ideal for use in SIP Proxies, Presence Servers, Softphones and
Instant Messaging clients.
-
– This library aims to provide multimedia and telecom software
developers an easy and powerful interface to initiate and control SIP
based sessions in their applications.
-
– eXosip is a library that hides the complexity of using the SIP
protocol for mutlimedia session establishment. This protocol is mainly
to be used by VoIP telephony applications (endpoints or conference
server) but might be also usefull for any application that wish to
establish sessions like multiplayer games.
- – The version is not supported on Win32 platforms, although some community members have shown interest in Windows port.
- – The reSIProcate project is part of the
community. The project aims at building a freely available, completely
standards based and complete reference implementation of a SIP stack
including an easy to use application layer API. The reSIProcate stack is
currently used in several commercial products and is very stable.
-
– Twisted Matrix Laboratories is a distributed group of open-source
developers working on Twisted, an event-driven networking framework
written in Python and licensed under the LGPL. Twisted supports TCP,
UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols
(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more.
- – The
PJSIP.ORG website is the home of PJSIP and PJMEDIA, the Open Source,
high performance, small footprint SIP and media stack written in C
language for building embedded/non-embedded VoIP applications. PJSIP is
built on top of PJLIB, and since PJLIB is a very very portable library,
basically PJSIP can run on any platforms where PJLIB are ported
(including platforms where normally it would be hard to port existing
programs to, such as Symbian and some custom OSes).
SIP Test Tools
The following tools basically test SIP applications and devices, but
each one is different in how it tests the protocols and in their focuses
and additional applications:
-
– Callflow is a collection of awk and shell scripts that will capture a
file that can be read by ethereal and that will produce a callflow
sequence diagram. The scripts have been primarily tested with SIP call
flows, but should work for other network traffic as well. You can view
callflow.svg with the Adobe SVG plugin, or you can view index.html with
any web browser. The directive is a clean little script complete with a “to-do” list that you can play with.
-
– SipBomber is an invaluable sip-protocol testing tool for Linux
originally developed by Metalink in 2003 for internal use. It was later
released as a GPL open source product.
-
– With SIP Proxy you will have the opportunity to eavesdrop and
manipulate SIP traffic. Furthermore, predefined security test cases can
be executed to find weak spots in VoIP devices.
- – sipsak is
a small command line tool for developers and administrators of Session
Initiation Protocol (SIP) applications. It can be used for some simple
tests on SIP applications and devices.
- –
SIPp is a test tool / traffic generator for the SIP protocol. It
includes a few basic SipStone user agent scenarios (UAC and UAS) and
establishes and releases multiple calls with the INVITE and BYE methods.
It can also reads custom XML scenario files describing from very simple
to complex call flows. It features the dynamic display of statistics
about running tests (call rate, round trip delay, and message
statistics), periodic CSV statistics dumps, TCP and UDP over multiple
socket or multiplexed with retransmission management and dynamically
adjustable call rates.
-
– The purpose of this test-suite is to evaluate implementation level
security and robustness of SIP implementations. The focus was set on a
specific protocol data unit (PDU), namely INVITE message (a subset of
SIP).
-
– The Load Balancer is a very simple proxy that is useful in SIP-based
VoIP installations where there are multiple ingress proxy servers. The
Load Balancer permits pooling these servers, thereby eliminating the
need to balance user demands for connectivity through a complicated
provisioning algorithm. The Load Balancer adds itself to the Via header
of requests to enable responses to return before being sent to
orginating endpoint. This only works with SIP messages sent over UDP
(User Datagram Protocol).
IAX Clients (User Agents)
The open source project Asterisk (see below in PBX platforms)
implements a software based PBX (Private Branch Exchange), or a private
telephone switch that provides switching (including a full set of
switching features) for an office or campus. As an internal protocol to
trunk two or more PBX servers, the IAX (Inter Asterisk Exchange)
protocol was created. IAX is a lightweight app based on UDP and bundles
call signalling and voice into one data stream. This streaming makes it
perfectly suited for connection-based simple firewalls.
- – iaxComm is a cross-platform application for the Asterisk PBX. It was developed on aWindows XP system.
- – Kiax is
an IAX client application which allows PC users to make ordinary VoIP
calls to Asterisk servers. It aims to provide a simple and user-friendly
graphical interface and desktop integration for calling, contact list,
call register management and easy configuration.
- – QtIAX is based on iaxclient (see below), but files were stripped for a bare bones environment.
- MozIAX – MozIAX is a Firefox VoIP extension, a cross platform software IAX2 phone (softphone) to be used with Asterisk.
- – YakaSoftware is the open source code behind the YakaPhone, a simple, Skinnable IAX/IAX2 Softphone from YakaSoftware.
IAX/PBX Library
-
– IAXClient is an Open Source library to implement the IAX protocol
used by The Asterisk Software PBX. Although asterisk supports other VOIP
protocols (including SIP, and with patches, H.323), IAX’s simple,
lightweight nature gives it several advantages, particularly in that it
can operate easily through NAT and packet firewalls, and it is easily
extensible and simple to understand.
RTP Proxies
RTP, or Real-time transport protocol, is the Internet-standard
protocol for the transport of real-time data, including audio and video.
RTP is used in virtually all voice-over-IP architectures, for
videoconferencing, media-on-demand, and other applications. A thin
protocol, it supports content identification, timing reconstruction, and
detection of lost packets.
-
– RTPproxy is a proxy for RTP streams that can help SER (SIP Express
Router) handle NAT (Network Address Translation, defined in )
situations, as well as proxy IP telephony between IPv4 and IPv6
networks. The code has been extensively tested on FreeBSD, Linux, MacOS
and Solaris. It should be relatively easy to port it to any system which
has a POSIX layer.
RTP Protocol Stacks
-
– JRTPLIB is an object-oriented RTP library written in C++. The library
offers support for the Real-time Transport Protocol (RTP), defined in
RFC 3550. It makes it very easy to send and receive RTP packets and the
RTCP (RTP Control Protocol) functions are handled entirely internally.
The latest version of the library is 3.7.0 (January 2007).
-
– oRTP is a Real-time Transport Protocol (RFC3550) stack under LGPL.
Written in C, works under Linux (and probably any Unix) and Windows.
-
– ccRTP is a C++ library based on GNU Common C++ which provides a high
performance, flexible and extensible standards-compliant RTP stack with
full RTCP support. The design and implementation of ccRTP make it
suitable for high capacity servers and gateways as well as personal
client applications.
-
– Vovida RTP is augmented by a control protocal (RTCP) to monitor data
delivery and network statistics. Together they resolve of many of the
problems a UDP network enviroment may experience, such as lost packets,
jitter, and out of sequence packets.
-
– This library, offered by Bell Labs, is based on the most recent
version of the specification, incorporating some of the newest features,
including RTCP scalability algorithms.
PBX Platforms
-
– Asterisk is a popular and extensible open source telephone that
offers flexibility, functionality and features not available in
advanced, high-end (high-cost) proprietary business systems. Asterisk is
a complete IP PBX (private branch exchange) for businesses and ‘s
that runs on Linux, BSD, Windows and OS X and provides all of the
features you would expect from a PBX and more. It has support for
three-way calling, caller ID services, ADSI, IAX, SIP, H.323 (as both
client and gateway), MGCP (call manager only) and SCCP/Skinny.
-
– This release includes the highly anticipated and robust new
conference bridge application called NConference. OpenPBX.org RC2 is now
generally available as a tarball that includes the ability to run on
several BSDs as well as MacOS X. Both are forks of Asterisk with T.38
termination.
-
– Open Source PBX developed using Perl. OpenPBX.org will be stable,
featureful, easy to use, and easy to deploy on a range of operating
systems.
- –
PBX4Linux is an ISDN PBX which interconnects ISDN telephones, ISDN
lines, and a H.323 gateway. This is a pure software solution except for
the ISDN cards and telephones, as it connects to a Linux box. The great
benefit is the NT-mode that allows to connect telephones to an ISDN
card.
-
– An enterprise-grade SIP PBX, SIP call manager and router, and SIP
Softphone based on 100% SIP and 100% open source software. Produced by
Pingtel, SIPxchange product suite runs on commodity server hardware
using the Linux operating system, supports a large variety of IP phones
and gateways, and seamlessly interoperates with legacy components.
- –
sipX is a modular server based solution that runs on standard Linux
complete with voice mail and auto-attendant. Alternatively, sipX can be
used as a high performance Enterprise toll-bypass SIP router. It
combines all common calling features, XML-based SIP call routing, voice
mail and auto-attendant, Web-based configuration, as well as integrated
management and configuration of the PBX and attached phones and
gateways. sipX does not require any additional hardware as it
interoperates with any SIP compliant gateway, phone or application.
IVR Platforms
-
– GNU Bayonne 2 was developed starting in 2005, with a special focus on
SIP. GNU Bayonne is an integral part of GNU Telephony that offers free,
scalable, media independent software environment for development and
deployment of telephony solutions for use with current and next
generation telephone networks.
-
– A client/server library for rapid Computer Telephony (CT) application
development in Perl. It uses Voicetronix hardware, and runs under
Linux. Supports OpenSwitch cards for building PC PBXes.
Voicemail Apps
-
– Linux Telephone Answering Device (lintad) is a fax and voicemail
application. Lintad uses a softmodem as a soundcard attached to the
phoneline to play greetings and record messages. Messages and faxes are
made available to browersers via Apache and PHP.
-
– The purpose of this project is to create an open source
voicemail/unified messaging system that runs on Linux that has the
ability to integrate with business telephone systems.
-
– VOCP is a complete messaging solution for voice modems, with
voicemail, fax, email pager, DTMF command shell and Text-to-Speech
support, 3 GUIs and a web interface. Send and receive faxes and
voicemail, listen to emails and execute programs on the host.
-
– The Open VXI VoiceXML interpreter is a portable open source library
that interprets the VoiceXML dialog markup language. It is designed to
serve as a reference for parties interested in understanding how
VoiceXML markup might be executed.
Speech Software
-
– Festival offers a general framework for building speech synthesis
systems as well as including examples of various modules. As a whole it
offers full text to speech through a number APIs: from shell level,
though a Scheme command interpreter, as a C++ library, from Java, and an
Emacs interface. Festival is multi-lingual (currently English (British
and American), and Spanish) though English is the most advanced. The
system is written in C++ and uses the Edinburgh Speech Tools Library for
low level architecture and has a Scheme (SIOD) based command
interpreter for control. Documentation is given in the FSF texinfo
format which can generate, a printed manual, info files and HTML.
-
– SALT (Speech Application Language Tags) is a lighweight markup
language that integrates speech services into standard markup languages
such as HTML. SALT supports the authoring of multi-modal dialogs as well
as voice-only dialogs and is suitable for the development of
applications across desktop and telephony platforms. SALT is defined
through the efforts of the SALT Forum, of which Carnegie Mellon is a
contributor. The OpenSALT project makes available a SALT 1.0 compliant
open-source browser based on the open source Mozilla web browser and
make use of open source Sphinx recognition and Festival synthesis
software. Their first Windows release is available for download. A Linux
version will follow when a fully featured Windows version is complete.
They will subsequently focus on developing a version suitable for mobile
devices and a version for telephony-based systems.
-
– The packages that the CMU Sphinx Group is releasing are a set of
reasonably mature, world-class speech components that provide a basic
level of technology to anyone interested in creating speech-using
applications without the once-prohibitive initial investment cost in
research and development; the same components are open to peer review by
all researchers in the field, and are used for linguistic research as
well.
Fax Servers
-
– HylaFAX is an enterprise-class system for sending and receiving
facsimiles as well as for sending alpha-numeric pages. The software is
designed around a client-server architecture. Fax modems may reside on a
single machine on a network and clients can submit an outbound job from
any other machine on the network. Client software is designed to be
lightweight and easy to port.
-
– AstFax provides an outgoing email to fax gateway for the Asterisk PBX
package. Incoming fax to email can also be configured so your Asterisk
server can act as both an outgoing and incoming fax server.
Development Stacks
- – OpenSS7 provides a robust and GPL’ed SS7, SIGTRAN, ISDN and VoIP stack for Linux and other UN*X operating systems.
-
– Objective Systems Open H.323 for C (ooh323c) is a simple H.323
protocol stack developed in C. The ASN.1 PER messaging code was
developed using the ASN1C compiler using a modified version of our core
run-time libraries. Additional open source components as well as code
developed in-house were added to produce a functioning stack. The goal
is to produce a reusable framework that contains the signaling logic to
allow channels to be created and terminated for different H.323
applications. ooH323c is now included as an add-on to the Asterisk open
source PBX.
-
– ++Skype library is a new, modern way to develop platform independent
Skype add-on software. The ++Skype is a C++ library of thoroughly
designed classes that can help you to build platform-independent add-on
software. Be sure to read the documentation, as this software requires
several tools and libraries not included in this article.
-
– The OpenBloX™ framework is an Open Source set of directories and
files, implementing in a whole or part of the 3GPP and 3GPP2 Diameter
specifications. The package contain at minimum the Diameter base
protocol as described by IETF RFC 3588 and any extensions provided to
support upper layers as specified by the 3GPP specifications, such as
Rx, Gx, Ro, Cx, Sh and other 3GPP defined interfaces.
Middleware
-
– Mobicents is the first and only open source VoIP Platform certified
for JSLEE 1.0 compliance. Mobicents brings to telecom applications a
robust component model and execution environment. It compliments J2EE to
enable convergence of voice, video and data in next generation
intelligent applications.
-
– Software application that integrates Web 2.0 design principals with
next generation communications technologies, including VoIP, presence
and web languages such as Python. developers are Ernie’s primary users.
-
– SIP Thor is based on P2PSIP technology that enables scalability with
no single point of failure. SIP Thor is based on P2PSIP, a set of
technologies that combines exiting IETF standards like SIP, DNS and ENUM
with Peer-To-Peer techniques like distributed hash tables (DHT).