Thursday, December 15, 2011

Monday, December 12, 2011

Annual Mobicents Conference - 2011 - Sochi, Russia

Concluded another wonderful Mobicents conference at Sochi, Russia. This time it was biggest every participation from community and customers, each presented about their projects/products and how they leveraged mobicents platform. Thanks to every one for joining and making this experience rich! A big thanks to Oleg who made immaculate arrangements!

It was sad announcement from Rob Cardwell (JBCP Product Manager, RedHat) about sunsetting JBCP. However no surprise here as it was already communicated to existing customers sometime ago.

Like after every sunset is sunrise, TeleStax is born to take care of development, support, training and consultancy around Mobicents. It will be wrong to refer TeleStax as startup, as the founders were working on Mobicents at RedHat and resigned few months ago to keep focusing on Mobicents and take it to next level.

The conference started on 5th December with introduction round and then Ivelin presenting about Transitioning Mobicents leadership from RedHat to Telestax. Below is the agenda

Note : I will keep adding link to pictures and presentation as and when they are shared from respective guys

December 5th
  • Transitioning Mobicents leadership from Red Hat to new company - Ivelin Ivanov
  • Twilio Client and Cloud Communications - Jonas Borjesson, Twilio
  • Multi Modal Video Conferencing - Nick Semergey and Alex Vinogradov, Avistar - Codeminders
  • FOSS Telco Framework for Java Developers - Jason Goecke, Voxeo Labs
  • Mobicents Diameter in MEVEO Open Source Billing - Sébastien Michéa, Manaty (Unfortunately Sebastien couldn't make for conference due to visa issues, however Jean did the presentation for them)
  • Innovation with Mobicents at MTN - Amit Bhayani
  • Unified Cloud Communications for SMBs - Silvano Girardi Jr, Inphonex
  • Cool apps for Next Gen Intelligent Networks - Vilius Panevėžys, Elitnet
  • MVNO complexities - Dmitri, Atel

December 6th and 7th was for mobicents core team to present the roadmap and future of various projects within mobicents platform

December 6th

  • RestComm - Thomas Quintana
  • From SIP Servlets to TelScale - Jean Deruelle
  • SIP Load Balancing - Vladimir Ralev
  • Container independent failover framework - Jean Deruelle
  • CDI Telco Framework and Aquilian - George Vagenas

December 7th
  • TelScale SNMP and JMX management - Jean Deruelle
  • QE achievements, infrastructure review, frameworks, roadmap, expansion to community contributed resources - Luis Barreiro
  • Media Server theory, practice, cloud considerations, design discussion, roadmap - Oleg and Julian
  • JSLEE progress and roadmap - Eduardo Martins
  • Diameter progress, popular use cases, roadmap - Alexandre Mendonca, Bartosz Baranowski
  • SS7 progress, popular use cases, roadmap - Amit Bhayani, Sergey, Bartosz

December 8th was reserved for fun parts where the team visited Sochi downtown and walked on the shore of blacksea. Conference was hosted at Katerina Hotel located in picturesque Krasnaya Polyana which is approximately 40kms from Sochi Airport. If you want to spend some time away from hustle bustle of City, this is the place! However party animals cannot survive on this lonely place ;)


Already waiting for Conference 2012

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.

Saturday, January 2, 2010

Mobicents JAIN SLEE Server 2.x unites in league of JOPR Console!

JBoss Operations Network (JOPR) is becoming the de-facto for managing suite of JBoss products and rightly so as it provides administration, monitoring, alerting, operational control and configuration in an enterprise setting with fine-grained security and an advanced extension model.

Since Mobicents Sip Servlets Server is already having JOPR agent and we have experienced how easy it becomes when it comes to management using JOPR JAIN SLEE server team also decided to venture on JOPR so all the products of Mobicents have same look and feel and can be managed from same Console.

Big thanks goes to JOPR team for answering all the queries that really saved lot of time had we tried to solve them by ourselves.

