The Session Initiation Protocol (SIP) provides the backbone for modern Voice over IP networks. Initially proposed for standardization by the Internet Engineering Task Force (IETF) as RFC 2543 in 1999, it was subsequently obsoleted by RFC 3261 and updated by other RFCs.
Popularity of SIP
While the competing H.323 VoIP protocol was standardized by the ITU in 1996 and gained early dominance, SIP quickly gained popularity and eventually surpassed it. Much of this popularity can be attributed to the relative ease of implementing a SIP stack compared to H.323. While H.323 is a binary protocol (it is very similar to Q.931, the basis of ISDN), SIP is implemented in plain text and is conceptually very similar to HTTP. Not only does this make implementation simpler, it eases troubleshooting.
Another factor in SIP’s popularity is its relatively terse call setup messaging. In the ideal case, only three messages are required to set up a SIP call. While the process in H.323 has been greatly streamlined by protocol extensions such as H.245 tunneling and fast start, early implementations required separate messaging and connections for call setup and media negotiation.
SIP’s call setup times are further decreased by its use of the User Datagram Protocol (UDP) as its default transport protocol. UDP is connectionless, meaning no handshake is required to establish a transport connection. Instead, SIP defines a message retry algorithm to facilitate reliable message delivery. This results in fewer packets being transferred. While SIP can utilize the Transport Control Protocol (TCP), it is only required when encrypting messaging using TLS (known as secure SIP, or SIPS).
Components of a SIP Solution
SIP is a peer-to-peer protocol; while the concepts of clients and servers exist, they are not defined by the protocol itself. Instead, each endpoint in a SIP dialog is User Agent (UA); in the context of a dialog, the initiating UA is the client, or User Agent Client (UAC) and the receiving UA is the User Agent Server (UAS). While the protocol itself doesn’t strictly define a client and server, SIP applications do. For example, a SIP phone acts as a client, and a software PBX acts as a server.
There are several distinct components or functions which can be implemented in SIP:
- SIP Registrar – A registrar is a SIP function which allows endpoints to register they addresses; it maintains a list of registered endpoints which can be queried later to determine their locations.
- SIP Proxy – A proxy is a SIP function which is used as a central contact point to which endpoints send calls. The proxy refers to a database of contacts, usually maintained by a registrar, to determine where to route the call.
- Session Border Controller (SBC) – An SBC is an optional component in a SIP solution. It offers typically offers additional routing functions, protocol normalization, and security. Inventive Labs Border Elements is an example of a featureful SBC.
- SIP Endpoints – These are clients, such as VoIP phones. They are typically configured to register with a registrar and send call requests to the proxy.
Multiple functions are usually combined to compose a complete solution. For example, a VoIP phone system would comprise a SIP registrar, proxy, and voice-mail server. The solution may be front-ended by a Session Border Controller to provide addition routing functions and security.
Voice Elements Platform
The Voice Elements Platform is a complete SIP stack implementation along with other important media processing capabilities. Inventive Labs has developed this code from the ground up and thus we have complete control of the packets that go in and out of our system. Should there be some incompatibilities with other SIP implementations, we have control down to the packet level to fix any in compatibilities even though we are compliant with the RFC’s and the other party is not. We can fix rather than finger point.
The Voice Elements platform can be used to create custom applications based on SIP. For example, one could develop custom call center or predictive dialing solutions. Or, one could build a complete, custom VoIP phone system or even software-based SIP phones.