It’s Tringging…

Posted on October 10, 2007 
Filed Under Uncategorized

TringMe was covered by TechCrunch and we’ve been busy as ever since then :). We sincerely thank TechCrunch to review TringMe. We would also like to take this opportunity to thank all those who have given us their comments and feedback.

TringMe user base is increasing steadily since launch. We received close to 1800 signup requests on day-1 and have continued to receive hundreds of invite requests everyday thereafter. Our platform is coping up well with continuously increasing user base without any drop in Quality of Service (QoS) and that is definitely in line with our expectation since scalability was one of the core underpinnings of the design.

The platform on which we build TringMe was the core focus from the day we started. Once we nailed down on TringMe idea, we started looking for a suitable platform to create TringMe. Due to my experience in designing products in communication and VoIP domain, designing call processing termination on phone or Gtalk was not a technical challenge in itself. This more so since I had some existing software which we would quickly adapt to these needs. The key component needed was flash server (RTMP server). The key requirements were:

Basically, I was looking for a high performance flash server with minimum resource usage and optionally also offers other telecom platform features. We evaluated few servers and as expected, my runtime and performance requirements were high to be met by any of them. It is important to stress that I am not making any comparison; merely assessing the suitability of our requirements with existing solutions. Adobe FMS is an excellent and feature rich solution but at the same time huge, resource hungry (see their system requirements), and very expensive. It also has connection and bandwidth cap for most editions. Beside these, interfacing it with call processing and other software modules (written in C/C++) was not simple enough. Hence, I was doubtful in making it a suitable platform for real-time applications like TringMe. Another very good solution is Red5, but that too is resource hungry and far from TringMe’s performance and other requirements. Eventually we decided to write our own, starting from scratch, which turned out to be the right decision.

TringMe’s platform has become one of our biggest assets. It is fast, small, scalable and extremely powerful. Memory usage is at minimum. Intelligent memory and resource allocation strategies resulted in almost no dynamic memory allocation once server is fully up and the maximum resource usage is configurable. The run time memory usage is just a few KBs per connection and IMHO, extremely good from any standard. Below is output of size that can give some idea on compactness of the server

text          data          bss          dec           hex           filename
72734      7196         2020      81950      1401e        tringme

Design also focused on keeping CPU usage to minimum. The buffer copy is often the largest source of CPU utilization in protocol state machines. We carefully designed and coded to use zero-copy for most parts. With all such optimization, our flash server remains light weighted even in highly loaded conditions.

While the core part of the server is RTMP protocol state machine, lot more required to make it as a platform, for example, framework for communicating with external application and modules, emails, database, buffer and memory management etc. The most complex of all is Signal Processing Unit (SPU) & Voice Engine.

Voice engine enables TringMe to use various audio formats used in telephony (gsm, g711, ilbc, and very soon speex) and jitter correction. TringMe’s platform chooses the appropriate audio codec format for the end nodes and uses voice engine for transcoding between the formats.

SPU performs many other complex functions required to interoperate with various telephony providers. For example, with one provider we had to implement complex logic of combined Human Speech Detection, DTMF detection, Ring Detection to reliably detect if phone was picked up before delivering the voicemails. There are may more functionalities in SPU that will enable upcoming features on TringMe, off course we will hold the details for now :)

Be assured, we are adding so many features, and I am happy to see that TringMe users are continuously feeding us with suggestions & feature requests. We continue to evaluate these suggestions to better understand the needs of the community … stay tuned on TringMe.

Comments

Leave a Reply