시각화로 스레드 네트워크 테스트

1. 소개

5abd22afa2f2ee9a.png

스레드, OpenThread, OTNS 및 실크란 무엇입니까?

스레드는 안전한 장치 대 장치 및 장치 대 클라우드 통신을 가능하게 하는 IP 기반 저전력 무선 메시 네트워킹 프로토콜입니다. 스레드 네트워크는 단일 실패 지점을 피하기 위해 토폴로지 변경에 적응할 수 있습니다.

OpenThread 구글 발표는 스레드의 오픈 소스 구현입니다. 작은 코드 크기 및 메모리 풋 프린트에도 불구하고, OpenThread는에 정의 된 모든 기능을 지원하는 스레드 1.1.1 사양 .

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

실크 OpenThread 기능, 기능, 실제 장치와 시스템 성능을 검증하기위한 완전 자동화 된 테스트 플랫폼입니다.

배울 내용

  • OpenThread의 기능 검증 프레임워크: 실크
  • OTNS 기능이 활성화된 실제 장치용 OpenThread 빌드
  • OTNS-Web 인터페이스를 사용하여 Silk 테스트 케이스 실행으로 형성된 Thread 네트워크 상태 모니터링

이 코드랩은 실크를 OTNS와 함께 사용하는 데 중점을 둡니다. Silk 및 OTNS의 다른 기능은 다루지 않습니다.

필요한 것

하드웨어:

  • 6 Nordic Semiconductor nRF52840 개발 기판
  • 보드를 연결하기 위한 6개의 USB-Micro-USB 케이블
  • USB 허브

소프트웨어:

  • 리눅스 x86_64.
  • 힘내 .
  • 1.11+로 이동합니다 .
  • 웹 브라우저. OTNS-Web은 시뮬레이션을 표시하기 위해 웹 브라우저를 사용합니다.

전제 조건:

2. 전제 조건

이전의 기본 Codelab 완료

패키지 전제 조건 확인

모든 전제 조건이 충족되었는지 확인합시다.

  1. 실행 which otns 있는지 확인합니다 otns 실행 파일의 검색이 $PATH .
  2. 실행 which wpantund 확인 wpantund 가능합니다.
  3. 확인 ARM GNU 툴체인, J-링크를 확인하고 nrfjprog 패키지는 모두 사용할 수 있습니다.
  4. 확인 OpenThread 바이너리를 실행 할 수 make -f examples/Makefile-nrf52840 세 이하 openthread 폴더.

참고 : 설정 지침 링크 된 문서를 참조하시기 바랍니다. 전제 조건 # 1에서입니다 OTNS 사용하여 시뮬레이션 스레드 네트워크 와 다른 출신 빌드 nRF52840 보드와 OpenThread와 스레드 네트워크 .

3. 실크 설정

Silk를 복제하고 환경을 설정하려면 소스 디렉토리에서 다음 명령을 실행하십시오.

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

하드웨어 구성 파일 정의

실크, 컴퓨터에 연결 가능한 테스트 하드웨어 자원을 모여 정의 할 수 있도록하려면 hwconfig.ini 다음과 같은 형식의 파일을 :

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

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

도구라는 usbinfo 인터페이스 일련 번호 및 USB 인터페이스 번호를 찾을 수 있습니다 실크의 일부로 설치됩니다. DutSerial 의해 칩에 인쇄 또는 표시 SN 번호 usbinfo J-링크 제품.

LayoutCenterLayoutRadius 필드 [DEFAULT] 장치가 웹 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

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

5. 리얼 모드로 OTNS 서버 실행

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

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

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

4dd5b41bf7e71334.png

6. OTNS 지원으로 실크 테스트 케이스 실행하기

Silk는 실제 장치에서 OpenThread 기능, 기능 및 시스템 성능을 검증하기 위한 완전 자동화된 테스트 플랫폼입니다. 프로젝트의 지침 README의 커버 방법을 사용합니다.

silk_run_test.py 에있는 파일 silk/unit_tests 당신에게 우위를 선점를 제공합니다. Silk는 테스트 케이스를 실행할 때 OTNS 지원을 제공합니다. OTNS 리얼 모드 서비스가 이미 로컬로 실행되기 때문에, 우리는 간단하게 수정해야 silk_run_test.py 출력 로그 파일, 입력 테스트 스크립트와의 원하는 위치에 파일을 hwconfig.ini 파일. -s localhost 인수에 OTNS 메시지를 보낼 실크를 알려줍니다 localhost .

예를 들어, 하나는 이름 테스트 실행할 수 있습니다 ot_test_form_network.py 에 다음과 같은 수정을 사용하여 silk_run_test.py 파일을. /opt/openthread_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. 축하합니다

축하합니다. 실제 Thread 장치에서 Silk 테스트를 성공적으로 실행하고 OTNS를 사용하여 시각화했습니다!

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

무엇 향후 계획?

Silk 패키지에 포함된 다른 OpenThread 테스트 케이스를 실행해 보십시오.

추가 읽기

확인 openthread.io실크를 OpenThread 자원의 다양한.

참조 문서