The features of Mobicents JSLEE (version 2.x.y) JOPR is in-line with Mobicents Management Console that is available with Mobicents JSLEE Server 1.x.y.

The JOPR Agent (binary) for Mobicents JSLEE will soon be available with release Mobicents JAIN SLEE Server version 2.0.0CR1. However if you are getting little impatient and want to give it a try right away, download the source code from mobicents svn and call 'mvn clean install'. You should see the agent jar at jopr-plugin/target/mobicents-slee-jopr-as-5-plugin-2.0.0-SNAPSHOT.jar
The Agent is built using the source RHQ 1.4.x trunk.

The first binary release of RHQ 1.4.0.b01 server can be downloaded from here. Follow the blog from Heiko to know more about this release.

Unzip rhq-server-1.4.0.B01.zip and start the server from 'rhq-server-1.4.0.B01/bin' using 'rhq-server.sh start'. Once server is started visit http://localhost:7080/. First time it will ask for configuring the Database and for test you can simply select the HSQLDB. To know more about installation of JOPR have a look at http://community.jboss.org/wiki/jopr-installation.

You also need to have JOPR Agent, I found one in rhq-server-1.4.0.B01/jbossas/server/default/deploy/rhq.ear/rhq-downloads/rhq-agent/rhq-enterprise-agent-1.4.0.B01.jar. Unjar it and start the Agent from 'rhq-enterprise-agent-1.4.0.B01/rhq-agent/bin' by executing 'rhq-agent.sh -l' (-l argument is only for first time to configure the agent, the subsequent starts can be done by executing command 'rhq-agent.sh'). It will ask few questions for configuring agent and has default answers for each, just press 'enter' for each.

To install the Mobicents JAIN SLEE JOPR Plugin using Jopr UI, go to AdministrationSystem ConfigurationPlugins. On the Agent Plugins tab (selected by default), on the bottom of the page, click on Add..., browse to the Jopr plugin JAR file and select it. Finally, click on the Upload button and the plugin will be deployed. Click on Scan for Updates and it should be shown in the list as "Mobicents JSLEE Server 2.x". On the Agent Console call 'Plugins Update'.

This will deploy the Plugin on Agent side and it will automatically discover your Mobicents JAIN SLEE Server 2.x.y. To add mobicents server to RHQ Server go to OverviewAuto Discovery Queue on server page and Import Mobicents JAIN SLEE Server. If you don't see an entry like 'Mobicents JAIN SLEE Server 2.x.y (:port) something went wrong and check necessary logs of server and agent.

Voilà! You have JOPR monitoring your Mobicents JAIN SLEE Server and it should look something like this



If you want to know more about how to manage JAIN SLEE Server, build the docs by calling 'mvn clean install' from /jopr-plugin/docs and browse the docs.

Enjoy the new shiny management console!

Please post queries to mobicents-public@googlegroups.com

Tuesday, December 22, 2009

IEEE paper on "Developing Converged Application using Open Source software"

The 2009 IEEE Symposium on Industrial Electronics & Applications was held at Best Western Premier Seri Pacific Hotel, Kuala Lumpur, Malaysia on 4th-6th October 2009. From RedHat/Mobicents I submitted paper on "Developing Converged Application using Open Source software" and presented the same on 5th October 2009. The paper is already registered in the IEEE Xplore database. The paper talks about leveraging the Open Source Solution in development of real time application like voice. The paper then talks in details about Mobicents Platform, components involved in Mobicents Platform and finally a converged example developed on Mobicents Platform.

Thursday, September 24, 2009

Encounter with JOPR

There is a discussion for Mobicents Media Server 2.x.y Console requirements on

  • whether it should be built using Swing that can be installed on any machine and this stand-alone instance connects with Mobicents Media Server for statistics and configuration
OR
  • use standard JOPR server that almost all Mobicents project is using as de-facto and write agent that will monitor media server.

In quest to understand what exactly is JOPR I decided to write a custom plugin for JOPR and see how it can monitor any resource's that we want.

I started with blog from Heiko and this was very useful. Thank you JOPR guys for such a niece blog! After reading all 5 Part's I decided to give it a try.

