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.

[参考译文] CC2652P:有关传入/出帧计数器的问题

Guru**** 2466550 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/1103152/cc2652p-questions-about-incoming-outcoming-frame-counter

器件型号:CC2652P
Thread 中讨论的其他器件:Z-stack

大家好、

  

您是否能帮助回答以下有关进入/出帧计数器的问题?

传入和出帧计数器是否都存储在 nV 中?

2.堆栈如何处理出栈帧计数器达到上限的情况? 除了外发消息之外、是否还有其他步骤被忽略?

3.如何分别在协调器/路由器/终端设备中管理传入和出站帧计数器?

4.是否有任何传入帧计数器的老化机制? 传入帧计数器如何映射短地址?

  

此致、

水阳

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

    您好、Shuyang、

    传出帧计数 器作为网络安全信息的一部分保存在 NV 中、ZCD_NV_EX_NWK_SEC_materie_table 用于每个关联节点。  它在所有复位中都是持久的、但在执行 NWK 密钥更新时、如果其值大于0x80000000、则将复位。  任何帧计数器值低于预期值的消息都将被忽略。

    此致、
    Ryan

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

    您好、Ryan、

    那么、如果帧计数器超过0x80000000、器件将启动 NWK 密钥更新请求? 这是否同时适用于传入和出帧计数器?

    对问题3和4有什么意见?

    此致、

    水阳

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

    器件不会自动启动 NWK 密钥更新请求、仅当 TCLK 请求 NWK 密钥更新时、如果器件超过0x80000000、则会复位其自身(传出)的帧计数器。  

    两种帧计数器类型都在网络安全信息 NV 中处理、其条目还包含每个器件的扩展 Pan ID。  它们还由内部 Z-Stack 应用支持子层接口 APSME 和 APSDE 进行管理。

    此致、
    Ryan

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

    您好、Ryan、

    我 在 nwkSecMaterialDesc_t 中只找到一个帧计数器、我认为这是存储在  ZCD_NV_EX_NWK_SEC_material_table 中的传出帧计数器? 我没有找到传入帧计数器的存储位置。

    我还从 swpb022中读出 :"网络上的邻居设备 具有一个邻居表条目、用于表示  设备上次在 网络上时具有的网络帧计数器值"、 这是否意味着设备仅在邻居表中存储其邻居的传入帧计数器?

    我还在查找邻居表的 NVID 时遇到问题? 邻居表是存储在 NV 中还是存储在 RAM 中? 如果邻居表位于 RAM 中、这是否意味着传入的帧计数器也存储在 RAM 中并且在电源周期之间不一致?

    BR、

    水阳

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

    正确的做法是、传出帧计数器存储在 ZCD_NV_EX_NWK_SEC_materie_table 中、并且我已按此修改原始响应。  TC 将传入和传出帧计数 器存储在 APSME_TCLinkKeyNVEntry_t 中、作为 ZCD_NV_EX_TCLK_TABLE 的一部分。  我相信您引用 SWPB022中的句子是错误的、因为协调器和路由器设备将重新加入网络并恢复操作、就好像它们从未离开一样。  不同之处在于、如果他们丢失了网络安全材料(例如工厂重置)并希望 加入网络、则文档此时会显示"如果设备使用新的安全材料第二次加入网络、并且传出网络帧计数器为零、 该网络中的设备将拒绝这些帧作为安全措施。"  因此、ZC 会监控网络中允许使用哪些设备来避免重放攻击。  请记住、帧计数器应在出厂新复位时保持不变。  另请注意 、SSP_Info_t 包含一个用于验证传入数据包的 frmCntr、但当路由器设备复位时、这会被清除。

    此致、
    Ryan

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

    您好、Ryan、

    我想我们谈论的是不同的事情。  APSMG_TCLinkKeyNVEntry_t 中的帧计数器是密钥的帧计数器、我想知道的是 NWK AUxiluion 头中的帧计数 器、它位于 linkInfo_t 结构中。

    我发现 linkInfo_t 同时包含在 Associated _devices_t 和 aroundEntry_t 中、因此传入的帧计数器同时保存在关联表和邻居表中。 我的问题是使用哪个表来检查传入帧计数器的数据指示? 如果 ZStack 使用邻居表检查传入帧计数器、则关联表会保存到 NV、但邻居表不会这样、是否存在重放攻击风险、因为这在电源周期之间不一致?

    我对传出帧计数器还有另一个问题、在路由帧计数器超过0x80000后、除了停止发送路由数据外、是否有来自栈的后续操作? 例如、应用层是否知道它?

    BR、

    水阳

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

    您好、Shuyang、

    linkInfo_t 从 Associated _devices_t 收集、通过预编译 NWK Z-Stack 层检查传入帧计数器。   

    传出帧计数器超过0x80000000后、应用程序内部不会发生任何情况。  帧在 高达0xFFFFFFFF 时有效、但如果当前执行 NWK 密钥更新、应用程序将重置帧计数器的点在中途。  即使溢出回零、堆栈也不会阻止发送出去的消息、但它们可能会被目标设备拒绝。

    此致、
    Ryan