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

OTNS를 사용하여 스레드 네트워크 시뮬레이션

5abd22afa2f2ee9a.png

Thread & OTNS 란?

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

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

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

배울 것

  • OTNS 및 해당 종속성 설치
  • OTNS 용 OpenThread 빌드
  • OTNS-Web에서 노드를 추가 / 이동 / 삭제하는 방법
  • OTNS-Web의 다른 유용한 기능을 사용하여 네트워크 시뮬레이션을 운영하십시오.
  • OpenThread의 단일 실패 지점이 없는지 확인

이 코드 랩은 OTNS-CLI 및 OTNS-Web에 중점을 둡니다. Python 스크립팅과 같은 OTNS의 다른 기능은 다루지 않습니다.

필요한 것

  • Linux x86_64 또는 Mac OS.
  • 힘내 .
  • Go 1.11+ .
  • 웹 브라우저. OTNS-Web은 시뮬레이션을 표시하기 위해 웹 브라우저를 사용합니다.
  • 스레드 입문서 . 이 Codelab에서 가르치는 내용을 이해하려면 Thread의 기본 개념을 알아야합니다.

Go 설치

OTNS를 빌드하려면 Go 1.11 이상이 필요합니다.

  1. https://golang.org/dl/ 에서 Go를 설치합니다.
  2. $(go env GOPATH)/bin (일반적으로 $HOME/go/bin )을 $PATH .
$ export PATH=$PATH:$(go env GOPATH)/bin

OTNS 코드 받기

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

종속성 설치

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

sudo 대한 암호를 입력하라는 메시지가 표시 될 수 있습니다.

otns 설치

설치 otns$GOPATH/bin :

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

otns 가 제대로 설치되었는지 확인합시다

  1. $PATH. 에서 otns 실행 파일을 검색 할 수 있는지 확인하려면 which otns 를 실행하십시오 $PATH.
  2. otns 명령을 찾을 수없는 경우 $(go env GOPATH)/bin$PATH. 추가했는지 확인합니다 $PATH.

GitHub에서 OpenThread 코드 가져 오기

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

OTNS=1 OpenThread 빌드

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

output 디렉토리에서 OpenThread 실행 파일을 찾을 수 있습니다.

리눅스

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

맥 OS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

이제 OTNS를 실행할 시간입니다 ...

otns 실행 :

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

성공적으로 시작되면 OTNS는 CLI 콘솔 ( OTNS-CLI )에 OTNS-CLI 네트워크 시각화 및 관리를위한 웹 브라우저 ( OTNS-Web )를 시작합니다.

a0e05178d66929b1.png

OTNS-Web의 빈 페이지 만 볼 수있는 경우 브라우저에서 WebGL이 활성화되지 않았을 가능성이 있습니다. WebGL을 활성화하는 방법 https://superuser.com/a/836833 참조하십시오 .

다음 섹션에서는 OTNS-CLIOTNS-Web 통해 OTNS-CLI 시뮬레이션을 관리하는 방법을 배우게됩니다.

OTNS-CLI

OTNS-CLI 는 OTNS 시뮬레이션 관리를위한 CLI (Command Line Interface)를 제공합니다.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

OTNS-CLI 통해 명령을 입력 할 수 있습니다. 전체 명령 목록은 OTNS CLI 참조 를 참조하십시오. 걱정하지 마세요.이 Codelab에서는 이러한 명령 중 몇 가지만 사용할 것입니다.

OTNS- 웹

OTNS-Web 은 OTNS의 네트워크 시각화 및 관리 도구입니다. 시뮬레이션 된 스레드 네트워크의 노드, 메시지 및 링크를 시각적으로 표현합니다. OTNS-Web 의 다양한 요소에 유의하십시오.

4c5b43509a2ca0d0.png

OTNS-CLI를 통해 노드 추가

위치 (300, 100)에 라우터 추가

> add router x 300 y 100
1
Done

OTNS-Web 에서 생성 된 노드가 표시되어야합니다. 노드는 라우터로 시작하고 몇 초 안에 리더가됩니다.

6ca8c2e63ed9818d.png

OTNS-CLI 통해 더 많은 노드 추가

> add fed x 200 y 100
2
Done
> add med x 400 y 100
3
Done
> add sed x 300 y 200
4
Done

