SMPP stands for Short Message Peer to Peer Protocol
SMPP is used to send and receive messages from and to GSM, UMTS, iDEN,CDMA and TDMA cell phones.
The protocol is a level-7 TCP/IP protocol, which allows fast deliver of SMS messages.
Using the SMPP protocol instead of sending messages using a GSM modem has the following advantages:
SMPP can be used for the following applications:
SMPP is used by clients to connected to a SMSC (Short Message Service Centre). In SMPP terms, the client is called ESME (Extended Short Message Entity). SMSC's can also exchange data using a SMPP connection.
Messages Send to a SMSC are called MT (Mobile Terminated) messages, because they are sent to a mobile phone. Messages received from a SMSC are called MO (Mobile Originated) messages, because they were sent from a mobile phone.
When an ESME establishes a connection using SMPP, this can be done in three modes: Transmitter, the ESME can only submit messages to the SMSC; Receiver, the ESME can only receive messages or delivery reports from the SMSC; Transceiver, the EMSE can bot send and receive messages to and from the SMSC.
The TCP packets between the ESME and the SMSC are called PDU's (Protocol Data Units). The following types of PDU's are used in SMPP connections:
Connecting, disconnection and connection keep alive.
Submitting messages to a mobile phone.
Delivery of messages to the SMPP client.
Message query, cancel and replacement.
The following SMPP PDU's are used the most:
bind_transmitter / bind_receiver / bind_transceiver
Used to connect the client with the SMSC, in SMPP sessions a ‘system ID’ and password are used for authentication.
Used to submit a single message from the client to the SMSC ( MT ). This packet contains the sender and recipient address, message body and some optional parameters.
When a messages has to be delivered to the client this packet is used ( MO ). It contains information about the sender of the message and the message body. This PDU is also used to send delivery reports to the ESME.
To query the state of a previously sent message, this command is used. You need a message reference to query a message. Most provider require you to use delivery reports instead of querying the messages all the time.
This packet is sent once in every x minutes to check if the connection is still alive. If not, the connection is terminated. This packet is also used to keep dial-up connections alive ( for instance ISDN ). The most used timeout for SMPP connections is one minute.
Used to end the session and disconnect the TCP/IP connection.
To extend the SMPP protocol with extra parameters, TLV parameters, also called optional parameters were introduced in the SMPP protocol since version 3.4:
Some commonly used TLV's are:
Used to encode large messages. The submit_sm PDU can be used to messages up to 255 chars only. This PDU improves performance, for instance: when you need to send a message containing 315 characters you only have to send one packet instead of two. This doubles the throughput.
Segmentation And Reassembly. These TLV’s are used to send a long message in multiple parts.
sar_msg_ref_num - Reference of the concatenated message.
sar_segment_seqnum - ID of the current segment.
sar_total_segments - Total number of segments.
Please note that not all SMPP providers implement all TLV parameters.