Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengimplementasikan Fitur Lanjutan

Lihat sumber di GitHub

Beberapa fitur lanjutan bersifat opsional, bergantung pada apakah fitur tersebut didukung pada platform hardware target atau tidak.

Frame otomatis tertunda

IEEE 802.15.4 mendefinisikan dua jenis metode transmisi data antara induk dan turunan: transmisi langsung dan transmisi tidak langsung. Yang disebut terakhir dirancang terutama untuk perangkat akhir yang mengantuk (SED) yang tidur hampir sepanjang waktu, secara berkala membangunkan untuk menyelidiki induk untuk antrean data.

  • Transmisi Langsung — orang tua mengirimkan frame data langsung ke perangkat akhir Transmisi Langsung

  • Transisi Tidak Langsung — induk menyimpan data hingga diminta oleh perangkat akhir yang diinginkan Transmisi Langsung

Dalam kasus Tidak Langsung, perangkat akhir turunan harus terlebih dahulu melakukan polling induk untuk menentukan apakah data tersedia untuknya atau tidak. Untuk melakukannya, turunan mengirim permintaan data, yang dikonfirmasi oleh induk. Induk kemudian menentukan apakah memiliki data untuk perangkat turunan; jika ya, paket data akan dikirim ke perangkat turunan, yang mengonfirmasi penerimaan data.

Jika radio mendukung penyetelan bit Bingkai Tertunda secara dinamis pada konfirmasi keluar ke SED, driver harus mengimplementasikan API alamat alamat sumber untuk mengaktifkan kemampuan ini. OpenThread menggunakan API ini untuk memberi tahu radio SED mana yang disetel untuk menyetel bit Pending Frame.

Jika radio tidak mendukung setelan bit Tertunda Frame secara dinamis, radio mungkin akan menghentikan 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 pada saluran yang dipilih dan mengembalikan nilai energi yang terdeteksi ke lapisan atas.

Jika fitur ini tidak diterapkan, lapisan MAC IEEE 802.15.4 akan mengirim/menerima paket Beacon/Response Beacon untuk mengevaluasi nilai energi saat ini pada saluran.

Jika chip radio mendukung Pemindaian/Deteksi Energi, pastikan Anda menonaktifkan logika pemindaian energi software dengan menetapkan makro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

Akselerasi hardware untuk mbedTLS

mbedTLS menentukan beberapa makro dalam file header konfigurasi utama, mbedtls-config.h, untuk memungkinkan pengguna mengaktifkan implementasi alternatif AES, SHA1, SHA2, dan modul lainnya, serta fungsi individual untuk modul kurva eliptik (ECC) melalui modul GF(p). Lihat akselerasi hardware mbedTLS untuk informasi selengkapnya.

OpenThread tidak mengaktifkan makro tersebut, sehingga algoritme kriptografi simetris, algoritme hash, dan fungsi ECC semuanya menggunakan implementasi software secara default. Implementasi ini memerlukan memori dan resource komputasi yang cukup besar. 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 di file CMake platform:

  • Konfigurasi utama, yang menentukan semua makro penting yang digunakan di OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Konfigurasi khusus pengguna, yang menentukan 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 header konfigurasi khusus pengguna untuk akselerasi hardware.

Untuk contoh konfigurasi khusus pengguna lengkap, lihat file mbedtls_config_autogen.h di ot-efr32.

Modul AES

OpenThread Security menerapkan kriptografi AES CCM (Penghitung dengan CBC-MAC) untuk mengenkripsi/mendekripsi pesan IEEE 802.15.4 atau MLE dan memvalidasi kode integrasi pesan. Akselerasi hardware setidaknya harus mendukung mode AESB (Electronic Codebook Book) AES dasar untuk panggilan fungsional dasar AES CCM.

Untuk memanfaatkan implementasi modul AES alternatif:

  1. Menentukan makro MBEDTLS_AES_ALT dalam file header konfigurasi mbedTLS khusus pengguna
  2. Tunjukkan jalur file aes_alt.h menggunakan variabel MBEDTLS_CPPFLAGS

Modul SHA256

Keamanan OpenThread menerapkan algoritme hash HMAC dan SHA256 untuk menghitung nilai hash untuk pengelolaan kunci jaringan dan pembuatan PSKc menurut Spesifikasi Thread.

Untuk memanfaatkan implementasi modul SHA256 dasar alternatif:

  1. Menentukan makro MBEDTLS_SHA256_ALT dalam file header konfigurasi mbedTLS khusus pengguna
  2. Tunjukkan jalur file sha256_alt.h menggunakan variabel MBEDTLS_CPPFLAGS

Fungsi ECC

Karena mbedTLS saat ini hanya mendukung akselerasi hardware untuk bagian fungsi ECC, bukan seluruh modul, Anda dapat memilih untuk mengimplementasikan beberapa fungsi yang ditentukan dalam path-to-mbedtls/library/ecp.c untuk mempercepat perkalian titik ECC.

Curve secp256r1 digunakan dalam algoritme pertukaran kunci draf ECJPAKE. Oleh karena itu, akselerasi hardware setidaknya harus mendukung operasi kurva weierstrass pendek secp256r1. Lihat SiLabs CRYPTO Hardware Acceleration untuk mbedTLS sebagai contoh.