OpenWRT 中的连续无线数据包流

OpenWRT 中的连续无线数据包流

我在 Linksys 1900ACS 路由器上使用 OpenWRT 15.05 通过 UDP 广播连续数据流(开放其他替代方案)(一首歌)。路由器运行着数百台设备,目前通过运行多播(将来通过从路由器和嗅探数据包的所有接收设备进行数据广播)。

即使我以完全固定的时间间隔将数据包发送到路由器,由于路由器中发生一些缓冲,设备也会在随机延迟后(以秒为单位,而不是毫秒)接收数据包。我如何将路由器配置为在从计算机接收数据时继续传输数据而不进行任何缓冲(或 CSMA/CA 等)的模式,或者至少在所有数据包上保持恒定的延迟。

答案1

802.11 上的多播很棘手,所以您可能不会喜欢这些答案。

在客户端上,将其监听间隔设置为 1。监听间隔控制处于省电模式的客户端在唤醒无线电接收器以查看 AP 是否已为其排队任何流量之前将其无线电接收器关闭(休眠)的信标周期数。如果您希望客户端及时接收流量,则必须让它们保持更多时间处于唤醒状态。因此,这会影响电池寿命。如果您无法在给定客户端上设置监听间隔,请关闭该客户端上的省电模式。

在 AP 上,将 DTIM 间隔设置为 1。DTIM 间隔控制在 AP 尝试发送多播数据包之前经过多少个信标间隔。将其设置为 1 意味着 AP 将在每个信标之后立即发送多播,默认情况下每 102.4 毫秒(大约每 1/10 秒)。因此,DTIM 间隔为 1 将允许平均多播延迟仅 51 毫秒。如果您甚至不想要这么多,那么要么在所有客户端上禁用省电模式(这样多播总是可以在它们进入时立即发送),要么将 Beacon 间隔设置为小于大多数 AP 使用的 102.4 毫秒默认值。如果您的 AP 不允许您设置 DTIM 间隔或 Beacon 间隔,那么您必须在所有客户端上禁用省电模式。

如果问题在于无法可靠地接收多播,则解决方法包括降低多播速率(即 AP 传输多播的 PHY 速率)和禁用无线安全性。WPA2 和 WPA 要求使用与单播不同的密钥对多播进行加密,而某些设备在处理该多播(组)密钥时可能会出现一些问题。

如果问题在于您的 AP 中积累了长队列的帧缓冲区,这就称为“缓冲区膨胀”,而 OpenWrt 网站上有一个很好的页面,介绍如何启用 FQ-CoDel 来解决缓冲区膨胀问题。

相关内容