การตรวจจับ Jam

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ดูแหล่งที่มาใน GitHub

หากต้องการให้กลไกที่กําหนดค่าได้สําหรับการตรวจหาการส่งสัญญาณรบกวนในโหนด OpenThread ใดๆ ให้เปิดใช้ฟีเจอร์ Jam ตรวจจับ

ฟีเจอร์นี้มีประโยชน์สําหรับการรับรองอุปกรณ์ที่ต้องใช้ความสามารถในการตรวจหาการรบกวนสัญญาณในช่องใดช่องหนึ่ง รวมถึงกําหนดค่าให้เป็นไปตามข้อกําหนดของใบรับรองแต่ละประเภท

วิธีการทำงาน

Jam Detection ตรวจสอบ RSSI (ตัวบอกสถานะความแรงของสัญญาณที่ได้รับ) ของโหนดหนึ่งๆ ระหว่างกรอบเวลาที่ระบุเพื่อระบุว่าแชแนลนั้นๆ ถูกบุกรุกหรือไม่

เมื่อเปิดใช้การตรวจจับ Jam ให้ทําดังนี้

  1. ตั้งค่าสถานะการตรวจจับ Jam เป็น false
  2. โหนดนี้สุ่มตัวอย่าง RSSI หลายครั้งในช่วงเวลา 1 วินาที
  3. หาก RSSI ตลอดระยะเวลา 1 วินาทีนั้นเกินเกณฑ์ RSSI ที่กําหนดค่าไว้สําหรับตัวอย่างทั้งหมด ระบบจะถือว่าช่วง 1 วินาทีนั้นติดอยู่
  4. หากจํานวนรวมของช่วงเวลาที่ติดขัด 1 วินาทีมีค่ามากกว่าหรือเท่ากับจํานวนวินาทีทั้งหมดของช่วงเวลาไม่ว่างที่กําหนดค่าไว้ภายในกรอบเวลาการตรวจจับที่กําหนดค่าไว้ก่อนหน้านี้ เมื่อใดก็ตาม ระบบจะตั้งสถานะการตรวจจับ Jam ในช่วงเวลาดังกล่าวเป็น true
  5. หากจํานวนรวมของช่วงเวลาที่ติดขัด 1 วินาทีมีค่าน้อยกว่าจํานวนระยะเวลาที่ไม่มีการแจ้งเตือนที่รวบรวมไว้ที่รวบรวมไว้ภายในวินาทีกรอบเวลาการตรวจจับที่กําหนดค่าไว้ก่อนหน้านี้ในช่วงเวลาใดก็ตาม สถานะการตรวจจับ Jam ณ เวลานั้นตั้งค่าเป็น false

บิตแมปประวัติ

ใน OpenThread API และ wpantund property จะมีบิตแมปของ 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

กราฟนี้อาจแสดงเป็นกราฟต่อไปนี้ หากเกณฑ์ของ RSSI -45 dBm ที่กําหนดค่าเป็นเกณฑ์

การตรวจจับ OT Jam

วิธีเปิดใช้

ฟีเจอร์นี้ปิดใช้อยู่โดยค่าเริ่มต้น

ตามคําจํากัดความ

หากต้องการเปิดใช้ Jam Detect ให้กําหนด 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

ตามตัวเลือก

หรือใช้ตัวเลือกบิลด์ -DOT_JAM_DETECTION=ON ขณะสร้าง OpenThread ได้ดังนี้

./script/build -DOT_JAM_DETECTION=ON

พารามิเตอร์

กําหนดค่าพารามิเตอร์การตรวจจับ Jam ได้ผ่าน OpenThread API, โปรโตคอล Spinel หรือ wpanctl ซึ่งเป็นเครื่องมือบรรทัดคําสั่ง wpantund สําหรับการจัดการ Network Co-Processor (NCP) เท่านั้น ระบบจะใช้ค่าเริ่มต้นเมื่อเปิดใช้ฟีเจอร์ โดยไม่มีการกําหนดค่าในภายหลัง

ปรับแต่งฟีเจอร์นี้โดยใช้พารามิเตอร์ต่อไปนี้

พารามิเตอร์
เกณฑ์ RSSI
ค่าเริ่มต้น
0 dBm
คำอธิบาย
ระบุเกณฑ์ระดับ RSSI ใน dBm ด้านบนเพื่อถือว่าช่องทางติดขัด
กรอบเวลาการตรวจจับ
ค่าเริ่มต้น
63 วินาที
คำอธิบาย
ระบุกรอบเวลาในหน่วยวินาทีที่จะตรวจหาการรบกวนสัญญาณ ช่วง: 1-63
ช่วงเวลาที่ไม่ว่าง
ค่าเริ่มต้น
63 วินาที
คำอธิบาย
ระบุจํานวนวินาทีโดยรวมภายในกรอบเวลาการตรวจจับที่ RSSI ต้องสูงกว่าเกณฑ์ RSSI เพื่อทริกเกอร์การตรวจจับ Jam ต้องน้อยกว่าหน้าต่างการตรวจหา ช่วง: 1-63

API

OpenThread

ใช้ Jam Detection API เพื่อจัดการฟีเจอร์ Jam Detection โดยตรงในแอปพลิเคชัน OpenThread ของคุณ API ของ OpenThread จะมีฟังก์ชันการทํางานดังต่อไปนี้

  • เริ่มและหยุดฟีเจอร์นี้
  • ดูสถานะการตรวจจับของ Jam
  • จัดการพารามิเตอร์ทั้งหมด
  • เรียกบิตแมปประวัติการตรวจจับของ Jam ปัจจุบัน
  • ลงทะเบียนฟังก์ชันเรียกกลับเมื่อตรวจพบ Jam

สันกระดูกสันหลัง

โปรโตคอลบนสันหนังสือช่วยให้อุปกรณ์ของโฮสต์สื่อสารกับ 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
รูปแบบ
บูลีน
คำอธิบาย
อ่านอย่างเดียว สถานะการตรวจจับ Jam ระบุว่าตรวจพบสัญญาณรบกวนในขณะนี้หรือไม่
JamDetection:Enable
รูปแบบ
บูลีน
คำอธิบาย
เปิดหรือปิดใช้ฟีเจอร์การตรวจจับของ 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 ได้ที่ที่เก็บ GitHub ของ wpantund