原文出处:
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 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 ,
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.
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.
-
- Yate (Yet Another Telephony Engine) is a next-generation telephony
engine; 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 as well as with H.323.
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
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 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).