OsmoBSC: update overview to explain both SCCPlite and SCCP/M3UA
Change-Id: I1f105b3febd4f99f4491e217ff1b1d0b28912980
This commit is contained in:
parent
b4045a0c69
commit
9d0e3a7f2d
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue