Implémentez les fonctionnalités avancées

<ph type="x-smartling-placeholder"></ph> Consulter le code source sur GitHub

Certaines fonctionnalités avancées sont facultatives, pris en charge sur la plate-forme matérielle cible.

Cadrage automatique en attente

La norme IEEE 802.15.4 définit deux types de méthodes de transmission de données entre le parent et enfant: transmission directe et transmission indirecte. Ce dernier est conçu principalement pour les appareils qui ont l’habitude de dormir la plupart du temps, se lever régulièrement pour interroger le parent afin d'obtenir des données en file d'attente.

  • Transmission directe : le parent envoie une trame de données directement à l'appareil final. Transmission directe

  • Transmission indirecte : le parent conserve les données jusqu'à ce qu'il en soit demandé à l'appareil final désigné Transmission directe

Dans le cas indirect, l'appareil côté enfant doit d'abord interroger le parent pour déterminer ou si des données sont disponibles. Pour ce faire, l'éditeur enfant envoie un ensemble de données , que le parent reconnaît. Le parent détermine ensuite s'il contient des données pour l'appareil de l'enfant ; le cas échéant, un paquet de données est envoyé appareil, qui accuse réception des données.

Si la case d'option prend en charge la définition dynamique du bit de frame en attente dans les appels sortants des accusés de réception aux SED, les pilotes doivent mettre en œuvre correspondance de l'adresse source pour activer cette fonctionnalité. OpenThread utilise cette API pour indiquer à la radio laquelle SED pour lesquels définir le bit de frame en attente.

Si la case d'option ne prend pas en charge la définition dynamique du bit de frame en attente, le radio peut bouchonner l'API de correspondance d'adresse source pour renvoyer OT_ERROR_NOT_IMPLEMENTED

Analyse/Détection d'énergie avec radio

La fonctionnalité de détection/recherche d'énergie nécessite la puce radio pour échantillonner l'énergie présenter sur les canaux sélectionnés et renvoyer la valeur énergétique détectée au couche supérieure.

Si cette fonctionnalité n'est pas implémentée, la couche MAC IEEE 802.15.4 envoie/reçoit un paquet de requête/réponse de balise pour évaluer l'état actuel de la valeur énergétique sur le canal.

Si la puce radio est compatible avec la détection et la recherche d'énergie, veillez à désactiver le logiciel. de consommation d'énergie en définissant la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0

Accélération matérielle pour mbedTLS

mbedTLS définit plusieurs macros dans le fichier d'en-tête de configuration principal, mbedtls-config.h, pour permettre aux utilisateurs d'activer d'autres implémentations d'AES, SHA1, SHA2 et les autres modules, ainsi que les fonctions individuelles de la courbe elliptique. la cryptographie (ECC) sur le module GF(p). Voir accélération matérielle mbedTLS pour en savoir plus.

OpenThread n'active pas ces macros, par conséquent la cryptographie symétrique les algorithmes, les algorithmes de hachage et les fonctions ECC utilisent tous un logiciel par défaut. Ces implémentations nécessitent une mémoire importante et des ressources de calcul. Pour des performances optimales et une meilleure expérience utilisateur nous vous recommandons d'activer l'accélération matérielle plutôt que logicielle mettre en œuvre les opérations ci-dessus.

Pour activer l'accélération matérielle dans OpenThread, le mbedTLS suivant les fichiers d'en-tête de configuration doivent être ajoutés à la compilation ot-config dans les fichiers CMake de la plate-forme:

  • Configuration principale, qui définit toutes les macros nécessaires utilisées dans OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • La configuration spécifique à l'utilisateur, qui définit d'autres implémentations modules et fonctions: src/platform-name-mbedtls-config.h

Exemple de nrf52811.cmake:

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

Les macros commentées dans mbedtls-config.h ne sont pas obligatoires et peuvent être activées dans le fichier d'en-tête de configuration spécifique à l'utilisateur pour l'accélération matérielle.

Pour obtenir un exemple complet de configuration spécifique à l'utilisateur, consultez la mbedtls_config_autogen.h dans ot-efr32.

Module AES

OpenThread Security applique le cryptogramme AES CCM (Counter with CBC-MAC) aux chiffrer/déchiffrer les messages IEEE 802.15.4 ou MLE et les valider code d'intégration. L'accélération matérielle doit au moins être compatible avec l'ECB AES de base (Electronic Codebook Book) pour l'appel fonctionnel de base AES CCM.

Pour utiliser une autre implémentation de module AES:

  1. Définir la macro MBEDTLS_AES_ALT dans le protocole mbedTLS spécifique à l'utilisateur fichier d'en-tête de configuration
  2. Indiquez le chemin d'accès au fichier aes_alt.h à l'aide de MBEDTLS_CPPFLAGS. variable

Module SHA256

OpenThread Security applique des algorithmes de hachage HMAC et SHA256 pour calculer le valeur de hachage pour la gestion des clés réseau et la génération de clés PSKc conformément au thread Spécification.

Pour utiliser une autre implémentation de base du module SHA256:

  1. Définir la macro MBEDTLS_SHA256_ALT dans le protocole mbedTLS spécifique à l'utilisateur fichier d'en-tête de configuration
  2. Indiquez le chemin d'accès au fichier sha256_alt.h à l'aide de MBEDTLS_CPPFLAGS. variable

Fonctions ECC

Étant donné que mbedTLS n'est actuellement compatible qu'avec l'accélération matérielle pour certaines parties d'ECC plutôt que l'intégralité du module, vous pouvez choisir d'implémenter définies dans path-to-mbedtls/library/ecp.c pour accélérer l'ECC la multiplication de points.

La courbe secp256r1 est utilisée dans l'algorithme d'échange de clés du Brouillon ECJPAKE. Par conséquent, l'accélération matérielle doit au moins prendre en charge le secp256r1 court Weierstrass opération de courbe. Reportez-vous à la page Accélération matérielle SiLabs CRYPTO pour mbedTLS à titre d'exemple.