Started with SVN check-out of JOPR from http://svn.rhq-project.org/repos/rhq/trunk to my local directory /jopr/src/

Since JOPR is also using maven, building JOPR was not nightmare. However JOPR by default requires the access to Postgres database and it wasn't easy for me to install Postgres and get it running :( I wish JOPR uses in-memory HSQLDB initially and latter on give an option to go for Postgres, Oracle, My-Sql or any DB that user may want to use in production. This will make the development very fast.

The wiki explaining the build of JOPR is given at http://support.rhq-project.org/display/RHQ/Building+RHQ

Once you have JOPR built and installed and have Postgres up and running, you need to develop a custom plugin as explained in Part3 of blog.

Assuming that custom plugin is built and ready, next step is start the server

  1. cd to /jopr/src/trunk/modules/enterprise/server/container/target/rhq-server-1.3.0-SNAPSHOT/bin and call ./rhq-server.sh start
  2. Go to http://localhost:7080/ to see the JOPR console. Login as user rhqadmin and password rhqadmin
  3. Still we haven't started the Agent. So next cd to /jopr/src/trunk/modules/enterprise/agent/target/rhq-agent/bin and ./rhq-agent.sh -l. This will configure the Agent and ask few simple questions. For almost all of them the default answers are rigtht. Bellow is from my comandline showing what reply I provided


    RHQ 1.3.0-SNAPSHOT [4925] (Thu Aug 20 13:44:46 GMT+05:30 2009)
    Answer the following questions to setup this RHQ Agent instance.
    - After each prompt, a default value will appear in square brackets.
    If you press the ENTER key without providing any value,
    the new preference value will be set to that default value.
    - If you wish to rely on the system internal default value and
    not define any preference value, enter '!*'.
    - If you wish to stop before finishing all the questions but still
    retain those preferences you already set, enter '!+'.
    - If you wish to cancel before finishing all the questions and revert
    all preferences back to their original values, enter '!-'.
    - If you need help for a particular preference, enter '!?'.

    Agent Name [localhost] : postgres_agent
    Agent Hostname or IP Address [!*] :
    Agent Port [16163] :
    RHQ Server Hostname or IP Address [127.0.0.1] :
    RHQ Server Port [7080] :
    The setup has been completed for the preferences at node [/rhq-agent/default].



    Next from client CLI I executed command 'plugins' just to refresh the plugins from server.

  4. Now go to http://localhost:7080/ Click on Dashboard - Auto-Discovery and you should see entry of the 'postgres_agent' agent. Import this Agent and now all the statistics including the custom plugin that we developed will be available to JOPR Server and we can monitor the stats. Below is the Screen shot showing the Response Time metrics exposed by our custom plugin.


So far so good. The conclusion is Agent needs to be installed on Mobicents Media Server that we need to monitor and Agent communicate to server Via JBoss Remoting. I am still learning what is the communication protocol and what is the load on client machine where Agent is installed due to agent activity. Remember Mobicents Media Server cannot take any heavy load else Jitter will kill all the performance.

Its now clear that we can expose the statistics using JOPR. Next I want to write a Agent that talks to MMS via MGCP protocol to avoid installing Agent at MMS side and expose some real statistics. Also one of the requirements of MMS Console is configuring the media-path at run-time with easy drag-and-drop feature from console. I still don't know if this is possible via JOPR Agent? And if yes can it be remote or needs to be in same JVM as Mobicents Media Server?

May be I will ask the JOPR experts to help me out with this dilemma.


Till then enjoy the JOPR :)

Friday, September 4, 2009

Mobicents Annual Meet at Brno Czech Republic - August 24 - 29, 2009

Last week Mobicents core team met at Brno, Czech Republic to discuss the achievements and road-map of Mobicents platform. Some brain storming between all the projects and some learning and party at the end of the day is something that is equally important :)

