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

Terapkan Fitur Lanjutan

Lihat sumber di GitHub

Beberapa fitur lanjutan bersifat opsional, tergantung pada apakah fitur tersebut didukung atau tidak pada platform perangkat keras target.

Bingkai otomatis tertunda

IEEE 802.15.4 mendefinisikan dua jenis metode transmisi data antara orang tua dan anak: transmisi langsung dan transmisi tidak langsung. Yang terakhir ini dirancang terutama untuk perangkat akhir mengantuk (SEDs) yang tidur sebagian besar waktu, secara berkala bangun untuk polling orang tua untuk data antrian.

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

  • Tidak langsung Transmisi - induk menyimpan data sampai diminta oleh perangkat akhir yang dimaksudkan Transmisi Langsung

Dalam kasus Tidak Langsung, perangkat akhir anak harus terlebih dahulu melakukan polling pada induk untuk menentukan apakah ada data yang tersedia untuknya. Untuk melakukan ini, anak mengirimkan permintaan data, yang diakui oleh orang tua. Orang tua kemudian menentukan apakah memiliki data untuk perangkat anak; jika demikian, ia mengirimkan paket data ke perangkat anak, yang mengakui penerimaan data.

Jika dukungan radio secara dinamis menetapkan Bingkai Tertunda menggigit di ucapan terima kasih keluar untuk SEDs, driver harus menerapkan sumber pertandingan alamat API untuk mengaktifkan kemampuan ini. OpenThread menggunakan API ini untuk memberi tahu radio SED mana yang akan disetel bit Frame Pendingnya.

Jika radio tidak mendukung dinamis pengaturan Frame Tertunda menggigit, radio mungkin mematikan sumber pertandingan alamat API untuk kembali OT_ERROR_NOT_IMPLEMENTED .

Pemindaian/Deteksi Energi dengan radio

Fitur Pemindaian/Deteksi Energi memerlukan chip radio untuk mengambil sampel energi yang disajikan pada 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 Beacon Request/Response untuk mengevaluasi nilai energi saat ini pada saluran.

Jika dukungan chip radio Energi Scan / Detect, pastikan untuk menonaktifkan energi perangkat lunak pemindaian logika dengan menetapkan makro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Akselerasi perangkat keras untuk mbedTLS

mbedTLS mendefinisikan beberapa macro di file header konfigurasi utama, mbedtls-config.h , untuk memungkinkan pengguna untuk memungkinkan implementasi alternatif AES, SHA1, SHA2, dan modul lainnya, serta fungsi individu untuk kurva eliptik cryptography (ECC) GF (p) modul. Lihat akselerasi mbedTLS hardware untuk informasi lebih lanjut.

OpenThread tidak mengaktifkan makro tersebut, oleh karena itu algoritme kripto simetris, algoritme hash, dan fungsi ECC semuanya menggunakan implementasi perangkat lunak secara default. Implementasi ini membutuhkan memori dan sumber daya komputasi yang cukup besar. Untuk kinerja yang optimal dan pengalaman pengguna yang lebih baik, sebaiknya aktifkan akselerasi perangkat keras daripada perangkat lunak untuk mengimplementasikan operasi di atas.

Untuk mengaktifkan akselerasi hardware dalam OpenThread, setelah file header konfigurasi mbedTLS harus ditambahkan ke ot-config definisi kompilasi dalam file CMake platform:

  • Konfigurasi utama, yang mendefinisikan semua macro diperlukan digunakan di OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Konfigurasi pengguna tertentu, yang mendefinisikan implementasi 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\""
)

Macro berkomentar di mbedtls-config.h tidak wajib, dan dapat diaktifkan di user-spesifik file header konfigurasi untuk akselerasi hardware.

Untuk contoh lengkap konfigurasi pengguna tertentu, lihat mbedtls_config_autogen.h file dalam ot-efr32 .

modul AES

OpenThread Security menerapkan kripto AES CCM (Counter with CBC-MAC) untuk mengenkripsi/mendekripsi pesan IEEE 802.15.4 atau MLE dan memvalidasi kode integrasi pesan. Akselerasi perangkat keras setidaknya harus mendukung mode AES ECB (Buku Kode Elektronik) dasar untuk panggilan fungsional dasar AES CCM.

Untuk memanfaatkan implementasi modul AES alternatif:

  1. Tentukan MBEDTLS_AES_ALT makro di mbedTLS user-spesifik konfigurasi file header
  2. Menunjukkan jalur aes_alt.h file dengan menggunakan MBEDTLS_CPPFLAGS variabel

modul SHA256

OpenThread Security menerapkan algoritma hash HMAC dan SHA256 untuk menghitung nilai hash untuk manajemen kunci jaringan dan pembuatan PSKc sesuai dengan Spesifikasi Thread.

Untuk memanfaatkan implementasi modul SHA256 dasar alternatif:

  1. Tentukan MBEDTLS_SHA256_ALT makro di mbedTLS user-spesifik konfigurasi file header
  2. Menunjukkan jalur sha256_alt.h file dengan menggunakan MBEDTLS_CPPFLAGS variabel

Fungsi ECC

Sejak mbedTLS saat ini hanya mendukung akselerasi hardware untuk bagian-bagian dari fungsi ECC, daripada seluruh modul, Anda dapat memilih untuk menerapkan beberapa fungsi didefinisikan dalam path-to-mbedtls /library/ecp.c untuk mempercepat ECC titik perkalian.

Curve secp256r1 digunakan dalam algoritma pertukaran kunci dari ECJPAKE rancangan. Oleh karena itu, akselerasi perangkat keras setidaknya harus mendukung operasi kurva weierstrass pendek secp256r1. Lihat Silabs CRYPTO Hardware Acceleration untuk mbedTLS untuk contoh.