aboutsummaryrefslogtreecommitdiffstats
path: root/doc/manuals/chapters/overview.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manuals/chapters/overview.adoc')
-rw-r--r--doc/manuals/chapters/overview.adoc174
1 files changed, 174 insertions, 0 deletions
diff --git a/doc/manuals/chapters/overview.adoc b/doc/manuals/chapters/overview.adoc
new file mode 100644
index 000000000..9b619fb24
--- /dev/null
+++ b/doc/manuals/chapters/overview.adoc
@@ -0,0 +1,174 @@
+[[overview]]
+== Overview
+
+This manual should help you getting started with OsmoBSC. It will cover
+aspects of configuring and running the OsmoBSC.
+
+[[intro_overview]]
+=== About OsmoBSC
+
+OsmoBSC is the Osmocom implementation of a Base Station Controller. It
+implements:
+
+- an 'A-bis' interface towards BTSs and
+- an 'A' interface towards an MSC. It is important to be aware that there are
+ two variants of the 'A' interface, see <<a-interface>>.
+
+=== Software Components
+
+OsmoBSC contains a variety of different software components, which
+we'll briefly describe in this section.
+
+==== A-bis Implementation
+
+OsmoBSC implements the ETSI/3GPP specified A-bis interface, including TS 08.56
+(LAPD), TS 08.58 (RSL) and TS 12.21 (OML). In addition, it supports a variety
+of vendor-specific extensions and dialects in order to communicate with BTSs
+from Siemens, Nokia, Ericsson, ip.access, Octasic and sysmocom, as well as
+various USRP based BTS implementations, using OsmoBTS and OsmoTRX (like the
+Ettus B200 series, the Fairwaves XTRX or the LimeSDR, to name a few).
+
+For more information, see <<bts>> and <<bts-examples>>.
+
+[[a-interface]]
+==== A Implementation
+
+OsmoBSC implements a sub-set of the GSM A interface as specified in TS 08.08
+(BSSAP) and TS 04.08 (DTAP).
+
+Osmocom offers two variants of the 'A' interface's protocol stacking:
+
+- 'A/SCCPlite'
+- 'A/SCCP/M3UA'
+
+Traditionally, OsmoBSC only implemented the A/SCCPlite protocol, but since a
+proper M3UA implementation is available from 'libosmo-sigtran'
+('libosmo-sccp.git'), the stock OsmoBSC now supports only A/SCCP/M3UA. (The
+idea is that SCCPlite support may be added to libosmo-sigtran at some point
+in the future, after which the new `osmo-bsc` would support both variants of
+the A interface.)
+
+The difference between an A/SCCPlite and A/SCCP/M3UA is illustrated in
+<<fig-sccplite>> and <<fig-sccp-m3ua>>.
+
+===== A/SCCPlite
+
+Unlike classic A interface implementations for E1 interfacs,
+`osmo-bsc-sccplite` implements a variant of encapsulating the A interface over
+IP. To do so, the SCCP messages are wrapped in an IPA multiplex and then
+communicated over TCP. The audio channels are mapped to RTP streams.
+
+This protocol stacking is sometimes called "SCCPlite".
+
+At the time of writing, if you would like to use the old A/SCCPlite protocol,
+look for binary packages named `osmo-bsc-sccplite`, or compile `osmo-bsc` from
+the 'openbsc.git' repository.
+
+[[fig-sccplite]]
+.`osmo-bsc-sccplite` operation using 'A/SCCPlite'
+[graphviz]
+----
+digraph G {
+ rankdir=LR;
+ MS0 [label="MS"];
+ MS1 [label="MS"];
+ MS2 [label="MS"];
+ MS3 [label="MS"];
+ BTS0 [label="BTS"];
+ BTS1 [label="BTS"];
+ BSC [label="OsmoBSC-SCCPlite"];
+ MSC [label="3rd party MSC"];
+ {MS0,MS1}->BTS0 [label="Um"];
+ {MS2,MS3}->BTS1 [label="Um"];
+ {BTS0,BTS1}->BSC [label="Abis\nTCP\nIP"];
+ BSC->MSC [label="A\nSCCP\nTCP\nIP"];
+}
+----
+
+===== A/SCCP/M3UA
+
+The default OsmoBSC's A interface uses the M3UA variant of SIGTRAN protocol
+stacking:
+
+|=====
+|A
+|SCCP
+|M3UA
+|SCTP
+|IP
+|=====
+
+To use the now-default A/SCCP/M3UA protocol, look for binary packages named
+`osmo-bsc`, or compile `osmo-bsc` from the 'osmo-bsc.git' repository. It is
+recommended to use the M3UA variant, which is required to operate with OsmoMSC.
+
+To route SCCP/M3UA messages between OsmoBSC and and MSC, an STP instance like
+OsmoSTP is required.
+
+[[fig-sccp-m3ua]]
+.`osmo-bsc` operation using 'A/SCCP/M3UA'
+[graphviz]
+----
+digraph G {
+ rankdir=LR;
+ MS0 [label="MS"];
+ MS1 [label="MS"];
+ MS2 [label="MS"];
+ MS3 [label="MS"];
+ BTS0 [label="BTS"];
+ BTS1 [label="BTS"];
+ BSC [label="OsmoBSC"];
+ STP [label="OsmoSTP"];
+ MSC [label="OsmoMSC\n(or 3rd-party MSC)"];
+ {MS0,MS1}->BTS0 [label="Um"];
+ {MS2,MS3}->BTS1 [label="Um"];
+ {BTS0,BTS1}->BSC [label="Abis\nTCP\nIP"];
+ BSC->STP->MSC [label="A\nSCCP\nM3UA\nSCTP\nIP"];
+}
+----
+
+==== BSC Implementation
+
+The BSC implementation covers the classic functionality of a GSM Base
+Station Controller, i.e.
+
+* configuring and bringing up BTSs with their TRXs and TSs
+* implementing the A-bis interface / protocols for signalling and actual
+ voice data (TRAU frames).
+* processing measurement results from the mobile stations in dedicated
+ mode, performing hand-over decision and execution.
+* Terminating the TS 04.08 RR (Radio Resource) sub-layer from the MS.
+
+For more information, see <<net>>, <<bts>> and <<bts-examples>>.
+
+
+==== TRAU mapper / E1 sub-channel muxer
+
+Unlike classic GSM networks, OsmoBSC does not perform any transcoding.
+Rather, a compatible codec is selected for both legs of a call, and
+codec frames are passed through transparently. In order to achieve this
+with E1 based BTS, OsmoBSC contains a E1 sub-channel de- and
+re-multiplexer as well as a TRAU mapper that can map uplink to downlink
+frames and vice versa.
+
+=== Control interface
+
+The actual protocol is described in <<common-control-if>> section. Here we
+describe variables specific to OsmoBSC.
+
+.Variables available over control interface
+[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
+|===
+|Name|Access|Trap|Value|Comment
+|msc_connection_status|RO|Yes|"connected", "disconnected"|Indicate the status of connection to MSC.
+|bts_connection_status|RO|Yes|"connected", "disconnected"|Indicate the status of connection to BTS.
+|location|RW|Yes|"<unixtime>,(invalid\|fix2d\|fix3d),<lat>,<lon>,<height>"|Set/Get location data.
+|timezone|RW|No|"<hours>,<mins>,<dst>", "off"|-19 <= hours <= 19, mins in {0, 15, 30, 45}, and 0 <= dst <= 2
+|notification|WO|Yes||
+|inform-msc-v1|WO|Yes||
+|ussd-notify-v1|WO|Yes||
+|===
+
+Some comments.
+FIXME: commands defined in src/ctrl/control_if.c? Nodes? Traps?
+