= OsmoBSC A / SCCPlite / 3GPP AoIP Options

== Introduction

This document serves as a paper to illustrate the different
configurations of OsmoBSC in terms of integration with BTSs and MSCs.

The document was created ahead of the 2017 development cycle which
included the _death of the NITB_, i.e. the move away from OsmoNITB to
having OsmoBSC in all configurations, whether with a
proprietary/external MSC or with OsmoMSC.

Particular attention is spent on the user plane, including aspects
such as

* user plane transport address handling
* use of MGCP (Media Gateway Control Protocol)
* the (required) evolution of `osmo-bsc_mgcp`
* not loosing classic TDM (E1/T1) BTS support when moving from
  OsmoNITB to split OsmoBSC + OsmoMSC setup


== Overview

=== Classic GSM RAN with E1 based Abis and E1 A

This is how GSM was originally specified when it was introduced: E1/T1
circuits on all interfaces, no IP anywhere.

This configuration was actually never supported by OpenBSC, as E1
support was always only on the  Abis side (OpenBSC, OsmoNITB and today OsmoBSC).

We never supported A interface over E1.  It could be done if there was a need.

[mscgen]
----
include::{srcdir}/mgw/classic-bsc.msc[]
----

=== OsmoBSC 2010-2017: IPA-style A over SCCPlite

This configuration was introduced as early as 2010 in OpenBSC.  It
allowed the use of IP based BTSs (ip.access nanoBTS as well as all the
OsmoBTS supported BTS models) in combination with third-party MSCs
implementing a pre-standard, proprietary way of transporting the A
interface over IP at a time where the 3GPP specifications only allowed
classic TDM transport.

[mscgen]
----
include::{srcdir}/mgw/osmo-bsc-old-sccplite.msc[]
----


=== OsmoBSC 2017+: 3GPP AoIP + Abis/IP

Release 7 of 3GPP included an official specification on how an
interoperable A-over-IP (AoIP) interface shall look like.

As more modern MSCs at operators tend to favor implementing 3GPP AoIP
rather than the proprietary SCCPlite based A interface, it became
necessary for OsmoBSC to support this.

At the same time, for compatibility reasons, the classic SCCPlite
support is kept in OsmoBSC as a configuration option.

[mscgen]
----
include::{srcdir}/mgw/osmo-bsc-new-mgw.msc[]
----


=== OsmoBSC 2020+: 3GPP AoIP + Abis/E1

Since OsmoNITB was deprecated in 2017, and OsmoBSC only supported Abis/IP,
we temporarily lost the ability to use classic E1 based BTSs.  In 2020,
we re-introduced and re-tested the support of Abis/E1.

Fro the control plane of Abis (RSL, OML) the E1 support via libosmo-abis
never really ceased to exist.  But for the user plane, E1 support had to be
introduced to osmo-mgw, and osmo-bsc needed to be taught how to configure
E1 endpoints at the MGW.  The related call flow for such setups looks like this:

[mscgen]
----
include::{srcdir}/mgw/osmo-bsc-new-mgw-e1.msc[]
----
