White Papers
Forum
Proper Asterisk Management: The Foundation

The Asterisk PBX is a unique, powerful VoIP and traditional (old-school) Analog and Digital communication toolkit. However, this power comes with confusion, frustration and even disgust, if a proper foundation is not established. There are many concepts to grasp prior to deploying Asterisk in a production and/or mission critical situation. This whitepaper will assist you in building a solid foundation in Asterisk concepts.

For whatever reasons, most people that find Asterisk see it as a silver bullet or Holy Grail application to solve their communication needs. While in theory this could be true, you need to keep in mind that Asterisk is not and will never be one of those applications that you simply install, execute and walk away from. Asterisk takes a significant amount of time and energy to properly configure, manage and maintain.

Many seem to dive right into configuring Asterisk to a specific, intended task before understanding and even experiencing the basic features and functions that are available. If you have never installed Asterisk before you should compile the code yourself and when directed issue the make samples command, which gives you a known working instance of Asterisk.

Take a quick look at the various configuration files listed in /etc/asterisk/. As you will notice there is a vast range of configuration files distributed with Asterisk. Each configuration file represents a specific module (or plug-in) within the Asterisk architecture. Take a few minutes to go through each config file to get a general idea of the scope of those features and functions Asterisk can provide.

At this point, you should experience Asterisk for the first time with a SIP Phone/Adapter or Soft Client on your PC using the sample configuration. Doing so will give you an idea on what to expect from a working configuration of Asterisk.

After you have experienced Asterisk and have briefly looked at the various available configuration files, you then need to determine exactly what features and functions you need utilize for this particular instance of Asterisk. We have found that people tend to make one Asterisk instance take on too many tasks. Do not forget that Asterisk is a modular in nature, which allows you to load and more importantly not load those modules for a specific instance of Asterisk.

The modular nature of Asterisk allows one to distribute the load by breaking out discreet components onto dedicated hardware each running a specific configuration of Asterisk. Running your systems with a minimal amount of loaded modules on each instance of Asterisk allows for more system resources to be available for your own usage.

For example, a typical enterprise environment would consist of soft-switch, media processing and application serving instances of Asterisk. Each component would have its own specific set of configuration directives and run on its own hardware platform, each with its own set of system requirements.

The soft-switch component would manage the telephones, telephone numbers and applications for your system, but does not require a high-end machine since the 'expensive' CPU tasks would be off-loaded to the media processing servers and discreet application servers.

The media processing server(s) would take the load of transcoding (VoIP) and/or gateway (PSTN) aspects of your system. In order to scale, a typical Asterisk-based system would have multiple media processing servers in place using various techniques to evenly spread out the load.

If your situation requires AGI or custom C-API based Asterisk-based applications that do real-time database lookups or otherwise need additional system resources can easily be setup on their own dedicated hardware, which frees up resources on the soft-switch allowing for even higher levels of scale. Application server instances of Asterisk tend to have large amounts of RAM and/or redundant hard drive arrays for quick and reliable access to data.

Keep in mind the modular nature of Asterisk. Systematically breaking down your system in do discreet components is how you make Asterisk scale.