- Short message peer-to-peer protocol
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 provider s like news organisations) to submit messages, often in bulk.SMPP was originally designed by
Aldiscon , a small Irish company that was later acquired byLogica (now split off and known asAcision ). In 1999, LogicaCMG formally handed over SMPP to the SMPP Developers Forum, later renamed as The SMS Forum and now disbanded. The SMPP protocol specifications are still available through the website which also carries a notice stating that it will be taken down at the end of 2007.The protocol is based on pairs of request/response PDUs (
protocol data unit s, 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 multiple requests can be issued in one go and acknowledged in a skew order by the other peer. The latest version of SMPP is v5.0.Example
This is an example of the binary encoding of a 60-octet "submit_sm" PDU.The data is shown in Hex octet values as a single dump and followed by a headerand body break-down of that PDU.
This is best compared with the definition of the submit_sm PDU from the SMPP specification in order to understand how the encoding matchesthe field by field definition.
The value break-downs are shown with decimal in parentheses and Hex values after that. Where you see one or several hex octets appended, this is becausethe given field size uses 1 or more octets encoding.
Again, reading the definition of the submit_sm PDU from the spec will make all this clearer.
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
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
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""
References
[http://smsforum.net Official download location for the SMPP Protocol]
External links
* [http://www.smsforum.net/ SMS Forum] , host of the SMPP specification (Smsforum has been disbanded and the website discontinued in December 2007 )
* [http://www.mobilestorm.com/digital-marketing-blog/smtp-vs-smpp/ SMTP vs SMPP]SMPP Gateway Vendors
* [http://www.oksijen.com OKSIJEN]
Open Source Implementations
* [http://code.google.com/p/jsmpp/ JSMPP on Google Code]
* [http://opensmpp.logica.com/introhtml/menu.htm Logica's OpenSMPP Site]
* [http://www.seleniumsoftware.com/downloads.html Selenium Sofware's SMPPSim]
* [http://pear.php.net/package/Net_SMPP PHP SMPP v3.4 protocol implementation]
Wikimedia Foundation. 2010.