Short message peer-to-peer protocol
From Wikipedia, the free encyclopedia
The short message peer-to-peer protocol (SMPP) is a telecommunications industry protocol for exchanging SMS messages between SMS peer entities such as short message service centres. It is often used to allow third parties (e.g. value-added service providers like news organisations) to submit messages, often in bulk.
SMPP was originally designed by Aldiscon, a small Irish company that was later bought by Logica, now LogicaCMG. In 1999, SMPP was formally handed over to the SMPP Developers Forum, later renamed as The SMS Forum.
The protocol is based on pairs of request/response PDUs (protocol data units, or packets) exchanged over OSI layer 4 (TCP session or X.25 SVC3) connections. PDUs are binary encoded for efficiency.
The most commonly used versions of SMPP are v3.3, the most widely supported standard, and v3.4, which adds transceiver support (single connections that can send and receive messages). Data exchange may be synchronous, where each peer must wait for a response for each PDU being sent, and asynchronous, where receiving and transmitting go in independent threads with the use of buffers and timers. The latest version of SMPP is v5.0.
Contents |
[edit] Example
This is an example of a 60-octet submit_sm PDU...
[edit] Hexdump
00 00 00 3C 00 00 00 04 00 00 00 00 00 00 00 05 00 02 08 35 35 35 00 01 01 35 35 35 35 35 35 35 35 35 00 00 00 00 00 00 00 00 00 00 0F 48 65 6C 6C 6F 20 77 69 6B 69 70 65 64 69 61
[edit] PDU Header
'command_length', (60) ... 00 00 00 3C 'command_id', (4) ... 00 00 00 04 'command_status', (0) ... 00 00 00 00 'sequence_number', (5) ... 00 00 00 05
[edit] PDU Body
'service_type', () ... 00 'source_addr_ton', (2) ... 02 'source_addr_npi', (8) ... 08 'source_addr', (555) ... 35 35 35 00 'dest_addr_ton', (1) ... 01 'dest_addr_npi', (1) ... 01 'dest_addr', (555555555) ... 35 35 35 35 35 35 35 35 35 00 'esm_class', (0) ... 00 'protocol_id', (0) ... 00 'priority_flag', (0) ... 00 'schedule_delivery_time', () ... 00 'validity_period', () ... 00 'registered_delivery', (0) ... 00 'replace_if_present_flag', (0) ... 00 'data_coding', (0) ... 00 'sm_default_msg_id', (0) ... 00 'sm_length', (15) ... 0F 'short_message', (Hello wikipedia) ... 48 65 6C 6C 6F 20 77 69 6B 69 70 65 64 69 61'
[edit] External links
- the details regarding SMPP are available at www.smsforum.net
- an open source implementation of an SMPP gateway is available at www.kannel.org
- www.pythomnic.org offer us an open source Python SMPP client/server implementation version 3.4 "embbeded" into a flexible platform for network services that also supports JMS (Java Messaging Services), generic database access (with Pooling support), HTTP, e-mail, ICQ messaging and so on.
- OpenSmpp (donated by Logica), open source Java SMPP implementation
- SMS/MMS Resources
- SMPP v3.4 Library for .NET
- SMPP v3.4 and 5.0 Client and Server Library for .NET
- You also can search sourceforge.org for SMPP implementations: smpp on sourceforge
- Perl SMPP
- Lightweight PHP SMPP API
- SMS and PDU info
- For Russian speakers there is a site related to smpp at www.isms.ru
- SMPP Component Delphi and Builder C++ smpp.by.ru