This time too it was as exciting as last year. This was third time Mobicents core team met, and each one of us did presentations of the project we are working on. The agenda of the meet was:

  • Overview of project status, partner ecosystem and market opportunities; internal training for pre-sales and consulting teams.
  • Productization achievements in 2009 and current challenges. Comparison with JBoss EAP and SOA productization. Goals and milestones for 2009-2010.
  • Documentation, achievements in 2009. Current process, challenges and goals
  • QE: achievements in 2009, current QE lab setup, automated test harness, outstanding challenges, what to expect in 2009-2010
  • MSS achievements, challenges and roadmap
  • IPBX Demo, STF, Ruby API
  • MMS achievements, challenges and roadmap, what to expect in 2009-2010
  • Diameter achievements, challenges and roadmap, what to expect in 2009-2010
  • Mobicents JSLEE 2.x.y achievements, challenges and roadmap, what to expect in 2009-2010
  • Presence Services achievements, challenges and roadmap, what to expect in 2009-2010
  • 3G and IMS
  • MMS - SS7 review, use cases, implementation strategies
  • HA status, implementation roadmap alternatives, cross-server strategy

The major achievements of the past year is Mobicents Media Server, Mobicents Sip Servlet Server, Mobicents JAIN SLEE Server and Mobicents Diameter all went GA! Mobicents JAIN SLEE Server is already JAIN SLEE 1.1 compliant.

This couldn't have been possible without the continuous support of the community. For all the discussions, presentation and blogs from other team members please visit Mobicents Brno page.

I did two presentations on MMS 2.x.y architecture and role of MMS in SS7 world.

MMS 2.x.y architecture makes it one of the most flexible and the only OpenSource media server available as of today built on top of JBoss Microcontainer.
For SS7 support, Zaptel compatible SS7 cards will be installed on MMS and MMS core will take care of media circuit. For signaling the lower level parsing of MTP2 and MTP3 will be done by MMS and then depending on the protocol the message will be forwarded to corresponding stack wrapped by JAIN SLEE resource adaptor for handling the signaling and business logic in SBBs. Going forward we will have complete SS7 support like ISUP, SCCP, TCAP, MAP, etc. This will bridge the gap between legacy and next generation applications.

We marked day end by team dinner at some real good restaurant's and visiting pub's. Also enjoyed playing soccer at Public Garden and Go-Karting on one of the evenings.


The Team from Left to Right : Jean, Ivelin, Amit, Luis, Bartek, Vladimir, Alex and Eduardo. Our host Pavel is missing.

RedHat, Brno office has great infrastructure and they also have Wii Game Console. Bartek killed me 'n' number of times while playing 'James Bond: Quantum of Solace'. "I will get back with vengeance Bartek"

The beer of Brno is worth mentioning, they have different varieties of beer and we didn't leave a single chance to savour it ;)

From left to right Vladimir, Alex and Eduardo

Thats me and Vladimir

Extreme right is Pavel. A big thanks to Pavel for arranging everything :) The team walking on a mission after beer.

The mystery man Oleg couldn't make this time either :( I hope one day will come when GOD's are happy and we will get blessing to meet Oleg face-to-face. Other members missing from team are Vicky and Jared.

Sunday, August 16, 2009

JBoss World 2009 - Chicago September 1-4, 2009

Its time of year when JBoss World 2009 event will rock the stage! This time JBoss World and RedHat summit are hosted together. From Mobicents perspective, there are two sessions happening

First is "Rapid VoIP development - SIP Servlets 1.1, Seam Telco Framework, JRuby on Rails, Eclipse VoIP tooling" that will talk about the framework/tools developed by Mobicents that can facilitate the faster and better development of Converged Application. This seminar will be very productive for developers who wants to dive in VoIP world and also for vetrans who already knows the details.

Next is "Writing Telco 2.0 applications with JBoss Communications Platform based on Mobicents" which will focus on all available pieces of JBoss Communications Platform like JBCP JSLEE Server, JBCP Sip Servlets Server, JBCP Media Server, JBCP Presence Server, JBCP Diameter Server. For a Business decision makers who are planing to embark on "Converged Application" business, this could give a very good overview of what all pieces you need to make a comprehensive converged application. This will also be good for developers as it will give over all picture of JBCP components and how they fit with each other.


