Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

Jam 감지

GitHub에서 소스 보기

모든 OpenThread 노드에서 신호 방해를 감지하도록 구성 가능한 메커니즘을 제공하려면 Jam 감지 기능을 사용 설정하세요.

이 기능은 특정 채널에서 신호 전파를 감지할 수 있는 기능이 필요한 기기 인증에 유용합니다. 각 인증 유형의 요구사항을 충족하도록 구성할 수 있습니다.

작동 방식

Jam Detection은 지정된 기간 동안 노드의 RSSI (수신 신호 강도 표시기)를 모니터링하여 채널이 방해되지 않았는지 확인합니다.

Jam 감지가 사용 설정된 경우

  1. Jam 감지 상태는 false으로 설정됩니다.
  2. 노드는 1초 간격으로 RSSI를 여러 번 샘플링합니다.
  3. 1초 간격의 RSSI가 구성된 시간보다 높게 유지되면RSSI 임계값 모든 샘플에서 1초 간격이 중단된 것으로 간주됩니다.
  4. 총 1초 간격의 누적 수가 다음과 같은 경우이상 같음 구성된 총 개수입니다.바쁨 기간 구성된 내의 초감지 기간 특정 시점의 Jam 감지 상태는 다음과 같이 설정됩니다.true 에서 확인할 수 있습니다.
  5. 총 1초 간격의 누적 수가 다음과 같은 경우다음 값 미만 구성된 총 개수바쁨 기간 구성된 기간(초) 내에감지 기간 특정 시점의 Jam 감지 상태는 다음과 같이 설정됩니다.false 에서 확인할 수 있습니다.

기록 비트맵

OpenThread APIwpantund 속성에서는 이전 63초의 비트맵을 검색할 수 있습니다. 이 비트맵은 RSSI가 이전 63초 각각에서 구성된 RSSI 임계값을 초과했는지 여부를 나타냅니다.

예를 들어 다음 비트맵을 검색할 수 있습니다.

0xC248068C416E7FF0

바이너리로 전환하면 이전 63초 동안 RSSI가 구성된 RSSI 임계값을 초과한 모든 인스턴스가 생성됩니다.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

감지 기간이 16초로 설정되고 Busy Duration이 8초로 설정되면 RSSI 임계값이 처음 설정된 것이기 때문에 Jam Detection 상태는 51초에 true가 됩니다. 지난 16초 동안 최소 8초를 초과함 이 예시에서 Jam 감지 상태는 다음 13초 동안 true으로 유지됩니다.

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

-45dBm이 구성된 RSSI 임계값인 경우 이 비트맵은 다음 그래프로 나타날 수 있습니다.

OT Jam 감지

사용 설정 방법

이 기능은 기본적으로 사용 중지됩니다.

정의 기준

Jam Detection을 사용 설정하려면 OpenThread를 만들기 전에 OPENTHREAD_CONFIG_JAM_DETECTION_ENABLEopenthread/src/core/config/openthread-core-default-config.h 파일에 1로 정의합니다. :

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

옵션별

또는 OpenThread를 빌드할 때 -DOT_JAM_DETECTION=ON 빌드 옵션을 사용합니다.

./script/build -DOT_JAM_DETECTION=ON

매개변수

Jam Detection 매개변수는 OpenThread API, Spinel 프로토콜 또는 Network Co-Processor (NCP) 관리를 위한 wpantund 명령줄 도구인 wpanctl를 통해서만 구성할 수 있습니다. 후속 구성 없이 이 기능이 사용 설정되면 기본값이 적용됩니다.

다음 매개변수를 사용하여 이 기능을 맞춤설정합니다.

매개변수
RSSI 임계값
기본값
0 dBm
설명
채널이 걸렸다고 간주하는 기준 RSSI 수준을 dBm 이상으로 지정합니다.
감지 기간
기본값
63초
설명
신호 방해를 확인할 기간을 초 단위로 지정합니다. 범위: 1~63
바쁨 기간
기본값
63초
설명
RSSI 임계값이 RSSI 임계값을 초과해야 하는 감지 기간 내에 집계된 감지 시간(초)을 지정합니다. 감지 기간보다 작아야 합니다. 범위: 1~63

API

OpenThread

Jam Detection API를 사용하여 OpenThread 애플리케이션에서 Jam 감지 기능을 직접 관리할 수 있습니다. OpenThread API는 다음 기능을 제공합니다.

  • 기능 시작 및 중지
  • Jam 감지 상태 보기
  • 모든 매개변수 관리
  • 현재 Jam 감지 기록 비트맵 가져오기
  • Jam이 감지되면 콜백 함수 등록

스피넬

Spinel 프로토콜을 사용하면 호스트 기기가 NCP와 직접 통신할 수 있습니다. 이 프로토콜은 다음 기능을 제공하는 openthread/src/lib/spinel/spinel.h에서 Jam Detection 속성을 노출합니다.

  • 기능 시작 및 중지
  • Jam 감지 상태 보기
  • 모든 매개변수 관리
  • 현재 Jam 감지 기록 비트맵 가져오기

CLI

OpenThread

이 기능과 관련된 OpenThread CLI 명령어는 없습니다.

Wpantund

wpanctl CLI를 사용하여 OpenThread NCP 구성의 Jam Detection 기능을 관리합니다. wpantund는 NCP 재설정 시 모든 Jam 감지 구성을 유지합니다.

wpanctl에서는 다음 wpantund 속성에 액세스할 수 있습니다.

속성
JamDetection:Status
방식
부울
설명
읽기 전용입니다. Jam 감지 상태. 현재 신호 감지가 감지되는지 여부를 나타냅니다.
JamDetection:Enable
방식
부울
설명
Jam 감지 기능을 사용 또는 사용 중지합니다.
JamDetection:RssiThreshold
방식
dBm
설명
채널이 차단된 것으로 간주되는 기준 RSSD 수준을 dBm 이상으로 지정합니다.
JamDetection:Window
방식
설명
신호 방해를 확인할 기간을 초 단위로 지정합니다. 범위: 1~63
JamDetection:BusyPeriod
방식
설명
RSS 감지가 JamDetection:RssiThreshold보다 높아야 Jam 감지를 트리거할 수 있는 JamDetection:Window의 집계 시간(초)을 지정합니다. JamDetection:Window보다 작아야 합니다. 범위: 1~63
JamDetection:Debug:HistoryBitmap
방식
64비트 값
설명
모니터링 및 디버깅 목적으로 Jam 감지 상태 기록에 관한 정보를 제공합니다.

예를 들어 NCP에 대한 Jam 감지 상태를 가져오려면 다음을 실행합니다.

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

NCP에서 Jam Detection RSSI 임계값을 -45dBm으로 설정하려면 다음 단계를 따르세요.

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

wpantund 속성에 대한 자세한 내용은 wpantund GitHub 저장소를 참조하세요.