Implementare le funzionalità avanzate

Visualizza il codice sorgente su GitHub

Alcune funzionalità avanzate sono facoltative, a seconda che lo siano supportate sulla piattaforma hardware di destinazione.

Inquadratura automatica in attesa

Lo standard IEEE 802.15.4 definisce due tipi di metodi di trasmissione dei dati tra figlio: trasmissione diretta e trasmissione indiretta. Quest'ultimo è progettato principalmente per i dispositivi finali (SED) che dormono per la maggior parte del tempo, che si riattivano periodicamente per chiedere i dati in coda al genitore.

  • Trasmissione diretta: il genitore invia un frame di dati direttamente al dispositivo finale. Trasmissione diretta

  • Trasmissione indiretta: il publisher principale conserva i dati fino a quando non viene richiesto dal dispositivo finale previsto. Trasmissione diretta

Nel caso indiretto, un dispositivo finale secondario deve prima chiamare il genitore per determinare la disponibilità di dati. Per farlo, il bambino invia dati richiesta, che il publisher principale riconosce. L'elemento principale determina quindi se disponga di dati relativi al dispositivo del bambino; Se è così, invia un pacchetto di dati al file dispositivo che conferma la ricezione dei dati.

Se la radio supporta l'impostazione dinamica del bit Frame Pending in uscita ringraziamenti ai SED, i conducenti devono implementare corrispondenza indirizzo di origine per abilitare questa funzionalità. OpenThread usa questa API per indicare alla radio quale SED per impostare il bit Frame Pending.

Se la radio non supporta l'impostazione dinamica del bit Frame Pending, il parametro radio potrebbe simulare l'API di corrispondenza dell'indirizzo di origine da restituire OT_ERROR_NOT_IMPLEMENTED.

Scansione/rilevamento energetico con radio

La funzionalità di scansione/rilevamento dei consumi energetici richiede il chip radio per campionare l'energia presenti sui canali selezionati e restituisce il valore di energia rilevato livello superiore.

Se questa funzione non è implementata, lo strato MAC IEEE 802.15.4 invia/riceve un pacchetto di richiesta/risposta Beacon per valutare lo stato valore energetico del canale.

Se il chip radio supporta Scansione/Rilevamento energia, assicurati di disattivare il software la logica di scansione dell'energia impostando la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

Accelerazione hardware per mbedTLS

mbedTLS definisce varie macro nel file di intestazione della configurazione principale, mbedtls-config.h, per consentire agli utenti di abilitare implementazioni alternative di AES, SHA1, SHA2 e altri moduli, oltre a funzioni individuali per la curva ellittica crittografia ECC (crittografia) su GF(p). Consulta accelerazione hardware mbedTLS per ulteriori informazioni.

OpenThread non abilita queste macro, pertanto la crittografia simmetrica algoritmi, algoritmi di hash e le funzioni ECC utilizzano tutti software le implementazioni per impostazione predefinita. Queste implementazioni richiedono una memoria considerevole e risorse di calcolo. Per prestazioni ottimali e una migliore esperienza utente ti consigliamo di abilitare l'accelerazione hardware anziché il software per a implementare le operazioni sopra descritte.

Per attivare l'accelerazione hardware in OpenThread, utilizza il seguente comando mbedTLS di configurazione di intestazione devono essere aggiunti alla compilazione di ot-config Definizioni nei file CMake della piattaforma:

  • Configurazione principale, che definisce tutte le macro necessarie utilizzate in OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Configurazione specifica per l'utente, che definisce implementazioni alternative moduli e funzioni: src/platform-name-mbedtls-config.h

Esempio da nrf52811.cmake:

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

Le macro con commento in mbedtls-config.h non sono obbligatorie e possono essere attivate in il file di intestazione della configurazione specifica dell'utente per l'accelerazione hardware.

Per un esempio completo di configurazione specifica per l'utente, consulta mbedtls_config_autogen.h in ot-efr32.

Modulo AES

OpenThread Security applica la crittografia AES CCM (Counter with CBC-MAC) alla crittografare/decifrare i messaggi IEEE 802.15.4 o MLE e convalidare il messaggio del codice di integrazione. L'accelerazione hardware deve supportare almeno la crittografia AES ECB di base (Electronic Codebook Book) per chiamate funzionali di base AES CCM.

Per utilizzare un'implementazione alternativa di un modulo AES:

  1. Definisci la macro MBEDTLS_AES_ALT nel file mbedTLS specifico per l'utente file di intestazione della configurazione
  2. Indica il percorso del file aes_alt.h utilizzando l'istruzione MBEDTLS_CPPFLAGS variabile

Modulo SHA256

OpenThread Security applica gli algoritmi di hash HMAC e SHA256 per calcolare valore hash per la gestione delle chiavi di rete e la generazione di PSKc in base al thread Specifiche.

Per utilizzare un'implementazione di base alternativa del modulo SHA256:

  1. Definisci la macro MBEDTLS_SHA256_ALT nel file mbedTLS specifico per l'utente file di intestazione della configurazione
  2. Indica il percorso del file sha256_alt.h utilizzando l'istruzione MBEDTLS_CPPFLAGS variabile

Funzioni ECC

Poiché al momento mbedTLS supporta l'accelerazione hardware solo per parti di ECC anziché l'intero modulo, puoi scegliere di implementare alcune di Google Cloud definite in path-to-mbedtls/library/ecp.c per accelerare ECC moltiplicazione per punto.

La curva secp256r1 viene utilizzata nell'algoritmo di scambio di chiavi del Bozza ECJPAKE. Pertanto, l'accelerazione hardware dovrebbe supportare almeno la breve weierstrass secp256r1 operativa. Vedi Accelerazione hardware CRYPTO di SiLabs per mbedTLS per vedere un esempio.