Inside iPhone 4: FaceTime video calling

Playing up his characteristic "one more thing" showmanship, Apple chief executive Steve Jobs introduced FaceTime for the new iPhone 4 as an easy to use video chat app that works over WiFi. Here's why it matters, how it's open, why it's currently WiFi only, and how it stacks up to other Voice over IP video calling apps such as Skype.

FaceTime & iChat AV

Apple revealed FaceTime as an iChat-like service exclusive to the new iPhone 4 hardware. It's not exactly iChat though, and although it shares a lot in common, there's currently no talk of any ability to chat from iPhone 4 to desktop Mac iChat clients (although this is almost certain to happen over the next year as iPhone 4 launches).

Apple's Mac iChat was originally an IM client for AOL's proprietary AIM network. Apple later extended iChat to support open XMPP "Jabber" instant messaging. It then added support for the Internet Engineering Task Force's SIP (Session Initiation Protocol) in iChat AV, in order to do standards-based video chat and video conferencing.

As a video conferencing product, Apple's Mac iChat AV client provides exceptional picture quality at little cost but runs into a lethal natural barrier on today's Internet: NAT (Network Address Translation). The routers at both corporate and home networks often hide internal IP addresses from the open Internet, making things difficult for video chat applications that want to act as both a server and client with bidirectional rich media streams to some other host across the Internet.

The NAT problem

For iChat AV to reliably connect with other clients (including compatible PC clients running the same complex suite of video chatting standards, such as AOL) across the Internet, it usually has to transverse NAT. That's particularly complex because everyone's NAT works a bit differently, and there's so many technical issues involved with handling different types of routers and their different implementations of NAT.

There are different kinds of NAT, and no complete standards in place on how to implement them for ideal interoperability. Additionally, the security policy a company establishes for itself might rule out individuals from setting up their own server, which is a problem for video chat because iChat AV needs to act like a server for a remote client to initiate a transaction with it.

Apple's iChat uses its own SNATMAP protocol to allow a client to determine its external IP address and open a port mapping that remote hosts can use to return communications through the firewall. Apple also uses UPnP (Universal Plug n Play) a Microsoft-originated standard for NAT port traversal supported by a variety of consumer router/firewall makers.

These are used to punch iChat AV's traffic through NAT routers, but they aren't always supported by enterprise routers or some models of home router appliances. In Mac OS X Leopard, Apple improved things by adding support for ICE (Interactive Connectivity Establishment), an emerging IETF NAT traversal standard, but there are still vexing problems for non-technical consumers trying to set up a simple video chat.

Making FaceTime open

Apple faces the same kinds of problems in getting video calls to work on the iPhone. So do other vendors. Apple wants to make mobile video chat an open standard for interoperable video chat sessions, so it adopted the neutral FaceTime name rather than calling the service iChat, which is very much an Apple-sounding name.

Essentially however, FaceTime is iChat AV for iPhone. Jobs presented an "alphabet soup" of technologies that were involved in making FaceTime work, many of which are shared with iChat AV, including:

H.264 and AAC, its ISO/MPEG video and audio codecs (just like iChat).

SIP (Session Initiation Protocol), the open IETF signaling protocol for VoIP used by iChat AV.

STUN (Session Traversal Utilities for NAT), an IETF standard for dealing with lots of different kinds of NAT.

TURN (Traversal Using Relay NAT), an IETF standard for allowing a client behind NAT to receive incoming requests like a server.

ICE (Interactive Connectivity Establishment) an IETF standard which helps set up connections through NAT firewalls.

SRTP (Secure RTP) an IETF standard designed to provide encryption, message authentication and integrity for the data streams.

Rather than being some radically new protocol for video chat, Apple's FaceTime is an evolution of iChat's standards-based foundations, which have already been implemented by AOL in a compatible client on the desktop PC. It's therefore no stretch to think that other phone vendors will work to create compatible FaceTime clients that work with iPhone 4 phones, and it would be very surprising if Apple's own iChat AV wasn't adapted to work with the latest FaceTime protocols to enable desktop to mobile video calls at some point.

The companies that need to buy into FaceTime are networking gear companies like Cisco (who already work to support the IETF protocols involved) and phone manufacturers like Nokia, RIM, HTC and Motorola (who are already working hard to match the iPhone's features, look, and specifications). The best way for Apple to push FaceTime would be to deliver an open source implementation of the core technology stack, much like it delivered WebKit, and much like BSD provided the world a standard IP networking stack.

Apple understands the success of WebKit, but it's not yet clear that it's ready to give away software to competitors when it doesn't absolutely have to. That might result in a variety of implementations of FaceTime-compatible devices that all have various bugs that impede interoperability. Of course, such a situation might benefit Apple, too, making it the primary vendor of reliable FaceTime phones.

On page 2 of 2: Why FaceTime is WiFi only, What about Skype and Fring?