Get in Touch
  • If you’re interested in a Wind River product, simply answer a few questions and we’ll get in touch right away.
  • If you’d like to speak with someone immediately, call our number for sales inquiries below.

    Toll-free: 800-545-WIND (800-545-9463)

モノのインターネット(IoT)の自動テスト – シミュレーションの活用


投稿者:Jakob Engblom, 2014/11/13

モノのインターネット(IoT)のアプリケーションやシステムの開発、テストを行うというのは大変な作業です。理由は、システムがとにかく大きいからです。多数の装置で構成され、大きな空間が必要です。大きければ大きいほど、ソフトウェア開発ラボでテストするのが難しくなります。100台、1,000台の低消費電力センサーノードで稼働するソフトウェアを開発する場合、日常のワークフローでそのソフトウェアをテストするには、現実的にどうすればよいのでしょうか。1つの方法として、システムのシミュレーションがあります。

現在構築されているIoTシステムは、概して以下のパターンに従っています。

数百台のセンサーノードが無線メッシュネットワークを構成し、1台または数台のより高機能なゲートウェイノード(ウインドリバーのソフトウェアで作動可能)に接続されます。ゲートウェイノードはインターネットに接続されるほか、相互に接続されます。信頼性の高いシステムを作るには、通常、冗長化が必要です。ゲートウェイは無線ネットワークを外部から保護するとともに、センサーノードからデータを収集し、処理や保存のためにサーバに転送します。また、ゲートウェイから無線ネットワークに、コントロールメッセージが頻繁に送信されます。

このようなシステムの実験やテストを実環境でセットアップするには、どうすればよいでしょうか。たとえば、無線ノードを広い領域に散らすように設置して、相互に通信できないノードが生じるようにしたいとします。それには、建物または構内全体を「ラボ」として使わなければなりません。このようなネットワークをセットアップして管理するのは、大変な作業です。あっという間に人件費がノード自体の費用を上回ってしまいます。小さなノードをオフィスビル中の備品や天井、壁に取り付けておくのは、同僚や他の開発グループに不評かもしれないし、他の器材や備品の清掃や移動時に事故が多発しかねません。

私が博士課程の学生だったとき、メッシュネットワークに取り組んでいた研究グループが、この問題を賢く解決していました。彼らは教えていた学生たちに無償のノートパソコン(当時は非常に珍しいものでした)を持たせて、実験用のメッシュネットワークソフトウェアスタックを動作させたのです。こうすることで、相当な数のノードがキャンパス全体に散らばり、ちょうどよいテストセットアップを用意できました。この解決法は、今のプロフェッショナルな業界には通用しそうにありません。しかし、シミュレーションなら可能です。

シミュレータで大規模ネットワークをセットアップするのは非常に簡単です。ノードを仮想的にデプロイし、必要な仮想空間に拡散するプログラムを書くだけです。それから、ノード間の無線の到達可能性をモデリングします(以下に詳述)。手作業で数百もの物理的な装置を扱い、保守する代わりに、スクリプトを1つ管理するだけです。一般的に、シミュレートされたシステムには、無線ノードとゲートウェイ(ゲートウェイも無線メッシュネットワークの一部なので)が含まれます。サーバやコマンドセンターが含まれる場合もあります。しかし通常は、サーバは実環境に残し、Simicsの実環境ネットワーク機能を使って接続するほうが適切です。完成したSimicsのシステムセットアップは、次のようになります。

メッシュネットワーク内の各センサーノードは、完全にシミュレートされたノードです。ゲートウェイも同様です。Simicsがシミュレートするハードウェアには、プロセッサ、メモリ、タイマ、LED、無線装置が搭載されています。多くの場合、シリアルポートがあって、無線装置とセンサーが接続されており、受信したデータはネットワークを経由して転送されます。シミュレートされたハードウェア上では、実際の組込みOSとターゲットアプリケーションを実行します。実際のハードウェア上で動作するのと同じバイナリが使用されます。これにより、メッシュネットワークの自己組織化アルゴリズム、コード読み取りセンサーと無線通信システムの統合、ノードスリープによる省電力化の効果など、システム全体のテストが可能になります。Simicsのバックドアを使えば迅速にコードをノードにデプロイできます。少なくともSimicsでは、ノード上のフラッシュメモリに保存されたソフトウェアイメージを変更するのは、非常に簡単です。

ネットワーク全体がSimics内にカプセル化されているので、並列テストや自動テストを適用できます(以前のブログ記事に書いたとおりです)。サーバセットを使えば、複数の仮想IoTネットワークを並行実行して、それぞれに別のシナリオやパラメータセットを設定できます。通常IoTアプリケーションのテストに利用できる物理的ネットワークは、わずかな数です(1つのことも珍しくありません)が、Simicsなら、多数のネットワークを追加できます。

