We see that when the UDHI bit is set the UDHI is not sent and vice versa, so the workaround we have employed at present is to set the esmClass to 0, which appears to be in direct violation of the standard.
From the SMSC perspective this is what we receive:
2016-09-28 13:14:10,090 DEBUG [org.mobicents.slee.container.activity.ActivityContext] (Test) Firing EventContext[event type id = EventTypeID[name=org.mobicents.resources.smpp.server.SUBMIT_SM,vendor=org.mobicents,version=1.0] , event = (submit_sm: 0x0000009E 0x00000004 0x00000000 0x0000011D) (body: (serviceType [] sourceAddr [0x01 0x01 [xxxxxxxxxxx]] destAddr [0x01 0x01 [xxxxxxxxxxxx]] esmCls [0x43] regDlvry [0x01] dcs [0xF6] message [02700000501516211515B0001087786566F3ED7C7334FB6724F1248389AE5F7BF43A7B13E2256008CD1281414B268F489200578F4FF7C5E2519BA8FAD5E7A15B5E8FB1FDB910F485568F4EFE611B6917B58F7013B6])) (opts: ) , local ac = RA:SmppServerRA:SmppTransactionHandle [smppSessionConfigurationName=Test, smppTransactionType=INCOMING, seqNumnber=285] , address = IP: localhost , serviceID = null]
Then we send the MT ForwardSM we see the UDHI header not present – UDH header = ’02 70 00’
2016-09-28 13:14:10,157 DEBUG [org.mobicents.protocols.sctp.AssociationImpl] (Thread-35) Tx : Ass=Association_103_11 PayloadData [dataLength=248, complete=true, unordered=false, payloadProtocolId=3, streamNumber=1, data=
Start: 0 (0x00) End: 247 (0xF7) Length: 248 (0xF8)
00: 01 00 01 01 00 00 00 F8 02 00 00 08 00 00 00 00 | ........ ........
10: 00 06 00 08 00 00 04 C1 02 10 00 DF 00 00 04 C1 | ........ ........
20: 00 00 04 BB 03 02 00 94 09 01 03 0E 19 0B 12 08 | ........ ........
30: 00 12 04 53 83 75 00 10 06 0B 12 08 00 12 04 24 | ...S.u.. .......$
40: 63 15 00 10 08 B1 62 81 AE 48 04 00 00 00 99 6B | c.....b. .H.....k
50: 1E 28 1C 06 07 00 11 86 05 01 01 01 A0 11 60 0F | .(...... ......`.
60: 80 02 07 80 A1 09 06 07 04 00 00 01 00 19 03 6C | ........ .......l
70: 81 85 A1 81 82 02 01 00 02 01 2C 30 7A 80 08 92 | ........ ..,0z...
80: 05 06 01 22 07 19 F2 84 07 91 24 63 15 00 10 08 | ...".... ..$c....
90: 04 65 04 0C 91 24 63 15 00 10 08 7F F6 61 90 82 | .e...$c. .....a..
A0: 31 41 01 48 52 00 50 15 16 21 15 15 B0 00 10 87 | 1A.HR.P. .!...... // START OF MESSAGE BODY
B0: 78 65 66 F3 ED 7C 73 34 FB 67 24 F1 24 83 89 AE | xef..|s4 .g$.$...
C0: 5F 7B F4 3A 7B 13 E2 25 60 08 CD 12 81 41 4B 26 | _{.:{..% `....AK&
D0: 8F 48 92 00 57 8F 4F F7 C5 E2 51 9B A8 FA D5 E7 | .H..W.O. ..Q.....
E0: A1 5B 5E 8F B1 FD B9 10 F4 85 56 8F 4E FE 61 1B | .[^..... ..V.N.a.
F0: 69 17 B5 8F 70 13 B6 00 -- -- -- -- -- -- -- -- | i...p...
]
When we force the esmClass to 0 we see that the UDHI header is set correctly and the UDH is included in the message body.
Starting routing for EventContext[event type id = EventTypeID[name=org.mobicents.resources.smpp.server.SUBMIT_SM,vendor=org.mobicents,version=1.0] , event = (submit_sm: 0x00000086 0x00000004 0x00000000 0x000000D0) (body: (serviceType [] sourceAddr [0x02 0x01 [423651000180]] destAddr [0x02 0x01 [423651438723]] esmCls [0x00] regDlvry [0x00] dcs [0xF6] message [02700000481516211515B000101EE61D86EE0F7E9C02E71BED88DB54FDDFD8433A63E710B0B99B2C8DFAD5443A1D75C36AC6BD326414FCA6F98FFBBFA1365A03074FC4C0225CBEDEED44CEAA14])) (opts: ) , local ac = RA:SmppServerRA:SmppTransactionHandle [smppSessionConfigurationName=Kannel, smppTransactionType=INCOMING, seqNumnber=208] , address = IP: localhost , serviceID = null]
Here we see the header successfully set and the UDH included in the message body also verified from Wireshark.
2016-09-29 16:27:46,096 DEBUG [org.mobicents.protocols.sctp.AssociationImpl] (Thread-35) Tx : Ass=Association_103_11 PayloadData [dataLength=252, complete=true, unordered=false, payloadProtocolId=3, streamNumber=1, data=
Start: 0 (0x00) End: 251 (0xFB) Length: 252 (0xFC)
00: 01 00 01 01 00 00 00 FC 02 00 00 08 00 00 00 00 | ........ ........
10: 00 06 00 08 00 00 04 C1 02 10 00 E1 00 00 04 C1 | ........ ........
20: 00 00 04 BB 03 02 00 1C 09 01 03 0E 19 0B 12 08 | ........ ........
30: 00 12 04 53 83 75 00 10 06 0B 12 08 00 12 04 24 | ...S.u.. .......$
40: 63 15 00 10 08 B3 62 81 B0 48 04 00 00 01 27 6B | c.....b. .H....'k
50: 1E 28 1C 06 07 00 11 86 05 01 01 01 A0 11 60 0F | .(...... ......`.
60: 80 02 07 80 A1 09 06 07 04 00 00 01 00 19 03 6C | ........ .......l
70: 81 87 A1 81 84 02 01 00 02 01 2C 30 7C 80 08 92 | ........ ..,0|...
80: 05 06 01 22 07 19 F2 84 07 91 24 63 15 00 10 08 | ...".... ..$c....
90: 04 67 44 0C A1 24 63 15 00 10 08 7F F6 61 90 92 | .gD..$c. .....a..
A0: 61 72 62 48 54 06 24 01 00 25 01 00 02 70 00 00 | arbHT.$. .%...p..
B0: 48 15 16 21 15 15 B0 00 10 1E E6 1D 86 EE 0F 7 | H..!.... .......~
C0: 9C 02 E7 1B ED 88 DB 54 FD DF D8 43 3A 63 E7 10 | .......T ...C:c..
D0: B0 B9 9B 2C 8D FA D5 44 3A 1D 75 C3 6A C6 BD 32 | ...,...D :.u.j..2
E0: 64 14 FC A6 F9 8F FB BF A1 36 5A 03 07 4F C4 C0 | d....... .6Z..O..
F0: 22 5C BE DE ED 44 CE AA 14 00 00 00 -- -- -- -- | "\...D.. ....
]
The question is why we need to NOT set the UDHI bit in SMPP in order to have the UDHI bit set in the MT Forward SM message? Your help is very much appreciated.
Thanks and Regards,
Mladen