==== Full example of QoS for osmo-mgw

In the below example we will show the full set of configuration required
for both DSCP and PCP differentiation of RTP traffic by osmo-mgw.

What we want to achieve in this example is the following configuration:

.DSCP and PCP assignments for osmo-mgw Abis downlink traffic in this example
[options="header",width="30%",cols="2,1,1"]
|===
|Traffic      |DSCP|PCP
|RTP    |  46|  6
|===

. configure the osmo-mgw program to set the DSCP value
. configure an egrees QoS map to map from priority to PCP

.Example Step 1: add related VTY configuration to `osmo-mgw.cfg`
----
...
mgcp
 rtp ip-dscp 46
 rtp socket-priority 6
...
----

.Example Step 2: egress QoS map to map from socket priority to PCP values
----
$ sudo ip link set dev eth0.9<1> type vlan egress-qos-map 0:0 5:5 6:6 7:7 <2>
----
<1> make sure to specify your specific VLAN interface name here instead of `eth0.9`.
<2> create a egress QoS map that maps the priority value 1:1 to the PCP. We also include the
    mapping 5:5 and 7:7 from the osmo-bsc example (see <<userman-osmobsc>>) here.

NOTE:: The settings of the `ip` command are volatile and only active until
the next reboot (or the network device or VLAN is removed).  Please refer to
the documentation of your specific Linux distribution in order to find out how
to make such settings persistent by means of an `ifup` hook whenever the interface
comes up.  For CentOS/RHEL 8 this can e.g. be achieved by means of an `/sbin/ifup-local
script` (when using `network-scripts` and not NetworkManager).  For Debian or Ubuntu,
this typically involves adding `up` lines to `/etc/network/interfaces` or a `/etc/network/if-up.d`
script.
