זיהוי ג'אם

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

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

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

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

איך זה עובד

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

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

  1. מצב זיהוי ה-Jam מוגדר ל-false.
  2. הצומת דגום את ה-RSSI מספר פעמים בכל מרווח של שנייה.
  3. אם ה-RSSI במשך כל השניות האלה נשאר מעל סף ה-RSSI המוגדר עבור כל דגימה, המרווח הזה של שנייה אחת נחשב תקוע.
  4. אם מספר מצטבר של מרווחים בשנייה אחת הוא יותר או שווה למספר המצטבר של שניות תקופת העומס שהוגדרו בשניות של חלון הזיהוי המוגדר קודם לכן, מצב זיהוי הפקקים מוגדר בנקודת הזמן הזו כ-true.
  5. אם מספר מצטבר של מרווחים של שנייה אחת קטן מהמספר המצטבר של שניות באזור העמוס שהגדרתם, בכל אחת מנקודות זמן החלון לזיהוי שהוגדרו קודם לכן, מצב זיהוי הפקקים מוגדר בשלב זה ל-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 חייב להיות מעל סף ה-RSS כדי להפעיל זיהוי Jam. חייב להיות קטן יותר מחלון הזיהוי. טווח: 1-63.

API

OpenThread

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

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

ספינל

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

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

CLI

OpenThread

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

Wpantund

באמצעות ה-CLI של wpanctl, אפשר לנהל את התכונה 'זיהוי Jam' לצורך הגדרה של NCP של OpenThread. 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 כ-45dBm ב-NCP:

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

למידע נוסף על נכסי wpantund, אפשר לעיין במאגר GitHub wpantund.