[[overview]]
== Overview

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

[[intro_overview]]
=== About OsmoMGW

OsmoMGW is the Osmocom implementation of a media gateway to handle user
plane (voice) traffic in cellular networks. It can connect and optionally
transcode RTP voice streams between different network elements such as BTSs
and external entities like SIP. It is typically co-located with both OsmoBSC
and OsmoMSC and controlled by them via MGCP, the Media Gateway Control
Protocol.

[[fig-bsc]]
.OsmoMGW used with OsmoBSC
[graphviz]
----
digraph G {
    rankdir = LR;
    OsmoBTS -> OsmoBSC [label="Abis/IP"];
    OsmoBSC -> "core-network" [label="3GPP AoIP"];
    OsmoBSC -> OsmoMGW [label="MGCP"];
    OsmoBTS -> OsmoMGW [label="RTP",dir=both];
    OsmoMGW -> "core-network" [label="RTP",dir=both];
    {rank=same OsmoBSC OsmoMGW}
    OsmoMGW [color=red];
}
----

[[fig-msc]]
.OsmoMGW used with OsmoMSC
[graphviz]
----
digraph G {
    rankdir = LR;
    "2G BSS" -> OsmoMSC [label="3GPP AoIP"];
    OsmoMSC -> OsmoMGW [label="MGCP"];
    "2G BSS" -> OsmoMGW [label="RTP",dir=both];
    OsmoMSC -> OsmoSIP [label="MNCC"];
    OsmoSIP -> PBX [label="SIP Trunk"];
    OsmoMGW -> PBX [label="RTP",dir=both];
    {rank=same OsmoMSC OsmoMGW}
    OsmoSIP [label="osmo-sip-connector"];
    OsmoMGW [color=red];

    hNodeB -> OsmoHNBGW [label="Iuh"];
    OsmoHNBGW -> OsmoMSC [label="IuCS"];
    hNodeB -> OsmoMGW [label="RTP",dir=both];
}
----

[[fig-bsc-e1]]
.Integration of legacy E1 BTS in AoIP network
[graphviz]
----
digraph G {
    rankdir = LR;
    BTS -> OsmoBSC [label="Abis/E1"];
    OsmoBSC -> "core-network" [label="3GPP AoIP"];
    OsmoBSC -> OsmoMGW [label="MGCP"];
    BTS -> OsmoMGW [label="TRAU/E1",dir=both];
    OsmoMGW -> "core-network" [label="RTP",dir=both];
    {rank=same OsmoBSC OsmoMGW}
    OsmoMGW [color=red];
}
----

=== Software Components

OsmoMGW contains a variety of different software components, which we’ll
quickly describe in this section.

==== MGCP Implementation

OsmoMGW brings its own MGCP implementation through which OsmoMGW is
controlled.

The commands implemented are CRCX, MDCX, DLCX and RSIP. The command AUEP is
implemented as a stub and will simply respond with OK.

==== RTP implementation

Support for IuUP which is used in 3G cells is quite lacking at the moment.
3G<->3G and 2G<->2G calls should work, but 3G<->2G does not.

==== Audio transcoder

Transcoding is currently not supported in OsmoMGW.

=== Limitations

At the moment (November 2020), OsmoMGW implements RTP proxy / RTP bridge
type endpoints and E1/T1 16k/8k sub-slots with TRAU frames for classic BTS
support. To the RTP proxy / RTP bridge endpoints two RTP connections can
be established, which then work as a tandem. E1/T1 endpoints support one
RTP connection at a time that is associated with a sub-slot on an E1 line.
We are planning to add further endpoint types for:

- classic E1/T1 timeslots (64kBps alaw/ulaw)
- announcement/playout end-points
- conference endpoints

=== Additional resources

You can find the OsmoMGW issue tracker and wiki online at

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

RFC 3435 for MGCP is located at

- https://tools.ietf.org/html/rfc3435
