Why Routing VoIP calls is difficult
Routing Telephone Calls
Telephone usage has grown slowly and this has allowed the entire industry to agree on the best way to route a call from the caller to the person at the other end. Since 1947, area codes have been in existence which provide a clue as to where the actual telephone number exists. Wireless phones introduced complications, but these have been worked around so as to allow people to continue using telephone numbers as the means of uniquely identifying two phones.
The Internet however has a dramatically different form of addressing. When you send an email to someone for example, the @ field tells your email system which server to send the email to. Anything with "@gmail.com" for example, ensures that the message is sent to Google's servers who will then deliver the message to the username before the "@" sign. Similarly, when accessing a web page, a DNS record tells your browser what a particular ".com" address means.
Since VoIP is an Internet technology, early VoIP calls utilized a similar system to connect two people, but this required them to be on the same type of program. Skype to Skype calls for example are easy because when you give a username to Skype to call, the software knows if they're online or not and what IP address they're using.
But problems occur when people from two disparate systems try and call one another. VoIP doesn't (yet) function like email and a yahoo user can't connect to a gmail user, though it's theoretically possible and might happen one day in the future. But what happens when a VoIP system needs to connect to the PSTN lines and make a call to a regular telephone number?
Dealing with Telephone Numbers
When you call a PSTN based telephone number using a VoIP system, there's no easy way for it to tell programmatically where that number is, or whether it belongs to another VoIP based SIP provider. It has to go through the PSTN system at least initially to get that information because just having a telephone number isn't tremendously helpful - you can't really tell much from it. That can only be done by the telcos. There was a service called ENUM which attempted to bridge this gap but there are indications that telcos are averse to having it become a sort of "DNS" of the VoIP world.
As of now, there are islands of VoIP which need to be connected and so far there isn't any easy way to do it without resorting to the PSTN network. When that last hurdle is abolished, VoIP will really take off. It's important to avoid PSTN completely because so many features such as IP Phone Services with HD Voice can't be provided if even part of the traffic goes over PSTN. The breakthrough with PBX Business VoIP Services will be tremendous when any two VoIP providers can connect entirely over IP.