主题中讨论的其他器件:Z-STACK
您好!
网络中有一个协调器和大约30台路由器、并且我们将 MAX_neighbor_entries 值定义为16。 我们使用的是 SimpleLink CC13x2 26x2 SDK 4.20.01.04堆栈。
但是、在我们的监听器跟踪中、我们看到有些路由器在邻居列表中发送具有16个地址的链路状态消息、但有些路由器正在发送具有17个地址的链路状态消息。 (约46%的路由器链路状态消息拥有17个地址、54%拥有16个地址。) 所有链路状态消息 (来自一台路由器的消息除外) 都以协调器作为第一个地址。 但是、如果我查看链路状态消息中的第二个地址、它会在至少6个不同的路由器之间发生变化。
基于以上观察结果、我们有两个问题。
- 如果邻居表的大小为16,为什么有些路由器会在其链路状态消息中发送17个地址? 我们期望所有路由器在链路状态消息中都具有一致的最大地址数,因此列出的邻居数可能是16或17,这是奇怪的。 如果第17个地址的链路质量信息无法放入我们的邻接表中、堆栈如何获取该地址的链路质量信息?
- 似乎有一些逻辑尝试将协调器包括在邻居表中、或者至少包括在链路状态地址列表中。 如果 NT 选择算法并不是以某种方式倾向于协调器的地址,那么排序后的链路状态地址列表中的第一个条目不应该总是协调器的地址。 它应该是一个低地址,但不同路由器之间应该有一些变异性,类似于第二个索引的外观。 但它们都始终在它们的链路状态地址列表中列出协调器的地址。 有什么想法为什么会发生这种情况?
与问题2相关,我们的协调器将应用程序广播命令发送到网络,例如每30秒左右发送一次。 我们完成了一些有限的测试,其中我们从某些路由器的邻居表中删除了协调器。 但是、路由器收到来自协调器的广播应用包后、协调器的地址似乎很快被重新插入到链路状态列表中。 据我们所知、我们并未编写或启用任何将修改邻居表的代码(除了一个将协调器从邻居表中删除的测试条件)。
提前感谢您!