comparison doc/Arch-design @ 4:da97e78a5586

doc/Arch-design: document queueing architecture
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 23 Dec 2023 00:54:24 +0000
parents b084a9542471
children 8a7eb3d4570a
comparison
equal deleted inserted replaced
3:b084a9542471 4:da97e78a5586
664 664
665 SMSC_DELIVER_TO_PEER: request direction is from themwi-smsc-core to the 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); 666 registered RH for this peer. The request carries an SM (struct sm_record);
667 the response carries success or failure. 667 the response carries success or failure.
668 668
669 2.6. Queueing architecture of ThemWi-SMSC
670
671 2.6.1. Queueing in themwi-smsc-core
672
673 While every SM, active or historical, is stored in PMS, only active ones are
674 also held in RAM-based queues by themwi-smsc-core. There are many queues,
675 organized by SM destination:
676
677 2.6.1.1. Queues of SMs waiting to be delivered to SMPP peers
678
679 There will be a separate queue for each upstream or downstream peer, or more
680 precisely, one queue for the single upstream peer and one for each downstream
681 peer. Each peer is another SMSC somewhere else in the world, and each queue
682 holds messages which need to be transferred to that other SMSC.
683
684 When the process that serves as the RH for delivery to a given peer is
685 connected, the corresponding queue will be drained by themwi-smsc-core
686 transferring the SM at the head of the queue to the RH via SMSC_DELIVER_TO_PEER
687 request. Only one such request will be outstanding at any given time to a
688 single RH; once the RH responds to this SMSC_DELIVER_TO_PEER request, completing
689 that elementary exchange, themwi-smsc-core will discharge the SM at the head
690 and proceed to the next one in the queue, doing another SMSC_DELIVER_TO_PEER
691 exchange on it, and so forth.
692
693 2.6.1.2. Queues of SMs waiting for MSISDN-to-IMSI resolution
694
695 There will be a hierarchical structure of queues for this function:
696
697 * The top-level MSISDN-to-IMSI lookup queue will have one entry for each
698 _different_ target MSISDN in need of resolution;
699
700 * Under each unique target MSISDN entry in the just-described queue, there will
701 be a subqueue of individual SMs addressed to that MSISDN.
702
703 When the IMSI resolver RH is connected, themwi-smsc-core will take the MSISDN
704 at the head of the to-be-resolved queue and send it to the RH in a
705 SMSC_MT_FIND_IMSI request. When the RH responds, all SMs that are queued under
706 that MSISDN get their dest_imsi filled in, and are moved to the next queue
707 described in section 2.6.1.4.
708
709 2.6.1.3. Cache of recently completed MSISDN-to-IMSI lookups
710
711 To avoid many repeated queries resolving the same MSISDN to IMSI rapidly back
712 to back, particularly in the case of additional SMs to the same recipient (e.g.,
713 segments of a long message) arriving just after the initial MSISDN-to-IMSI
714 lookup completed and removed the target MSISDN from the queue, there will a
715 cache of recently resolved MSISDN-to-IMSI mappings. The time duration of how
716 long a cached lookup result will be considered valid will be configurable - it
717 is a trade-off between efficiency under high message load vs allowing
718 administrative changes in the mapping of subscribers (association between phone
719 numbers and physically issued SIM cards) and letting them take effect reasonably
720 quickly.
721
722 2.6.1.4. Queues of SMs waiting for final GSM MT delivery
723
724 There will be two queues for messages in this state:
725
726 * The first queue holds MT-intended SMs which are still officially in the
727 custody of themwi-smsc-core;
728
729 * The second queue holds MT SMs that have been transferred into the custody of
730 themwi-smsc-gsmif via SMSC_MT_TRANSFER exchange, see section 2.5.4.1.
731
732 themwi-smsc-core will actively manage the first queue, seeking to transfer each
733 SM into the custody of themwi-smsc-gsmif and move it to the second queue. Once
734 a message has been placed on the second queue, themwi-smsc-core no longer
735 actively manages it - the SM is now a responsiblity of themwi-smsc-gsmif.
736 In good system operation, they get discharged when themwi-smsc-gsmif performs
737 an SMSC_MT_DISCHARGE exchange. However, if themwi-smsc-gsmif goes away, all SMs
738 on the second queue will be moved back to the first queue.
739
740 2.6.2. Queueing in themwi-smsc-gsmif
741
742 themwi-smsc-gsmif is the sw component responsible for accepting MO SMs from GSM
743 subscribers and for delivering MT SMs to them. The former task is very simple
744 (each received SMS-SUBMIT from GSM side turns into SMSC_REQ_SUBMIT), but the
745 latter function (MT delivery) is where the real work lies. Our design approach
746 is that themwi-smsc-core will transfer all destined-for-MT SMs into the custody
747 of themwi-smsc-gsmif as quickly as possible (without waiting for each SM to be
748 delivered in turn, unlike transfers to peer SMSCs via SMPP), and then
749 themwi-smsc-gsmif is responsible for the actual queueing strategy and scheduling
750 of GSM MT delivery attempts.
751
752 The details of queue structure and delivery attempt scheduling strategy in
753 themwi-smsc-gsmif remain to be determined; the current plan is to implement
754 other parts of ThemWi-SMSC first.
755
669 3. SMS communication via direct shell access 756 3. SMS communication via direct shell access
670 757
671 To be filled. 758 To be filled.
672 759
673 4. Interface to local Osmocom GSM network 760 4. Interface to local Osmocom GSM network