- Column
- Industrial IoTが求めるシカケの裏側
自動車の制御/センサーデータ収集におけるペイロード設計【第4回】
ファストデータの遠隔収集の課題解決(その2)
ポイント1:データの総量
まずCANデータのデータフレームの構成について簡単に説明する。CANデータフレームは、標準フォーマットはID部やデータ部などを含め108ビット、拡張フォーマットでは126ビットになる。このデータフォーマットによって、さまざまな制御信号がECU間など、バス構成のネットワーク上で高速にやり取りされる。
CANバスは、用途に応じて系統分けされているケースが多い。3系統程度から8系統などのCANバスを有する車両もある。車両制御信号のデータ収集においては、これらのCANバスからゲートウェイ装置にバイパスする形でデータを取得する。
データ量を伝送する際の秒当たりの総量をビット換算してみる。ここでは拡張フォーマットのCANデータフレームを16バイトとして計算する。さらに、エッジ側でタイムスタンプ(絶対時刻)を付与する場合、1データにつき8バイトが追加されるものとする。これらを踏まえ、車両Aにおける制御バス1~3の3系統のCANバスから出力される秒間データ量をビット換算すると以下のようになる。
(16バイト + 8バイト) × 秒間2000個 × 3系統 × 8ビット = 115万2000ビット(約1Mビット/秒)
ポイント2:回線の平均帯域想定
今回のシナリオでは、モバイル通信機能付きのエッジシステムを利用し、サーバーにデータ伝送する。その際、対象となる計測地域で、どれくらいの帯域を確保できるのかがペイロード設計上重要な指標になる。
日本国内であれば、キャリアのカバレッジから想定して、ほぼLTE(4G)を前提としても問題ない。だが海外においては、その限りではない。本来は実帯域計測などから平均帯域を想定するが、ここでは利用するモバイル回線における2G、3G、4Gのそれぞれの上り帯域を、次のように想定する。
2G上り想定帯域:30K~50Kビット/秒(平均帯域想定=40kビット/秒)
3G上り想定帯域:数100K~2Mビット/秒(平均帯域想定=500kビット/秒)
4G上り想定帯域:数M~十数Mビット/秒(平均帯域想定=5Mビット/秒)
ポイント3:目的に応じたインターネットプロトコルの選択と付与されるヘッダ
目的に応じたインターネットプロトコルと最適なデータ伝送単位を選択する。各ユースケースを実現するうえでは、このプロトコル選択が重要となる。
ユースケース1の場合
リアルタイム性を気にせずデータを収集する場合、一定の時系列でデータをまとめてパッケージングし、HTTPで送信する手法が効率的だ。HTTPは圧縮方式として「gzip」をサポートしている。パッケージング時にgzipによって約30%にまで圧縮できるうえ、一定の塊で送信することで付与されるヘッダ情報などのオーバーヘッドがかかる回数も少なくなる。
一方でデータをまとめた分だけ遅延は確定する。1秒ごとにデータをまとめて送信すれば、総合的な伝送コストを低減できるものの、必ず最低1秒の遅延が発生するため、両者のトレードオフになる。
表示アプリケーションで表示するまでの遅延については、パッケージデータの展開、サーバーサイドでのデータベース等へのストア処理、読み出し処理などのプロセスを要するため、システムの作りによっては数秒程度発生することも否めない。
ユースケース2の場合
データ回収性能に加え、リアルタイム性を確保するパターンは、簡単にはいかない。図1でいえば、車両側(ゲートウェイ)から送信されたCANデータをサーバー経由で表示アプリケーションにリアルタイム性高く到達させるといった場合である。
サーバーを中心とするリアルタイム伝送システムでは、データはエッジ側(データ送出側)からサーバーを介して受信ノード(表示アプリケーション等)に到達する。
この「エッジ → サーバー → 表示アプリケーション」の間のリアルタイム性を高めようとすると、エッジにCANバスから流入する秒間6000個のデータをひとつずつ即座に処理(ストリーム処理)して伝送することになる。いかなるインターネットプロトコルを用いようが、必ず1データずつヘッダ情報などのオーバーヘッドが付与される。
ヘッダ情報は、処理するデータ量が多ければ多いほど、帯域やサーバー処理コストを圧迫する要素になる。たとえば比較的オーバーヘッドが少ないといわれるMQTTでも1ストリームのデータ量が秒間6000個レベルになると相応のオーバーヘッドが発生する。サーバー側でMQTTブローカーを介する場合、データ中継による処理コストにより、少量データでは起きえなかったソフトウェアレイテンシー(遅延)が発生し始める。
さらに、リアルタイム性とデータの回収性能は、インターネットプロトコル上では矛盾した要件といえる。リアルタイム性の高いMQTT をQoS(サービス品質) = 0で利用すれば、データ到達の保証がないため回収性能は期待できない。
これに対し、QoS = 2で利用すれば、ブローカーへの到達保証により回収性能は向上するもののリアルタイム性が低下する。MQTTにおいては基本的に圧縮処理をサポートしていないため、データ伝送効率にも課題がある。