SMPP Protocol: Enabling SMS messaging between applications and mobiles.
The SMPP (Short Message Peer-to-Peer) protocol is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entities (ESME), Routing Entities (RE) and Message Centres (MC). It is a means by which applications can send and receive SMS messages to and from mobile devices. Applications do this using an SMPP connection to a Short Message Service Center (SMSC), SMS gateway, SMPP gateway or hub.
There are three versions of the SMPP protocol specification in use. The original public version of the specification is SMPP v3.3 and was released in 1997. This was updated in 1999 to SMPP v3.4. The final version was released in 2003 and is SMPP v5.
SMPP 3.3: Short Message Peer to Peer Protocol Specification v3.3
SMPP 3.4: Short Message Peer to Peer Protocol Specification v3.4, 12-Oct-1999, Issue 1.2
SMPP 5: Short Message Peer to Peer Protocol Specification v5
The SMPP (Short Message Peer-to-Peer) protocol is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entities (ESME), Routing Entities (RE) and Message Centres (MC). It is a means by which applications (termed ESMEs) can send SMS messages to mobile devices and receive SMS from mobile devices.
It can also be used as an API for use with USSD, CBC and other mobile services.
SMPP is designed to support short messaging functionality for any cellular technology and has specific applications and features for technologies such as: GSM, UMTS, LTE, IS-95 (CDMA), CDMA2000 (1xRTT & 3xRTT), ANSI-136 (TDMA), iDEN
The variety of messaging applications, particularly using SMS, for which SMPP can be employed is almost boundless. Mobile Operators, Message Centre vendors, Infrastructure Providers, and application developers are continually developing new applications for SMS. SMPP is ideal as an access protocol for these applications. The following summarises typical applications of SMPP:
In order to make use of the SMPP Protocol, an SMPP session must be established between the ESME and Message Centre or SMPP Routing Entity where appropriate. The established session is based on an application layer TCP/IP connection between the ESME and MC/RE and is usually initiated by the ESME. The connection is often over the Internet and can use SMPP over TLS or a VPN to secure the connection. SMPP has been assigned TCP port 2775 by IANA, however other port numbers are often used.
There are three forms of ESME-initiated session:
Additionally, the Message Centre can establish an SMPP session by connecting to the ESME. This is referred to as an Outbind Session.
The SMPP protocol is a set of operations, each one taking the form of a request and response Protocol Data Unit (PDU) containing an SMPP command. For example, if an ESME wishes to submit a short message, it may send a submit_sm
PDU to the MC. The MC responds with a submit_sm_resp
PDU, indicating the success or failure of the request. Likewise, if an MC wishes to deliver a message to an ESME, it may send a deliver_sm
PDU to an ESME, which in turn responds with a deliver_sm_resp
PDU as a means of acknowledging the delivery.
Some operations are specific to an ESME with others specific to the MC. Others may be specific to a given session type. Referring to the submit_sm
and deliver_sm
examples above, an ESME may send a submit_sm
to an MC only if it has established a TX or TRX session with that Message Centre. Likewise, an MC may send deliver_sm
PDUs only to ESMEs that have established RX or TRX sessions.
Operations are broadly categorised into the following groups:
The following is an example submit_sm
and submit_sm_resp
.
Bytes | Field | Meaning | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
PDU header | ||||||||||||
00000048 | Length | 72 bytes | ||||||||||
00000004 | Command ID | SUBMIT_SM | ||||||||||
00000000 | Command Status | n/a | ||||||||||
00000002 | Sequence Number | 2 | ||||||||||
PDU body | ||||||||||||
00 | Service Type | null (none specified) | ||||||||||
05 | Source Address TON | Alphanumeric | ||||||||||
00 | Source Address NPI | None / Unknown | ||||||||||
4d656c726f73654c61627300 | Source Address | MelroseLabs | ||||||||||
01 | Destination Address TON | International | ||||||||||
01 | Destination Address NPI | ISDN | ||||||||||
34343737313233343536373800 | Destination Address | 447712345678 | ||||||||||
00 | ESM Class | 0 | ||||||||||
00 | Protocol ID | 0 | ||||||||||
00 | Priority Flag | 0 | ||||||||||
00 | Schedule Delivery Time | Deliver immediately | ||||||||||
00 | Validity Period | SMSC default validity | ||||||||||
01 | Registered Delivery | SMSC delivery receipt requested | ||||||||||
00 | Replace If Present Flag | 0 | ||||||||||
00 | Data Coding | Default character set | ||||||||||
00 | Short Message Default Msg ID | 0 | ||||||||||
10 | Short Message Length | 16 bytes | ||||||||||
48656c6c6f20576f726c64201b650201 | Short Message | Hello World €$£ Message is using Data Coding of 0 (i.e. the MC's default character set) which in this case is configured on the MC to be the GSM character set. Message encoding has following meaning:
|
Bytes | Field | Meaning |
---|---|---|
PDU header | ||
00000051 | Length | 81 bytes |
80000004 | Command ID | SUBMIT_SM_RESP |
00000000 | Command Status | n/a |
00000002 | Sequence Number | 2 |
PDU body | ||
30393537326130613039626337336632
65393065393338626336656138636132
64636630636434356234303938316534
36323966383430353535343765613331
00 | Message ID | 09572a0a09bc73f2e90e938bc6ea8ca2 dcf0cd45b40981e4629f84055547ea31 |
The following is a list of all SMPP commands:
Command ID | Value | Purpose |
---|---|---|
bind_receiver | 0x00000001 | Establish a receiver bind. |
bind_receiver_resp | 0x80000001 | |
bind_transmitter | 0x00000002 | Establish a transmitter bind. |
bind_transmitter_resp | 0x80000002 | |
query_sm | 0x00000003 | Query status of previously submitted message. |
query_sm_resp | 0x80000003 | |
submit_sm | 0x00000004 | Submit message to the Message Center for onward delivery to mobile / short message entity (SME). |
submit_sm_resp | 0x80000004 | |
deliver_sm | 0x00000005 | Send message to ESME from MC (typically delivery receipt or mobile originated SMS). |
deliver_sm_resp | 0x80000005 | |
unbind | 0x00000006 | Unbind from MC and close SMPP session. |
unbind_resp | 0x80000006 | |
replace_sm | 0x00000007 | Replace a previously submitted message that is pending delivery. |
replace_sm_resp | 0x80000007 | |
cancel_sm | 0x00000008 | Cancel delivery of previously submitted message(s). |
cancel_sm_resp | 0x80000008 | |
bind_transceiver | 0x00000009 | Establish a transceiver bind. |
bind_transceiver_resp | 0x80000009 | |
outbind | 0x0000000B | Request ESME to bind (sent by MC). |
outbind_resp | 0x8000000B | |
enquire_link | 0x00000015 | Initiate a check to confirm ESME/MC is still reachable. |
enquire_link_resp | 0x80000015 | |
submit_multi | 0x00000021 | Submit message to the Message Center for onward delivery to multiple mobiles / short message entities (SME). |
submit_multi_resp | 0x80000021 | |
alert_notification | 0x00000102 | Indicate to ESME that mobile subscriber has become available. |
data_sm | 0x00000103 | Submit packet to MC for onward delivery to SME or from MC to ESME. |
data_sm_resp | 0x80000103 | |
broadcast_sm | 0x00000111 | Submit message to the Message Center for onward delivery to mobiles in a specified geographical area or set of areas. |
broadcast_sm_resp | 0x80000111 | |
query_broadcast_sm | 0x00000112 | Query status of previously submitted broadcast message. |
query_broadcast_sm_resp | 0x80000112 | |
cancel_broadcast_sm | 0x00000113 | Cancel delivery of previously submitted broadcast message. |
cancel_broadcast_sm_resp | 0x80000113 | |
generic_nack | 0x80000000 | Acknowledge unrecognized or corrupt PDU. |
Reserved | 0x00010200-0x000102FF 0x80010200-0x800102FF | Reserved for MC vendors to define |
This domain was acquired in June 2019 for the purpose of being a source of reference for the Short Message Peer-to-Peer (SMPP) protocol. The objective is to return this domain back to being the main reference for SMPP. The site includes the SMPP specifications, tools and other related resources.
This domain was originally the home of the SMPP Developers Forum / SMPP Forum that later became the now disbanded SMS Forum. This site has no association with any legal owner of the protocol or successor organisation.
Copyright © 2019-2024 SMPP.org