FreeCalypso > hg > themwi-system-sw
annotate README @ 100:1579ec0e9fb9
mgw internal code: set GSM side RTP packet size in one place
and also set payload magic value for use by GSM->PSTN code
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 26 Sep 2022 13:57:20 -0800 | 
| parents | 97317ede320a | 
| children | b7cd66acb123 | 
| rev | line source | 
|---|---|
| 29 | 1 This Hg repository contains a work-in-progress named Themyscira Wireless system | 
| 2 software. Themyscira Wireless (ThemWi) is an experimental GSM network operated | |
| 3 by Mother Mychaela of FreeCalypso at a semi-urban/semi-rural location in | |
| 4 Southern California, USA; this GSM network is operated with Osmocom CNI software | |
| 5 components, all running on a single Slackware Linux server. ThemWi system sw | |
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 6 is a suite of daemon processes and command line tools that run on the same | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 7 machine as all those Osmocom sw components and provide some additional | 
| 29 | 8 functionality that is not provided "out of the box" by Osmocom, most important | 
| 9 of which is outside connectivity to USA PSTN. | |
| 10 | |
| 11 We are currently experimenting with using bulkvs.com as our USA PSTN | |
| 12 connectivity provider. Like most low-cost PSTN connectivity providers, they | |
| 13 provide the interface to PSTN in the form of a SIP trunk - while I would | |
| 14 absolutely love to get a traditional TDM trunk instead, with SS7 signaling, | |
| 15 such a toy would be far beyond my budget, hence I have to settle for SIP. | |
| 16 Our current status is: | |
| 17 | |
| 18 * We have already obtained a block of USA phone numbers (NANP, chosen numbers | |
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 19 from an exchange area local to us) from BulkVS. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 20 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 21 * These BulkVS-sourced real NANP numbers have been entered as MSISDNs into | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 22 OsmoHLR records for our test SIMs operating on ThemWi GSM. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 23 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 24 * We can successfully dial calls from one ThemWi GSM phone to another, with our | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 25 themwi-mncc switch understanding all dialing formats that are considered | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 26 standard for cellular phone networks in USA (full international, or 11 digits | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 27 starting with '1' but no '+', or 10 digits only), as well as our own non- | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 28 standard shorthand dialing method with only 4 digits. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 29 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 30 * Whenever someone dials one of our NANP numbers from the outside world, BulkVS | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 31 servers send UDP SIP INVITE packets to our server. Our inbound call gateway | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 32 process is themwi-sip-in; this daemon process listens on UDP port 5060, | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 33 accepts SIP calls from BulkVS (ultimately coming from global worldwide PSTN) | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 34 and turns them into GSM MT calls in MNCC format, going through themwi-mncc | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 35 and ultimately to OsmoMSC. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 36 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 37 The following functionality remains to be implemented: | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 38 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 39 * As a counterpart to themwi-sip-in, there will be another process named | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 40 themwi-sip-out that will serve as a gateway for outbound calls, going from | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 41 GSM MO MNCC to outside PSTN via SIP. The outbound SIP call functional part | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 42 is already implemented in test prototype form in sip-manual-out. | 
| 29 | 43 | 
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 44 * themwi-mgw will be our transcoding RTP bridge, speaking GSM codecs (FR and | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 45 EFR are currently of most interest) on the side toward Osmocom components and | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 46 G.711 (PCMU or PCMA) on the PSTN side. Right now themwi-mgw is a working | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 47 skeleton that allocates endpoints with RTP & RTCP UDP port pairs, but doesn't | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 48 pass any traffic yet. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 49 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 50 Differences from osmo-sip-connector | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 51 ----------------------------------- | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 52 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 53 In the Osmocom community, the "standard" (or generally accepted) way to connect | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 54 a GSM voice network to the outside world is via osmo-sip-connector, an Osmocom | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 55 process that connects to OsmoMSC's MNCC socket on one end and talks SIP on the | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 56 other end. Our combination of themwi-mncc, themwi-sip-in and themwi-sip-out | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 57 effectively takes the place of osmo-sip-connector. Here are the principal ways | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 58 in which our solution differs from osmo-sip-connector: | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 59 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 60 * o-s-c is designed to connect to a local instance of a SIP PBX such as Asterisk | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 61 or FreeSWITCH, as opposed to interfacing directly to an outside SIP trunk | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 62 from/to a PSTN-via-SIP connectivity provider. themwi-system-sw is different | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 63 in this regard: we do NOT use Asterisk or FreeSWITCH or any other similar | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 64 software of "spaceship" complexity, instead our themwi-sip-in and | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 65 themwi-sip-out processes interface directly to our PSTN-via-SIP connectivity | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 66 provider. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 67 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 68 * o-s-c has no internal call switching function for calls from one local GSM | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 69 phone to another, instead such switching is punted to the required Asterisk | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 70 or FreeSWITCH etc. With o-s-c, the calling phone's MO call is converted to | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 71 SIP, then Asterisk or other PBX hairpins it back to o-s-c, and then o-s-c | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 72 handles the destination call leg as a separate conversion from SIP back to | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 73 GSM MNCC. In our solution such local calls are switched internally inside | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 74 themwi-mncc, staying native within GSM MNCC land and never turning into SIP. | 
| 29 | 75 | 
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 76 * o-s-c is based on Sofia-SIP, which in turn uses glib - a very unpleasant | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 77 dependency in this Mother's opinion. In contrast, our implementation of SIP | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 78 is 100% from scratch, written in plain C in the traditional Falconian coding | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 79 style. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 80 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 81 The need for RTP voice transcoding | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 82 ---------------------------------- | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 83 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 84 In the context of GSM voice codecs, the term "transcoding" is used in two | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 85 significantly different meanings: | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 86 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 87 * Transcoding from one lossy GSM codec to another effectively constitutes two | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 88 lossy speech codecs running in tandem, and is a highly undesirable condition. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 89 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 90 * Running a single GSM codec (not two in tandem), decoding from GSM to G.711 in | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 91 one direction and encoding from G.711 in the other direction, is a standard | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 92 required function for traditional voice gateways between GSM and PSTN. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 93 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 94 In themwi-system-sw, we need to do transcoding in the second sense above. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 95 BulkVS SIP call interface to PSTN does not support any of GSM codecs, they only | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 96 support G.711 and G.729, and the same situation is expected to hold with other | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 97 PSTN-via-SIP connectivity providers. We certainly don't want to use G.729 - we | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 98 don't want to run two lossy speech codecs in tandem, first GSM and then G.729 - | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 99 hence the only codecs we speak on the PSTN-via-SIP side of our gateway are PCMU | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 100 and PCMA. Therefore, we need to perform RTP transcoding in our themwi-mgw, | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 101 very similar to a traditional GSM TRAU. | 
| 29 | 102 | 
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 103 On the GSM side, the two codecs of most interest to us at the present time are | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 104 the original FR and EFR - hence they will be the first to be supported. Note | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 105 the big difference from other Osmocom-using GSM community networks which | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 106 typically prefer or even strictly require AMR instead! Our reasons for focusing | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 107 on FR and EFR instead of AMR are: | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 108 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 109 * Our OsmoBSC time slot configuration is full rate channels only, no half rate | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 110 channels. HR channels are needed only for greater capacity of simultaneous | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 111 calls, but with the total number of people *on the planet* who actively want | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 112 GSM/2G as opposed to LTE or 5G being no more than maybe 10, the thought of | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 113 exceeding the limit of 6 simultaneous call legs per cell (meaning 6 separate | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 114 GSM phone handsets talking *at the same time*) is preposterous. | 
| 29 | 115 | 
| 88 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 116 * Without any HR channels in OsmoBSC config, AMR means AMR-FR specifically, not | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 117 AMR-HR. The highest level of AMR-FR is identical with EFR - thus if we | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 118 support EFR, do we really need AMR? | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 119 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 120 * The whole point of Themyscira Wireless is to provide service to *vintage* | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 121 mobile phones. Our current collection of vintage phones includes models that | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 122 only support FR1 and EFR (Ericsson I888, Nokia 5190) and Calypso C05 which | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 123 supports FR1, EFR and HR1, but not AMR. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 124 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 125 * EFR is desirable because it gives better voice quality than FR1, but we must | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 126 support FR1 too, so we can serve the very oldest of phones which support only | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 127 FR1 and nothing else. | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 128 | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 129 Voice codec restriction (forcing GSM phones to use EFR instead of AMR, or | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 130 forcing all the way down to FR1) is done in OsmoBSC config, with codec-list | 
| 
97317ede320a
README: update for current status
 Mychaela Falconia <falcon@freecalypso.org> parents: 
29diff
changeset | 131 setting under 'msc 0'. | 
