我正在尝试在网状网络上实施网络编码。因此,我需要将数据包发送到多个目的地,这就是我使用广播数据包的方式。但是我不明白为什么将其限制为〜990KB。
有一些配置要做吗?
我正在尝试在网状网络上实施网络编码。因此,我需要将数据包发送到多个目的地,这就是我使用广播数据包的方式。但是我不明白为什么将其限制为〜990KB。
有一些配置要做吗?
Answers:
组播速率必须是最低的公分母,以便所有设备都能成功接收它。不能确认多播帧[1],因此,如果对等方未能接收到多播帧,则发送方将不知道,也不会重新传输该帧。每个接收器的丢失率通常超过1%。如果在同一频道上有大量单播流量,则损失率会更高。
如果增加基本多播速率,则也会增加丢失率。但是,由于您要组合本机数据包并引入冗余以补偿纯粹的丢失率,因此您的网络应该能够承受这种损失。请记住,多播802.11管理帧(包括信标)并非旨在支持高丢失率。
在Linux上,大多数mac802.11驱动程序应支持设置多播速率。并非如此,最近的内核要求在IBSS和网格的连接时都执行此操作。iw
有and 命令的mcast-rate
选项。ibss join
mesh join
但是,如果您恰巧运行的是最新的内核,iw
并且两者都支持NL80211_CMD_SET_MCAST_RATE
,那么您可以随时对其进行更改,它很简单
iw dev wlanX set mcast_rate 6
设置6Mbps的多播速率。
[1]也许他们现在可以。提议对802.11标准进行修改以确认多播帧:所有站点成功接收到多播帧后,将选择随机退避并将确认发送给发送器。当然,ACK可能会发生冲突,因此发送器将重新发送它并允许更大的退避,直到所有接收器都成功确认了该帧。
实际上,可以通过强制无线卡上的速率来修改比特率。在Linux上,命令为:
sudo iwconfig wlan0速率11M
iwconfig
已过时。它使用的所有ioctl要么被黑,要么被完全伪造,甚至没有操作。无论如何,这个特定命令的作用是可怕的。这不是您想要的:这限制了可用费率,它不会以任何方式解决问题。而且我什至不确定在IBSS的情况下此设置是否可以保留很长时间。