OpenThread 是否有性能目标或要求?
Are there Performance Goals or Requirements for OpenThread?
我一直在 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。根据RFC 6282 IPv6 Datagrams on IEEE 802.15.4 Section 1,802.15.4理论上应该有:
a wireless link with a link throughput of 250 kbps or less
我预计 OpenThread 应该接近 77 kbps。
是否有基本 OpenThread 库应该能够达到的速度设定要求或目标?
Mac class 中的退避时间是否应该更小,至少在最初阶段如此?
如您所见,我们尚未关注 OpenThread 的性能。我们仍在努力确保实现所有必要的功能部分。
OpenThread 中的软 MAC 实现就是一个例子,应该对其进行优化以更好地匹配 IEEE 802.15.4-2006 时序规范。 IEEE 802.15.4-2006 指定 2.4 GHz 的默认随机最小退避 window 为 2.56 毫秒,最大退避 window 为 10.24 毫秒。假设最小默认值 window 为 2.56 毫秒,则未确认数据帧之间的平均帧间距应该约为 1.28 毫秒。如果我们想要精确,则需要增加一点时间来解释强制性 IFS(短帧为 12 个符号,长帧为 40 个符号)。
我一直在 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。根据RFC 6282 IPv6 Datagrams on IEEE 802.15.4 Section 1,802.15.4理论上应该有:
a wireless link with a link throughput of 250 kbps or less
我预计 OpenThread 应该接近 77 kbps。
是否有基本 OpenThread 库应该能够达到的速度设定要求或目标?
Mac class 中的退避时间是否应该更小,至少在最初阶段如此?
如您所见,我们尚未关注 OpenThread 的性能。我们仍在努力确保实现所有必要的功能部分。
OpenThread 中的软 MAC 实现就是一个例子,应该对其进行优化以更好地匹配 IEEE 802.15.4-2006 时序规范。 IEEE 802.15.4-2006 指定 2.4 GHz 的默认随机最小退避 window 为 2.56 毫秒,最大退避 window 为 10.24 毫秒。假设最小默认值 window 为 2.56 毫秒,则未确认数据帧之间的平均帧间距应该约为 1.28 毫秒。如果我们想要精确,则需要增加一点时间来解释强制性 IFS(短帧为 12 个符号,长帧为 40 个符号)。