Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 1 | [[overview]] |
| 2 | == Overview |
| 3 | |
| 4 | This manual should help you getting started with OsmoBSC. It will cover |
| 5 | aspects of configuring and running the OsmoBSC. |
| 6 | |
| 7 | [[intro_overview]] |
| 8 | === About OsmoBSC |
| 9 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 10 | OsmoBSC is the Osmocom implementation of a Base Station Controller. It |
| 11 | implements: |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 12 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 13 | - an 'A-bis' interface towards BTSs and |
| 14 | - an 'A' interface towards an MSC. It is important to be aware that there are |
| 15 | two variants of the 'A' interface, see <<a-interface>>. |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 16 | |
| 17 | === Software Components |
| 18 | |
| 19 | OsmoBSC contains a variety of different software components, which |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 20 | we'll briefly describe in this section. |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 21 | |
| 22 | ==== A-bis Implementation |
| 23 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 24 | OsmoBSC implements the ETSI/3GPP specified A-bis interface, including TS 08.56 |
| 25 | (LAPD), TS 08.58 (RSL) and TS 12.21 (OML). In addition, it supports a variety |
| 26 | of vendor-specific extensions and dialects in order to communicate with BTSs |
| 27 | from Siemens, Nokia, Ericsson, ip.access, Octasic and sysmocom, as well as |
| 28 | various USRP based BTS implementations, using OsmoBTS and OsmoTRX (like the |
| 29 | Ettus B200 series, the Fairwaves XTRX or the LimeSDR, to name a few). |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 30 | |
| 31 | For more information, see <<bts>> and <<bts-examples>>. |
| 32 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 33 | [[a-interface]] |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 34 | ==== A Implementation |
| 35 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 36 | OsmoBSC implements a sub-set of the GSM A interface as specified in TS 08.08 |
| 37 | (BSSAP) and TS 04.08 (DTAP). |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 38 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 39 | Osmocom offers two variants of the 'A' interface's protocol stacking: |
| 40 | |
| 41 | - 'A/SCCPlite' |
| 42 | - 'A/SCCP/M3UA' |
| 43 | |
| 44 | Traditionally, OsmoBSC only implemented the A/SCCPlite protocol, but since a |
| 45 | proper M3UA implementation is available from 'libosmo-sigtran' |
| 46 | ('libosmo-sccp.git'), the stock OsmoBSC now supports only A/SCCP/M3UA. (The |
| 47 | idea is that SCCPlite support may be added to libosmo-sigtran at some point |
| 48 | in the future, after which the new `osmo-bsc` would support both variants of |
| 49 | the A interface.) |
| 50 | |
| 51 | The difference between an A/SCCPlite and A/SCCP/M3UA is illustrated in |
| 52 | <<fig-sccplite>> and <<fig-sccp-m3ua>>. |
| 53 | |
| 54 | ===== A/SCCPlite |
| 55 | |
| 56 | Unlike classic A interface implementations for E1 interfacs, |
| 57 | `osmo-bsc-sccplite` implements a variant of encapsulating the A interface over |
| 58 | IP. To do so, the SCCP messages are wrapped in an IPA multiplex and then |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 59 | communicated over TCP. The audio channels are mapped to RTP streams. |
| 60 | |
Jonathan Brielmaier | 1389bd1 | 2016-05-25 15:01:11 +0200 | [diff] [blame] | 61 | This protocol stacking is sometimes called "SCCPlite". |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 62 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 63 | At the time of writing, if you would like to use the old A/SCCPlite protocol, |
| 64 | look for binary packages named `osmo-bsc-sccplite`, or compile `osmo-bsc` from |
| 65 | the 'openbsc.git' repository. |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 66 | |
Neels Hofmeyr | 9d0e3a7 | 2017-12-07 19:30:38 +0100 | [diff] [blame] | 67 | [[fig-sccplite]] |
| 68 | .`osmo-bsc-sccplite` operation using 'A/SCCPlite' |
| 69 | [graphviz] |
| 70 | ---- |
| 71 | digraph G { |
| 72 | rankdir=LR; |
| 73 | MS0 [label="MS"]; |
| 74 | MS1 [label="MS"]; |
| 75 | MS2 [label="MS"]; |
| 76 | MS3 [label="MS"]; |
| 77 | BTS0 [label="BTS"]; |
| 78 | BTS1 [label="BTS"]; |
| 79 | BSC [label="OsmoBSC-SCCPlite"]; |
| 80 | MSC [label="3rd party MSC"]; |
| 81 | {MS0,MS1}->BTS0 [label="Um"]; |
| 82 | {MS2,MS3}->BTS1 [label="Um"]; |
| 83 | {BTS0,BTS1}->BSC [label="Abis\nTCP\nIP"]; |
| 84 | BSC->MSC [label="A\nSCCP\nTCP\nIP"]; |
| 85 | } |
| 86 | ---- |
| 87 | |
| 88 | ===== A/SCCP/M3UA |
| 89 | |
| 90 | The default OsmoBSC's A interface uses the M3UA variant of SIGTRAN protocol |
| 91 | stacking: |
| 92 | |
| 93 | |===== |
| 94 | |A |
| 95 | |SCCP |
| 96 | |M3UA |
| 97 | |SCTP |
| 98 | |IP |
| 99 | |===== |
| 100 | |
| 101 | To use the now-default A/SCCP/M3UA protocol, look for binary packages named |
| 102 | `osmo-bsc`, or compile `osmo-bsc` from the 'osmo-bsc.git' repository. It is |
| 103 | recommended to use the M3UA variant, which is required to operate with OsmoMSC. |
| 104 | |
| 105 | To route SCCP/M3UA messages between OsmoBSC and and MSC, an STP instance like |
| 106 | OsmoSTP is required. |
| 107 | |
| 108 | [[fig-sccp-m3ua]] |
| 109 | .`osmo-bsc` operation using 'A/SCCP/M3UA' |
| 110 | [graphviz] |
| 111 | ---- |
| 112 | digraph G { |
| 113 | rankdir=LR; |
| 114 | MS0 [label="MS"]; |
| 115 | MS1 [label="MS"]; |
| 116 | MS2 [label="MS"]; |
| 117 | MS3 [label="MS"]; |
| 118 | BTS0 [label="BTS"]; |
| 119 | BTS1 [label="BTS"]; |
| 120 | BSC [label="OsmoBSC"]; |
| 121 | STP [label="OsmoSTP"]; |
| 122 | MSC [label="OsmoMSC\n(or 3rd-party MSC)"]; |
| 123 | {MS0,MS1}->BTS0 [label="Um"]; |
| 124 | {MS2,MS3}->BTS1 [label="Um"]; |
| 125 | {BTS0,BTS1}->BSC [label="Abis\nTCP\nIP"]; |
| 126 | BSC->STP->MSC [label="A\nSCCP\nM3UA\nSCTP\nIP"]; |
| 127 | } |
| 128 | ---- |
Harald Welte | 75c0e08 | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 129 | |
| 130 | ==== BSC Implementation |
| 131 | |
| 132 | The BSC implementation covers the classic functionality of a GSM Base |
| 133 | Station Controller, i.e. |
| 134 | |
| 135 | * configuring and bringing up BTSs with their TRXs and TSs |
| 136 | * implementing the A-bis interface / protocols for signalling and actual |
| 137 | voice data (TRAU frames). |
| 138 | * processing measurement results from the mobile stations in dedicated |
| 139 | mode, performing hand-over decision and execution. |
| 140 | * Terminating the TS 04.08 RR (Radio Resource) sub-layer from the MS. |
| 141 | |
| 142 | For more information, see <<net>>, <<bts>> and <<bts-examples>>. |
| 143 | |
| 144 | |
| 145 | ==== TRAU mapper / E1 sub-channel muxer |
| 146 | |
| 147 | Unlike classic GSM networks, OsmoBSC does not perform any transcoding. |
| 148 | Rather, a compatible codec is selected for both legs of a call, and |
| 149 | codec frames are passed through transparently. In order to achieve this |
| 150 | with E1 based BTS, OsmoBSC contains a E1 sub-channel de- and |
| 151 | re-multiplexer as well as a TRAU mapper that can map uplink to downlink |
| 152 | frames and vice versa. |
Max | 2e904b1 | 2016-05-04 14:30:49 +0200 | [diff] [blame] | 153 | |
| 154 | === Control interface |
| 155 | |
| 156 | The actual protocol is described in <<common-control-if>> section. Here we |
| 157 | describe variables specific to OsmoBSC. |
| 158 | |
| 159 | .Variables available over control interface |
| 160 | [options="header",width="100%",cols="20%,5%,5%,50%,20%"] |
| 161 | |=== |
| 162 | |Name|Access|Trap|Value|Comment |
| 163 | |msc_connection_status|RO|Yes|"connected", "disconnected"|Indicate the status of connection to MSC. |
| 164 | |bts_connection_status|RO|Yes|"connected", "disconnected"|Indicate the status of connection to BTS. |
| 165 | |location|RW|Yes|"<unixtime>,(invalid\|fix2d\|fix3d),<lat>,<lon>,<height>"|Set/Get location data. |
| 166 | |timezone|RW|No|"<hours>,<mins>,<dst>", "off"|-19 <= hours <= 19, mins in {0, 15, 30, 45}, and 0 <= dst <= 2 |
| 167 | |notification|WO|Yes|| |
| 168 | |inform-msc-v1|WO|Yes|| |
| 169 | |ussd-notify-v1|WO|Yes|| |
| 170 | |=== |
| 171 | |
| 172 | Some comments. |
| 173 | FIXME: commands defined in src/ctrl/control_if.c? Nodes? Traps? |
| 174 | |