我正在尝试通过网状网络实现网络编码。因此我需要将数据包发送到多个目的地,这是我使用广播数据包的方式。但我不明白为什么这被限制在 ~990KBs。
有什么配置要做吗?
我正在尝试通过网状网络实现网络编码。因此我需要将数据包发送到多个目的地,这是我使用广播数据包的方式。但我不明白为什么这被限制在 ~990KBs。
有什么配置要做吗?
在 802.11 无线(我假设是您的情况)中,通常广播/多播帧(以及许多管理帧)以最低的基本/基本/要求(术语因供应商而异)数据速率传输。这与支持的数据速率是分开的。
通常,为了获得最佳范围和最大兼容性,默认为 1Mbps 数据速率,尽管在过去几年中,一些供应商一直在增加此默认值。
一些供应商现在还包括一个多播到单播的转换,通过某种形式的多播侦听来跟踪多播客户端,但是我知道没有类似的广播方式(无线设备无法知道它可能需要的所有客户端)到达)。
如果您谈论的是 ad-hoc 网状网络,那么您通常无法在驱动程序设置中对此进行控制。
多播速率必须是最低公分母,以便所有设备都能成功接收。多播帧不能被确认[1],因此如果对等方未能接收到它,发送者将不知道,也不会重传该帧。每个接收器的丢失率超过 1% 是很常见的。如果在同一信道上有大量单播流量,预计会出现更高的丢失率。
如果增加基本组播速率,也会增加丢失率。但是,由于您要组合本机数据包并引入冗余来补偿绝对的丢失率,因此您的网络应该能够承受这种情况。请记住,多播 802.11 管理帧(包括信标)并非旨在支持高丢失率。
在 Linux 上,大多数 mac802.11 驱动程序应该支持设置多播速率。不是最近的内核要求在连接时为 IBSS 和网格完成此操作。iw
有一个和命令的mcast-rate
选项。ibss join
mesh join
但是,如果您碰巧正在运行一个相当新的内核并且iw
两者都支持NL80211_CMD_SET_MCAST_RATE
,那么您可以随时更改它,就像
iw dev wlanX set mcast_rate 6
设置一个 6Mbps 的组播速率。
[1] 也许他们现在可以了。建议修改 802.11 标准以确认多播帧:所有站点在成功接收多播帧后,将选择随机退避并向发送器发送确认。当然,确认可能会发生冲突,因此发射器会重新传输它并允许更大的退避,直到所有接收器都成功确认了该帧。
实际上可以通过强制无线卡上的速率来修改比特率。在 Linux 上,命令是:
须藤 iwconfig wlan0 速率 11M