我正在尝试在网状网络上实施网络编码。因此,我需要将数据包发送到多个目的地,这就是我使用广播数据包的方式。但是我不明白为什么将其限制为〜990KBs。

是否需要一些配置?

评论

也许提到您如何生成数据包以及它是什么操作系统。在stackoverflow中,问题可能更多在家里

@ytti,对我来说,这听起来不像是一个开发人员问题,但是在我看来,这很显然是802.11基础知识问题。但是,嘿,我可能错了(正如我妻子指出的那样,通常是这样)。

请添加:相关的配置,硬件/固件信息,也许还有图表?

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。

#1 楼

在802.11无线网络中(我假设是您的情况),通常以最低的基本/基本/所需(术语因供应商而异)数据速率传输广播/多播帧(以及许多管理帧)。这与受支持的数据速率是分开的。

通常,为了获得最佳的范围和最大的兼容性,它默认为1Mbps数据速率,尽管在过去几年中,一些供应商一直在增加此默认值。 br />
一些供应商现在还包括多播到单播转换,通过某种形式的多播监听来跟踪多播客户端,但是我不知道类似的广播方式(无线设备无法知道所有

如果您正在谈论临时的网状网络,那么通常您就无法在驱动程序设置中对此进行控制。

#2 楼

组播速率必须是最低的公分母,以便所有设备都能成功接收它。不能确认多播帧[1],因此,如果对等方未能接收到多播帧,则发送方将不知道,也不会重新传输该帧。每个接收器的丢失率通常超过1%。如果同一频道上有大量单播流量,则可以预期会有更高的丢失率。

如果增加基本多播率,也会增加丢失率。但是,由于您要组合本机数据包并引入冗余以补偿绝对的丢失率,因此您的网络应该能够幸免。请记住,多播802.11管理帧(包括信标)并非旨在支持高丢失率。

在Linux上,大多数mac802.11驱动程序应支持设置多播率。并非如此,最近的内核要求在IBSS和网格的连接时都执行此操作。 iwmcast-rateibss join命令提供了mesh join选项。

但是,如果您恰巧运行的是内核较新且iw都支持NL80211_CMD_SET_MCAST_RATE,那么您可以随时对其进行更改,

iw dev wlanX set mcast_rate 6

设置一个6Mbps的多播速率就很简单。

[1]也许现在可以了。提议对802.11标准进行修改以确认多播帧:所有站点成功接收到多播帧后,将选择随机退避并将确认发送给发送器。当然,ACK可能会发生冲突,因此发送器将重新发送它并允许更大的退避,直到所有接收器都成功确认了该帧。

#3 楼

实际上,可以通过强制无线卡上的速率来修改比特率。在Linux上,命令为:


sudo iwconfig wlan0 rate 11M


评论


iwconfig已过时。它使用的所有ioctl要么被黑,要么被完全伪造,甚至无人操作。无论如何,这个特定命令的作用是可怕的。这不是您想要的:这限制了可用费率,它不会以任何方式解决问题。而且我什至不确定在IBSS的情况下该设置是否可以保留很长时间。

–BatchyX
2013年6月11日19:44



虽然这样做可以使您的广播速度超过1Mbps,但这并不是对所提出的问题的正确答案,该问题本质上是“为什么广播无线限制为1MB?”您要做的是告诉无线设备仅以一种数据速率运行,并且必须至少有一种基本/基本/所需的数据速率。当您获得更高的广播流量时,您将失去降低数据速率(在信号较弱时保持良好连接)或增加数据速率(这也影响单播流量)的能力。本质上,这是一种不适合现实世界的快速修复。

– YLearn♦
2013年6月13日23:14