Private branch exchange (PBX) equipment traditionally has been costly, but along with IP-based voice communications came PBX software. Like other types of software, some PBX programs are released as open source products under the free GNU General Public License (GPL). The most popular open source PBX software is Asterisk from Digium, originally written for the Linux open source OS but now also available in versions for Windows, Mac OS X, and other operating systems. In addition to the GPL version, there is a commercial license that allows closed code.
In a previous column, we discussed the Inter-Asterisk Exchange (IAX) protocol used for communications between two Asterisk PBX units or between an Asterisk client and server. Now, let's take a look at some of the components of the Asterisk system and how they work.
The most obvious advantage of open source software is cost; you can download Asterisk for free. The current version as of this writing is 1.2.13, and beta 3 for version 1.4.0 is also available to the public. The feature list for Asterisk is long and includes advanced features that are often associated with high end (and high cost) PBX equipment, such as conference bridging, call monitoring, call queuing, and voice mail. You can view a list of supported features at Asterisk's Web site.
In addition to its own IAX protocol, Asterisk also supports H.323, Session Initiation Protocol (SIP), Media Gateway Control Protocol (MGCP), and Skinny Client Control Protocol (SCCP). That means you can use SIP phones or Cisco Skinny clients with it. It will also interoperate with traditional (analog) telephone technologies such as Foreign Exchange Station (FXS) and Foreign Exchange Office (FXO), the interfaces that deliver and receive regular PSTN service.
IAX has advantages over SIP when there is a need to go through network access translating (NAT) devices, and it is more firewall friendly. IAX uses User Diagram Protocol (UDP) instead of Real-Time Transport Protocol (RTP) for signaling and media, which results in less overhead and lets you send more calls through the same link. It only uses one port (4569).
If your organization is concerned about the drawbacks of open source products, you might be considering some or all of these questions:
Asterisk can run on a regular PC, but you'll need an expansion card to connect phones or PSTN trunk lines to the server. Digium makes and sells Peripheral Component Interconnect (PCI) cards for this purpose. PC hardware requirements depend on the underlying operating system, what (if any) other programs are running on the server, and the call load on the PBX.
For example, Asterisk can run on an older, low powered PC when installed on Debian or another variety of Linux with minimal resource requirements. The more powerful the hardware, the more simultaneous calls it can handle.
Difficulty of setup and maintenance
Open source software often demands more technical knowledge than commercial products, and downloading and installing the Asterisk software on a Linux box, or even a Windows server, isn't a "no brainer." For example, to create a dial plan (the routing instructions that determine how calls are to be processed by the PBX system), you'll need to configure a text file called extensions.conf that includes information about extensions, priorities, and application commands. That means you need to understand the syntax. For more information about how the extensions.conf file implements a dial plan, see http://www.voip-info.org/tiki-index.php?page=Asterisk%20config%20extensions.conf.
However, there are options to make implementation of Asterisk easier. There are graphical interfaces that allow you to configure and administrator Asterisk from a Web site. FreePBX is the most popular example. It comes with a set of preconfigured dial plans you can use without having to create your own from scratch.
For small businesses, users can set up TrixBox—formerly known as Asterisk@Home—to set up an Asterisk-based IP PBX using a Web-based graphical interface. This interface, the Asterisk Management Portal (AMP), doesn't require users to edit configuration files. It comes on a CD with an ISO that installs both Linux and the Asterisk software.
For larger companies with some money to spend on an IP PBX, Asterisk Business Edition costs under $1,000 and offers turn-key convenience. It includes a year of professional support. You can buy the Business Edition bundled with tested hardware to make it even easier to implement. The Business Edition supports up to 40 simultaneous calls or, with upgrades, up to 240. See even more features supported at Digium's Web site.
Support: the Asterisk community
Even if you don't buy a commercial version, there are still many sources of support. Digium provides some pretty extensive online documentation, including installation and configuration guides that you can download free at Digium's documentation page.
The Digium Web site hosts a forum where Asterisk users and developers can ask and answer questions and get help with troubleshooting, with approximately 10,000 registered users at the time of this writing. There is also an IRC chat channel devoted to Asterisk on the irc.freenode.net server. The channel name is #asterisk (port 6667).
There are also several Asterisk-related mailing lists hosted at lists.digium.com. You can join the Asterisk users list through the Web site.
If all else fails, Digium can provide commercial support for the full Asterisk product suite for an hourly fee. More information is available from firstname.lastname@example.org.
There's also plenty of peer support out there. You can find numerous links and references to how to guides and tutorials on the Asterisk Wiki.
Businesses need to make the most of the number of phone lines they have, and this is just as true with VoIP as with traditional PSTN service. That means you need a PBX system to route calls within the organization. IP PBX systems can cost a bundle, but there's a low-cost way to implement PBX functionality with VoIP: an open source solution. The most popular and best supported open source PBX software is Asterisk.