Dal over at Asterisk VoIP News forwarded me an interesting link last week on a project he's been working on that creates a gateway between Skype and Asterisk or any SIP-based client. As most techies know, Skype uses a proprietary protocol and does not support inbound SIP calls. If you ask Skype CEO, Niklas Zennstrom why Skype chose their own proprietary protocol, (which many reporters have asked him), he always gives the same canned reply - that they chose their own proprietary protocol because SIP doesn't do everything they need, SIP has issues traversing firewalls, our proprietary protocol is more flexible, blah blah blah. Even though there are now NAT traversal solutions for SIP that perhaps didn't exist a couple of years ago, Skype still hasn't moved to SIP and it doesn't look like they will. Certainly now Skype has little to no incentive to move to SIP since they are "top dog" in VoIP and would probably rather have their own "VoIP walled garden" to keep competitors out and also force their customer base to use their revenue-generating SkypeOut service. Well, according to Asterisk VoIP News, Skype's Great Wall of VoIP has been cracked!
Dal writes in his Asterisk VoIP News blog entry:
I've wanted to be able to gateway calls between Skype and Asterisk for a while, which of course would require some type of protocol converter (IAX or SIP to Skype, probably.) This of course is directly not in Skype's interest, since they would like to keep the network closed (boo!) so that users are forced to use their PSTN gateway and other revenue-generating systems. On the other hand, I'm trying to crack this open so that any VoIP channel can talk to any other VoIP channel. Asterisk provides the ideal platform for this type of conversion, if only Skype were accessible...
Asterisk VoIP News then goes on to explain that there is a softwarel program called "PSGW" (http://www.rsdevs.com/) which runs on Windows and does SIP to Skype conversion. (Dal also opines that there should be a Linux port of PSGW.) According to Asterisk VoIP News, "It uses the Skype API to create calls in both directions, and then uses somewhat of a kludge using software audio "cables" between a SIP/RTP driver system and the Skype API." Essentially, you can use an Asterisk box for your call routing and PBX functionality and use the Skype network for termination.
John Todd, a networking and VoIP consultant, specializing in Asterisk implementations, who claims to never sleep, told me that the system can work "standalone" without Asterisk of course, but Asterisk makes it much more useful since Asterisk has powerful dialplan capabilities that enable you to do Skype mappings inside your dialplan without having to remember complex dial strings. John also said, "Plus, limiting the SIP calls from a single IP address (your Asterisk server) is a heck of a lot more secure than leaving it 'wide open' which is the only other alternative right now."
Here's how it works:
1) User makes a SIP URI call (using SIP phone or softphone) to a domain where the PSGW software is located. For this example, suppose I have it running on my domain: tmcnet.com. Thus, you can simply SIP dial <username>@tmcnet.com
2) The call is routed to the tmcnet.com firewall or SIP proxy with port 5060 mapped to a PC running Skype and the PSGW software.
3) The PSGW takes the SIP call, strips off “<username>” from <username>@tmcnet.com and then initiates a Skype call to Skype user “<username>”. (Thus, you simple need to pre-pend the Skype username you wish to call to the domain.)
4) The PSGW then “bridges” the audio from the Skype leg of the call with the SIP leg of the call.
That's it! You've just made a SIP-to-Skype call. Skype's Great Wall of VoIP has just been breached! Granted, it is a bit of a "kludge" requiring a host PC running Skype & PSGW, but cool stuff nevertheless, eh? B)
There are many interesting possibilities and uses for this. Maybe I'll see if I can get a demo copy of PSGW and try it myself. If anyone else tries the $29 PSGW software, let me know what you think and what interesting applications you use it for.