Reputation: 2595
I'm developing a VoIP application that has to perform well on mobile networks. It is tolerant to packet loss, but here's the bad part: I found out that on mobile networks, on all standards from GSM to LTE, there's that RLC protocol used between the device and the base station. RLC can operate in two modes: acknowledged and unacknowledged. Acknowledged mode, which I observed being used during my experiments, means that if there are any bit errors during packet transmission, it will be retransmitted until there are none, thus holding up the send queue the whole time it gets retransmitted. In the unacknowledged mode, a packet with bit errors is just dropped, and that's what I need.
So... Is there any way I can control the RLC mode used for my application's packets, or is said mode configured by the network? I already tried the "service type" field in the IP header, but it didn't seem to do the trick.
I've put the "android" tag here, but, ideally, I'm interested in a solution that works across all major mobile operating systems.
Upvotes: 1
Views: 260
Reputation: 58
There is no way to do this from the device for two reasons:
1 - This is a network configured attribute to enforce QoS wanted by operator. All data services will run on RLC AM sharing the same channel. A channel with a dedicated QoS (like higher priority and RLC UM) would run typically for operator's phone service (VoLTE).
2 - Even if device could pick it's preferred mode, that's a low level configuration used by the modem / chipset. This, this is not provided to Android developers (RLC is under PDCP, which is under IP layer).
But still, I don't think your VoIP performance is being affected just because of this property. Latency depends on other factors as well, such as load in the network and radio conditions. The higher the number of users in an LTE network the higher the latency. The worst the cell coverage, the worst the latency.
Give it a try on speedtest.net to check latency. It should be ok until 30ms or so.
Cheers.
Upvotes: 1