Wind River Blog Network 翻訳版
本サイトでは、Wind River Blog Networkの一部を翻訳し公開しております。

July 24, 2017

TSN(Time-Sensitive Networking):インダストリアルIoT(IIoT)の実現に向けた高信頼通信


投稿者:Ka Kay Achacoso

最近、産業分野の製造現場では、複数のロボットアーム、カメラ、ポジションセンサー、コントローラが1つのネットワークに接続されている場合があります。カメラやセンサーは、コントローラにデータを送信します。コントローラは、ロボットアームにコマンドを送信します。コントローラから送られたコマンドが、10分の1秒遅れてロボットアームに届いたらどうなるでしょうか。あるいは、センサーのデータがコントローラに届いていないとしたら?ロボットアームが座標をオーバーしたり、コントローラが欠落したデータに基づいて、間違った決定を行うかもしれません。

最新の自動車に装備された車線維持/高速道路運転支援システムには、GPSセンサー、画像認識システム付きカメラ、レーダー/LiDARセンサー、操舵・加速・制動システムを制御する中央コントローラなどが搭載されています。中央コントローラは、各種センサーからの入力に基づいて、センサーフュージョンの計算を実行します。適切な車両コマンドを提供するために、車両の現在位置や周囲の対象物との関係を高い精度で算出します。データのサンプリング時刻が同一の各種センサーデータが、ばらばらの時間にコントローラに到着したらどうなるでしょう。計算にミスが生じるかもしれません。ことによると、操舵・制動・加速コマンドのエラーにつながり、故障や衝突を引き起こすかもしれません。

今日の競争の激しい環境では、ビジネスの非効率は、倒産の原因になりかねません。信頼性の低い通信によって引き起こされる機能安全の問題は、ロボットが人間と作業するケースのように、人命を脅かす恐れさえあります。石油掘削装置が故障した場合など、環境災害の原因になることもあります。

CANやProfibusといった産業/自動車用途のネットワークは、数十年にわたって、ネットワーク化されたデバイスの堅牢性と信頼性のニーズに対処してきた実績があります。しかし、これらの隔離されたネットワークは、専用の配線を必要とします。メンテナンスが必要になるほか、車両重量の増加につながりかねず、今日の用途には適さなくなっています。

産業/自動車用途の高信頼ネットワークは、100%のコマンドとデータが時間通りに到達する必要があります。コマンドやデータを含んだ各メッセージは、数ミリ秒以内に宛先に到着しなければなりません。それによって、センサー入力から始まり、センサーデータの処理、データのコントローラへの送信、コントローラの決定処理、コマンドの送信、コマンドの受信、コマンドの処理、アクションの実行と続く一連のイベント全体を、数分の1秒で実行できるのです。システム内にある多数のセンサーやコントローラ、あるいは外部のメッセージから受ける干渉は、致命的になりかねません。

TSN(Time-Sensitive Networking)は、産業/自動車用途の重要システムに適した信頼性の高いネットワークを、既存のイーサネットハードウェアインフラを使用して構築します。TSNを使うと、製造現場でデバイスを接続するのに、既存のITハードウェアを利用できます。自動車用途では、車両の重い配線をすべて軽くて細いイーサネットケーブルに交換できるほか、緊急ブレーキシステムのような重要デバイスや、故障診断装置のような非重要デバイスなど、すべてのデバイスを同一のネットワークにつなぐことが可能です。

スケジュールされたトラフィックを実現するTSN IEEE802.1Qbvを使用した製造現場システム例
TSNにはいくつかの規格があります。100%のネットワークパケットが時間通りに到着することを保証するために、IEEE 802.1Qbv規格はスケジュールされたトラフィックシステムを規定しています。ここでは、VxWorksを使った、スケジュールされたトラフィックの使用例を示します。

図1に示すような製造現場システムを考えてみましょう。この製造設備には、産業用コントローラが2台、ロボットアームが3台、コンベヤベルトが4台、センサー機器が15個あります。産業用コントローラとユーザの対話用に、主制御コンピュータが接続されています。オペレータとの対話用に、副キオスクがあります。リモートユーザが主制御コンピュータにアクセスできるように、ゲートウェイも接続されています。システムの周辺には、すべてのデバイスを接続するためのスイッチが4つ点在しています。

