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

視覚化によるスレッドネットワークのテスト

5abd22afa2f2ee9a.png

Thread、OpenThread、OTNS、Silkとは何ですか?

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

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

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

シルクは、 OpenThread機能、機能、および実際のデバイスとシステムの性能を検証するための完全に自動化されたテスト・プラットフォームです。

あなたが学ぶこと

  • OpenThreadの機能検証フレームワーク:Silk
  • OTNS機能を有効にして実際のデバイス用のOpenThreadを構築する
  • OTNS-Webインターフェイスを使用して、Silkテストケースの実行によって形成されたスレッドネットワークのステータスを監視します

このコードラボは、OTNSでのSilkの使用に焦点を当てています。 SilkおよびOTNSの他の機能はカバーされていません。

必要なもの

ハードウェア:

  • 6ノルディックセミコンダクターnRF52840開発ボード
  • ボードを接続するための6本のUSB-Micro-USBケーブル
  • USBハブ

ソフトウェア:

  • Linuxx86_64。
  • Gitの
  • 1.11+を移動します
  • ウェブブラウザ。 OTNS-Webは、シミュレーションを表示するためにWebブラウザを使用します。

前提条件:

以前の基本的なCodelabを完了します

パッケージの前提条件を確認する

すべての前提条件が満たされていることを確認しましょう。

  1. ファイル名を指定して実行which otnsかどうかを確認するためにotns実行可能ファイルが検索可能である$PATH
  2. ファイル名を指定して実行which wpantundを確認するwpantund可能です。
  3. ARM GNUツールチェーン、J-Linkの、と確認してくださいnrfjprogパッケージがすべて用意されています。
  4. 必ずOpenThreadバイナリが実行して、行うことができることを確認make -f examples/Makefile-nrf52840openthreadフォルダ。

注:設定のガイダンスにリンクドキュメンテーションを参照してください。前提条件#1からですOTNS使用してシミュレートスレッドのネットワークなどがあるからビルドnRF52840ボードとOpenThreadとスレッドのネットワーク

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-Linkの製品のために。

LayoutCenterLayoutRadiusのフィールド[DEFAULT]デバイスは、ウェブUI上で可視化されたときセクションは、レイアウトの形状を規定します。ここに示されている値にそれらを設定することは、良い出発点になる可能性があります。

その後、各テストデバイスのセクションを定義し、関連するハードウェア情報を提供します。

イメージの構築と点滅

デフォルトでは、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 。その後、nRFUSBポートを介してすべてのボードをホストマシンに接続します。同じセットのUSB-Micro-USBケーブルをJ-Linkポートから切断し、nRF52840開発ボードのnRFUSBポートに接続できます。したがって、これらの6本のケーブルだけでテストの実行を実行できます。手間を省くために、12本のケーブルを使用して両方のポートに接続します。

デフォルトのパラメータでOTNSを実行すると、ユーザーはスレッドネットワークをシミュレートできます。実際の物理ネットワークの視覚化ツールとして使用するには、次のコマンドで実行します。

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

これらの引数ではなく、複数の実行中の、スレッドのネットワークを可視化する方法を説明しgRPCとUDPメッセージを期待するOTNSを教えot-cliネットワークをシミュレートするためのプロセスを。ブラウザは、空のキャンバスで視覚化ページを自動的に開く必要があります。

4dd5b41bf7e71334.png

Silkは、OpenThreadの機能、機能、およびシステムパフォーマンスを実際のデバイスで検証するための完全に自動化されたテストプラットフォームです。プロジェクト内の命令READMEには、それを使用する方法について説明します。

silk_run_test.pyにあるファイルsilk/unit_testsあなたにヘッドスタートを与えます。 Silkは、テストケースの実行時にOTNSサポートを提供します。 OTNSリアルモードサービスがすでにローカルで実行されているので、我々は単純に変更する必要がありsilk_run_test.py出力ログファイル、入力テストスクリプト、およびのための所望の位置でファイルをhwconfig.iniファイル。 -s localhost引数はにOTNSメッセージを送信するためにシルクを伝えlocalhost

例えば、1という名前のテストを実行することができますot_test_form_network.pyに以下の修正を使用してsilk_run_test.pyファイルを。 /opt/openthread_test/ログ出力および設定ファイルのデフォルトのパスシルク用途ですが、任意のパスを使用することができます。

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 WebUIに表示されます。

ee443b66e0a6620b.png

左上隅には、視覚化統計、OTバージョン、およびテストタイトルが表示されます。左下隅には、右側に表示されているログウィンドウのコントロールがあります。最初にノードが追加されますが、ネットワークは形成されません。テストが進むにつれて、各ノードのモードと役割が変化し、リンクが形成されます。

5c38e2c72519e620.png

おめでとうございます。物理スレッドデバイスでSilkテストを正常に実行し、OTNSを使用して視覚化しました。

OTNSをサポートするファームウェアでフラッシュされた開発ボードを使用してSilkテストを実行しました。ボードは、それらすべてを監視および集約するSilkサーバーにステータスを報告し、他のテスト情報とともにOTNSサービスに送信します。リアルモードで実行されているOTNSは、Webインターフェイス上のスレッドネットワークを視覚化します。

次は何ですか?

Silkパッケージに含まれている他のOpenThreadテストケースを実行してみてください。

参考文献

チェックアウトopenthread.ioシルクをOpenThread資源の多様性のために。

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