Mengimplementasikan Fitur Lanjutan

Lihat sumber di GitHub

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 Langsung

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

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:

  1. Menentukan makro MBEDTLS_AES_ALT di file header konfigurasi mbedTLS khusus pengguna
  2. Tunjukkan jalur file aes_alt.h menggunakan variabel MBEDTLS_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:

  1. Menentukan makro MBEDTLS_SHA256_ALT di 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 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.