[[overview]] == Overview This manual should help you getting started with OsmoNITB. It will cover aspects of configuring and running the OsmoNITB. [[intro_overview]] === About OsmoNITB OsmoNITB is one particular version of the OpenBSC software suite. Unlike classic, distributed, hierarchical GSM networks, OsmoNITB implements all parts of a GSM Network (BSC, MSC, VLR, HLR, AUC, SMSC) __in the box__, i.e. in one element. The difference between classic GSM network architecture and the OsmoNITB based GSM network architecture is illustrated in <> and <>. [[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"] MSC [label="MSC/VLR"] HLR [label="HLR/AUC"] 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"] 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"] HLR [label="HLR/AUC"] BSC->MSC [label="A"] MSC->HLR [label="C"] MSC->EIR [label="F"] MSC->SMSC; } } ---- === Software Components OsmoNITB contains a variety of different software components, which we'll quickly describe in this section. ==== A-bis Implementation OsmoNITB implements the ETSI/3GPP specified A-bis interface, including _3GPP TS 48.056_ <<3gpp-ts-48-056>> (LAPD), _3GPP TS 48.058_ <<3gpp-ts-48-058>> (RSL) and 3GPP TS 52.021 <<3gpp-ts-52-021>> (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. For more information, see <> and <>. ==== 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 _3GPP TS 24.008_ <<3gpp-ts-24-008>> RR (Radio Resource) sub-layer from the MS. For more information, see <>, <> and <>. ==== HLR/AUC A minimalistic implementation of the subscriber database (HLR) and subscriber secret key storage (AUC). For more information, see <>. ==== SMSC A minimal store-and-forward server for SMS, supporting both MO and MT SMS service, as well as multi-part messages. The built-in SMSC also supports an external SMSC interface. For more information, see <>. ==== MSC The MSC component of OsmoNITB implements the mobility management (MM) functions of the TS 04.08, as well as the optional security related procedures for cryptographic authentication and encryption. Furthermore, it can handle TS 04.08 Call Control (CC), either by use of an internal MNCC handler, or by use of an external MNCC agent. For more information see <>. ==== TRAU mapper / E1 sub-channel muxer Unlike classic GSM networks, OsmoNITB 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, OsmoNITB 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. ==== RTP proxy BTS models implementing A-bis over IP don't use classic TRAU frames but typically transport the voice codec frames as RTP/UDP/IP protocol. OsmoNITB can either instruct the BTSs to send those voice streams directly to each other (BTS to BTS without any intermediary), or it can run an internal RTP proxy for passing frames from one BTS to another. .RTP flow without RTP proxy mode (default) [graphviz] ---- digraph G { rankdir=LR; MS0 [label="MS A"]; MS1 [label="MS B"]; BTS0 [label="BTS A"]; BTS1 [label="BTS B"]; NITB; MS0 -> BTS0; MS1 -> BTS1; BTS0 -> NITB [label="Abis OML+RSL",dir=both]; BTS1 -> NITB [label="Abis OML+RSL",dir=both]; BTS0 -> BTS1 [label="RTP",dir=both] } ---- .RTP flow with RTP proxy mode [graphviz] ---- digraph G { rankdir=LR; MS0 [label="MS A"]; MS1 [label="MS B"]; BTS0 [label="BTS A"]; BTS1 [label="BTS B"]; NITB; MS0 -> BTS0; MS1 -> BTS1; BTS0 -> NITB [label="Abis OML+RSL",dir=both]; BTS1 -> NITB [label="Abis OML+RSL",dir=both]; BTS0 -> NITB [label="RTP",dir=both] BTS1 -> NITB [label="RTP",dir=both] } ----