If you haven't yet registered, now is the time!

For people who attended the Mobicents presentation last year will be amazed by how much we progressed in just 1.5 years!

Enjoy the sessions and do let us know your feedback.


Cheers

Tuesday, April 28, 2009

Sangoma & Asterisk + SS7

This is in continuation to my earlier blog on Asterisk + SS7

Here I will jot down my experience on installing wanpipe drivers for new Sangoma A102 card. I bought this card for approximately 60000 INR which is approximately 1350 USD. Just FYI, if any of you guys planing to buy, not sure if its expensive?. I started with downloading Wanpipe drivers and downloaded the most recent 3.3.16 Beta version from http://wiki.sangoma.com/wanpipe-linux-drivers#beta.

Untar this to /usr/src directory

From /usr/src/wanpipe call 'sudo ./Setup dahdi' This will ask you few questions like where is your dahdi installation (point to directory of dahdi). If you have installed dahdi at default location it will automatically give you an option to select that. You will find info at wiki http://wiki.sangoma.com/wanpipe-linux-asterisk-dahdi. I really was looking for way to update this wiki with all the questions that I faced while installing and answers I provided, but unfortunately I didn't find a way to edit the wiki. Though there is an option to leave comment but didn't like that :( Sangoma people can you please make this more dynamic?

Once the compilation of drivers is successful, the Setup will ask you to configure the Channels. This is interesting part and one that kept failing at my end with error message

"No Sangoma voice compatible cards found/configured"

I was having hardware and could see the lights glowing so definitely there was no problem with hardware or PCI slot. I tried executing the command 'sudo wanrouter hwprobe' and would always get

wanrouter: Wanpipe Module: /lib/modules/2.6.24-23-generic/kernel/drivers/net/wan/sdladrv not found !!!!
WANPIPE drivers must be compiled as modules
Check kernel configuration in /usr/src/linux/.config:
CONFIG_WAN_ROUTER=m
CONFIG_VENDOR_SANGOMA=m


I had to ping Sangoma support for this. You can find contact details for support at http://wiki.sangoma.com/SangomaTechSupport

Marc from Sangoma was really quick on this one to help me out. Thanks you Marc Celsie! As per support I had to edit /lib/modules/2.6.24-23-generic/build/Makefile and remove line "EXTRAVERSION = .6". Then change "SUBLEVEL = 24" to "SUBLEVEL = 24-23-generic". After this I had to re-execute the command 'sudo ./Setup dahdi' and it worked like a charm. I set-up the E1 lines and could see 62 channels getting created at /dev/dahdi/1 ... /dev/dahdi/62. The LED at both the port (A-102 has two ports) is now Red which means the drivers installation is good but there is no traffic.

I created a loop-back as shown in this image http://www.t1installers.com/wp-includes/images/loopback/clip_image002.jpg

Pin-outs for the loopback cable:
1<->4
2<->5

And inserted in one of the ports and LED turns Green!

Execute 'ifconfig' command number of times and you will see the tx and rx value increasing for port where you have loopback wire plugged. This is proof that everything is good so far.

After this comes the configuration files for Asterisk to talk to your hardware. I am doing this as of now and will post soon in my next blog.

Stay Tunned!

Sunday, April 26, 2009

Asterisk + SS7

From last few days I am trying to set up Asterisk + SS7 with Sangoma A102 card on my Ubuntu 8.04 machine. This being my first time with Asterisk I was bit skeptical of things and was wondering if it will be smooth? Well, it wasn't really out-of-box, but it wasn't tough either. Here I will try to explain step-by-step of what I did, challenges I faced and solution for same.