노드가 하나의 파티션으로 병합 될 때까지 몇 초 정도 기다리십시오. OTNS-WEB 노드가 표시되어야합니다.

3ee67903c01aa612.png

OTNS-Web 노드 추가

OTNS-Web 통해 노드를 추가 할 수도 있습니다. Action BarNew Router 버튼을 클릭합니다. New Router 버튼 바로 위에 생성되는 노드가 표시되어야합니다. OTNS-CLI 통해 생성 한 리더 근처에 노드를 드래그합니다. 모든 노드는 결국 하나의 파티션으로 병합되어야합니다.

420258bb92561146.png

또한 작업 표시 줄에서 FED, MED 및 SED 버튼을 클릭하여 다른 유형의 노드를 만듭니다. 기존 노드 근처의 위치로 드래그하여 해당 스레드 네트워크에 연결합니다.

fe15d6f9726a099e.png

이제 여러 노드를 포함하는 한 파티션의 스레드 네트워크를 작성했습니다. 다음 섹션에서는 시뮬레이션 속도를 조정하여 시뮬레이션을 더 빠르게 실행할 것입니다.

현재 시뮬레이션은 1X 속도로 실행되어야합니다. 즉, 지금까지의 시뮬레이션 시간이 첫 번째 노드를 생성 한 이후의 실제 시간과 동일합니다.

OTNS-CLI 통해 속도 조정

OTNS-CLI 통해 시뮬레이션 속도를 조정할 수 있습니다.

시뮬레이션 속도를 100X 설정

> speed 100
Done

노드가 이전보다 훨씬 더 자주 메시지를 보내는 것을 볼 수 있습니다.

시뮬레이션 속도를 MAX 설정

> speed max
Done

이제 OTNS는 가능한 한 빨리 시뮬레이션하기 위해 최선을 다하고 있으므로 노드가 많은 메시지를 보내는 것을 볼 수 있습니다.

시뮬레이션 일시 중지

> speed 0
Done

시뮬레이션 속도를 0 설정하면 시뮬레이션이 일시 중지됩니다.

정상 속도로 시뮬레이션 복원

> speed 1
Done

시뮬레이션 속도를 0 보다 큰 값으로 설정하면 시뮬레이션이 다시 시작됩니다.

OTNS-Web 통해 속도 조정

속도 제어 버튼

속도 제어 버튼 찾기 9329157c1bd12672.png Action Bar . 버튼은 현재 시뮬레이션 속도를 표시하며 시뮬레이션 속도를 조정하고 시뮬레이션을 일시 중지 / 재개하는 데 사용할 수 있습니다.

시뮬레이션 속도 향상

클릭하여 시뮬레이션 속도를 높일 수 있습니다. 39b88331779277ad.png 속도가 MAX 도달 할 때까지 버튼 : f5f460b2586d299b.png .

시뮬레이션 속도 저하

클릭하여 시뮬레이션 속도를 늦출 수 있습니다. 31cca8d5b52fa900.png 단추.

시뮬레이션 일시 중지

클릭 46cc2088c9aa7ab6.png 버튼을 눌러 시뮬레이션이 실행 중일 때 일시 중지합니다. 버튼이 다음으로 변경됩니다. ce25eda3496ffcd4.png .

시뮬레이션 재개

클릭 ce25eda3496ffcd4.png 버튼을 눌러 일시 중지되었을 때 시뮬레이션을 다시 시작합니다. 버튼이 다음으로 다시 변경됩니다. 46cc2088c9aa7ab6.png .

시뮬레이션 속도를 10X 설정

시간을 절약하려면

시뮬레이션 속도를 조정하는 OTNS-CLI

네트워크의 토폴로지 변화를 훨씬 더 빠르게 관찰 할 수 있도록 10X 를 지원합니다.

> speed 10
Done

이제 시뮬레이션에는 2 개의 라우터 (육각형 모양)와 많은 하위 항목이 포함되어야하며 10 배 속도로 실행됩니다.

두 라우터의 현재 리더 (빨간색 테두리)를 찾고 한 번 클릭하여 선택합니다.

8c6a2e191cdae0c7.png

라디오 끄기

클릭 7ca085f470491dd4.png 리더 노드의 라디오를 끄려면 액션 바의 버튼을 누르십시오.

a3bf58d9d125f95f.png

