Beberapa fitur lanjutan bersifat opsional, bergantung pada apakah fitur tersebut didukung di platform hardware target atau tidak.
Bingkai otomatis tertunda
IEEE 802.15.4 mendefinisikan dua jenis metode transmisi data antara induk dan turunan: transmisi langsung dan transmisi tidak langsung. Yang kedua dirancang terutama untuk perangkat akhir yang mengantuk (SED) yang sebagian besar tidur, secara berkala bangun untuk memeriksa data induk dalam antrean.
Transmisi Langsung — induk mengirimkan frame data langsung ke perangkat akhir
Transmisi Tidak Langsung — induk menyimpan data hingga diminta oleh perangkat akhir yang diinginkan
Dalam kasus Tidak Langsung, perangkat akhir turunan harus terlebih dahulu memeriksa induk untuk menentukan apakah ada data yang tersedia untuknya. Untuk melakukannya, turunan mengirimkan permintaan data, yang dikonfirmasi oleh induk. Induk kemudian menentukan apakah memiliki data untuk perangkat turunan; jika demikian, induk akan mengirimkan paket data ke perangkat turunan, yang mengonfirmasi penerimaan data.
Jika radio mendukung secara dinamis bit Bit Tertunda Bingkai dalam konfirmasi keluar ke SED, driver harus menerapkan pencocokan alamat sumber API untuk mengaktifkan kemampuan ini. OpenThread menggunakan API ini untuk memberi tahu radio SED mana yang harus ditetapkan sebagai bit Menunggu Frame.
Jika radio tidak mendukung bit bit Tertunda Penetapan secara dinamis, radio
mungkin akan menonaktifkan API pencocokan alamat sumber untuk menampilkan
OT_ERROR_NOT_IMPLEMENTED
.
Pemindaian/Deteksi Energi dengan radio
Fitur Pemindaian/Deteksi Energi memerlukan chip radio untuk mengambil sampel energi yang ada di saluran yang dipilih dan menampilkan nilai energi yang terdeteksi ke lapisan atas.
Jika fitur ini tidak diterapkan, lapisan MAC IEEE 802.15.4 akan mengirim/menerima paket Beacon/Respons Beacon untuk mengevaluasi nilai energi saat ini pada saluran.
Jika chip radio mendukung Energy Scan/Detect, pastikan untuk menonaktifkan logika
pemindaian energi software dengan menetapkan
makro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0
.
Akselerasi hardware untuk mbedTLS
mbedTLS menentukan beberapa makro di file header konfigurasi utama,
mbedtls-config.h
,
untuk memungkinkan pengguna mengaktifkan penerapan alternatif AES, SHA1, SHA2, dan
modul lainnya, serta fungsi individual untuk kriptografi kriptografi
Eliptic curve (ECC) melalui modul GF(p). Lihat
akselerasi hardware mbedTLS
untuk informasi selengkapnya.
OpenThread tidak mengaktifkan makro tersebut, sehingga algoritme kripto simetris, algoritme hash, dan fungsi ECC semuanya menggunakan implementasi software secara default. Implementasi ini memerlukan memori yang cukup besar dan resource komputasi. Untuk performa yang optimal dan pengalaman pengguna yang lebih baik, sebaiknya aktifkan akselerasi hardware, bukan software, untuk mengimplementasikan operasi di atas.
Untuk mengaktifkan akselerasi hardware dalam OpenThread, file header konfigurasi mbedTLS
berikut harus ditambahkan ke definisi kompilasi ot-config
dalam file CMake platform:
- Konfigurasi utama, yang menentukan semua makro yang diperlukan di OpenThread:
/openthread/third-party/mbedtls/mbedtls-config.h
- Konfigurasi khusus pengguna, yang menentukan penerapan alternatif
modul dan fungsi:
src/platform-name-mbedtls-config.h
Contoh dari nrf52811.cmake
:
target_compile_definitions(ot-config INTERFACE "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\"" )
Makro yang dikomentari di mbedtls-config.h
tidak bersifat wajib, dan dapat diaktifkan
di file header konfigurasi khusus pengguna untuk akselerasi hardware.
Untuk contoh konfigurasi khusus pengguna yang lengkap, lihat file
mbedtls_config_autogen.h
di ot-efr32
.
Modul AES
OpenThread Security menerapkan kripto AES CCM (Counter dengan CBC-MAC) untuk mengenkripsi/mendekripsi pesan IEEE 802.15.4 atau MLE dan memvalidasi kode integrasi pesan. Akselerasi hardware setidaknya harus mendukung mode AES ECB (Buku Kode Elektronik) dasar untuk panggilan fungsional dasar AES CCM.
Untuk memanfaatkan implementasi modul AES alternatif:
- Menentukan makro
MBEDTLS_AES_ALT
di file header konfigurasi mbedTLS khusus pengguna - Tunjukkan jalur file
aes_alt.h
menggunakan variabelMBEDTLS_CPPFLAGS
Modul SHA256
OpenThread Security menerapkan algoritme hash HMAC dan SHA256 untuk menghitung nilai hash untuk pengelolaan kunci jaringan dan pembuatan PSKc sesuai dengan Spesifikasi Thread.
Untuk memanfaatkan implementasi modul SHA256 dasar alternatif:
- Menentukan makro
MBEDTLS_SHA256_ALT
di file header konfigurasi mbedTLS khusus pengguna - Tunjukkan jalur file
sha256_alt.h
menggunakan variabelMBEDTLS_CPPFLAGS
Fungsi ECC
Karena mbedTLS saat ini hanya mendukung akselerasi hardware untuk bagian dari fungsi
ECC, bukan seluruh modul, Anda dapat memilih untuk menerapkan beberapa
fungsi yang ditentukan dalam
path-to-mbedtls/library/ecp.c
untuk mempercepat perkalian titik ECC.
Curve secp256r1 digunakan dalam algoritme pertukaran kunci dari draf ECJPAKE. Oleh karena itu, akselerasi hardware setidaknya harus mendukung operasi kurva weierstrass singkat secp256r1. Lihat Akselerasi Hardware CRYPTO SiSLabs untuk mbedTLS sebagai contoh.