SMPP v5 0
SMPP v5 0
SMPP v5 0
FORUM
www.smsforum.net
SMS
FORUM
SMS Forum
2 of 127
www.smsforum.net
SMS
Table Of Contents
FORUM
Introduction .....................................................................................................................10 1.1 Scope Of This Document .....................................................................................11 1.2 SMPP Overview....................................................................................................11 1.2.1 Supported Cellular Technologies .....................................................................11 1.2.2 Typical Applications of SMPP...........................................................................11 1.2.3 SMPP Sessions................................................................................................12 1.2.4 Protocol Operations and PDUs ........................................................................13 1.2.4.1 Session Management Operations ...........................................................14 1.2.4.2 Message Submission Operations............................................................15 1.2.4.3 Message Delivery Operations..................................................................15 1.2.4.4 Anciliary Operations.................................................................................16 1.2.4.5 Operation Matrix ......................................................................................17 1.3 Glossary................................................................................................................18 1.4 References ...........................................................................................................19 2 SMPP Sessions ..............................................................................................................20 2.1 Application Layer Communication ........................................................................20 2.2 Establishing an SMPP Session ............................................................................21 2.3 Session States......................................................................................................21 2.3.1 Open.................................................................................................................21 2.3.2 Bound_TX ........................................................................................................21 2.3.3 Bound_RX ........................................................................................................22 2.3.4 Bound_TRX......................................................................................................22 2.3.5 Unbound...........................................................................................................23 2.3.6 Closed ..............................................................................................................23 2.3.7 Outbound..........................................................................................................23 2.4 Sample Sessions ..................................................................................................24 2.4.1 Example Transmitter Session ..........................................................................24 2.4.2 Example Receiver Session ..............................................................................25 2.4.3 Example Transceiver Session..........................................................................26 2.4.4 Example Outbind Session ................................................................................27 2.5 PDU Sequencing ..................................................................................................28 2.5.1 The PDU Sequence Number ...........................................................................28 2.5.2 Why Monotonic?...............................................................................................29 2.5.3 Sequence Numbers Across Sessions..............................................................29 2.5.4 Synchronous Vs. Asynchronous.......................................................................30 2.5.5 Why Asynchronous? ........................................................................................31 2.6 Session Timers.....................................................................................................32 2.7 Error Handling.......................................................................................................33 2.7.1 Handling Connection Failure ............................................................................33 2.7.2 Operation Failure..............................................................................................34 2.8 Flow Control and Congestion Avoidance..............................................................35 2.9 Session Security and Encryption ..........................................................................37 2.9.1 Secure Transport Layer....................................................................................37 2.9.2 Secure Tunnel ..................................................................................................37 2.10 Forward and Backward Compatibility ...................................................................38 2.10.1 Forward Compatibility.......................................................................................38 2.10.2 Backward Compatibility ....................................................................................39 3 SMPP Parameter and PDU Format................................................................................40 3.1 Parameter Type Definitions ..................................................................................40 3.1.1 NULL Settings ..................................................................................................42 3.1.2 SMPP Parameter Field Size Notation ..............................................................43 3.2 General PDU Format............................................................................................43 3.2.1 PDU Format .....................................................................................................44 3.2.1.1 Command_length ....................................................................................44 3.2.1.2 Command_id ...........................................................................................44 3.2.1.3 Command_status ....................................................................................45 3.2.1.4 Sequence_number ..................................................................................45 3.2.1.5 Standard Parameters ..............................................................................45 SMPP V5.0 Draft06 SMS Forum 3 of 127
www.smsforum.net
SMS
FORUM
3.2.1.6 TLV Parameters.......................................................................................45 3.2.2 A sample PDU ..................................................................................................46 4 SMPP PDU Definitions....................................................................................................47 4.1 Session Management Operations ........................................................................47 4.1.1 Bind Operation..................................................................................................47 4.1.1.1 bind_transmitter Syntax ...........................................................................48 4.1.1.2 bind_transmitter_resp Syntax ..................................................................49 4.1.1.3 bind_receiver Syntax ...............................................................................50 4.1.1.4 bind_receiver_resp Syntax ......................................................................51 4.1.1.5 bind_transceiver Syntax...........................................................................52 4.1.1.6 bind_transceiver_resp Syntax..................................................................53 4.1.1.7 outbind Syntax. ........................................................................................54 4.1.1.8 unbind Syntax ..........................................................................................55 4.1.1.9 unbind_resp Syntax .................................................................................55 4.1.2 Enquire Link Operation.....................................................................................56 4.1.2.1 Enquire_link Syntax .................................................................................56 4.1.2.2 Enquire_link_resp Syntax ........................................................................56 4.1.3 Generic NACK Operation .................................................................................57 4.1.3.1 generic_nack Syntax................................................................................57 4.2 Message Submission Operations .........................................................................58 4.2.1 submit_sm Operation .......................................................................................58 4.2.1.1 submit_sm Syntax....................................................................................58 4.2.1.2 submit_sm_resp Syntax ..........................................................................60 4.2.2 data_sm Operation ...........................................................................................61 4.2.2.1 data_sm Syntax .......................................................................................61 4.2.2.2 data_sm_resp Syntax ..............................................................................62 4.2.3 submit_multi Operation.....................................................................................63 4.2.3.1 submit_multi Syntax.................................................................................63 4.2.3.2 submit_multi_resp Syntax........................................................................66 4.2.4 Message Submission Request TLVs ...............................................................67 4.2.5 Message Submission Response TLVs.............................................................69 4.2.6 Source and Destination Addressing .................................................................69 4.2.6.1 TON .........................................................................................................69 4.2.6.2 NPI ...........................................................................................................69 4.2.6.3 ESME Addresses.....................................................................................70 4.2.7 Message Replace operation in submit_sm ......................................................70 4.2.8 Message Length ...............................................................................................70 4.2.9 Message Types ................................................................................................71 4.2.9.1 Registered................................................................................................71 4.2.9.2 Scheduled ................................................................................................71 4.2.9.3 Pre-defined ..............................................................................................72 4.2.10 Message Modes ...............................................................................................72 4.2.10.1 Default Message Mode ............................................................................72 4.2.10.2 Store and Forward Message Mode..........................................................73 4.2.10.3 Datagram Message Mode .......................................................................74 4.2.10.4 Transaction Message Mode ....................................................................75 4.3 Message Delivery Operations ...............................................................................76 4.3.1 deliver_sm Operation .......................................................................................76 4.3.1.1 deliver_sm Syntax....................................................................................77 4.3.1.2 deliver_sm_resp Syntax...........................................................................79 4.3.2 data_sm Operation ...........................................................................................79 4.3.3 Message Delivery TLVs....................................................................................79 4.3.4 Delivery Message Types ..................................................................................81 4.3.4.1 MC Delivery Receipt ................................................................................81 4.3.4.2 Intermediate Notification ..........................................................................82 4.3.4.3 SME Delivery Acknowledgement.............................................................82 4.3.4.4 SME Manual/User Acknowledgement .....................................................82 4.3.4.5 Conversation Abort ..................................................................................82 4.4 Ancillary Operations ..............................................................................................83 4.4.1 cancel_sm Operation........................................................................................83 SMPP V5.0 Draft06 SMS Forum 4 of 127
www.smsforum.net
SMS
FORUM
4.4.1.1 cancel_sm Syntax....................................................................................84 4.4.1.2 cancel_sm_resp Syntax ..........................................................................85 4.4.1.3 query_sm Operation ................................................................................86 4.4.1.4 query_sm Syntax .....................................................................................87 4.4.1.5 query_sm_resp Syntax ............................................................................88 4.4.2 replace_sm Operation ......................................................................................89 4.4.2.1 replace_sm Syntax ..................................................................................89 4.4.2.2 replace_sm_resp Syntax .........................................................................90 4.5 PDU Field Definitions............................................................................................91 4.5.1 command_length..............................................................................................91 4.5.2 command_id.....................................................................................................91 4.5.3 command_status..............................................................................................92 4.5.4 sequence_number............................................................................................95 4.5.5 system_id .........................................................................................................95 4.5.6 password ..........................................................................................................95 4.5.7 system_type .....................................................................................................95 4.5.8 interface_version ..............................................................................................95 4.5.9 addr_ton, source_addr_ton, dest_addr_ton, esme_addr_ton ..........................96 4.5.10 addr_npi, source_addr_npi, dest_addr_npi, esme_addr_npi...........................96 4.5.11 address_range .................................................................................................96 4.5.12 source_addr .....................................................................................................97 4.5.13 destination_addr ...............................................................................................97 4.5.14 esme_addr .......................................................................................................97 4.5.15 service_type .....................................................................................................97 4.5.16 esm_class ........................................................................................................98 4.5.17 protocol_id........................................................................................................99 4.5.18 priority_flag .......................................................................................................99 4.5.19 scheduled_delivery_time and validity_period .................................................100 4.5.19.1 scheduled_delivery_time .......................................................................100 4.5.19.2 validity_period ........................................................................................100 4.5.19.3 Absolute Time Format ...........................................................................100 4.5.19.4 Relative Time Format ............................................................................101 4.5.20 registered_delivery .........................................................................................102 4.5.21 replace_if_present_flag ..................................................................................103 4.5.22 data_coding....................................................................................................104 4.5.23 sm_default_msg_id ........................................................................................105 4.5.24 sm_length.......................................................................................................105 4.5.25 short_message...............................................................................................105 4.5.26 message_id ....................................................................................................105 4.5.27 number_of_dests ...........................................................................................105 4.5.28 dest_flag.........................................................................................................106 4.5.29 no_unsuccess ................................................................................................106 4.5.30 dl_name..........................................................................................................106 4.5.31 message_state ...............................................................................................106 4.6 PDU TLV Definitions...........................................................................................107 4.6.1 TLV Tag..........................................................................................................107 4.6.2 TLV Length.....................................................................................................109 4.6.3 TLV Value.......................................................................................................109 4.6.4 TLV Definitions ...............................................................................................109 4.6.4.1 dest_addr_subunit .................................................................................109 4.6.4.2 source_addr_subunit .............................................................................109 4.6.4.3 dest_network_type.................................................................................110 4.6.4.4 source_network_type.............................................................................110 4.6.4.5 dest_bearer_type...................................................................................110 4.6.4.6 source_bearer_type...............................................................................111 4.6.4.7 dest_telematics_id.................................................................................111 4.6.4.8 source_telematics_id.............................................................................111 4.6.4.9 qos_time_to_live....................................................................................111 4.6.4.10 payload_type..........................................................................................112 4.6.4.11 additional_status_info_text ....................................................................112 SMPP V5.0 Draft06 SMS Forum 5 of 127
www.smsforum.net
SMS
FORUM
4.6.4.12 receipted_message_id...........................................................................112 4.6.4.13 ms_msg_wait_facilities ..........................................................................113 4.6.4.14 privacy_indicator ....................................................................................113 4.6.4.15 source_subaddress ...............................................................................114 4.6.4.16 dest_subaddress ...................................................................................114 4.6.4.17 user_message_reference ......................................................................115 4.6.4.18 user_response_code .............................................................................115 4.6.4.19 language_indicator.................................................................................115 4.6.4.20 source_port ............................................................................................115 4.6.4.21 destination_port .....................................................................................116 4.6.4.22 sar_msg_ref_num..................................................................................116 4.6.4.23 sar_total_segments ...............................................................................116 4.6.4.24 sar_segment_seqnum ...........................................................................117 4.6.4.25 sc_interface_version..............................................................................117 4.6.4.26 display_time ...........................................................................................117 4.6.4.27 ms_validity .............................................................................................118 4.6.4.28 dpf_result ...............................................................................................118 4.6.4.29 set_dpf ...................................................................................................119 4.6.4.30 ms_availability_status ............................................................................119 4.6.4.31 network_error_code...............................................................................120 4.6.4.32 message_payload..................................................................................120 4.6.4.33 delivery_failure_reason..........................................................................121 4.6.4.34 more_messages_to_send .....................................................................121 4.6.4.35 message_state ......................................................................................121 4.6.4.36 callback_num .........................................................................................122 4.6.4.37 callback_num_pres_ind .........................................................................123 4.6.4.38 callback_num_atag................................................................................123 4.6.4.39 number_of_messages ...........................................................................124 4.6.4.40 sms_signal.............................................................................................124 4.6.4.41 alert_on_message_delivery ...................................................................124 4.6.4.42 its_reply_type .........................................................................................124 4.6.4.43 its_session_info .....................................................................................125 4.6.4.44 ussd_service_op ....................................................................................125 4.6.4.45 congestion_state....................................................................................126 Change Log...................................................................................................................127
SMS Forum
6 of 127
www.smsforum.net
SMS
List Of Tables
FORUM
Table 1-1 Session Management Operations Table 1-2 Message Submission Operations Table 1-3 Message Delivery Operations Table 1-4 Anciliary Operations Table 1-5 Operation Matrix Table 1-6 Glossary Table 1-7 References Table 2-1 SMPP Session Timers Table 3-1 SMPP PDU Parameter Types Table 3-2 SMPP PDU Parameter Type NULL Settings Table 3-3 SMPP PDU Parameter Type Size Notation Table 3-4 SMPP PDU Format Table 3-5 SMPP PDU Format Table 4-1 bind_transmitter PDU Table 4-2 bind_transmitter_resp PDU Table 4-3 bind_receiver PDU Table 4-4 bind_receiver_resp PDU Table 4-5 bind_transceiver PDU Table 4-6 bind_transceiver_resp PDU Table 4-7outbind PDU Table 4-8 unbind PDU Table 4-9 unbind_resp PDU Table 4-10 enquire_link PDU Table 4-11 enquire_link_resp PDU Table 4-12 generic_nack PDU Table 4-13 submit_sm PDU Table 4-14 submit_sm_resp PDU Table 4-15 data_sm PDU Table 4-16 data_sm_resp PDU Table 4-17 submit_multi PDU Table 4-18 submit_multi_resp PDU Table 4-19 Message Submission Request TLVs Table 4-20 Message Submision Response TLVs Table 4-21 deliver_sm PDU Table 4-22 deliver_sm_resp PDU Table 4-23 Message Delivery TLVs Table 4-24 cancel_sm PDU Table 4-25 cancel_sm_resp PDU Table 4-26 query_sm PDU Table 4-27 query_sm_resp PDU Table 4-28 replace_sm PDU Table 4-29 replace_sm_resp PDU Table 4-30 command_id Values Table 4-31 command_status Values Table 4-32 interface_version Values Table 4-33 TON Values Table 4-34 NPI Values Table 4-35 service_type Values Table 4-36 esm_class Bit Values Table 4-37 priority_flag Values Table 4-38 Absolute UTC Time Format Table 4-39 Relative Time Format Table 4-40 registered_delivery Values Table 4-41 replace_if_present Values Table 4-42 data_coding Values Table 4-43 sm_default_msg_id Values Table 4-44 sm_length Values SMPP V5.0 Draft06 SMS Forum
www.smsforum.net Table 4-45 dest_flag Values Table 4-46 message_state Values Table 4-47 TLV Tag Value Ranges Table 4-48 TLV Tag Definitions Table 4-49 dest_addr_subunit TLV Table 4-50 source_addr_subunit TLV Table 4-51 dest_network_type TLV Table 4-52 source_network_type TLV Table 4-53 dest_bearer_type TLV Table 4-54 source_bearer_type TLV Table 4-55 dest_telematics_id TLV Table 4-56 source_telematics_id TLV Table 4-57 qos_time_to_live TLV Table 4-58 payload_type TLV Table 4-59 additional_status_info_text TLV Table 4-60 receipted_message_id TLV Table 4-61 ms_msg_wait_facilities TLV Table 4-62 privacy_indicator TLV Table 4-63 source_subaddress TLV Table 4-64 dest_subaddress TLV Table 4-65 user_message_reference TLV Table 4-66 user_response_code TLV Table 4-67 language_indicator TLV Table 4-68 source_port TLV Table 4-69 destination_port TLV Table 4-70 sar_msg_ref_num TLV Table 4-71 sar_total_segments TLV Table 4-72 sar_segment_seqnum TLV Table 4-73 sc_interface_version TLV Table 4-74 display_time TLV Table 4-75 ms_validity TLV Table 4-76 dpf_result TLV Table 4-77 set_dpf TLV Table 4-78 ms_availability_status TLV Table 4-79 network_error_code TLV Table 4-80 message_payload TLV Table 4-81 delivery_failure_reason TLV Table 4-82 more_messages_to_send TLV Table 4-83 message_state TLV Table 4-84 callback_num TLV Table 4-85 callback_num_pres_ind TLV Table 4-86 callback_num_atag TLV Table 4-87 number_of_messages TLV Table 4-88 sms_signal TLV Table 4-89 alert_on_message_delivery TLV Table 4-90 its_reply_type TLV Table 4-91 its_session_info TLV Table 4-92 ussd_service_op TLV Table 4-93 congestion_state TLV Table 5-1 Change Log
SMS
FORUM
106 106 107 108 109 109 110 110 110 111 111 111 111 112 112 112 113 113 114 114 115 115 115 115 116 116 116 117 117 117 118 118 119 119 120 120 121 121 121 122 123 123 124 124 124 124 125 125 126 127
SMS Forum
8 of 127
www.smsforum.net
SMS
List Of Figures
FORUM
Figure 1-1 SMPP Network Diagram.......................................................................................10 Figure 2-1 Application Layer Communication Between ESME and MC ................................20 Figure 2-2 Open State............................................................................................................21 Figure 2-3 Bound_TX State ...................................................................................................21 Figure 2-4 Bound_RX State ...................................................................................................22 Figure 2-5 Bound_TRX State.................................................................................................22 Figure 2-6 Outbound State.....................................................................................................23 Figure 2-7 Bound_RX State from Outbound State ................................................................23 Figure 2-8 Example Transmitter Session ..............................................................................24 Figure 2-9 Example Receiver Session...................................................................................25 Figure 2-10 Example Transceiver Session ............................................................................26 Figure 2-11 Example Outind Session ....................................................................................27 Figure 2-12 Transceiver Session demonstrating PDU Sequencing.......................................28 Figure 2-13 Asynchronous Transmitter Session....................................................................30 Figure 2-14 Asychronous Windowing ....................................................................................31 Figure 2-15 Flow Control & Congestion Avoidance using the congestion_state TLV............36 Figure 2-16 ESME-MC SMPP session using a secure tunnel ...............................................37 Figure 4-1 Registered Delivery ..............................................................................................71 Figure 4-2 Store and Forward Mode ......................................................................................73 Figure 4-3 Datagram Message Mode ....................................................................................74 Figure 4-4 Transaction Mode.................................................................................................75
SMS Forum
9 of 127
www.smsforum.net
SMS
FORUM
1 Introduction
The SMS Forum, a non-profit organisation dedicated to the promotion of SMS within the wireless industry, manages the Short Message Peer to Peer (SMPP) protocol. The specification and related documentation is available from the SMS Forum Website http://www.smsforum.net Support for SMPP is available via email at support@smsforum.net or via online discussion at the SMS Forum website http://www.smsforum.net. SMPP is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entitys (ESME) , Routing Entities (RE)and Message Centers. A Message Center (MC) is a generic term used to describe systems such as a Short Message Service Centre (SMSC), GSM Unstructured Supplementary Services Data (USSD) Server, and Cell Broadcast Centre (CBC). An ESME typically represents a fixed network SMS client, such as a WAP Proxy Server, EMail Gateway, and Voice Mail Server. A Routing Entity (RE) is a generic term for a network element that is utilized for MC to MC, and ESME to MC message routing. A RE has the ability to emulate the functionality associated with both a MC and an ESME. To an ESME, a RE appears as a MC and to a MC, an RE appears as an ESME. A carrier may utilise REs to hide a network of Message Centres, presenting only the REs as the external interface point for ESMEs.[CL1] The following diagram illustrates the context of SMPP in a mobile network:
ESME
R outing E ntities
M es s age C entres
H ot D rinks
M obile
SMSC
M obile N etwork SS 7
SMSC
SMPP
SMPP
M SC
BSC
SMPP
SM
VLR
PP
Applications D irectory
SMPP
H LR
SMSC
RE
SMPP
SMPP
[CL2]
SMS Forum
P P
O ther (eg U S S D , C B C )
10 of 127
www.smsforum.net
SMS
FORUM
1.1
This document defines Version 5.0 of the SMPP protocol. It is intended for designers and implementers of an SMPP v5.0 interface between Message Centres, Routing Entities (RE)and External Short Message Entities (ESME).[CL3]
1.2
SMPP Overview
The following sub-sections overview the basic concepts and characteristics of SMPP. Many of these characteristics will be discussed in greater detail throughout the document.
SMS Forum
11 of 127
www.smsforum.net
SMS
FORUM
WAP Proxy Server. A WAP Proxy Server acts as the WAP gateway for wireless Internet applications. A WAP Proxy Server may select an SMS or USSD bearer for sending WDP datagrams to and receiving WDP datagrams from a mobile station. Online Banking, Share Dealing and E-Commerce, A mobile user could use SMS to send messages to an ESME requesting the purchase of products, shares etc. Likewise, a subscriber may use SMS to access banking services such as bill payment and funds transfer. Gaming and SMS Chat. Mobile users can interact with each other by means of a central server (ESME) and use this interaction as a means of playing wireless games, dating or SMS chat services similar to the concept of instant messaging and Internet room. These services have already appeared in the form of SMS-TV and SMS-Radio services.
Additionally, the Message Centre can establish an SMPP session by connecting to the ESME. This is referred to as an Outbind Session.
SMS Forum
12 of 127
www.smsforum.net
SMS
FORUM
The following sub-sections list each category and its associated operations.
SMS Forum
13 of 127
www.smsforum.net
SMS
FORUM
bind_transmitter_resp
bind_receiver
bind_receiver_resp
bind_transceiver
bind_transceiver_resp
outbind
unbind unbind_resp
enquire_link
enquire_link_resp generic_nack
SMS Forum
14 of 127
www.smsforum.net
SMS
FORUM
submit_sm_resp
submit_sm_multi submit_sm_multi_resp
data_sm
data_sm_resp
deliver_sm_resp
data_sm
data_sm_resp alert_notification
SMS Forum
15 of 127
www.smsforum.net
SMS
FORUM
query_sm_resp
cancel_sm
cancel_sm_resp replace_sm
replace_sm_resp
SMS Forum
16 of 127
www.smsforum.net
SMS
FORUM
ESME
ESME
ESME
ESME
ESME
MC
MC
MC
MC
MC
MC
bind_transmitter bind_transmitter_resp bind_receiver bind_receiver_resp bind_transceiver bind_transceiver_resp Outbind Unbind unbind_resp submit_sm submit_sm_resp submit_sm_multi submit_sm_multi_resp data_sm data_sm_resp deliver_sm deliver_sm_resp query_sm query_sm_resp cancel_sm cancel_sm_resp replace_sm replace_sm_resp enquire_link enquire_link_resp alert_notification generic_nack
SMS Forum
17 of 127
www.smsforum.net
SMS
FORUM
1.3
Glossary
Definition Acknowledgement Application Programming Interface Call Detail Record External Short Message Entity. European Telecommunications Standards Institute Leading portion of the SMPP message, common to all SMPP PDUs Message Bureau - This is typically an operator message bureau. Message Centre - A generic term used to describe various types of SMS Gateways. Most Significant Byte Mobile Switching Centre Mobile Station Message Waiting Indication Negative Acknowledgement Network Service Access Point Protocol Data Unit Process Unstructured Supplementary Services Data Process Unstructured Supplementary Services Request Routing Entity[CL8] Short Message Entity Short Message Service Centre Short Message Peer to Peer Protocol User Data Header Indicator Uniform Resource Locator Unstructured Supplementary Services Notification Unstructured Supplementary Services Request VoiceMail Alert Voice Processing System Telecommunications Industry Association Wireless Application Protocol (http://www.wapforum.org) Wireless Control Message Protocol Wireless Datagram Protocol Table 1-6 Glossary
Term ACK API CDR ESME ETSI HEADER MB MC MSB MSC MS MWI NACK NSAP PDU PSSD PSSR RE SME SMSC SMPP UDHI URL USSN USSR VMA VPS TIA WAP WCMP WDP
SMS Forum
18 of 127
www.smsforum.net
SMS
Document Number GSM 03.40 http://www.etsi.fr
FORUM
1.4
Ref.
References
Document Title Technical Realisation of the Short Message Service Point to Point Digital Cellular telecommunications system (Phase 2+); Alphabets and language specific information. GSM Mobile Application Part Version Number v5.7.1
[GSM 03.40]
[GSM 03.38]
v5.5.1 Sept. 97
v5.11.0
Short Message Service for Spread Spectrum Systems Teleservice Segmentation and Reassembly (TSAR) Short Message Service - Cellular Messaging Teleservice General UDP Transport Service (GUTS) Wireless Application Protocol Architecture Specification
Rev A
[TSAR]
TIA/EIA-136-620
Rev 0
[CMT-136]
TIA/EIA-136-710-A
Rev A
[GUTS]
TIA/EIA-136-750
Rev 0
[WAPARCH]
Version 30-Apr.1998 Version 12-June1998 Version 10-Feb.1999 11/95 1.06 Rev 99-04-30 Version 4.4.0[CL9] Version 4.3.0
[CL10]
[WCMP]
[WDP]
Open Systems Interconnection Net work Service Definition PCS operators common standards for handset-SMS functionalities Technical Realization of the Short Message Service (SMS) (Release 4) Alphabets and language-specific information (Release 4) Mobile Application Part (MAP) Specification (Release 4)
3GPP
3GPP
Version 4.5.0
[CL11]
SMS Forum
19 of 127
www.smsforum.net
SMS
FORUM
2 SMPP Sessions
As described earlier earlier, the ESME and MC communication is based on an SMPP session. This section describes this in detail.
2.1
The Open Systems Interconnect model or OSI stack as it is more commonly known, defines a layered approach to data communications working form the most basic electronic data communications (physical), up to link level communication involving the transmission of octets and onwards to fully formed network packets (network) and ultimately to transport layers that manage packets and the reliable transport of data, ensuring the appropriate resending of packets that are not properly received at the remote end. SMPP is an application layer protocol, using the same underlying communications as protocols such as well known services like telnet, ftp, http etc. An application layer connection is typically presented as a buffer through which an application can send and receive data. The transport of this data between one peer and another is completely hidden from the ESME or MC. In fact, nowhere in SMPP is there any support for parity, CRC checking or any other form of corruption detection .This is all automatically handled by the application layer functionality of TCP/IP or X.25. The only assumption made by an SMPP-based application, ESME or MC, is that the remote peer conforms to the protocol and that a PDU sent from one peer to another is fully recignisable as an SMPP PDU.
D I C
D I C
ESME
Message Center
Network
Packet Transfer
Network
Data
Octet Transfer
Data
Physical
Physical
SMS Forum
20 of 127
www.smsforum.net
SMS
FORUM
2.2
Establishing a Session first requires the ESME to connect to the MC. This is achieved using a TCP/IP or X.25 connection. The MC will typically be listening for connections one one or more TCP/IP ports or X.25 interfaces (X.25 programmatic interfaces, DTE addresses and X.25 protocol Ids). For TCP/IP, IANA has standardised port 2775 for SMPP. However this will vary across MC vendors and operators.
2.3
Session States
As already described, an ESME begins a session by connecting to the MC across TCP/IP or X.25. This connection is referred to as an SMPP session and can have several states:
2.3.1 Open
An ESME has established a network connection to the SMSC but has not yet issued a Bind request. The MC is only aware of the TCP/IP or X.25 connection. No identification details have yet been exchanged.
ESME
Network Connection
Message Center
Initiated by ESME
2.3.2 Bound_TX
A connected ESME has requested to bind as a Transmitter (by issuing a bind_transmitter PDU) and has received a bind_transmitter_resp PDU from the SMSC authorising its bind request. An ESME bound as a transmitter may send short messages to an SMSC for onward delivery to a Mobile Station or to another ESME. The ESME may also replace, query or cancel a previously submitted short message.
E S ME
N e tw o rk C o n n e ctio n
Message C enter
SMS Forum
21 of 127
www.smsforum.net
SMS
FORUM
2.3.3 Bound_RX
A connected ESME has requested to bind as a Receiver (by issuing a bind_receiver PDU) and has received a bind_receiver_resp PDU from the SMSC authorising its Bind request. An ESME bound as a receiver may receive short messages from an SMSC, which may be originated, by a mobile station, by another ESME or by the SMSC itself (for example an SMSC delivery receipt).
E S ME
N e tw o rk C o n n e ctio n
Message C enter
b in d _ re ce ive r b in d _ re ce ive r_ re sp
2.3.4 Bound_TRX
A connected ESME has requested to bind as a Transceiver (by issuing a bind_transceiver PDU) and has received a bind_transceiver_resp PDU from the SMSC authorising its Bind request. An ESME bound as a Transceiver is authorised to use all operations supported by a Transmitter ESME and a Receiver ESME. A transceiver ESME is effectively the combination of Transmitter and Receiver. Thus an ESME bound as a transceiver may send short messages to an SMSC for onward delivery to a Mobile Station or to another ESME and may also receive short messages from an SMSC, which may be originated by a mobile station, by another ESME or by the SMSC itself (for example an SMSC delivery receipt).
E S ME
N e tw o rk C o n n e ctio n
Message C enter
SMS Forum
22 of 127
www.smsforum.net
SMS
FORUM
2.3.5 Unbound
An ESME bound as a TX, RX or TRX ESME has issued an unbind request to the MC requesting termination of the SMPP session. The MC may also issue an unbind request to the ESME. The receiving peer will then respond with an unbind_resp PDU acknowledging the request to end the session.
2.3.6 Closed
The ESME or SMSC has closed the network connection. This typically results as a follow-on to an Unbound state where one peer has requested termination of the session. Closed state can also result from either peer terminating the connection unexpectedly or due to a communications error within the underlying network that results in termination of the network connection.
2.3.7 Outbound
The purpose of the outbind operation is to allow the SMSC signal an ESME to originate a bind_receiver or bind_transceiver request to the SMSC. An example of where such a facility might be applicable would be where the SMSC had outstanding messages for delivery to the ESME.
E S ME
N e tw o rk C o n n e ctio n
Message C enter
o u tb in d
Initiated by Mes s age Center
Figure 2-6 Outbound State The following diagram illustrates the concept of Outbind when used to request a receiver or transceiver ESME to bind.
E S ME
N e tw o rk C o n n e ctio n
Message C enter
o u tb in d
b in d _ re ce ive r
b in d _ re ce ive r_ re sp
SMS Forum
23 of 127
www.smsforum.net
SMS
FORUM
2.4
Sample Sessions
To help explain the context of SMPP operations and their related states, the following examples illustrate typical dialogues for the three types of ESME.
E S ME
C o n n e ctio n C lo se d
Clos ed
SMS Forum
24 of 127
www.smsforum.net
SMS
FORUM
E S ME
b in d _ re ce ive r b in d _ re ce ive r_ re sp
Bound_RX
C o n n e ctio n C lo se d
Clos ed
SMS Forum
25 of 127
www.smsforum.net
SMS
FORUM
E S ME
Message C enter
N e tw o rk C o n n e ctio n
Open
C o n n e ctio n C lo se d
Clos ed
SMS Forum
26 of 127
www.smsforum.net
SMS
FORUM
E S ME
Message C enter
N e tw o rk C o n n e ctio n
Open
o u tb in d
Outbound
b in d _ re ce ive r b in d _ re ce ive r_ re sp
Bound_RX
C o n n e ctio n C lo se d
Clos ed
SMS Forum
27 of 127
www.smsforum.net
SMS
FORUM
2.5
PDU Sequencing
Up to now, we have referred to PDUs by name and indicating the request/response pairs in the form of the session diagrams. The impression can be formed that SMPP is a handshake protocol where each request is first acknowledged before issuing the next request. However this is not the case.
E S ME
Message C enter
N e tw o rk C o n n e ctio n
Open
d e live r_ sm (se q =1 ) d e live r_ sm _ re sp (se q =1 ) d e live r_ sm (se q =2 ) d e live r_ sm _ re sp (se q =2 ) su b m it_ sm (se q =2 ) su b m it_ sm _ re sp (se q =2 ) q u e ry_ sm (se q =3 ) q u e ry_ sm _ re sp (se q =3 ) u n b in d (se q =4 ) u n b in d _ re sp (se q =4 )
Unbound
C o n n e ctio n C lo se d
Clos ed
Figure 2-12 Transceiver Session demonstrating PDU Sequencing Referring to the above example, sequence numbers are uniquely issued per request PDU. This means that for every PDU request issued by an ESME, it must use a different sequence number. The recommended approach is to use monotonic increasing sequence numbers, starting at 1. The first issued PDU request has a sequence number of 1, the next uses 2 and so on. Each response PDU must carry the sequence number used in the matching request. In the above example, the MC responded with a bind_transceiver_resp carrying a sequence number of 1, simply because the bind_transceiver request had a sequence number of 1. The next request issued by the ESME was the submit_sm PDU and it carried a sequence number of 2. The third and forth request PDUs to be sent by the ESME further incremented this value to 3 and 4 respectively. SMPP V5.0 Draft06 SMS Forum 28 of 127
www.smsforum.net
SMS
FORUM
At the same time, all deliver_sm requests issued by the MC use monotonic increasing numbers. These can very easily match those issued by the ESME. But the confusion is avoided by the context of a PDU. Basically every request must emanate from either the ESME or MC and the resulting response must emanate from the other party. So in effect, each SMPP session involves two sets of sequence numbers; the set used by the ESME for ESMEoriginated requests and the set used by the MC for MC-originated requests. They can cross over each other in value, but will or should not be confused with each other.
SMS Forum
29 of 127
www.smsforum.net
SMS
FORUM
E S ME
Message C enter
N e tw o rk C o n n e ctio n
Open
su b m it_ sm (se q =2 )
su b m it_ sm (se q =3 )
su b m it_ sm (se q =4 )
su b m it_ sm (se q =5 )
su b m it_ sm (se q =6 )
su b m it_ sm _ re sp (se q =2 )
su b m it_ sm (se q =7 )
q u e ry_ sm (se q =8 ) su b m it_ sm _ re sp (se q =3 ) q u e ry_ sm _ re sp (se q =8 ) su b m it_ sm _ re sp (se q =4 ) su b m it_ sm _ re sp (se q =7 ) su b m it_ sm _ re sp (se q =5 ) su b m it_ sm _ re sp (se q =6 ) u n b in d (se q =9 ) u n b in d _ re sp (se q =9 )
Unbound
C o n n e ctio n C lo se d
Clos ed
Figure 2-13 Asynchronous Transmitter Session The asynchronous behaviour of both the ESME and Message Center is evident in the above session. The ESME issues 5 submit_sm requests to the MC before receiving its first submit_sm_resp. Note that the order in which the MC acknowledges these requests is by no means guaranteed to match the transmission order of the original requests. A Message Centre, because of it using a distributed architecture or because it is in fact SMPP Routing Entity and is distributing the ESME requests to other Message Centres, is likely to acknowledge requests in the order they are completed. Some requests may be distributed to busier parts of the system than others and as such may take longer to process. The result is that the asynchronous sequence of acknowledgements returned to the ESME may not carry the same order as used bye the requests. The same applies for messages delivered by the
SMS Forum
30 of 127
www.smsforum.net
SMS
FORUM
MC to the ESME. The MC must support the ability to process response PDUs in a skew order. The PDU sequence numbers make the request/response matching possible. So regardless of when an asynchronous response arrives, it can be immediately matched to the original request PDU. It is for this reason alone that each PDU request should use a unique sequence number within the context of the session.
E S ME
Message C enter
Reques ts
PDU
PDU
PDU
PDU
PDU
N e tw o rk C o n n e ctio n
PDU PDU PDU PDU PDU
Res pons es
Figure 2-14 Asychronous Windowing The above example shows 5 PDUs asynchronously transmitted across the SMPP session from the ESME to MC. If the MC can process only one PDU at a time, then the benefit of asynchronous transmission is actually not lost. In this situation, the window of PDUs becomes a queue of requests for the MC. As soon as the MC acknowledges each request, it will immediately find another request waiting. If the MC has the ability to dispatch several PDUs at one time for processing, then again the benefit of asynchronous transmission will ensure greater throughput. If the ESME is synchronous and can only send a single PDU at a time, then as soon as the MC acknowledges the PDU, the SMPP session is idle until the response PDU is received by the ESME and the next request is dispatched and received by the MC. If we consider the transport time from ESME to MC to take microseconds, then the overall idle time per operation is 2. This is the elapsed idle time while the response is in transit to the ESME and when the next request is in transit to the MC. An entria asynchronous window of requests effectively avoids this inefficiency.
SMS Forum
31 of 127
www.smsforum.net
SMS
FORUM
2.6
Session Timers
SMPP operations are based on the exchange of operation PDUs between ESME and MC. In order to control the amount of time spent waiting for a response to arrive or particular operation to occur, the following timers are defined: Timer Required SMPP Session State Open Outbound Action on expiration Description
This timer specifies the time lapse allowed between a network connection being established by an ESME and a bind_transmitter, bind_receiver or bind_transceiver request being sent to the MC. The timer can also be used by a MC supporting Outbind and applied to the time interval between an Outbind request being sent to an ESME and its response with a bind request. This timer can also be used by an ESME supporting Outbind where an ESME will close the MC-initiated connection within the defined period if the MC fails to send an Outbind request. This timer should always be active on the MC and on ESMEs supporting Outbind. This timer specifies the time lapse allowed between operations after which an SMPP entity should interrogate whether its peer still has an active session. This timer may be active on either side of the SMPP session (i.e. MC or ESME).
SMS Forum
32 of 127
www.smsforum.net
SMS
Required SMPP Session State Bound_TX Bound_RX Bound_TRX Action on expiration Description
FORUM
Timer
Inactivity Timer
This timer specifies the maximum time lapse allowed between transactions, after which period of inactivity, an SMPP entity may assume that the session is no longer active. The resulting behaviour is to either close the session or issue an unbind request. This timer may be active on the MC or ESME side of the session. This timer specifies the time lapse allowed between an SMPP request and the corresponding SMPP response. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME).
Response Timer
The entity, which originated the SMPP Request, may assume that Request has not been processed and should take the appropriate action for the particular SMPP operation in question.
2.7
Error Handling
This section addresses typical error scenarios that can occur and how an ESME or MC should go about handling such scenarios
The recommended approach is to continually try to connect or reconnect again at intervals. Many ESME systems provide crucial services to an SMS network. If a network or Message Centre becomes unavailable, causing ESMEs to lose their SMPP connections, then as long as an ESME enters a mode whereby it attempts to reconnect at intervals of say five seconds, then as soon as the network or Message Centre service is restored, the ESME will be quickly reconnected to resume service. Most SMPP sessions will be ESME-initiated, but as we have seen from Outbind, the MC can itself be in a position to connect to an ESME that is configured for Outbind. The likely reason for attempting an Outbind is that messages for the ESME have arrived in the MC. If the connection attempt fails, it is recommend that the MC use a similar mechanism of periodically attempting to Outbind to the ESME. This may be driven by a retry sequence that controls the frequency of delivery attempts made for a given message. Every time the ESMEs message is scheduled for retry, the MC attempts to Outbind to the ESME.
SMS Forum
33 of 127
www.smsforum.net
SMS
FORUM
SMS Forum
34 of 127
www.smsforum.net
SMS
FORUM
2.8
It is a common misconception that windowing provides full flow control. However all that is gained is a finite limit to an asynchronous window and as already discussed section 2.5.4, asynchronous transmission has many advantages in the area of maximising throughput. Flow control relates to the concept of a receiver informing the sender that it cant accept any more data. In TCP, this concept is supported by a receiver buffer advertisement, which can be passed with every packet acknowledgement. The sender uses this data as a means of judging how much data can be sent in subsequent transmissions. This mechanism works fine for TCP, given that congestion is based mostly on volumes of data being sent across busy networks or to a congested receiver. In terms of SMPP, if an ESME or MC submits/delivers messages at a rate that exceeds the capabilities of its peer, congestion may occur. Relying on windowing to solve the problem is not enough. The ESME will continue to top up its Window of unacknowledged requests, keeping the MC under load to process these requests. To better assist a peer (ESME or MC) in avoiding congestion, we would need to provide a means for the receiving peer to indicate to the sending peer, its state of congestion. This is accomplished with the addition of an optional congestion_state TLV. This parameter may be optionally included in any response PDU sent between ESME and MC. This TLV contains a simple integer from 0-100 to indicate the Congestion state ranging from idle to congested. Refer to 4.6.4.45 for details on the values acceptable for this TLV. The ESME or MC can use this value as a means of detecting increased load scenarios on its peer and take the appropriate action to reduce its input rates. In order to get the maximum throughput from the transfer of messages, the MC or ESME should try to maintain the Congestion state between 80-90 (Optimum Load). When commencing an SMPP session, the ESME or MC would begin transmission of requests, with a maximum window of N. If the ESME or MC supports the Congestion_State TLV, then as the responses arrive, the ESME/MC can increase/decrease its transmission rate according to the indicated Congestion state of its peer. If the Congestion_State TLV is supported, then the Window of N can actually be discarded as the Congestion_State itself acts as a better indicator and preventative measure of congestion avoidance. If the TLV is not present in response PDUs, then the simple windowing is the only means of applying flow control within the session. The advantage of using congestion_state over a fixed window is that the ESME can avail of the most optimum performance available at a particular time instead of predetermining some window limit and using this consistently. This recognises that a MC or ESME may be under varying levels of stress and that predetermined performance is not always guaranteed.
SMS Forum
35 of 127
www.smsforum.net
SMS
ESM E M essage C enter
FORUM
Bound_TX 50/sec
80/sec
120/sec
XXX
X X X _resp (congestion_state=85)
120/sec
O ptim um
120/sec
120/sec
100/sec 100/sec
Figure 2-15 Flow Control & Congestion Avoidance using the congestion_state TLV. The above diagram shows a session where an ESME is transmitting PDUs at a rate of 50/second. On recognising the congested_state TLV and its below Optimum value, the ESME increased its rate until the congestion_state enters an optimum range. At this point, the ESME maintains the 120 PDUs/second until the congestion_state enters Nearing Congestion, at which time the ESME relaxes the messaging rate to return the congestion_state to an optimum level.[CL12]
SMS Forum
36 of 127
www.smsforum.net
SMS
FORUM
2.9
SMPP itself, does not define any native encryption mechanisms. The content exchanged across an SMPP session is open to hacking if it is transmitted across an open medium such as the Internet. There are two recommended approaches to securing SMPP sessions.
D I C
D I C
ESME
Message Center
D I C D I C
Secure Session
SMS Forum
37 of 127
www.smsforum.net
SMS
FORUM
SMS Forum
38 of 127
www.smsforum.net
SMS
FORUM
As the concept of Optional Parameters was first introduced V3.4 of the protocol, the following special guidelines were defined: An SMSC that implements SMPP V3.4 or a later version of this protocol must not send optional parameters to an ESME that implements an earlier SMPP version (e.g. V3.3). An SMSC shall determine the SMPP version supported by an ESME during the bind operation. An ESME supporting SMPP V3.3 or earlier will set the interface_version parameter in the bind operation to a value less than 0x34 or equal to 0x00. An SMSC supporting V3.4 or later should return the SMPP version it supports in the sc_interface_version parameter of the bind response PDU. If a bind response does not contain the sc_interface_version parameter, then the ESME should assume that the SMSC does not support the use of optional parameters. An ESME that implements SMPP V3.4 or a later version of this protocol must not send optional parameters to an SMSC that implements an earlier version of this protocol. The ESME shall determine the SMSC version support from the SMPP bind response PDU. An SMSC that implements SMPP V3.4 or later must not generate message IDs greater than 8 octets when communicating with an ESME that supports SMPP V3.3 or earlier.
SMS Forum
39 of 127
www.smsforum.net
SMS
FORUM
3.1
All SMPP PDUs comprise of organised sets of parameters. These parameters can have any of the following formats: Note: Values depicted with a 0x prefix are in Hexidecimal format, meaning that each digit represents 4 binary bits. In short, a 2-digit hex number is actually only 1 octet of data. Parameter Type Integer Description An unsigned integer value, which can be 1, 2 or 4 octets in size. The octets are always encoded in Most Significant Byte (MSB) first order, otherwise known as Big Endian Encoding. A 1-octet Integer with a value 5, would be encoded in a single octet with the value 0x05 A 2-octet integer with the decimal value of 41746 would be encoded as 2 octets with the value 0xA312 A 4-octet integer with the decimal value of 31022623 would be encoded as 4 octets with the value 0x1D95E1F A C-Octet String is a sequence of ASCII characters terminated with a NULL octet (0x00). The string Hello would be encoded in 6 octets (5 characters of Hello and NULL octet) as follows: 0x48656C6C6F00 Two special variants exist for use within SMPP. These are C-octet String (Decimal) and C-Octet String (Hexadecimal), which are used to carry decimal and hexadecimal digit sequences respectively. These fields are encoded the same way as any ASCII string, but are specifically used to designate decimal and hexadecimal numbers when presented in string format. A Decimal C-Octet String 123456789 would be encoded as follows: 0x31323334353637383900 A Hexadecimal C-Octet String A2F5ED278FC would be encoded as follows: 0x413246354544323738464300
C-Octet String
SMS Forum
40 of 127
www.smsforum.net
SMS
FORUM
Description An Octet String is a sequence of octet not necessarily terminated with a NULL octet. Such fields using Octet String encoding typically represent fields that can be used to encode raw binary data. In all circumstances, the field will be either a fixed length field or explicit length field where another field indicate the length of the Octet String field. An example of this is the short_message field of the submit_sm PDU which is Octet String encoded and its length is specified by the previous message_length field. A Tagged Length Value Field is a special composite field that comprises or three parts: A 2-octet Integer (Tag) A 2-octet Integer (Length) An Octet String (Value) The Tag identifies the parameter. The Length indicates the size of the Value field in octets. An example of a TLV is the dest_bearer_type. Its Tag is 0x0007 and had a value size of 1 octet. The value 0x04 indicates USSD as a bearer type. In its encoded form, this TLV would be as follows: 0x0007000104 the first 2 octets 0x0007 identifies the Tag dest_bearer_type. The next two octets 0x0001 indicate the 1-octet length of the value field. The value field 0x04 indicates USSD ref XXXX Table 3-1 SMPP PDU Parameter Types
SMS Forum
41 of 127
www.smsforum.net
SMS
FORUM
SMS Forum
42 of 127
www.smsforum.net
SMS
FORUM
Integer
Integer
Var Max 16
C-Octet String
3.2
The general format of an SMPP PDU consists of a PDU header followed by a body as outlined in the following: SMPP PDU PDU Header (mandatory) Command length 4 octets Command id 4 octets Command status 4 octets Sequence number 4 octets PDU Body (Optional) PDU Body Length = (Command Length value - 16) octets
Table 3-4 SMPP PDU Format The 16-0ctet SMPP Header is a mandatory part of every SMPP PDU and must always be present. The SMPP PDU Body is optional and may not be included with every SMPP PDU.
SMS Forum
43 of 127
www.smsforum.net
SMS
Size (Octets) 4 4 4 4 Type Integer Integer Integer Integer Description Overall size of PDU including header and body Identifies the PDU Used to carry an SMPP error code Used to uniquely identify an SMPP PDU in the context of an SMPP session The Body part of a PDU differs from PDU to PDU and in some cases, there is no body at all.
FORUM
BODY
var. var.
mixed mixed
Table 3-5 SMPP PDU Format The layout of every SMPP PDU consists of a mandatory 16 octets representing the PDU header. The above fields are now explained in detail:
3.2.1.1 Command_length
SMPP is a binary protocol and also supports asynchronous transmission. This means that an ESME or MC must support the ability to decode a PDU from a network connection buffer that may contain several PDUs and not just one. The key to achieving the means of decoding each PDU within a buffer is based on the knowledge of how big each PDU is. The command_length represents the first field of a PDU and its value contains the overall size of the PDU. An application can easily decode a PDU from a buffer by extracting the first 4 octets, assuming these to represent the command_length and then deduce from the value, the overall size of the PDU. Considering that 4 octets have been read from the buffer, the deduced value is decremented by 4 to indicate the remaining PDU data to extract from the buffer. An alternative approach to this is to view each SMPP PDU as a mandatory block of 16 octets representing the PDU header. So an application wishing to decode a PDU for processing must wait until there are at least 16 octets available in the network connection buffer or continually read octets of data until 16 octets have been read. This can now be broken down into the four 4-octet fields that make up the PDU Header. By subtracting 16 from command_length value, the application can evaluate the size of the PDU Body and use the same means of reading data form its buffers until the remaining data has been received.
3.2.1.2 Command_id
The command_id identifies the SMPP operation and although we refer to these operations by name in the form of submit_sm, bind_transmitter etc., in PDU format, these operations are represented by numerical ids. Command_ids for request PDUs are allocated from a range of numbers; 0x00000000 to 0x000001FF. Command_ids for response PDUs are allocated from a range of numbers; 0x80000000 to 0x800001FF. The relationship between the command_id for a request PDU and its associated response PDU is that bit 31 is cleared for the request and set for the response. For example, replace_sm has a command_id = 0x00000007 and is response PDU replace_sm_resp has a command_id = 0x80000007.
SMS Forum
44 of 127
www.smsforum.net
SMS
FORUM
3.2.1.3 Command_status
The command_status represents the means by which an ESME or MC sends an error code to its peer. This field is only relevant in response PDUs. There is no sense in issuing a request to submit a message and at the same time include an error code with the request. So every PDU request always has this field set to NULL (0x00000000). Note: When a response PDU carries a non-NULL command_status field, it is indicating some form of error or rejection of the original request PDU. In such circumstances, a PDU body should not be included in the PDU and the command_length of the PDU should therefore be set to 16 (0x00000010). However some ESMEs or Message Centers may always include a PDU body regardless of the command_status being returned. In such circumstances, the receiving ESME or MC should decode the PDU body but ignore its contents, based on the knowledge that the original request failed.
3.2.1.4 Sequence_number
Sequence_number as already described in section 2.5 represents a means of uniquely identifying each PDU within an SMPP session. It also provides a means of correlating request and response PDUs based on matching sequence number.
SMS Forum
45 of 127
www.smsforum.net
SMS
FORUM
The remaining data represents the PDU body (which in this example relates to the bind_transmitter PDU). This is diagnosed as follows: 53 4D 50 50 33 54 45 53 54 00 73 65 63 72 65 74 30 38 00 53 55 42 4D 49 54 31 00 00 01 01 00 System_id (SMPP3TEST) System_type (secret08) Password (SUBMIT1) Interface_version (0x00) addr_ton (0x01) addr_npi (0x01) addr_range (NULL)
SMS Forum
46 of 127
www.smsforum.net
SMS
FORUM
4.1
SMS Forum
47 of 127
www.smsforum.net
SMS
FORUM
password
4.5.6
system_type
4.5.7
interface_version addr_ton
4.5.8 4.5.9
SMS Forum
48 of 127
www.smsforum.net
SMS
FORUM
4 Var. max 16
4.5.4 4.5.5
TLV
4.6.4.25
SMS Forum
49 of 127
www.smsforum.net
SMS
FORUM
password
4.5.6
system_type
Var. max 13 1 1
4.5.7
interface_version addr_ton
4.5.8 4.5.9
SMS Forum
50 of 127
www.smsforum.net
SMS
FORUM
sequence_number system_id
4 Var. max 16
4.5.4 4.5.5
Optional TLVs: Optional Parameter Name sc_interface_version Type TLV Description SMPP version supported by SMSC 4.6.4.25
SMS Forum
51 of 127
www.smsforum.net
SMS
FORUM
password
C- Octet The password may be used by the String SMSC to authenticate the ESME requesting to bind. C- Octet Identifies the type of ESME system String requesting to bind as a transceiver with the SMSC. Integer Identifies the version of the SMPP protocol supported by the ESME. Integer Type of Number (TON) for ESME address(es) served via this SMPP transceiver session. Set to NULL (Unknown) if not known. Integer Numbering Plan Indicator (NPI) for ESME address(es) served via this SMPP transceiver session. Set to NULL (Unknown) if not known. C- Octet A single ESME address or a range of String ESME addresses served via this SMPP transceiver session. This field may be used by the SMSC for authentication, verification or routing purposes. Set to NULL if not known.
4.5.6
system_type
4.5.7
interface_version addr_ton
4.5.8 4.5.9
addr_npi
4.5.9
address_range
Var. max 41
4.5.11
SMS Forum
52 of 127
www.smsforum.net
SMS
FORUM
sequence_number system_id
4 Var. max 16
4.5.4 4.5.5
Optional TLVs: Optional Parameter Name sc_interface_version Type TLV Description SMPP version supported by SMSC 4.6.4.25
SMS Forum
53 of 127
www.smsforum.net
SMS
FORUM
C- Octet SMSC identifier. String Identifies the SMSC to the ESME. C- Octet The password may be used by the String ESME for security reasons to authenticate the SMSC originating the outbind. Table 4-7outbind PDU
Password
4.5.6
SMS Forum
54 of 127
www.smsforum.net
SMS
FORUM
Integer Defines the overall length of the PDU. Integer 0x00000006 Integer 0x00000000 Integer Set to a unique sequence number. The associated unbind_resp PDU will echo the same sequence number.
4.1.1.9
unbind_resp Syntax
The SMPP unbind_resp PDU is used to reply to an unbind request. It comprises the SMPP message header only. The format of the SMPP unbind_resp PDU is defined in the following table: Field Name command_length command_id command_status sequence_number Size octets 4 4 4 4 Type Description Ref. 4.5.1 4.5.2 4.5.3 4.5.4
Integer Defines the overall length of the PDU. Integer 0x80000006 Integer Indicates outcome of original unbind request. Integer Set to sequence number of original unbind request. Table 4-9 unbind_resp PDU
SMS Forum
55 of 127
www.smsforum.net
SMS
FORUM
Integer Set to overall length of PDU Integer 0x00000015 Integer 0x00000000 Integer Set to a unique sequence number. The associated enquire_link_resp PDU should echo the same sequence number Table 4-10 enquire_link PDU
Integer Set to overall length of PDU Integer 0x80000015 Integer 0x00000000 Integer Set to the same sequence number of original enquire_link PDU
SMS Forum
56 of 127
www.smsforum.net
SMS
FORUM
Integer Defines the overall length of the PDU. Integer 0x80000000 Integer Error code corresponding to reason for sending the generic_nack. Integer Set to sequence number of original PDU or to NULL if the original PDU cannot be decoded. Table 4-12 generic_nack PDU
SMS Forum
57 of 127
www.smsforum.net
SMS
FORUM
4.2
C- Octet String
4.5.15
source_addr_ton
Integer
4.5.9
SMS Forum
58 of 127
www.smsforum.net
SMS
Size octets Var. max 21 Type C-Octet String Description Destination address of this short message For mobile terminated messages, this is the directory number of the recipient MS Indicates Message Mode and Message Type Protocol Identifier. Network specific field. Designates the priority level of the message The short message is to be scheduled by the SMSC for delivery. Set to NULL for immediate message delivery
FORUM
Ref. 4.5.13
1 1 1 1 or 17
validity_period
1 or 17
C- Octet String
The validity period of this message. Set to NULL to request the SMSC default validity period
4.5.19.2
registered_delivery
Integer
Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. Flag indicating if submitted message should replace an existing message. Defines the encoding scheme of the short message user data. Indicates the short message to send from a list of pre- defined (canned) short messages stored on the SMSC. If not using an SMSC canned message, set to NULL. Length in octets of the short_message user data.
4.5.20
replace_if_present_flag
Integer
4.5.21
data_coding
Integer
4.5.22
sm_default_msg_id
Integer
4.5.23
sm_length
Integer
4.5.24
SMS Forum
59 of 127
www.smsforum.net
SMS
Size octets Var. 0-255 Type Octet String Description Up to 255 octets of short message user data. The exact physical limit for short_message size may vary according to the underlying network Applications which need to send messages longer than 254 octets should use the message_payload parameter. In this case the sm_length field should be set to zero
FORUM
Ref. 4.5.25
Var.
TLV
4.2.4
Var.
TLV
4.2.5
SMS Forum
60 of 127
www.smsforum.net
SMS
FORUM
C- Octet String
4.5.15
source_addr_ton
Integer
4.5.9
SMS Forum
61 of 127
www.smsforum.net
SMS
Size octets 1 1 Type Integer Integer Description Indicates Message Mode and Message Type Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. Defines the encoding scheme of the short message user data.
FORUM
Ref.
4.5.16 4.5.20
data_coding
Integer
4.5.22
Var.
TLV
4.2.4
Var.
TLV
4.2.5
SMS Forum
62 of 127
www.smsforum.net
SMS
FORUM
Integer Set to overall length of PDU. Integer 0x00000021 Integer 0x00000000 Integer Set to a Unique sequence number. The associated submit_sm_resp PDU will echo this sequence number. C-Octet The service_type parameter String can be used to indicate the SMS Application service associated with the message. Specifying the service_type allows the ESME to avail of enhanced messaging services such as replace by service type to control the teleservice used on the air interface. Set to NULL for default SMSC settings Integer Type of Number for source address. If not known, set to NULL (Unknown).
4.5.15
source_addr_ton
4.5.9
source_addr_npi
Integer Numbering Plan Indicator for source address. If not known, set to NULL (Unknown).
4.5.10
source_addr
Var. max 21
C-Octet String
Address of SME which originated this message. If not known, set to NULL (Unknown).
4.5.12
SMS Forum
63 of 127
www.smsforum.net
SMS
1 Integer Number of destination addresses indicates the number of destinations that are to follow. A maximum of 255 destination addresses are allowed. Note: Set to 1 when submitting to one SME Address or when submitting to one Distribution List.
FORUM
number_of_dests
SME Format Destination Address (Composite field) Integer 0x01 (SME Address) Integer Type of Number for destination Integer Numbering Plan Indicator for destination C-Octet Destination address of this String short message For mobile terminated messages, this is the directory number of the recipient MS Distribution List Format Destination Address (Composite Field) Integer 0x02 (Distribution List C-Octet Name of Distribution List String Additional destination_address fields can be added as delimited by the number_of_dests field 4.5.9 4.5.10 4.5.13
dest_address
1 1 1 1 or 17
Integer Indicates Message Mode and Message Type Integer Protocol Identifier. Network specific field. Integer Designates the priority level of the message C-Octet The short message is to be String scheduled by the SMSC for delivery. Set to NULL for immediate message delivery
validity_period
1 or 17
C-Octet The validity period of this String message. Set to NULL to request the SMSC default validity period
4.5.19.2
registered_delivery
Integer Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. SMS Forum
4.5.20
64 of 127
www.smsforum.net
SMS
1 Integer Flag indicating if submitted message should replace an existing message. Integer Defines the encoding scheme of the short message user data. Integer Indicates the short message to send from a list of pre- defined (canned) short messages stored on the SMSC. If not using an SMSC canned message, set to NULL. Integer Length in octets of the short_message user data. Octet Up to 255 octets of short String message user data. The exact physical limit for short_message size may vary according to the underlying network Applications which need to send messages longer than 254 octets should use the message_payload parameter. In this case the sm_length field should be set to zero
FORUM
replace_if_present_flag
4.5.21
data_coding
4.5.22
sm_default_msg_id
4.5.23
sm_length short_message
1 Var. 0-255
4.5.24 4.5.25
Var.
TLV
4.2.4
SMS Forum
65 of 127
www.smsforum.net
SMS
Size octets 4 4 4 4 Var. max 65 Type Integer Integer Integer Integer C-Octet String Description Set to overall length of PDU. 0x80000021 Indicates outcome of submit_multi request. Set to sequence number of original submit_multi PDU. This field contains the SMSC message ID of the submitted message. It may be used at a later stage to query the status of a message, cancel or replace the message. The number of messages to destination SME addresses that were unsuccessfully submitted to the SMSC. This is followed by the specified number of unsuccessful SMEs, each specified in a unsuccess_sme field. Unsucessful SME (Composite Field) Integer Integer C-Octet String Integer Type of number for destination Numbering SME Plan Indicator for
FORUM
no_unsuccess
Integer
Destination Address of SME Indicates the success or failure of the submit_multi request to this SME address Additional unsuccess_sme fields can be specified as delimited by the no_unsuccess field. 4.2.5
unsucess_sme
Var.
TLV
SMS Forum
66 of 127
www.smsforum.net
SMS
FORUM
Indicates the application port number associated with the 4.6.4.20 source address of the message. This parameter should be present for WAP applications. The subcomponent in the destination device, which created the user data. Indicates the application port number associated with the destination address of the message. This parameter should be present for WAP applications. 4.6.4.2 4.6.4.21
source_addr_subunit destination_port
The subcomponent in the destination device for which the 4.6.4 user data is intended. The reference number for a particular concatenated short 4.6.4.22 message. Indicates the total number of short messages within the concatenated short message. Indicates the sequence number of a particular short message fragment within the concatenated short message. 4.6.4.23 4.6.4.24
more_messages_to_send Indicates that there are more messages to follow for the destination SME. qos_time_to_live payload_type message_payload
defines the type of payload (e.g. WDP, WCMP, etc.). Contains the extended short message user data. Up to 64K octets can be transmitted. Note: The short message data should be inserted in either the short_message or message_payload fields. Both fields should not be used simultaneously. The sm_length field should be set to zero if using the message_payload parameter. Note: In the case of data_sm, the message_payload TLV is the only means of specifying text.
4.6.4.34
Time to live as a relative time in seconds from submission. 4.6.4.9 4.6.4.10 4.6.4.32
4.6.4.29
Indicates the level of privacy associated with the message. 4.6.4.14 A callback number associated with the short message. This parameter can be included a number of times for multiple callback addresses. 4.6.4.36
SMS Forum
67 of 127
www.smsforum.net
SMS
Description If this parameter is present and there are multiple instances of the callback_num parameter then this parameter must occur an equal number of instances and the order of occurrence determines the particular callback_num_pres_ind which corresponds to a particular callback_num.
FORUM
TLV Name
Ref.
callback_num_pres_ind
callback_num_atag
Associates a displayable alphanumeric tag with the callback number. If this parameter is present and there are multiple instances of the callback_num parameter then this parameter must occur an equal number of instances and the order of occurrence determines the particular callback_num_atag which corresponds to a particular callback_num.
4.6.4.38
The sub-address of the message originator. The sub-address of the message destination. A user response code. The actual response codes are implementation specific. Provides the receiving MS with a display time associated with the message. Indicates the alerting mechanism when the message is received by an MS. Indicates validity information for this message to the recipient MS. This parameter controls the indication and specifies the message type (of the message associated with the MWI) at the mobile station. Indicates the number of messages stored in a mail box Request an MS alert signal be invoked on message delivery.
4.6.4.39 4.6.4.41
Indicates the language of an alphanumeric text message. 4.6.4.19 The MS users reply method to an SMS delivery message 4.6.4.42 received from the network is indicated and controlled by this parameter. Session control information for InteractiveTeleservice. This parameter is used to identify the required USSD Service type when interfacing to a USSD system. Table 4-19 Message Submission Request TLVs 4.6.4.43 4.6.4.44
its_session_info ussd_service_op
SMS Forum
68 of 127
www.smsforum.net
SMS
FORUM
Include to indicate reason for delivery 4.6.4.33 failure. Error code specific to a wireless network. 4.6.4.31 ASCII text giving a description of the 4.6.4.11 meaning of the response Indicates whether the Delivery Pending 4.6.4.28 Flag was set.
4.2.6.1 TON
TON is used to specify the number type. While there are several values defined for TON, the most common values are: National A national number consists of a mobile or fixed line operators prefix, followed by the mobile number itself. When a mobile originates a message to a national number, the TON value of the address is usually set to 2. International International format from a mobile usually involves an international dial-out prefix or the + symbol followed by the country code, operator code and mobile number. International numbers usually carry a TON value of 1. However it is important to note that the + character is never actually encoded in the source_addr or dest_addr fields. For example, a mobile sending a message to +4467811223344 is in fact using a TON=1 and dest_addr = 4467811223344 Alphanumeric Alphanumeric addressing provides a means of using human-readable names for addresses. In SMPP, an alphanumeric address can carry any digit 0-9 and alphabetical character a-z or A-Z. For example a voice mail server may send VoiceMail as a alphanumeric source address and as a means of indicating this, it will set the TON=5. Some mobiles are capable of sending alphanumeric numbers and accomplish this by means of a TON value of 5.
4.2.6.2 NPI
NPI is generally set to 1 by all mobile devices. Its purpose is to specify the numbering plan of the target device, but because these all tend to be mobiles, the value is generally set to 1.
SMS Forum
69 of 127
www.smsforum.net
SMS
FORUM
www.smsforum.net
SMS
FORUM
Each network variation is limited to some fixed maximum length. This may be further affected by data coding scheme. In the case of GSM, a message can have a maximum length of 140 octets (8 bits each). However, if the message is being sent using the standard GSM 7-bit alphabet or one of the supported 7-bit alphabets, 160 characters can be encoded. The ANSI-41 technologies, CDMA and TDMA, are more complicated in defining limits on the text length. Both technologies encode the text in a generic bearer data field that is also used to populate other optional fields. The restriction on text is based on the amount of optional attributes included with the message. The SMSC, depending on configuration, may also reject or truncate messages that exceed the network allowed maximum.
ESM E
B ound_T X B ound_R X
M essage C enter
SM E
4.2.9.2 Scheduled
A scheduled message is one that is not immediately dispatched for delivery to the destination SME. Instead the scheduled date provided with the message (ref. 4.5.19.1) dictates the time that the message will become eligible for delivery. Typical uses of this feature include timed services such as news reports that a user wishes to receive at a certain time. The newsagent SMPP V5.0 Draft06 SMS Forum 71 of 127
www.smsforum.net
SMS
FORUM
ESME may submit batches of messages every few hours, each message scheduled according to the preferences of the recipient. Another use of scheduled messages is to provide for birthday services or SMS-based reminder applications that pre populate the MC with various scheduled messages for a user.
4.2.9.3 Pre-defined
A pre-defined message is a canned message that is provisioned on a MC. The ESME specifies the message by providing its ID in the default_msg_id field (ref. 4.5.23). The purpose of the predefined message is to relieve the ESME from specifying the actual text, allowing the operator control over what goes to the subscriber.
These Message Modes are described in more detail in the following sections.
SMS Forum
72 of 127
www.smsforum.net
SMS
FORUM
ESM E
B ound_T X
M essage C enter
SM E
SMS Forum
73 of 127
www.smsforum.net
SMS
FORUM
ESM E
B ound_T X
M essage C enter
SM E
s tore & forw ard m ode M ultiple delivery attem pts m ade until m es s age is delivered or expires
SMS Forum
74 of 127
www.smsforum.net
SMS
FORUM
ESM E
B ound_T X
trans ac tion m ode O ne netw ork delivery attem pt m ade
M essage C enter
SM E
subm it_sm
data_sm
data_sm _resp
SMS Forum
75 of 127
www.smsforum.net
SMS
FORUM
4.3
SMS Forum
76 of 127
www.smsforum.net
SMS
Size octets 4 4 4 4 Type Integer Integer Integer Integer Description Set to overall length of PDU. 0x00000005 0x00000000 Set to a Unique sequence number. The associated deliver_sm_resp PDU will echo this sequence number. The service_type parameter can be used to indicate the SMS Application service associated with the message. Specifying the service_type allows the ESME to avail of enhanced messaging services such as replace by service type to control the teleservice used on the air interface. Set to NULL if not known by SMSC Type of Number for source address. Numbering Plan Indicator for source address. Address of SME which originated this message. Type of Number for destination Numbering Plan Indicator for destination Destination address of this short message For mobile terminated messages, this is the directory number of the recipient MS Indicates Message Mode and Message Type Protocol Identifier. Network specific field. Designates the priority level of the message
FORUM
C- Octet String
4.5.15
1 1 1
SMS Forum
77 of 127
www.smsforum.net
SMS
Size octets 1 or 17 Type C-Octet String Description The short message is to be scheduled by the SMSC for delivery. Set to NULL if message not known or message is not scheduled
FORUM
Ref. 4.5.19.1
validity_period
1 or 17
The validity period of this message. Set to NULL if not available Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. Flag indicating if delivered message should replace an existing message. Defines the encoding scheme of the short message user data. Indicates the short message to send from a list of predefined (canned) short messages stored on the SMSC. Set to NULL. If not known Length in octets of the short_message user data. Up to 255 octets of short message user data. The exact physical limit for short_message size may vary according to the underlying network Applications which need to send messages longer than 255 octets should use the message_payload parameter. In this case the sm_length field should be set to zero
4.5.19.2
registered_delivery
4.5.20
replace_if_present_flag
Integer
4.5.21
data_coding
Integer
4.5.22
sm_default_msg_id
Integer
4.5.23
sm_length short_message
1 Var. 0-255
4.5.24 4.5.25
Var.
TLV
4.3.3
SMS Forum
78 of 127
www.smsforum.net
SMS
Size octets 4 4 4 4 Var. Max 65 Var. Type Integer Integer Integer Integer C- Octet String TLV Description Set to overall length of PDU. 0x8000005 Indicates outcome of deliver_sm request. Set to sequence number of original deliver_sm PDU. This field is unused and should be set to NULL
FORUM
4.3.3
Indicates the application port number associated with the 4.6.4.20 source address of the message. This parameter should be present for WAP applications. The subcomponent in the destination device, which created the user data. Indicates the application port number associated with the destination address of the message. This parameter should be present for WAP applications. 4.6.4.2 4.6.4.21
source_addr_subunit destination_port
The subcomponent in the destination device for which the 4.6.4 user data is intended. The reference number for a particular concatenated short 4.6.4.22 message. Indicates the total number of short messages within the concatenated short message. Indicates the sequence number of a particular short message fragment within the concatenated short message. defines the type of payload (e.g. WDP, WCMP, etc.). 4.6.4.23 4.6.4.24
payload_type
4.6.4.10
SMS Forum
79 of 127
www.smsforum.net
SMS
Description Contains the extended short message user data. Up to 64K octets can be transmitted. Note: The short message data should be inserted in either the short_message or message_payload fields. Both fields should not be used simultaneously. The sm_length field should be set to zero if using the message_payload parameter. Note: In the case of data_sm, the message_payload TLV is the only means of specifying text.
FORUM
TLV Name
Ref. 4.6.4.32
message_payload
4.6.4.29
Indicates the level of privacy associated with the message. 4.6.4.14 A callback number associated with the short message. This parameter can be included a number of times for multiple callback addresses. 4.6.4.36
callback_num_pres_ind
Defines the callback number presentation and screening. 4.6.4.37 If this parameter is present and there are multiple instances of the callback_num parameter then this parameter must occur an equal number of instances and the order of occurrence determines the particular callback_num_pres_ind which corresponds to a particular callback_num.
callback_num_atag
Associates a displayable alphanumeric tag with the callback number. If this parameter is present and there are multiple instances of the callback_num parameter then this parameter must occur an equal number of instances and the order of occurrence determines the particular callback_num_atag which corresponds to a particular callback_num.
4.6.4.38
The sub-address of the message originator. The sub-address of the message destination. A user response code. The actual response codes are implementation specific. Provides the receiving MS with a display time associated with the message. Indicates the alerting mechanism when the message is received by an MS. Indicates validity information for this message to the recipient MS. This parameter controls the indication and specifies the message type (of the message associated with the MWI) at the mobile station. Indicates the number of messages stored in a mail box Request an MS alert signal be invoked on message delivery.
4.6.4.39 4.6.4.41
SMS Forum
80 of 127
www.smsforum.net
SMS
Description
FORUM
TLV Name
Ref.
its_reply_type
The MS users reply method to an SMS delivery message 4.6.4.42 received from the network is indicated and controlled by this parameter. Session control information for InteractiveTeleservice. This parameter is used to identify the required USSD Service type when interfacing to a USSD system. Should be present for SMSC Delivery Receipts and Intermediate Notifications. May be present for delivery receipts and Intermediate Notifications SMSC message ID of message being receipted. Should be present for MC Delivery Receipts and Intermediate Notifications. Table 4-23 Message Delivery TLVs 4.6.4.43 4.6.4.44
[CL16]
esm_class Bit 2 of the esm_class is set to 1 to indicate that the message is a delivery receipt.
SMS Forum
81 of 127
www.smsforum.net
SMS
FORUM
message_state TLV This TLV indicates the final state of the original message. Remember a receipt will be sent network_error_code TLV receipted_message_id TLV
Note: Many pre-V3.4 interfaces and Message Centers supporting V3.3 are likely to have a means of passing receipt information within the short_message field. The format specifics of this information is product specific and beyond the scope of this specification. Note: The returning of a message receipt is not always guaranteed. The criteria used to control the returning of a receipt depend on the value set in the registered_delivery field (ref. 4.5.20) of the original message.
[CL17]
However, support for Intermediate Notification functionality is specific to the MC implementation and the MC Service Provider and is beyond the scope of this specification.
SMS Forum
82 of 127
www.smsforum.net
SMS
FORUM
4.4
Ancillary Operations
SMS Forum
83 of 127
www.smsforum.net
SMS
FORUM
sequence_number 4
Set to a unique sequence number. The 4.5.4 associated cancel_sm_resp PDU should echo the same sequence number. Set to indicate SMS Application service, 4.5.15 if cancellation of a group of application service messages is desired. Otherwise set to NULL. Message ID of the message to be cancelled. This must be the SMSC assigned Message ID of the original message. Set to NULL if cancelling a group of messages. 4.5.26
service_type
Var. max 6
C- Octet String
message_id
Var. max 65
C- Octet String
source_addr_ton
Integer
Type of Number of message originator. This is used for verification purposes, and must match that supplied in the original message submission request PDU. If not known, set to NULL. Numbering Plan Identity of message originator. This is used for verification purposes, and must match that supplied in the original message submission request PDU. If not known, set to NULL.
4.5.9
source_addr_npi
Integer
4.5.10
source_addr
Var. max 21
C- Octet String
Source address of message(s) to be cancelled. This is used for verification purposes, and must match that supplied in the original message submission request PDU(s). Type of number of destination SME address of the message(s) to be cancelled. This is used for verification purposes, and must match that supplied in the original message submission request PDU (e.g. submit_sm). May be set to NULL when the message_id is provided.
4.5.12
dest_addr_ton
Integer
4.5.9
SMS Forum
84 of 127
www.smsforum.net
SMS
1 Integer Numbering Plan Indicator of destination SME address of the message(s)) to be cancelled. This is used for verification purposes, and must match that supplied in the original message submission request PDU. May be set to NULL when the message_id is provided.
FORUM
dest_addr_npi
4.5.10
destination_addr
Var. max 21
C- Octet String
Destination address of message(s) to be 4.5.13 cancelled. This is used for verification purposes, and must match that supplied in the original message submission request PDU. May be set to NULL when the message_id is provided.
Integer Set to overall length of PDU. Integer 0x80000008 Integer Indicates outcome of cancel_sm request. Integer Set to sequence number of cancel_sm PDU. Table 4-25 cancel_sm_resp PDU
sequence_number 4
SMS Forum
85 of 127
www.smsforum.net
SMS
FORUM
SMS Forum
86 of 127
www.smsforum.net
SMS
FORUM
sequence_number 4
message_id
Var. Max 65
C- Octet String
Message ID of the message whose state 4.5.26 is to be queried. This must be the SMSC assigned Message ID allocated to the original short message when submitted to the SMSC by the submit_sm, data_sm or submit_multi command, and returned in the response PDU by the SMSC. Type of Number of message originator. This is used for verification purposes, and must match that supplied in the original request PDU (e.g. submit_sm). If not known, set to NULL. Numbering Plan Identity of message originator. This is used for verification purposes, and must match that supplied in the original request PDU (e.g. submit_sm). If not known, set to NULL. Address of message originator. This is used for verification purposes, and must match that supplied in the original request PDU (e.g. submit_sm). If not known, set to NULL. 4.5.9
source_addr_ton
Integer
source_addr_npi
Integer
4.5.10
source_addr
Var. Max 21
C- Octet String
4.5.12
SMS Forum
87 of 127
www.smsforum.net
SMS
FORUM
sequence_number 4
message_id final_date
Var. max 65 1 or 17
4.5.26
message_state error_code
1 1
Integer Integer
SMS Forum
88 of 127
www.smsforum.net
SMS
FORUM
message_id
Var. Max 65
C-Octet String
4.5.26
source_addr_ton
Integer
4.5.9
SMS Forum
89 of 127
www.smsforum.net
SMS
Size octets 1 or 17 Type C- Octet String Description The validity period of this message. Set to NULL to request the SMSC default validity period
FORUM
Ref. 4.5.19.2
registered_delivery
Integer
Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. Indicates the short message to send from a list of pre- defined (canned) short messages stored on the SMSC. If not using an SMSC canned message, set to NULL. Length in octets of the short_message user data. Up to 255 octets of short message user data. The exact physical limit for short_message size may vary according to the underlying network Applications which need to send messages longer than 254 octets should use the message_payload parameter. In this case the sm_length field should be set to zero
4.5.20
sm_default_msg_id
Integer
4.5.23
sm_length short_message
1 Var. 0-255
4.5.24 4.5.25
SMS Forum
90 of 127
www.smsforum.net
SMS
FORUM
4.5
4.5.1 command_length
This 4-octet integer represents the overall length of a PDU. This is described in detail in section 3.2.1.1
4.5.2 command_id
The complete set of SMPP Command IDs and their associated values are defined in the following table. Command ID generic_nack Value 0x80000000 0x00000001 0x80000001 0x00000002 0x80000002 0x00000003 0x80000003 0x00000004 0x80000004 0x00000005 0x80000005 0x00000006 0x80000006 0x00000007 0x80000007 0x00000008 0x80000008 0x00000009 0x80000009 0x0000000A 0x8000000A 0x0000000B 0x0000000C - 0x00000014 0x8000000B - 0x80000014 0x00000015 0x80000015 0x00000016 - 0x00000020 0x80000016 - 0x80000020 0x00000021 0x80000021 0x00000022 - 0x000000FF
bind_receiver bind_receiver_resp bind_transmitter bind_transmitter_resp query_sm query_sm_resp submit_sm submit_sm_resp deliver_sm deliver_sm_resp unbind unbind_resp replace_sm replace_sm_resp cancel_sm cancel_sm_resp bind_transceiver bind_transceiver_resp Reserved outbind Reserved enquire_link enquire_link_resp Reserved submit_multi submit_multi_resp Reserved
SMS Forum
91 of 127
www.smsforum.net
SMS
Value 0x80000022 - 0x800000FF 0x00000100 0x80000100 0x00000101 0x80000101 0x00000102 0x80000102 0x00000103 0x80000103 0x80000104 - 0x8000FFFF
FORUM
Command ID
Reserved for SMPP extension 0x00000104 - 0x0000FFFF Reserved Reserved for SMSC Vendor Reserved
0x00010000 - 0x000101FF 0x80010000 - 0x800101FF 0x00010200 - 0x000102FF 0x80010200 - 0x800102FF 0x00010300 - 0xFFFFFFFF Table 4-30 command_id Values
4.5.3 command_status
The command_status field of an SMPP message response indicates the success or failure of an SMPP request. It is relevant only in the SMPP response message and should be set to NULL in SMPP request messages. The SMPP Error status codes are returned by the SMSC in the command_status field of the SMPP message header and in the error_status_code field of a submit_multi_resp message. The complete set of SMPP Error Codes and their associated values are defined in the following table. Command Status Name ESME_ROK ESME_RINVMSGLEN ESME_RINVCMDLEN ESME_RINVCMDID ESME_RINVBNDSTS ESME_RALYBND ESME_RINVPRTFLG ESME_RINVREGDLVFLG ESME_RSYSERR Reserved ESME_RINVSRCADR ESME_RINVDSTADR ESME_RINVMSGID ESME_RBINDFAIL ESME_RINVPASWD ESME_RINVSYSID Reserved ESME_RCANCELFAIL Reserved ESME_RREPLACEFAIL SMPP V5.0 Draft06 Value 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000A 0x0000000B 0x0000000C 0x0000000D 0x0000000E 0x0000000F 0x00000010 0x00000011 0x00000012 0x00000013 Description No Error Message Length is invalid Command Length is invalid Invalid Command ID Incorrect BIND Status for given command ESME Already in Bound State Invalid Priority Flag Invalid Registered Delivery Flag System Error Reserved Invalid Source Address Invalid Dest Addr Message ID is invalid Bind Failed Invalid Password Invalid System ID Reserved Cancel SM Failed Reserved Replace SM Failed 92 of 127
SMS Forum
www.smsforum.net
SMS
Value 0x00000014 0x00000015 0x000000160x00000032 0x00000033 0x00000034 0x000000350x0000003F 0x00000040 0x00000041 0x00000042 Description Message Queue Full Invalid Service Type Reserved Invalid number of destinations Invalid Distribution List name Reserved
FORUM
Command Status Name ESME_RMSGQFUL ESME_RINVSERTYP Reserved ESME_RINVNUMDESTS ESME_RINVDLNAME Reserved ESME_RINVDESTFLAG Reserved ESME_RINVSUBREP
ESME_RINVESMCLASS ESME_RCNTSUBDL ESME_RSUBMITFAIL Reserved ESME_RINVSRCTON ESME_RINVSRCNPI ESME_RINVDSTTON ESME_RINVDSTNPI Reserved ESME_RINVSYSTYP ESME_RINVREPFLAG ESME_RINVNUMMSGS Reserved ESME_RTHROTTLED Reserved ESME_RINVSCHED ESME_RINVEXPIRY ESME_RINVDFTMSGID ESME_RX_T_APPN ESME_RX_P_APPN ESME_RX_R_APPN ESME_RQUERYFAIL Reserved
0x00000043 0x00000044 0x00000045 0x000000460x00000047 0x00000048 0x00000049 0x00000050 0x00000051 0x00000052 0x00000053 0x00000054 0x00000055 0x000000560x00000057 0x00000058 0x000000590x00000060 0x00000061 0x00000062 0x00000063 0x00000064 0x00000065 0x00000066
Destination flag is invalid (submit_multi) Reserved Invalid submit with replace request (i.e. submit_sm with replace_if_present_flag set) Invalid esm_class field data Cannot Submit to Distribution List submit_sm or submit_multi failed Reserved Invalid Source address TON Invalid Source address NPI Invalid Destination address TON Invalid Destination address NPI Reserved Invalid system_type field Invalid replace_if_present flag Invalid number of messages Reserved Throttling error (ESME has exceeded allowed message limits) Reserved Invalid Scheduled Delivery Time Invalid message validity period (Expiry time) Predefined Message Invalid or Not Found ESME Receiver Temporary App Error Code ESME Receiver Permanent App Error Code ESME Receiver Reject Message Error Code query_sm request failed Reserved Error in the optional part of the PDU Body. Optional Parameter not allowed Invalid Parameter Length. Expected Optional Parameter missing Invalid Optional Parameter Value Reserved Delivery Failure (used for data_sm_resp) Unknown Error ESME Not authorised to use specified service_type[CL18] ESME Prohibited from using specified operation.[CL19]
0x00000067 0x00000068 - 0x000000BF ESME_RINVOPTPARSTREAM 0x000000C0 ESME_ROPTPARNOTALLWD 0x000000C1 ESME_RINVPARLEN 0x000000C2 ESME_RMISSINGOPTPARAM 0x000000C3 ESME_RINVOPTPARAMVAL 0x000000C4 Reserved 0x000000C5 - 0x000000FD ESME_RDELIVERYFAILURE 0x000000FE ESME_RUNKNOWNERR 0x000000FF ESME_RSERTYPUNAUTH 0x00000100 ESME_RPROHIBITED 0x00000101
SMS Forum
93 of 127
www.smsforum.net
SMS
Value 0x00000102 0x00000103
FORUM
Description Specified service_type is unavailable[CL20] Specified service_type is denied due to inappropriate message content wrt. Selected service_type[CL21] Reserved for SMPP extension Reserved for SMSC vendor specific errors Reserved
Reserved for SMPP extension 0x000001030x000003FF Reserved for SMSC vendor 0x00000400specific errors 0x000004FF Reserved 0x000005000xFFFFFFFF
SMS Forum
94 of 127
www.smsforum.net
SMS
FORUM
4.5.4 sequence_number
A sequence number allows a response PDU to be correlated with a request PDU. The associated SMPP response PDU must preserve this field. The allowed sequence_number range is from 0x00000001 to 0x7FFFFFFF. In the event of a session using the full range of values for the sequence_number, the ESME or MC should wrap around to 0x00000001. The value 0x00000000 is recommended for use when issuing a generic_nack where the original PDU was deemed completely invalid and its PDU header, was not used to derive a sequence_number for the response PDU. Detailed information on how PDU sequencing works is available in section 2.5.
4.5.5 system_id
The system_id parameter is used to identify an ESME or an SMSC at bind time. An ESME system_id identifies the ESME or ESME agent to the SMSC. The SMSC system_id provides an identification of the SMSC to the ESME.
4.5.6 password
The password parameter is used by the SMSC to authenticate the identity of the binding ESME. The Service Provider may require ESMEs to provide a password when binding to the SMSC. This password is normally issued by the SMSC system administrator. The password parameter may also be used by the ESME to authenticate the identity of the binding SMSC (e.g. in the case of the outbind operation).
4.5.7 system_type
The system_type parameter is used to categorize the type of ESME that is binding to the SMSC. Examples include VMS (voice mail system) and OTA (over-the-air activation system). Specification of the system_type is optional - some SMSCs may not require ESMEs to provide this detail. In this case, the ESME can set the system_type to NULL.
4.5.8 interface_version
This parameter is used to indicate the version of the SMPP protocol. The following interface version values are defined: Interface Version Value Indicates that the EMSE supports version 3.3 or earlier of the SMPP protocol. 0x00-0x33 Indicates that the ESME is supporting SMPP version 3.4 0x34 Indicates that the ESME is supporting SMPP version 5.0 0x50 All other values reserved Table 4-32 interface_version Values
SMS Forum
95 of 127
www.smsforum.net
SMS
FORUM
WAP Client Id (to be 00010010 defined by WAP Forum) All other values reserved Table 4-34 NPI Values
4.5.11 address_range
The address_range parameter is used in the bind_receiver and bind_transceiver command to specify a set of SME addresses serviced by the ESME client. A single SME address may also be specified in the address_range parameter. UNIX Regular Expression notation should be used to specify a range of addresses (Refer to Appendix A.) Messages addressed to any destination in this range shall be routed to the ESME. Notes For IP addresses, it is only possible to specify a single IP address. A range of IP addresses is not allowed. IP version 6.0 is not currently supported in this version of the protocol. SMPP V5.0 Draft06 SMS Forum 96 of 127
www.smsforum.net
SMS
FORUM
4.5.12 source_addr
Specifies the address of SME which originated this message. An ESME which is implemented as a single SME address, may set this field to NULL to allow the SMSC to default the source address of the submitted message. Notes An IP address is specified in aaa.bbb.ccc.ddd notation. IP version 6.0 is not supported in V3.4 of the SMPP protocol.
4.5.13 destination_addr
Specifies the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. Notes An IP address is specified in aaa.bbb.ccc.ddd notation. IP version 6.0 is not supported in V3.4 of the SMPP protocol.
4.5.14 esme_addr
Specifies the address of an ESME address to which an alert_notification should be routed. Notes An IP address is specified in aaa.bbb.ccc.ddd notation. IP version 6.0 is not supported in V3.4 of the SMPP protocol.
4.5.15 service_type
The service_type parameter can be used to indicate the SMS Application service associated with the message. Specifying the service_type allows the ESME to: Avail of enhanced messaging services such as replace_if_present by service type (generic to all network types). Control the teleservice used on the air interface (e.g. ANSI-136/TDMA, IS-95/CDMA).
SMSCs may implicitly associate a replace if present function from the indicated service_type in a message submission operation, i.e., the SMSC will always replace an existing message pending delivery, that has the same originating and destination address as the submitted message. For example, an SMSC can ensure that a Voice Mail System using a service_type of VMA has at most one outstanding notification per destination MS by automatically invoking the replace if present function. The following generic service_types are defined: Service Type (NULL) CMT CPT VMN VMA WAP USSD Description Default Cellular Messaging Cellular Paging Voice Mail Notification Voice Mail Alerting Wireless Application Protocol Unstructured Supplementary Services Data
Table 4-35 service_type Values All other values are carrier specific and are defined by mutual agreement between the SMSC Service Provider and the ESME application. SMPP V5.0 Draft06 SMS Forum 97 of 127
www.smsforum.net
SMS
FORUM
4.5.16 esm_class
The esm_class parameter is used to indicate special message attributes associated with the short message. The esm_class parameter is encoded as follows in the submit_sm, submit_multi and data_sm (ESME -> SMSC) PDUs: esm_class Bits 7 6 5 4 3 2 1 0 Messaging Mode (bits 1-0) x x x x x x 0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 Default SMSC Mode (e.g. Store and Forward) Datagram mode Forward (i.e. Transaction) mode Store and Forward mode (use to select Store and Forward mode if Default SMSC Mode is non Store and Forward) Default message Type (i.e. normal message) Short Message contains SMSC Delivery Receipt Short Message contains Intermediate Delivery Notification Short Message contains ESME Delivery Acknowledgement Short Message contains ESME Manual User Acknowledgement Short Message contains Conversation Abort (Korean CDMA) No specific features selected UDHI Indicator (only relevant for MT short messages) Set Reply Path (only relevant for GSM network) Set UDHI and Reply Path (only relevant for GSM network) Table 4-36 esm_class Bit Values The default setting of the esm_class parameter is 0x00. Notes:If an ESME encodes GSM User Data Header information in the short message user data, it must set the UDHI flag in the esm_class field. If the SMSC delivers a short message that contains GSM User Data Header information encoded in the short_message or message_payload parameter, it must set the UDHI flag in the esm_class field. For GSM networks, the concatenation related optional parameters (sar_msg_ref_num, sar_total_segments, sar_segment_seqnum) or port addressing related optional parameters (source_port, destination_port) cannot be used in conjunction with encoded User Data Header in the short_message (user data) field. This means that the above listed optional parameters cannot be used if the User Data Header Indicator flag is set. Meaning
x x 0 0 0 0 x x Message Type (bits 2 and 5) ANSI-41 Specific (bits 5-2) GSM Specific (bits 7-6) x x 0 0 0 1 x x x x 1 0 0 0 x x x x 0 0 1 0 x x x x 0 1 0 0 x x x x 0 1 1 0 x x 0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 x x x x x x
SMS Forum
98 of 127
www.smsforum.net
SMS
FORUM
4.5.17 protocol_id
GSM Set according to GSM 03.40 [GSM 03.40] ANSI-136 (TDMA) For mobile terminated messages, this field is not used and is therefore ignored by the SMSC. For ANSI-136 mobile originated messages, the SMSC should set this value to NULL. IS-95 (CDMA) For mobile terminated messages, this field is not used and is therefore ignored by the SMSC. For IS-95 mobile originated messages, the SMSC should set this value to NULL.
4.5.18 priority_flag
The priority_flag parameter allows the originating SME to assign a priority level to the short message: Priority Level GSM non-priority priority priority priority All other values reserved
0 1 2 3
SMS Forum
99 of 127
www.smsforum.net
SMS
FORUM
4.5.19.2 validity_period
The validity_period parameter indicates the SMSC expiration time, after which the message should be discarded if not delivered to the destination. It can be defined in absolute time format or relative time format.
YY
MM DD hh mm ss t nn
SMS Forum
100 of 127
www.smsforum.net
SMS
FORUM
SMS Forum
101 of 127
www.smsforum.net
SMS
FORUM
4.5.20 registered_delivery
The registered_delivery parameter is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: registered_delivery Bits Meaning
7 6 5 4 3 2 1 0 SMSC Delivery Receipt (bits 1 and 0) x x x x x x 0 0 x x x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 x x x x 0 0 x x SME originated Acknowledgement (bits 3 and 2) x x x x 0 1 x x x x x x 1 0 x x x x x x 1 1 x x No SMSC Delivery Receipt requested (default) SMSC Delivery Receipt requested where final delivery outcome is delivery success or failure SMSC Delivery Receipt requested where the final delivery outcome is delivery failure SMSC Delivery Receipt requested where the final delivery outcome is success[CL22] No recipient SME acknowledgment requested (default) SME Delivery Acknowledgement requested SME Manual/User Acknowledgment requested Both Delivery and Manual/User Acknowledgment requested No Intermediate notification requested (default) Intermediate Notification (bit 5) x x x 0 x x x x Intermediate notification requested Support for Intermediate Notification Functionality is specific to the MC implementation and is beyond the scope of the SMPP Protocol Specification.
x x x 1 x x x x
Reserved
SMS Forum
102 of 127
www.smsforum.net
SMS
FORUM
4.5.21 replace_if_present_flag
The replace_if_present_flag parameter is used to request the SMSC to replace a previously submitted message that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service_type match the same fields in the new message. Value 0 1 2 - 255 Meaning Dont replace (default) Replace reserved
Table 4-41 replace_if_present Values ESME applications that use this SMSC messaging function should use the same service_type and set the replace_if_present_flag parameter consistently to 1 for all messages, including the first message. This ensures that the SMSC has at most one message pending per destination SME for a particular application (e.g. voice mail notification).
SMS Forum
103 of 127
www.smsforum.net
SMS
FORUM
4.5.22 data_coding
The following values are defined for this field: data_coding Bits Meaning
7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 . . . . . . . . 1 0 1 1 1 1 1 1 1 1 0 0 x x x x 1 1 0 1 x x x x 1 1 1 0 x x x x 1 1 1 1 x x x x SMSC Default Alphabet IA5 (CCITT T.50)/ASCII (ANSI X3.4) Octet unspecified (8-bit binary) Latin 1 (ISO-8859-1) Octet unspecified (8-bit binary) JIS (X 0208-1990) Cyrllic (ISO-8859-5) Latin/Hebrew (ISO-8859-8) UCS2 (ISO/IEC-10646) Pictogram Encoding ISO-2022-JP (Music Codes) Reserved Reserved Extended Kanji JIS (X 0212-1990) KS C 5601 reserved
GSM MWI control - see [GSM 03.38] GSM MWI control - see [GSM 03.38] Reserved GSM message class control - see [GSM 03.38]
Table 4-42 data_coding Values Notes: a. These coding schemes are common to GSM, TDMA and CDMA. The SMPP protocol allows ESME applications to use the same DCS value (i.e. the GSM 03.38 value) for all three technologies. b. In cases where a Data Coding Scheme is defined for TDMA and/ or CDMA but not defined for GSM, SMPP uses GSM 03.38 reserved values. c. There is no default setting for the data_coding parameter. d. The data_coding parameter will evolve to specify Character code settings only. Thus the recommended way to specify GSM MWI control is by specifying the relevant settings in the optional parameters ms_msg_wait_facilities and ms_validity. e. The data_coding parameter will evolve to specify Character code settings only. Thus the recommended way to specify GSM message class control is by specifying the relevant setting in the optional parameter dest_addr_subunit. SMPP V5.0 Draft06 SMS Forum 104 of 127
www.smsforum.net
SMS
FORUM
4.5.23 sm_default_msg_id
The sm_default_msg_id parameter specifies the SMSC index of a pre-defined (canned) message. sm_default_msg_id Value 0 1-254 255 Meaning reserved Allowed values Reserved Table 4-43 sm_default_msg_id Values
4.5.24 sm_length
The sm_length parameter specifies the length of the short_message parameter in octets. The sm_length should be set to 0 in the submit_sm, submit_multi, and deliver_sm PDUs if the message_payload parameter is being used to send user data larger than 254 octets. sm_length Value 0 1-254 255 Meaning no user data in short message field allowed not allowed Table 4-44 sm_length Values
4.5.25 short_message
The short_message parameter contains the user data. A maximum of 254 octets can be sent. ESMEs should use the optional message_payload parameter in submit_sm, submit_multi, and deliver_sm to send larger user data sizes.
4.5.26 message_id
The unique message identifier reference assigned by the SMSC to each submitted short message. It is an opaque value and is set according to SMSC implementation. It is returned by the SMSC in the submit_sm_resp, submit_multi_resp, deliver_sm_resp and data_sm_resp PDUs and may be used by the ESME in subsequent SMPP operations relating to the short message, e.g. the ESME can use the query_sm operation to query a previously submitted message using the SMSC message_id as the message handle.
4.5.27 number_of_dests
The number_of_dests parameter indicates the number of dest_address structures that are to follow in the submit_multi operation. A maximum of 254 destination address structures are allowed.
SMS Forum
105 of 127
www.smsforum.net
SMS
FORUM
4.5.28 dest_flag
Flag which will identify whether destination address is a Distribution List (DL) name or SME address. dest_flag Value 1 2 Meaning SME Address Distribution List Name Table 4-45 dest_flag Values
4.5.29 no_unsuccess
The number of unsuccessful SME destinations to which delivery was attempted for a submit_multi operation.
4.5.30 dl_name
The reference name for a distribution list provisioned on the SMSC. Distribution list names are defined by mutual agreement between the SMSC and the ESME.
4.5.31 message_state
The following is a list of allowable states for a short message. The message_state value is returned by the SMSC to the ESME as part of the query_sm_resp PDU. Message State Value Description ENROUTE 1 The message is in enroute state. DELIVERED 2 Message is delivered to destination EXPIRED 3 Message validity period has expired. DELETED 4 Message has been deleted. UNDELIVERABLE 5 Message is undeliverable ACCEPTED 6 Message is in accepted state (i.e. has been manually read on behalf of the subscriber by customer service) UNKNOWN 7 Message is in invalid state REJECTED 8 Message is in a rejected state Table 4-46 message_state Values
SMS Forum
106 of 127
www.smsforum.net
SMS
FORUM
4.6
TLV fields may be optionally included in an SMPP message. TLVs must always appear at the end of an SMPP PDU. However, they may be included in any convenient order and need not be encoded in the order presented in this document. For a particular SMPP PDU, the ESME or SMSC may include some, all or none of the defined optional parameters as required for the particular application context. For example a paging system may in an SMPP submit_sm operation, include only the callback number related optional parameters.
Table 4-47 TLV Tag Value Ranges The SMPP supported Optional Parameters and their associated Tag Values are listed as follows: Tag dest_addr_subunit Value Wireless Network Technology 0x0005 GSM 0x0006 Generic 0x0007 Generic 0x0008 GSM 0x000D GSM 0x000E Generic 0x000F Generic 0x0010 GSM 0x0017 Generic 0x0019 Generic
dest_network_type dest_bearer_type dest_telematics_id source_addr_subunit source_network_type source_bearer_type source_telematics_id qos_time_to_live payload_type receipted_message_id ms_msg_wait_facilities privacy_indicator source_subaddress
SMS Forum
107 of 127
www.smsforum.net
SMS
0x0203 CDMA, TDMA 0x0204 Generic 0x0205 CDMA, TDMA 0x020A Generic 0x020B Generic 0x020C Generic 0x020D CDMA, TDMA 0x020E Generic 0x020F Generic 0x0210 Generic 0x0302 TDMA 0x0303 TDMA 0x0304 CDMA 0x0381 CDMA, TDMA, GSM, iDEN 0x0420 Generic 0x0421 Generic 0x0422 Generic 0x0423 Generic 0x0424 Generic 0x0425 Generic 0x0426 GSM 0x0427 Generic 0x0501 GSM (USSD) 0x1201 CDMA, TDMA 0x1203 TDMA 0x1204 CDMA, TDMA
FORUM
dest_subaddress user_message_reference user_response_code source_port destination_port sar_msg_ref_num language_indicator sar_total_segments sar_segment_seqnum sc_interface_version callback_num_pres_ind callback_num_atag number_of_messages callback_num dpf_result set_dpf ms_availability_status network_error_code message_payload delivery_failure_reason more_messages_to_send message_state ussd_service_op display_time sms_signal ms_validity its_reply_type its_session_info
SMS Forum
108 of 127
www.smsforum.net
SMS
FORUM
4.6.4.2 source_addr_subunit
The source_addr_subunit parameter is used to indicate where a message originated in the mobile station, for example a smart card in the mobile station or an external device connected to the mobile station. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x000D Length of Value part in octets see 4.6.4.1
SMS Forum
109 of 127
www.smsforum.net
SMS
FORUM
4.6.4.3 dest_network_type
The dest_network_type parameter is used to indicate a network type associated with the destination address of a message. In the case that the receiving system (e.g. SMSC) does not support the indicated network type, it may treat this a failure and return a response PDU reporting a failure. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0006 Length of Value part in octets 0x00 = Unknown 0x01 = GSM 0x02 = ANSI-136/TDMA 0x03 = IS-95/CDMA 0x04 = PDC 0x05 = PHS 0x06 = iDEN 0x07 = AMPS 0x08 = Paging Network 9 to 255 = reserved
4.6.4.4 source_network_type
The source_network_type parameter is used to indicate the network type associated with the device that originated the message. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description source_network_type Length of Value part in octets see 5.3.2.3
4.6.4.5 dest_bearer_type
The dest_bearer_type parameter is used to request the desired bearer for delivery of the message to the destination address. In the case that the receiving system (e.g. SMSC) does not support the indicated bearer type, it may treat this a failure and return a response PDU reporting a failure. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description dest_bearer_type Length of Value part in octets 0x00 = Unknown 0x01 = SMS 0x02 = Circuit Switched Data (CSD) 0x03 = Packet Data 0x04 = USSD 0x05 = CDPD 0x06 = DataTAC 0x07 = FLEX/ReFLEX 0x08 = Cell Broadcast (cellcast) 9 to 255 = reserved
SMS Forum
110 of 127
www.smsforum.net
SMS
FORUM
4.6.4.6 source_bearer_type
The source_bearer_type parameter indicates the wireless bearer over which the message originated. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x000F Length of Value part in octets see 4.6.4.5
4.6.4.7 dest_telematics_id
This parameter defines the telematic interworking to be used by the delivering system for the destination address. This is only useful when a specific dest_bearer_type parameter has also been specified as the value is bearer dependent. In the case that the receiving system (e.g. SMSC) does not support the indicated telematic interworking, it may treat this a failure and return a response PDU reporting a failure. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x0008 Length of Value part in octets to be defined
4.6.4.8 source_telematics_id
The source_telematics_id parameter indicates the type of telematics interface over which the message originated. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0010 Length of Value part in octets see 4.6.4.7
4.6.4.9 qos_time_to_live
This parameter defines the number of seconds which the sender requests the SMSC to keep the message if undelivered before it is deemed expired and not worth delivering. If the parameter is not present, the SMSC may apply a default value. Field Size octets Parameter Tag 2 Length 2 Value 4 Type Integer Integer Integer Description 0x0017 Length of Value part in octets number of seconds for message to be retained by the receiving system.
SMS Forum
111 of 127
www.smsforum.net
SMS
FORUM
4.6.4.10 payload_type
The payload_type parameter defines the higher layer PDU type contained in the message payload. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0019 Length of Value part in octets 0 Default. In the case of a WAP application, the default higher layer message type is a WDP message. See [WDP] for details. 1WCMP message. Wireless Control Message Protocol formatted data. See [WCMP] for details. values 2 to 255 are reserved Table 4-58 payload_type TLV
4.6.4.11 additional_status_info_text
The additional_status_info_text parameter gives an ASCII textual description of the meaning of a response PDU. It is to be used by an implementation to allow easy diagnosis of problems. Field Size octets Parameter Tag 2 Length 2 Value 1 - 256 Type Integer Integer C Octet String Description 0x001D Length of Value part in octets Free format text to allow implementations to supply the most useful information for problem diagnosis. Maximum length is 256 octets.
4.6.4.12 receipted_message_id
The receipted_message_id parameter indicates the ID of the message being receipted in an SMSC Delivery Receipt. This is the opaque SMSC message identifier that was returned in the message_id parameter of the SMPP response PDU that acknowledged the submission of the original message. Field Size octets Parameter Tag 2 Length 2 Value 1 - 65 Type Integer Integer C Octet String Description 0x001E Length of Value part in octets SMSC handle of the message being receipted.
SMS Forum
112 of 127
www.smsforum.net
SMS
FORUM
4.6.4.13 ms_msg_wait_facilities
The ms_msg_wait_facilities parameter allows an indication to be provided to an MS that there are messages waiting for the subscriber on systems on the PLMN. The indication can be an icon on the MS screen or other MMI indication. The ms_msg_wait_facilities can also specify the type of message associated with the message waiting indication. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Description Integer 0x0030 Integer Length of Value part in octets Bits 7......0 Bit mask I00000TT This parameter controls the indication and specifies the message type (of the message associated with the MWI) at the mobile station. The Indicator is encoded in bit 7 as follows: 0 = Set Indication Inactive 1 = Set Indication Active The Type of Message associated with the MWI is encoded in bits 0 and 1 as follows: 00 = Voicemail Message Waiting 01 = Fax Message Waiting 10 = Electronic Mail Message Waiting 11 = Other Message Waiting Table 4-61 ms_msg_wait_facilities TLV
4.6.4.14 privacy_indicator
Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0201 Length of value part in octets 0 = Privacy Level 0 (Not Restricted) (default) 1 = Privacy Level 1 (Restricted) 2 = Privacy Level 2 (Confidential) 3 = Privacy Level 3 (Secret) values 4 to 255 are reserved
Table 4-62 privacy_indicator TLV The privacy_indicator indicates the privacy level of the message.
SMS Forum
113 of 127
www.smsforum.net
SMS
FORUM
4.6.4.15 source_subaddress
The source_subaddress parameter specifies a subaddress associated with the originator of the message. Field Size octets Parameter Tag 2 Length 2 Value Var 2 - 23 Type Integer Integer Octet String Description 0x0202 Length of Value part in octets The first octet of the data field is a Type of Subaddress tag and indicates the type of subaddressing information included, and implies the type and length of subaddressing information which can accompany this tag value in the data field. Valid Tag values are: 00000001 - Reserved 00000010 - Reserved 10000000 - NSAP (Even) [ITUT X.213] 10001000 - NSAP (Odd) [ITUT X.213] 10100000 - User Specified All other values Reserved The remaining octets contain the subaddress. A NSAP address shall be encoded using the preferred binary encoding specified in [ITUT X.213]. In this case the subaddress field contains the Authority and Format Identifier. A User Specified subaddress is encoded according to user specification, subject to a maximum of 22 octets. Table 4-63 source_subaddress TLV
4.6.4.16 dest_subaddress
The dest_subaddress parameter specifies a subaddress associated with the destination of the message. Field Size octets Parameter Tag 2 Length 2 Value Var 2 - 23 Type Integer Integer Octet String Description 0x0203 Length of Value part in octets See 4.6.4.15 for parameter encoding.
Table 4-64 dest_subaddress TLV The dest_subaddress parameter is not supported in the SMPP submit_multi PDU.
SMS Forum
114 of 127
www.smsforum.net
SMS
FORUM
4.6.4.17 user_message_reference
A reference assigned by the originating SME to the short message. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x0204 Length of value part in octets All values allowed.
4.6.4.18 user_response_code
A response code set by the user in a User Acknowledgement/Reply message. The response codes are application specific. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0205 Length of value part in octets 0 to 255 (IS-95 CDMA) 0 to 15 (CMT-136 TDMA)
4.6.4.19 language_indicator
The language_indicator parameter is used to indicate the language of the short message. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x020D Length of value part in octets 0 = unspecified (default) 1 = english 2 = french 3 = spanish 4 = german 5 = Portuguese refer to [CMT-136] for other values
4.6.4.20 source_port
The source_port parameter is used to indicate the application port number associated with the source address of the message. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x020A Length of value part in octets All values allowed.
SMS Forum
115 of 127
www.smsforum.net
SMS
FORUM
4.6.4.21 destination_port
The destination_port parameter is used to indicate the application port number associated with the destination address of the message. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x020B Length of value part in octets All values allowed.
4.6.4.22 sar_msg_ref_num
The sar_msg_ref_num parameter is used to indicate the reference number for a particular concatenated short message. The concatenation related parameters are sar_msg_ref_num, sar_total_segments and sar_segment_seqnum. Where these are present the other parameters of the message should remain unchanged for each short message fragment which forms part of a mobile terminated concatentated short message, with the exception of those parameters for which it makes sense to change them (such as the user data in the short_message parameter).[CL23] Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x020C Length of value part in octets This parameter shall contain an originator generated reference number so that a segmented short message may be reassembled into a single original message. This allows the parallel transmission of several segmented messages. This reference number shall remain constant for every segment which makes up a particular concatenated short message. When present, the PDU must also contain the sar_total_segments and sar_segment_seqnum parameters. Otherwise this parameter shall be ignored.
4.6.4.23 sar_total_segments
The sar_total_segments parameter is used to indicate the total number of short messages within the concatenated short message. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x020E Length of value part in octets This parameter shall contain a value in the range 1 to 255 indicating the total number of fragments within the concatenated short message. The value shall start at 1 and remain constant for every short message, which makes up the concatenated short message. When present, the PDU must also contain the sar_msg_ref_num and sar_segment_seqnum parameters. Otherwise this parameter shall be ignored.
SMS Forum
116 of 127
www.smsforum.net
SMS
FORUM
4.6.4.24 sar_segment_seqnum
The sar_segment_seqnum parameter is used to indicate the sequence number of a particular short message within the concatenated short message. Field Size octets Type Description Parameter Tag 2 Integer 0x020F Length Value 2 1 Integer Length of value part in octets Integer This octet shall contain a value in the range 1 to 255 indicating the sequence number of a particular message within the concatenated short message. The value shall start at 1 and increment by one for every message sent within the concatenated short message. When present, the PDU must also contain the sar_total_segments and sar_msg_ref_num parameters. Otherwise this parameter shall be ignored. Table 4-72 sar_segment_seqnum TLV
4.6.4.25 sc_interface_version
The sc_interface_version parameter is used to indicate the SMPP version supported by the SMSC. It is returned in the bind response PDUs. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0210 Length of value part in octets values as per 5.2.4. (interface_version)
4.6.4.26 display_time
The display_time parameter is used to associate a display time of the short message on the MS. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x1201 Length of value part in octets 0 = Temporary 1 = Default (default) 2 = Invoke values 3 to 255 are reserved
SMS Forum
117 of 127
www.smsforum.net
SMS
FORUM
4.6.4.27 ms_validity
The ms_validity parameter is used to provide an MS with validity information associated with the received short message. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x1204 Length of value part in octets 0 = Store Indefinitely (default) 1 = Power Down 2 = SID based registration area 3 = Display Only values 4 to 255 are reserved
4.6.4.28 dpf_result
The dpf_result parameter is used in the data_sm_resp PDU to indicate if delivery pending flag (DPF) was set for a delivery failure of the short message.. If the dpf_result parameter is not included in the data_sm_resp PDU, the ESME should assume that DPF is not set. Currently this parameter is only applicable for the Transaction message mode. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0420 Length of value part in octets 0 = DPF not set 1 = DPF set values 2 to 255 are reserved
SMS Forum
118 of 127
www.smsforum.net
SMS
FORUM
4.6.4.29 set_dpf
An ESME may use the set_dpf parameter to request the setting of a delivery pending flag (DPF) for certain delivery failure scenarios, such as: MS is unavailable for message delivery (as indicated by the HLR)
The SMSC should respond to such a request with an alert_notification PDU when it detects that the destination MS has become available. The delivery failure scenarios under which DPF is set is SMSC implementation and network implementation specific. If a delivery pending flag is set by the SMSC or network (e.g. HLR), then the SMSC should indicate this to the ESME in the data_sm_resp message via the dpf_result parameter. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0421 length of value part in octets 0 = Setting of DPF for delivery failure to MS not requested 1 = Setting of DPF for delivery failure requested (default) values 2 to 255 are reserved Table 4-77 set_dpf TLV
4.6.4.30 ms_availability_status
The ms_availability_status parameter is used in the alert_notification operation to indicate the availability state of the MS to the ESME. If the SMSC does not include the parameter in the alert_notification operation, the ESME should assume that the MS is in an available state. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0422 Length of value part in octets 0 = Available (Default) 1 = Denied (e.g. suspended, no SMS capability, etc.) 2 = Unavailable values 3 to 255 are reserved
SMS Forum
119 of 127
www.smsforum.net
SMS
FORUM
4.6.4.31 network_error_code
The network_error_code parameter is used to indicate the actual network error code for a delivery failure. The network error code is technology specific. Field Size octets Parameter Tag 2 Length 2 Value 3 Type Description Integer 0x0423 Integer Length of value part in octets Octet String Sub-field Size Network Type 1 Error Code 2
The first octet indicates the network type. The following values are defined: 1 = ANSI 136 Access Denied Reason 2 = IS 95 Access Denied Reason 3 = GSM 4 = ANSI 136 Cause Code 5 = IS 95 Cause Code 6 = ANSI-41 Error 7 = SMPP Error 8 = Message Centre Specific All other values reserved. The remaining two octets specify the actual network error code appropriate to the network type.[CL24] Table 4-79 network_error_code TLV
4.6.4.32 message_payload
The message_payload parameter contains the user data. Its function is to provide an alternative means of carrying text lengths above the 255 octet limit of the short_message field. Field Size octets Parameter Tag 2 Length 2 Value Variable Type Integer Integer Octet String Description 0x0424 Set to length of user data Short message user data. The maximum size is SMSC and network implementation specific.
SMS Forum
120 of 127
www.smsforum.net
SMS
FORUM
4.6.4.33 delivery_failure_reason
The delivery_failure_reason parameter is used in the data_sm_resp operation to indicate the outcome of the message delivery attempt (only applicable for transaction message mode). If a delivery failure due to a network error is indicated, the ESME may check the network_error_code parameter (if present) for the actual network error code. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0425 Length of value part in octets 0 = Destination unavailable 1 = Destination Address Invalid (e.g. suspended, no SMS capability, etc.) 2 = Permanent network error 3 = Temporary network error values 4 to are 255 reserved
Table 4-81 delivery_failure_reason TLV The delivery_failure_reason parameter is not included if the delivery attempt was successful.
4.6.4.34 more_messages_to_send
The more_messages_to_send parameter is used by the ESME in the submit_sm and data_sm operations to indicate to the SMSC that there are further messages for the same destination SME. The SMSC may use this setting for network resource optimization. Field Size octets Type Parameter Tag 2 Integer Length 2 Integer Value 1 Description 0x0426 Length of value part in octets 0 = No more messages to follow 1 = More messages to follow (default) values 2 to 255 are reserved Table 4-82 more_messages_to_send TLV
4.6.4.35 message_state
The message_state optional parameter is used by the SMSC in the deliver_sm and data_sm PDUs to indicate to the ESME the final message state for an SMSC Delivery Receipt. Field Size octets Type Parameter Tag 2 Integer Length 2 Integer Value 1 Description 0x0427 Length of value part in octets Values as per section 5.2.28
SMS Forum
121 of 127
www.smsforum.net
SMS
FORUM
4.6.4.36 callback_num
The callback_num parameter associates a call back number with the message. In TDMA networks, it is possible to send and receive multiple callback numbers to/from TDMA mobile stations. Field Size octets Parameter Tag 2 Length 2 Value Var 4 - 19 Type Description Integer 0x0381 Integer Length of Value part in octets Bits 7......0 Octet String 0000000D (octet 00000TTT (octet 0000NNNN (octet XXXXXXXX (octet : : XXXXXXXX (octet
1) 2) 3) 4) N)
The originating SME can set a Call Back Number for the receiving Mobile Station. The first octet contains the Digit Mode Indicator. Bit D=0 indicates that the Call Back Number is sent to the mobile as DTMF digits encoded in TBCD. Bit D=1 indicates that the Call Back Number is sent to the mobile encoded as ASCII digits. The 2nd octet contains the Type of Number (TON). Encoded as in section 5.2.5. The third octet contains the Numbering Plan Indicator (NPI). Encoded as specified in section 5.2.6 The remaining octets contain the Call Back Number digits encoded as ASCII characters Table 4-84 callback_num TLV
SMS Forum
122 of 127
www.smsforum.net
SMS
Type Description Integer 0x0302 Integer Length of Value part in octets Bits 7......0 Bit mask 0000ppss
FORUM
4.6.4.37 callback_num_pres_ind
Field Size octets Parameter Tag 2 Length 2 Value 1
This parameter controls the presentation indication and screening of the CallBackNumber at the mobile station.If present, the callback_num parameter must also be present. The Presentation Indicator is encoded in bits 2 and 3 as follows: 00 = Presentation Allowed 01 = Presentation Restricted 10 = Number Not Available 11 = Reserved The Screening Indicator is encoded in bits 0 and 1 as follows: 00 = User provided, not screened 01 = User provided, verified and passed 10 = User provided, verified and failed 11 = Network Provided. Table 4-85 callback_num_pres_ind TLV
4.6.4.38 callback_num_atag
The callback_num_atag parameter associates an alphanumeric display with the call back number. Field Size octets Parameter Tag 2 Length 2 Value Var max 65 Type Integer Integer Octet string Description 0x0303 Length of Value part in octets Alphanumeric display tag for call back number Bits 7......0 EEEEEEEE (octet 1) XXXXXXXX (octet 2) : : XXXXXXXX (octet N) The first octet contains the encoding scheme of the Alpha Tag display characters. This field contains the same values as for Data Coding Scheme (see section 5.2.19). The following octets contain the display characters: There is one octet per display character for 7-bit and 8-bit encoding schemes. There are two octets per display character for 16-bit encoding schemes. Table 4-86 callback_num_atag TLV
SMS Forum
123 of 127
www.smsforum.net
SMS
FORUM
4.6.4.39 number_of_messages
The number_of_messages parameter is used to indicate the number of messages stored in a mailbox. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0304 Length of Value part in octets 0 to 99 = allowed values. values 100 to 255 are reserved
4.6.4.40 sms_signal
The sms_signal parameter is used to provide a TDMA MS with alert tone information associated with the received short message. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Integer Integer Integer Description 0x1203 Length of Value part in octets Encoded as per [CMT-136]
4.6.4.41 alert_on_message_delivery
The alert_on_message_delivery parameter is set to instruct a MS to alert the user (in a MS implementation specific manner) when the short message arrives at the MS. Field Size octets Type Parameter Tag 2 Integer Length 2 Integer Value 0 Description 0x130C Length of Value part in octets (= 0) There is no Value part associated with this parameter.
4.6.4.42 its_reply_type
The its_reply_type parameter is a required parameter for the CDMA Interactive Teleservice as defined by the Korean PCS carriers [KORITS]. It indicates and controls the MS users reply method to an SMS delivery message received from the ESME. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x1380 Length of Value part in octets 0 = Digit 1 = Number 2 = Telephone No. 3 = Password 4 = Character Line 5 = Menu 6 = Date 7 = Time 8 = Continue values 9 to 255 are reserved
SMS Forum
124 of 127
www.smsforum.net
SMS
FORUM
4.6.4.43 its_session_info
The its_session_info parameter is a required parameter for the CDMA Interactive Teleservice as defined by the Korean PCS carriers [KORITS]. It contains control information for the interactive session between an MS and an ESME. Field Size octets Parameter Tag 2 Length 2 Value 2 Type Description Integer 0x1383 Integer Length of Value part in octets Octet String Bits 7......0 SSSSSSSS (octet 1) NNNNNNNE (octet 2) Octet 1 contains the session number (0 - 255) encoded in binary. The session number remains constant for each session. The sequence number of the dialogue unit (as assigned by the ESME) within the session is encoded in bits 7..1 of octet 2. The End of Session Indicator indicates the message is the end of the conversation session and is encoded in bit 0 of octet 2 as follows: 0 = End of Session Indicator inactive. 1 = End of Session Indicator active. Table 4-91 its_session_info TLV
4.6.4.44 ussd_service_op
The ussd_service_op parameter is required to define the USSD service operation when SMPP is being used as an interface to a (GSM) USSD system. Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0501 Length of Value part in octets 0 = PSSD indication 1 = PSSR indication 2 = USSR request 3 = USSN request 4 to 15 = reserved 16 = PSSD response 17 = PSSR response 18 = USSR confirm 19 = USSN confirm 20 to 31 = reserved 32 to 255 = reserved for vendor specific USSD operations Table 4-92 ussd_service_op TLV
SMS Forum
125 of 127
www.smsforum.net
SMS
FORUM
4.6.4.45 congestion_state
The congestion_state parameter is used to pass congestion status information between ESME and MC as a means of providing flow control and congestion avoidance capabilities to the sending peer. The TLV can be used in any SMPP operation response PDU as a means of passing congestion status from one peer to another. Typical uses of this would in submit_sm/submit_sm_resp sequences where an ESME would drive a batch of submissions at a high rate and use continual tracking of the returned congestion_state values as a means of gauging the congestion, increasing/decreasing the rate as required to maintain the balance in the Optimum range.[CL25] Field Size octets Parameter Tag 2 Length 2 Value 1 Type Integer Integer Integer Description 0x0428 Length of Value part in octets 0 = Idle 1-29 = Low Load 30-49 = Medium Load 50-79 = High Load 80-90 = Optimum Load 90-99 = Nearing Congestion 100 = Congested / Maximum Load
SMS Forum
126 of 127
www.smsforum.net
SMS
FORUM
5 Change Log
Version Change V5.0 Draft04 V5.0 Draft05 Description Added Change Log to end of document for generalising various changes across draft versions. Incorporated changes from Chris Wright to include definition of REs and rewording of introductary chapter to suit. This includes a newly modified network diagram to depict the ESMEs, MCs & REs. Modified network_error_code TLV to include details from enhancement CR and comments from Seattle Plenary Modified TLV definitions to include actual TLV tag value in Hex instead of TLV name. Change based on similar approach taken with command_id in PDU definitions 3GPP references as provided by Edwin Sandberg, added to references section. V5.0 Draft05 V5.0 Draft06 Made several wording corrections, spelling, capitalisation and grammar corrections throughout document. Removed HEADER/BODY side columns from PDUs as these were causing problems with PDU formatting. Something else, possibly shading or heavy borders will have to be added to provide this separation Added Message Delivery TLVs section under data_sm and deliver_sm definition. Added submit_multi and replace_sm PDU definitions Incorporated CRs: Minor SAR TLV clarification Data_sm short_message/message_payload error (This was not incorporated as specified as document structure has separated deliver ACKs and other message content away from submit_sm/data_sm where it is discussed more generally and in a non- short_message oriented manner. AT&T 2 Error Code CRs BTC ussd_service_op CR for addition of specified TLV to deliver_sm and data_sm operations FC & CA CR Network Error Code Enhancement CR Table 5-1 Change Log
SMS Forum
127 of 127