A system administrator’s entry to Voice

This is the flip side of the coin–the other half of IP telephony and the systems administration dilemma. It’s for the guys like me who enter the arena knowing how to configure, operate and administer a server, with some server-level operating system on it, and who are handy with the tools of that OS. We are adept at building open-source software from the C source files and issuing commands to run the software. It’s for those of us who arrogantly look at software like Asterisk or FreeSWITCH and think, “Piece of cake. Install the build tools, configure, make, edit a config file and done! I’ve done it a million times!”

Not so fast. What the systems administrator has before him or her at that point is software that may run, but not do anything useful. And to make it work in a sensible way, it seems like you have to understand
  • the whole realm of telephony hardware, including endpoints and interfaces to analog and digital telephone networks; 
  • networking protocols, including some fairly complicated quality-of-service configurations and NAT/firewall workarounds if you’re in such an environment; 
  • phone company lingo, so that you can order the right service from a provider to connect you to the outside world; 
  • technical voice services areas like call routing and dial plans, so that your phone system is actually usable (by your business or family);
  • business functions, so that you can get the call records into the hands of the people who are going to charge the users for their usage.

And, because I am sure I am forgetting a number of other areas, I’ll tack on “and much more.” 

I personally have found these areas much harder to learn than server and operating systems administration. When it comes to voice, I know what I know, and more importantly, I know what I don’t know, which is quite a lot! But the real stumper is when I don’t know what I don’t know. (You know?) In situations like that, Google doesn’t help much because I don’t have the right terminology in the search. It’s time to find the voice gurus out there, the ones who have been through the various iterations of PBXes.
I suspect that it’s easier to add server and OS administration to a full and rich voice services skill set than it is to take a systems administrator and make him/her into a competent voice person. Any commenters care to share opinions on this?

Open-source IP telephony and the systems administration dilemma

To effectively set up, operate, and customize an open-source phone system like Asterisk or FreeSWITCH, you need to be competent at Linux systems administration.
When Asterisk and FreeSWITCH first came about, this was clear, because to go though the process of building the software and running it on your server, you had to decipher and successfully follow compiling instructions and use systems administration skills to get it to work.
Enter the Asterisk+FreePBX “distro.” There are several of them out there now, and their promise is big: insert this CD or flash drive, boot your server, and out comes a working phone system with a configuration GUI. The installers even do a decent job of making the system secure, so that you’re not the victim of the first script kiddie to happen upon your server’s IP address.
Linux is pretty good at figuring out hardware configurations and installing drivers and setting up automatically. So, chances are, when the installer is done, you really do have a working system.
At this point, the person maintaining the phone system has to hope that all problems can be effectively diagnosed and solved through the GUI, that nothing interesting happens with the underlying hardware or operating system that would require troubleshooting, that all logging is available through the GUI, and that the security of the GUI’s web server (typically Apache, firewalled by iptables) is correct. 
What if you are running Asterisk+FreePBX and have a SIP communications issue with a provider? You can’t turn on SIP debugging in FreePBX. You can use the Asterisk Logs module to get some log information but you’d do much better with command line tools such as grep. The truth is, inability to navigate Linux and the Asterisk command line is crippling.
Taking advantage of the open-source system’s openness to customize and add new features, such as Google Voice integration, means getting into the nuts and bolts. Or wait for someone else to write a (probably buggy) GUI module for you.
The fact is, if you want to be hands-off with systems administration, you need to get an appliance-like system such as SwitchVox or the big name brand small business PBXes. You have to pay for these. With your money you will get professional support to operate the low-level controls when an error appears, and you’ll get full GUI access (probably) to everything you should have access to. If it’s not in the GUI, you don’t have access to it.
If you want free, you need to learn systems administration so that you can be your own support person. The forums of FreePBX and various distros are full of questions like, “My phone doesn’t work, what do I do?” Ask them what appears in the logs and they have no idea what you are talking about. It just doesn’t work like that.
This is the dilemma. Free and customizable, with the cost of learning systems administration (and maybe some scripting/programming) skills, or hands-off with the cost of paying the vendor for the software and support?
To be a little more specific about what I am calling systems administration skills, here are the things I believe a person needs to know in order to competently install and maintain an open-source phone system, with or without a GUI, and whether from a CD-installed distro or from RPM packages or from source (not an exhaustive list):
  • ability to navigate the Linux filesystem comfortably and know where certain kinds of files typically are (logs are in /var/log, config files are in /etc, executables in /usr/bin and so on)
  • ability to use a text editor
  • handiness with find, grep
  • ability to correctly configure a firewall or packet filter such as iptables
  • ability to read syslogs and follow clues to solve a problem
  • familiarity with the operating system’s package system (such as yum/RPM with CentOS) so that he/she can easily load necessary tools
  • some familiarity with development tools such as make, gcc, configure scripts, cvs and svn, and the ability to decipher output they produce
  • ability to configure user accounts and passwords
  • some familiarity with network diagnostic tools like netstat and tcpdump
  • for FreePBX, familiarity with command-line MySQL for database troubleshooting
  • for Asterisk’s mail needs (voicemail or fax to e-mail), ability to configure some mail sender

Is it a tall order? Yes, there is a learning curve. It’s not Windows 7. But, like learning a foreign language, when you go into the foreign land (Linux console) and can speak the language, you are empowered.

Asterisk on Amazon EC2 cloud; Google Voice update

Some quick updates on interesting topics featured on this blog.

A blog reader recently introduced me to Amazon’s Free Tier offering of their cloud infrastructure service. The gist: get a free year of a virtual server, within the limits of 10GB storage, 613MB RAM, and low CPU usage with some “bursting” as needed. That’s good enough for a test box, certainly.
I have been running Asterisk and FreePBX on the Rackspace Cloud since October 2010. It works great there, and if it weren’t for Amazon offering something for free, I would say that RS Cloud is still the better deal. (You can see the numbers for yourself if you calculate the price of Rackspace’s lowest-configuration cloud server and compare with Amazon’s. At only 256MB, the Rackspace server is a bit slim on memory, but more than adequate for development and testing and even running a few calls at a time in production.) But I’m into saving pennies and decided to move my test system to Amazon’s cloud, at least for the twelve months they’ll let me use it for free.
In short, it works according to my previous instructions for installing Asterisk and FreePBX on the Rackspace Cloud Server. Hackers who have set it up on RS Cloud can do the same on EC2 by selecting an instance within the Free Tier; use the Amazon Linux 64-bit image with 8GB disk. Use Elastic IP to give yourself a consistent (but not “static,” really) IP address. And note that your server is actually behind Amazon’s NAT, so you’ll need to configure SIP NAT settings as if you were behind a home router. Tip: use 10.0.0.0/8 for the localnet. Lastly, the firewall is configured on Amazon’s EC2 console, not in iptables. Enjoy!
Google Voice update
An unofficial, unsupported, much discussed Google Voice module for FreePBX made the rounds recently. In fact, the original author commented here on this blog advertising his module, but apparently no longer maintains it. I recommend sticking to the manual-configuration method documented here (hit the link just referenced and scroll all the way up). Unfortunately, Google Voice integration with Asterisk is still pretty flaky. Outbound calls will work perfectly, but inbound calls are hit-and-miss. I have seen this in my testing and so have others. (Note: don’t cross Michigan Telephone! Hi, MT!) Get a DID to forward to, use FreeSWITCH or an OBi ATA box for better success.