SMPP SUBMIT_SM PDU Size for 160-character SMS
The size of a SUBMIT_SM PDU (Protocol Data Unit) for a 160-character SMS message depends on:
- Message Encoding (GSM-7 or UCS-2)
- Optional TLVs (Tag-Length-Value parameters)
- Header fields (command length, command ID, etc.)
Case 1: GSM-7 Encoding (Standard 160-character SMS)
GSM-7 allows 160 characters per SMS (7 bits per character). The message fits in a single SMS without segmentation.
| Field | Size (Bytes) |
|---|---|
| Command Length | 4 |
| Command ID (SUBMIT_SM) | 4 |
| Command Status | 4 |
| Sequence Number | 4 |
| Service Type | 1 (null) |
| Source Addr Ton | 1 |
| Source Addr Npi | 1 |
| Source Addr (e.g., "Sender") | 6 + 1 (null) |
| Dest Addr Ton | 1 |
| Dest Addr Npi | 1 |
| Dest Addr (e.g., "1234567890") | 10 + 1 (null) |
| ESM Class | 1 |
| Protocol ID | 1 |
| Priority Flag | 1 |
| Schedule Delivery Time | 1 (null) |
| Validity Period | 1 (null) |
| Registered Delivery | 1 |
| Data Coding (GSM-7) | 1 |
| SM Default Msg ID | 1 |
| SM Length (140 bytes) | 1 |
| Short Message (Payload) | 140 |
| Optional TLVs (if any) | 0 (assumed) |
| Total PDU Size | ≈ 180–200 bytes |
Case 2: UCS-2 (Unicode) Encoding
For Unicode messages (UCS-2 encoding, 2 bytes per character):
- Max 70 characters per SMS (140 bytes)
- A 160-character message splits into 3 segments (70+70+20)
- Each segment has additional headers (UDH, 6–7 bytes overhead)
| Field | Size (Bytes) |
|---|---|
| Short_message field (including UDH + payload) | ~153 |
| Total PDU per segment | ≈ 200–220 bytes |
| Total for 3 segments | ≈ 600–660 bytes |
Summary
| Encoding | Characters | Segments | PDU Size (Per SMS) | Total PDU Size |
|---|---|---|---|---|
| GSM-7 | 160 | 1 | ~180–200 bytes | ~200 bytes |
| UCS-2 | 160 | 3 | ~200–220 bytes | ~600–660 bytes |
Note: Exact sizes may vary slightly depending on address lengths and optional TLVs.