問題が発見されたら、セッションチェックポイントにカプセル化して、分析と修正のために開発チームに戻すことができます。この流れについては、連続的なインテグレーションとSimicsについて書いた以前のブログ記事で説明しました。これは1台のマシンの場合と同様に、数百のマシンから構成されるネットワークにも当てはまります。システムをSimics内にカプセル化してしまえば、チェックポイントを利用してテスト結果を戻すことができます。

しかし、数百、数千のノードのシミュレーションは、実際に本当にうまくいくのでしょうか。これまで見てきた限りでは、まったく問題ありません。

IoTのセンサーノードは、デューティサイクルが非常に低いことが少なくありません。センサーは絶え間なく周囲の状況を感知しているわけではなく、定期的に起動しては、サンプルを取り、それを報告します。毎回のサンプル実行には、1秒か数ミリ秒しかかかりません。その後システムは、数分間あるいは数時間アイドル状態になることもあります。こうすることで電力を節約します。電池交換のための修理が不要になり、より長い期間ノードを実環境にデプロイすることが可能です。

このように、システムには大量のアイドル時間があり、このアイドル時間を利用して、シミュレーションをスピードアップできます。Simicsでは以前から、ハイパーシミュレーション(アイドルループの最適化)が採用されています。シミュレータが次のイベントまで、時間をスキップする機能です。アイドル時間を1サイクルずつ再現するのではなく、電源が入っていなかったり、アイドル状態にあるノードで発生する、外部刺激や内部割り込みの次のポイントまでジャンプします。Simicsは「何もしない」ことを非常に高速に実行できます。つまり、アイドル状態が多いシステムは、実時間より何倍も高速にシミュレーションできるわけです。

ハイパーシミュレーションでは、数百のノードをカバーするようにシステムのシミュレーション規模を拡大することと、それを実時間よりも高速に実行することの両方が可能です。したがって、負荷の軽いシステムの長期的な安定性のテストは、実環境で行う場合よりも、Simicsでは格段に高速化されるので、自動化した長期テストを定期的に実施できるようになります。シミュレータ内の時間は変わらない点に注意してください。シミュレータがアイドル部分の実行をスピードアップするだけです。シミュレーションのマシン上で動作するコードからは、ハイパーシミュレーションは見えず、実行のセマンティクスにはまったく影響がありません。再現性が維持されます。

実際に私は、10年ぐらい前にこれをテストしたことがあります。研究プロジェクトとして、アイドル状態が多いセンサーノード1,000台のネットワークをSimicsでセットアップしました。結果は予想を上回るものでした。そのシミュレーションで、ネットワークは実環境より高速に動作したのです。それも、Windows XP32-bitを搭載した、シングルコアのかなり遅めのノートパソコン上でのことです。今なら、64-bitのマルチコアホストとSimicsの並行シミュレータで、桁違いに高速に動作するはずです。テクノロジは前進しています。Simicsもともに進んでいます。

IoTシステムは、ノイズが多く、劣悪な実世界の環境で動作しています。そのため、ネットワーク接続の障害や個々のノードの破損がある場合の堅牢性、フォールトトレランス、信頼性のテストは、IoTシステムを構築するうえで必要なプロセスです。これを実環境で行うのは非常に困難な場合もあります。環境や無線ネットワーク接続をコントロールするのは技術的に難しく、信頼性のあるテストの再現は大変な難問だからです。Simicsなら、以前に何回か説明したように、直接システムに不具合を挿入できます。無線ネットワークの到達可能性を変えることも可能です。Simicsでは、2つのノード間の電波強度に任意の値を設定できます。どのように値を決めるかはユーザの自由なので、実環境での無線の到達可能性に関する専門家に任せることができます。

上図に、到達可能性のシンプルな例を示します。近くにあるノード同士は電波強度が強く、遠く離れたノード間は電波強度が弱くなっています。他のノードから到達できないノードがある場合は、その間の電波強度は0に設定されます。0は到達不可と解釈されます(補足:電波強度の数値はまったく任意の値です。ここでは100を完全、0を到達不可としています)。電波強度のパラメータは、シミュレーションの最中にいつでも変更できます(Simicsのシミュレーションは実行時に任意に変更可能です)。2つのノード間の見通しを列車が横切るといった、実世界の状況の変化や予期しない割り込みのシミュレーションが可能です。

最後に、実環境との干渉、無線の挙動、その他シミュレーションでは取り込めない局面のテストには、物理的なラボが必要です。いつものように、最終的には、出荷する製品をテストし、テストした製品を出荷する必要があります。しかし、その途中で、Simicsのシミュレーションを利用すれば、テスト回数の増加、テストの高速化、リグレッション・テストの自動化、不具合挿入の実行が可能になるほか、コラボレーションやコミュニケーションを強化し、ソフトウェア開発をよりスムーズに進めることができます。

Simicsについての詳細は、こちらを参照してください。

Thank You

Wind River, a wholly owned subsidiary of Intel Corporation (NASDAQ: INTC), is a world leader in embedded and mobile software. Wind River has been pioneering computing inside embedded devices since 1981 and its technology is found in more than 500 million products