First of all keep in mind that Zaptel module is now renamed to Dahdi. It really took some time for me to understand this and I was wondering if I need Zaptel or Dahdi. This might be very trivial for people who are into Asterisk, but for some one like me who has just started, especially after reading 'Asterisk - The future of Telephony' book where they always talk about Zaptel, it wasn't easy to make out that Dahdi is latest version of Zaptel. Follow the announcement here http://blogs.digium.com/2008/05/19/zaptel-project-being-renamed-to-dahdi/

To have Asterisk + SS7 you need following modules

  1. LibSS7
  2. Dahdi
  3. Asterisk

Even before you start on installation of these modules, there are few linux specific modules that needs to be installed in your machine.

#sudo apt-get install build-essential
#sudo apt-get install linux-headers-`uname -r`
#sudo apt-get install libssl-dev
#sudo apt-get install ncurses-dev
#sudo apt-get install libnewt-dev
#sudo apt-get install zlib1g-dev
#sudo apt-get install bison

In addition I also followed the packages explained in book 'Asterisk - The future of Telephony'. look at Table 3.1


LibSS7
Next download the source code for libss7 (this is still not available as binary). Remember you need to download the Branch 1.0 and *not* Trunk. Follow the forum entry http://archives.free.net.ph/message/20090331.150153.564445b6.en.html

Check out src code to your /usr/src svn co http://svn.digium.com/svn/libss7/branches/1.0/

Next call 'make' and then 'sudo make install'. Thats it! libss7 is installed.

Dahdi
Check out dahdi linux trunk src (there is also dahdi-tools) to /usr/src

svn co http://svn.digium.com/svn/dahdi/linux/trunk/

I renamed /usr/src/trunk to /usr/src/dahdi-trunk. But really it doesn't matter. Go to this dir and call 'make' and 'sudo make install' and your dahdi is installed

Dahdi Tools
Check out dahdi-tools trunk src to /usr/src

svn co http://svn.digium.com/svn/dahdi/tools/trunk/

Go to this dir call './configure' and 'make menuselect'. This will open up UI where you can select modules that you want. I just called 'Save & Exit'. Next call 'make' and 'sudo make install' This will install the dahdi tools for you.


Asterisk
Download the Asterisk 1.6.0.9 from http://downloads.digium.com/pub/asterisk/asterisk-1.6.0.9.tar.gz to /usr/src. Un-tar it and go to parent dir. Call './configure' You should see in console output that libss7 is selected. Call 'make menuselect'. In this under 'Channel Drivers' header you should see 'chan_dahdi' selected (* against it) This means libss7 is good! Just call 'Save & Exit'. Next execute 'make' command and then 'sudo make install'. If everything is good, Asterisk is installed for you!

So far we just talked about Asterisk side of the world. But for Asterisk to talk to your Sangoma Hardware you need to install the wanpipe drivers. I downloaded the beta version from Sangoma site and trying it out now. Will blog about Sangoma experience in next blog!


I also tried chan_ss7 instead of Asterisk libSS7 for Asterisk support of SS7, but realized chan_ss7 is not compatible with Asterisk 1.6.x.

Found a very good article on this and worth reading http://www.cesnet.cz/doc/techzpravy/2006/asterisk-ss7/asterisk-ss7.pdf


Stay Tunned!

Saturday, March 21, 2009

Project ideas for Google Summer of Code 2009

Its that time of the year when students across the globe gets an opportunity to participate in Google Summer of Code and get paid for executing the project that they always wanted to. This year too RedHat/JBoss has participated and has been accepted as Mentoring Organization.

Follow the RedHat page for GSoC 2009 here

There are many ideas that have been listed by JBoss here

The Mobicents Media Server team too has identified following Project Ideas where we are ready to mentor the students

Project Ideas
  • Add Support for RTCP protocols to Mobicents Media Server
  • Support for SRTP protocol to Mobicents Media Server
  • The Automatic Speech Recognition engine to Mobicents Media Server. You can look at Sphinx-4 project which is open source
In addition the VoIP PBX project from Mobicents Sip Servlets listed on same page too is of interest to us. It uses Media Server for all of its media processing.

