我正在开发必须在移动网络上具有良好性能的VoIP应用程序。它可以容忍数据包丢失,但这是一个坏处:我发现,在移动网络上,从GSM到LTE的所有标准上,设备和基站之间都使用了RLC协议。 RLC可以在两种模式下运行:已确认和未确认。我观察到的在实验中使用的确认模式意味着,如果在数据包传输过程中出现任何位错误,它将被重新传输,直到没有错误为止,从而在整个传输过程中都阻止了发送队列。在未确认的模式下,仅丢弃具有误码的数据包,这就是我所需要的。

所以...有什么方法可以控制用于我的应用程序数据包的RLC模式,或者说该模式是由网络配置的?我已经尝试了IP标头中的“服务类型”字段,但似乎没有成功。

我在此处放置了“ android”标签,但理想情况下,我对适用于所有主要移动操作系统的解决方案感兴趣。

最佳答案

由于以下两个原因,无法从设备执行此操作:

1-这是网络配置的属性,用于实施运营商所需的QoS。所有数据服务将在共享同一频道的RLC AM上运行。具有专用QoS(例如更高优先级和RLC UM)的信道通常会为运营商的电话服务(VoLTE)运行。

2-即使设备可以选择其首选模式,这也是调制解调器/芯片组使用的低级配置。这是未提供给Android开发人员的(RLC在PDCP下,在IP层下)。

但是,尽管如此,我认为您的VoIP性能不会受到影响。延迟也取决于其他因素,例如网络负载和无线电条件。 LTE网络中的用户数量越高,延迟就越高。小区覆盖范围越差,等待时间越差。

尝试在speedtest.net上检查延迟。直到30ms左右才可以。

干杯。

09-30 12:36