Harald Welte
352b967d1b
Converting from osmo_fd to osmo_io allows us to switch to the new io_uring backend and benefit from related performance benefits. In a benchmark running 200 concurrent bi-directional voice calls with GSM-EFR codec, I am observing: * the code before this patch uses 40..42% of a single core on a Ryzen 5950X at 200 calls (=> 200 endpoints with each two connections) * no increase in CPU utilization before/after this patch, i.e. the osmo_io overhead for the osmo_fd backend is insignificant compared to the direct osmo_fd mode before * an almost exactly 50% reduction of CPU utilization when running the same osmo-mgw build with LIBOSMO_IO_BACKEND=IO_URING - top shows 19..21% for the same workload instead of 40..42% with the OSMO_FD default backend. * An increase of about 4 Megabytes in both RSS and VIRT size when enabling the OSMO_IO backend. This is likely the memory-mapped rings. No memory leakage is observed when using either of the backends. Change-Id: I8471960d5d8088a70cf105f2f40dfa5d5458169a |
||
---|---|---|
contrib | ||
debian | ||
doc | ||
include | ||
m4 | ||
src | ||
tests | ||
.clang-format | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
AUTHORS | ||
COPYING | ||
Makefile.am | ||
README.md | ||
README.vty-tests | ||
TODO-RELEASE | ||
configure.ac | ||
git-version-gen | ||
libosmo-mgcp-client.pc.in | ||
osmoappdesc.py |
README.md
osmo-mgw - Osmocom MGW (Media GateWay) Implementation
This repository contains a C-language implementation of an MGW (Media GateWay) for use [not only] within the 2G (GSM) and/or 3G (UMTS) Cellular Network built using Osmocom CNI (Cellular Network Infrastructure) software.
The OsmoMGW program provides an MGCP interface towards an MGCP call agent (client) like OsmoMSC and OsmoBSC, and receives and sends RTP streams as configured via the MGCP control plane.
This Media Gateway implementation is capable of
- streaming RTP for 2G (3GPP AoIP and Abis-over-IP)
- streaming RTP for 3G (IuCS including the IuFP protocol)
- TDM (E1/T1) based Abis interface with TRAU frames on 16k sub-slots
- basic support for LCLS (Local Call, Local Switch) related features
- various built-in translation capabilities
- between Abis TRAU frames and RTP formats
- between 2G AMR/RTP and 3G AMR/IuFP/RTP
- between bandwidth-efficient and octet-aligned AMR
- between different standards for encapsulating GSM HR codec frames in RTP
osmo-mgw is typically co-located with
- osmo-bsc (GSM BSC)
- osmo-msc (GSM/UMTS MSC)
- osmo-hnbgw (UMTS HNBGW); osmo-mgw implements RTP relay between Iuh and IuCS interfaces
The libosmo-mgcp-client library exposes utilities used by e.g. OsmoMSC (found in osmo-msc.git) to instruct OsmoMGW via its MGCP service.
Homepage
You can find the OsmoMGW issue tracker and wiki online at https://osmocom.org/projects/osmo-mgw and https://osmocom.org/projects/osmo-mgw/wiki.
GIT Repository
You can clone from the official osmo-mgw.git repository using
git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw
There is a web interface at https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw
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-mgw 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 use 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-mgw can be seen at https://gerrit.osmocom.org/#/q/project:osmo-mgw+status:open
History
OsmoMGW 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.
OsmoMGW was one of the parts split off from the old openbsc.git. It originated as a solution to merely navigate RTP streams through a NAT, but has since matured.