FreeCalypso > hg > themwi-smsc
comparison doc/Arch-design @ 3:b084a9542471
doc/Arch-design: planned design of local socket interface
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 22 Dec 2023 09:29:21 +0000 |
| parents | b203ebebe9b3 |
| children | da97e78a5586 |
comparison
equal
deleted
inserted
replaced
| 2:b203ebebe9b3 | 3:b084a9542471 |
|---|---|
| 525 for an earlier message which is still active, i.e., still queued for delivery | 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 | 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 | 527 desirable to be able to detect and suppress them. The details remain to be |
| 528 worked out. | 528 worked out. |
| 529 | 529 |
| 530 2.5. Local socket interface between SMSC components | |
| 531 | |
| 532 There will be an ad hoc local UNIX domain socket interface between different | |
| 533 components of ThemWi-SMSC. themwi-smsc-core will be the single server for this | |
| 534 local socket i/f, and all other components will connect to it as clients. | |
| 535 Local socket clients will be able to function in two fundamental ways on this | |
| 536 internal interface: | |
| 537 | |
| 538 a) Irrespective of any other function, each local socket client will be able to | |
| 539 execute "pure client" exchanges with themwi-smsc-core, such as | |
| 540 SMSC_REQ_SUBMIT and SMSC_REQ_CANCEL. | |
| 541 | |
| 542 b) Long-lived SMSC components that perform certain specific roles (IMSI lookup | |
| 543 role, GSM MT delivery role, SMPP peer delivery role for each upstream or | |
| 544 downstream peer) will register with themwi-smsc-core as role-handlers for | |
| 545 these specific roles. | |
| 546 | |
| 547 The architectural model of this internal socket i/f is that of request-response | |
| 548 exchanges: each message is either a request or a response, with responses | |
| 549 matched to requests. There are two possible directions for such exchanges: | |
| 550 | |
| 551 * For "pure client" operations and role-handler (RH) registration exchanges, | |
| 552 requests flow from the connected client to themwi-smsc-core; | |
| 553 | |
| 554 * Once an RH has successfully registered and declared itself to be in "service | |
| 555 up" state, themwi-smsc-core will initiate certain requests toward this RH, | |
| 556 as detailed in this section. | |
| 557 | |
| 558 2.5.1. Pure client exchanges | |
| 559 | |
| 560 All exchanges listed in this section consist of a request issued by the client | |
| 561 toward themwi-smsc-core and a response message in the reverse direction. These | |
| 562 commands will be sent by standalone clients like themwi-smsc-submit and also by | |
| 563 role-handler components: the same process that acts as RH for GSM MT delivery | |
| 564 will need to submit SMs coming from GSM MO activity, the same process that acts | |
| 565 as RH for delivery to a given SMPP peer will need to submit SMs coming from | |
| 566 that peer, etc. | |
| 567 | |
| 568 2.5.1.1. SMSC_REQ_SUBMIT | |
| 569 | |
| 570 This command submits or enters or injects a new SM into the SMSC. The client | |
| 571 will send a struct sm_record, and themwi-smsc-core takes over from there. All | |
| 572 processing described in section 2.4 happens upon this command; failure at any | |
| 573 of the steps detailed there will result in an error response to the issuing | |
| 574 client in this exchange. A successful response indicates that the new SM has | |
| 575 been written into PMS and accepted by the SMSC. | |
| 576 | |
| 577 2.5.1.2. SMSC_REQ_CANCEL | |
| 578 | |
| 579 This command requests that an active (not yet delivered or timed out) SM be | |
| 580 canceled. The SM to be canceled can be identified by its absolute index | |
| 581 (0-based absolute position in PMS) or by a tuple of {OA, DA, MR} - the latter | |
| 582 option is needed for implementation of cancel operation via SMS-COMMAND from | |
| 583 GSM MO side. | |
| 584 | |
| 585 2.5.1.3. SMSC_REQ_CHANGE_SRR | |
| 586 | |
| 587 This command is similar to SMSC_REQ_CANCEL (supports the same ways of | |
| 588 identifying the target message), but instead of cancelling the message, it | |
| 589 changes the state of Status Report Requested flag. | |
| 590 | |
| 591 2.5.2. Role handler registration and service state | |
| 592 | |
| 593 These exchanges flow in the same direction as those listed in section 2.5.1 | |
| 594 (from the connected client to themwi-smsc-core), but are issued only by specific | |
| 595 long-lived processes that serve as specific role-handlers. | |
| 596 | |
| 597 2.5.2.1. SMSC_RH_REGISTER | |
| 598 | |
| 599 The long-lived connected client process sending this request is asking to | |
| 600 register for its specific role. The following 3 roles are possible: | |
| 601 | |
| 602 * ROLE_IMSI_LOOKUP | |
| 603 * ROLE_GSM_MT_DELIVERY | |
| 604 * ROLE_PEER_DELIVERY | |
| 605 | |
| 606 If the role type is ROLE_PEER_DELIVERY, there is an additional argument naming | |
| 607 the specific peer; non-empty names identify downstream peers and the special | |
| 608 name "" (null string) identifies the upstream peer. For the other two role | |
| 609 types, there is no such extra argument: there is only one ROLE_IMSI_LOOKUP and | |
| 610 only one ROLE_GSM_MT_DELIVERY. | |
| 611 | |
| 612 Only one client can be registered for each role: one for ROLE_IMSI_LOOKUP, one | |
| 613 for ROLE_GSM_MT_DELIVERY and one for each peer. Registration attempts for an | |
| 614 already-claimed role will result in an error response. | |
| 615 | |
| 616 2.5.2.2. SMSC_RH_SERVICE_STATE | |
| 617 | |
| 618 The service state of a given RH may be up or down. If the RH process is running | |
| 619 but unable to perform its job (e.g., the upstream peer connection is down), its | |
| 620 service state is down; in order for an RH to receive requests for processing | |
| 621 from themwi-smsc-core, it needs to not only register for its role, but also | |
| 622 declare itself to be in "service up" state. The present exchange makes the | |
| 623 declaration of service state being up or down. | |
| 624 | |
| 625 2.5.3. Exchanges with the IMSI resolver RH | |
| 626 | |
| 627 SMSC_MT_FIND_IMSI: request direction is from themwi-smsc-core to the registered | |
| 628 IMSI resolver RH. The request message carries an MSISDN; the matching response | |
| 629 carries the corresponding IMSI or an error. | |
| 630 | |
| 631 2.5.4. Exchanges with the GSM MT delivery RH | |
| 632 | |
| 633 2.5.4.1. SMSC_MT_TRANSFER | |
| 634 | |
| 635 Request direction is from themwi-smsc-core to the registered GSM MT delivery RH. | |
| 636 This exchange transfers a given SM (intended for GSM MT delivery) into temporary | |
| 637 custody of themwi-smsc-gsmif process, which is the RH for this role. | |
| 638 themwi-smsc-gsmif retains custody of this SM, and themwi-smsc-core regards this | |
| 639 SM as being in the custody of themwi-smsc-gsmif, until one of the following two | |
| 640 outcomes: | |
| 641 | |
| 642 a) The SM is discharged: delivered, canceled or times out as determined by | |
| 643 themwi-smsc-gsmif, with an attendant SMSC_MT_DISCHARGE exchange; | |
| 644 | |
| 645 b) The service goes down (socket client disconnects or declares itself down via | |
| 646 SMSC_RH_SERVICE_STATE). In this case themwi-smsc-core retakes custody of | |
| 647 all still-active SMs that were previously handed over to themwi-smsc-gsmif | |
| 648 via SMSC_MT_TRANSFER. | |
| 649 | |
| 650 2.5.4.2. SMSC_MT_CANCEL | |
| 651 | |
| 652 Request direction is from themwi-smsc-core to the registered GSM MT delivery RH, | |
| 653 which is themwi-smsc-gsmif. themwi-smsc-core issues this request toward | |
| 654 themwi-smsc-gsmif whenever it receives SMSC_REQ_CANCEL for an SM that has been | |
| 655 handed over to themwi-smsc-gsmif via SMSC_MT_TRANSFER. | |
| 656 | |
| 657 2.5.4.3. SMSC_MT_DISCHARGE | |
| 658 | |
| 659 themwi-smsc-gsmif sends this request to themwi-smsc-core to indicate the | |
| 660 discharge (successful delivery, cancellation or validity period expiry) of an | |
| 661 SM that has previously been transferred via SMSC_MT_TRANSFER. | |
| 662 | |
| 663 2.5.5. Exchanges with peer delivery role handlers | |
| 664 | |
| 665 SMSC_DELIVER_TO_PEER: request direction is from themwi-smsc-core to the | |
| 666 registered RH for this peer. The request carries an SM (struct sm_record); | |
| 667 the response carries success or failure. | |
| 668 | |
| 530 3. SMS communication via direct shell access | 669 3. SMS communication via direct shell access |
| 531 | 670 |
| 532 To be filled. | 671 To be filled. |
| 533 | 672 |
| 534 4. Interface to local Osmocom GSM network | 673 4. Interface to local Osmocom GSM network |