However these are not the only topics, if you have something in your mind and would like to execute as project on Mobicents Media Server, please feel free to drop us a line at amit dot bhayani at gmail dot com or oleg dot kulikoff at gmail dot com



All the best!

Friday, February 6, 2009

Mobicents Media Server has new home

Mobicents Media Server now has its very own personal blog ;0) http://mobicents-media-server.blogspot.com/. All the discussions about MMS roadmap, architecture discussion, design, release notes etc will go to this blog.

Many more news to follow on MMS front, stay tuned!

Thursday, January 29, 2009

Mobicents Media Server 1.0.0.CR5 a step closer to GA (Stable) release

With the latest release of Mobicents Media Server 1.0.0.CR5 its just an inch away from finish line - GA (Stable) release. The CR4 was completely overhauled to achieve greater performance and CR5 is bug fix reported from CR4. In doing so there were number of modifications made such that the MSC API from Application Developers perspective doesn't change. The Announcement and IVR endpoint's in new MMS doesn't have transcoding capacity now. This was required to boost the performance. Also most of the time in Telco world the application developer knows precisely which codec will be used by end User Agent (UA) and hence use the pre-encoded audio file such that Audio Player reads this file, creates RTP packets and sends across to UA. If this is not the case than the application just has to front-end the Ann/IVR Endpoint with Packet Relay endpoint which still has transcoding capacity. The Announcement endpoint is capable of generating DTMF Tones. The Conference Endpoint is not modified and it too has transcoding capacity just like pre CR4. The Conference Endpoint has the DTMF detection and Audio Player such that Application can directly detect DTMF on Conf Endpoint or play the announcement.

We are very happy to announce that MMS can now easily achieve 100 concurrent announcements with transcoding. This test was done on my laptop which is 2GB Dell D620 mahine. We still have to do a test without transcoding and on real servers. If you want to test the performance of MMS in your environment please feel free to drop a line at amit dot bhayani at gmail dot com

For further details please look at http://groups.google.com/group/mobicents-public/browse_thread/thread/e6dd1ee52a357f53

Monday, December 22, 2008

Media Gateway Control Protocol Stack Performance improved


Media Gateway Control Protocol (MGCP, RFC 3435 and JSR 23: JAINTM MGCP API Specification) is the only piece as of now that connects the Mobicents Media Server (MMS) and remote application and hence the performance of MGCP stack is crucial for MMS to be called as GA (Stable). Before MMS CR4 is released, the team is doing everything possible to make MMS performance reach the magical figure. In attempt MGCP stack was also scrutinized for every little details, tweaked and modified to bring it upto the mark. And voila! MGCP stack performance test showed 175 CPS on my Dell D630 Laptop which has 4GB RAM and Linux OS.

Above shown is the images of test scenario that shows through put in number of calls completed per second.

The flow of message (equivalent to one call) in test is

Call Agent (CA) <------------> Media Gate Way (MGW)

CRCX ------------>
<----------- CRCX Response RQNT ------------>
<----------- RQNT Response DLCX ------------>
<----------- DLCX Response While this may not be the flow of every MGCP cycle in real world, but covers the most generic scenario. The test is available at http://code.google.com/p/mobicents/source/browse/#svn/trunk/servers/media/controllers/mgcp/mgcp-stack/src/test/java/org/mobicents/mgcp/stack/test/concurrency

Steps to execute test
  1. checkout the code from http://code.google.com/p/mobicents/source/browse/trunk/servers/media/controllers/mgcp/mgcp-stack/ and execute 'mvn install' from mgcp-stack directory
  2. Modify the /mgcp-stack/ant-build-config.properties to point to correct jar file's
  3. Start the MGW by executing command 'ant mgw' from /concurrency folder
  4. Start the CA by executing command 'ant ca' form /concurrency folder
By default the number of MGCP calls(cycles) the test will execute is 10000 (look at NDIALOGS parameter of CA.java) and the concurrent cycles is capped at 100, look at MAXCONCURRENTCRCX parameter of CA.java

Next in-line is measuring and improving performance of MGCP Resource Adaptor.