MM7 Performance Enhancements

MM7 Performance Enhancements SearchSearch
Author Message
Nelson
New member
Username: Nelson

Post Number: 4
Registered: 01-2006
Posted on Friday, April 28, 2006 - 04:47 pm:   

Bryce,

I see the following feature listed in the new enhancements for the latest NowSMS patch:

MMSC: Improve MM7/MM4/EAIF performance by supporting multiple concurrent outbound connections to a single upstream MMSC.

Can you explain this in more detail? Do I need a special type of MM7 account with my mobile operator?

Thanks,

Nelson
Bryce Norwood - NowSMS Support
Board Administrator
Username: Bryce

Post Number: 5859
Registered: 10-2002
Posted on Friday, April 28, 2006 - 08:32 pm:   

Hi Nelson,

There's not really much to elaborate on here.

Basically, in the "MMSC Routing" tab, when you define an MM7, MM4 or EAIF connection, an additional parameter is displayed, titled "Max Connections".

This parameter specifies the maximum number of connections that NowSMS can create when connecting to this server.

MMS protocols like MM7 are quite different from SMS protocols like SMPP.

With SMPP, the connection between client and server is persistent. It remains open all of the time, even when no messages are being transmitted.

Generally, in an SMPP environment, the server requires that the client send a "keep alive" packet (known as "enquire link" in the SMPP protocol) periodically so that the server knows that the client is still connected.

But MM7 is different. It is HTTP based. The connection between client and server is only open only while a message is actually being transmitted. (When you define a bi-directionaly MM7 connection in NowSMS, you have to define both the sender and the receiver. The operator MMSC actually initiates an HTTP connection to your server when it has a mesasge to deliver to you. This is in contast to SMPP where it is always the client that initiates the connection to the operator SMSC, whether messages are being sent or received.)

Although the protocols are quite different, there is one thing in common when we want to talk about maximising performance. One of the biggest performance delays comes from the delay period (latency) during which NowSMS is waiting for a response from the other server to indicate that the message being submitted has been accepted.

So, NowSMS submits a message, and then it waits for acknowledgment that the message has been accepted before it submits the next message.

In an SMPP environment, you can speed up performance by using "asynchronous SMPP". Basically, this involves NowSMS submitting multiple messages without waiting for an acknowledgment. When you check "Enable SMPP Async Mode (windowing)", you define a "Window Size", which indicates the number of SMPP message submissions that can be outstanding between NowSMS and the SMSC at one time. This allows NowSMS to make better use of available network bandwidth, as it will not have to spend as much time waiting for acknowledgments to come back in.

Using Async mode in SMPP does have some considerations for your type of SMSC account. Typically you need to have an SMSC account that will accept messages faster than 1 message per second in order for this setting to have any performance impact. And your SMS provider needs to be running SMPP server software that supports async mode. (Most implementations will support this, but some "home brew" creations might not. You should always test this setting first before using it in production.)

The "Max Connections" setting when defining an outbound MM7 connection is similar. As I mentioned before, MM7 uses HTTP. The default behaviour for NowSMS in an MM7 environment is to connect to the MMSC, issue the MM7 request, wait for the message submission acknowledgment, close the connection to the MMSC, and then if there are more messages to be processed repeat the process.

To improve performance, NowSMS could use "keep-alive" sockets so that it does not have to reconnect to the MMSC to submit multiple messages. This is an enhancment that we are considering for future versions.

However, in typical usage, we have observed that the largest delay occurs in waiting for the message submission acknowledgment, not in the reconnect. This is because the MMSC will often parse the received message and perform some initial processing on the recieved message before returning the acknowledgment.

Therefore, the best option to increase performance is to allow NowSMS to open multiple simultaneous HTTP connections to submit messages over MM7.

By setting a "Max Connections" value higher than 1, this means that NowSMS will allocate additional threads to processing outbound MMS messages for the connection. To maxmise performance, it may make simultaneous connections to the MMSC.

You should not need a special type of MM7 account with your mobile operator. As MM7 is built upon HTTP, the MMSC should have native support for receiving multiple concurrent requests, even if the concurrent requests are coming from the same VASP. It is still a good idea to test this with your operator MMSC before deploying it in production.

EAIF is HTTP based, like MM7, so the concept is the same for EAIF.

MM4 is SMTP based, so it is a little different, but the concept is similar. When "Max Connections" is set to a value greater than 1, NowSMS may open multiple SMTP connections to the MMSC for delivering messages.

Hmm ... I said there wasn't much to elaborate on here, but I certainly did seem to find a way to do just that.

-bn