SMPP Information and Resources

Posted by on Nov 12, 2010 in Support Blog

Topic Keywords:

SMPP (Short Message Peer-to-Peer) Protocol is an industry standard protocol that is used for exchanging SMS messages between peer entities.  In SMPP terminology, two types of entities are defined, a Short Message Service Centre (SMSC), and an External Short Messaging Entity (ESME).

In simplistic terms, an SMSC manages SMS messages for a mobile operator network, delivering SMS messages to mobile phones.

An ESME is any other type of entity that wants to exchange SMS messages with these mobile subscribers.  In other words, it is any type of application or service that wants to be able to send and/or receive SMS messages. These applications or services are also often referred to as Value Added Services (VAS) or Value Added Service Providers (VASP).

The SMPP protocol is designed to facilitate the exchange of these SMS messages over the standard TCP/IP protocol.

SMPP is designed to be fast and efficient to facilitate high volume reliable message exchange.

This page is designed to be a quick resource for more information on SMPP.  The following links provide more detailed information on specific issues or considerations regarding SMPP (especially for users of NowSMS):

  • SMPP Version 3.4 Protocol Specification – This is the version of the SMPP specification that is in widespread use.  There is a later version 5.0 specification that was defined, but it did not have significant market acceptance, and the group that defined the later version specification has been disbanded.
  • SMPP Version 3.3 Protocol Specification – A few mobile operators still use old SMSCs that implement the version 3.3 specification.  They can be challenging to work with as some areas of the version 3.3 specification are even more vague than version 3.4.
  • Connecting to an SMPP SMSC – Connecting to an SMSC using SMPP can be confusing because of unusual terminology like TON, NPI, and service type.  It can also be confusing because there are many key areas of the SMPP specification that are vague, and different providers have decided to implement things different ways, especially with regard to character set encoding.  This link explains how to configure an SMSC connection in NowSMS, and includes a discussion of some of the terminology and configuration options.
  • SMPP Character Set Issues: Long Text Messages and Unicode – Some SMPP implementations want you to submit a long message in a single submission, others require you to perform message segmentation based upon the message type (sometimes using TLV parameters, sometimes using GSM UDH).  Some SMPP implementations use the GSM character set, others use iso-8859-1.
  • What are TON and NPI Settings? – TON (Type of Number) and NPI (Numbering Plan Indicator) are two of the settings that can easily give you a headache.  This link provides more information on these settings.
  • Optional TLV Parameters – The SMPP Protocol is extensible in that it allows providers to add their own additional parameters, which are known as TLV parameters, so named because of the format of these parameters … Tag, Length, then Value.   Some TLV parameters are defined in the specification, but are optional and are sometimes used and sometimes not used.  Other parameters are provider specific.  This link helps you learn more about TLV parameters by explaining how to configure NowSMS to support custom TLV parameters for a provider.
  • SMPP Error Code Reference – What do the error numbers or obscure terms like ESME_RTHROTTLED mean?  Use this link as a quick reference.
  • SMPP Error Handling in NowSMS – This link explains how NowSMS handles different SMPP errors, and how can this behaviour be modified.
  • Limiting the Speed of an SMPP Connection – SMS providers limit the speeds at which they will accept messages in order to optimise their resource allocation.  If you try to send faster than your provider allows, you may encounter unexpected errors and delays.
  • Understanding SMPP Connection Types – Are you both sending and receiving messages?  Does your provider expect you to establish separate sender and receiver connections, or do they expect you to connect as a single connection transceiver?
  • Using NowSMS as an SMPP Server for Other Applications – One of the more common uses of NowSMS is to use NowSMS as an SMPP server.  Other clients or applications connect to NowSMS as their SMPP Server, and NowSMS chains to one or more other SMSCs for sending and receiving SMS messages, possibly using SMPP, or possibly using other protocols.
  • SMPP Asynchronous Mode – If you’re sending faster than 10 SMS messages per second, you  need to understand SMPP asynchronous mode.
  • NowSMS Tech Support Blog – This link will display SMPP related posts on the NowSMS Tech Support Blog.
  • NowSMS Technical Forum / Discussion Board – Additional discussions of SMPP related topics and issues take place on the NowSMS Technical Forum / Discussion Board.  Feel free to search these discussions and/or post questions.

One more thing …

As I wrote this post, I recalled one other bit of SMPP terminology that can drive new users crazy … MO and MT messages.  Some people like to throw these terms around just to pretend they know what they are talking about.

MO – Mobile Originated message … in other words, a message that has been sent by a mobile phone subscriber.

MT – Mobile Terminated message … in other words, a message that is destined to be delivered to a mobile phone subscriber.

When you are an application provider that is connecting to an SMS service provider, you receive MO messages, and you send MT messages.

If you would like more information on interfacing your application to NowSMS for SMS message processing, please refer to our API guide at:  http://www.nowsms.com/faq/apis-apis-apis-more-apis

For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...

One Response to “SMPP Information and Resources”

  1. Very clear and simple to understand. It would be appritiated if all the telecom related protocols are defined like this