Voice over Internet Protocol (VoIP) continues to entrench itself throughout the communications sector, especially in mixed private branch exchange (PBX) implementations. Cracking this market often is a challenge for the embedded arena, though, because the telephone industry differs substantially from many other embedded endeavors. The open-source Asterisk VoIP PBX software hopes to change that by giving developers a leg up on the competition. Mark Spencer, one of the key contributors to Asterisk and president of Digium, notes that the platform is being used in major, multiple PBX environments as well as low-end routers. One designer even customized it to run on a LinkSys 54G gateway.
Asterisk provides all of the traditional PBX features, including acting as a gateway to local extensions, voice mail, automatic call distribution (ACD), conference calls, and even interactive voice response (IVR). It automatically generates call detail records (CDRs) that can be used for billing purposes.
Also, an Asterisk PBX can connect to another Asterisk PBX using the Inter-Asterisk eXchange 2 (IAX2) (see the figure). IAX2 can authenticate and encrypt messages. Plus, its single TCP/IP port simplifies firewall configuration.
VoIP phones can use a number of protocols, including IAX2, H.323, and SIP (Session Initiation Protocol). Links to external PBX and plain-old telephone-service (POTS) phones use additional hardware supported by Asterisk. For example, Asterisk supports a number of channel-associated-signaling (CAS) protocols for in-band signaling using the T1 protocol. It also supports Integrated Services Digital Network (ISDN) Primary Rate Interface (PRI) links. And, there's support for the most commonly used audio codecs, such as G.711 m-law and G.711 a-law.
But Asterisk doesn't just target low-to mid-range PBX systems. It also supports Distributed Universal Number Discovery (DUNDi), which enables the creation of trust groups between PBXs. This permits two PBXs to share a subset of extensions so a company can provide limited access to an outside company (e.g., a consulting firm) while preventing direct access to other internal services.
Asterisk will run on a variety of platforms, but it was developed for a Linux environment. This often turns out to be a desirable combination for keeping costs down. Asterisk uses a GPL license, though designers can contract with Digium, Asterisk's sponsor, for different licensing terms.
Anyone can download Asterisk. But installation can be complex if you're uncomfortable editing text configuration files— Asterisk happens to contain a number of them. Even the open-source front ends leave a good bit to be desired.
On the other hand, commercial front ends are quite polished, and they typically target specific areas of the PBX market. These embedded products effectively hide the use of Linux and Asterisk from consumers.
Asterisk is designed for modular enhancement. This includes areas such as codec support and interconnect protocols.
The Asterisk Gateway Interface (AGI) resembles the Apache Web server Common Gateway Interface (CGI), because AGI lets scripts control how the system interface works. With it, scripts can be written in various programming languages. They also can process calls and handle IVR chores.
The easiest way to install Asterisk is to download it on a Linux PC and use soft-phones from other PCs on the same network. Asterisk can handle video calls as well. Video conferencing and mail services are somewhat limited, but they're improving.
Designers may want to give Asterisk a look because it can be used to build a vertical-market PBX system. It also can provide more sophisticated embedded access to network products. Keep in mind that it can handle actions such as switching calls to other extensions or PBXs as well. Imagine an embedded device that can be queried using IVR. A call requiring additional service could switch to an operator. Ultimately, it could be more interactive than a basic Web interface.