זיהוי Jam

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

כדי לאפשר הגדרה של מנגנון לזיהוי חסימות אותות בכל צומת ב-OpenThread, יש להפעיל את התכונה 'זיהוי Jam'.

התכונה הזו שימושית לאישורי מכשיר שמחייבים יכולת לזהות חסימות של אותות בערוץ מסוים. אפשר להגדיר אותה כך שתעמוד בדרישות של כל סוג הסמכה.

איך זה עובד

זיהוי Jam עוקב אחר ה-RSSI (מחוון קבלת חוזק האות) של צומת במהלך חלונות זמן שצוינו כדי לקבוע אם הערוץ נתקע.

כשזיהוי Jam מופעל:

  1. ההגדרה של זיהוי ה-Jam מוגדרת לfalse.
  2. הצומת דוגם את ה-RSSI מספר פעמים בכל פרק זמן של שנייה אחת.
  3. אם ה-RSSI מעל כל המרווח השני הזה נותר מעל הסף ה-RSSI שהוגדר עבור כל דגימה, המרווח השני הוא כזה שנתקע.
  4. אם מספר מצטבר של מרווחים בשנייה אחת נתקע יותר או שווה למספר המצטבר של התקופה העמוסה המוגדרת בפרק הזמן שצוין, בחלון הזיהוי, בכל נקודת זמן, מצב זיהוי ה-Jam בנקודת הזמן הזאת מוגדר ל-true.
  5. אם מספר מצטבר של מרווחים בשנייה אחת נתקעפחות מ- המספר המצטבר של ההגדרותתקופה לא פנויה שניות בתוך ההגדרה הקודמתחלון זיהוי שניות בכל נקודת זמן, מצב זיהוי ה-Jam בנקודת הזמן הזוfalse הנתונים.

מפת סיביות של היסטוריה

ב-OpenThread API וב-wpantund נכסים, ניתן לאחזר מפת סיביות של 63 השניות הקודמות. מפת סיביות זו מציינת אם ערך ה-RSSI עבר את סף ה-RSSI שהוגדר בכל אחת מ-63 השניות הקודמות.

לדוגמה, ייתכן שתאחזר את מפת הסיביות הבאה:

0xC248068C416E7FF0

בהמרה לבינאריות, נוצר כל מופע של ה-RSSI שהוא עלה על סף ה-RSSI שהוגדר במהלך 63 השניות הקודמות:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

אם חלון הזיהוי מוגדר ל-16 שניות, ותקופת העומס מוגדרת ל-8 שניות, מצב זיהוי ה-Jam הופך ל-true ב-51 שניות, וזהו המופע הראשון שבו סף ה-RSSI היה חרגו מ-8 שניות שלמות לפחות ב-16 השניות הקודמות. בדוגמה הזו, מצב הזיהוי של ה-Jam נשאר true למשך 13 השניות הבאות.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

מפת סיביות זו עשויה להופיע באמצעות התרשים הבא, אם -45 dBm היה סף ה-RSSI שהוגדר:

זיהוי OT של Jam

איך מפעילים

התכונה הזו מושבתת כברירת מחדל.

לפי הגדרה

כדי להפעיל את זיהוי ה-Jam, יש להגדיר את הקובץ OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE כ1 בקובץ openthread/src/core/config/openthread-core-default-config.h לפני יצירת OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

לפי אפשרות

לחלופין, אפשר להשתמש באפשרות ה-build של -DOT_JAM_DETECTION=ON כשבונים OpenThread:

./script/build -DOT_JAM_DETECTION=ON

פרמטרים

את הפרמטרים לזיהוי Jam אפשר להגדיר רק דרך ה-API של OpenThread, דרך הפרוטוקולSpinel או wpanctl, באמצעות כלי שורת הפקודה wpantund עבור ניהול רשת במעבד משותף (NCP). ערכי ברירת המחדל מופעלים אם התכונה מופעלת ללא תצורה נוספת.

