Tuesday, September 15, 2009

Mobicents RTSP Stack 1.0.0.BTA1 Released!

We are happy to announce the first version 1.0.0.BETA1 of Mobicents RTSP stack. Mobicents RTSP which is built on top of Netty 3.0.1.GA uses the NIO Socket (TCP). The stack doesn't have any state machine and is neutral to be used either at RTSP Client side or RTSP Server side. The main purpose to have RTSP Stack is to provide RTSP Support for Mobicents Media Server.

As of now only TCP is supported.

Binary (including src) is available at
https://sourceforge.net/projects/mobicents/files/Mobicents%20RTSP/

SVN tag
http://mobicents.googlecode.com/svn/tags/servers/media/2.x.y/rtsp/mobicents-rtsp-1.0.0.BETA1


Look at example code

For Client Side
http://mobicents.googlecode.com/svn/tags/servers/media/2.x.y/rtsp/mobicents-rtsp-1.0.0.BETA1/src/main/java/org/mobicents/rtsp/example/Client.java

For Server Side
http://mobicents.googlecode.com/svn/tags/servers/media/2.x.y/rtsp/mobicents-rtsp-1.0.0.BETA1/src/main/java/org/mobicents/rtsp/example/Server.java

These are just for understanding on how to initialize the stack.

Any feedback please divert http://groups.google.com/group/mobicents-public/topics

Enjoy the RTSP :)

Mobicents Media Server Team.

Thursday, July 23, 2009

Mobicents JSR-309 Impl 2.0.0.BETA2 Released!

We are happy to release 2.0.0.CR2 version of Mobicents JSR309 Implementation. There are quite a few changes in JSR309 API and hence the implementation too has changed.

Specifically the Events structure have changed. Now the MediaEvent has method isSuccessful() which returns true if the event is for success, false otherwise. Hence every listener will have to have this preliminary check done and act accordingly.


Every NetworkConnection now has a SdpPortManager. The SdpPortManager is compatible with the offer/answer model. Please look at API to understand SdpPortManager. Its an important change


New features that have been added is there is an implementation for MediaConfig now. MediaConfig defines the internal structure of ResourceContainer (NetworkConnection, MediaGroup, MediaMixer etc). For predefined configurations like NetworkConnection.BASIC, MediaGroup.PLAYER, MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR the implementation already has corresponding predefined MediaConfigs. The access to this predefined MediaConfigs can be achieved by calling MsControlFactory.getMediaConfig(Configuration configuration) passing one of the predefined Configuration as parameter.

The MediaConfig implementation shows the mapping between the JSR309 events/signals and corresponding MGCP events. Also it shows the endpoint name on Mobicents Media Server (MMS) that this ResourceContainer is firing signals/events on. Hence if you change the endpoint name on MMS, get the handle to existing MediaConfig impl and create a custom clone by passing new set of Parameters for example


MediaConfig playerConfig = msControlFactory.getMediaConfig(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR);
Parameters pNew = msControlFactory.createParameters();
pNew.put(ExtendedParameter.ENDPOINT_LOCAL_NAME, "/thisis/new/endpointname/1");

MediaConfigImpl clone = (MediaConfigImpl) playerConfig.createCustomizedClone(pNew);

mediaSession.createMediaGroup(clone, someParams);

In this case someParams could be null as mobicents JSR309 impl still doesn't take them into consideration.

Other way of doing this get the handle to existing MediaConfig impl and get the XML string by calling marshall()

String xml = playerConfig.marshall();

The xml will look like

