我一直在Windows上对OpenThread进行原型设计,我注意到Mac class具有当前的CSMA退避逻辑,即使没有发生争用,它也会在每次发送之前平均等待约9ms。这似乎是相当长的一段时间,等待128字节的数据包。
当我在我的Windows原型中从一个虚拟(所有软件)设备ping到另一个设备时,我得到类似以下内容的小包:
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 Kbits / sec更好。根据{{3}},802.15.4理论上应该具有:
链路吞吐量为250 kbps或更低的无线链路
我预计OpenThread应该接近77 kbps。
基础OpenThread库应该能够达到设定的速度要求或目标吗?
Mac类中的退避时间是否应该更小,至少在最初阶段?
答案 0 :(得分:2)
正如您所注意到的,我们还没有关注OpenThread的性能。我们仍在努力确保实施所有必要的功能部件。
OpenThread中的软MAC实现就是一个例子,它应该进行优化以更好地匹配IEEE 802.15.4-2006时序规范。 IEEE 802.15.4-2006规定默认随机最小退避窗口为2.56ms,最大退避窗口为10.24ms(2.4 GHz)。假设最小默认窗口为2.56ms,您应该在未确认的数据帧之间平均有大约1.28ms的帧间间隔。如果我们想要精确,那么需要花费更多的时间来考虑强制性IFS(短帧为12个符号,长帧为40个符号)。