Implementa funciones avanzadas

Ver código fuente en GitHub

Algunas funciones avanzadas son opcionales, dependiendo de si se es compatible con la plataforma de hardware de destino.

Encuadre automático pendiente

El estándar IEEE 802.15.4 define dos tipos de métodos de transmisión de datos entre secundaria: transmisión directa y transmisión indirecta. Este último está diseñado principalmente en dispositivos finales con sueño (SED) que duermen la mayor parte del tiempo. activar con regularidad para sondear al elemento superior en busca de datos en cola.

  • Transmisión directa: el elemento superior envía un marco de datos directamente al dispositivo final. Transmisión directa

  • Transmisión indirecta: el publicador superior conserva los datos hasta que lo solicite el dispositivo final previsto. Transmisión directa

En el caso indirecto, un dispositivo final secundario primero debe sondear al elemento superior para determinar si hay datos disponibles para ella. Para ello, el publicador secundario envía un individual, que el superior reconoce. Luego, el elemento superior determina tenga datos del dispositivo secundario; si es así, envía un paquete de datos al elemento secundario dispositivo, que confirma la recepción de los datos.

Si la radio admite la configuración dinámica del bit de marco pendiente en las salidas para los SED, los conductores deben implementar el coincidencia con la dirección de origen para habilitar esta función. OpenThread usa esta API para indicarle a la radio SED para las que se establecerá el bit de marco pendiente.

Si la radio no admite la configuración dinámica del bit de marco pendiente, el la radio podría omitir la API de coincidencia de direcciones de origen para devolver OT_ERROR_NOT_IMPLEMENTED

Escaneo/detección de energía con radio

La función de escaneo o detección de energía requiere el chip de radio para realizar una muestra de la energía presentar en canales seleccionados y devolver el valor de energía detectado al capa superior.

Si no se implementa esta función, se aplicará la capa MAC IEEE 802.15.4 envía o recibe un paquete de solicitud/respuesta de baliza para evaluar el estado el valor de la energía en el canal.

Si el chip de radio admite la Detección/Escaneo de energía, asegúrate de inhabilitar el software. la lógica de análisis de energía configurando la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0

Aceleración de hardware para mbedTLS

mbedTLS define varias macros en el archivo de encabezado de configuración principal, mbedtls-config.h: para permitir que los usuarios habiliten implementaciones alternativas de AES, SHA1, SHA2 y otros módulos, así como funciones individuales para la curva elíptica de criptografía (ECC) en el módulo GF(p). Consulta aceleración de hardware mbedTLS para obtener más información.

OpenThread no habilita esas macros, por lo que el método algoritmos, algoritmos hash y funciones de ECC usan software de forma predeterminada. Estas implementaciones requieren una memoria considerable y recursos de procesamiento. Para un rendimiento óptimo y un mejor usuario te recomendamos que habilites la aceleración de hardware en lugar de software implementar las operaciones anteriores.

Para habilitar la aceleración de hardware en OpenThread, se aplica la siguiente instrucción de mbedTLS: Los archivos de encabezado de configuración deben agregarse a la compilación ot-config definiciones en los archivos CMake de la plataforma:

  • Configuración principal, que define todas las macros necesarias que se usan en OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Configuración específica del usuario, que define implementaciones alternativas de módulos y funciones: src/platform-name-mbedtls-config.h

Ejemplo de nrf52811.cmake:

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

Las macros con comentarios en mbedtls-config.h no son obligatorias y se pueden habilitar en el archivo de encabezado de configuración específico del usuario para la aceleración de hardware.

Para obtener un ejemplo completo de configuración específica para el usuario, consulta la mbedtls_config_autogen.h en ot-efr32.

Módulo AES

OpenThread Security aplica la criptografía de CCM (Contador con CBC-MAC) de AES a Encripta y desencripta los mensajes IEEE 802.15.4 o MLE, y los valida. código de integración. La aceleración de hardware debe al menos admitir el AES ECB básico (Libro de código electrónico electrónico) para la llamada funcional básica de CCM de AES.

Para utilizar una implementación alternativa de módulo AES, haz lo siguiente:

  1. Define la macro MBEDTLS_AES_ALT en la mbedTLS específica del usuario. archivo de encabezado de configuración
  2. Indica la ruta de acceso del archivo aes_alt.h con MBEDTLS_CPPFLAGS. variable

Módulo SHA256

OpenThread Security aplica algoritmos de hash HMAC y SHA256 para calcular la hash para la administración de claves de red y la generación de PSKc según el subproceso Especificación.

Para utilizar una implementación alternativa de módulo básico SHA256, sigue estos pasos:

  1. Define la macro MBEDTLS_SHA256_ALT en la mbedTLS específica del usuario. archivo de encabezado de configuración
  2. Indica la ruta de acceso del archivo sha256_alt.h con MBEDTLS_CPPFLAGS. variable

Funciones ECC

Debido a que, actualmente, mbedTLS solo admite la aceleración de hardware para partes de ECC. en lugar de todo el módulo, puedes implementar algunas definidas en path-to-mbedtls/library/ecp.c para acelerar el ECC la multiplicación de puntos.

La curva secp256r1 se usa en el algoritmo de intercambio de claves de la ECJPAKE. Por lo tanto, la aceleración de hardware debería, al menos, admitir la ruta Weierstrass corta secp256r1 con una curva de crecimiento. Consulta Aceleración de hardware CRYPTO de SiLabs para mbedTLS para ver un ejemplo.