This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于Route Request的广播发送导致zigbee网络应用层消息掉包

Other Parts Discussed in Thread: Z-STACK
1、Route Request的广播发送导致zigbee网络应用层消息掉包。
问题现象:a、在只有一个Coordinator和5个Router的情况下,从协调器发送控制命令给5个Router,抓包发现也会发送Route Request消息;
 b、现在我们展厅测试环境中,也是30个设备左右,在没有Route Reqest消息的时候,能正常通信,但一旦出现了Route Request广播就导致应用层掉消息。
问题补充:上面的程序中都去掉了协议栈自带的30s过期作废的功能,RouteTable大小是协议栈默认的40。问题a中,6个设备零距离,发送频率很快,200ms/次控制所有设备。问题b中,掉消息的一般都是3~4跳路由才到的设备。
问题:为啥去掉了自动Expire,和设备数少于RouteTable Size时,还会发送Route Request;而且即使设备数大于了路由表大小时,是不是也应该在路由表中保存那些经常用的路由呢?
  • 我也发现了

  • 你好 !

            请问你问题解决了吗?

  • 虽然是几年前的问题了,也没TI的FAE来给出解答,我想我们目前遇到的单播丢包导致控制指令发送失败,可能也是此类问题。

    究其原因,可能是0x0000发送指令的时候,发现路由表里面没有节点路由路径,就发送了一个route request来请求目标地址的路径,此时可能就没有时间来处理APP层的包了,所以导致丢包。目标地址收到该route request之后,就保存了0x0000到达自己的路由路径,这个是在Z-Stack Developer Guide文档5.4.2有说明,由于没有Z-Stack源代码,不清楚节点收到route request之后,会不会再返回route record给0x0000,用于0x0000记录到达该节点的路由路径。

    另外我觉得除了MAC ACK和APS ACK机制来保证不丢包之外,还额外需要上层APP增加丢包强制请求路由并重发的机制。