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).


Wednesday, February 18, 2015

test

just testing

Thursday, December 16, 2010

Agile in telecommunications environment

Have you tried applying Lean, Agile methodologies in a telco environment ?

Here is our (translated) presentation from Agile Warsaw where we outline some of the challenges, experiences and solutions we have had with Agile management in a pretty large telco project.



Have you had similar problems ? How did you approach them ?

Friday, November 5, 2010

Freeswitch performance

I was recently testing Freeswitch and the performance of mod_conference to see how many concurrent channels it can handle. Take a look at the results.

The test environment was an Intel quad core machine with 8 GB and FreeSWITCH Version 1.0 installed. The load was generated by SIPP running on a different machine.

On this standard server, and just a little bit of tweaking, with 2000 calls in 50 different conference rooms with each conference being recorded to a file - the call quality was still ok and cpu was 50% idle.

Here are the SIPP result screens





Each call lasted about 4 and a half minutes with more or less 10% of that time prerecorded alaw sound was streamed by SIPP at different intervals throughout the call. 2002 calls were connected at peak, with 2000 generted by SIPP and 2 calls were placed manually to test the call quality.

I would say the results are quite impressive, what do you think ?

Saturday, October 23, 2010

End of Cash?

An excellent blog post by Tomi Ahonen. This is the first of a series on evolution of money from physical to electronic to mobile.

Interesting and informative article covering subjects like history of money, cheques, credit cards, mobile money, virtual money and various examples of mobile money initiatives around the world including how they approach the issue in South Korea.

Go ahead and read the article http://communities-dominate.blogs.com/brands/2010/10/end-of-cash-first-blog-in-a-series-examining-the-pending-doom-of-minted-coins-and-printed-banknotes.html.

Asterisk 1.8.0 released

Asterisk 1.8.0 was released 2 days ago. The first thing that came to my mind when I saw the main feature list was that it is catching up on Freeswitch.

As on http://www.asterisk.org/node/51454, the main features include

Secure RTP
IPv6 Support in the SIP channel driver
Connected Party Identification Support
Calendaring Integration
A new call logging system, Channel Event Logging (CEL)
Distributed Device State using Jabber/XMPP PubSub
Call Completion Supplementary Services support
Advice of Charge support

The complete list of new features can be found on http://svn.digium.com/view/asterisk/branches/1.8/CHANGES?view=markup (supposibly, because I can't open the link)

The full changelog is here http://downloads.asterisk.org/pub/telephony/asterisk/ChangeLog-1.8.0

Tuesday, August 10, 2010

really cool demo by Twilio

Twilio steals the show at New York Tech Meetup with this live demo.

You usually tend to think twice, or more before giving a live demo because that's when it hurts when things go wrong - and that's when they usually do.

Check out the demo by Twilio developer to large tech audience.

Watch live streaming video from nytechmeetup at livestream.com

Sunday, May 23, 2010

Scrap..


Five years back when Gadu-Gadu was just a few guys and us - we had to buy, install and mount the servers in the racks by ourselves. Now they're just scrap.







Today it's all virtualized. And it's a little easier to get your service running. You submit a ticket and your servers are up and ready the next day ..or two.

Thursday, May 20, 2010

GaduAIR



GaduAIR's birthday cake. The MVNO network is one year old ..this was 2 days ago.

Friday, April 30, 2010

Recommended Watching

This is a video of Eric Schmidt's keynote @ Abu Dhabi Media Summit. Overview of where technology, media and the mobile internet is currently going - highly recommended ...well, at least in my opinion.

Friday, April 9, 2010

Google App Engine/Java + GWT + Eclipse Plug-in + some goodies = neat development environment for application prototyping

For past weeks I was looking for the complete solution/environment/framework to build a prototype/prove of concept for customer facing web apps projects that could be "easily" converted to production system if needed. .... think I have found one candidate ... at least for now to give it a try :) Will share some experience which I have learned.

Some of my requirements for the overall solution were:
  • Open Source
  • Rich Internet Application Framework
  • Build in Java
  • Flexible and powerful
  • Following good practices and design patterns
  • Full-featured development environment
  • Easy Deployments
  • Scalable and Redundant back-end
  • None to low maintenance cost
  • Cost efficient hosting -free or pay as you grow

