تنفيذ الميزات المتقدّمة

عرض المصدر على GitHub

بعض الميزات المتقدمة اختيارية، وذلك اعتمادًا على ما إذا كانت متوافقة مع النظام الأساسي للأجهزة المستهدفة أم لا.

الإطار التلقائي في انتظار المراجعة

يعرّف IEEE 802.15.4 نوعين من طرق نقل البيانات بين الفرع والطفل: النقل المباشر والنقل غير المباشر. وتم تصميم هذا الجهاز في المقام الأول للأجهزة التي لا تستطيع النوم إلا بعد انتهاء فترات الانتظار، ويستيقظ هذا المستخدم دوريًا لإجراء استطلاع لأولياء الأمور عن البيانات الموضوعة في قائمة الانتظار.

  • النقل المباشر — يرسل أحد الوالدين إطار البيانات مباشرةً إلى الجهاز النهائي ناقل الحركة المباشر

  • النقل غير المباشر — يحتفظ أحد الوالدين بالبيانات حتى يطلبها الجهاز النهائي المقصود ناقل الحركة المباشر

في الحالة غير المباشرة، يجب أولاً إجراء استطلاع رأي على جهاز الطفل الثانوي لتحديد ما إذا كانت هناك أي بيانات متاحة له. ولتنفيذ ذلك، يرسل الطفل طلبًا للبيانات، ويقرّه الوالد. ويحدد الجهاز الرئيسي بعد ذلك ما إذا كان يحتوي على أي بيانات للجهاز الفرعي، وإذا كان الأمر كذلك، فإنه يرسل حزمة بيانات إلى الجهاز الفرعي، الذي يقر بتلقي البيانات.

إذا كان الراديو يوفّر إمكانية ضبط وحدة بت في انتظار الإطار ديناميكيًا في الإقرارات الصادرة على وحدات SED، يجب أن تنفذ برامج التشغيل واجهة برمجة التطبيقات لمطابقة عنوان المصدر لتفعيل هذه الإمكانية. يستخدم OpenThread واجهة برمجة التطبيقات هذه لإعلام الراديو بوحدات SED التي تريد تعيين وحدة بت الإطار المعلّقة لها.

إذا كان الراديو لا يتيح ضبط وحدة بت إطارية ديناميكيًا، قد يلجأ جهاز الراديو إلى مطابقة واجهة برمجة تطبيقات مطابقة عنوان المصدر لعرض OT_ERROR_NOT_IMPLEMENTED.

البحث عن الطاقة/رصدها باستخدام الراديو

تتطلّب ميزة "البحث عن الطاقة/رصدها" استخدام شريحة الراديو لأخذ عينات من الطاقة التي تقدِّمها القنوات المختارة وإعادة قيمة الطاقة التي تم رصدها إلى الطبقة العليا.

وإذا لم يتم تطبيق هذه الميزة، ستعمل طبقة MAC 802.15.4 MAC على إرسال/تلقّي حزمة طلب/استجابة جهاز المرشد لتقييم القيمة الحالية للطاقة في القناة.

في حال كانت شريحة الراديو تسمح بمسح/مسح بيانات الطاقة، تأكّد من إيقاف منطق فحص الطاقة في البرنامج عن طريق ضبط الماكرو OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

تسريع الأجهزة لـ mbedTLS

يحدّد بروتوكول TLSedTLS عدة وحدات ماكرو في ملف عنوان الضبط الرئيسي، mbedtls-config.h، للسماح للمستخدمين بتفعيل تطبيقات بديلة لكل من AES وSHA1 وSHA2 والوحدات الأخرى، بالإضافة إلى دوال فردية لوحدة التشفير المنحنى البيضاوي (ECC) عبر وحدة GF(p) . راجع تسريع الأجهزة mbedTLS لمزيد من المعلومات.

لا يؤدي OpenThread إلى تمكين وحدات الماكرو هذه، وبالتالي فإن خوارزميات التشفير المتماثلة، وخوارزميات التجزئة، ووظائف ECC تستخدم جميعًا عمليات تنفيذ البرامج بشكل افتراضي. وتتطلب عمليات التنفيذ هذه مساحة كبيرة من الذاكرة والموارد الحاسوبية. لتحقيق الأداء الأمثل وتقديم تجربة أفضل للمستخدم، ننصحك بتفعيل تسريع الأجهزة بدلاً من البرامج لتنفيذ العمليات المذكورة أعلاه.

لتفعيل ميزة تسريع الأجهزة في OpenThread، يجب إضافة ملفات رأس mbedTLS الضبطية التالية إلى تعريفات تجميع ot-config في ملفات CMake للمنصّة:

  • الإعداد الرئيسي الذي يحدِّد جميع وحدات الماكرو اللازمة المستخدمة في OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • الإعداد الخاص بالمستخدم، الذي يحدد عمليات التنفيذ البديلة للوحدات والوظائف: src/platform-name-mbedtls-config.h

مثال من nrf52811.cmake:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

وحدات الماكرو المُعلّقة في mbedtls-config.h ليست إلزامية، ويمكن تفعيلها في ملف عنوان الضبط الخاص بالمستخدم لتسريع الجهاز.

للاطّلاع على مثال كامل للإعدادات الخاصة بالمستخدم، يُرجى الاطّلاع على ملف mbedtls_config_autogen.h في ot-efr32.

وحدة AES

يطبّق برنامج OpenThread Security تشفير AES CCM (عدّاد مع CBC-MAC) لتشفير/فك تشفير رسائل IEEE 802.15.4 أو MLE ويتحقق من صحة رمز دمج الرسائل. يجب أن يتوافق تسريع الأجهزة على وضع AES ECB الأساسي (كتاب إلكتروني لـ ECB) على الأقل لاستدعاء الوظائف الأساسية في AES CCM.

لاستخدام تنفيذ وحدة AES بديلة:

  1. حدِّد ماكرو MBEDTLS_AES_ALT في ملف رأس ضبط mbedTLS المحدَّد للمستخدم.
  2. أشِر إلى مسار ملف aes_alt.h باستخدام المتغيّر MBEDTLS_CPPFLAGS.

وحدة SHA256

يطبّق برنامج OpenThread Security خوارزميات التجزئة HMAC وSHA256 لاحتساب قيمة التجزئة لإدارة مفاتيح الشبكة وإنشاء PSKc وفقًا لمواصفات سلسلة المحادثات.

لاستخدام تنفيذ وحدة SHA256 أساسية بديلة:

  1. حدِّد ماكرو MBEDTLS_SHA256_ALT في ملف رأس ضبط mbedTLS المحدَّد للمستخدم.
  2. أشِر إلى مسار ملف sha256_alt.h باستخدام المتغيّر MBEDTLS_CPPFLAGS.

دوال ECC

نظرًا لأن بروتوكول ededed لا يتيح حاليًا تسريع الأجهزة إلا لأجزاء من وظائف ECC، بدلاً من الوحدة بأكملها، يمكنك اختيار تنفيذ بعض الدوال المحددة في path-to-mbedtls/library/ecp.c لتسريع مضاعفة نقاط ECC.

يتم استخدام منحنى secp256r1 في خوارزمية التبادل الرئيسية لمسودة ECJPAKE. ومن ثم، يجب أن يدعم تسريع الأجهزة عملية منحنى secp256r1 القصير على الأقل. للحصول على مثال، راجع SiLabs CRYPTO Hardware Acceleration for mbedTLS.