Short Message Peer-to-peer Protocol
   HOME

TheInfoList



OR:

Short Message Peer-to-Peer (SMPP) in the telecommunications industry is an open, industry standard protocol designed to provide a flexible
data communication Data communication, including data transmission and data reception, is the transfer of data, transmitted and received over a point-to-point or point-to-multipoint communication channel. Examples of such channels are copper wires, optic ...
interface for the transfer of short message data between External Short Messaging Entities (ESMEs), Routing Entities (REs) and SMSC. SMPP is often used to allow third parties (e.g. value-added service providers like news organizations) to submit messages, often in bulk, but it may be used for SMS peering as well. SMPP is able to carry short messages including
EMS Ems or EMS may refer to: Places and rivers * Domat/Ems, a Swiss municipality in the canton of Grisons * Ems (river) (Eems), a river in northwestern Germany and northeastern Netherlands that discharges in the Dollart Bay * Ems (Eder), a river o ...
,
voicemail A voicemail system (also known as voice message or voice bank) is a computer-based system that allows callers to leave a recorded message when the recipient has been unable (or unwilling) to answer the phone. Calls may be directed to voicemail m ...
notifications,
Cell Broadcast Cell Broadcast (CB) is a method of simultaneously sending Short Message Service, short messages to multiple mobile telephone users in a defined area. It is defined by the ETSI's GSM committee and 3GPP and is part of the 2G, 3G, 4G and 5G standa ...
s, WAP messages including
WAP Push Wireless Application Protocol (WAP) is an obsolete technical standard for accessing information over a Cellular network, mobile cellular network. Introduced in 1999, WAP allowed users with compatible mobile devices to browse content such as new ...
messages (used to deliver MMS notifications),
USSD Unstructured Supplementary Service Data (USSD), sometimes referred to as "quick codes" or "feature codes", is a communications protocol used by GSM cellular telephones to communicate with the mobile network operator's computers. USSD can be used ...
messages and others. Because of its versatility and support for non-
GSM The Global System for Mobile Communications (GSM) is a family of standards to describe the protocols for second-generation (2G) digital cellular networks, as used by mobile devices such as mobile phones and Mobile broadband modem, mobile broadba ...
SMS protocols, like
UMTS The Universal Mobile Telecommunications System (UMTS) is a 3G mobile cellular system for networks based on the GSM standard. UMTS uses Wideband Code Division Multiple Access, wideband code-division multiple access (W-CDMA) radio access technolog ...
,
IS-95 cdmaOne, most often simply referred to as CDMA, is a 2G digital cellular technology. It was the commercial name for Interim Standard 95 (IS-95), a technology that was developed by Qualcomm and later adopted as a standard by the Telecommunica ...
(CDMA),
CDMA2000 CDMA2000 (also known as C2K or IMT Multi‑Carrier (IMT‑MC)) is a family of 3G mobile technology standards for sending voice, data, and signaling data between mobile phones and cell sites. It is developed by 3GPP2 as a backwards-compatib ...
, ANSI-136 (TDMA) and
iDEN Integrated Digital Enhanced Network (iDEN) is a mobile telecommunications technology, developed by Motorola, which provides its users the benefits of a Trunked radio system, trunked radio and a mobile phone, cellular telephone. It was called ...
, SMPP is the most commonly used protocol for short message exchange outside SS7 networks.


History

SMPP (Short Message Peer-to-Peer) was originally designed by Aldiscon, a small Irish company that was later acquired by
Logica Logica plc was a Multinational corporation, multinational information technology, IT and Management consulting, management consultancy company headquartered in London and later Reading, Berkshire, Reading, United Kingdom. Founded in 1969, the c ...
(since 2016, after a number of changes
Mavenir Mavenir Systems, Inc. is an American telecommunications software company, created in 2017 as a result of a three-way merger of existing companies and technologies, that develops and supplies Cloud native computing, cloud-native software to the ...
). The protocol was originally created by a developer, Ian J Chambers, to test the functionality of the SMSC without using SS7 test equipment to submit messages. In 1995 the
ETSI The European Telecommunications Standards Institute (ETSI) is an independent, not-for-profit, standardization organization operating in the field of Information and communications technology, information and communications. ETSI supports the de ...
included the SMPP protocol into the technical report TR 03.39. In 1999 Logica formally handed over SMPP to the SMPP Developers Forum, later renamed as The SMS Forum. The SMS Forum disbanded in 2007, with this announcement: "The SMS Forum, a non-profit organization with a mission to develop, foster and promote SMS (short message service) to the benefit of the global wireless industry will disband by July 27, 2007." As part of the original handover terms, SMPP ownership returned to Mavenir.


