In development since 2008, SIP Witch,
the call server developed by the GNU
Telephony project, made its stable 1.0 release in May. In conjunction with that milestone, GNU Telephony has also unveiled its next major project, GNU Free Call — a free, peer-to-peer routed voice calling network.
Thanks to the differences between SIP (Session
Initiation Protocol) and other communication protocols, it can be
confusing to explain exactly what SIP Witch does. SIP Witch is designed to
be a low-resource connection router, maintaining the actual network
location of active clients, and negotiating routes between clients whenever
a call is made. Because SIP addresses are URIs, a router like SIP Witch is
needed to map the URI to the actual endpoint where the user can receive a
call. Establishing the connection also involves tasks such as NAT
traversal. However, once the connection between the endpoints is set up,
the client applications communicate directly with one another. In that
respect, SIP is similar to XMPP (aka Jabber), where the "reachability" of the user is distinct from the call contents.
In contrast, full-blown call servers such as Asterisk or Bayonne handle the audio and video media streams between endpoints (including, potentially, transcoding between different formats), and run applications such as voicemail and various menu-driven interactive systems. SIP Witch can route calls to an Asterisk server, but also to standalone soft-phone applications, or to hardware devices like IP telephones or analog telephone adapters (ATAs). It can be used to manage SIP accounts provided by third-party service providers, to provide extensions within a LAN, or any combination of the two.
Ding-dong, the witch is calling
The 1.0 release does not add many features over the previous few
milestones. According to the changelogs, most of the work has been on
improving the build process, ensuring cross-platform compatibility, and
stabilizing IPC hooks for integration with desktop environments. Since SIP
Witch is a GNU
project, source code releases are available directly from the GNU
Project servers, but lead developer David Sugar has also made a special
effort to ensure that SIP Witch is well-integrated with both the Ubuntu
On a desktop system, SIP Witch can act as a proxy for local soft-phone
clients, alleviating the need to individually manage network address
translation (NAT), firewall traversal, and other settings. Although at the
moment running multiple SIP clients is probably not commonplace, it is easy
to imagine a few scenarios in which it would be useful. For example, since it is
up to the individual client to determine which media payload to use, a user might have a preferred open source client, but
also keep a back-up client installed in order to handle incoming calls
using older or proprietary codecs. SIP Witch does not care what codecs are
used between the call endpoints, since the media connection is made
directly between the clients.
A useful side effect of that feature is that SIP Witch is automatically
compatible with Phil Zimmermann's ZRTP end-to-end voice over IP
encryption scheme because the key exchange and encrypted data streams exist
outside of the SIP call set-up process. On the other hand, SIP Witch is
also compatible with applications that use SIP for instant messaging, but
because it does not handle the media payload, it does not queue or store
any SIP IMs that arrive when the application is not running.
Where SIP Witch gets more interesting is in its routing functionality. First, more than one endpoint "device" can register with SIP Witch under the same ID. Thus, SIP Witch can ring multiple hardware or software phones for any incoming connection request. Second, SIP Witch supports peer-to-peer routing. Multiple SIP Witch instances can be set up to redirect calls to each other, a technique that can be used to provide fail-over, or simply to connect two or more locations into a single SIP "realm" as if they were a single site.
GNU Free Call
This sense of "peer-to-peer" routing is rather limited, but the project has loftier goals in mind. Namely, Sugar plans to add peer-to-peer SIP URI discovery to the code in the future, so that SIP Witch servers can automatically collect and cache the addresses of reachable SIP call endpoints. At the moment, any SIP user can call any other SIP user (including those on remote networks), but only if he or she already has the other party's SIP URI. There is no built-in way in SIP to discover another person's (or business's) URI.
Adding that peer-to-peer discovery functionality to SIP Witch would be
straightforward from a technical perspective, but it very quickly escalates
into a human interface issue. Once SIP Witch can discover the URIs of
users on nearby nodes, the user must be pulled in to select the right John
Doe out of a potentially long list of possible matches. That, in turn,
means SIP Witch will need a GUI, and if SIP Witch has a GUI, new users are
likely to expect it to provide them with an account (just as the
proprietary alternative Skype does).
Consequently, GNU Telephony is not only planning to extend SIP Witch in the post-1.0 development cycle, but it is also launching a free calling network called GNU Free Call. In its official announcement, the project describes its goal as making GNU Free Call as ubiquitous and usable as Skype, including support on "all platforms" for use by the general public. In addition, it highlights goals of providing secure calls for both known and anonymous callers, but without requiring a central service provider, secret binary protocols, or network "control points" that could be exploited.
There is a basic roadmap sketched out in the announcement, starting with adding peer-to-peer discovery to SIP Witch as described earlier. The initial plan is to start by adding the caching of SIP URIs to the server, then to build a mechanism for publishing routes to connected peers — which is similar to the way peer-to-peer file-sharing services have operated. Sketches for the GUI front-end (based on the OLPC Sugar interface) are on the GNU Telephony wiki, with mock-ups that show local URI discovery, existing contacts, and tag-based searching.
Beyond the decentralized address-location problem, the other big
challenge presented in GNU Free Call is providing secure communications.
Although ZRTP is supported by a growing number of soft-phone clients (and
indeed there is a GNU Telephony implementation of it), it cannot be added
after the fact to most hardware devices, which leaves those users without a
secure option. The project plans on supporting these users by adding a
GnuPG public-key exchange step to SIP itself. That will allow security to
be handled during the call set-up phase (as handled by SIP Witch), by
establishing a secure SRTP
channel between the endpoints, and using the GPG keys to mutually verify
signed hashes of the session keys created.
Generally speaking, the project has frowned on security systems that rely on certificate authorities or public key infrastructure. This scheme has yet to be documented in detail, however it could be implemented with locally-generated key pairs. The traditional wisdom is that public key cryptography is too complicated for lay people to use, but perhaps the SIP use case will prove simpler to understand than has email encryption.
The bigger question is whether or not GNU Free Call can produce a system that is easily as usable as Skype. Several other free software projects have set the same grand goal over the years, but for the most part they relied on duplicating Skype's business model, but with a different network (based on SIP). Ekiga, WengoPhone/QuteCom, and the others all produced standalone SIP clients that were designed to connect to centralized SIP networks run by the provider (even though they could still call other SIP users).
At the very least, GNU Free Call is taking a markedly different approach. SIP Witch allows the user to choose any client application, and the wiki and archived conference presentations show strong ties to mobile devices (including the possibility of an oFono-based cellular back-end), as well as a desire to integrate with existing desktop services such as address books, D-Bus signaling, and notification frameworks. Automatic node-discovery and peer-to-peer routing may be associated with difficult-to-use file-sharing services in many users' minds, but those networks were centered around broad searches and multiple active connections. SIP Witch's interest in point-to-point communication may not share much in common with them at all. None of those factors guarantees its success, but the GNU Free Call team is certainly in it for the long term.
Furthermore, the small-and-light SIP Witch code base is much easier to manage than the heavier GUI soft-phone clients, and free from the headaches of media codec and transcoding support (the 1.0 release weighs in at just 480K, compared to 10MB for Ekiga). In addition to the GUI interface needed for searching or filtering discoverable URIs, SIP Witch will also need to build a more user-friendly configuration system. Right now, it uses XML configuration files which, although they are well documented, might be intimidating to inexperienced users. SIP comes with its own vocabulary, some of which is not immediately intuitive to those who do not deal in real-time network communications.
GNU Free Call is not scheduled to roll out its actual service until
"later this [northern hemisphere] summer." It will be an
interesting debut to watch. It is sure to garner support from
security-conscious free software types, but is aiming for a much wider audience.
to post comments)