Hi Frank,

    Thanks for the reply. According to CIMD2 specification you can use up to 128 different packet numbers when submitting MT's. The biggest network operator in Greece uses CIMD2 configured to accept multiple submit SM operations as long as you don't send duplicate packet numbers without receiving an ack first. We have a throughput of 50 to 60 MTs per second with this SMSC using a single CIMD2 socket and a commercial cimd2 client. This is an example of submitting two MT's with this CIMD2 client using different packet numbers without waiting for an ack:
00:09:49.251387 IP 192.168.100.4.42142 > 10.10.10.1.9971: P 4043206268:4043206426(158) ack 3333850963 win 12325 <nop,nop,timestamp 373298475 2652356904>
        0x0000:  4500 00d2 d9bb 4000 4006 50db 0a00 0002  [EMAIL PROTECTED]@.P.....
        0x0010:  c3a7 41e6 a49e 26f3 f0fe 6e7c c6b6 8753  ..A...&...n|...S
        0x0020:  8018 3025 1054 0000 0101 080a 1640 152b  [EMAIL PROTECTED]
        0x0030:  9e17 c128 0230 333a 3138 3109 3032 313a  ...(.03:181.021:
    ........
00:09:49.258634 IP 192.168.100.4.42162 > 10.10.10.1.9971: P 4039328278:4039328436(158) ack 1361679146 win 12354 <nop,nop,timestamp 373298477 2652358442>
        0x0000:  4500 00d2 2e51 4000 4006 fc45 0a00 0002  [EMAIL PROTECTED]@..E....
        0x0010:  c3a7 41e6 a4b2 26f3 f0c3 4216 5129 932a  ..A...&...B.Q).*
        0x0020:  8018 3042 1054 0000 0101 080a 1640 152d  [EMAIL PROTECTED]
        0x0030:  9e17 c72a 0230 333a 3031 3109 3032 313a  ...*.03:011.021:
    ........
00:09:49.398797 IP 10.10.10.1.9971 > 192.168.100.4.42142: P 1:46(45) ack 158 win 32768 <nop,nop,timestamp 2652363396 373298475>
        0x0000:  4500 0061 90c9 4000 3b06 9f3e c3a7 41e6  [EMAIL PROTECTED];..>..A.
        0x0010:  0a00 0002 26f3 a49e c6b6 8753 f0fe 6f1a  ....&......S..o.
        0x0020:  8018 8000 8f14 0000 0101 080a 9e17 da84  ................
        0x0030:  1640 152b 0235 333a 3138 3109 3032 313a  [EMAIL PROTECTED]53:181.021:
    ........                                 .
00:09:49.398810 IP 192.168.100.4.42142 > 10.10.10.1.9971: . ack 46 win 12325 <nop,nop,timestamp 373298512 2652363396>
        0x0000:  4500 0034 d9bc 4000 4006 5178 0a00 0002  [EMAIL PROTECTED]@.Qx....
        0x0010:  c3a7 41e6 a49e 26f3 f0fe 6f1a c6b6 8780  ..A...&...o.....
        0x0020:  8010 3025 18fa 0000 0101 080a 1640 1550  [EMAIL PROTECTED]
        0x0030:  9e17 da84                                ....
00:09:49.398936 IP 10.10.10.1.9971 > 192.168.100.4.42162: P 1:46(45) ack 158 win 32768 <nop,nop,timestamp 2652363396 373298477>
        0x0000:  4500 0061 90ca 4000 3b06 9f3d c3a7 41e6  [EMAIL PROTECTED];..=..A.
        0x0010:  0a00 0002 26f3 a4b2 5129 932a f0c3 42b4  ....&...Q).*..B.
        0x0020:  8018 8000 1c67 0000 0101 080a 9e17 da84  .....g..........
        0x0030:  1640 152d 0235 333a 3031 3109 3032 313a  [EMAIL PROTECTED]53:011.021:
     ........
00:09:49.398942 IP 192.168.100.4.42162 > 10.10.10.1.9971: . ack 46 win 12354 <nop,nop,timestamp 373298512 2652363396>
        0x0000:  4500 0034 2e52 4000 4006 fce2 0a00 0002  [EMAIL PROTECTED]@.......
        0x0010:  c3a7 41e6 a4b2 26f3 f0c3 42b4 5129 9357  ..A...&...B.Q).W
        0x0020:  8010 3042 af20 0000 0101 080a 1640 1550  [EMAIL PROTECTED]
        0x0030:  9e17 da84                                ....
   
Another network operator in Poland that we also have access uses CIMD2 and according to them we can send multiple 03:XXX requests as long as we don't send duplicate packet numbers.
Do you suggest that we use the code of smsc_emi as a template to rewrite smsc_cimd2 ?

Not sure if it applies to CIMD2 too  but it COULD be a restriction by the protocol. In some protocol implementations, you can not send more messages before the previous one has been acked. So no "windowing". In EMI/UCP this is only possible if the SMSC has the "windowing" licensing feature. It sounds odd but thats how it is. Those restrictions come from very old days where it wasnt TCP used and the systems had no memory to buffer future stream data. In the case of CMG SMSC's for example, the connection was originally X.25 and for TCP a "convertor" was placed in front. Also windowing requires some kind of sequence number so the acked packet can be matched by the sent packet. Otherwise you might end up acking the wrong packet.

 

One work around is to establish multiple concurrent sessions. Of course if CIMD2 supports proper windowing as one would expect, then a receiver / sender thread layout as in SMPP and EMI implementations could be done easily. Shouldn't be so difficult to redesign the driver for that. Unfortunately CIMD SMSC's are so rare these days that I have no access to one so I cant do it ..

Reply via email to