3G: decapsulate IuUP to AMR at the MGW; allow 3G<-AMR->2G

For all 3G calls, convert IuUP <-> plain AMR/RTP on the MSC's MGW hop
like this:

Before this patch:

 hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--IuUP--> other call leg

After this patch:

 hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--AMR--> other call leg
                                                    ^

This allows, in principle, 2G to 3G calls without expensive transcoding,
like this:

 hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@msc <--AMR--> MGW@msc <--AMR--> MGW@bsc <--AMR--> 2G-BTS
                                                    ^
(So far only proven to work with AMR-FR at 12k2.)

3G to 3G calls now look like this:

 hNodeB <--IuUP--> MGW@hnbgw <--IuUP--> MGW@MSC <--AMR--> MGW@MSC <--IuUP--> MGW@hnbgw <--IuUP--> hNodeB
                                                    ^

Implementatino: get rid of the shim that was put in place to still send
IuUP (VND.3GPP.IUFP) to the CN. So now, for all 3G voice, the IuUP gets
decapsulated to plain AMR/RTP at the MSC's MGW hop.

What is proven to work with this patch:
successful voice call between 2G and 3G with these conditions:
- a hNodeB that stubbornly accepts only 12k2 AMR;
- a 2G BTS configured to use only TCH/F and only FR3, with only 12k2 as
  allowed AMR rate.

We have not yet seen a call working for TCH/H HR3 <-> 3G, because of the
lab hNodeB's limitation to 12k2.

Future work we probably need:
- properly request and negotiate AMR rates via SDP fmtp:mode-set.
- request more RFCIs in our RANAP RAB Assignment requests
  (see I61e0e9e75e3239662846fd797532acdefa9f73dc).
- Convert IuUP to AMR already at the HNBGW's MGW?
Solving this is not part of this patch.

Related: SYS#5092
Change-Id: I386a6a426c318040b019ab5541689c67e94672a1
2 files changed
tree: e2cfac9fba1a32cc3f6b230c577b7655937c5040
  1. contrib/
  2. debian/
  3. doc/
  4. include/
  5. m4/
  6. src/
  7. tests/
  8. .gitignore
  9. .gitreview
  10. .mailmap
  11. AUTHORS
  12. configure.ac
  13. COPYING
  14. git-version-gen
  15. Makefile.am
  16. osmoappdesc.py
  17. README.md
  18. README.vty-tests
  19. TODO-RELEASE
README.md

osmo-msc - Osmocom MSC Implementation

This repository contains a C-language implementation of a GSM Mobile Switching Centre (MSC) for 2G (GSM) and 3G (UMTS). It is part of the Osmocom Open Source Mobile Communications project.

OsmoMSC exposes

  • A over IP towards BSCs (e.g. OsmoBSC): 3GPP AoIP or SCCPlite
  • IuCS over IP towards RNCs / HNBGW (e.g. osmo-hnbgw)
  • The Osmocom typical telnet VTY and CTRL interfaces.
  • The Osmocom typical statsd exporter.

OsmoMSC implements

  • mobility management
  • call control (either via built-in MNCC handler or external osmo-sip-connector)
  • USSD (exposed via GSUP)
  • SMS (either via built-in SMSC or external via GSUP)

Homepage

You can find the OsmoMSC issue tracker and wiki online at https://osmocom.org/projects/osmomsc and https://osmocom.org/projects/osmomsc/wiki.

GIT Repository

You can clone from the official osmo-msc.git repository using

    git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-msc

There is a web interface at https://gitea.osmocom.org/cellular-infrastructure/osmo-msc

Documentation

User Manuals and VTY reference manuals are [optionally] built in PDF form as part of the build process.

Pre-rendered PDF version of the current "master" can be found at User Manual as well as the VTY Reference Manual

Mailing List

Discussions related to osmo-msc are happening on the openbsc@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/openbsc for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for osmo-msc can be seen at https://gerrit.osmocom.org/#/q/project:osmo-msc+status:open

History

OsmoMSC originated from the OsmoNITB project, which started as a minimalistic all-in-one implementation of the GSM Network. In 2017, OsmoNITB 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.

OsmoMSC was one of the parts split off from the old openbsc.git.