100% found this document useful (1 vote)
285 views21 pages

Introduction to SMPP Protocol

SMPP is an open standard protocol used to transfer short messages between SMS entities like gateways and message centers. It uses a client-server model where the SMSC acts as the server and ESME clients connect in transmitter, receiver, or transceiver mode. SMPP supports operations like submit_sm, deliver_sm, and bind in asynchronous request-response PDUs with a standardized format.

Uploaded by

Victor Celer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
285 views21 pages

Introduction to SMPP Protocol

SMPP is an open standard protocol used to transfer short messages between SMS entities like gateways and message centers. It uses a client-server model where the SMSC acts as the server and ESME clients connect in transmitter, receiver, or transceiver mode. SMPP supports operations like submit_sm, deliver_sm, and bind in asynchronous request-response PDUs with a standardized format.

Uploaded by

Victor Celer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

ce er SMS

Introduction to SMPP
The SMPP protocol is used and supported by many vendors:

Short Message Peer-to-Peer Aldiscon, Acision, Comverse, Alcatel, Huawei, CBOSS, Jinny,
Comviva, Tekelec, Mctel, Openmind Networks, Logica, Hewlett
Packard, ESKADENIA, Symsoft, ATS Advanced Technology
by Victor Celer Solutions, Telsis, Telenity, Redknee, Tango, NewNet, Mavenir,
2019-07-10 ZTE, AdaptiveMobile, Nordic Messaging, Homisco,
www.celersms.com Evistel, Bercut,
Ericsson,
Halys
What is SMPP?
ce er
The Short Message Peer-to-Peer (SMPP) is officially defined as an open, industry
standard protocol designed to provide a flexible data communication interface for the
transfer of short message data between External Short Messaging Entities (ESME),
Routing Entities and Message Centers (SMSC)

Mobiles
ESME1 SMPP

ESME2 SMPP SMSC

SMPP
ESME3

Compatible with different technologies: GSM, UMTS, IS-95 (CDMA), CDMA2000, TDMA, iDEN, …
Alternatives?
ce er
Several alternative protocols exist:
• CIMD / CIMD v2
almost
• EMI / UCP (Logica CMG) unused
• OIS (SEMA / Airwide) today

Proprietary protocols based on:


• HTTP mainly used by Bulk SMS
providers, SMS Hubs
• HTTPS

Custom SMPP protocols:


for security, especially in
• SMPP over SSL
the cloud
• SMPP over HTTP
Version History
ce er

• SMPP v3.3: one-way only (Tx or Rx) 1997


• SMPP v3.4: support 2-way (TRx), optional TLV 1999
• SMPP v5.0: support cell broadcast, smart flow control 2003 current

backward compatibility
Proprietary branches:
• SMPP v4.0 (Logica)
• CMPP (China Mobile)

no compatibility
Typical Applications
ce er
SMS:
• Mobile Marketing
• One Time Passwords (OTP)
• Voicemail Notifications
• Over-the-Air SIM management (OTA)
• Device Management (OMACP)
• Telemetry, M2M

Other that SMS:


• USSD
• Cell Broadcast
• Billing
Client-Server Model
ce er
• The SMSC usually acts as a server awaiting connections
• The ESME is the client

• Pairs of Request-Response PDUs (asynchronous)

• SMPP operations:
• bind
• submit_sm
• deliver_sm
• enquire_link
• alert_notification
• …
Transmitter (Tx), Receiver (Rx) or Transceiver (TRx)
ce er

ESME1 Transmitter

One-way

ESME2 Receiver SMSC

Two-way ESME3
Transceiver
SMPP Session
ce er

OUTBOUND

BOUND_TX

OPEN BOUND_RX UNBOUND CLOSED

BOUND_TRX
Transmitter-only (Tx)
ce er
ESME SMSC
network connection
OPEN
bind_transmitter
bind_transmitter_resp
BOUND_TX
short messages

submit_sm
submit_sm_resp
Send

submit_sm
submit_sm_resp
unbind
unbind_resp
UNBOUND
connection closed
CLOSED
Receiver-only (Rx)
ce er
ESME SMSC
network connection
OPEN
bind_receiver
bind_receiver_resp
BOUND_RX
short messages

deliver_sm
Receive