図1:製造現場ネットワークトポロジ

それでは、メッセージのクリティカルなフローを見てみましょう。下図(図2)に、時間通りに到着する必要のあるメッセージだけを示します。クリティカルではない他のフロー(コントローラのオペレータ構成や、ゲートウェイに送信される工場の統計データなど)は、1ミリ秒以下のデッドラインがなく、TSNのスケジュールされたトラフィックには加わっていません。

図2:製造現場のクリティカルなフロー

単純化したトポロジ

クリティカルなフローのトポロジと識別が、TSN実装の最初のステップです。デモ用として、ここではトポロジを単純化して検討します。デモの構成は、スイッチ2台、産業用コントローラ1台、ロボットアーム1台です。テスト用に、非クリティカルなデバイスを2つ用意しています。

図3:単純化した製造現場ネットワークトポロジ

単純化した製造現場を表現するのに使用した実際のハードウェアは、TSN機能を備えたシスコ製IE4000スイッチ2台と、インテル製I210ネットワークコントローラを搭載したインテルCore i7ボード2枚(産業用コントローラとロボットアームに相当)です。非クリティカルなデバイスは、2台のLinuxノートPCです。

下図(図4)に、単純化したトポロジを示します。赤い矢印が示しているのは、定義された単一のクリティカルなフローです。産業用コントローラからロボットアームに送られる、クリティカルなコマンドを表しています。

図4:単純化した製造現場のクリティカルフロー

トポロジ的に、2台のスイッチ間の単一の経路がトラフィックのボトルネックになります。

このデモでは、産業用コントローラに相当するボードをVxWorksトーカーと呼び、ロボットアームをVxWorksリスナーと呼びます。VxWorksトーカーは、1KBのパケットをVxWorksリスナーに毎秒100回送信します。まず、TSNを使わない通常のイーサネットパケットとして、パケットを送信します。

図5:VxWorksリスナーコンソールの出力

interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0

図5のVxWorksリスナーコンソールのメッセージは、5秒間隔で受信したバイト数を出力します。VxWorksトーカーは5秒ごとに500000バイトを送信しているので、VxWorksリスナーがパケットを100%受信しているのがわかります。この状態では、通常の非TSNネットワークで問題ありません。

今度は、LinuxノートPCを使用して、システムへのネットワークトラフィックを混雑させてみます。ネットワーク帯域を測定するためのiperf3アプリケーションで、大量のトラフィックをネットワークに送りつけます。

図6:VxWorksリスナーコンソールの出力。トラフィックを混雑させた非TSNトラフィックの場合

interrupt: 456000 bytes in 5 seconds. Out of sequence: 40
interrupt: 474000 bytes in 5 seconds. Out of sequence: 25
interrupt: 466000 bytes in 5 seconds. Out of sequence: 33
interrupt: 459000 bytes in 5 seconds. Out of sequence: 36

VxWorksリスナー(図6)を見ると、500000バイトのうち数メッセージが受信されませんでした。TSNフローを使用しない場合、トラフィックが混雑すると、VxWorksトーカーとVxWorksリスナー間のメッセージに割り込みが生じます。メッセージの6~8%ぐらいが取りこぼされています。自動製造アプリケーションや自動車運転支援アプリケーションでは、トラフィックの欠落は許されません。

スケジュールされたトラフィックを追加

クリティカルなメッセージフローの割り込みを防ぐために、スケジュールされたトラフィックを使用します。シスコIE4000スイッチ2台と、インテルI210ネットワークコントローラを搭載したVxWorksデバイスは、スケジュールされたトラフィックでの動作に完全対応しています。

最初に、すべてのTSNエンドポイント(VxWorksトーカーとVxWorksリスナー)とTSNスイッチ(シスコスイッチ2台)で、マイクロ秒以下でクロックを同期する必要があります。エンドポイントとスイッチに搭載された別のTSN規格PTP(Precision Time Protocol)により、この同期を行います。以前のブログ記事で、その仕組みの詳細とデモを紹介しています。

