Forum OpenACS Q&A: Re: OpenACS and SMS
That is, a bunch of large companies have sort of co-opted the SMS network (called SS7) and locked out smaller operators in a manner that is similar to if AOL, MSN and Yahoo took over the internet and blocked independent ISPs from providing access.
As a result, in order to do access carriers like Verizon, Tmobile, Telefonica, etc, you need to connect to companies like Mblox, Critical Path or Clickatell in order to access the SS7 network for both reasonable prices and access to the carriers.
Of course, you can set up your own SMSC and a GSM modem yourself, but then you have to go develop a relationship with a telco and imagine how much fun that would be...
Oh, and did I mention each aggregator has a proprietary interface too?
So effectively, this is a fixed market.
The result is that to build a general SMS application where you don't own the starting and end points, the only reasonable approach nowadays is to sign with one of these aggregators.
The particular application I am looking at right now needs to have the potential for high throughput SMS messages. The HTTP interfaces available are very slow - in the tens of messages per second, which is not acceptable.
SMPP is a SMS specific protocol that is high throughput but requires a special server. Kannel is interesting because it's been around for a while, is open source and has many of the proprietary SMPP interfaces implemented, In addition to being an SMS server, it also can act as a WAP server.
The architecture is also interesting. It effectively acts as an intermediary between a web application and the SMS aggregator, as in this diagram:
web app <---> kannel <---> SMSC <---> telco <---> user
As a result, the work needed to be done on the web app side is fairly minimal. I haven't been able to find a lot of information on Kannel's benchmarked performance, but one data point is that some d00ds in the Philippines (#1 market for SMS/MMS) say they got 200 SMS/sec out of a dual PII 500Mhz box with 256MB of RAM and the server didn't break a sweat.
I don't know what that means with better hardware, though, or what performance looks like with a heavy backend app as the one this client is looking to build.