Thursday, March 24, 2011

Mobicents SMPP 1.1.0.CR1 Released!

Here comes the new release of Mobicents SMPP 1.1.0.CR1!

The Mobicents SMPP stack is implementation of SMPP Version 5.0 Specifications.

This is follow up release of Mobicents 1.0.0.FINAL with following two minor fixes

Mobicents SMPP Home Page:
http://www.mobicents.org/incubator/smpp/intro.html

Where to download from?
-----------------------
The distribution can be found on SourceForge.net.
https://sourceforge.net/projects/mobicents/files/Mobicents%20SMPP/1.1.0.CR1/


Source repositories:
-------------------
SVN checkout
https://mobicents.googlecode.com/svn/trunk/protocols/smpp

SVN Browsing
http://code.google.com/p/mobicents/source/browse/#svn%2Ftrunk%2Fprotocols%2Fsmpp

Looking forward to your feedback:
---------------------------------
mobicents-public@googlegroups.com


Thanks,
Mobicents Team.

Friday, October 8, 2010

Mobicents Face-2-Face meet Antalya Sept 2010

I have to start with big thanks to Eduardo for such a wonderful arrangement and choosing best location Antalya, Turkey! But still nothing beats Mobicents meet at Varna in 2007 :P

This was first ever Mobicents meeting where not only all team members were present but also accompanied by customers, community users and partners. What works better than having direct feedback from customers?

The meeting started with fun day where entire team went for white water rafting

The Chikens Team! As name given by Rafting Lead Suleman :)


Ok I will leave the fun part for end, lets talk about agenda

We have shared all the presentation here

Meetinig room with Ghost man Oleg presenting

Mobicents Media Server

The media server made a very good progress with its 2.x.y releases. Media is a very different beast where predictability matters more than the speed.

To achieve predictability we had to give away multi threading model too! The context switching consumed enough time to distort the quality of media. Even the MGCP Stack was modified to reduce number of threads used, switch to NIO and achieve highest performance ever such that controlling media server via MGCP doesn't hinder the media processing. We give away completely on Java Timers and wrote our own Scheduler from scratch to achieve precision of upto 1ms! The result was best performing media server ever with approx 300 concurrent bidirectional calls, almost zero jitter on simple hardware with 2GB RAM and Dual Core!!

The team made a very good progress from releasing first version 2.0.0.CR1 in March 2010 to 2.0.0.Final release in Aug 2010. However not everything we did in last 5 months went to stable quality. The RTSP support added in 2.0.0.Beta3 was revoked in 2.0.0.CR1 release as it was not correctly designed. Also we added the support for MBROAL TTS Speeches, however the TTS in general is still not very good quality.

Going ahead we will continue newer releases on 2.x.y version with more and more stability and better performance for everything related to Audio.

However for video the work has already begun on trunk which will be 3.x.y releases.

Download Mobicents Media Server presentation here

Mobicents Media Server - SS7

There is very good progress made on SS7 stack in last few months. The MTP layers are almost stable now and capable of handling multiple links. However we have reworked SCCP layer (should be available in next release) and instead of SCCP available as stack, will be deployed as service on JBoss AS. The higher layers can access SCCP via JNDI look-up.

Also the M3UA is re-designed and now uses the UDP behaving as SCTP instead of TCP as designed initially. But we sucked majorly on the several release dates and various release were behind the original deadlines. Nothing is perfect ;)

The roadmap is to stabilize existing layers MTP, SCCP, TACP, ISUP and MAP. Complete the ISUP RA and test with DS0 endpoint in Mobicents Media Server.
Also try to implement SMPP and HTTP layer's for USSD Gateway Application and make it stable quality.

Download Mobicents Media Server SS7 presentation here

The every day in Mobicents face-to-face meet ends with party at night.

Fun part

Team playing pool's



//TODO : Will add more once Bartek shares the snaps :P

Friday, September 17, 2010

Log4j observation and best practice

Just today I realized that setting the Threshold value for logging level at appender has no effect on checking if lower levels are enabled for particular category.

For example consider the log4j.xml config file as shown below

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="INFO" />

<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
</layout>
</appender>

