Asterisk is an implementation of a telephone private branch exchange (PBX) for VoIP. It allows connected user-agents to reach each other and to reach outside telephone services. It can be used as a PBX for switching calls, managing routes, providing features and connecting callers with the outside world over IP, analog (POTS) and digital connections. Asterisk provides many features to the users and is much more than a simple SIP proxy forwarding SIP messages. It can also provide services unrelated to SIP but common in telephony.
Examples of features and services in Asterisk are voicemail, IVR (Interactive Voice Response), call routing, forwarding, monitoring, ENUM support (used to translate "common" telephone numbers to SIP URIs using DNS), music on hold and much more.
It supports many audio codecs and is capable of transcoding between them. Asterisk understand several signaling and VoIP protocol including SIP, H.323, MGCP or IAX (Inter-Asterisk Exchange) and is capable of translating signalization between them. As such, it can be used as a media and signaling gateway between multiple networks that wouldn’t understand each other.
The PBX is modular and therefore extensible.
All these characteristics make Asterisk an excellent choice for PBX that end-users register to and use services of. Multitude of available features offer the end-users many services in addition to basic session establishment provided by SIP. Also, the administrators can benefit from a complete VoIP solution offered in one package.
The downside of such complex solution is that it is resource-demanding. Being not only a SIP proxy server, it needs to process the SIP messages and take actions which are often resource-intensive (transcoding a call between two codecs or recording a message for an unavailable user and sending it to his mailbox, for example). To provide its functions, it works as a B2BUA: when a user dials an extension number, the call is set up between the UE and Asterisk itself. If Asterisk determines that the call is intended for another UE, it initiates a different session (call) to the intended recipient. Thus, it is not suitable for deployment as a SIP proxy that needs to process many SIP messages and just forward them to a correct destination.
There are several VoIP solutions derived from Asterisk for various reasons. Some just add functions and facilitate the deployment process for the administrator and actually contain software bundled with Asterisk.
An example of such product is trixbox (formerly asterisk@home). trixbox is a bootable CD that automatically changes a computer into an Asterisk PBX with graphical tools for configuration. It is very convenient to use a graphical front-end to configure a PBX, but it can be problematic, especially when advanced configuration tasks are to be performed. The way the front-end creates and modifies the configuration files can conflict with manual changes that are sometimes desirable.
Other projects are actual forks with own source code. CallWeaver (formerly known as OpenPBX.org) is one such example. Unlike original Asterisk (developed by a commercial company Digium), it is community-developed and vendor-independent. The project was created because of multiple reasons and general discontent with current Asterisk status and development by Digium.
These derivates have one thing in common with Asterisk – they offer a complete VoIP solution in one package and SIP is only one part of the whole product