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 indirecta: el publicador superior conserva los datos hasta que lo solicite el dispositivo final previsto.
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:
- Define la macro
MBEDTLS_AES_ALT
en la mbedTLS específica del usuario. archivo de encabezado de configuración - Indica la ruta de acceso del archivo
aes_alt.h
conMBEDTLS_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:
- Define la macro
MBEDTLS_SHA256_ALT
en la mbedTLS específica del usuario. archivo de encabezado de configuración - Indica la ruta de acceso del archivo
sha256_alt.h
conMBEDTLS_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.