<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<!-- ADD HOME VAR HERE? -->
<param name="File" value="../log/server.log" />
<param name="Append" value="false" />
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<!--
The default pattern: Date Priority [Category] (Thread) Message\n
-->
<param name="ConversionPattern" value="%d %-5p [%c{1}] (%t) %m%n" />

<!--
The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x)
%m%n"/>
-->
</layout>
</appender>

<category name="org.mobicents.media.server">
<priority value="INFO"/>
</category>
<category name="org.mobicents.media.server.impl.rtp">
<priority value="TRACE"/>
</category>

<root>
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>

</log4j:configuration>



And in org.mobicents.media.server.impl.rtp.JitterBuffer class I have a check

if (logger.isTraceEnabled()) {
logger.trace("Receive " + packet);
}


What would you expect the 'isTraceEnabled()' to return? false? I too assumed same. But I was wrong. It returns true. So log4j will still create StringBuffer and appends objects to it to create the log statement and call .toString() on StringBuffer only to realize the appender has Threshold logging level higher than TRACE and it will drop this log message :(


So setting Threshold value only doesn't help in production environment. Make sure that you change logging level of individual Category too.

Sunday, September 12, 2010

Mobicents Face-2-Face 2010 at Antalya, Turkey from 24th Sept to 30th Sept

Its time of the year when Mobicents developer from across the world meet at one common place and brain storm on road-map for next year, achievement of past year, experiences, prospects etc. The annual Mobicents Face-2-Face was only for team members till now, but like true Open Source Spirit we have opened this meeting to all users, partners, or even non-users who wants to participate and get the understanding of Mobicents Project and how core team functions. We already have three partners visiting this meeting for this year.

However its not as boring as it sounds. Every evening after hectic day the team visits the best and lively attraction of the city and freaks out, sometimes till next day morning! Don't believe me? Look at blogs and picture from last year meeting http://groups.google.com/group/mobicents-public/web/mobicents-dev-team-meeting---brno-august-2009

The meet is happening at Antalya, Turkey from 24th Sept 2010 to 30th Sept 2010. If interested in participating follow the public post http://groups.google.com/group/mobicents-public/browse_thread/thread/d59873fbdd142f96/00e654830423ad4a?lnk=raot#00e654830423ad4a

Hope to see you guys @ Antalya :)

A week at Meraka, CSIR


Last week Bartek and I had privilege to conduct Mobicents Platform training at Meraka, Council for Scientific and Industrial Research (CSIR) Institute located in city of Pretoria, South Africa. The CSIR is South Africa's central and premier scientific research and development organisation in Africa. Constituted by an Act of Parliament in 1945 as a science council, the CSIR undertakes directed and multidisciplinary research, technological innovation as well as industrial and scientific development to improve the quality of life of the country’s people.


Institute is built across beautiful campus and rich with facilities; I was amazed to see the CSIR Institute and made me remind IIT-K Campus that I visited this February.




Usually training's are too boring to conduct with flow of knowledge happening just in one direction. But this was a rare training where audience were very interactive and made Bartek/me think twice before we could really answer their queries.

Meraka has already developed couple of JSLEE Resource Adaptor's (on Mobicents 1.x.y Platform) for proprietary protocol communicating with SMSC and USSD aggregator. These RA's are used in platform called MOBI4D. The presentation explaining the MOBI4D is here http://sport.csir.co.za/view.aspx?id=2382~4p~QczxuuJq


Meraka already have several exciting projects ongoing specifically on TTS, ASR, IVR, IP Tv. It will be very exciting to see these projects go live by end of next year.

Looking forward to visit SA again soon and spend more time with this team!


Thursday, January 7, 2010

java.net.SocketException: Too many open files

There is limitation on how any open file handles (this includes sockets too) OS can support. If this limit is reached, you get above exception. If you are on ∗ nix OS, this can be easily increased.

Open /etc/security/limits.conf

I am on Ubuntu so for me I just execute following command from command line

sudo gedit /etc/security/limits.conf

and add following two lines

∗ soft nofile 3072
∗ hard nofile 3072

Save and Close the file. I don't know how to load these settings from command prompt but rebooting did the trick. To make sure these changes are done execute

ulimit -n

If you know how to do it on windows please add comment.

Thanks.