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

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

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

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

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

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

  • النقل غير المباشر: يخزّن التطبيق الرئيسي البيانات إلى أن يطلبها الجهاز النهائي المطلوب. ناقل الحركة المباشر

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

إذا كان الراديو يدعم الإعداد "إطار في انتظار المراجعة" ديناميكيًا في استدعاءات البريد الصادر في SED، يجب أن ينفذ السائقون واجهة برمجة تطبيقات مطابقة عنوان المصدر لتمكين هذه الإمكانية. وتستخدِم أداة OpenString واجهة برمجة التطبيقات هذه لطلب إشارة SED لإعداد إطار عمل "في انتظار المراجعة" لها.

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

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

تتطلّب ميزة "مسح ضوئي/رصد الطاقة" شريحة الراديو لعيّنة الطاقة التي تقدّم على قنوات محدّدة وإعادة قيمة الطاقة المكتشَفة إلى الطبقة العليا.

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

إذا كانت شريحة الراديو تدعم Energy Scan/Detect، احرص على إيقاف منطق فحص الطاقة للبرامج من خلال ضبط الماكرو OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

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

يُعرِّف mbedTLS العديد من وحدات الماكرو في ملف عنوان الإعداد الرئيسي، 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

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

لاستخدام طريقة بديلة لوحدة AES، يُرجى اتّباع الخطوات التالية:

  1. تحديد وحدة ماكرو MBEDTLS_AES_ALT في ملف رأس إعداد mbedTLS الخاص بالمستخدم
  2. حدِّد مسار ملف aes_alt.h باستخدام المتغيّر MBEDTLS_CPPFLAGS.

وحدة SHA256

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

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

  1. تحديد وحدة ماكرو MBEDTLS_SHA256_ALT في ملف رأس إعداد mbedTLS الخاص بالمستخدم
  2. حدِّد مسار ملف sha256_alt.h باستخدام المتغيّر MBEDTLS_CPPFLAGS.

وظائف ECC

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

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