SIPDomainCalling

Revision 11 as of 2009-11-20 16:13:16

Clear message

Summary

GNU SIP Witch is a service for the SIP protocol that is analogous to what Jabber does to XMPP, that is it offers registration, routing, and messaging between arbitrary SIP endpoints and resources. GNU SIP Witch was selected as part of the FSF initiative to replace Skype with free software, however there are additional opportunities that are very relevant to Ubuntu. SIP Witch can also be used as a local back-end to unify the telephony experience of desktop users in Telepathy and other desktop SIP user agents by automatically mediating access to local telephony resources such as SIP devices, desktop modems, gsm radio, idsn adapters, or local telephony servers, as well as remote VoIP service providers and enabling direct and secure call peering over the public Internet. The goal is to identify the work required to implement a flexible model allowing for an effective telephony experience for Ubuntu users.

Release Note

Desktop domain calling services will empower users to unify their telephony experience in new ways on Ubuntu. This includes creating and participating in secure calling networks over the Public Internet, as well as accessing both local and remote telephony resources and services in a unified desktop client experience.

Rationale

There is need to be able to use any resource that is available for communicating with people, whether a local modem device, an existing service provider, a private IP-PBX, or even directly in a secure manner using the public Internet, and to be able to do so automatically without requiring user intervention when situations such as connectivity to external services change.

To enable a complete telephony experience we can begin with unifying the client experience such as with Telepathy. For example, we want to begin with one universal contact for telephony be it a phone number or a sip uri, and a consistent manner for a single client to connect to said user with a single contact without having the user needing to determine where or how the call is actually placed, what service entry to use, etc. The user experience should be stemless, and hence the purpose of proposing a local mediating service for the SIP protocol.

User stories

User wants to run a simple phone system for several softphones they have at home, and dial them locally as extensions and have basic pbx features like call forwarding, multi-phone ring groups, etc.

User wants to call other users at remote locations. For this, we will use URI dialing, which means SIP witch will map email-like id's into local extensions.

Design

We will be making use of existing SIP compliant softphones, many of which have already been packaged for Ubuntu. SIP Witch simply coordinates these devices in a local dialing plan, and offers uri routing that is resolved through DNS for calling remote users.

Since SIP Witch only mitigates SIP and will soon offer media packet forward RTP for SIP devices behind a NAT, while still establishing direct peer-to-peer communication between endpoints, it has very little overhead and no issues with patent encumbered codecs. Because peer to peer media connections are used between endpoints, sipwitch can operate directly with, manage, and scale "Social Key Verification" systems such as ZRTP. Since all users can use direct URI dialing to contact users at other locations there is no need for a central "service provider" or directory.

The primary feature is being able to run a SIP Witch "service" on Ubuntu, and this is a packaging issue alone. Exposing this service to management, that is, making it possible for ordinary human beings to in some even basic manner configure a SIP Witch installation for this specific mission at minimum without hand editing config files, and the completion of packet forward integration in the daemon itself, is the only Ubuntu-specific feature proposed for Lucid.

Implementation

For Lucid:

  • Packaging of sipwitch daemon (nearly done)
  • Completion of packet forward feature for proper NAT support
  • Simple gui app (maybe done in quickly) to generate a configuration file
  • Ability to select gui config app from System->Administration

  • Basic documentation for this
  • Cache user sip hashes when user passwords change via pam stack and new /etc/sipwitch.db

Effort

Lucid:

  • Packet forwarding may take a few days to complete and test
  • new digest cache a few days
  • gui app time unknown
  • Packaging should be about a day
  • Total effort ~1-2 weeks

UI Changes

  • New gui app for system-admin to create sipwitch configurations

Code Changes

Migration

Test/Demo Plan

Unresolved issues

  • Gateways. This spec offers a way to unify client communication with IP-PBX services offering pstn gateways, that may also run on Ubuntu, but it does not define or address these.

Action Items