在wifi(5ghz)上流UDP-大约1.5k / packet ...试图同时流向〜10个设备,且延迟极低。.

据我了解Wifi协议,它永远无法真正实现组播,因为每个设备与AP保持“ 1:1”关系,然后接收相同的数据包...下一个设备将连接并获取相同的数据包。


有多种类型的路由器/ AP-“ 3x3”和“ 4x4”,有些具有MIMO等,应该使用什么标准作为AP的选择标准?
我可以通过wifi完全组播到iOS设备吗?我的理论正确吗?
是否有一种组播方法,而不是将每个数据包/客户端都视为单播?


评论

Wi-Fi可以多播,但是您只能使用WAP上的最低可用速度。

因此,当UDP数据包在AP上“多播”时,所有连接的设备是否都在相同的即时实例上接收到该UDP数据包(即,它是否传播1x并被所有设备接收)?还是实际上是“手动交付”到每个单独的设备?我很清楚它在硬线局域网上的工作原理-但是我收到有关WIFI多播的冲突数据...

“真实”多播是第2层广播的一种形式,Wi-Fi可以做到这一点(发送到多播组而不是单独的单播MAC地址),但是您限于WAP上最低的可用速度。您的“伪造”多播是为了解决该限制。

所以...如果我关闭网络中所有较低速度的格式(即禁用2.4ghz,仅以5ghz,40mhz的速度运行,并且只能以最快的速度运行),这将加快整个过程吗?

您是说不使用DHCP之类的东西?那真的是不对的。主机需要连接到WAP,甚至多播也需要IGMP,主机才能加入多播组。 Wi-Fi不是单向协议,该协议要求所有设备都暂停并让步。

#1 楼

然后让我们测试一下。如果我们以恒定速率将多播数据包发送到连接到WiFi接入点的多个设备,则该接入点应报告相同的流量。

要运行此测试,我将数据包从有线PC发送到android平板电脑和树莓派。没有任何iOS设备。网络测试工具iperf具有以下设置,可以轻松用于发送和接收这些数据包:

服务器(WiFI上的设备):iperf -s -u -B 230.5.5.82
<客户端(有线PC):iperf -u -c 230.5.5.82 -t 60 -b 1M

通过这些设置,我们将以1Mbps的速度发送多播数据包一分钟。运行此测试并查看接入点上的无线流量,结果表明它始终约为1Mbps,因此它必须进行真正的多播。结果的另一个值得注意的事情是,数据包丢失的确非常严重,超过了50%。这很可能是因为多播数据包以可能的最低速度发送,因此可以强制接入点仅以最快的速度运行。我正在使用运行dd-wrt的WRT54GL,其中的设置称为“传输固定速率”。将其设置为最快速度后再次运行相同的测试,可以得到小于5%的可接受的丢包率。

要实际回答问题:


获得最快的访问点,该访问点可让您确定传输速率并支持多播。肯定有一些接入点会自动将多播数据包转换为单播数据。对于速度问题,仅使用5GHz宽的频道是不够的,因为客户端可以实际以多种不同的速度进行通讯。确定因素将是接入点。
请参阅1,因为它取决于接入点。

编辑:经过更多测试并在某些ac AP上进行测试后,事实证明,对于多点广播,重要的是能够设置可用速率。组播仍使用g速度,因此可用的物理速率为6、9、12、18、24、36、48和54Mbps。大多数AP将默认使用较慢的速度,因此能够禁用它们以强制其使用较高的速率将大大提高速度。设置此参数可能是多播AP的最重要标准。例如,在现代版本的DD-WRT中,可以使用命令行上的“ wl rateset”命令进行设置。它肯定隐藏得很好,并且大多数固件都不允许设置它。

评论


好像您是在IP级别多播。您确定您的Wifi硬件没有将每个数据包的副本发送给每个单独的客户端吗?你有放音捕捉吗?

– ogurets
17年4月16日在18:06

我可以肯定地确定,在添加了足够的设备之后,如果AP正在复制数据包,则AP将无法达到其获得的速度。我发现在Wireshark中捕获数据包并查看目标字段中的位,该位指示多播/广播或单播是AP实际在做什么的可靠指示。

– Twiske
17年4月17日在14:18

#2 楼


据我了解,Wifi永远不可能实现真正的组播,因为每个设备与AP保持“ 1:1”关系,然后接收相同的
数据包...设备连接并获取相同的数据包。


您的理解存在缺陷,确实存在多播,但就像无线网络上的大多数管理流量一样,它必须以最低支持的基本/基本/要求运行数据速率。默认情况下,这通常是AP支持的最低数据速率。

原因是,从AP到周围客户端的任何广播或多播广播都必须以这样的速度发送:客户必须得到支持并能够可靠地接收。

您所指的是许多接入点可以采用的一种技术,即多播到单播转换。由于无线电介质是共享介质,与以最高数据速率发送的单播帧相比,以最低数据速率发送的多播帧可能要花费300倍甚至更多的“通话时间”。在发送默认配置AP(802.11n或更高版本)的示例情况下,将10个单播帧传送到10个设备中的每一个(例如总共100帧)以最快的速度比甚至传送一个多播帧都快。

802.11上多播的另外两个注意事项通常是使用多播到单播转换的原因,即多播帧永远不会被确认,而单播帧将在没有确认的情况下由AP确认并重新传输(不要与TCP确认混淆,这是一种L2机制,是在AP和客户端之间找到最佳数据速率的过程的一部分)。

其次,如果BSS中的任何客户端设备正在使用节能模式,则仅定期发送多播帧(基于配置的DTIM和信标间隔),以确保所有客户端再次接收到多播帧。通过多播到单播转换,如果帧不使用省电模式,则帧会立即转到客户端,而只会延迟到处于省电模式的客户端。


有多种类型路由器/ AP的数量-“ 3x3”和“ 4x4”,有些具有
MIMO,等等。我应该如何选择AP作为选择标准?


首先,您会希望访问点达到或超过客户端设备的功能。借此,我的意思是,如果您的客户端是支持802.11n 2x2的设备,则您至少需要一个802.11n 2x2 AP。即使使用所有802.11n客户端,80​​2.11ac也将为您带来一些优势,而空间空间流也不会受到损害,因为多余的流以其他方式被利用。

其次,您需要一个可以进行配置的接入点选项来禁用/启用多播到单播转换,为ESS选择特定的受支持/要求的数据速率,并且最好能够配置DTIM和信标间隔。


我可以真的通过wifi组播到iOS设备吗?我的理论正确吗?


分别是和不是。您可以这样做,但是除非您真的知道自己在做什么,或者只是为了使事情简单,否则可以使用mulicast到单播功能获得更“实时”的体验。未能正确满足您的情况可能会减少客户端设备的使用体验。

要获得良好的性能,您需要在保持可靠信号基础上,尽可能上调所需的数据速率。您的环境以及客户端设备与AP之间的距离。

由于iOS设备确实使用省电模式,因此您可能希望进一步调整DTIM和信标间隔,以减少省电模式引入的延迟。请记住,这些设置还会降低通话时间利用率(例如,降低信标间隔意味着更多的信标等),从而产生更多无法解决的问题。


有办法多播而不是将每个数据包/客户端都视为单播?


我已经讲过,是的。只要您的AP一开始就没有多播到单播功能,或者可以选择禁用它即可。