Operation

SMPP uses the
client–server model The client–server model is a distributed application structure that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate ov ...
of operation, despite "peer-to-peer" in the name. The Short Message Service Center (SMSC) usually acts as a server, awaiting connections from ESMEs. When SMPP is used for SMS peering, the sending MC usually acts as a client. The protocol is based on pairs of request/response PDUs (
protocol data unit In telecommunications, a protocol data unit (PDU) is a single unit of information transmitted among peer entities of a computer network. It is composed of protocol-specific control information and user data. In the layered architectures of c ...
s, or packets) exchanged over OSI layer 4 ( TCP session or
X.25 X.25 is an ITU-T standard protocol suite for Packet switched network, packet-switched data communication in wide area network, wide area networks (WAN). It was originally defined by the CCITT, International Telegraph and Telephone Consultative Co ...
SVC3) connections. The
well-known port Well known or Well-known is a phrase used in several technical contexts: * Well-known ports, port number in the range from 0 to 1023 * Well-known text representation of coordinate reference systems, text markup language for representing coordina ...
assigned by the
IANA The Internet Assigned Numbers Authority (IANA) is a standards organization that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System (DNS), media types, and other Internet P ...
for SMPP when operating over TCP is 2775, but multiple arbitrary port numbers are often used in messaging environments. Before exchanging any messages, a bind command must be sent and acknowledged. The bind command determines in which direction will be possible to send messages; bind_transmitter only allows client to submit messages to the server, bind_receiver means that the client will only receive the messages, and bind_transceiver (introduced in SMPP 3.4) allows message transfer in both directions. In the bind command the ESME identifies itself using system_id, system_type and password; the address_range field designed to contain ESME address is usually left empty. The bind command contains interface_version parameter to specify which version of SMPP protocol will be used. Message exchange may be synchronous, where each peer waits for a response for each PDU being sent, or asynchronous, where multiple requests can be issued without waiting and acknowledged in a skew order by the other peer; the number of unacknowledged requests is called a ''window''; for the best performance both communicating sides must be configured with the same window size.


Versions

The SMPP standard has evolved during the time. The most commonly used versions of SMPP are: * SMPP 3.3 the oldest used version (despite its limitations, it is still widely used); supports
GSM The Global System for Mobile Communications (GSM) is a family of standards to describe the protocols for second-generation (2G) digital cellular networks, as used by mobile devices such as mobile phones and Mobile broadband modem, mobile broadba ...
only. Generates an immediate response for each message sent. * SMPP 3.4 adds optional tag–length–value (TLV) parameters, support of non-GSM SMS technologies and the
transceiver In radio communication, a transceiver is an electronic device which is a combination of a radio ''trans''mitter and a re''ceiver'', hence the name. It can both transmit and receive radio waves using an antenna, for communication purposes. The ...
support (single connections that can send and receive messages). The exchange of SMPP request and response PDUs between an ESME Transmitter and SMSC may occur synchronously or asynchronously. * SMPP 5.0 is the latest version of SMPP; adds support for cell broadcasting, smart flow control. it is not widely used. The applicable version is passed in the interface_version parameter of a bind command.


PDU format (after version 3.4)

The SMPP PDUs are binary encoded for efficiency. They start with a header which may be followed by a body:


PDU header

