시각화를 사용하여 스레드 네트워크 테스트

1. 소개

5abd22afa2f2ee9a.png

스레드, OpenThread, OTNS, Silk란 무엇인가요?

스레드는 기기 간 및 기기 간 안전한 통신을 가능하게 하는 IP 기반의 저전력 무선 메시 네트워킹 프로토콜입니다. 스레드 네트워크는 토폴로지 변화에 적응하여 단일 장애점을 방지할 수 있습니다.

Google에서 출시한 OpenThread는 스레드의 오픈소스 구현입니다. OpenThread는 코드 크기와 메모리 공간이 작지만 스레드 사양에 정의된 모든 기능을 지원합니다.

OpenThread 네트워크 시뮬레이터 (OTNS)를 사용하면 posix 플랫폼에서 시뮬레이션된 OpenThread 노드를 실행하여 스레드 네트워크를 시뮬레이션할 수 있습니다. OTNS는 시뮬레이션된 스레드 네트워크를 시각화하고 운영할 수 있도록 사용하기 쉬운 웹 인터페이스 (OTNS-Web)를 제공합니다.

Silk는 실제 기기에서 OpenThread 기능, 기능, 시스템 성능을 검증하기 위한 완전히 자동화된 테스트 플랫폼입니다.

학습할 내용

  • OpenThread의 기능 검증 프레임워크: Silk
  • OTNS 기능이 사용 설정된 실제 기기를 위한 OpenThread 빌드
  • OTNS-Web 인터페이스를 사용하여 Silk 테스트 사례를 실행하여 형성된 스레드 네트워크의 상태 모니터링

이 Codelab에서는 OTNS와 함께 Silk를 사용하는 데 중점을 둡니다. Silk 및 OTNS의 다른 기능은 다루지 않습니다.

필요한 항목

하드웨어:

  • Nordic Semiconductor nRF52840 개발 보드 6개
  • 보드를 연결하는 USB-마이크로 USB 케이블 6개
  • USB 허브

소프트웨어:

  • Linux x86_64
  • Git
  • Go 1.11 이상.
  • 웹브라우저 OTNS-Web은 시뮬레이션을 표시하기 위해 웹브라우저를 사용합니다.

기본 요건:

2. 기본 요건

이전 기본 Codelab 완료

패키지 기본 요건 확인

모든 기본 요건을 충족하는지 확인해 보겠습니다.

  1. which otns를 실행하여 otns 실행 파일을 $PATH에서 검색할 수 있는지 확인합니다.
  2. which wpantund를 실행하여 wpantund를 사용할 수 있는지 확인합니다.
  3. ARM GNU 도구 모음, J-Link 및 nrfjprog 패키지를 모두 사용할 수 있는지 확인합니다.

참고: 설정 안내는 연결된 문서를 참고하세요. 첫 번째 기본 요건은 OTNS를 사용한 스레드 네트워크 시뮬레이션이고 나머지는 nRF52840 보드와 OpenThread를 사용한 스레드 네트워크 빌드입니다.

3. Silk 설정

Silk를 클론하고 환경을 설정하려면 소스 디렉터리에서 다음 명령어를 실행합니다.

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

하드웨어 구성 파일 정의

Silk가 머신에 연결된 사용 가능한 테스트 하드웨어 리소스를 수집하도록 허용하려면 hwconfig.ini 파일을 다음 형식으로 정의합니다.

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

usbinfo라는 도구는 Silk의 일부로 설치되어 있어 인터페이스 일련번호와 USB 인터페이스 번호를 확인하는 데 사용할 수 있습니다. DutSerial은 칩에 인쇄되거나 J-Link 제품에 대해 usbinfo에 의해 표시되는 SN 번호입니다.

[DEFAULT] 섹션의 LayoutCenterLayoutRadius 필드는 기기가 웹 UI에서 시각화될 때 레이아웃의 모양을 정의합니다. 여기에 표시된 값으로 설정하는 것으로 시작할 수 있습니다.

그런 다음 각 테스트 기기에 관한 섹션을 정의하고 관련 하드웨어 정보를 제공합니다.

4. OTNS가 사용 설정된 상태로 OpenThread 컴파일

건물 이미지 및 플래시

