Beberapa fitur lanjutan bersifat opsional, bergantung pada apakah fitur tersebut dan didukung pada platform hardware target.
Framing otomatis tertunda
IEEE 802.15.4 mendefinisikan dua jenis metode transmisi data antara induk dan anak: transmisi langsung dan transmisi tidak langsung. Yang terakhir dirancang terutama untuk perangkat akhir yang mengantuk (SED) yang hampir selalu tidur, bangun secara berkala untuk meminta data dalam antrean kepada induk.
Transmisi Langsung — induk mengirimkan frame data langsung ke perangkat akhir
Transmisi Tidak Langsung — induk menyimpan data hingga diminta oleh perangkat akhir yang dituju
Dalam kasus Tidak langsung, perangkat akhir turunan harus terlebih dahulu melakukan polling pada induk untuk menentukan apakah ada data yang tersedia. Untuk melakukan ini, anak mengirim data yang dikonfirmasi oleh induk. Induk lalu menentukan apakah memiliki data untuk perangkat anak; jika demikian, ia mengirim paket data ke turunan perangkat, yang akan mengakui penerimaan data.
Jika radio mendukung setelan dinamis bit Frame Pending dalam proses keluar konfirmasi untuk SED, pengemudi harus menerapkan pencocokan alamat sumber untuk mengaktifkan kemampuan ini. OpenThread menggunakan API ini untuk memberi tahu radio tentang SED untuk menyetel bit Frame Pending.
Jika radio tidak mendukung pengaturan
bit Frame Pendinginan secara dinamis,
radio mungkin 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 melakukan presentasi di saluran yang dipilih dan mengembalikan nilai energi yang terdeteksi ke lapisan atas.
Jika fitur ini tidak diimplementasikan, lapisan MAC IEEE 802.15.4 mengirim/menerima paket Permintaan/Respons Beacon untuk mengevaluasi nilai energi pada saluran.
Jika chip radio mendukung Pemindaian/Deteksi Energi, pastikan untuk menonaktifkan software
logika pemindaian energi dengan menetapkan
OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0
.
Akselerasi hardware untuk mbedTLS
mbedTLS menentukan beberapa makro
dalam file {i>header<i} konfigurasi utama,
mbedtls-config.h
,
untuk memungkinkan pengguna mengaktifkan implementasi
alternatif dari AES, SHA1, SHA2, dan
modul lain, serta fungsi individu untuk kurva elips
kriptografi (ECC) melalui modul GF(p). Lihat
akselerasi hardware mbedTLS
untuk informasi selengkapnya.
OpenThread tidak mengaktifkan makro tersebut, oleh karena itu kripto simetris algoritma, algoritma {i>hash <i}dan fungsi ECC, semuanya memanfaatkan perangkat lunak secara default. Implementasi ini membutuhkan memori yang cukup besar dan sumber daya komputasi. Untuk performa yang optimal dan pengguna yang lebih baik pengalaman yang baik, sebaiknya Anda mengaktifkan akselerasi perangkat keras daripada perangkat lunak untuk mengimplementasikan operasi di atas.
Untuk mengaktifkan akselerasi hardware dalam OpenThread, mbedTLS berikut
file header konfigurasi harus ditambahkan ke kompilasi ot-config
dalam file CMake platform:
- Konfigurasi utama, yang menentukan semua makro yang diperlukan dan digunakan dalam OpenThread:
/openthread/third-party/mbedtls/mbedtls-config.h
- Konfigurasi khusus pengguna, yang mendefinisikan implementasi alternatif dari
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 wajib, dan dapat diaktifkan di
file {i>header <i}konfigurasi khusus pengguna untuk akselerasi perangkat keras.
Untuk contoh lengkap konfigurasi khusus pengguna, lihat
mbedtls_config_autogen.h
file di ot-efr32
.
Modul AES
OpenThread Security menerapkan kriptografi AES CCM (Counter with CBC-MAC) ke Mengenkripsi/mendekripsi pesan IEEE 802.15.4 atau MLE dan memvalidasi pesan tersebut kode integrasi. Akselerasi perangkat keras setidaknya harus mendukung AES ECB dasar Mode (Electronic Codebook Book) untuk panggilan fungsional dasar AES CCM.
Untuk memanfaatkan implementasi modul AES alternatif:
- Tentukan makro
MBEDTLS_AES_ALT
di mbedTLS khusus pengguna file header konfigurasi - Tunjukkan jalur file
aes_alt.h
menggunakanMBEDTLS_CPPFLAGS
variabel
Modul SHA256
OpenThread Security menerapkan algoritma {i>hash<i} HMAC dan SHA256 untuk menghitung nilai hash untuk pengelolaan kunci jaringan dan pembuatan PSKc sesuai dengan Thread Spesifikasi.
Untuk memanfaatkan implementasi modul SHA256 dasar alternatif:
- Tentukan makro
MBEDTLS_SHA256_ALT
di mbedTLS khusus pengguna file header konfigurasi - Tunjukkan jalur file
sha256_alt.h
menggunakanMBEDTLS_CPPFLAGS
variabel
Fungsi ECC
Karena mbedTLS saat ini hanya mendukung akselerasi hardware untuk sebagian ECC
fungsi, bukan seluruh modul, Anda dapat memilih untuk mengimplementasikan beberapa
fungsi yang didefinisikan dalam
path-to-mbedtls/library/ecp.c
untuk mempercepat ECC
perkalian titik.
Kurva secp256r1 digunakan dalam algoritma pertukaran kunci dari ECJPAKE. Oleh karena itu, akselerasi perangkat keras setidaknya harus mendukung weierstrass pendek secp256r1 operasi kurva. Lihat Akselerasi Hardware CRYPTO SiLabs untuk mbedTLS sebagai contoh.