<?xml version="1.0" encoding="UTF-8"?>
< resource-container>
  < parameter>
    < key> ENDPOINT_LOCAL_NAME < &frasl key >
    < value > &frasl mobicents &frasl media &frasl IVR &frasl$ < &frasl value >
  < &frasl parameter >
  < player >
    < signal >
      < mgcp-event > ann < &frasl mgcp-event >
      < mgcp-package > A < &frasl mgcp-package >
      < on-endpoint > true < &frasl on-endpoint >
    < &frasl signal >
    < event >
      < mgcp-event > oc < &frasl mgcp-event >
      < mgcp-package > A < &frasl mgcp-package >
      < on-endpoint > true < &frasl on-endpoint >
      < media-event > PLAY_COMPLETED< &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > of < &frasl mgcp-event >
      < mgcp-package > A<&frasl mgcp-package >
      < on-endpoint > true < &frasl on-endpoint >
      < media-event > PLAY_COMPLETED< &frasl media-event >
    < &frasl event >
  < &frasl player >
  < recorder >
    < signal >
      < mgcp-event > aupr < &frasl mgcp-event >
      < mgcp-package > AU<&frasl mgcp-package >
      < on-endpoint > true < &frasl on-endpoint >
    < &frasl signal >
  < &frasl recorder >
  < signal-detector >
    < event >
      < mgcp-event > dtmf0< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf1< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf2< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf3< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf4< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf5< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf6< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf7< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf8< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmf9< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfA< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfB< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfC< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfD< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfStar< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
    < event >
      < mgcp-event > dtmfHash< &frasl mgcp-event >
      < mgcp-package > D<&frasl mgcp-package >
      < on-endpoint > false < &frasl on-endpoint >
      < media-event > SIGNAL_DETECTED < &frasl media-event >
    < &frasl event >
  < &frasl signal-detector>
< &frasl resource-container>

use you favorite XML parser and replace the /mobicents/media/IVR/$ with your value for enpoint for example /thisis/new/endpointname/1. Again get the String of this new XML and create a new MediaConfig object by calling

Reader xmlDoc = new StringReader(xml);
MediaConfig config = msControlFactory.getMediaConfig(xmlDoc);

And then get the corresponding ResourceContainer by passing this MediaConfig to mediaSession. Though this is lengthy process process, it will be useful in future to create a custom MediaConfig when JSR309Impl is mature enough to take custom MediaConfigs.

For now we have flexibility to change the MGCP vs JSR309 events and Endpoint names.

Please note that JSR309 is still under public review and not final. However unless and untill there are major change in API, mobicents JSR309 impl will not change.

Mobicents JSR309 impl version 2.0.0.BETA2 can be downloaded from https://sourceforge.net/projects/mobicents/files/

The Mobicents JSR309 home page is at http://www.mobicents.org/mms-jsr309-main.html

Follow the announcement here http://groups.google.com/group/mobicents-public/browse_thread/thread/5791bdce0143d5f9#

Please post your comments to http://groups.google.com/group/mobicents-public


Enjoy the JSr309 :)

Mobicents Media Server Team

Mobicents MGCP 2.0.0.CR4 Released

Mobicents Media Server team has released 2.0.0.CR4 version of MGCP implementation of JSR23. The focus was entirely on improving the performance both in terms of transactions per seconds and CPU consumed. We are very happy to have achieved 540 transactions per seconds at just 40 - 50% CPU load. The load test was done on my dual core, 4GB laptop.

The binary package is mobicents-mgcp-impl-2.0.0.RC4.zip and can be downloaded from http://sourceforge.net/projects/mobicents/files/

If you want to look at source code the SVN is http://mobicents.googlecode.com/svn/trunk/servers/media/jain-mgcp

The Mobicents MGCP Home Page is http://www.mobicents.org/mms-mgcp-main.html

Here is the announcement http://groups.google.com/group/mobicents-public/browse_thread/thread/37db5645d43f13be#

Please feel free to leave a comment at http://groups.google.com/group/mobicents-public

Cheers!

Friday, June 19, 2009

Mobicents Media Server (MMS) v2.0.0.BETA1 Released!

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

Architecture

The component architecture divides the process of constructing media services into two major parts:

  1. The implementation of components which generates or consume media data
  2. The 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 pipes

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


Performance

The 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 here

Follow the announcement here

Your valuable feed-back is welcome


Enjoy the MMS :)

Mobicents JSR-309 Impl 2.0.0.BETA1 Released!

A brief intro on what is JSR-309

JSR-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 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 MGCP


The 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 here

The public announcement is here

Cheers!

Tuesday, March 31, 2009

Mobicents Media Server 1.0.0.GA Released!

