Open Source Telephony Gives Customers Control
Linux.com's Tina Gasperson recently had the chance to sit down and talk with Thomas Howe, a small shop owner working to help implement open source telephony solutions. "Howe says open code is the key to highly customizable phone systems that truly meet the needs of individual companies. 'The telecom world has typically been a very closed environment. In terms of technology and deployment, they control every aspect of the experience. The idea of being open and allowing customers to have control is a radical thought.' But that is just what Howe is doing. Howe bases his custom communications solutions on Asterisk, the popular full-featured open source telephony engine that many companies are adopting as they move away from legacy phone systems in an effort to save money and gain more control over their infrastructure."
You can in fact pass along any CallerID you like and it will be then passed along to the end user if and only if the telecom provider supports it and chooses to pass it along based on your past history of using good numbers. Any telecom provider (VOIP or Traditional) can just reject the numbers and replace it with the main number of the business.
I've been using it domestically since 2002. It has run all our home phones for three years now.
If you want to do something quickly, there are live CDs that will have you set up in very little time. If you like to tinker, get Asterisk: The Future of Telephony from O'Reily and a linksys spa terminal adapter so you can use an ordinary phone.
Something like the spa-2002 is nice becuase you get two lines. It's easier to experiment if you have two numbers. Linksys make WIFI dongles for these too. They're nice because you can then add a phone line anywhere in the house. Once you'r ehooked you can think about spending money on SIP phones. The SNOM phones seem to be favourites, or you could get a Cisco number like you might have in the office. They give you the nice big LCD display to play with.
Once you have played for a little, you'll probably never look back. Remember you really do want 256kb+ upstream bandwidth and if your home network is doing anything else you'll really appreciate some QoS. You also want a stable network connection. You can use Codecs to work round bandwidth, latency 100ms tends not to be too bad, but jitter is a killer. if your pings are all over the place, you'll end up sounding like an extra from Dr Who.
I have set up asterisk at home and love it. In fact, I wrote a voicemail app for it and put it out there for free - http://www.littlejohnconsulting.com/ari/ My install has voicemail space till you fill up the harddrive, call attendant, and unlimited routing/call forwarding options for the lines I have. My favorite is what I have heard called the ex-girlfriend option, where you route calls that you know you do not want to never-neverland. Your don't have to know they called.
I have it running on an old 600Mhz machine, have a digium card, and used http://freepbx.org/. If I had it to do over again, I would not have any phone line hardware (drop the digium card) and do everything voip buying the service from a voip vendor.
I found it to be a lot of fun and to meet my needs it did not take to much effort. Lots of help is out there now.
I might point out that you can change the number displayed by caller ID in many PBX systems, not just open source ones.
transporter_ii
Doctors destroy health, lawyers destroy justice, universities destroy knowledge, religion destroys spirituality
Slashdot | Caller ID Spoofing Becomes Easy
http://hardware.slashdot.org/article.pl?sid=06/03/02/2311218
ID Spoofing for the masses:
http://slashdot.org/article.pl?sid=04/10/28/1450205
Slashdot | Caller ID Falsification Service
http://slashdot.org/article.pl?sid=04/08/30/1620237
New Google Service Manipulates Caller-ID For Free
http://yro.slashdot.org/article.pl?sid=06/11/18/2112248&from=rss
Doctors destroy health, lawyers destroy justice, universities destroy knowledge, religion destroys spirituality
A home/smb PBX still has to connect to a main secure backbone exchange and as far as I remember they should validate your allocated range of callerID numbers or simply only allow a single switchboard callerID to be sent out. ISP's and Telecom's companies like cut deals and flog "authorized/validated/authenticate" hardware, but really that is more about signals strengths and kick backs than a secure box. User premises equipment must be assumed to be inherently hackable - end of story. The server/exchange side interface (ie. trusted telephone exchange) is where hacks are supposed to be caught.
Sure in theory you could spoof the exact callerID within your range, but you can argue any 3rd party home PBX system could be capable of that. At least if the source is open, there is more change of reviewing whether it is definitively possible or not, before or after an incident. With closed systems, you are completely trusting the vendor and even with court action it would be hard if not impossible to get access to their source to prove it either way.
What your home/smb does with its local PBX side is its own biz and you have to trust that yourself, just as you had to blindly trust some 3rd party PBX manufacturer of the past.
Having spent the last few weeks setting up Asterisk and such i've found a few things major to most smaller companies that it doesn't do well. For one, SLA or Shared Line Appearance (aka, everyone can see who's on line 1, pick up the call and answer it). While the code exists it's hard to use, the documentation is poor, and the people in the IRC channel only manage to mock those who don't know that the secret lies in a pdf buried in the subversion source code and will only expend the energy to type out some cryptic code to their bot that points you at the same tired document that doesn't answer your questions. The SLA in Asterisk *works* if you have the right equipment and the time to set it up but Linksys does it one way, Aastra another, and Polycom one more. The goals of the Asterisk project seem alright but the developers seem to have it all wrong. Rather than focusing on the features users want and getting them right they are kinda hacking it all together and deciding it needs to be worked on later. Rather than making it run well on most systems, they sacrifice things to make it run on the 133mhz machine hiding in Edison's garage. I know making it light on memory is important as too much will make voice quality horrible but there comes a point when the user side of things has to be more important. My last gripe with Asterisk is that there are a few different people working on different versions all at the same time seemingly getting nowhere. Take Asterisk, elastix, FreePBX, OpenPBX, and whatever else may be out there and get all the devs to work together and get it up to something that feels mainstream and open source worthy. Asterisk is a great project but it's still got a ways to go before it's ready for massive rollouts. The only reason i'm setting one up is that the current BizFone system we have crapped out and has been crap from day one.
There are a couple of roll-ups that include Asterisk, a GUI, and other apps along with a Linux distro on a single CD. I personally have used trixbox for a home server with a telasip VOIP line. If you just want to do an easy home install on an old machine or VM you could start with one of these.
Trixbox is one of the most popular, I found it very easy to install and use. However they were featured in yesterdays article about a phone-home "feature" that allowed Fonality to run code on an installed machine.
AsteriskNOW is made by Digium, the maintainers of Asterisk. Its still in beta, but there are prebuilt VMware and Xen virtual machines ready for download if you just want to give it a try.
Elastix seems to be getting some good reviews, but the main site has been down for the past few days. The link to the left is the sourceforge pages.
For now, you need to treat any pbx like a pbx. The intranet infrastructure you control, so you can do what you want there. But from the copper out, you need to go with what's reliable. And for now, that's copper/traditional telco lines.
I have done several pbx installations, voip and otherwise, and let me tell you: People love asterisk. I get them setup with copper/t1s, and everything else is gravy.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
I tried it out, and wasn't particularly impressed.
All the documentation seems to assume that you're using Digium's POTS cards in your Asterisk box. So does the code. Asterisk insists on using a clock in these cards as its timing source, and if you aren't using one, it needs its own Linux kernel module to provide timing (which isn't in the main kernel tree - cue lots of unnecessary messing about with compiling modules). Worse still, if you're using a 2.4 kernel, it abuses your USB controller for its timing source. Why they didn't use POSIX high-res timers is a mystery. Worse still, none of these ridiculous hacks even work properly - sound playback from the Asterisk box is very prone to choppiness.
The SIP code is a complete mess, and not even anywhere near RFC compliant. Little bugs and annoyances pop up all over the place that are quite telling about the quality of the underlying code.
CallWeaver is a fork of Asterisk that aims to fix a lot of the problems although I have reservations about how active the project is. They seem to have at least addressed the timing issue though.
So in summary; Asterisk - nice idea, too many bugs.
I expect the timing issue is due to the fact that in the telephony world, if you have a phone switch (a Class 5 Phone switch) and are using a TDM circuit from that switch (A T-1/DS-1, DS-3, OC-3, and so on) you must submit to the timing produced on the circuit from the phone switch...if you didn't, and produced your own timing, then inevitably, you would end up with echo. (This is the way it works in all traditional telephony.) If the device at the other end isn't providing a timing source, you must provide one, so a timing "generator" (loosely defined - read more about Digital Channels and Time Division Multiplexing (TDM)) is included in most equipment that acts as a digital device that would serve a connection to an endpoint (A T-1 to a PBX, for instance)
In any case, that is why the Asterisk code relies on the timing from their PRI/T-1 cards, since you *must* do so to avoid echo, if the other end is providing the timing source. If it isn't, Asterisk still relies on that clock, if it exists, since it will produce the timing for any circuits connected to it. If no such card exists, Asterisk tries to get the timing from some other source - a special module in the kernel, or the USB stack, trying to derive some source of timing that will remain reliable and steady over time.
I'm not saying that there aren't other ways to do this, but coming from a telephony background, it was a decent decision at the time. There are also external timing sources used in a lot of telephony devices, and I'm certain Digium could find, or has found, a way to make use of them as well. This is all dependent on the fact that you'll be interfacing with the PSTN. If you are working with pure VoIP, the timing in this sense is irrelevant, and you need to coordinate other things (such as jitter, QoS, packet delay, and bandwidth) and you shouldn't need a timing source. Apparently, Asterisk still needs this timing source due to the structure of it's code.