When a body of independent auditors and expertsrecommended 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 medicine have revolutionized the toolsused in ultrasound, x-rays, surgery, radiology and even data. 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 SIP, H.323, IAX, and RTP protocols and include clients, libraries, gatekeepers, and any other open source resource available for those specific protocols plus PBX and IVR platforms. You’ll also find tools like faxware, voicemail apps, and middleware that applies to one or more of the previously mentioned protocols.
H.323 Clients (User Agents)
VoIP traditionally uses H.323, 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.
- FreeSWITCH – 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 – 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.
- Ekiga – Ekiga (formely known as GnomeMeeting) is an open source VoIP and video conferencing application forGNOME. 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.
- XMeeting – XMeeting is the first H.323 compatible video conferencing client for Mac OS X.
- OpenH323 Project – 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.
- OpenH323 Gatekeeper – The GNU Gatekeeper (GnuGk) is a full featured cross-platform H.323 gatekeeper, available freely under GPL license.
H.232 Radius Platform
- BSDRadius – 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 rfc2543 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:
- SFLphone – 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.
- Linphone – 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 – 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).
- OpenWengo – 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 withWengo, they also offer very cheap PC to telephone and SMS rates. Available for Linux, MacOSX, and Windows.
- PhoneGaim – Make phone calls to your friends and family directly from your Linspire computer with the latest software from Linspire. PhoneGaim is built right into Gaim.
- sipXtapi – 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 – OpenZoep (pronounced “open soup”), developed by Voipster, 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.
- 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 Yealink USB handset(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 – 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.
- 1videoConference – 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…
- Open Source SIP – 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 – 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 – 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 University of Parma and by DIE – University of Roma “Tor Vergata”. MjSip includes all classes and methods for creating SIP-based applications.
- OpenSER – 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 – 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.
- Siproxd – 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
- OpenSIPStack – 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.
- The GNU oSIP Library – 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.
- The eXtended osip Library – 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.
- Vovida SIP Stack – The version is not supported on Win32 platforms, although some community members have shown interest in Windows port.
- reSIProcate – The reSIProcate project is part of the SIPfoundry 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 – 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.
- PJSIP – 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 – 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 Callflow directive is a clean little script complete with a “to-do” list that you can play with.
- SipBomber 0.8 – 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.
- SIP Proxy – 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 – 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 – 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.
- PROTOS Test-Suite: c07-sip – 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).
- Vovida.org Load Balancer – 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 – iaxComm is a cross-platform application for the Asterisk PBX. It was developed on aWindows XP system.
- Kiax – 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 – 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 – YakaSoftware is the open source code behind the YakaPhone, a simple, Skinnable IAX/IAX2 Softphone from YakaSoftware.
- IAXClient – 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, 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.
- Maxim Sobolev’s RTPproxy – RTPproxy is a proxy for RTP streams that can help SER (SIP Express Router) handle NAT (Network Address Translation, defined in RFC 1631) 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 – 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 – oRTP is a Real-time Transport Protocol (RFC3550) stack under LGPL. Written in C, works under Linux (and probably any Unix) and Windows.
- GNU ccRTP – 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 Stack – 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.
- RTPlib – 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.
- Asterisk – 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 Dallas Fort Worth trucking accident attorney‘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.
- OpenPBX.org 1.2 RC3 – 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 Software PBX – 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 – 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.
- SIPxchange – 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 – 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.
- GNU Bayonne – 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.
- CT Server – 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.
- lintad – 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.
- Linux Voicemail/OpenUMS – 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 System – 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.
- OpenVXI – 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.
- The Festival Speech Synthesis System – 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.
- OpenSALT – 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.
- CMU Sphinx Projects – 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.
- HylaFAX – 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 – 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.
- OpenSS7 – OpenSS7 provides a robust and GPL’ed SS7, SIGTRAN, ISDN and VoIP stack for Linux and other UN*X operating systems.
- ooh323c – 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 – ++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.
- OpenBloX™ – 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.
- MobiCent – 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.
- Ernie – Software application that integrates Web 2.0 design principals with next generation communications technologies, including VoIP, presence and web languages such as Python. LAMP developers are Ernie’s primary users.
- SIP Thor – 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).