One of the most popular softphones in use today is Skype (http://www.skype.net). Skype is a software application that utilizes a proprietary P2P VoIP network in order to route calls between users (see Figure 10-1). SkypeOut is a service that allows Skype users to dial PSTN phone numbers . SkypeIn is a service that provides a number that any phone can use to call a Skype user . Skype was launched by the same founders of the popular P2P file-sharing software, KaZaA, and thus shares many of the same characteristics with regards to communication.
In October of 2005, eBay purchased Skype, thus raising the eyebrows of many who follow the telecommunications space to wonder how long it would be before Skype made a play into the enterprise. As of today, it seems that Skype is used more by individuals within an enterprise for their own personal purposes, rather than by the enterprise itself. However, it may be only a matter of time before Skype comes out with a truly robust hosted, enterprise VoIP solution.
We would like to thank and acknowledge Villu Arak, Jaanus Kase, and Imogen Bailey from Skype for their feedback on this section.
One of the challenges of using a softphone such as Skype in a residential or consumer environment is configuring firewall and router settings properly so that NAT traversal is not an issue. Skype uses variants of STUN ( Simple Traversal of the UDP Network RFC 3489) and TURN ( Traversal Using Relay NAT http://www.jdrosen.net/papers/draft-rosenberg-midcom-turn-08.txt), which both facilitate communications between firewalled network address spaces. Skype calls its proprietary decentralized P2P technology the Global Index and describes it as a "multitiered network where supernodes communicate in such a way that every node in the network has full knowledge of all available users and resources with minimal latency."
The first step in negotiating a call between two Skype users involves the caller trying to contact the intended recipient directly. If direct communication from the caller fails, then the intended Skype recipient tries instead to connect back to the caller. If both attempts at direct connection fail, then other intermediate Skype users who are reachable by both hosts attempt to route the call. These relay hosts are called supernodes, and any Skype user may at any time be elevated to supernode status, according to the latest version of the Skype privacy agreement:
"4.1 Permission to utilise your computer. In order to receive the benefits provided by the Skype Software, you hereby grant permission for the Skype Software to utilise the processor and bandwidth of your computer for the limited purpose of facilitating the communication between Skype Software users."
Skype does not document the exact conditions necessary for your computer to be turned into a supernode; however, doing so has some bandwidth consumption implications as you'll see in the next section.
According to Skype's own documentation, the minimum requirements for network access involve opening up TCP port access to all destination ports greater than 1024 or, instead, to destination ports 80 and 443. A typical Skype phone call will consume anywhere between 24 and 128kbit/s of bandwidth. If the Skype user's computer is also being used as a supernode, that number could, however, potentially double. Typically, a Skype user's computer will only be upgraded to supernode status given a lack of firewall restrictions. Some estimates place supernode traffic to a maximum of 40kbit/s in both directions.