Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

OTNSを使用してスレッドネットワークをシミュレートする

5abd22afa2f2ee9a.png

スレッドとOTNSとは

スレッドは、IPベースの低電力ワイヤレスメッシュネットワーキングプロトコルであり、安全なデバイス間およびデバイス間通信を可能にします。スレッドネットワークは、トポロジの変更に適応して、単一障害点を回避できます。

OpenThread Googleがリリースさは、スレッドのオープンソース実装です。その小さなコードサイズとメモリフットプリントにもかかわらず、OpenThreadはで定義されているすべての機能をサポートスレッド1.1.1仕様

OpenThreadネットワークシミュレータ(OTNS)は、POSIXプラットフォーム上でシミュレートOpenThreadノードを実行することによってシミュレートスレッドネットワークに使用することができます。 OTNSは、シミュレートされたスレッドネットワークを視覚化および操作するための使いやすいWebインターフェイス(OTNS-Web)を提供します。

あなたが学ぶこと

  • OTNSとその依存関係をインストールする
  • OTNS用のOpenThreadをビルドする
  • OTNS-Webでノードを追加/移動/削除する方法
  • OTNS-Webの他の便利な機能を使用してネットワークシミュレーションを操作する
  • OpenThreadの単一障害点がないことを確認します

このコードラボは、OTNS-CLIとOTNS-Webに焦点を当てています。 Pythonスクリプトなど、OTNSの他の機能については説明していません。

必要なもの

  • Linuxx86_64またはMacOS。
  • Gitの
  • 1.11+を移動します
  • ウェブブラウザ。 OTNS-Webは、シミュレーションを表示するためにWebブラウザを使用します。
  • プライマースレッド。このCodelabで教えられていることを理解するには、Threadの基本的な概念を知る必要があります。

Goをインストールする

OTNSをビルドするには、Go1.11以降が必要です。

  1. 行くをインストールhttps://golang.org/dl/
  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

あなたは、入力Aのパスワードを要求される場合がありますsudo

otnsをインストールする

インストールotnsする$GOPATH/bin

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

もしレッツ・チェックotns正しくインストールされています

  1. ファイル名を指定して実行which otnsかどうかを確認するためにotns実行可能ファイルが検索可能である$PATH.
  2. 場合otnsコマンドが見つからない、あなたが追加したことを確認し$(go env GOPATH)/bin$PATH.

GitHubからOpenThreadコードを取得します

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

OpenThreadを構築OTNS=1

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

あなたにはOpenThread実行可能ファイルを見つけることができoutputディレクトリ:

Linux

$ 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 ()とネットワークの可視化と管理のためのWebブラウザを起動OTNS-Web ):

a0e05178d66929b1.png

OTNS-Webの空白のページしか表示されない場合は、ブラウザでWebGLが有効になっていない可能性があります。参照してくださいhttps://superuser.com/a/836833のWebGLを有効にする方法について。

次のセクションでは、あなたはを通してOTNSシミュレーションを管理するために学ぶしようとしているOTNS-CLIおよびOTNS-Web

OTNS-CLI

OTNS-CLI OTNSシミュレーションを管理するためのコマンドラインインタフェース(CLI)を提供します。

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

あなたはを通してコマンドを入力することができますOTNS-CLI 。参照してくださいOTNS CLIリファレンスコマンドの完全なリストについて。心配しないでください。このCodelabではこれらのコマンドのいくつかのみを使用します。

OTNS-Web

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

ノードが1つのパーティションにマージされるまで数秒待ちます。あなたには、ノードが表示されるはずですOTNS-WEB

3ee67903c01aa612.png

でノードを追加OTNS-Web

また、経由ノードを追加することができますOTNS-Web 。クリックしてNew RouterのボタンAction Bar 。あなたはノードが右の上に作成されて表示されるはずNew Routerボタン。あなたがして作成リーダー近くにノードをドラッグしてOTNS-CLI 。最終的には、すべてのノードが1つのパーティションにマージされます。

420258bb92561146.png

また、アクションバーの[FED]、[MED]、および[SED]ボタンをクリックして、他のタイプのノードを作成します。それらを既存のノードの近くの位置にドラッグして、そのスレッドネットワークに接続します。

fe15d6f9726a099e.png

これで、多くのノードを含む1つのパーティションのスレッドネットワークが作成されました。次のセクションでは、シミュレーションの速度を調整して、シミュレーションの実行速度を上げます。

現在、シミュレーションがで実行されている必要があり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スピードまでのボタンが到達したMAXf5f460b2586d299b.png

シミュレーションを遅くする

をクリックすると、シミュレーションの速度を落とすことができます。 31cca8d5b52fa900.pngボタン。

シミュレーションを一時停止します

クリック46cc2088c9aa7ab6.png実行中にシミュレーションを一時停止するボタン。ボタンがに変更されますce25eda3496ffcd4.png

シミュレーションを再開します

クリックce25eda3496ffcd4.png一時停止したときにシミュレーションを再開するボタン。ボタンはに戻ります46cc2088c9aa7ab6.png

スピードをシミュレート設定し10X

時間を節約するために、

OTNS-CLIにシミュレートする速度を調整します

10Xように、我々ははるかに高速ネットワークのトポロジ変化を観察することができること。

> speed 10
Done

これで、シミュレーションには2つのルーター(六角形)と多くの子が含まれ、10倍の速度で実行されるはずです。

2つのルーターの現在のリーダー(赤い境界線)を見つけ、シングルクリックして選択します。

8c6a2e191cdae0c7.png

ラジオを消す

クリック7ca085f470491dd4.pngアクションバーのボタンをクリックして、リーダーノードの無線をオフにします。

a3bf58d9d125f95f.png

リーダーは、ラジオをオフにするとメッセージを送受信できなくなります。

他のルーターが新しいリーダーになるまで約12秒(シミュレーション時間では120秒)待ちます。

e3d32f85c4a1b990.png

スレッドネットワークは、新しいリーダーで新しいパーティションを形成することにより、リーダーの障害から自動的に回復します。新しいパーティションにも新しいパーティションの色があります。

ラジオをオンにする

無線がオフになっているリーダーを選択します。クリック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を元の場所に戻します。 2つのパーティションを1つのパーティションにマージして戻す必要があります。

9ba305c4c5a5f892.png

通じ削除ノードOTNS-CLI

ノード8を削除します。

> del 8
Done

ノード8はシミュレーションから消えるはずです:

18156770d9f8bf83.png

通じ削除ノードOTNS-Web

ノード5を選択し、 7ff6afd565f4eafc.png上のボタンAction Barのノード5を削除します:

d4079cceea0105f0.png

Node 1リーダーとなるべきNode 7それがどのルータに到達することはできませんので、必ずデタッチします。

シミュレーションをクリアする(すべてのノードを削除する)

あなたは、を介してすべてのノードを削除することで、シミュレーションをクリアすることができOTNS-Web

クリック89618191721e79a0.png上のボタン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とその依存関係をインストールする方法を学びました。あなたは建てOpenThreadをOTNSためとOpenThreadシミュレーションインスタンスとOTNSシミュレーションを開始しました。あなたは両方を通じて、さまざまな方法でシミュレーションを操作する方法を学んできたOTNS-CLIおよびOTNS-Web

これで、OTNSとは何か、およびOTNSを使用してOpenThreadネットワークをシミュレートする方法がわかりました。

次は何ですか?

これらのコードラボのいくつかをチェックしてください...

リファレンスドキュメント