我正在开发一个必须在移动网络上运行良好的VoIP应用程序。它容忍数据包丢失,但这是不好的部分:我发现在移动网络上,从GSM到LTE的所有标准,在设备和基站之间都有RLC协议。 RLC可以以两种模式运行:已确认和未确认。我观察到在实验期间使用的确认模式意味着如果在数据包传输期间存在任何比特错误,它将被重传,直到没有,因此在整个重传时保持发送队列。在未确认模式下,只会丢弃带有误码的数据包,这就是我所需要的。
那么......有什么方法可以控制用于我的应用程序包的RLC模式,或者说是由网络配置的模式?我已经尝试过"服务类型" IP标题中的字段,但它似乎没有做到这一点。
我已经把#34; android"标记在这里,但理想情况下,我对所有主要移动操作系统都有效的解决方案感兴趣。
答案 0 :(得分:1)
由于两个原因,无法从设备执行此操作:
1 - 这是一个网络配置属性,用于强制运营商所需的QoS。所有数据服务都将在共享相同频道的RLC AM上运行。具有专用QoS(如更高优先级和RLC UM)的信道通常用于运营商的电话服务(VoLTE)。
2 - 即使设备可以选择它的首选模式,这也是调制解调器/芯片组使用的低级配置。这个,没有提供给Android开发人员(RLC在PDCP下,在IP层下)。
但是,我认为您的VoIP性能不会因为这个属性而受到影响。延迟还取决于其他因素,例如网络负载和无线电条件。 LTE网络中的用户数越多,延迟越高。细胞覆盖率最差,延迟最差。
试试speedtest.net来检查延迟。它应该可以在30ms左右。
干杯。