Here comes the first stable version of Mobicents Media Server (MMS) 1.0.0.GA that we all were waiting for!

Follow the announcement here

Download here

User Guide is here

The initial days of MMS was nothing more than JAIN SLEE Resource Adaptor (RA) on top of JMF project and was shipped with early versions of Mobicents JAIN SLEE Server. The RA was un-stable and more over JMF is project to fulfill the media needs of a desktop application. For something to truly serve the needs of telco applications we needed much more robust and scalable server. We also explored the FMJ project but that too didn't meet the requirements we had. We searched around to see if there are already existing Open Source Media Server's on top of which we can build our own or re-use it as its. But there were none and hence we decided to build our own Media Server :)

We released first Alpha version of MMS on end of Feb 2008 and took approx 13 months to come up with first stable release. Thanks to all those who has contributed, provided valuable feed-backs and big thanks to Mobicents Core Team. Last but not least a big thank you to MMS users. MMS 1.0.0.GA is the first Open Source Media Server that has passed MGCP TCK test.

MMS 1.0.0.GA has all the features from simple announcement, recording, IVR to complicated ones like Conference. MMS has support for majority of audio codecs used in industry today like PCM-U, PCM-A, G729, GSM, Speex. MMS can be easily used with JAIN SLEE Server with either MGCP Resours Abaptor or MSC Resource Adaptor or it can be integrated with Sip Servlets using the MSC API.

With release of 1.0.0.GA the life-cycle for 1.x.y comes to an end and we will be actively doing development for version 2.x.y

Going Forward....

The support for video has already begun (check out code from SVN trunk). MMS is also actively developing endpoints for SS7 support. Have a look at wiki page http://groups.google.com/group/mobicents-public/web/mobicents-ss7-roadmap. The first Alpha release of 2.0.0 will also have initial support for JSR-309. JSR-309 is protocol agnostic API for Media Server Control. The MMS implementation for JSR - 309 will be on top of MGCP.

Mobicents Google Group for feedback, queries is here

Njoy!

Mobicents Media Server Team

Wednesday, March 4, 2009

Mobicents Media Server Performance better than targeted for GA release

Just few days back MMS CR6 was released with much improvements on performance. I did a quick performance test of CR6 using SipP tool for load generation, a wonderful tool called sysstat for CPU recording http://pagesperso-orange.fr/sebastien.godard/tutorial.html#section1 and our own tool for RTP Jitter recording.

The test was run for approximately 10 min with intention to measure the jitter at load of 100 ~ 110 concurrent announcements and at same time measure the CPU usage on MMS Server.

While the Jitter was under control the CPU never crossed more than 25%. The attached graph shows the idle% CPU recorded after every 5 secs.

Here are the jitter graphs taken randomly while running the test tool.

Further details here

Tuesday, February 24, 2009

Mobicents Media Server 1.0.0.CR6 Released!

The focus of this release has been the performance. CR6 is by far one of the best performing MMS! MMS now can easily have 200 concurrent Announcement or IVR. Details here

One of the major issue was Buffer was created too frequently and not reused which caused frequent GC. Other issue was with Inband Dtmf detection which is based on Goertzel Algorithm was consuming too much of CPU. The algorithm is modified in CR6 to have all the costly operation done at MMS start time and just use comparison's and other simple calculations at runtime.

The announcement for CR6 release is here

Download here

Cheers!

Friday, February 6, 2009

Mobicents MGCP implementation pases the MGCP TCK

The Mobicents MGCP stack has cleared the TCK listed on JSR 23 http://jcp.org/aboutJava/communityprocess/final/jsr023/index.html, though it wasn't one of the most challenging task we kept delaying the TCK compliance as least priority as MGCP TCK is not one of the best one can rely on. Rather we created our own test-suite for MGCP which is more reliable in terms of encoding/decoding command,testing retransmission, regression test and proper flow of command.

To understand more about TCK look at README.txt at http://code.google.com/p/mobicents/source/browse/trunk/servers/media/jain-mgcp/tck/README.txt

The test output (this may vary in your environment)