次に、すべてのTSNエンドポイントとTSNスイッチで共有する必要のある、システム規模のスケジュールをシステムインテグレータが作成します。スケジュールは、トポロジとクリティカルフローに大きく依存します。

前述の単純化したデモシステムでは、1つのフローが定義されています。フローはVxWorksトーカーで発生し、スイッチ1、スイッチ2、VxWorksリスナーの順に送信されます。この1本の流れがクリティカルフローです。このデモでは、Critical-Flow-1と呼びます。

想定されるトラフィックのスケジュールを図7に示します。1ミリ秒ごとに、VxWorksトーカーは69~89マイクロ秒の間に、Critical-Flow-1パケットを送信することができます。スイッチ1は、VxWorksトーカーからのCritical-Flow-1に属するパケットだけを受信します。スイッチ1は146~166マイクロ秒の間に、Critical-Flow-1パケットをスイッチ2に送信します。スイッチ2は146~166マイクロ秒の間に、スイッチ1からのCritical-Flow-1パケットだけを受信します。スイッチ2は425~445マイクロ秒の間に、Critical-Flow-1パケットだけをVxWorksトーカーに送信します。

図7:IEEE 802.1Qbvフローの想定スケジュール

スケジュールされたトラフィックをクリティカルフローに適用して、もう一度、iperf3 Linuxアプリケーションを使ってネットワークを混雑させるデモを実行します。

図8:VxWorksリスナーコンソールの出力。トラフィックを混雑させたTSNトラフィックの場合

interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0
interrupt: 500000 bytes in 5 seconds. Out of sequence: 0

TSNを使うと、トラフィックを混雑させても、すべてのパケットが時間通りにVxWorksリスナーに到達します。パケットの欠落はありません。
この単純化したデモは、実際のシステムに拡張することが可能です。10、20、30のフローが定義され、スイッチを追加した複雑なリング型トポロジで、より多くのトーカーやリスナーのエンドポイントがスイッチに接続されているシステムにも対応できます。

TSNの要件

スケジュールされたトラフィックは、システムのすべてのクリティカルノード間で共有されるスケジュールに依存します。また、スケジュールに従った動作ができるのは、1マイクロ秒以下レベルのクロック同期と、ハードウェアによる時間制限のあるキューでの送信が可能な場合です。ハードウェアによるクロック同期機能と時間制限キュー機能を備えたネットワークコントローラでなければ、TSNで動作できません。このデモで使用したインテルI210ネットワークコントローラは、クロック同期用にハードウェアタイムスタンプ機能を備えています。時間制限のある送信機能用のQAVレジスタも搭載しています。

エンドポイントのソフトウェアについては、TSNトーカーがIEEE 802.1Qbvフローのスケジュールを受け取り、スケジュールに従って送信するようにネットワークコントローラを設定する方法を知っている必要があります。その機能はVxWorksが提供します。

クリティカルフローを転送するすべてのスイッチが、TSN対応であることが必要です。それにより、スイッチはIEEE802.1Qbvフロースケジュールに従って、TSNトラフィックを最優先でキューに入れることができます。このデモで使用したシスコIE4000スイッチには、この機能があります。

スケジュールの作成

デモのスケジュールは、シスコがIE4000スイッチ用に提供しているCentralized Network Configuration(CNC)ソフトウェアツールで作成しました。このツールは、入力として、ネットワークトポロジ、フローの要件(トーカー/リスナーエンドポイント、時間の制約条件、パケットのサイズなど)を受け取ります。スケジューラがスケジュールを計算し、CNCがスイッチにスケジュールを配布します。

TSNに準拠した規格には、スケジュールへの入出力を自動化する仕組みが別に用意されています。自動トポロジ検出、自動フロー要件入力、トラフィックスケジュールのスイッチやエンドポイントへの自動配信などが可能です。

IEEE 802.1Qbvの詳細をご覧ください。VxWorksについては、ウインドリバーのこちらのサイトをご覧ください。シスコのTSNスイッチやTSNの他の機能については、こちらでご確認いただけます。

ウインドリバーとインテルは、複数のベンダとのTSNの相互運用性を確保するために、Industrial Internet Consortium(IIC)のTSNテストベッドに参加しています。詳細については、こちらをご覧ください。