FreeCalypso > hg > themwi-system-sw
annotate README @ 124:7e04d28fae8b
sip-in: default use-100rel to no
BulkVS servers act badly when we send a reliable 180 Ringing response
to an incoming call, even though they advertise 100rel support in
the Supported header in the INVITE packet, and we probably won't be
implementing 100rel for outbound because doing per-the-spec PRACK
as a UAC is just too burdensome. Therefore, we need to consider
100rel extension as not-really-supported in themwi-system-sw.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 01 Oct 2022 15:54:50 -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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
19 from an exchange area local to us) from BulkVS. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
20 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
changeset
|
22 OsmoHLR records for our test SIMs operating on ThemWi GSM. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
23 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
changeset
|
25 themwi-mncc switch understanding all dialing formats that are considered |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
changeset
|
28 standard shorthand dialing method with only 4 digits. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
29 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
35 and ultimately to OsmoMSC. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
36 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
37 The following functionality remains to be implemented: |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
38 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
48 pass any traffic yet. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
49 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
50 Differences from osmo-sip-connector |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
51 ----------------------------------- |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
52 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
58 in which our solution differs from osmo-sip-connector: |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
59 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
64 software of "spaceship" complexity, instead our themwi-sip-in and |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
changeset
|
66 provider. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
67 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
79 style. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
80 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
81 The need for RTP voice transcoding |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
82 ---------------------------------- |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
83 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
changeset
|
85 significantly different meanings: |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
86 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
changeset
|
89 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
changeset
|
92 required function for traditional voice gateways between GSM and PSTN. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
93 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
101 very similar to a traditional GSM TRAU. |
29 | 102 |
88
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
107 on FR and EFR instead of AMR are: |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
108 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
118 support EFR, do we really need AMR? |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
119 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
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:
29
diff
changeset
|
123 supports FR1, EFR and HR1, but not AMR. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
124 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
changeset
|
127 FR1 and nothing else. |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
changeset
|
128 |
97317ede320a
README: update for current status
Mychaela Falconia <falcon@freecalypso.org>
parents:
29
diff
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:
29
diff
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:
29
diff
changeset
|
131 setting under 'msc 0'. |