I’ve been paying a bit of extra attention to Asterisk this week, trying to figure out exactly what is stable and production-ready and what is still flaky.

By and large, most of the complaints that I’ve seen on the asterisk-users mailing list have something to do with one of these areas:

  • H.323
  • Echos in voice calls
  • Problems with analog FXO lines, particularly outside of the US
  • NAT
  • Configuring SIP phones
  • VoIP provider issues (finding one, provisioning problems, outages, etc)
  • Generic asterisk configuration problems (lack of documentation)

Of these, the first three are real production problems with Asterisk, while the other four are either teething problems or generic problems with VoIP in complex networks. Generally, once you find a provider and configure your hardware and software, Asterisk seems reliable. Except for echo.

Echos are a fundamental problem with all types of phone calls–most users hear echos of their own voice on cell phones and traditional long-distance phone calls from time to time, although it’s fairly rare. A number of things can cause echos, but it’s usually either analog impedance mis-matches or 4-wire to 2-wire transitions. Since every analog phone in the country uses a 2-wire connection to the network, every single phone has the ability to add echos.

For low-latency local calls, echoing isn’t a problem–it sounds like light reverb on your own voice, and it isn’t usually even noticeable. The big problem comes in when calls have longer latencies, either because of the distances involved or because of VoIP packetization delays. When that happens, the delay between your voice going out and the echo coming back can be long enough to be annoying or distracting.

Because of this, a lot of work has went into echo cancelation for digital phone systems. Asterisk includes a configurable echo canceler. While this canceler may not be as good as some commercial equipment, it’s generally good enough, unless a few specific conditions exist:

  1. You’re using analog phone lines (FXO) and there’s an impedance or level mis-match between Asterisk’s FXO interfaces and the phone lines. This will cause all sorts of fun problems. Similar problems have plagued traditional phone systems for years. Solutions exist, but they tend to require someone who really knows analog phone lines. In theory, knowledge of the local telco’s test phone numbers and a couple tools should be good enough to tune Asterisk to avoid these problems, but the actual procedures aren’t well documented.

  2. You’re using digital phone lines (T1, PRI) but you’re losing frames from time to time, due to PCI latency problems or possibly system load. It appears that Asterisk’s echo canceler can cause echos when this occurs, although this hasn’t been conclusively proved.

  3. Given #2, it’s possible that the same problems can occur when using VoIP and packet loss occurs, but I haven’t heard anyone raise this as a possibility.

Other then that, Asterisk seems to be working well for people. Most people seem to be using it as a traditional business PBX with SIP phones and a PRI for external calls without any problems at all. Given Asterisk’s price and flexibility, this sounds like a great way for an organization with in-house Linux experience to get a power, flexible phone system for a reasonable price.