3.1. Free Telephony Software
If you were learning engine repair instead of VoIP, you probably wouldn't use a Ferrari for your experiments. You would want something more forgiving and easier to work on, like a nice Dodge Omni. Luckily, there's Asterisk PBX softwarethe very open , roomy-under-the-hood telephony server. Like a Dodge Omni, Asterisk is easy to work on, support is a snap to find, and experimenting is cheap. In fact, Asterisk is free (although its development is supported by Digium, Inc., http.//www.digium.com). So is its source code.
But like a Ferrari, Asterisk is very powerful. Asterisk supports several Voice over IP communication protocols: H.323, SIP, IAX, and others (see Chapter 7 for more on these). Using these protocols, it can support just about any IP telephone, as well as traditional analog and digital telephones. Asterisk has some industrial-strength features like call-queuing, conference calling, voice mail, and caller ID.
Using Asterisk, you can build something as simple as an answering machine that sends its recorded messages to your email address (as we'll do in Chapter 14) or something as sophisticated as a thousand-subscriber corporate communications system with least-cost call routing and advanced call accounting.
Not all PBX solutions bring such a wealth of features. By definition, a PBX is just a private call-routing exchange. In traditional telephony, advanced features such as voice mail and autoattendant are often provided by separate, outboard devices. Figure 3-1 shows a summary of Asterisk's functions.
Figure 3-1. The functions of the Asterisk PBX software
With Asterisk and other freely available tools, you can build all kinds of telephony applications. The included Asterisk Gateway Interface allows you to develop computer-aided telephony tools using PHP, Perl, Java, or C, and the Asterisk Management API allows you to build socket-based monitoring and automation applications for your PBX. To bind telephony applications to data, Asterisk has a built-in database that is similar to the Windows registry.
You can teach Asterisk to do interactive voice response (IVR) and text-to-speech. Imagine an application that interfaces with home-control equipment so you can turn on and off the lights in your house using your cell phone. Other possibilities include logging your phone traffic to a web site or database, running your own caller ID blacklist to cut down on unwanted calls, recording calls, or creating data collection tools for your coworkers or customers.
You could use Asterisk's expansive PBX functionality to build an intercom calling system between offices or between rooms in your home. With a little help from wireless Ethernet, you could put an IP telephone out in your shed. Asterisk could even be the nerve center of an elaborate James Bond-style phone-tap system.
Of course, managing enterprise telecommunications is Asterisk's intended purpose, and it does an excellent , if exhaustive, job. Although it offers more features than can be easily documented, we'll make sure you understand enough of Asterisk to facilitate your own continued experimentation with the VoIP technology family.
3.1.1. Other Free Telephony Software
Other open source software, including the SIP Express Router, Open H.323 (covered further in Chapter 7), VOCAL, and ReSIProcate, offer task-specific , developer-oriented tools that can help you learn Voice over IP, too. But Asterisk is currently the most well-rounded and mature open source IP telephony system available. That's why it's been chosen to illustrate many of the examples used in this book.
3.1.2. Asterisk's Requirements
Asterisk is distributed like most open-source softwareyou download the source code and compile it yourself. Though Asterisk will run on FreeBSD, Solaris, and Mac OS X, it's easiest to compile using Linux.
Asterisk can run on many flavors of Linux, as long as the kernel version is 2.4.x or 2.6.x. Red Hat Linux 7.3, 8, and 9, which use these kernel versions, are all capable of running Asterisk, and this chapter assumes Red Hat Linux Version 9 unless noted. (Once Asterisk is compiled and installed, its VoIP uses are identical regardless of platform.) When installing Linux, be sure to include the kernel sources, Bison, and OpenSSL packages, which are all required by Asterisk. Most distributions include a copy of each, and almost all distributions are available for download from http://www.linuxiso.org.
A Pentium III PC with 128 MB of RAM, an Ethernet interface, and a few hundred MB of hard drive space is enough to support a very basic Asterisk configuration with a voice mail application and several SIP telephones connected by Ethernet. Just as an engine uses more horsepower to make a car accelerate faster, the PC you choose will need more processor power and memory in order to support more conversations, particularly if those conversations are between different types of phones (say, a SIP phone and an analog phone on the public telephone system).
If you are planning on connecting your Asterisk server to the telephone company, you'll also need to install a special PCI interface cardwhich would rule out using a laptop, since they don't sport PCI slots. We'll get into more interface card details later in this chapter.
It's a good idea to give your Linux PC a static IP address, too. Though some administrators prefer dynamic addressing for just about everything on their networks, IP telephones work better if their PBX is always located at the same address. Using a dynamic (DHCP) address for a VoIP call server is like putting diesel in that Dodge Omniit might work for a short time, but pretty soon, it will cause problems.
For the duration of the book, the Asterisk server's address will be assumed to be 10.1.1.10.