הטמעה של תכונות מתקדמות

הצגת המקור ב-GitHub

חלק מהתכונות המתקדמות הן אופציונליות, תלוי אם הן נתמכות בפלטפורמת החומרה של היעד.

פריים אוטומטי בהמתנה

IEEE 802.15.4 מגדיר שני סוגים של שיטות העברת נתונים בין הורה לילדים: שידור ישיר ושידור עקיף. האפשרות האחרונה מיועדת בעיקר למכשירי קצה ישנוניים (SED) שישנים לעיתים קרובות, ומתעוררים מדי פעם כדי לערוך סקר בקרב ההורה לצורך עמידה בתור.

  • שידור ישיר — הורה שולח מסגרת נתונים ישירות למכשיר הסיום שידור ישיר

  • שידור עקיף - ההורה מחזיק נתונים עד שנדרשת על ידי מכשיר הקצה הרצוי שידור ישיר

במקרה עקיף, מכשיר קצה של ילדים חייב קודם לתשאל את ההורה כדי לקבוע אם יש נתונים זמינים עבורו. לשם כך, הילד או הילדה שולחים בקשת נתונים, שההורה מאשר. לאחר מכן, ההורה קובע אם יש במכשיר נתונים למכשיר של הילד; אם כן, הוא שולח חבילת נתונים למכשיר הצאצא שמאשר את קבלת הנתונים.

אם הרדיו תומך בהגדרה דינמית של הסיביות של 'פריים בהמתנה' באישורי זמני יציאה ל-SED, על הנהגים ליישם את ה-API של התאמת כתובת המקור כדי להפעיל יכולת זו. ב-OpenThread משתמשים ב-API הזה כדי לציין לרדיו באילו מהדורות SED להגדיר את ה-frame Pending.

אם הרדיו לא תומך בהגדרה דינמית של הביט פריים, ייתכן שהרדיו יכבה את ה-API של התאמת כתובת המקור כדי להחזיר OT_ERROR_NOT_IMPLEMENTED.

סריקת אנרגיה/זיהוי באמצעות רדיו

התכונה 'סריקה/זיהוי אנרגיה' מחייבת את שבב הרדיו כדי לדגום אנרגיה המוצגת בערוצים נבחרים ולהחזיר את ערך האנרגיה שזוהתה לשכבה העליונה.

אם תכונה זו לא מיושמת, שכבת ה-MAC IEEE 802.15.4 שולחת/לקבל חבילת Beacon Request/Response כדי להעריך את ערך האנרגיה הנוכחי בערוץ.

אם שבב הרדיו תומך ב'סריקה/זיהוי אנרגיה', יש להשבית את הלוגיקה של סריקת האנרגיה באמצעות תוכנה על ידי הגדרת המאקרו 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

OpenThread Security מחיל הצפנה מסוג AES CCM (Counter-CBC-MAC) כדי להצפין/לפענח הודעות IEEE 802.15.4 או MLE ומאמת את קוד ההטמעה של ההודעה. שיפור מהירות באמצעות חומרה צריך לתמוך לפחות במצב AES ECB בסיסי (Book BookBook AES) עבור הקריאה הפונקציונלית הבסיסית של AES CCM.

כדי להשתמש ביישום חלופי של מודול AES:

  1. יש להגדיר את מאקרו MBEDTLS_AES_ALT בקובץ כותרת התצורה mbedTLS הספציפי למשתמש
  2. יש לציין את הנתיב של קובץ ה-aes_alt.h באמצעות המשתנה MBEDTLS_CPPFLAGS

מודול SHA256

ב-OpenThread Security מחילים אלגוריתמים לגיבוב HMAC ו-SHA256 כדי לחשב את הערך של גיבוב (hash) לצורך ניהול מפתחות ברשת ויצירת PSKc בהתאם למפרט של Thread.

כדי להשתמש בהטמעה בסיסית של מודול 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. ראו Sellabs CRYPTO Hardware Acceleration for mbedTLS לדוגמה.