One of the goals of the new architecture is the efficient use of [satellite] back-haul.

Osmocom already has the existing OSMUX protocol implemented in osmo-bsc-sccplite and osmo-bsc_nat, which avoids protocol overhead by:
  • putting codec frames of multiple concurrent calls in one UDP packet [avoiding RTP/UDP overhead for each one]
  • avoiding the large RTP header by using a custom header
  • optionally batching codec frames of each single call by introducing buffering, so one packet is only sent every 40/60/80/100ms instead of every 20ms

This protocol, however, is not yet available in a more generic way outside the scope of SCCPlite conncetions between BSC and BSC-NAT.

Generalization of Osmux

There are plenty of issues already about this:
  • #2554 (documentation of the old osmux)
  • #2909 (documentation of a new generalized osmux)
  • #2551 (generalization of OSMUX in OsmoMGW)
  • #2552 (OsmoBSC support for OSMUX on A, not needed here but test case for #2551)
  • #2553 (OsmoMSC support for OSMUX on A, not needed here but test case for #2551)

All those items should have been implemented by now, but are unfortunately delayed already for several months due to other tasks.

Use outside of the Osmocom network elements

Osmux in this Distributed GSM architecture would actually not be used by GSM-network-internal interfaces (such as the A interface between BSC and MSC), but it would be used to interconnect the individual networks with each other, i.e. the roaming interface of classic GSM networks.

So the media flow between two networks would look like this:

What's needed to implement this

  1. OsmoMSC must have codec preference for one fixed AMR bitrate e.g. AMR 5.9 and allocate older codecs only to phones that don't have related bearer capabilities
    • should already be possible with existing code, needs [automatic] testing/verification
  2. transcoding in OsmoMGW to ensure that FR/EFR/HR from non-AMR capable phones is transcoded to a fixed AMR rate suitable for osmux
    • we do have transcoding in OsmoMGW inherited from its predecessor osmo-bsc_mgcp, but it might have been broken and needs re-testing/fixing
  3. MNCC syntax by which osmo-sip-connector can request the MSC to instruct the MGW to use OSMUX on the external media side
  4. MGCP syntax by which the call agent in the MSC can instruct the MGW to have an endpoint that has RTP on local side but OSMUX on remote side
  5. SIP/SDP syntax by which two osmo-sip-connector instances can discover they both support OSMUX as transport
    • probably similar to existing handshake of codecs on SIP/SDP. So Osmux would look like a different codec
    • might not be as simple, as there's no separate IP/Port per stream anymore

Updated by daniel over 4 years ago · 2 revisions

Add picture from clipboard (Maximum size: 48.8 MB)