[abhayani@localhost tck]$ mvn exec:exec
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'exec'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Mobicents MGCP TCK
[INFO] task-segment: [exec:exec]
[INFO] ------------------------------------------------------------------------
[INFO] [exec:exec]
[INFO] JAIN MGCP TCK
[INFO] This instance is a Gateway.
[INFO] Using org.mobicents.mgcp.stack as the path name for JainMgcpStackImpl.
[INFO] Remote entity is 127.0.0.1:2727.
[INFO] Verbose trace selected.
[INFO]
[INFO] Testing Bandwidth parameter class.
[INFO] Testing single parameter constructor. Succeeded!
[INFO] Testing two parameter constructor. Succeeded!
[INFO]
[INFO] Testing BearerInformation parameter class. Succeeded!
[INFO]
[INFO] Testing CallIdentifier parameter class.
[INFO] Invoking constructor with valid hexadecimal string. Succeeded!
[INFO] Calling constructor with empty string (should throw exception). Succeeded!
[INFO] Calling constructor with string of more than 32 characters (should throw exception). Succeeded!
[INFO] Calling constructor with string that contains non-hexadecimal characters (should throw exception). Succeeded!
[INFO] Invoking setCallIdentifier() with valid hexadecimal string. Succeeded!
[INFO] Invoking setCallIdentifier() with empty string (should throw exception). Succeeded!
[INFO] Invoking setCallIdentifier() with string of more than 32 characters (should throw exception). Succeeded!
[INFO] Invoking setCallIdentifier() with string that contains non-hexadecimal characters (should throw exception). Succeeded!
[INFO]
[INFO] Testing ConnectionIdentifier parameter class.
[INFO] Invoking constructor with valid hexadecimal string. Succeeded!
[INFO] Calling constructor with empty string (should throw exception). Succeeded!
[INFO] Calling constructor with string of more than 32 characters (should throw exception). Succeeded!
[INFO] Calling constructor with string that contains non-hexadecimal characters (should throw exception). Succeeded!
[INFO] Invoking setConnectionIdentifier() with valid hexadecimal string. Succeeded!
[INFO] Invoking setConnectionIdentifier() with empty string (should throw exception). Succeeded!
[INFO] Invoking setConnectionIdentifier() with string of more than 32 characters (should throw exception). Succeeded!
[INFO] Invoking setConnectionIdentifier() with string that contains non-hexadecimal characters (should throw exception). Succeeded!
[INFO]
[INFO] Testing ConnectionMode parameter class. Succeeded!
[INFO]
[INFO] Testing EchoCancellation parameter class. Succeeded!
[INFO]
[INFO] Testing EventName parameter class. Succeeded!
[INFO]
[INFO] Testing ExtendedConnectionParm parameter class. Succeeded!
[INFO]
[INFO] Testing GainControl parameter class. Succeeded!
[INFO]
[INFO] Testing InfoCode parameter class. Succeeded!
[INFO]
[INFO] Testing EncryptionMethod parameter class. Succeeded!
[INFO]
[INFO] Testing PacketizationPeriod parameter class.
[INFO] Testing single parameter constructor. Succeeded!
[INFO] Testing two parameter constructor. Succeeded!
[INFO]
[INFO] Testing ResourceReservation parameter class. Succeeded!
[INFO]
[INFO] Testing SilenceSuppression parameter class. Succeeded!
[INFO]
[INFO] Testing TypeOfNetwork parameter class. Succeeded!
[INFO]
[INFO] Testing TypeOfService parameter class. Succeeded!
[INFO]
[INFO] Testing LocalOptionExtension parameter class. Succeeded!
[INFO]
[INFO] Testing NotifiedEntity parameter class. Succeeded!
[INFO]
[INFO] Testing QuarantineHandling parameter class. Succeeded!
[INFO]
[INFO] Testing ReasonCode parameter class. Succeeded!
[INFO]
[INFO] Testing RegularConnectionParm parameter class. Succeeded!
[INFO]
[INFO] Testing RequestedAction parameter class. Succeeded!
[INFO]
[INFO] Testing PackageName parameter class. Succeeded!
[INFO]
[INFO] Testing PackageName parameter class. Succeeded!
[INFO]
[INFO] Testing SupportedModes parameter class. Succeeded!
[INFO]
[INFO] Testing SupportedPackages parameter class. Succeeded!
[INFO]
[INFO] Testing LocalOptVal parameter class. Succeeded!
[INFO]
[INFO] Test of Gateway API succeeded!
[INFO]
[INFO] Continuing with messaging tests.
[INFO] Getting an instance of JainIPFactory.
[INFO] Setting path name for stack implementation to org.mobicents.mgcp.stack.
[INFO] Creating a JainMgcpStack object.
[INFO] Setting port to Gateway default port 2427
[INFO] Creating a JainMgcpProvider object
[INFO] 0 [main] INFO org.mobicents.mgcp.stack.JainMgcpStackImpl - mgcp-stack.properties read successfully!
[INFO] executorTableSize = 80
[INFO] executorQueueSize = -1
[INFO] messageReaderThreadPriority = 10
[INFO] messageDispatcherThreadPriority = 7
[INFO] messageExecutorThreadPriority = 5
[INFO] 46 [main] INFO org.mobicents.mgcp.stack.JainMgcpStackImpl - Jain Mgcp stack bound to IP 0.0.0.0/0.0.0.0 and UDP port 2427
[INFO] Jain Mgcp stack bound to IP 0.0.0.0/0.0.0.0 and UDP port 2427
[INFO] Creating a JainMgcpListener object
[INFO] Adding JainMgcpListener object to JainMgcpProvider's list
[INFO] Received AuditConnectionResponse with transaction ID 1
[INFO] Received AuditEndpointResponse with transaction ID 2
[INFO] Received CreateConnectionResponse with transaction ID 3
[INFO] Received AuditConnection with transaction ID 5
[INFO] Sent AuditConnectionResponse with transaction ID 5
[INFO] message =
[INFO] DLCX 4 local@127.0.0.1:2727 MGCP 1.0
[INFO] C:FFFF
[INFO]
[INFO] local Tx ID = 4 Remote Tx ID = 4 Sending the Command 2
[INFO] Received DeleteConnectionResponse with transaction ID 4
[INFO] Received AuditEndpoint with transaction ID 7
[INFO] Sent AuditEndpointResponse with transaction ID 7
[INFO] Received DeleteConnectionResponse with transaction ID 4
[INFO] Received EndpointConfigurationResponse with transaction ID 5
[INFO] Received CreateConnection with transaction ID 9
[INFO] Sent CreateConnectionResponse with transaction ID 9
[INFO] message =
[INFO] EPCF 8 local@127.0.0.1:2727 MGCP 1.0
[INFO] B:e:mu
[INFO]
[INFO] local Tx ID = 8 Remote Tx ID = 6 Sending the Command 2
[INFO] Received EndpointConfigurationResponse with transaction ID 6
[INFO] message =
[INFO] MDCX 10 local@127.0.0.1:2727 MGCP 1.0
[INFO] C:FFFF
[INFO] I:FFFF
[INFO]
[INFO] local Tx ID = 10 Remote Tx ID = 7 Sending the Command 2
[INFO] Received ModifyConnectionResponse with transaction ID 7
[INFO] Received EndpointConfigurationResponse with transaction ID 6
[INFO] Received ModifyConnectionResponse with transaction ID 7
[INFO] Received ModifyConnectionResponse with transaction ID 8
[INFO] Received NotificationRequestResponse with transaction ID 9
[INFO] Received DeleteConnection with transaction ID 16
[INFO] Sent DeleteConnectionResponse with transaction ID 16
[INFO] message =
[INFO] MDCX 13 local@127.0.0.1:2727 MGCP 1.0
[INFO] C:FFFF
[INFO] I:FFFF
[INFO]
[INFO] local Tx ID = 13 Remote Tx ID = 10 Sending the Command 2
[INFO] Received ModifyConnectionResponse with transaction ID 10
[INFO] message =
[INFO] RQNT 14 local@127.0.0.1:2727 MGCP 1.0
[INFO] X:FFFF
[INFO]
[INFO] local Tx ID = 14 Remote Tx ID = 11 Sending the Command 2
[INFO] Received NotificationRequestResponse with transaction ID 11
[INFO] message =
[INFO] RQNT 15 local@127.0.0.1:2727 MGCP 1.0
[INFO] X:FFFF
[INFO]
[INFO] local Tx ID = 15 Remote Tx ID = 12 Sending the Command 2
[INFO] Received NotificationRequestResponse with transaction ID 12
[INFO] message =
[INFO] NTFY 17 local@127.0.0.1:2727 MGCP 1.0
[INFO] X: FFFF
[INFO] O: */AllEvents
[INFO]
[INFO] local Tx ID = 17 Remote Tx ID = 13 Sending the Command 2
[INFO] Received NotifyResponse with transaction ID 13
[INFO] Received ModifyConnectionResponse with transaction ID 10
[INFO] Received NotificationRequestResponse with transaction ID 11
[INFO] Received EndpointConfiguration with transaction ID 24
[INFO] message =
[INFO] RQNT 18 local@127.0.0.1:2727 MGCP 1.0
[INFO] X:FFFF
[INFO]
[INFO] local Tx ID = 18 Remote Tx ID = 14 Sending the Command 2
[INFO] message =
[INFO] NTFY 19 local@127.0.0.1:2727 MGCP 1.0
[INFO] X: FFFF
[INFO] O: */AllEvents
[INFO]
[INFO] local Tx ID = 19 Remote Tx ID = 15 Sending the Command 2
[INFO] message =
[INFO] NTFY 20 local@127.0.0.1:2727 MGCP 1.0
[INFO] X: FFFF
[INFO] O: */AllEvents
[INFO]
[INFO] local Tx ID = 20 Remote Tx ID = 16 Sending the Command 2
[INFO] message =
[INFO] RSIP 21 local@127.0.0.1:2727 MGCP 1.0
[INFO] RM:disconnected
[INFO]
[INFO] local Tx ID = 21 Remote Tx ID = 17 Sending the Command 2
[INFO] Sent EndpointConfigurationResponse with transaction ID 24
[INFO] Received NotificationRequestResponse with transaction ID 14
[INFO] Received NotifyResponse with transaction ID 15
[INFO] Received NotifyResponse with transaction ID 16
[INFO] Received RestartInProgressResponse with transaction ID 17
[INFO] Test of messaging capability succeeded!