Each PDU starts with a header. The header consists of 4 fields, each of length of 4 octets: ;command_length: Is the overall length of the PDU in octets (including command_length field itself); must be ≥ 16 as each PDU must contain the 16 octet header ;command_id: Identifies the SMPP operation (or command). If the most significant bit is cleared, this is a request operation. Otherwise it is a response. ;command_status: Always has a value of 0 in requests; in responses it carries information about the result of the operation ;sequence_number: Is used to correlate requests and responses within an SMPP session; allows asynchronous communication (using a
sliding window A sliding window protocol is a feature of packet-based data transmission Protocol (computing), protocols. Sliding window protocols are used where reliable in-order delivery of packets is required, such as in the data link layer (OSI model#Laye ...
method) All numeric fields in SMPP use the
big endian '' Jonathan_Swift.html" ;"title="Gulliver's Travels'' by Jonathan Swift">Gulliver's Travels'' by Jonathan Swift, the novel from which the term was coined In computing, endianness is the order in which bytes within a word (data type), word of d ...
order, which means that the first octet is the Most Significant Byte (MSB).


Example

This is an example of the binary encoding of a 60-octet ''submit_sm'' PDU. The data is shown in Hex
octet Octet may refer to: Music * Octet (music), ensemble consisting of eight instruments or voices, or composition written for such an ensemble ** String octet, a piece of music written for eight string instruments *** Octet (Mendelssohn), 1825 compo ...
values as a single dump and followed by a header and 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 matches the 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 because the 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.


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', (0) ... 00 'validity_period', (0) ... 00 'registered_delivery', (0) ... 00 'replace_if_present_flag', (0) ... 00 'data_coding', (3) ... 03 'sm_default_msg_id', (0) ... 00 'sm_length', (15) ... 0F 'short_message', (Hello Wikipedia) ... 48 65 6C 6C 6F 20 57 69 6B 69 70 65 64 69 61 Note that the text in the short_message field must match the data_coding. When the data_coding is 8 (UCS2), the text must be in UCS-2BE (or its extension,
UTF-16BE UTF-16 (16-bit Unicode Transformation Format) is a character encoding that supports all 1,112,064 valid code points of Unicode. The encoding is variable-length as code points are encoded with one or two ''code units''. UTF-16 arose from an earli ...
). When the data_coding indicates a 7-bit encoding, each septet is stored in a separate octet in the short_message field (with the most significant bit set to 0). SMPP 3.3 data_coding exactly copied TP-DCS values of GSM 03.38, which make it suitable only for GSM 7-bit default alphabet, UCS2 or binary messages; SMPP 3.4 introduced a new list of data_coding values: The meaning of the data_coding=4 or 8 is the same as in SMPP 3.3. Other values in the range 1-15 are reserved in SMPP 3.3. Unfortunately, unlike SMPP 3.3, where data_coding=0 was unambiguously GSM 7-bit default alphabet, for SMPP 3.4 and higher the GSM 7-bit default alphabet is missing in this list, and data_coding=0 may differ for various Short message service centers—it may be
ISO-8859-1 ISO/IEC 8859-1:1998, ''Information technology—8-bit computing, 8-bit single-byte coded graphic character (computing), character sets—Part 1: Latin alphabet No. 1'', is part of the ISO/IEC 8859 series of ASCII-based standard character enc ...
,
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
, GSM 7-bit default alphabet,
UTF-8 UTF-8 is a character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode Transformation Format 8-bit''. Almost every webpage is transmitted as UTF-8. UTF-8 supports all 1,112,0 ...
or even configurable per ESME. When using data_coding=0, both sides (ESME and SMSC) must be sure they consider it the same encoding. Otherwise it is better not to use data_coding=0. It may be tricky to use the GSM 7-bit default alphabet, some Short message service centers requires data_coding=0, others e.g. data_coding=241.


Quirks

Despite its wide acceptance, the SMPP has a number of problematic features: * No standardized data_coding value for GSM default alphabet * No standardized meaning of data_coding=0 * Unclear support for Shift-JIS encoding * Incompatibility of submit_sm_resp between SMPP versions * Using of SMPP 3.3 SMSC Delivery Receipts, especially the Message Id format in them


No standardized data_coding value for GSM default alphabet

Although data_coding value in SMPP 3.3 are based on the GSM 03.38, since SMPP 3.4 there is not a standardized data_coding value for the GSM default alphabet ( GSM 03.38). It is further ambiguous whether the 7-bit characters are packed, as in GSM, allowing sending 160 characters in 140 octets, or whether each 7-bit character is encoded as an entire octet (with the high bit set to zero, as with ASCII).


No standardized meaning of data_coding=0

According to SMPP 3.4 and 5.0 the value data_coding=0 means ″SMSC Default Alphabet″. Which encoding it really is, depends on the type of the SMSC and its configuration.


Unclear support for Shift-JIS encoding

One of the encodings in CDMA standard C.R1001 is
Shift-JIS Shift JIS (also SJIS, MIME name Shift_JIS, known as PCK in Solaris contexts) is a character encoding for the Japanese language, originally developed by the Japanese company ASCII Corporation in conjunction with Microsoft and standardized as JIS ...
used for Japanese. SMPP 3.4 and 5.0 specifies three encodings for Japanese (JIS, ISO-2022-JP and Extended Kanji JIS), but none of them is identical with CDMA MSG_ENCODING 00101. It seems that the Pictogram encoding (data_coding=9) is used to carry the messages in Shift-JIS in SMPP.


Incompatibility of submit_sm_resp between SMPP versions

