Внедрить расширенные функции

Посмотреть исходный код на GitHub

Некоторые расширенные функции являются необязательными, в зависимости от того, поддерживаются ли они на целевой аппаратной платформе.

Автофрейм в ожидании

IEEE 802.15.4 определяет два типа методов передачи данных между родительским и дочерним объектами: прямая передача и косвенная передача. Последний предназначен в первую очередь для «спящих» оконечных устройств (SED), которые большую часть времени спят, периодически просыпаясь, чтобы опросить родителя на предмет данных в очереди.

  • Прямая передача - родитель отправляет кадр данных непосредственно к конечному устройству Прямая передача

  • Косвенные передачи - родитель держит данные , пока не обратится с просьбой его предполагаемым конечным устройством Прямая передача

В косвенном случае дочернее оконечное устройство должно сначала опросить родителя, чтобы определить, доступны ли для него какие-либо данные. Для этого дочерний элемент отправляет запрос данных, который родитель подтверждает. Затем родительский элемент определяет, есть ли у него какие-либо данные для дочернего устройства; если это так, он отправляет пакет данных на дочернее устройство, которое подтверждает получение данных.

Если поддерживают радио динамической настройки Кадра Pending бит в исходящих подтверждений в SEDs, водители должны реализовать исходный адрес совпадает с адресом API , чтобы включить эту возможность. OpenThread использует этот API, чтобы сообщить радиомодулю, для каких SED нужно установить бит ожидания кадра.

Если радио не поддерживают динамическую настройку Кадра Pending бит, радио может гасит исходный адрес совпадает с адресом API для возврата OT_ERROR_NOT_IMPLEMENTED .

Энергетическое сканирование / обнаружение с помощью радио

Функция сканирования / обнаружения энергии требует, чтобы радиочип отбирал энергию, представленную на выбранных каналах, и возвращал обнаруженное значение энергии на верхний уровень.

Если эта функция не реализована, уровень MAC IEEE 802.15.4 отправляет / принимает пакет запроса / ответа маяка для оценки текущего значения энергии в канале.

Если радио чип поддерживает Energy Scan / Detect, убедитесь , что отключить логику сканирования программного обеспечения энергетической установки макроса OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Аппаратное ускорение для mbedTLS

mbedTLS определяет несколько макросов в главном файле заголовка конфигурации, mbedtls-config.h , чтобы позволить пользователям включать альтернативные реализации AES, SHA1, SHA2 и другие модули, а также отдельные функции для эллиптической кривой криптографии (ECC) над GF (p) модуль. См mbedTLS аппаратного ускорения для получения дополнительной информации.

OpenThread не поддерживает эти макросы, поэтому симметричные криптоалгоритмы, хэш-алгоритмы и функции ECC по умолчанию используют программные реализации. Эти реализации требуют значительных ресурсов памяти и вычислительных ресурсов. Для оптимальной производительности и лучшего взаимодействия с пользователем мы рекомендуем включить аппаратное ускорение вместо программного обеспечения для реализации вышеуказанных операций.

Чтобы включить аппаратное ускорение в пределах OpenThread следующие заголовочные файлы конфигурации mbedTLS должны быть добавлены в ot-config определений компиляции в CMake файлах платформы:

  • Основная конфигурация, которая определяет все необходимые макросы , используемые в OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Пользовательская конфигурация конкретного, которая определяет альтернативные реализации модулей и функций: src/ platform-name -mbedtls-config.h

Пример из nrf52811.cmake :

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

Комментируемые макросы в mbedtls-config.h не являются обязательными и могут быть включены в пользовательском конкретном файле заголовок конфигурации аппаратного ускорения.

Полный пример конфигурации для конкретного пользователя, см mbedtls_config_autogen.h файл в ot-efr32 .

Модуль AES

OpenThread Security применяет шифрование AES CCM (счетчик с CBC-MAC) для шифрования / дешифрования сообщений IEEE 802.15.4 или MLE и проверяет код интеграции сообщений. Аппаратное ускорение должно поддерживать как минимум базовый режим AES ECB (Электронная книга кодов) для базового функционального вызова AES CCM.

Чтобы использовать альтернативную реализацию модуля AES:

  1. Определение MBEDTLS_AES_ALT макроса в конфигурационном файле заголовка для конкретного пользователя mbedTLS
  2. Укажите путь aes_alt.h файла , используя MBEDTLS_CPPFLAGS переменного

Модуль SHA256

OpenThread Security применяет хэш-алгоритмы HMAC и SHA256 для вычисления хеш-значения для управления сетевым ключом и генерации PSKc в соответствии со Спецификацией потока.

Чтобы использовать альтернативную базовую реализацию модуля SHA256:

  1. Определение MBEDTLS_SHA256_ALT макроса в конфигурационном файле заголовка для конкретного пользователя mbedTLS
  2. Укажите путь sha256_alt.h файла , используя MBEDTLS_CPPFLAGS переменного

Функции ECC

Поскольку mbedTLS в настоящее время поддерживает только аппаратное ускорение для частей функций ECC, а не весь модуля, вы можете выбрать для реализации некоторых функций , определенных в path-to-mbedtls /library/ecp.c для ускорения ECC точки умножения.

Кривая secp256r1 используется в ключе обмена алгоритма ECJPAKE проекта. Следовательно, аппаратное ускорение должно как минимум поддерживать работу с короткой кривой Вейерштрасса secp256r1. См SiLabs CRYPTO аппаратное ускорение mbedTLS для примера.