Mengimplementasikan Fitur Lanjutan

Lihat sumber di GitHub

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 Langsung

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

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:

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

  1. Tentukan makro MBEDTLS_SHA256_ALT di mbedTLS khusus pengguna file header konfigurasi
  2. Tunjukkan jalur file sha256_alt.h menggunakan MBEDTLS_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.