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:Mac 重试和路由发现

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1346332/cc2652r-mac-retries-and-route-discovery

器件型号:CC2652R

您好!

我们将使用  SimpleLink CC13x2 26x2 SDK 4.20.01.04堆栈、并在狭小空间(拥塞较多)内部署了数十台路由器、定期向协调器发送数据。  已禁用 AP 确认。

我们看到在监听器捕获过程中出现了许多路线发现(不是持续的、而是比我们希望的更频繁)。  在大多数路由查找之前,路由中的中间跳将网络状态数据包发送回消息发起方,其状态代码为"非树链接失败"或"无可用路由"。 消息发起方发送路由发现广播来创建新路由。  但是中间跳确实有一条很好的路由-它在将网络状态数据包发送给其中一个消息发送者之前,正将数据包路由到协调器。

我推测、如果中间跳路由器无法从协调器接收到 MAC ACK、它会将网络状态数据包发送回消息发起方。  此外、如果消息发起方收到指示错误的网络状态数据包、我推测它会发送路由发现广播来创建新路由。  那么准确吗?

如果是这种情况、我们希望使网络能够更好地承受数据包故障、而不是因为单个数据包失败而请求新路由。

我们找到了 MAX_MISSINK_MAC_ACK_LINK_FAILURE 定义。  此值是否还设置 MAC 重试次数?  如果没有、我假设如果我们将 MAX_MISSING_MAC_ACK_LINK_FAILURE 从3更改为21、那么中间跳路由器可能不会发送网络状态数据包、直到7个不同的数据包出现故障??  如果该值不正确、有人知道该值的作用吗?

我们的路由器中是否有其它任何可能更改的堆栈值,这些值会导致它们 对数据包故障的耐受性更高,并且如果一个数据包(3次重试)发生故障,则不会请求新路由?

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

    我刚注意到 zstacktask.c 中的以下代码:

        if ( pPtr->pReq->has_maxMissingMacAckLinkFailure )
        {
            zgMaxMissingMacAckLinkFailure = (uint8_t)pPtr->pReq->maxMissingMacAckLinkFailure;
          osal_nv_write( ZCD_NV_POLL_FAILURE_RETRIES,
                sizeof(zgMaxMissingMacAckLinkFailure), &zgMaxMissingMacAckLinkFailure );
        }
        

    这似乎使 MAX_MISSING_MAC_ACK_LINK_FAILURE 只与终端设备轮询有关。  是这样吗?  如果是、则调整该值不会提高我们路由器的数据包故障容错能力。

    我想我们可能会增加 MAX_DATA_RETRIES 和 NWK_MAX_DATA_RETRIES 值、以强制增加 Mac 重试次数。  实际上、我不清楚这两者之间的区别是什么。  还有一个 APSC_MAX_FRAME_RETRIES 定义、上面的注释指出这是"允许的 MAC 帧传输最大次数"。  我假设是不正确的、 APSC_MAX_FRAME_RETRY 是 APS 重试次数、这与我们无关、因为我们不使用 APS ACK、但不确定。

    这是我提出的上述问题。

    1.我的理解是否正确, MAX_MISSING_MAC_ACK_LINK_FAILURE 仅与终端设备轮询相关,对路由器没有影响?

    2. MAX_DATA_RETRIES、NWK_MAX_DATA_RETRIES 和 APSC_MAX_FRAME_RETRIES 之间的区别是什么?  以下哪项可以帮助增加 MAC 重试次数?

    3.我们是否可以在 TI 协议栈中配置任何其他选项来使我们的路由器 对数据包故障具有更高的耐受性,而且如果一个数据包(3次重试)出现故障,就不会请求新路由(正如我在最初的文章中所说的那样)?

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

    Damon 您好!

    如果我重复 之前 E2E 对话中的任何内容、我会提前表示歉意。   

    1.zgMaxMissingMacAckLinkFailure 也适用于在 RTG_UpdateCommunistorEntry 期间的路由器,如果超过最大丢失的 ACK 则强制链路过期。

    2. 不使用 Max_data_retries,可以从代码中删除。  该器件将首先尝试向数据包发送总计  ZMAC_MAX_FRAME_RETRY 的 值、如果这些值失败、那么它将使数据包帧计数器递增1并尝试最多  NWK_MAX_DATA_RETRY 次。  APSC_MAX_FRAME_RETRIES 适用于基于未接收 APS ACK 的重试、您已提到这些已被禁用。   此处是相关响应

    3. 您是否使用 MTO 布线 以及是否查看过 SWRA650 应用报告? `还有一个 LINK_DOWN_TRIGGER、它会在错过 X 数量的链路状态消息后应用、每 NWK_LINK_STATUS_PERIOD (默认情况下为15秒)发送一次。  我认为您已经谈到了到目前为止重要的参数、并鼓励您在修改这些值后重试测试。

    此致、
    瑞安

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

    谢谢 Ryan -这是超级有帮助的!  我们将调整这些值并重新测试。  (我熟悉 MTO 路由、但是这是一个传统系统、我们现在无法调整协调器固件来启用 MTO 路由。  我将回顾 SWRA650报告-感谢您的分享。)