리더는 라디오가 꺼진 상태에서 메시지를 보내거나받을 수 없습니다.

다른 라우터가 새로운 리더가 될 때까지 약 12 ​​초 (시뮬레이션 시간 120 초)를 기다립니다.

e3d32f85c4a1b990.png

Thread 네트워크는 새로운 Leader로 새로운 파티션을 형성하여 Leader 장애로부터 자동으로 복구합니다. 새 파티션에도 새 파티션 색상이 있습니다.

라디오 켜기

라디오가 꺼진 리더를 선택하십시오. 클릭 2d9cecb8612b42aa.png 무선 연결을 복원하려면 Action Bar 버튼 :

7370a7841861aa3a.png

리더는 무선 연결이 복원 된 후 네트워크에 다시 연결해야합니다.

OTNS를 사용하면 사용자가 OTNS-CLI 또는 OTNS-Web 통해 쉽게 노드를 이동할 수 있습니다.

OTNS-CLI 통해 노드 이동

노드 5를 새 위치로 이동합니다.

> move 5 600 300
Done

이제 노드 5는 다른 라우터와 거리가 멀기 때문에 서로 연결이 끊어지고 약 12 ​​초 (시뮬레이션 시간 120 초) 후에 둘 다 자신의 파티션의 리더가됩니다.

c06b4d0a4f183299.png

OTNS-Web을 통해 노드 이동

드래그하여 노드 5를 원래 위치로 다시 이동합니다. 두 파티션은 다시 하나의 파티션으로 병합되어야합니다.

9ba305c4c5a5f892.png

OTNS-CLI 통해 노드 삭제

노드 8 삭제 :

> del 8
Done

노드 8은 시뮬레이션에서 사라져야합니다.

18156770d9f8bf83.png

OTNS-Web 통해 노드 삭제

노드 5를 선택하고 7ff6afd565f4eafc.png 노드 5를 삭제하려면 Action Bar 버튼을 누르십시오.

d4079cceea0105f0.png

Node 1 은 리더가되어야하고 Node 7 은 라우터에 도달 할 수 없으므로 분리되어야합니다.

시뮬레이션 지우기 (모든 노드 삭제)

OTNS-Web 통해 모든 노드를 삭제하여 시뮬레이션을 지울 수 있습니다.

딸깍 하는 소리 89618191721e79a0.png Action Bar. 버튼 Action Bar. 모든 노드가 한 번에 사라집니다.

계속하기 전에 ...

이 튜토리얼을 계속할 수 있도록 시뮬레이션에 노드를 직접 추가하십시오.

OTNS-CLI 는 개발자가 노드의 상태를 진단 할 수 있도록 노드와 쉽게 상호 작용할 수있는 노드 컨텍스트 모드를 제공합니다.

노드 컨텍스트 모드 시작

노드 1의 노드 컨텍스트를 입력하십시오.

> node 1
Done
node 1>

CLI 프롬프트가 node 1> 변경되어 현재 노드 컨텍스트를 나타냅니다. 노드와 직접 상호 작용하는 것처럼 노드에서 실행할 OpenThread CLI 명령 을 입력 할 수 있습니다.

노드 컨텍스트에서 명령 실행

node 1> state
leader
Done
node 1> channel
11
Done
node 1> panid
0xface
Done
node 1> networkname
OpenThread
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:d800
fdde:ad00:beef:0:2175:8a67:1000:6352
fe80:0:0:0:2075:82c2:e9e9:781d
Done

다른 노드 컨텍스트로 전환

node 1> node 2
Done
node 2> 

노드 컨텍스트 종료

node 1> exit
Done
>

축하합니다. 첫 번째 OTNS 시뮬레이션을 성공적으로 실행했습니다!

OTNS와 그 종속성을 설치하는 방법을 배웠습니다. OTNS 용 OpenThread 를 빌드하고 OpenThread 시뮬레이션 인스턴스로 OTNS 시뮬레이션을 시작했습니다. OTNS-CLIOTNS-Web 통해 다양한 방법으로 시뮬레이션을 조작하는 방법을 배웠습니다.

이제 OTNS가 무엇이며 OTNS를 사용하여 OpenThread 네트워크를 시뮬레이션하는 방법을 알게되었습니다.

무엇 향후 계획?

이 코드 랩 중 일부를 확인하세요 ...

참조 문서