include::{commondir}/chapters/osmux/osmux.adoc[]

=== Osmux Support in {program-name}

==== {program-name} in a A/IP with IPA/SCCPlite network setup

In this kind of setup, the CN side of BSC co-located MGW is managed by the MSC,
meaning the use of Osmux is transparent to BSC since MSC takes care of both peer
MGW connections. Moreover, in this case the MSC has no dynamic information on
Osmux support in the BSC co-located MGW until `CRCX` time, which means
configuration on both nodes need to be carefully set up so they can work
together.

Osmux usage in {program-name} in managed through the VTY command `osmux
(on|off|only)`. Since there's no dynamic information on Osmux support, it may be
required in the future to have an extra VTY command which can be set per BSC to
fine-tune which ones should use Osmux and which shouldn't.

{program-name} will behave differently during call set up based on the VTY
command presented above:

* `off`: {program-name} won't include an `X-Osmux` extension to `CRCX` sent to
  the BSC co-located MGW when configuring the CN side of the MGW endpoint. If
  the MGW answers with a `CRCX ACK` containing an `X-Osmux`, {program-name} will
  cancel the call establishment.
* `on`: {program-name} will initially configure its co-located MGW to use Osmux, then
  similarly send a `CRCX` with an `X-Osmux` extension towards the BSC co-located
  MGW. Under this configuration, if the BSC co-located MGW didn't support Osmux,
  it could send a `CRCX ACK` without `X-Osmux` extension or fail (depending on
  its own configuration), and {program-name} could choose to re-create its local
  connection as non-Osmux (RTP) (and possibly try again against BSC co-located
  MGW), but this behavior is currently not implemented. As a result, currently
  `on` behaves the same as `only`.
* `only`: {program-name} will configure its co-located MGW as well as the BSC
  co-located MGW to use Osmux by including the `X-Osmux` MGCP extension. If MGW
  rejects to use Osmux, {program-name} will reject the call and the call
  establishment will fail.

==== {program-name} in a 3GPP AoIP network setup

Osmux usage in {program-name} in managed through the VTY command `osmux
(on|off|only)`. Once enabled (`on` or `only`), {program-name} will start
appending the vendor specific _Osmux Support_ IE in _BSSMAP RESET_ and _BSSMAP
RESET-ACK_ message towards the BSC in order to announce it supports Osmux, and
BSC will do the same. This way, {program-name} can decide whether to use Osmux
or not based on this information when setting up a call (this time using _Osmux
CID_ IE). It should be noted that this option should not be enabled unless BSCs
managed by {program-name} support handling this extension IE (like OsmoBSC),
3rd-party BSCs might otherwise refuse the related _RESET_/_RESET-ACK_ messages.

{program-name} will behave differently during call set up based on the VTY
command presented above:

* `off`: {program-name} won't use Osmux. That is, it will send a _BSSMAP Assign
  Request_ without the _Osmux CID_ IE, and will send a `CRCX` without `X-Osmux`
  extension towards its co-located MGW.
* `on`: If BSC announced Osmux support to {program-name} during _BSSMAP RESET_
  time, then {program-name} will set up the call to use Osmux (by adding
  `X-Osmux` to MGCP `CRCX` and _Osmux CID_ IE to _BSSMAP Assign Request_). If
  the BSC didn't announce Osmux support to {program-name}, then {program-name}
  will use RTP to set up the call (by avoiding addition of previously described
  bits).
* `only`: Same as per `on`, except that {program-name} will allow to set up only
  Osmux calls on the CN-side, this is, it will reject to set up voice calls for
  BSC which didn't announce Osmux support.
