PDU

A protocol data unit is one SMPP command on the wire, such as submit_sm: a fixed header, then a body set by the command.

Definitions only — a term explained here is not a service we sell.

A protocol data unit is one command on the wire in a named protocol: a fixed header, then a body that depends on the command. In SMPP the header carries the command length, command ID, command status and sequence number.

A submit_sm body carries the addresses, the data coding and the short_message field. That field carries the user data, and a UDH when esm_class signals one; the SMSC maps it into the 3GPP TS 23.040 TPDU on the radio side.

The SMPP decoder parses a pasted PDU in the browser, but it can only read the bytes it is given.

One PDU, field by field

command_length
32
command_id
0x00000004
command_status
0x00000000
sequence_number
1
service_type
source_addr_ton
0
source_addr_npi
0
source_addr
dest_addr_ton
0
dest_addr_npi
0
destination_addr
esm_class
0x00
The header is fixed; the body changes with the command.
Text description

Every PDU starts with a four-byte command length, command ID, command status and sequence number. The body follows.

FAQ

Is a PDU the same as a packet?

No. A PDU belongs to a named protocol with a defined layout; in SMS work it usually means an SMPP command or the encoded short message.

Why does a PDU decode to the wrong text?

The data coding and the user data header are the usual causes.

Can a PDU be decoded without the direction?

Not reliably. A raw TPDU (SMS-SUBMIT vs SMS-DELIVER) has a different field order in each direction; an SMPP PDU names its command in command_id, so the command ID gives the direction.

Learn more

Sources

  1. 3GPP TS 23.040: technical realization of the Short Message Service
  2. 3GPP TS 23.038: alphabets and language-specific information for SMS
  3. SMPP v3.4 specification: command header and short_message field