כדי לספק מנגנון שניתן להגדרה לזיהוי אות חסימה בכל צומת OpenThread, מפעילים את התכונה 'זיהוי חסימה'.
התכונה הזו שימושית לאישורי מכשיר שמחייבים את היכולת לזהות שיבוש של אותות בערוץ ספציפי. אפשר להגדיר אותו כך שיתאים לדרישות של כל סוג הסמכה.
איך זה עובד
התכונה 'זיהוי Jam' עוקבת אחר ה-RSSI (האינדיקטור של עוצמת האות שהתקבל) של צומת במהלך חלונות זמן ספציפיים, כדי לקבוע אם הערוץ נתקע.
כשמפעילים את התכונה 'זיהוי של Jam':
- מצב זיהוי החסימה מוגדר ל-
false
. - הצומת דגום את ה-RSSI מספר פעמים בכל מרווח זמן של שנייה.
- אם ערך ה-RSSI במהלך כל מרווח הזמן של השנייה הזו נשאר מעל סף ה-RSSI שהוגדר לכל דגימה, מרווח הזמן של השנייה הזו נחשב כמטושטש.
- אם המספר המצטבר של מרווחים של שנייה אחת עם רעשי סטטי גדול מ- או שווה ל- המספר המצטבר של השניות שהוגדרו לתקופת הפעילות בתוך השניות שהוגדרו לחלון הזיהוי שלפני כן, בכל נקודת זמן, מצב זיהוי הרעשים נקבע ל-
true
. - אם המספר המצטבר של מרווחים של שנייה אחת עם רעשי חבלה קטן ממספר השניות המצטבר של תקופת הפעילות שהוגדרה בתוך השניות של חלון הזיהוי שהוגדר קודם לכן בכל שלב נתון, מצב זיהוי החסימה בשלב הזה מוגדר ל-
false
.
מפת סיביות של היסטוריה
ב-OpenThread API ובמאפיינים של wpantund
, אפשר לאחזר מפת סיביות של 63 השניות הקודמות. המיפוי הבינארי הזה מציין אם ערך ה-RSSI חצה את ערך הסף של ה-RSSI שהוגדר בכל אחת מ-63 השניות הקודמות.
לדוגמה, אפשר לאחזר את קובץ ה-bitmap הבא:
0xC248068C416E7FF0
המרה לפורמט בינארי יוצרת כל מכונה שבה ה-RSSI עלה מעל סף ה-RSSI שהוגדר במהלך 63 השניות הקודמות:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
אם חלון הזיהוי מוגדר ל-16 שניות ותקופת הפעילות מוגדר ל-8 שניות, מצב זיהוי החסימה הופך ל-true
אחרי 51 שניות, כי זו הפעם הראשונה שבה ערך הסף של RSSI חרג לפחות ב-8 שניות מלאות ב-16 השניות הקודמות. בדוגמה הזו, סטטוס זיהוי החסימה נשאר true
במשך 13 השניות הבאות.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
מפת סיביות זו עשויה להיות מיוצגת על ידי התרשים הבא, אם סף ה-RSSI שהוגדר הוא -45 dBm:

איך מפעילים
התכונה הזו מושבתת כברירת מחדל.
לפי הגדרה
כדי להפעיל את זיהוי החסימות, מגדירים את 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
פרמטרים
אפשר להגדיר את הפרמטרים של זיהוי הפרעות רק דרך OpenThread API, פרוטוקול Spinel או wpanctl
, כלי שורת הפקודה wpantund
לניהול מעבדים משותפים של רשתות (NCP). ערכי ברירת המחדל יחולו אם התכונה מופעלת ללא הגדרות נוספות.
אפשר להתאים אישית את התכונה הזו באמצעות הפרמטרים הבאים:
פרמטרים | |||||
---|---|---|---|---|---|
RSSI Threshold |
|
||||
חלון זיהוי |
|
||||
תקופת פעילות כבדה |
|
API
OpenThread
אפשר להשתמש ב-Jam Detection API כדי לנהל את התכונה 'זיהוי התקפי מניעת שירות (Jam)' ישירות באפליקציית OpenThread. אפשר להשתמש ב-OpenThread API כך:
- הפעלה ועצירה של התכונה
- הצגת המצב של זיהוי Jam
- ניהול כל הפרמטרים
- אחזור של הבייטמאפ הנוכחי של היסטוריית זיהוי הרעשים
- רישום פונקציית קריאה חוזרת לזיהוי פקק
ספינל
פרוטוקול Spinel מאפשר למכשיר מארח לתקשר ישירות עם NCP.
הפרוטוקול הזה חושף נכסי זיהוי התקפי מניעת שירות ב-openthread/src/lib/spinel/spinel.h
שמספקים את הפונקציונליות הבאה:
- הפעלה ועצירה של התכונה
- הצגת המצב של זיהוי Jam
- ניהול כל הפרמטרים
- אחזור מפת סיביות של ההיסטוריה של זיהוי Jam
CLI
OpenThread
אין פקודות OpenThread CLI שקשורות לתכונה הזו.
wpantund
משתמשים ב-CLI של wpanctl
כדי לנהל את התכונה 'זיהוי רעשי רקע' בהגדרה של OpenThread NCP. wpantund
שומרת את כל ההגדרות של זיהוי התקפות מניעת שירות (Jam Detection) אחרי איפוס ה-NCP.
האפליקציה wpanctl
מספקת גישה לנכסים הבאים של wpantund
:
מאפיינים | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
לדוגמה, כדי לקבל את מצב זיהוי החסימה של NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
כדי להגדיר את סף ה-RSSI לזיהוי חבלה ל-45 dBm ב-NCP:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
למידע נוסף על מאפייני wpantund
, ראו מאגר wpantund
של GitHub.