I’ve recently been reflecting upon my history as an Asterisk user and the evolution of my preference for embedded systems (aka appliance) approach to Asterisk servers.
The path that I’ve followed is probably typical of a lot of people in many ways. Perhaps by sharing my experience I can help some people avoid some of the problems that I have faced, and understand how I arrived at my personal definition of an “Asterisk Appliance.”
Phase 1: A Beginning
I started tinkering with Asterisk early in 2004 when v0.70 was the current release. At that time I assembled my first Asterisk server using older hardware that I had on-hand. It was Dell Optiplex GX110 tower with a 733 MHZ Pentium III processor. The hardware was due to be decommissioned, so I re-purposed it as an experimental PBX for my office.
I added three single port FXO cards to handle three of our four analog lines. These devices were called X100P, aka “WildCards.” Little did I know how appropriate that name was for that hardware. Lastly, a snom 200 SIP phone graced my desk at that time.
This box was completely not ideal for my home office. It was everything I would later come to despise in an Asterisk server. It was big and loud. It drew a considerable amount of power and therefore threw off a substantial amount of heat. It’s 20 GB disk was old, slow and probably would not be reliable over time. Even so, that old beige box had three things going for it; it’s CPU and memory was adequate for the task, it would handle the FXO cards, and it was free. In short, it was something to get me started.
I used that server for about six months, essentially just long enough to prove out the idea that Asterisk might become the basis for our home & home office phones.
I learned a lot along the way. One of the key lessons at that time was a simple truism;
FXO interfaces suck!
I had a very difficult time with the combination of our SBC analog lines and the X100p cards. There were issues of echo, noise and lines remaining off-hook long after the call had ended. It was by all accounts a mess.
The trouble with analog interfaces was so bad that in May 2004 when Sipura had a public beta program for their new SPA-3000 I signed up right away. The SPA-3000 had one FXS and one FXO port, so I used it to bring my main office line into the PBX as a SIP device, dropping one of the X100P cards. The SPA-3000 was better behaved than the X100P, but it was not without its own issues…primarily a problem with inadequate audio levels.
Phase 2: Built-to-Order
When I finally decided to build a computer specifically for Asterisk I turned to Logic Supply to find a small format system based on a low-power VIA CPU. The idea was to build a small, fanless and possibly diskless system. Along the way I decided to purchase one of Digium’s new TDM400P cards, with 3 FXOs, to replace the troublesome X100P analog interfaces.
I put considerable thought into building this little system. I knew that I wanted something quite, reliable and low-power. It was only going to run Asterisk so a 500 MHz VIA C3 CPU was more than enough. That meant that I could go with a fanless mini-ITX motherboard in a small form factor case.
The system had a 60 watt power supply, meaning that it drew less power than my laptop at that time….much less than the elderly Dell. While the motherboard was fanless, the case had one small, very quiet, low-speed fan for the DC-to-DC converter. It also accepted 2 PCI cards, allowing me to add a second NIC and the TDM400P card.
Instead of ordering a disk I ordered a CF-to-IDE adapter as I was determined to try the newly released Astlinux. Astlinux was a new embedded Asterisk+OS distribution that was designed to boot and run from flash media.
Also about this time a friend was just ending a period of experimentation with Asterisk. Whereas I had been bitten by the Asterisk bug, they had not. So they decided to give me a Polycom Soundpoint IP600 desk phone that they had been using. It was a major step up from the snom 200, which I resold on E-bay.
The VIA system stayed in service as our PBX for about a year. It was more than up to the task. Astlinux also proved to be a good choice.The system booted to a 256 MB CF card and stored VM to a USB key plugged into the rear panel.
At this time we were using a Covad DSL line that was 1.5 MB x 768 kb. This drove me to learn about QoS and traffic shaping using m0n0wall, which I ran on a Soekris Net4501 system. It also caused me to I load four G.729 licenses installed to the server. By using G.729 we made better use of the available bandwidth, especially the outbound leg.
While the TDM400P card was better than the cheapo X100Ps or the SPA-3000 device, it was still far less than ideal. Nagging problems with the analog interfaces ultimately drove me to simply give up on them altogether.
I developed a strategy for moving away from POTS lines over time. To begin I established an account with a ITSP who could provide DIDs on our area. Then I had SBC add remote access call forwarding to our analog lines. Next, I call forwarded the analog lines to the DIDs I had from the ITSP. In this manner our analog lines now arrived via IP. However, if the ITSP or DSL had problems I could release the call forwarding and get the analog lines back.
This proved to be a good strategy for evaluating the reliability of what would come to be called SIP trunking. When after six months I realized that I had never had to defeat the call forwarding I simply ported the numbers out to the ITSP and canceled the analog lines.