Overview
If SMS delivery fails at the STP and packet captures show oversized SCCP UDT messages, the STP may reject the traffic due to a standards violation. ITU‑T Q.713 states: “The maximum length of the data parameter in a UDT message is 255 octets.” When RTR/TextPass forwards an SCCP UDT (0x09) with user data > 255 bytes, the downstream STP can reject it (for example with “cause 7 unqualified”).
This scenario can occur when RTR/TextPass is configured with a TCAP segmentation threshold above 255 (for example, the default sccpmaxpdulengthfortcapsegmentation=268), allowing payloads between 256 and that threshold to be sent as UDT without segmentation.
Table of Contents
- Symptoms and Indicators
- Why This Happens
- Solution (Configuration Mitigation)
- Validation (Confirm the Fix)
- Frequently Asked Questions
Symptoms and Indicators
Typical signs in traces/PCAPs when this issue is present:
- SCCP message type is UDT (0x09).
- SCCP user data exceeds the UDT maximum (examples observed include ~259 bytes and ~287 bytes).
- Standards reference (ITU‑T Q.713): “The maximum length of the data parameter in a UDT message is 255 octets.”
- Downstream STP rejection may appear as “cause 7 unqualified”.
Example observation: A provided PCAP showed an MO Forward SM flow where the SMS Router (RTR) forwarded an SCCP UDT whose SCCP user data was ~259 bytes (above the 255‑octet limit), and the STP rejected it.
Note: Payloads above 255 bytes should be sent using XUDT (0x0a) and/or appropriate segmentation. If they are sent as UDT, many STPs will reject them.
Why This Happens
RTR/TextPass can segment transactions at the TCAP level using:
sccpmaxpdulengthfortcapsegmentation
If this value is set greater than 255 (for example, 268):
- An SCCP user data payload such as 259 bytes can remain below the TCAP segmentation threshold, so no segmentation occurs.
- At the same time, 259 bytes is above the SCCP UDT maximum (255), resulting in an oversized UDT.
- The downstream STP may reject the message due to the UDT size constraint (for example returning cause 7 unqualified).
No product defect fix is required for this scenario; the mitigation is a configuration change on the RTR/TextPass side to ensure segmentation occurs at or before 255 bytes.
Solution (Configuration Mitigation)
Set TCAP segmentation to trigger at 255 bytes so SCCP UDT payloads remain within the UDT constraint.
Step 1 — Update configuration on the MGR node
- Log in to the MGR node as the
textpassuser. - Go to the configuration directory:
cd /usr/TextPass/etc
- Back up the current config:
cp common_config.txt common_config.<yyyymmdd>
- Edit the file:
vi common_config.txt
- Add (or update) the following parameter between the
<tpconfig>and</tpconfig>tags:
sccpmaxpdulengthfortcapsegmentation="255"
- Save and exit (for
vi::wq).
Note: If your environment uses per-domain common config files, apply the same change to the relevant domain’s common_config.txt.
Step 2 — Apply on each traffic node (restart required)
On each traffic node/instance (as textpass):
- Record the current value:
tp_walkall | grep -i sccpmaxpdulengthfortcapsegmentation
- Stop TextPass:
tp_stop --textpass
- Start TextPass:
tp_start --textpass
- Confirm services are healthy:
tp_status
- Verify the new value is active:
tp_walkall | grep -i sccpmaxpdulengthfortcapsegmentation
Expected result: the command output reports 255.
Operational note: Restarting TextPass causes a brief service interruption. Perform this during a maintenance window or low-traffic period.
Validation (Confirm the Fix)
- Re-run the previously failing MO SMS flow.
- Capture a fresh trace/PCAP on the RTR-to-STP leg.
- Confirm one (or more) of the following outcomes:
- The RTR segments earlier so SCCP UDT user data does not exceed 255 bytes, and/or
- The downstream STP no longer rejects messages with “cause 7 unqualified” related to oversized UDT payloads.
- If the STP still reports SCCP size violations, verify:
- The config change was applied to the correct domain(s).
- All traffic nodes were restarted and are using the updated value.
- The oversized UDT is not originating upstream from a different peer sending malformed SCCP (UDT with >255 bytes) into the network; that peer must conform to Q.713 and/or use XUDT/segmentation appropriately.
Frequently Asked Questions
- 1. How can this problem be identified quickly?
-
In a PCAP/trace you will see an SCCP UDT (0x09) with user data > 255 bytes, often alongside downstream rejection (for example “cause 7 unqualified”). The standards clue is ITU‑T Q.713: “The maximum length of the data parameter in a UDT message is 255 octets.”
- 2. What configuration value is most relevant on NewNet RTR/TextPass?
-
sccpmaxpdulengthfortcapsegmentation. If it is greater than 255 (for example 268), the RTR may avoid segmentation for payloads between 256 and that threshold, which can lead to oversized UDT messages. - 3. What exact change resolves the STP rejection in this scenario?
-
Set
sccpmaxpdulengthfortcapsegmentation="255"in/usr/TextPass/etc/common_config.txt(inside<tpconfig>...</tpconfig>), then restart TextPass on each traffic node (tp_stop --textpass/tp_start --textpass) and verify viatp_walkall. - 4. How do I verify the change actually took effect on every node?
-
Run
tp_walkall | grep -i sccpmaxpdulengthfortcapsegmentationon each traffic node after restart. It should return 255. - 5. What if oversized UDT messages still appear after setting the threshold to 255?
-
Confirm the correct domain config was edited, all traffic nodes were restarted, and re-check the PCAP to verify which node is emitting the oversized UDT. If a different upstream peer is sending malformed SCCP (UDT with >255 bytes) into the flow, corrective action may be required on that peer to conform to Q.713 or to use XUDT/segmentation appropriately.
Priyanka Bhotika
Comments