Choosing between SIP and XMPP

The IETF has documented two standards for real-time communications that are widely implemented: SIP and XMPP. XMPP is sometimes referred to as Jabber.

This has left many system administrators pondering the question: which one do I need?

Both SIP and XMPP can do all the same things. SIP can make phone calls, video calls and instant messaging (IM) sessions. XMPP can also make phone calls, video calls and IM sessions. There has been a tendency to use SIP more for voice and use XMPP more for IM.

Both have evolved into different markets. SIP is particularly well supported by telecommunications vendors (for example, companies offering trunking to or from the PSTN) and manufacturers of related hardware, such as ISDN gateways. Many larger corporate phone systems also have some kind of SIP interface. XMPP has become very prominent as a system for federated IM and many companies have deployed it for this purpose without necessarily using it for voice and video. Just as a significant number of voice related products and services use SIP, there is a significant quantity of high quality IM client software and third-party frameworks for interaction with XMPP and this has helped it remain dominant in the IM domain.

In many cases, a SIP user ID and an XMPP user ID look identical, except for the URI prefix and both can be used to reach the same physical person. For example, sip:alice@example.org and xmpp:alice@example.org both provide a means to contact the same fictitious Internet user prominent in so many of the IETF's publications.

From the user's perspective, when they see an address without a scheme prefix such as sip: or xmpp:, they have no way to know if it is useful for email, SIP or XMPP and may have to manually try it in several applications. Some users may not even realize that these different protocols exist for RTC and if the address doesn't appear to work in the first application where they try to use it, they make come to the conclusion that the address is invalid or the other person is unreachable.

The overwhelming recommendation of the author of this guide and the software described here is that to maximise your chance of communicating with as many users as possible, you should operate both SIP and XMPP servers in parallel.

Fortunately, some of the infrastructure for these servers (such as TURN servers and the X.509 certificates) can be shared by both protocols.