deliver_sm_resp
deliver_sm
deliver_sm_resp
unbind
unbind_resp
UNBOUND
connection closed
CLOSED
Transceiver (TRx): combines transmitter and receiver
ce er
ESME SMSC
network connection
OPEN
bind_transceiver
bind_transceiver_resp
BOUND_TRX
Send and receive
short messages

submit_sm
submit_sm_resp
deliver_sm
deliver_sm_resp
unbind
unbind_resp
UNBOUND
connection closed
CLOSED
PDU Format
ce er
PDU Header (Mandatory) PDU Body
length id status sequence number (Optional)
4 octets 4 octets 4 octets 4 octets length - 16

• The command length represents the whole bytes length of the PDU
• The minimum command length is 16
PDU Format
ce er
PDU Header (Mandatory) PDU Body
length id status sequence number (Optional)
4 octets 4 octets 4 octets 4 octets length - 16

• The unique command identifier:


submit_sm (0x00000004)
submit_sm_resp (0x80000004)
deliver_sm (0x00000005)
enquire_link (0x00000015)

• Request command id range: 0x00000000 – 0x000001FF
• Response command id range: 0x80000000 – 0x800001FF
PDU Format
ce er
PDU Header (Mandatory) PDU Body
length id status sequence number (Optional)
4 octets 4 octets 4 octets 4 octets length - 16

• The status is always set to 0x00000000 for a request PDU


• In a response PDU the status indicates success
(0x00000000) or failure
• The SMPP guide describes the standard error codes:
ESME_RMSGQFUL (0x00000014)
ESME_RTHROTTLED (0x00000058)
ESME_RINVEXPIRY (0x00000062)
PDU Format
ce er
PDU Header (Mandatory) PDU Body
length id status sequence number (Optional)
4 octets 4 octets 4 octets 4 octets length - 16

• Increase monotonically for each submitted request PDU


• Range: 0x00000001 – 0x7FFFFFFF
• The sequence number in the response PDU matches the
request PDU (correlation)
• Useful for asynchronous sequences
PDU Format: Deeper
ce er

length
id
Header
status
sequence number
Mandatory parameters
Body
Optional parameters

• Header is mandatory for every PDU


• Some PDU have no body (i.e. enquire_link, generic_nack)
• Optional parameters available since SMPP v3.4
• Optional parameters can be ignored by the ESME or the SMSC
PDU Format: Optional Parameters
ce er

Size Description
Tag 2 Uniquely identify parameter
Length 2 Indicates the length of the value
Value Length Contains the actual data

• The optional parameters (TLV) appear at the end of the PDU body
• The order of the TLV is not relevant
• If the tag is not supported the TLV must be ignored
• Keep in mind that SMPP v3.3 doesn’t support this feature
Typical Tx Session
ce er
ESME SMSC

bind_transmitter(1)
synchronous
bind_transmitter_resp(1)

submit_sm(2)
submit_sm(3)

asynchronous
Request- submit_sm(4)
response pair:
same sequence submit_sm_resp(2)
number submit_sm(5)
submit_sm_resp(3)
submit_sm_resp(4)
submit_sm_resp(5)
unbind(6)
synchronous
unbind_resp(6)
Typical Rx Session
ce er
ESME SMSC

bind_receiver(1)
synchronous
bind_receiver_resp(1)

deliver_sm(1)
deliver_sm(2)

asynchronous
Request- deliver_sm(3)
response pair:
same sequence deliver_sm_resp(1)
number deliver_sm(4)
deliver_sm_resp(2)
deliver_sm_resp(3)
deliver_sm_resp(4)
unbind(2)
synchronous
unbind_resp(2)
Typical TRx Session
ce er
ESME SMSC

bind_transceiver(1)
synchronous
bind_transceiver_resp(1)

submit_sm(2)
submit_sm(3)

asynchronous
submit_sm_resp(2)
submit_sm_resp(3)
deliver_sm(1)
deliver_sm_resp(1)
deliver_sm(2)
deliver_sm_resp(2)
unbind(4)
synchronous
unbind_resp(4)
Error Handling
ce er

request
short time (ms)
response

• Timeout or retransmission if no response after a certain time


• Check the command status in the response PDU
• Additional data can be expected after a successful response
(i.e. delivery report, PoR)
• The response can be a generic_nack if the PDU is corrupt

You might also like