ניתן להתאים אישית את התכונה באמצעות הפרמטרים הבאים:

פרמטרים
סף RSSI
ערך ברירת המחדל
0 dBm
תיאור
ציון של רמת ה-RSSI של הסף ב-dBm שמעליו צריך להתייחס לערוץ שעבר עצירה.
חלון זיהוי
ערך ברירת המחדל
63 שניות
תיאור
מציינת את החלון בשניות שבו יש לבדוק אם יש שיבושים באות. טווח: 1-63.
תקופת העומס
ערך ברירת המחדל
63 שניות
תיאור
קביעת מספר השניות המצטברות בחלון הזיהוי שבו ה-RSSI חייב להיות גבוה מסף ה-RSSI כדי להפעיל זיהוי Jam. חייב להיות קטן יותר מחלון זיהוי. טווח: 1-63.

API

OpenThread

באמצעות API לזיהוי Jam אפשר לנהל את התכונה 'זיהוי Jam' ישירות באפליקציית OpenThread. ה-API של OpenThread מספק את הפונקציונליות הבאה:

  • הפעלה והפסקה של התכונה
  • צפייה במצב הזיהוי של ה-Jam
  • ניהול כל הפרמטרים
  • אחזור מפת הסיביות הנוכחית של זיהוי זיהוי Jam
  • רישום של פונקציית קריאה חוזרת כדי לזהות מסמך Jam

ספינל

פרוטוקול Spinel מאפשר למכשיר מארח לתקשר ישירות עם NCP. הפרוטוקול הזה חושף מאפיינים של זיהוי Jam ב- openthread/src/lib/spinel/spinel.h שמספקים את הפונקציונליות הבאה:

  • הפעלה והפסקה של התכונה
  • צפייה במצב הזיהוי של ה-Jam
  • ניהול כל הפרמטרים
  • אחזור מפת הסיביות הנוכחית של זיהוי זיהוי Jam

CLI

OpenThread

אין פקודות OpenThread CLI שקשורות לתכונה זו.

Wpantund

יש להשתמש ב-wpanctl CLI כדי לנהל את התכונה 'זיהוי Jam' לתצורת OpenThread NCP. wpantund שומרת את כל ההגדרות של זיהוי Jam בעת האיפוס של NCP.

ל-wpanctl יש גישה ל-wpantund הנכסים הבאים:

מאפיינים
JamDetection:Status
אופן הלימוד
boolean
תיאור
קריאה בלבד. מצב זיהוי של Jam. מציין אם זוהה פקק אות.
JamDetection:Enable
אופן הלימוד
boolean
תיאור
הפעלה או השבתה של התכונה 'זיהוי Jam'.
JamDetection:RssiThreshold
אופן הלימוד
dBm
תיאור
מציין את רמת ה-RSSI של הסף ב-dBm שמעליה יש להתייחס לערוץ החסום.
JamDetection:Window
אופן הלימוד
שניות
תיאור
מציינת את החלון בשניות שבו יש לבדוק אם יש שיבושים באות. טווח: 1-63.
JamDetection:BusyPeriod
אופן הלימוד
שניות
תיאור
המדיניות הזו מציינת את מספר השניות המצטברות בתוך JamDetection:Window שבהן ה-RSSI חייב להיות גבוה מ-JamDetection:RssiThreshold כדי להפעיל זיהוי Jam. יש להזין ערך קטן מ-JamDetection:Window. טווח: 1-63.
JamDetection:Debug:HistoryBitmap
אופן הלימוד
ערך 64 סיביות
תיאור
ההגדרה מספקת מידע על ההיסטוריה של מצב זיהוי Jam לצורכי מעקב וניפוי באגים.

לדוגמה, כדי לקבל את מצב זיהוי Jam עבור NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

כדי להגדיר את סף ה-RSSI של זיהוי Jam ל- -45 dBm ב-NCP:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

ניתן לקבל מידע נוסף עלwpantund מאפיינים, עיינו במאפייניםwpantund מאגר GitHub הנתונים.