After spending some time on research and evaluating several solutions I reassured my self that there is no "out of the box" perfect solution that you can use. There are always pros and cons that you have to decide what is the best for you in a given situation and learn to manage its limitations.

At the moment I have decided that the core of the solution should be build on Google App Engine/Java and Google Web Toolkit.
This goodies from the Google with Eclipse Plug-in and some additional extensions (which I will mention later) are the solid base for kind of stuff I'm aiming for.
If it happens that you never heard about it you should definitely go to:
GAE website:http://code.google.com/appengine/
GWT website: http://code.google.com/webtoolkit/
and Google IO conference: http://code.google.com/events/io/2009/sessions.htm
or just google for it ... there is plenty resources out there.

Google App Engine among its advantages has a lot of weaknesses and limitations so you need to be at least aware of them. If against all odds you consider to give a try (as I did) you should learn how to dill with it.
Google is also aware about its limitations and with the time is improving them.
If you want to find out more about GAE and its "problematic features" I recommend reading:

Because of the GAE special nature and its limitations you should follow good practises for your application design and use/build framework which will limit potential work needed to migrate to other hosting/storage solution.

I decided that i will stick with GWT no matter if my application is on GAE/J or somewhere else. This is such a cool technology that I can not imagine any other way of doing web development from now on. Its very powerful, and development experience is great.
To fully utilize its power you should follow best practices which were presented by Ray Ryan at Google I/O 2009 entitled Google Web Toolkit Architecture: Best Practices For Architecting Your GWTApp (You have to watch it)

This excellent talk laid out several best practise approaches for designing your GWT application based on the team's experiences while developing the new AdWords interface. Some of the key recommendations were:


This talk caused GWT community maelstrom and in its results few implementations of its ides were created.
For more details on that topic I recommend following reading:

And two complete frameworks that implements above (and a little bit more):

One weakness of GWT is a relatively small amount of out of the box standard widgets. Likely there is a simple solution for that. Use Ext GWT which is a Java library for building rich Internet applications with Google Web Toolkit (GWT). To give you some idea how to integrate with mvp framework see example EmployeeAdminWithGXT at http://mvp4gshowcase.appspot.com/

At the end I would like to mention quickly something about JDO and its implementation for GAE which is officially promoted way of accessing Google Data Store. Unfortunately neither JDO nor JPA (which is build on top JDO and is also partially supported) is not the best way to access it. Google data store isn't RDBMS, so it requires some special treatment. That's way JDO implementation for GAE is not perfect and it is causing developers live harder by making staff more difficult that it supposed to be. That's way you should consider to use some alternatives... fortunately there are some. Google provides low level API which is used by JDO implementation any way. I don't recommend using it directly but to use frameworks like Objectify, Twig or SimpleDS that make some stuff easier and more efficient. For the comparison of this frameworks please read this great article at http://borglin.net/gwt-project/?page_id=604 (and the rest of this blog ... author had to go through the same process as i did). I have decided to use Twig

Happy coding and stay tuned

G.

Saturday, April 3, 2010

largest sip service in Poland ..is 4 years old

Gadu-Gadu's VoIP offering just recently had its 4th birthday...

It all started on 14th February 2006 when Gadu-Gadu launched its own Internet telephony service under Gadu naGłos brand. Now it's quite safe to say that Gadu-Gadu has the largest SIP based VoIP implementation in Poland. We started working for GG at the end of 2005 - it took us a few months to develop the service before kicking off in February 2006. Since then the service grew dynamically size and functional wise - receiving calls from pstn in the im client, calls between GG users, free calls to pstn daily, voicemail, integration with mvno network, and more ... :)

In 2007 Gadu-Gadu was the first carrier in Poland to launch ringback tones for pstn calls answered in the im client. Gadu-Gadu was also the first carrier to launch HD voice calling for all calls between Gdau-Gadu im users based in iSAC GIPS codec. In 2009 video calling was also launched.

The current statistics behing the service are quite impressive

- 1,5 milion active users (where active = at least 1 call in 3 months)
- more than half of the active user base also uses video calls
- 3 milion calls monthly
- 20 thousand established calls per hour during peak
- 0,5 mln voicemail boxes

Wednesday, March 3, 2010

gaducha.pl - the click to call based service !

