Asterisk (PBX)

From Wikipedia, the free encyclopedia

For other uses of this term, see Asterisk (disambiguation).

Asterisk is a free software / open-source software implementation of a telephone private branch exchange (PBX). Like any PBX, it allows a number of attached telephones to make calls to one another, and to connect to other telephone services including the PSTN. "Its name comes from the asterisk symbol, *, which in Unix (including Linux) and DOS environments represents a wildcard, matching any sequence of characters in a filename."

Asterisk is released under a dual license scheme, the free software license being the GNU General Public License (GPL), the other being a commercial license as to allow closed/patented code, such as the G.729 codec to work with the system (although the G729 codec may work with the free or commercial versions). Mark Spencer of Digium originally created Asterisk and remains its primary maintainer however following Open Source development methods there are dozens of other programmers who have contributed features and functionality and have reported bugs. Originally designed for the Linux operating system, Asterisk now also runs on OpenBSD, FreeBSD, Mac OS X, Sun Solaris, and Microsoft Windows, although as the "native" platform, Linux is the best-supported of these.

The basic Asterisk software includes many features previously only available in expensive proprietary PBX systems -- voice mail, conference calling, interactive voice response (phone menus), and automatic call distribution. Users can create new functionality by writing dial plan scripts in Asterisk's own language, by adding custom modules written in C, or by writing Asterisk Gateway Interface scripts in Perl or other languages.

To attach ordinary telephones to a Linux server running Asterisk, or to connect to PSTN trunk lines, the server must be fitted with special hardware. (An ordinary modem will not suffice.) Digium and a number of other firms sell PCI cards to attach telephones, telephone lines, T1 and E1 lines, and other analog and digital phone services to a server. The PCI cards that Digium sells as X100 or X101 are a particular Intel or Motorola WinModem with a resistor removed to change the PCI Device ID; this prevents the same WinModem that Digium modifies from being used unless a change is made to the driver so that the PCI Device ID is recognised (or by removing the resistors).

Perhaps of more interest to many deployers today, Asterisk also supports a wide range of Voice over IP protocols, including SIP and H.323. Asterisk can interoperate with most SIP telephones, acting both as registrar and as a gateway between IP phones and the PSTN. Asterisk developers have also designed a new protocol, IAX, for efficient trunking of calls among Asterisk PBXes.

By supporting a mix of traditional and VoIP telephony services, Asterisk allows deployers to build new telephone systems efficiently, or gradually migrate existing systems to new technologies. Some sites are using Asterisk servers to replace aging proprietary PBXes; others to provide additional features (such as voice mail or phone menus) or to cut costs by carrying long-distance calls over the Internet (toll bypass).

VoIP telephone companies have begun to support Asterisk; many now offer IAX2 or SIP trunking direct to an Asterisk box as an alternative to providing the customer with an ATA.

As of October 18, 2006, the current release version of Asterisk is 1.2.13

Contents

[edit] Programming

Asterisk, on its own, is not a complete system. The administrator must create a Dial Plan to make Asterisk respond to users. If Asterisk is to be used as a PBX, a dial plan has to be created specifically for this purpose.

Asterisk is controlled by editing a series of configuration files. One of these, extensions.conf, is where the administrator defines what actions Asterisk will take when calls are answered. A native language is used to define contexts, extensions and actions. Programming can also be done using the AGI interface which allows programs written in languages such as Perl, PHP and C. These programs issue Asterisk function-calls to handle the primitive functions.

There are several GUI interfaces for Asterisk, one of the most popular being FreePBX. These interfaces allow administrators to view, edit, and change most aspects of Asterisk via a web interface.

[edit] Criticism

Unlike most next generation telephony applications and architectures, Asterisk is built using a monolithic model and does not break out individual parts of the application. An alternative application architecture would be disaggregated, where each architectural component could exist independently and therefore be scalable or easily accelerated with best of breed components. As an example, the media server portion of the Asterisk application is not implemented as a Voice Over IP media server and cannot be easily replaced with a hardware-based alternative. The Asterisk architecture therefore has inherent scalability problems in terms of raw performance and functional completeness. Due to the dual licensing nature of the Asterisk code and the feeling among some developers that changes required to the software were not incorporated in a timely manner, the Asterisk source base was forked in 2005 and established as OpenPBX.org.

Asterisk's timing mechanism (both timestamps and wake-ups) is strongly biased toward systems which contain at least one of Digium's PCI boards. Users with other needs, including pure VoIP setups, are likely to experience timing problems. The problem can be somewhat reduced by loading a kernel module which emulates the timing functionality normally provided by Digium's PCI boards. As with the other Digium drivers, this driver has not been submitted for inclusion in the standard Linux kernel and thus presents the usual awkwardness associated with non-standard drivers.

[edit] Distributions

Various distributions of Asterisk exist, usually pre-packaged with an operating system. Some are fully Open Source and others commercial. Each distribution has its own set of features and packaged applications.

[edit] See also

[edit] Official website