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 pośrednia – wydawca nadrzędny przechowuje dane do momentu, gdy o to poprosi ich urządzenie końcowe.
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:
- Zdefiniuj makro
MBEDTLS_AES_ALT
w mbedTLS dla konkretnego użytkownika plik nagłówkowy konfiguracji - Podaj ścieżkę do pliku
aes_alt.h
za pomocą funkcjiMBEDTLS_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:
- Zdefiniuj makro
MBEDTLS_SHA256_ALT
w mbedTLS dla konkretnego użytkownika plik nagłówkowy konfiguracji - Podaj ścieżkę do pliku
sha256_alt.h
za pomocą funkcjiMBEDTLS_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 .