Implementacja funkcji zaawansowanych

Wyświetl źródło na GitHubie

Niektóre funkcje zaawansowane są opcjonalne w zależności od tego, czy są. obsługiwane na docelowej platformie sprzętowej.

Oczekiwanie na automatyczne kadrowanie

IEEE 802.15.4 definiuje 2 rodzaje metod przesyłania danych między Przenoszenie dziecka: przenoszenie bezpośrednie i pośrednie. To ostatnie jest zaprojektowane Głównie w przypadku sennych urządzeń końcowych (SED), które przez większość czasu śpią. okresowe wybudzanie, aby pobrać dane z kolejki do elementu nadrzędnego.

  • Transmisja bezpośrednia – rodzic wysyła ramkę danych bezpośrednio do urządzenia końcowego. Transmisja bezpośrednia

  • Transmisja pośrednia – wydawca nadrzędny przechowuje dane do momentu, gdy o to poprosi ich urządzenie końcowe. Transmisja bezpośrednia

W przypadku pośrednim dziecko musi najpierw odpytać rodzica, aby ustalić, czy są dostępne dane na jego temat. W tym celu dziecko wysyła dane którą akceptuje wydawca nadrzędny. Następnie rodzic określa, czy ma jakiekolwiek dane dotyczące urządzenia dziecka; Jeśli tak, wysyła pakiet danych do dziecka które potwierdza ich otrzymanie.

Jeśli radio obsługuje dynamiczne ustawianie bitu Frame Pending w danych wychodzących na potrzeby obsługi SED, kierowcy muszą wdrożyć dopasowanie adresu źródłowego API, który udostępnia tę funkcję. OpenThread używa tego interfejsu API, by informować radio, SED, dla których ustawiany jest bit Frame Pending.

Jeśli radio nie obsługuje dynamicznego ustawiania bitu Frame Pending, radio może przeciąć interfejs API dopasowywania adresu źródłowego, który ma zwrócić OT_ERROR_NOT_IMPLEMENTED

Skanowanie/wykrywanie energii za pomocą radia

Funkcja skanowania/wykrywania energii wymaga układu radiowego, aby pobrać energię prezentację w wybranych kanałach i zwracanie wykrytej wartości energii górnej warstwy.

Jeśli ta funkcja nie jest wdrożona, warstwa MAC IEEE 802.15.4 wysyła/odbiera pakiet żądania/odpowiedzi typu beacon, aby ocenić dla każdego kanału.

Jeśli układ radiowy obsługuje funkcję skanowania/wykrywania energii, pamiętaj o wyłączeniu oprogramowania logikę skanowania energii przez ustawienie makra OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0

Akceleracja sprzętowa mbedTLS

mbedTLS definiuje kilka makr w głównym pliku nagłówka konfiguracji, mbedtls-config.h aby umożliwić użytkownikom włączenie alternatywnych implementacji algorytmów AES, SHA1, SHA2 oraz innych modułów, a także poszczególnych funkcji krzywej eliptycznej. kryptografii (ECC) przez moduł GF(p). Zobacz akceleracja sprzętowa mbedTLS .

OpenThread nie włącza tych makr, dlatego symetryczna kryptografia algorytmy, algorytmy haszowania i funkcje ECC wykorzystują oprogramowanie domyślnych implementacji. Te implementacje wymagają dużej ilości pamięci i zasoby obliczeniowe. Optymalna wydajność i lepsze działanie użytkownika zalecamy włączenie akceleracji sprzętowej zamiast programowej, i wdrożyć opisane powyżej działania.

Aby włączyć akcelerację sprzętową w OpenThread, użyj poniższego polecenia MBedTLS pliki nagłówka konfiguracji należy dodać do kompilacji ot-config definicje w plikach CMake na platformie:

  • Główna konfiguracja, która definiuje wszystkie niezbędne makra używane w OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Konfiguracja dla konkretnego użytkownika, która definiuje alternatywne implementacje moduły i funkcje: src/platform-name-mbedtls-config.h

Przykład ze strony nrf52811.cmake:

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

Skomentowane makra w usłudze mbedtls-config.h nie są wymagane i można je włączyć tutaj: pliku nagłówka konfiguracji konkretnego użytkownika.

Pełną przykładową konfigurację dla użytkownika znajdziesz tutaj mbedtls_config_autogen.h w folderze ot-efr32.

Moduł AES

OpenThread Security stosuje kryptografię AES CCM (Counter with CBC-MAC) do zaszyfrować/odszyfrować wiadomości IEEE 802.15.4 lub MLE i sprawdzić ich poprawność; kod integracji. Akceleracja sprzętowa powinna obsługiwać co najmniej podstawowy format AES ECB Tryb (Electronic Codebook Book) na potrzeby podstawowego wywołania funkcji CCM w ramach AES.

Aby skorzystać z alternatywnej implementacji modułu AES:

  1. Zdefiniuj makro MBEDTLS_AES_ALT w mbedTLS dla konkretnego użytkownika plik nagłówkowy konfiguracji
  2. Podaj ścieżkę do pliku aes_alt.h za pomocą funkcji MBEDTLS_CPPFLAGS zmienna

Moduł SHA256

OpenThread Security stosuje algorytmy szyfrowania HMAC i SHA256 do obliczania wartość skrótu do zarządzania kluczami sieciowymi i generowania plików PSKc zgodnie z Thread Specyfikacja.

Aby użyć alternatywnej implementacji podstawowego modułu SHA256:

  1. Zdefiniuj makro MBEDTLS_SHA256_ALT w mbedTLS dla konkretnego użytkownika plik nagłówkowy konfiguracji
  2. Podaj ścieżkę do pliku sha256_alt.h za pomocą funkcji MBEDTLS_CPPFLAGS zmienna

Funkcje ECC

Ponieważ mbedTLS obsługuje obecnie akcelerację sprzętową tylko dla części ECC zamiast całego modułu, możesz zastosować niektóre funkcje zdefiniowane w argumencie path-to-mbedtls/library/ecp.c, aby przyspieszyć ECC mnożenia punktów.

Krzywa secp256r1 jest używana w algorytmie wymiany kluczy Wersja robocza ECJPAKE. Dlatego akceleracja sprzętowa powinna obsługiwać co najmniej krótki weierstras secp256r1 operacji krzywej. Zobacz artykuł na temat akceleracji sprzętowej CRYPTO firmy SiLabs dla mbedTLS .