FreeCalypso > hg > themwi-smsc
comparison doc/Arch-design @ 2:b203ebebe9b3
doc/Arch-design: fill out sections 2.4.[2-5]
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 22 Dec 2023 06:38:16 +0000 |
parents | c4f8a32af088 |
children | b084a9542471 |
comparison
equal
deleted
inserted
replaced
1:c4f8a32af088 | 2:b203ebebe9b3 |
---|---|
443 routing step, with the destination preset to SME_CLASS_GSM and dest_imsi | 443 routing step, with the destination preset to SME_CLASS_GSM and dest_imsi |
444 prefilled. | 444 prefilled. |
445 | 445 |
446 2.4.2. Permission to send to the uplink | 446 2.4.2. Permission to send to the uplink |
447 | 447 |
448 To be described. | 448 Not every local phone number served by ThemWi-SMSC is allowed to send SMS to |
449 our upstream interconnection point with Bandwidth.com SMPP server. As explained | |
450 in section 1.2, our access to Bandwidth P2P SMS interconnection service is | |
451 through a reseller (Sopranica Telecom), and our arrangement is such that we | |
452 have to pay for each individual phone number for which P2P SMS interconnection | |
453 service is provided. The economics of the situation are such that the total | |
454 set of NANP numbers (good for calls) we rent from BulkVS is greater than the | |
455 subset for which we enable outside SMS interconnection service through | |
456 Bandwidth+Sopranica. Therefore, we have a flag in our themwi-nanp database of | |
457 locally owned numbers (NUMBER_FLAG_SMSPROV) which we set only on certain | |
458 numbers, those that are provisioned for outside SMS interconnection and which | |
459 are therefore allowed to send SMS to the outside world. All other locally | |
460 owned phone numbers (those without this flag) can only exchange SMS within our | |
461 fiefdom, including our downstream peers. | |
462 | |
463 For each newly submitted SM, themwi-smsc-core will make a routing determination | |
464 per the previous section, and if the destination is SME_CLASS_UPSTREAM, the | |
465 identity of the sender will be checked. The sender will need to be a locally | |
466 owned number with upstream SMS permission bit set, otherwise the message is | |
467 rejected. | |
449 | 468 |
450 2.4.3. PID and DCS constraints | 469 2.4.3. PID and DCS constraints |
451 | 470 |
452 To be described. | 471 Special codes in PID and DCS octets can invoke many special functions that go |
472 far beyond ordinary human-to-human SMS: setting and clearing voice mail waiting | |
473 indication flags, SIM OTA communication, silent SMS etc. While there are | |
474 legitimate use cases for all of these special services, and an SMSC | |
475 implementation should provide a way for duly authorized network components to | |
476 send such special SMS to local GSM subscribers, it would be irresponsible for | |
477 a public MNO to allow any Alice to send such SMS-encoded trojans to any Bob, or | |
478 to accept the same from Big Bad outside world and forward them directly to | |
479 unsuspecting local users. | |
480 | |
481 The solution adopted for ThemWi-SMSC is that each sw component that accepts SMs | |
482 from untrusted parties will apply filtering rules to both PID and DCS octets. | |
483 In the case of messages originated from local GSM MS, themwi-smsc-gsmif will be | |
484 responsible for preening PID and DCS, whereas in the case of messages coming | |
485 from the outside world, the responsibility falls on themwi-smsc-uplink instead. | |
486 | |
487 The specific masks or ACLs of which PID and DCS codes should be accepted will | |
488 be configurable; the recommended default is to: | |
489 | |
490 * allow any PID in 000xxxxx range (0x00 through 0x1F), but no others; | |
491 | |
492 * allow DCS 0x00 (GSM7 text) and 0x08 (UCS-2 text), but no others. | |
453 | 493 |
454 2.4.4. Validity period and expiry time | 494 2.4.4. Validity period and expiry time |
455 | 495 |
456 To be described. | 496 Given the store-and-forward nature of SMS, the amount of work spent trying to |
497 deliver a message to a "difficult" destination must be bounded. The standard | |
498 SMS architecture of GSM 03.40 provides the notion of a validity period, | |
499 optionally specified by message senders, as the mechanism for limiting the | |
500 lifetime of a message that cannot be delivered right away. | |
501 | |
502 Message validity periods and expiry times will be handled as follows in | |
503 ThemWi-SMSC: | |
504 | |
505 * At the socket interface from message-submitting components to | |
506 themwi-smsc-core, the VP will always be communicated in relative form, as a | |
507 count of seconds. Special value 0 means that the source is not setting the | |
508 VP, and a system-wide default needs to be applied. | |
509 | |
510 * If themwi-smsc-gsmif receives an absolute-format VP from GSM MS, it will | |
511 convert to relative seconds-from-present before submitting the SM to | |
512 themwi-smsc-core. | |
513 | |
514 * themwi-smsc-core will have two configurable settings with regard to message | |
515 longevity: default VP and maximum VP. The default VP setting will be applied | |
516 when no VP is set at the message source: themwi-smsc-submit without explicit | |
517 VP, MO SM from a GSM MS without VP setting, or a message from the outside | |
518 world where SMPP never provides a VP on incoming messages. OTOH, the maximum | |
519 VP setting will serve as a cap in case a user did specify an explicit VP, but | |
520 it is unreasonably long. | |
521 | |
522 2.4.5. Duplicate message detection | |
523 | |
524 One can easily envision various scenarios in which a duplicate copy is received | |
525 for an earlier message which is still active, i.e., still queued for delivery | |
526 to its destination. Instead of adding such duplicates to the queue, it is | |
527 desirable to be able to detect and suppress them. The details remain to be | |
528 worked out. | |
457 | 529 |
458 3. SMS communication via direct shell access | 530 3. SMS communication via direct shell access |
459 | 531 |
460 To be filled. | 532 To be filled. |
461 | 533 |