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.

[参考译文] CC2652R:链路状态地址列表问题

Guru**** 1127450 points
Other Parts Discussed in Thread: Z-STACK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1334047/cc2652r-link-status-address-list-questions

器件型号:CC2652R
主题中讨论的其他器件:Z-STACK

您好!

网络中有一个协调器和大约30台路由器、并且我们将 MAX_neighbor_entries 值定义为16。  我们使用的是 SimpleLink CC13x2 26x2 SDK 4.20.01.04堆栈。

但是、在我们的监听器跟踪中、我们看到有些路由器在邻居列表中发送具有16个地址的链路状态消息、但有些路由器正在发送具有17个地址的链路状态消息。  (约46%的路由器链路状态消息拥有17个地址、54%拥有16个地址。)  所有链路状态消息 (来自一台路由器的消息除外) 都以协调器作为第一个地址。 但是、如果我查看链路状态消息中的第二个地址、它会在至少6个不同的路由器之间发生变化。

基于以上观察结果、我们有两个问题。

  1. 如果邻居表的大小为16,为什么有些路由器会在其链路状态消息中发送17个地址?  我们期望所有路由器在链路状态消息中都具有一致的最大地址数,因此列出的邻居数可能是16或17,这是奇怪的。 如果第17个地址的链路质量信息无法放入我们的邻接表中、堆栈如何获取该地址的链路质量信息?

  2. 似乎有一些逻辑尝试将协调器包括在邻居表中、或者至少包括在链路状态地址列表中。  如果 NT 选择算法并不是以某种方式倾向于协调器的地址,那么排序后的链路状态地址列表中的第一个条目不应该总是协调器的地址。  它应该是一个低地址,但不同路由器之间应该有一些变异性,类似于第二个索引的外观。  但它们都始终在它们的链路状态地址列表中列出协调器的地址。  有什么想法为什么会发生这种情况?

与问题2相关,我们的协调器将应用程序广播命令发送到网络,例如每30秒左右发送一次。  我们完成了一些有限的测试,其中我们从某些路由器的邻居表中删除了协调器。  但是、路由器收到来自协调器的广播应用包后、协调器的地址似乎很快被重新插入到链路状态列表中。  据我们所知、我们并未编写或启用任何将修改邻居表的代码(除了一个将协调器从邻居表中删除的测试条件)。

提前感谢您!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Damon 您好!

    您能否提供监听器记录您的调查结果?

    1.所有邻居包括相关设备(终端设备子设备)和活动邻居(其他路由设备)。  您的网络是否可能有几个 Zed 孩子?

    2.为每个与网络的 Pan ID 匹配的传入 NWK 数据包更新邻居条目,因此直接接收此 ZC 广播的任何路由器都将其直接添加到其本地邻居表(如果有条目可用)。

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Ryan。


    #1 -网络应该只有路由器-没有终端设备。  让我看看我是否可以获取监听器跟踪、并确认链路状态消息中具有17个地址的节点是否具有所有路由器。

    #2 -这对于知道直接接收的广播被添加到邻居表非常有帮助。

    达蒙

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    回到问题1。  我们的路由器有时会在其链路状态消息中列出17个地址、我们注意到、协调器还会在其链路状态消息中通告多达28个路由器、这需要两个背对背的链路状态广播。  第一个有22个地址、第二个有6个地址。

    但是、协调器的邻居表定义为16个条目、这意味着12个地址必须来自其他一些表。  您在上一篇文章中提到"Total neighbors (总邻居)"包括相关设备和活动邻居。  如果我正确理解、链路状态消息中28台路由器中的16台必须是邻居表中的路由器、但其他12个地址必须是相关设备。  这些设备是否直接与协调器相关联?  如果不是、如何将路由器添加到关联的设备表中?  显示关联的设备表可以包括 路由器或终端设备类型。  (所有12个都是路由器。)

    我们运行了另一个测试、在该测试中、我们关闭了所有路由器6个小时、但让协调器保持运行。  6小时后、协调器在其链路状态表中通告12个器件、每个器件的传入和传出成本都设置为0。  因此,这似乎又指向12台路由器存储在一个不是邻居表的表中。  这似乎是我们在协调器链路状态消息中看到的大量路由器的原因、远远超过了它的邻居表的大小。  这也解释了为什么有些路由器在其链路状态消息中通告17台路由器。

    下面是我的问题:

    1.在协调器链路状态消息中显示的12个额外邻居是关联的设备。  如何将路由器添加到关联的设备表中?

    2.是否有可读取相关设备表的 API?

    3.相关设备表的大小如何?

    达蒙

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damon:

    STACK/NWK/assoc_list.h 包含各种 API、例如 AssocCount (器件数量)和 AssocFindDevice (列表中第 N 个器件的信息)等。  您可以将这些函数与 nwk_util.h 函数进行比较,如 nwkCommunigborCount 和 nwkCommunigborGetWithIndex。  可能12台路由器直接连接到 ZC 并被视为子路由器,因此在发送离开请求或设备通过另一台路由器重新连接之前,它们的条目不会被删除。  请注意、自  SDK v4.20以来、Z-Stack 布线已得到改进

    此致、
    瑞安