Wednesday, February 4, 2009

Mobicents JAIN MGCP 2.0.0.CR1 Released!

We are happy to announce the first independent binary release of Mobicents JAIN MGCP Stack implementation 2.0.0.CR1 !

Before this MGCP implementation was always part of Mobicents Media Server. However MGCP is a industry standard and can be used by applications to control Media Server's other than Mobicents Media Server. To learn more about MGCP please refere to RFC 3435 and JSR 23.

Where to download from?
The distribution can be found on SourceForge.net. The binary package is mobicents-mgcp-impl-2.0.0.RC1.

Mobicents Media Server 2.x.y SVN Structure

The SVN structure for Mobicents Media Server 2.x.y Source is changed a lot as compared to version 1.x.y. The new SVN structure will now look like

  • media
    • jain-mgcp
    • jain-megaco
    • mscml
    • jsr-309
    • core
      • server-spi
      • server-impl
      • server-sar
      • server-standalone
      • mgcp-controller
      • megaco-controller
    • examples - All standalone examples here (not depending on SLEE or Sip Servlets)
    • slee
      • ra
        • mgcp
        • megaco
        • jsr-309
      • examples - All SLEE examples here
        • converged-demo
        • call-controller
        • mgcp-demo

The protocol stacks jain-mgcp, jain-meagco, mscml and jsr-309 are independent of MMS components and depends on mobicents parent.

The core/server-spi is core api design of MMS and core/server-impl is implementation of server-spi. MMS 2.x.y can be build as standalone server (server-standalone) or service in JBoss AS 5.x (server-sar). The controllers mgcp-controller and megaco-controller will be an integration of respective stack and server-spi.

The slee is special node for JAIN SLEE. slee/ra will have all the JSLEE RA's for respective stacks and slee/examples demonstrating the usage of these RA's