OsmoBSC: update overview to explain both SCCPlite and SCCP/M3UA

Change-Id: I1f105b3febd4f99f4491e217ff1b1d0b28912980
This commit is contained in:
Neels Hofmeyr 2017-12-07 19:30:38 +01:00
parent b4045a0c69
commit 9d0e3a7f2d
1 changed files with 100 additions and 86 deletions

View File

@ -7,111 +7,125 @@ aspects of configuring and running the OsmoBSC.
[[intro_overview]]
=== About OsmoBSC
OsmoBSC is one particular version of the OpenBSC software suite.
Unlike the highly integrated OmsoNITB, OsmoBSC implements a more classic
GSM Base Station Controller with A-bis interface towards BTSs and A
interface towards a MSC.
The difference between classic GSM network architecture and
the OsmoNITB based GSM network architecture is illustrated in
<<fig-gsm-classic>> and <<fig-gsm-nitb>>.
[[fig-gsm-classic]]
.Classic GSM network architecture (simplified)
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"];
MS1 [label="MS"];
MS2 [label="MS"];
MS3 [label="MS"];
BTS0 [label="BTS"];
BTS1 [label="BTS"];
BSC;
MSC [label="MSC/VLR"];
HLR [label="HLR/AUC"];
EIR;
SMSC;
MS0->BTS0 [label="Um"];
MS1->BTS0 [label="Um"];
MS2->BTS1 [label="Um"];
MS3->BTS1 [label="Um"];
BTS0->BSC [label="Abis"];
BTS1->BSC [label="Abis"];
BSC->MSC [label="A"];
MSC->HLR [label="C"];
MSC->EIR [label="F"];
MSC->SMSC;
}
----
[[fig-gsm-nitb]]
.GSM system architecture using OsmoNITB
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"];
MS1 [label="MS"];
MS2 [label="MS"];
MS3 [label="MS"];
BTS0 [label="BTS"];
BTS1 [label="BTS"];
EXTMNCC [label="Linux Call Router / SoftSwitch / PBX\n(optional)"];
MS0->BTS0 [label="Um"];
MS1->BTS0 [label="Um"];
MS2->BTS1 [label="Um"];
MS3->BTS1 [label="Um"];
BTS0->BSC [label="Abis"];
BTS1->BSC [label="Abis"];
subgraph cluster_nitb {
label = "OsmoNITB";
BSC;
MSC [label="MSC/VLR"];
SMSC;
EIR;
HLR [label="HLR/AUC"];
BSC->MSC;
MSC->HLR;
MSC->EIR;
MSC->SMSC;
}
MSC -> EXTMNCC [label="external MNCC"];
}
----
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 quickly describe in this section.
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 and
sysmocom.
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 minimal sub-set of the GSM A interface as specified
in TS 08.08.
OsmoBSC implements a sub-set of the GSM A interface as specified in TS 08.08
(BSSAP) and TS 04.08 (DTAP).
Unlike classic A interface implementations for E1 interfacs, OsmoBSC
implements a variant of encapsulating the A interface over IP. To do
so, the SCCP messages are wrapped in an IPA multiplex and then
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".
For more information, see <<alink>>.
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