When a submit_sm fails, the SMSC returns a submit_sm_resp with non-zero value of command_status and ″empty″ message_id. * SMPP 3.3 explicitly states about the message_id field ″If absent this field must contain a single NULL byte″. The length of the PDU is at least 17 octets. * SMPP 3.4 contains an unfortunate note in the SUBMIT_SM_RESP section ″The submit_sm_resp PDU Body is not returned if the command_status field contains a non-zero value.″ Then the length of the PDU is 16 octets. * SMPP 5.0 just specifies that message_id is a mandatory parameter of the type C-Octet string of the submit_sm_resp message. According to the section 3.1.1 NULL Settings, ″A NULL string ″″ is encoded as 0x00″. The length of the PDU is at least 17 octets. For the best compatibility, any SMPP implementation should accept both variants of negative submit_sm_resp regardless of the version of SMPP standard used for the communication.


Message ID in SMPP 3.3 SMSC Delivery Receipts

The only way to pass delivery receipts in SMPP 3.3 is to put information in a text form to the short_message field; however, the format of the text is described in Appendix B of SMPP 3.4, although SMPP 3.4 may (and should) use receipted_message_id and message_state TLVs for the purpose. While SMPP 3.3 states that Message ID is a C-Octet String (Hex) of up to 8 characters (plus terminating '\0'), the SMPP 3.4 specification states that the id field in the Delivery Receipt Format is a C-Octet String (Decimal) of up to 10 characters. This splits SMPP implementations to 2 groups: * Implementations using the decimal representation of an integer Message Id in the id field of the Delivery Receipt body and the hexadecimal representation of an integer Message Id in message_id and receipted_message_id fields * Implementations using the same hexadecimal number (or even the same arbitrary string) both in message_id parameter and in the id field of the Delivery Receipt body The SMPP 3.4 specification does however state that the delivery receipt format is SMSC vendor specific, and therefore the format included in the specification is merely one possibility. As noted above, when using SMPP 3.4 receipted_message_id and message_state TLVs should be used to convey the outcome of a message.


Extensibility, compatibility and interoperability

Since introduction of TLV parameters in version 3.4, the SMPP may be regarded an
extensible Extensibility is a software engineering and systems design principle that provides for future growth. Extensibility is a measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be th ...
protocol. In order to achieve the highest possible degree of compatibility and
interoperability Interoperability is a characteristic of a product or system to work with other products or systems. While the term was initially defined for information technology or systems engineering services to allow for information exchange, a broader de ...
any implementation should apply the Internet
robustness principle In computing, the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It is often reworded as: "be conservative in what you send, be liberal in what you a ...
: ″Be conservative in what you send, be liberal in what you accept″. It should use a minimal set of features which are necessary to accomplish a task. And if the goal is communication and not quibbling, each implementation should overcome minor nonconformities with standard: * Respond with a generic_nack with command_status=3 to any unrecognised SMPP command, but do not stop the communication. * Ignore any unrecognised, unexpected or unsupported TLV parameters. * The borders of PDUs are always given by the PDUs' command_length field. Any message field must not exceed the end of PDU. If a field is not properly finished, it should be treated as truncated at the end of PDU, and it should not affect further PDUs. Information applicable to one version of SMPP can often be found in another version of SMPP, for example with the case of SMPP 3.4 describing the only mechanism of delivery receipts in SMPP 3.3 described above.


Security

The SMPP protocol is designed on a clear-text binary protocol which needs to be considered if using for potentially sensitive information such as one-time passwords via SMS. There are, however, implementations of SMPP over SSL/TLS if required."Secure Short Message Peer-to-Peer Protocol"
International Journal of Electronic Commerce Studies, 2012


See also

* Universal Computer Protocol/External Machine Interface (UCP/EMI) * Computer Interface for Message Distribution (CIMD) *
Rich Communication Services Rich Communication Services (RCS) is a communication protocol standard for instant messaging, primarily for mobile phones, developed and defined by the GSM Association (GSMA). It aims to be a replacement of SMS and Multimedia Messaging Service, ...


References


External links


Short Message Peer-to-Peer Protocol Specification v3.3Short Message Peer-to-Peer Protocol Specification v3.4Short Message Peer-to-Peer Protocol Specification v5.0SMPP v3.4 Protocol Implementation guide for GSM / UMTSSMPP v3.4 Implementation Guide for WAPSMPP implemented in JavaSMPP Wireshark
{{DEFAULTSORT:Short Message Peer-To-Peer Protocol GSM standard Mobile technology Network protocols