VoIP is trivial. The code to implement a telephone is very simple:
- I first connect to you using your DNS entry such as BobPhoneOne.Frankston.com.
- Accepting a connection > simply[BF2] means connecting your microphone and speaker to this audio stream. Programming this would be simple just use a standard a subroutine library that handles things like canceling out the speaker/microphone feedback, allow a small buffer for packet jitter and cover for lost packets and little else.
That's really all there is to having a Conversation over IP or CoIP.
This is a barebones scenario. When people speak about VoIP they expect something different and more sophisticated -- Telephony as We Know It or TaWKi.
When I read though the specifications for the Session Initiation Protocol, it's obvious that emulating all of the accidental properties of the PSTN is a big task. It's even more complicated because of the reasonable interest in improving upon basic telephony. SIP is a framework that is also used to provide workarounds for limitations in the current Internet.
If all you want is CoIP without the rest of TaWKi you can simply employ the Real-Time Transport Protocol RTP RFC-1889) or perhaps devise your own protocol. Microsoft even provides a small but powerful sample RTP application. It connects directly to an endpoint using a simple IP address I feel it would be better to put development effort into IPv6 to gain this simplicity instead of adding disparate IPv4 workarounds into each protocol.
Commercial interest in VoIP was initially driven by price. Indeed, carrying a conversation over the Internet has been cheaper than using the PSTN even when one has to pay for dedicated lines and overprovisioning in order to avoid congestion. A VoIP provider can now carry a call just like any other phone company except that the Internet is the underlying transport. The carriers themselves are now embracing IP as their basic infrastructure and the Internet will soon become a vast, distributed, subscriber telephony network that will ultimately replace traditional end-office, tandem office and mobile switching offices, along with their old TDM switches.
But that's not very interesting or important in itself -- it is still functionally PSTN even if the innards have been replaced.
The Internet continues to grow in capacity and voice streams are now a minor load compared to what is needed for video. You can buy a standard box that has two RJ-11 jacks for your traditional telephone and an RJ-45 for your Ethernet. Just plug it in anywhere in the world and you have a normal phone. This means VoIP can work without special (aka expensive) transports and there is no need for third party involvement.
TaWKi is the packaging of VoIP so that, to the user, it looks just like the PSTN, including using the same kind of phone numbers as the PSTN (as in the case of ENUM). It's no surprise that many users and the press naively assume that VoIP is somehow part of the PSTN. This is a useful illusion but the reality is that it has nothing to do with the PSTN except when you need to connect to someone on the legacy network.
We need to have a clear message: Voice over IP is defined by the user and has nothing to do with the old PSTN. Vonage is a company that includes the PSTN gateway as part of their service; Free World Dialup does not, though third parties can and do provide it. In discussing VoIP policy we must emphasize that it makes no more sense to treat VoIP as legacy telephony than it does to require a postage stamp on email. The only contact is at the gateway but even then, the "gatewaying" can be done anywhere in the world by anyone. We must be careful about putting companies that package VoIP for retail at a disadvantage by imposing onerous requirements.
More important from my perspective is the distinction between CoIP and TaWKi. I'm a great believer in VoIP and expect the legacy phone network to simply melt away unnoticed. The exciting opportunity lies in the concept of unfettered CoIP and the ability to build new applications upon a simple uncluttered transport.