[[overview]]
== Overview

This manual should help you getting started with OsmoMSC. It will cover
aspects of configuring and running the OsmoMSC.

[[intro_overview]]
=== About OsmoMSC

OsmoMSC is the Osmocom implementation of a Mobile Switching Center (MSC) for 2G
and 3G GSM and UMTS mobile networks. Its interfaces are:

- GSUP towards OsmoHLR (or a MAP proxy);
- A over IP towards a BSC (e.g. OsmoBSC);
- IuCS towards an RNC or HNB-GW (e.g. OsmoHNBGW) for 3G voice;
- MNCC (Mobile Network Call Control derived from GSM TS 04.07);
- SMPP 3.4 (Short Message Peer-to-Peer);
- The Osmocom typical telnet VTY and CTRL interfaces.

OsmoMSC originated from the OpenBSC project, which started as a minimalistic
all-in-one implementation of the GSM Network. In 2017, OpenBSC had reached
maturity and diversity (including M3UA SIGTRAN and 3G support in the form of
IuCS and IuPS interfaces) that naturally lead to a separation of the all-in-one
approach to fully independent separate programs as in typical GSM networks.
Before it was split off, OsmoMSC originated from libmsc of the old openbsc.git.
Since a true _A_ interface and IuCS for 3G support is available, OsmoMSC
exists only as a separate standalone entity.

Key differences of the new OsmoMSC compared to the old OsmoNITB are:

- The complete VLR implementation that communicates with the separate HLR
  (OsmoHLR) for subscriber management. In contrast to the OsmoNITB, HLR queries
  are fully asynchronous, and the separate HLR allows using centralized
  subscriber management for both circuit-switched and packet-switched domains
  (i.e. one OsmoHLR for both OsmoMSC and OsmoSGSN).

- VLR and HLR brought full UMTS AKA (Authentication and Key Agreement) support,
  i.e. Milenage authentication in both the full 3G variant as well as the
  backwards compatible 2G variant.

- Addition of a true _A_ interface for 2G voice services. Previously, OsmoBSC
  had an SCCPlite based _A_ interface towards 3rd party MSC implementations.
  OsmoMSC features a true SCCP/M3UA _A_ interface, which allows running OsmoBSC
  against this Osmocom based MSC implementation. The new SCCP/M3UA SIGTRAN for
  the _A_ interface is implemented in libosmo-sccp, which is used by OsmoMSC
  and OsmoBSC (and others), to establish a link via an STP (e.g. OsmoSTP).

- Addition of an _IuCS_ interface to allow operating 3G voice services, also
  via SCCP/M3UA SIGTRAN, for example connecting via OsmoHNBGW to a 3G small
  cell device.

Find the OsmoMSC issue tracker and wiki online at

- https://osmocom.org/projects/osmomsc
- https://osmocom.org/projects/osmomsc/wiki


[[fig-gsm]]
.Typical GSM network architecture used with OsmoMSC
[graphviz]
----
digraph G {
	rankdir=LR;
	MS0 [label="MS"]
	MS1 [label="MS"]
	MS2 [label="MS"]
	MS3 [label="MS"]
	UE0 [label="UE"]
	UE1 [label="UE"]
	BTS0 [label="BTS"]
	BTS1 [label="BTS"]
	STP [label="STP\n(SCCP routing)"]
	HLR [label="HLR+AUC+EIR"]
	HNB [label="RNC or hNodeB"]
	MGW
	MS0->BTS0 [label="Um"]
	MS1->BTS0 [label="Um"]
	MS2->BTS1 [label="Um"]
	MS3->BTS1 [label="Um"]
	UE0->HNB
	UE1->HNB
	BTS0->BSC [label="Abis"]
	BTS1->BSC [label="Abis"]
	BSC->STP [label="A/SCCP/M3UA"]
	STP->MSC [label="A/SCCP/M3UA"]
	STP->MSC [label="IuCS/SCCP/M3UA"]
	VLR->HLR [label="GSUP"]
	HNB->HNBGW [label="Iuh"]
	HNBGW->STP [label="IuCS/SCCP/M3UA"]
	MSC->MGW [label="MGCP"]
	BTS0->MGW [label="RTP"]
	BTS1->MGW [label="RTP"]
	subgraph cluster_msc {
		label = "OsmoMSC";
		MSC->SMSC;
		MSC->VLR
	}
}
----


=== Software Components

This is a brief description of OsmoMSC's internal software components.

==== 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 <<smpp>>.

==== MSC

The MSC component implements the mobility management (MM) functions of the TS
04.08 and delegates to SMSC for SMS message handling and the VLR for subscriber
management.

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 <<mncc>>.

==== VLR

A fully featured Visitor Location Register handles the subscriber management
and authentication, and interfaces via GSUP to the external HLR.