기본적으로 OpenThread 기기는 OTNS 관련 메시지를 내보내지 않습니다. 개발 보드가 OTNS 시각화에 필수적인 로깅 인터페이스에 상태 메시지를 내보낼 수 있도록 하려면 OpenThread 소스 디렉터리에서 다음 명령어를 실행하여 FTD 이미지를 빌드하고 16진수 형식으로 변환합니다.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

보드를 플래시하려면 스레드 네트워크 빌드 Codelab의 4단계 안내에 따라 nrfjprog를 사용합니다. 그런 다음 nRF USB 포트를 통해 모든 보드를 호스트 머신에 연결합니다. 동일한 USB-마이크로 USB 케이블 세트를 J-Link 포트에서 분리하고 nRF52840 개발 보드의 nRF USB 포트에 연결할 수 있습니다. 따라서 이 6개의 케이블만 사용하여 테스트를 실행할 수 있습니다. 번거로움을 피하기 위해 12개의 케이블을 사용하고 두 포트에 모두 연결합니다.

5. 실제 모드로 OTNS 서버 실행

기본 매개변수로 OTNS를 실행하면 사용자가 스레드 네트워크를 시뮬레이션할 수 있습니다. 실제 물리적 네트워크를 위한 시각화 도구로 사용하려면 다음을 사용하여 실행하세요.

otns -raw -real -ot-cli otns-silk-proxy

이러한 인수는 여러 ot-cli 프로세스를 실행하여 네트워크를 시뮬레이션하는 대신 스레드 네트워크가 시각화되는 방식을 설명하는 gRPC 및 UDP 메시지를 OTNS에 예상하도록 지시합니다. 브라우저에서 빈 캔버스가 있는 시각화 페이지가 자동으로 열립니다.

4dd5b41bf7e71334.png

6. OTNS 지원으로 Silk 테스트 사례 실행

Silk는 실제 기기에서 OpenThread 기능, 기능, 시스템 성능을 검증하기 위한 완전히 자동화된 테스트 플랫폼입니다. 프로젝트 README의 안내에서 사용 방법을 확인할 수 있습니다.

silk/unit_tests에 있는 silk_run_test.py 파일을 사용하면 헤드스타트를 시작할 수 있습니다. Silk는 테스트 사례를 실행할 때 OTNS를 지원합니다. OTNS 리얼 모드 서비스가 이미 로컬에서 실행 중이므로 출력 로그 파일, 입력 테스트 스크립트, hwconfig.ini 파일의 원하는 위치로 silk_run_test.py 파일을 수정하기만 하면 됩니다. -s localhost 인수는 OTNS 메시지를 localhost로 보내도록 Silk에 지시합니다.

예를 들어 silk_run_test.py 파일의 다음 수정사항을 사용하여 ot_test_form_network.py라는 테스트를 실행할 수 있습니다. /opt/openthread_test/는 Silk에서 로그 출력 및 구성 파일에 사용하는 기본 경로이지만 원하는 경로를 사용할 수 있습니다.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

형성된 네트워크의 토폴로지 시각화가 OTNS 웹 UI에 표시됩니다.

ee443b66e0a6620b.png

왼쪽 상단에 시각화 통계, OT 버전, 테스트 제목이 표시됩니다. 왼쪽 하단 모서리에는 오른쪽에 보이는 로그 창의 컨트롤이 있습니다. 처음에는 노드가 추가되지만 네트워크는 형성되지 않습니다. 테스트가 진행됨에 따라 각 노드의 모드와 역할이 변경되고 링크가 형성됩니다.

5c38e2c72519e620.png

7. 축하합니다

수고하셨습니다. 실제 스레드 기기에서 Silk 테스트를 실행하고 OTNS를 사용하여 시각화했습니다.

OTNS를 지원하는 펌웨어로 플래시된 개발 보드를 사용하여 Silk 테스트를 실행했습니다. 이 보드는 모든 서버를 모니터링하고 집계하는 Silk 서버에 상태를 보고하고, 다른 테스트 정보와 함께 OTNS 서비스로 보냅니다. 실시간 모드에서 실행되는 OTNS는 웹 인터페이스에서 스레드 네트워크를 시각화합니다.

다음 단계

Silk 패키지에 포함된 다른 OpenThread 테스트 사례를 실행해 봅니다.

추가 자료

openthread.ioSilk에서 다양한 OpenThread 리소스를 확인하세요.

참조 문서