การตรวจจับ Jam

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

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

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

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

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

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

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

ตามตัวเลือก

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

./script/build -DOT_JAM_DETECTION=ON

พารามิเตอร์

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

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

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

API

OpenThread

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

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

สันใบ

โปรโตคอลแบบสันหนังสือช่วยให้อุปกรณ์โฮสต์สื่อสารกับ NCP ได้โดยตรง โปรโตคอลนี้จะแสดงพร็อพเพอร์ตี้การตรวจจับของ Jam ใน openthread/src/lib/spinel/spinel.h ซึ่งมีฟังก์ชันการทํางานต่อไปนี้

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

CLI

OpenThread

ไม่มีคําสั่ง OpenThread CLI ที่เกี่ยวข้องกับฟีเจอร์นี้

Wpantund

ใช้ wpanctl CLI เพื่อจัดการฟีเจอร์การตรวจจับ Jam สําหรับการกําหนดค่า OpenCP NCP wpantund จะเก็บการกําหนดค่าการตรวจจับ Jam ทั้งหมดไว้เมื่อมีการรีเซ็ต NCP

wpanctl ให้สิทธิ์เข้าถึงพร็อพเพอร์ตี้ wpantund ต่อไปนี้

พร็อพเพอร์ตี้
JamDetection:Status
รูปแบบ
บูลีน
คำอธิบาย
อ่านอย่างเดียว สถานะการตรวจจับ Jam ระบุว่าตรวจพบ 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