How will android applications express their QOS requirements when they connect to the network ?
Usually, they don't.
If someone had different experiences, I will be very interested.
Even if the Android APIs allows you to request a specific QoS (and I don't know if this is possible) is unlikely that the mobile operator will accept your request, unless you have some special agreement.
There are two types of bearers (aka tunnels for your traffic) between a mobile phone and the network:
- default bearers
- dedicated bearers
The bearer your traffic will flow trough will dictate the QoS.
Default bearers
This tunnel is the one owning your ip address, and and at least one is established when you connect to LTE.
More tunnels of this type means that you have many ip addresses.
Each tunnels of maps to an Access Point Name (APN) that your device has requested.
Each APN represents a different network, like a separated LAN;
some APN has access to internet, some other has access to the VOIP network of the operator and some other APN is the network where the operator keeps the MMS servers.
I hope you get it.
The QCI allowed in this type of bearers are from 5 to 9, and the operator knows on which APN you have right to access.
The QOS here is usually allocated during the bearer establishment, according to the APN and data plan, and will be applied for all the data going trough this tunnel until you disconnect.
If you are a very big enterprise (Apple/iphone anyone?) you may ask to the operators to have your dedicated APN and your devices will have some special treatment for the traffic going through this network.
In short, this is not a good place for an App to ask for some specific QOS.
Dedicated bearers
This is a tunnel that lives attached to a default bearer.
It act as a filter on the traffic performed on the default bearer it is attached.
To the traffic matching the default bearer filter (ip/port/port-range/protocol) will be applied a QOS different from the one of the default bearer. This is in fact the only way to get a QCI between 1 and 4.
You may have multiple different dedicated bearers attached to your default bearer, and the network is capable to dynamically allocate and remove them upon request.
Since they are quite resource consuming, operators tend to restrict the use of dedicated bearers in number and duration.
There are 4 ways for to trigger the allocation dedicated bearer:
- Static configuration: the operator allocate the bearer every time you connect, no matter what. This never used for the dedicated bearer in practice.
- Device request: the phone actively request for a dedicated bearer with some specific characteristics. Operators tend to discard this type of request, they prefer to decide by their side when to activate them.
- Traffic Detection triggered: the operator monitor your traffic in some way, and if some specific pattern is detected (based on ip/port/protocol/whatever or a combination of these) a dedicated bearer may be allocated.
- Application Function request: this is what happens with IMS;
when you start a call, the SIP server inform the operator about the ongoing call and the operator will allocate a dedicated bearer with QCI 1 for you.
In each case, the request will be evaluated by a node called PCRF. This node is the place where the network check your rights to have specific QoS and/or dedicated bearers.
If there is not a specific rule here that match your application, traffic type, subscription or device, you'll never going to have a QCI between 1 and 4 for your application
TLDR
You need a very permissive operator in terms of QoS policies
or
you need some kind of agreement with the operator.