我想获得两个节点之间无线链路质量的度量。问题是,这些节点并不经常交换消息,但每条消息都包含一个计划发送下一条消息的时间。
目前,我正在使用这样的东西:
if (message arrived in time)
link_quality = link_quality/2 + 0.5
else
link_quality = link_quality/2
正如 rfc3626 中所建议的那样
现在链路质量明显变化很大,一个丢包就会把它减半。它仅用于滞后。
假设有两个节点,A 和 B。A 对 B 的 link_quality 表示它当前从 B 接收消息的质量。然后它1 + link_quality * METRIC_MAX
向 B 宣布(0 无效),因此 B 知道它可以向 A 发送消息的质量。现在的值公告会发生突然变化,所以我想我会做这样的事情
link_metric = (3 * link_metric + new_link_metric) / 4
现在这个稍微好点了,但是还是会有很大的波动。如果我进一步增加旧值的“权重”,则在 link_metric 具有实际值之前需要很长时间。
你有什么建议?