SIP proxy server Linux
This short guide is for our more technical readers who would like to understand more about the different classes of sip server that are found in VoIP networks today. There are many different types of SIP server and often the actual products we find in use do overlap with other roles and have features from more than one type of server. However, for the purposes of this tutorial, we shall deal with each type of SIP server as a distinct entity.
A SIP Server is not the same thing as a User Agent Server
Before we get started, there's one problem that always seems to trip up people new to the SIP stack and I want to clear this up first. Beginners often conflate a SIP Proxy Server with a User Agent Server. It can take a while to get this idea, but in every SIP communication there is a Request and a Response. The User Agent making the request is called the User Agent Client and the User Agent receiving the request is called the User Agent Server. This happens in every SIP communication, even between two SIP Proxies, and has nothing to do with whether they are a SIP phone, a SIP Proxy, a B2BUA or any other kind of SIP device on a network. The diagram below will hopefully make this a bit clearer.Diagram of the request-response cycle between a UAC and UAS
What can be seen here is SIP Proxy Server A forwarding a packet on to SIP Proxy Server B. Despite both of the entities in this diagram being SIP Servers, for this particular transaction Proxy A is in the role of User Agent Client (it is forwarding a request) and Proxy B is in the role of User Agent Server (it is forwarding on a response).
The SIP Proxy Server
If you have read about SIP servers at all, then you are bound to have come across the term "SIP Proxy". So what does a SIP Proxy do?
The basic function of a SIP Proxy Server is to receive requests from User Agents and other SIP Proxies and to forward them on to the correct destination. The proxy server may also perform a range of other useful functions as part of a SIP network, such as modifying headers to improve things like routing and security or to aid onward billing processes. However it's important to note that a SIP Proxy Server does not handle any media streams itself and does not inspect message bodies - it's concerned purely with a SIP packet's headers, as defined in RFC3261.
What are the different types of SIP proxy?
The main classification of SIP proxy servers is between stateless and stateful SIP proxies, but what is the difference between stateful and stateless proxy? We'll present a couple of definitions below.
A stateless proxy is the most basic type of proxy. It knows nothing about the overall state of a call and just processes each individual SIP packet in isolation. After any rules have been applied and the packet has been forwarded on or replied to, then no state is retained. Despite this making stateless proxies less versatile than stateful proxies (which we'll come to next) they are very fast and can process large volumes of traffic with minimal overhead.
Transaction stateful proxy
By contrast a stateful pro￼xy does store and maintain state. The most common type of stateful proxy is the transaction stateful proxy. It does hold the state about each transaction but only for the pending request. Since it is not limiting itself to processing only one isolated packet at a time, it is able to implement features such as retransmission of packets that time out or more advanced routing plans such as call forking.