Google 致力于为黑人社区推动种族平等。查看具体行动

实现高级功能

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

在 GitHub 上查看源代码

有些高级功能是可选的,具体取决于目标硬件平台是否支持这些功能。

自动帧待审核

IEEE 802.15.4 定义了父级和子级之间的两种数据传输方法:直接传输和间接传输。后者主要针对睡觉时间最多的设备 (SED),处于睡眠状态,会定期唤醒设备以轮询队列中是否有队列中的数据。

  • 直接传输 - 父级将数据帧直接发送到终端设备 直接传输

  • 间接传输 - 父级保留数据,直到其预期的最终设备请求 直接传输

在间接的情况下,子端设备必须先轮询父设备,以确定是否有任何数据可用。为此,子级会发送一个父级已确认的数据请求。然后,父设备确定其子设备是否有任何数据;如果有,它会向子设备发送数据数据包,从而确认收到数据。

如果收音机支持以动态方式向 SED 发送外发确认中的帧待处理位,驱动程序必须实现源地址匹配 API 才能启用此功能。OpenThread 使用此 API 告知无线装置要针对哪些 SED 设置“帧待处理”位。

如果收音机不支持动态设置“帧待处理”位,该收音机可能会将源地址匹配 API 打桩返回 OT_ERROR_NOT_IMPLEMENTED

通过无线电信号进行能源扫描/检测

能源扫描/检测功能需要使用无线电芯片对所选信道中的能量进行采样,并将检测到的能量值返回到上层。

如果未实现此功能,IEEE 802.15.4 MAC 层会发送/接收信标请求/响应数据包,以评估信道上的当前能量值。

如果无线电芯片支持能源扫描/检测,请务必通过设置宏 OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 来停用软件能扫描逻辑。

mbedTLS 的硬件加速

mbedTLS 在主配置头文件 mbedtls-config.h 中定义了多个宏,以允许用户启用 AES、SHA1、SHA2 和其他模块的替代实现,以及通过 GF (p) 模块启用椭圆曲线加密(ECC) 的各个函数。如需了解详情,请参阅 mbedTLS 硬件加速

OpenThread 不会启用这些宏,因此默认情况下,对称加密算法、哈希算法和 ECC 函数均利用软件实现。这些实现需要大量的内存和计算资源。为了获得最佳性能和更好的用户体验,我们建议启用硬件加速(而不是软件)来实现上述操作。

如需在 OpenThread 内启用硬件加速,应将以下 mbedTLS 配置头文件添加到平台 CMake 文件的 ot-config 编译定义中:

来自 nrf52811.cmake 的示例:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

mbedtls-config.h 中带注释的宏并不是强制性的,可以在用户特定的配置头文件中启用硬件加速。

如需查看特定于用户的完整配置示例,请参阅 ot-efr32 中的 mbedtls_config_autogen.h 文件。

AES 模块

OpenThread Security 采用 AES CCM(计数器与 CBC-MAC)加密来加密/解密 IEEE 802.15.4 或 MLE 消息,并验证消息集成代码。硬件加速至少应支持用于 AES CCM 基本功能调用的基本 AES ECB(电子图书簿)模式。

要采用备用 AES 模块实现,请执行以下操作:

  1. 在特定于用户的 mbedTLS 配置头文件中定义 MBEDTLS_AES_ALT
  2. 使用 MBEDTLS_CPPFLAGS 变量指示 aes_alt.h 文件的路径

SHA256 模块

OpenThread Security 根据线程规范,应用 HMAC 和 SHA256 哈希算法来计算网络密钥管理和 PSKc 生成时的哈希值。

如需使用替代的基本 SHA256 模块实现,请执行以下操作:

  1. 在特定于用户的 mbedTLS 配置头文件中定义 MBEDTLS_SHA256_ALT
  2. 使用 MBEDTLS_CPPFLAGS 变量指示 sha256_alt.h 文件的路径

ECC 函数

由于 mbedTLS 目前仅支持对 ECC 函数的某些部分(而非整个模块)进行硬件加速,因此您可以选择实现 path-to-mbedtls/library/ecp.c 中定义的一些函数,以加快 ECC 点乘法。

ECJPAKE 草案的密钥交换算法使用曲线 secp256r1。因此,硬件加速应至少支持 secp256r1 短 Weierstrass 曲线操作。有关示例,请参阅 SiLabs CRYPTO Hardware Acceleration for mbedTLS