고급 기능 구현

GitHub에서 소스 보기

일부 고급 기능은 대상 하드웨어 플랫폼에서 지원되는지에 따라 선택사항입니다.

자동 프레임 대기 중

IEEE 802.15.4는 직접 전송과 간접 전송이라는 두 가지 종류의 상위 및 하위 데이터 전송 방법을 정의합니다. 후자는 주로 대부분의 시간 동안 절전 모드로 전환되는 상위 최종 기기 (SED)용으로 설계되어 주기적으로 큐에 추가된 데이터를 폴링합니다.

  • 직접 전송 - 상위 요소가 데이터 프레임을 최종 기기로 직접 전송합니다. 직접 전송

  • 간접 전송 - 의도한 최종 기기에서 요청될 때까지 상위 조직에서 데이터를 보관합니다. 직접 전송

간접 사례의 경우 하위 최종 기기는 먼저 상위 요소를 폴링하여 사용 가능한 데이터가 있는지 확인해야 합니다. 이를 위해 하위 요소는 상위 요소가 확인하는 데이터 요청을 보냅니다. 그런 다음 상위 요소는 하위 기기에 대한 데이터가 있는지 확인합니다. 있는 경우 데이터 패킷을 하위 기기로 보내 데이터 수신을 확인합니다.

라디오에서 발신 확인의 프레임 대기 비트를 SED로 동적으로 설정하는 기능을 지원하면 드라이버는 소스 주소 일치 API를 구현하여 이 기능을 사용 설정해야 합니다. OpenThread는 이 API를 사용하여 프레임 대기 중인 비트를 설정할 SED를 무선에 알립니다.

라디오가 프레임 대기 비트 비트 설정을 동적으로 지원하지 않으면 라디오는 소스 주소 일치 API를 스텁 처리하여 OT_ERROR_NOT_IMPLEMENTED를 반환할 수 있습니다.

라디오로 에너지 스캔/감지

에너지 스캔/감지 기능을 사용하려면 무선 칩이 선택된 채널에 존재하는 에너지를 샘플링하고 감지된 에너지 값을 상단 레이어에 반환해야 합니다.

이 기능이 구현되지 않으면 IEEE 802.15.4 MAC 레이어가 비콘 요청/응답 패킷을 전송/수신하여 채널의 현재 에너지 값을 평가합니다.

무선 칩이 에너지 스캔/감지 기능을 지원한다면 OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 매크로를 설정하여 소프트웨어 에너지 스캔 로직을 사용 중지해야 합니다.

mbedTLS의 하드웨어 가속

mbedTLS는 사용자가 AES, SHA1, SHA2 및 기타 모듈의 대체 구현은 물론 GF (p) 모듈을 통한 타원 곡선 암호화(ECC)의 개별 기능을 사용 설정할 수 있도록 기본 구성 헤더 파일 mbedtls-config.h에 여러 매크로를 정의합니다. 자세한 내용은 mbedTLS 하드웨어 가속을 참고하세요.

OpenThread에서는 이러한 매크로를 사용 설정하지 않으므로 대칭 암호화 알고리즘, 해시 알고리즘, ECC 함수는 모두 기본적으로 소프트웨어 구현을 활용합니다. 이러한 구현에는 상당한 메모리 및 계산 리소스가 필요합니다. 최적의 성능과 사용자 환경을 제공하려면 소프트웨어 대신 하드웨어 가속을 사용 설정하여 위 작업을 구현하는 것이 좋습니다.

OpenThread 내에서 하드웨어 가속을 사용 설정하려면 다음과 같은 mbedTLS 구성 헤더 파일을 플랫폼의 CMake 파일에 있는 ot-config 컴파일 정의에 추가해야 합니다.

nrf52811.cmake의 예:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

mbedtls-config.h의 주석 처리된 매크로는 필수가 아니며 하드웨어 가속을 위한 사용자별 구성 헤더 파일에서 사용 설정할 수 있습니다.

전체 사용자별 구성 예는 ot-efr32mbedtls_config_autogen.h 파일을 참고하세요.

AES 모듈

OpenThread Security는 AES CCM (Counter with CBC-MAC) 암호화를 적용하여 IEEE 802.15.4 또는 MLE 메시지를 암호화 및 복호화하고 메시지 통합 코드의 유효성을 검사합니다. 하드웨어 가속은 최소한 AES CCM 기본 기능 호출을 위한 기본 AES ECB(전자 코드북) 모드를 지원해야 합니다.

대체 AES 모듈 구현을 활용하는 방법:

  1. 사용자별 mbedTLS 구성 헤더 파일에서 MBEDTLS_AES_ALT 매크로 정의
  2. MBEDTLS_CPPFLAGS 변수를 사용하여 aes_alt.h 파일의 경로를 나타냅니다.

SHA256 모듈

OpenThread Security는 HMAC 및 SHA256 해시 알고리즘을 적용하여 스레드 사양에 따라 네트워크 키 관리 및 PSKc 생성의 해시 값을 계산합니다.

대체 기본 SHA256 모듈 구현을 활용하는 방법은 다음과 같습니다.

  1. 사용자별 mbedTLS 구성 헤더 파일에서 MBEDTLS_SHA256_ALT 매크로 정의
  2. MBEDTLS_CPPFLAGS 변수를 사용하여 sha256_alt.h 파일의 경로를 나타냅니다.

ECC 함수

mbedTLS는 현재 전체 모듈이 아닌 ECC 함수의 일부에 대해서만 하드웨어 가속을 지원하므로 path-to-mbedtls/library/ecp.c에 정의된 일부 함수를 구현하여 ECC 포인트 곱셈을 가속화할 수 있습니다.

곡선 secp256r1은 ECJPAKE 초안의 키 교환 알고리즘에 사용됩니다. 따라서 하드웨어 가속은 최소한 secp256r1 짧은 Weierstrass 곡선 작업을 지원해야 합니다. 예시는 mbedTLS에 대한 SiLabs CRYPTO 하드웨어 가속을 참고하세요.