我已经在Windows上对OpenThread进行了原型化,并且我注意到,使用Mac类当前的CSMA退避逻辑,即使没有看到争用,它在每次发送之前平均等待9ms。这似乎是一个相当长的等待时间,永远128字节的数据包。
在Windows原型中,当我从一个虚拟(全软件)设备切换到另一个设备时,我得到的小数据包如下所示:
Pinging fd00::e91b:775a:8cfd:bd05 from fd00::b98c:3fe5:44e1:3573 with 32 bytes of data:
Reply from fd00::e91b:775a:8cfd:bd05: time=12ms
Reply from fd00::e91b:775a:8cfd:bd05: time=2ms
Reply from fd00::e91b:775a:8cfd:bd05: time=18ms
Reply from fd00::e91b:775a:8cfd:bd05: time=19ms
Reply from fd00::e91b:775a:8cfd:bd05: time=12ms对于较大的数据包,我得到以下信息:
Pinging fd00::357c:a372:2734:344c from fd00::4392:ac8b:b7d1:631 with 1400 bytes of data:
Reply from fd00::357c:a372:2734:344c: time=249ms
Reply from fd00::357c:a372:2734:344c: time=273ms
Reply from fd00::357c:a372:2734:344c: time=355ms
Reply from fd00::357c:a372:2734:344c: time=231ms
Reply from fd00::357c:a372:2734:344c: time=236ms
Reply from fd00::357c:a372:2734:344c: time=281ms最后,我在这两个虚拟接口上使用了iPerf,而且我从来没有比77 Kbit/秒更好。根据IEEE802.15.4第1节上的RFC 6282 IPv6数据报,理论上802.15.4应该包括:
一种无线链路,其链路吞吐量为250 kbps或以下
我预计OpenThread应该比77 kbps更接近。
是否有一个基本OpenThread库应该能够达到的速度要求或目标?
Mac类中的后退时间是否应该更小,至少在一开始是这样的?
发布于 2016-08-10 18:33:18
正如您注意到的,我们还没有关注OpenThread的性能。我们仍在努力确保执行所有必要的职能部分。
OpenThread中的软MAC实现就是一个例子,应该对其进行优化,以更好地匹配IEEE802.15.4-2006的时序规范。IEEE802.15.4-2006指定了2.56ms的默认随机最小退避窗口和2.4 GHz的最大退避窗口10.24ms。假设最小默认窗口为2.56ms,则在未确认的数据帧之间的平均帧间距应为1.28ms。如果我们想要精确,需要增加一点时间来解释强制IFS (12个符号用于短帧,40个符号用于长帧)。
https://stackoverflow.com/questions/38793140
复制相似问题