Background
Federated VoIP typically refers to:
- Using ENUM to discover SIP and Jabber addresses associated with a particular phone number
- Federated SIP, Federated XMPP/Jabber, or some combination of the two
- Dynamically connecting from any one domain to any other domain without any pre-configured routing
- Using the user's email address interchangeably as a VoIP/IM identifier (rather than forcing the user to have a Skype or IM address in addition to their normal email address)
Federated VoIP does not require any SIP trunks, intermediate VoIP providers, etc
Implementations of Federated VoIP
- Unlike email, Federated VoIP (both SIP and Jabber) participants typically refuse non-TLS connections. In other words, using TLS is mandatory
- Fortunately, both SIP and Jabber use the same type of certificates for Federated VoIP, so only one certificate is needed
- Virtually all Jabber servers (for example, ejabberd) natively support the federation concept
- SIP proxies typically support federation, but TLS support varies. repro and Kamailio are the optimal ones.
- ENUM support is often an optional feature in SIP proxies, and it is not present at all in many Jabber clients
- Software PBXes (e.g. FreeSWITCH, Asterisk) are NOT SIP proxies or Jabber servers: they are typically not suitable for federated VoIP on their own. They should be used as application servers in conjunction with a dedicated SIP proxy.
Technical overview
OpenTelecoms.org has a good technical overview with diagrams
SIP proxies suitable for Federated VoIP
- repro from the reSIProcate project provides a quick and easy way to implement federated VoIP
- Kamailio provides extensive support for TLS, but it must be manually configured to work in a federated VoIP mode.
Jabber servers suitable for Federated VoIP
- ejabberd is by far the most common
Other aspects of a Federated VoIP deployment
It is highly desirable to provide all users within a Federated VoIP deployment access to a STUN/TURN server. The same STUN/TURN server will service both SIP and Jabber users:
- reTurn from the reSIProcate project
- TurnServer is another implementation of STUN/TURN
- STUN & TURN Server - is an open source STUN & TURN Server (and client library), for UNIX/Linux platforms.
Provided that all phones/softphones support Internet Connectivity Establishment (ICE), STUN and TURN relay, the TURN server will ensure that users do not experience NAT problems. ...