Gaducha.pl was launched on February 24. We have actually planned to launch a web based click to call VoIP offering for few years now but there were always things to do which had higher priority and those were mostly to do with the never ending MVNO project. So after launching the MVNO service last year and after things settled down - we've decided to dust off the idea again.



The service is very straight forward to use. On the web page you enter two telephone numbers - yours and the person you are calling, click call and that's it! You can also trigger a phone call by sending a premium sms - we call you back and connect you to the number in the sms message. It makes VoIP more user friendly - without the need of microphones, headsets or tieing the user to the pc.

The service is quite revolutionary when it comes to charging - a flat fee is charged per call, with very low rates. Basically it is assumed that statistically not every call will be max duration.

Great work by the GG VoIP team!

Sunday, October 25, 2009

ajdmserver - Asterisk Java Fast Agi OSGi dynamic module

Embed Asterisk-Java FastAgi server into SpringSource dmServer

Main benfits of using ajdmserver:

* hot deploy of scripts without stopping or restarting server
* www administration panel ((server starting/stoping, deploying scripts, listing servers, statistics)
* no changes in way of creating scripts- just implement AgiScript interface
* access to OSGi services inside your applications
* multiple agi servers in one application
* easy access to all advantages of Spring framework (IoC, JDBC Spring Abstraction Layer, J2EE resources access and much more...)

check out the project (developed and mantained by my colleague) at google code

Sunday, October 18, 2009

SIP applications ...in PHP

With basic SIP knowledge and a few lines of code any PHP developer can develop SIP applications. PHP-SIP is a PHP implementation of a SIP UA that allows to implement things like click-to-call, message waiting indications or SIMPLE based instant messages.

On Level 7 Systems' blog they show how to implement click-to-call functionality
triggered from a web page - in a relatively simple PHP script.


$api = new PhpSIP();

$api->setDebug(true);

$api->addHeader('Subject: click2call');
$api->setMethod('INVITE');
$api->setFrom('sip:c2c@'.$api->getSrcIp());
$api->setUri($from);

$res = $api->send();

if ($res == 200)
{
$api->setMethod('REFER');
$api->addHeader('Refer-to: '.$to);
$api->addHeader('Referred-By: sip:c2c@'.$api->getSrcIp());
$api->send();

$api->setMethod('BYE');
$api->send();

$api->listen('NOTIFY');
$api->reply(481,'Call Leg/Transaction Does Not Exist');
}



Check it out the full application here:
Click to Call with PHP-SIP

more on google wave

some interresting things I have come across related to what google wave might bring us.

Pulp Fiction quotes wave
cool video with quotes form Pulp Fiction showing the different functionalities and mashups that are possbile within a wave. I think this basically shows what wave is all about.



Voice collaboration in Waves ..by Ribbit
Two voice gadgets are brought to wave by combining the Ribbit REST API and Wave API. Ribbit conference gadget allows for wave participants to join a real time conference call. And Ribbit mesage gadget allows session members to leave each other offline voice messages. The gadget displays the transcription of the message while the actual recording is attached as an mp3.

Conversation Streams in Google Wave
Powered by Ribbit


Ribbit brings voice collaboration to Google Wave

Asterisk and Google Wave
10 possible ideas on how to integrate google wave sessions with asterisk functionalities

Asterisk and Google Wave: 10 ideas

Sunday, September 13, 2009

open source stuff

Facebook released as an open source tool the web framework that powers the functionality of FriendFeed. This is part of Facebook's open source initiative. The Framework called Tornado Web Server is written in Python and was designed to handle large amounts of traffic and thousands of simultaneous connections.

Tornado Web Server

Facebook Tornado: FriendFeed’s Real-Time Web Framework Goes Open Source

google voice

some google voice links that I've recently stumbled upon

good stuff:

Gmail Lets You Check Your Google Voice Messages

Google Voice steps on carriers' SMS turf

and this is quite funny about google voice auto-transcribed messages:

Google Voice Creeps Me Out On My Mother’s Birthday

Thursday, August 20, 2009

35 Great free Asterisk applications

-Flash Operator Panel
-PHP AGI
-Web Meetme
...and lots lots more.

Check out the link:
http://www.venturevoip.com/news.php?rssid=2184

Great stuff!