Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

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

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS 및 Silk 란 무엇입니까?

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

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

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

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

배울 것

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

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

필요한 것

하드웨어:

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

소프트웨어:

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

전제 조건 :

이전 기본 Codelab 완료

패키지 필수 구성 요소 확인

모든 전제 조건이 충족되었는지 확인하겠습니다.

  1. $PATH 에서 otns 실행 파일을 검색 할 수 있는지 확인하려면 which otns 를 실행하십시오.
  2. 실행 which wpantund 확인 wpantund 가능합니다.
  3. ARM GNU 도구 체인, J-Link 및 nrfjprog 패키지를 모두 사용할 수 있는지 확인합니다.
  4. openthread 폴더 아래에서 make -f examples/Makefile-nrf52840 실행하여 OpenThread 바이너리를 만들 수 있는지 확인하십시오.

참고 : 설정 지침은 링크 된 문서를 참조하십시오. 선행 조건 # 1은 OTNS를 사용하여 스레드 네트워크 시뮬레이션 에서 가져온 것이고 다른 것들은 nRF52840 보드 및 OpenThread를 사용하여 스레드 네트워크 구축에서 가져온 것 입니다.

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

인터페이스 일련 번호 및 USB 인터페이스 번호를 찾는 데 사용할 수있는 Silk의 일부로 usbinfo 라는 도구가 설치됩니다. DutSerial은 J-Link 제품의 경우 칩에 인쇄되거나 usbinfo 에 표시되는 SN 번호입니다.

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

다음으로 각 테스트 장치에 대한 섹션을 정의하고 관련 하드웨어 정보를 제공합니다.

건물 이미지 및 깜박임

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

$ cd openthread
$ make -f examples/Makefile-nrf52840 clean
$ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1
$ cd output/nrf52840/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

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

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

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

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

4dd5b41bf7e71334.png

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

silk/unit_tests 에있는 silk_run_test.py 파일은 당신에게 유리한 시작을 제공합니다. Silk는 테스트 케이스를 실행할 때 OTNS 지원을 제공합니다. OTNS 리얼 모드 서비스가 이미 로컬에서 실행 silk_run_test.py 출력 로그 파일, 입력 테스트 스크립트 및 hwconfig.ini 파일에 대해 원하는 위치로 silk_run_test.py 파일을 수정하기 hwconfig.ini 됩니다. -s localhost 인수는 Silk에게 OTNS 메시지를 localhost 로 보내도록 지시합니다.

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

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

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

무엇 향후 계획?

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

추가 읽기

다양한 OpenThread 리소스를 보려면 openthread.ioSilk 를 확인하세요.

참조 문서