10
I Use This!
Activity Not Available

News

Analyzed about 1 year ago. based on code collected over 2 years ago.
Posted about 16 years ago by Vladimir Ralev
Once again, someone made a terrible mistake and I will be leading the BOF session on Rapid VoIP development - SIP Servlets 1.1, Seam Telco Framework, JRuby on Rails, Eclipse VoIP tooling. They just never learn :)The talk is on September, 2nd at 5:45 ... [More] PM. It seems a bit late, but knowing the JBoss parties that occur during summits, that's actually early and a very good slot. The other good news is that I will have Jean Deruelle and some guests with me. Jean also has another talk on Telco 2.0 on Friday in the What's next track. It is worth mentioning that this year JBossWorld and Red Hat Summit take place at the same time on the same location and visitors have have access to both with their passes.In my BOF session, we will begin with a short presentation and demos how to start developing VoIP and Converged applications with Mobicents from scratch with our telco application frameworks/platforms focusing on Seam Telco Framework and the IDEs. We will move on to some real-world examples. We will have a lot of time for questions and discussion on other Mobicents topics, VoIP technology and the current trends in the market. I hope it will be a great experience for everybody.As always, if you are around Chicago, we can do another Mobicents user meeting somewhere.Update: Early bird registration extended until 17th. [Less]
Posted about 16 years ago by Ivelin
Posted about 16 years ago by Pavel Slegr
It is a Friday, just my last day in the office before I go to vacation. I started to read a blog about the economic situation. This was very interesting article and it hit me to respond to this article and suddenly I have realise: "This is a wow ... [More] topic and I want to express a little more of myself to this problem, so .. I started this article".Whole world, the people, from everywhere are discussing the crisis, and what is much worst, a lot of them is feeling the crisis itself by loosing their jobs. The article I was reading and which hit me to write this post, was describing, how the economic theories are no valuable any more, how lots of people with the Nobel prises are discussing etc.You know, what ? I don't think this is only about ECONOMY. What the hell, why the people think, that the whole world is about money. Do you think this is "child view". Say to me: "grow first, and you realize that whole world is about money"? Surely, you are right. But lest go a little deep and I will show you, this is not only about money.In our global world, we are more than 30-40 years trying to catch up the bi-polarization between the "third world countries" and "good situated countries". Did wee succeed ? No I do not think so. We are rich and they are poor. Now you may think, what this has together with the crisis... a lot.Nowadays I am quite rich guy with well situated family, good job and house for mortgage. Yes... well done. But, I do realize, that need of having 4 TV's at home is no worth a penny. I am fine with one TV, I do not need to buy the fourth one. So, in our "rich countries" there is quite a lot of people thinking the same way, I would say quite enough to get the TV developers into the trouble, that they will not sell as much as they thought.On the other hand the people from the "poor countries", they are not going to buy the TV, because they do not have enough money to buy food.So, where do I lead you ? I want to show, that we have reached the crisis of the people consumption and that we do not sell more TV's cars etc, if the people does not want to buy.Today world people are used to apply for mortgage to pay up Their living and all of us, We are living on debt. Do you think we pay up the debt once ? NEVER !!! Therefore we are not producing any value, we are just promising we will pay.It is time about to start thinking about the new ways, how to live for the future. You know the old traditionalist, they will tell you, that this is only economic recession, and that it will be over soon. NOT TRUE !Just think about it....Think about, what will happen when consume all the resources, what we have : oil, coil, but the worst one.. waterDo you say: "This does not affect me, and my children, hopefully not, and grand children "... who cares, we will be dead at that time.Think about it...About the new approach, we must find out to get out of the crisis, BUT not from the economic crisis, but the men kind crisis. [Less]
Posted about 16 years ago by amit.bhayani
Here comes a new improved Mobicents Media Server 2.0.0.BETA1. The 2.x.y efforts were focused on improving performance and at same time leveraging JBoss Microcontainer to come up with component based Media Server. All the media resources (sources or ... [More] sinks) are POJO based. A common theme for Mobicents Media Server 2.x.y is the breaking out of internal fixed subsystems into stand­ alone components implemented as POJOs and the introduction of SPIs throughout the server codebase. Those changes should not affect directly the end user but they are an important part of the Mobicents Media Server strategy for making available the various voice/video services as independent components, so that they can be wired­ together on demand.ArchitectureThe component architecture divides the process of constructing media services into two major parts:The implementation of components which generates or consume media dataThe assembly of chains of media components to build media flow path.The following diagrams illustrates media components wiring and "implementation” process.As depicted on the diagram above we can isolate three main groups of the media components:components which used for generation of media content or media source;components which consumes media or media sink;components which itself are neither sources nor sinks but provide access to sink or source like components A and B on diagram allow to access Input which acts as a sink and Output which is a source. The component which provide access to media sink as input is known as Inlet and component getting access to output as media source is called as Outlet.The example of Inlet is Demultiplexer that has one input (sink) and many output (source). The example is Outlet is Multiplexer which has many input's (sinks) and one output (source)Channels and pipesThis is one of the most important fundamentals of MMS and useful if you planing to create custom media path (custom Endpoint) in MMS. Channel is not a media component but it is able to join with Media Source and Media Sink or joined with other channel. The role of channel is to construct media flow path by joining components using pipes.Channel allows to easy assembly a required media path flow. Using multiplexers and demultiplexers media stream can be merged or splited, different signaling processors may be plugged in different places to achieve more flexibility or performance.PerformanceThe initial test shows that for 300 concurrent announcements there is zero Jitter (no DSP involved). This is much better compared to MMS 1.x.y. The main reason for performance improvement is number of Threads has been reduced to very few. This was achieved by making use of NIO instead of plain sockets.Here is a comparison table between the MMS 1.x.y and MMS 2.x.y MMS 1.X.Y MMS 2.X.Y Standalone MMS Server Not available Available Embedded in JBoss AS JBoss AS 4.X.Y JBoss AS 5.X.Y MGCP Support MGCP Support available via MGCP JAIN SLEE Service (SBB). Hence to use MGCP control protocol one needs to install JAIN SLEE Server, MGCP RA and mgcp-controller-sbb service MGCP Controller is inbuilt with MMS. No SLEE required JSR-309 Support Not available JSR-309 is availale which uses MGCP as MS control protocol MSC API Available. This is custom API developed by Mobicents Media Server. Not available Performance Compared to 2.x.y, 1.x.y has very high Jitter problems due to large number of threads used. It uses plain sockets for RTP Very less Jitter as compared to 1.x.y. It uses NIO for RTP Basic Architecture MMS 1.x.y is built on JMX Microkernel. No flexibility of deciding the media-path for endpoints. For example for IVR, DTMF detection will be used irrespective of application may use it or not. MMS 2.x.y is built on top of Jboss Microcontainer. Flexibility of defining the media-path for endpoints. For example if application will never detect DTMF but only recording, the DTMF detector media component can be completely removed from IVR endpoint and hence save some processing. You can download the MMS 2.0.0.BETA1 from hereFollow the announcement hereYour valuable feed-back is welcomeEnjoy the MMS :) [Less]
Posted about 16 years ago by amit.bhayani
A brief intro on what is JSR-309JSR-309 defines a programming model and object model for Media Server (MS) control independent of MS control protocols. JSR-309 API is not an API for a specific protocol. It will take advantage of the multiple and ... [More] evolving Multimedia Server capabilities available in the industry today and also provide an abstraction for commonly used application functions like multi party conferencing, multimedia mixing and interaction dialogs.Some of the commonly used MS control protocols are MGCP (RFC 3435), MEGACO (RFC 3525), Media Server Markup Language (MSML) (RFC 4722) and VoiceXML. The Mobicents implementation of JSR-309 API makes use of MGCP as MS control protocol.The Mobicents JSR-309 Impl is first and only open source implementation of JSR-309 available as of today. To further understand the JSR-309 API, download specs from here.Still the TCK for JSR-309 is not available. We are eagerly waiting for TCK to be out.The diagram bellow shows the high-level architecture of how application can make use of JSR-309 over MGCPThe first binary release is Mobicents JSR-309 IMpl 2.0.0.BETA1. This implementation can be used not only for controlling Mobicents Media Server, but any Media Server that understands MGCP Protocol.You can download the mobicents-jsr309-impl-2.0.0.BETA1.zip from hereThe public announcement is here Cheers! [Less]
Posted about 16 years ago by Vladimir Ralev
Some news from the past few days - all Mobicents Eclipse Plug-ins are now updated and available from the new repository. Previously, only the Sip Servlets tools were maintained, but now the EclipSLEE, the JAIN SLEE Service Creation Tool is there as ... [More] well.What's new in this latest update?EclipSLEE 1.2.5 updated to work with Eclipse 3.4 Ganymede and with JAIN SLEE 1.1 - Many thanks to wernerdit for the patches. EclipSLEE still needs to be updated to support the new deployment mechanism. For now you can only deploy to localhost.Sip Servlets Core Plugin 1.0.3 updated to fix a deployment issue and some glitches with Windows when loading the management console. It works with both JBoss Application Server 4.2.x and 5.1.x distros.Sip Phone Plugin 1.0.1 updated to fix some Windows issues. There is still a flicker in the graphs in Windows, but it's reduced now. Will work on that later.Well, with this set of tools you can create and test both Sip Servlets and JAIN SLEE applications. Note that all 3 plugins do not depend on each other and you can install them separately, but they look best together :)This is our update site: http://mobicents.googlecode.com/svn/downloads/sip-servlets-eclipse-update-site/(i admit, putting the update site in "sip-servlets-..." was a shortsighted idea, because we have JAIN SLEE tools there as well, but it's just a path name, it doesn't matter)You can see the documentation about the Sip Servlets plugins here.While the EclipSLEE documentation will remain at the old location for now.I hope you enjoy it. [Less]
Posted about 16 years ago by Pavel Slegr
What, the hell ?So long being with the IT and not blogging at all ?Why do I hesitate to spread out my ideas around all other world ?Simply I had never had any need talking to "dear void". While blogging started to be so popular and massive I even ... [More] more hesitated to go and create my own blog.Now is the time to break all those rules and start to share, whatever I think would be in interest of others. [Less]
Posted about 16 years ago by Jean Deruelle
Ok since I'm a git noob and I'm working on the move from JBoss Rails to the new Torquebox. I need to hack the Telco part of Torquebox so that any JRuby app located in Mobicents Sip Servlets on JBoss 5 can setup and handle SIP calls. Since the ... [More] torquebox repo is git based and I'm usually dealing with svn or cvs, and I messed up quite some times already with git (even after checking out the famous git svn crash course), I'll use this post to be a placeholder for the thing I usually do so that me an git get along very well.First things first, the repo is already created on git hub so I'll just check it out using :$ git clone git://github.com/torquebox/torquebox.gitSince Torquebox is using a notion of submodules :I need to checkout the underlying submodules, this is achieved by doing :$ cd torquebox$ git submodule init$ git submodule updateSince the master branch is locked up, I use for each module the following command to be able to push my changes to the master branch :$ git remote add central [email protected]:torquebox/torquebox.git$ cd torquebox-core$ git remote add central [email protected]:torquebox/torquebox-core.git# and so on for each submoduleThen I hack away and do my changes in the various torquebox project. When I'm ok with my changes, I use the following to commit :$ git commit -aIf there is files or directories that needs to be added to the commit, I usually do :$ git add 'filename'# example : git add src/main/java/org/torquebox/ruby/enterprise/sip/sip_environment_builder.rbThis will commit things only locally, then I need to push everything to the central repo located on github, this is done by doing :$ git push central masterSometimes I get into a no-branch strange state (don't ask me why :-)) and I end up in no branch at all, you can check on which branch you are by doing :$ git branch -aThe following command can be useful too :$ git statusso when I'm on no branch, to recover, I use the following commands sequence :# going back on master branch$ git checkout master# checking the lost commits on the no branch$ git fsck --lost-found# the previous command will out put something like# dangling tree a628672f320e4e311a59ce4bcd879125500141ff# dangling commit 69ade48b3183ffc7a4e09cf87a1d0e5cedaa39bc# to merge the last commit into the master branch I just switched to$ git merge 69ade48b3183ffc7a4e09cf87a1d0e5cedaa39bc#then I can push to github again$ git push central master.I'll update this blog post once in a while on my path to non newbiness to git.Please comment to make me understand things a bit further or advice me on some good eclipse plugin that would avoid me such pain...Back to git nowUpdate : Ranga gave a link with a few more tips http://sipx-wiki.calivia.com/index.php/Mirroring_sipXecs_subversion_repository_with_git#Making_and_committing_changesUpdate 2 : very nice and thorough visual tutorial http://www.ralfebert.de/blog/tools/visual_git_tutorial_1/ [Less]
Posted about 16 years ago by Vladimir Ralev
The Mobicents application framework for SIP and Media on top of Seam is now officially named Seam Telco Framework (STF) and it just reached version 2.1!There have been a number of changes and fixes since the last public version and the current 2.1 ... [More] version must be stable enough to be consumed by all users.The goal is still the same - to unify the programming model for Telco and JEE application. A somewhat new perspective for the framework is to minimize the new APIs and reuse as many standard or established APIs as possible (JSR-289, MSC or JSR-309) in order to keep a flat learning curve. You can think of it as something using the Seam infrastructure to expose these APIs to your application. For example the SIP messages and the media notification are delivered through Seam events in the context of a JSR-289 Sip Servlets Session. The Sip Servlets Session itself is backing the Seam SESSION scope context similarly to how the HTTP sessions work in Seam. Additionally, most of the framework objects are available and exposed through the Seam IoC and scoped at the right level. The STF simply plugs into Seam and reuses whatever makes sense in the SIP world. By the same logic, Seam uses that same infrastructure to expose the other APIs from the diagram (JEE, JBoss Frameworks and others) in certain roles - JSF for presentation, jBPM for flow and navigation, Drools for security and so forth.We also want to highlight the point that most major IDEs already have support for Seam core syntax. You can use the same IDE tools to code SIP components without any extra plugins. Again, everything from STF is exposed through the Seam core infrastructure as events, components or scopes.You should note the following changes:The new documentation is here.This source code of the latest stable release 2.1 is here (where the examples are stable).The source code trunk has moved to here (including the dev examples).The media framework is bundled.The Connection and Link IVR helper classes are unified under a single IVRHelper class now. You can check the examples and the documentation for more information. To have quick glance let's dive into the familiar conference IVR example:@Scope(ScopeType.STATELESS)public class MediaFrameworkDemo { @Logger Log log; @In MediaController mediaController; @In SipSession sipSession; @In MediaSessionStore mediaSessionStore; @In IVRHelper ivrHelper; @In MediaEventDispatcher mediaEventDispatcher; @In(scope=ScopeType.APPLICATION, required=false) @Out(scope=ScopeType.APPLICATION, required=false) String conferenceEndpointName; private final String announcement = "http://mobicents.googlecode.com/svn/branches/servers/media/1.x.y/examples/mms-demo/web/src/main/webapp/audio/welcome.wav"; @Observer("INVITE") public void doInvite(SipServletRequest request) throws Exception { // Extract SDP from the SIp message String sdp = new String((byte[]) request.getContent()); // Tell the other side to ring (status 180) request.createResponse(SipServletResponse.SC_RINGING).send(); // Store the INVITE request in the sip session sipSession.setAttribute("inviteRequest", request); // If this is the first INVITE in the app, then we must start a new conference if (conferenceEndpointName == null) conferenceEndpointName = "media/trunk/Conference/$"; // Create a connection between the UA and the conference endpoint mediaController.createConnection(conferenceEndpointName).modify("$", sdp); // also updates the SDP in Media Server to match capabilities of UA } @Observer("connectionOpen") public void doConnectionOpen(MsConnectionEvent event) throws IOException { // Save this connection where the framework can read it // mediaSessionStore.setMsConnection(event.getConnection());// This is done automatically in STF 2.0 // The conference endpoint is now assiged after we are connected, so save it too conferenceEndpointName = event.getConnection().getEndpoint() .getLocalName(); // Recall the INVITE request that we saved in doInvite SipServletRequest request = (SipServletRequest) sipSession .getAttribute("inviteRequest"); // Make OK (status 200) to tell the other side that the call is established SipServletResponse response = request.createResponse(SipServletResponse.SC_OK); // Put the SDP inside the OK message to tell what codecs and so on we agree with response.setContent(event.getConnection().getLocalDescriptor(), "application/sdp"); // Now actually send the message response.send(); // And start listening for DTMF signals ivrHelper.detectDtmf(); } @Observer("DTMF") public void dtmf(String button) { // If the other side presses the button "0" stop the playback if("0".equals(button)) { ivrHelper.endAll(); } else { // otherwise play announcement ivrHelper.playAnnouncementWithDtmf(announcement); } // Also log the DTMF buttons pressed so far in this session log.info("Current DTMF Stack for the SIP Session: " + mediaEventDispatcher.getDtmfArchive(sipSession)); } @Observer( { "BYE" }) public void doBye(SipServletRequest request) throws Exception { request.createResponse(200).send(); // And clean up the connections (not really required, because there is automatic cleanup in STF 2.1) MsConnection connection = mediaSessionStore.getMsConnection(); connection.release(); } @Observer("REGISTER") public void doRegister(SipServletRequest request) throws Exception { request.createResponse(200).send(); }}This is how you can do conferencing and IVR just by subscribing a few methods to a few events without implementing any callback interfaces or keeping track of how the media and SIP events are related. You will notice some differences and comments. There is significant effort by STF to automatically assign and cleanup media objects when it's clear what is expected or when they should not be used any more (for example they are cleaned up when the SIP session is destroyed). Overall we just try to keep the glue code out of your application or at worst keep the glue in the metadata.What happened with version 2.0?Version 2.0 is was released without announcment only to solve particular problems without being fully tested. The 2.1 version has some fixes on top of 2.0 and the API changes are explained in the documentation. If you are 2.0 user all APIs are back-compatible and you should be able to switch to 2.1 without any effort.As usual, any suggestions and feedback are welcome! [Less]
Posted over 16 years ago by Jean Deruelle
Mobicents Sip Servlets 0.9 that we just released last week has been through a load test done by Luis Barreiro, our dedicated QA engineer for the Mobicents Platform.The load test went on for over 75 hours at a rate of 370 calls per seconds on TCP and ... [More] served 100 Million Calls :-)For more information regarding the test, hardware, reproducibility and the report, see the announcement on the Mobicents google group [Less]