Friday, February 20, 2015

SIP Servlets proxy performance vs Kamailio


So how do SIP Servlets based proxies compare to each other and how do they compare to Kamailio ?

I had a project recently in which I needed to verify how different (free) SIP Proxies compare to each other performance wise, and was a little bit surprised to find out that there is very little information out there on the Internet. I decided to test out a few..

What I tested was three different SIP Servlets implementations and Kamailio.

My test setup...

The machine on which I run the tests was a Ubuntu 12 running on a Parallels (Mac) virtual machine with 2 i5 2.60HGHz cores and 3GB of RAM.

SIP Proxies:
  • Mobicents SIP Servlets ver. 3.0.564
  • Sailfin ver. 1.5 (9.1.1)
  • Cipango ver. 2.0.0
  • Kamailio ver. 4.2.2
The tests were run with SIPP client against a SIPP server.

The SIP Servlets code I used was very straight forward (taken from Cipango's load test app):
...
   Proxy proxy = req.getProxy();
   proxy.setRecordRoute(true);
   proxy.setSupervised(true);
   proxy.proxyTo(req.getRequestURI());
...

Kamailio configuration was taken from the example that comes with the distribution. The only difference was that I have disabled accounting.

Testing was done with SIPP as UAC and UAS. The scenario was:
INVITE >
100 <
180 <
200 < 
BYE > 
200 <

Results...

Sailfin



Mobicents



Cipango



Kamailio


This is what htop shows with 2500 CPS SIP traffic on Kamailio.


Amongst the SIP Servlets in my setup the worst performance was with Sailfin, the best with Cipango. Mobicents was somewhere in the middle.

And as expected Kamailio outperformed SIP Servlets as a Proxy. I could probably get higher results with Kamailio with assigning more shared memory for the server (it run with 512 MB).


4 comments:

Unknown said...

Hi There

Could you tell me how you measure the performance based on the results?

dmielnik said...

Hi, calls per second rate (with no sip errors).

Unknown said...

What about the JVM heap size?

Unknown said...

I also have one more question:
you mean that kamailio did continue responding or it also crashed with that much CPS. As I realized, you are telling that for example Mobicents SIP Servlet container crashed with that much load while still there were resources(CPU, Memory)? Am I correct?