News and Views 2015 Autumn / Vol. 15: 上流設計&組込み

IoTデバイスに求められる組込みソフトウェア要件とRTOSの選択

はじめに

モノのインターネット(IoT: Internet of Things)がさまざまなカンファレンスやセミナーで語られ、展示会などでも多くのソリューションが紹介されるようになりました。接続する「モノ」によってIoT技術の難易度も異なりますが、例えば、多機能プリンタの場合、トナーや用紙の使用量をプリンタのサービス会社がインターネット越しに監視し、完全に消耗する前に宅配で供給するサービスなどは、すでに何年も前から始まっています。一方で、移動体としてのモノ、電池駆動のモノ、需給バランスで変動する価格の自動ネゴシエーションを要するモノなどは、技術的な難度が上がるだけでなく、プロトコルの標準化やインフラ整備などにも依存します。

IoTがもたらすM2M技術難易度の変化

ここで、M2M(Machine to Machine)について見てみましょう。M2M通信を可能にするシステムは、従来は1つのサーバと複数のクライアントでネットワークセグメントを構成し、これを階層的に組み合わせてシステムとしてきました。データ管理はセグメント単位で行われ、基本的に情報は一方向で流れ、セキュリティとしても問題のない専用ネットワークで構成されていれば充分でした。

今、IoTの出現によって、M2Mの世界が大きく変貌を遂げようとしています。従来のM2Mシステムとは異なり、データを双方向でやり取りし、その大部分において公衆ネットワークを利用します。ホームエリアネットワークは、スマートグリッドにつながることにより、大規模な省エネ効果が期待されている分野となっています。また自動車同士は、例えそれが他メーカーの自動車であっても、通信し合うことによって事故防止につなげられます。また、遠隔地にいる患者の検診結果をリアルタイムで送受信することにより、コスト効率の良い医療を受けることができるようになります。このような中で、IoTデバイスはサーバやゲートウェイに対するクライアントではなく、決められたサーバが存在しないIoTネットワークに自律的に参加し、情報とサービスを交換します。

このようなネットワーク接続に対応するためのソフトウェアは、より複雑になることが容易に予測されます。IoTが本来の威力を発揮するには、人手を煩わせることなく接続を確立して通信できる安価なデバイスが求められます。要件としては、おおよそ以下のようになります。

  • IPアドレスの解決はネットワークを管理するサーバを介さず、既にネットワークに接続済みのデバイスと新たに参加したデバイスによって行う
  • ネットワークに参加したら、自らが提供可能なサービスを通知し、既に接続済みの他のデバイスが提供可能なサービス情報を得る

このようにサーバが存在しないネットワークでは、自らがサーバとなり、またクライアントとなる両者の役割を果たすことが可能なプロトコルが必要となります。

産業や自動車、医療など、市場によってM2Mデバイスのセキュリティ要件は異なりますが、データの保全性を維持するといった意味合いから求められる要件や一般原則は、おおよそ以下のようになります。

  • IoTデバイスが受動となる場合、データトランザクション開始前に認証を行い、データ転送の開始前に暗号化を行う
  • デバイスはIPパケット洪水に耐えられなくてはならない
  • デバイスの多くは電池駆動の遠隔設置となるため、ハードウェアが装備するローパワー機能を活用し、ユースケースに応じたパワーマネジメントが必要となる

図1. マルチキャスト通信図1. マルチキャスト通信

IoTの接続性とセキュリティ

IoTデバイスの接続性は、ネットワークへの参加、ネットワークからの解除など、デバイスの動的特性をサポートする必要があります。例えば、マルチキャストのDNS(mDNS)とそのサービス検出であるDNS-SDなどは、ゼロコンフィギュレーションで自律的なネットワーク参加を可能にします(図1.)。サーバがない状態では、マルチキャストでサービスを送信すると同時に、DNS-SDにより他のデバイスのサービスやリソースを検出します。

この他にも、クライアントとサーバが分離され、階層化されたアーキテクチャであるREST(Representational State Transfer)を用いると、IoTデバイスのネットワーク追加/削除が容易に行えます。ただしこの場合、動的にデータの転送パスが変わる際にはプロキシサーバやゲートウェイに近いタイプのノードにキャッシングするなど、システム性能への影響も考慮しなければなりません。

IoTコネクティビティの多くは、前述の通り、公衆のネットワークや無線のWi-Fi、ZigBee、Bluetooth、4Gなどを利用するため、あらゆる脅威に対抗できるセキュリティ対策を設計段階で考慮しておく必要があります。そのためには、以下のポイントに注意を払い、個々のデバイスやIoTシステムが被害を受ける前に、能動的脅威と受動的脅威を検出し無力化します。

  • 暗号化、認証機能を備えたセキュリティプロトコルを実装する
  • データ転送開始前に送信元の認証を行い、データ交換の開始前にその公開鍵やX.509証明書などを用いてデータの送信元を確認する
  • 特にメモリ制約が厳しいデバイスでは、X.509証明書の検証に、OCSP(Online Certificate Status Protocol)などを用いてクライアント上のリソースを削減する
  • TLS(Transport Layer Security)やOpenSSL(Open Secure Sockets Layer)を用いて、転送前にデータを暗号化する

暗号を用いると情報漏洩は防げるものの、データ改ざんは防ぐことができません。そのため、メッセージ認証コード(Message Authentication Code)を発生するハッシュ関数も必要になってきます。

IoTデバイスのパワーマネジメント

前出の通り、IoTデバイスでは、ハードウェアが装備するローパワー機能を活用し、ユースケースのシナリオに応じたパワーマネジメントをしなくてはなりません。そこでハードウェア側では、クロックゲーティング、パワーゲーティング、CPUアイドルモード、スリープモード、スタンバイ、DVFS(動的電圧周波数スケーリング)などを設計に盛り込みます。

ここで課題となるのは、ハードウェアに盛り込まれた機能を使うのが、アプリケーション開発を行うソフトウェアエンジニアであるということです。周辺ドライバ、ボードサポートパッケージ、ミドルウェアなどが決定された後でアプリケーション開発が行われるため、プロセッサのローパワー機能を引き出せるようにシステム全体を支えるソフトウェアが設計されていなければなりません。組込みOSそのものに、半導体のローパワー機能をサポートし直感的で使いやすいAPIを持つフレームワークが必要になります。

IoTデバイス基盤を支えるRTOSフレームワーク

メンター・グラフィックスのNucleus RTOSは、今まで触れてきたようなIoTの最新の接続性やセキュリティ、ローパワーなどへのソリューションをフレームワークとして提供しています。Nucleusは、IoT/M2Mデバイスの要件に対応した数キロバイトのマイクロカーネルベースのRTOSです。正確なリアルタイム性があり、幅広いネットワークプロトコルとセキュリティに対応し、パワーマネジメント機能も備えています。さらに、MCUをベースとしたデバイスの厳しいメモリ制限に向けて最適化されています。

図2. Nucleus RTOSの階層別サービス図2. Nucleus RTOSの階層別サービス
図3. Nucleus RTOSのパワーマネジメント図3. Nucleus RTOSのパワーマネジメント

またNucleusは、広範囲にわたる接続オプション(Wi-Fi、Bluetooth、Bluetooth Low Energy(BLE)、IPv4/IPv6をベースにしたネットワークのUSB 2.0/3.0)をサポートしています。モジュラー構造になっており要件に合わせて必要なプロトコルの追加が可能です。

セキュリティ面では、エンドツーエンドのセキュリティオプションをサポートし、保持データ、転送中のデータを保護します。保持データは、暗号化やパスワードにより保護します。データ転送時のセキュリティは、AES-256、3DES、DES、RC4ほか多数の暗号機能オプションが付いたTLS/SSLを用いて確保します。OCSP認証機能とハッシュ関数もサポートしています。

ネットワーキング面では、IPv4、IPv6に加え、50種類以上の通信プロトコルに対応しています。前出のmDNSとDNS-SDなどを使うZeroconfもサポートしています。

図2.にNucleus RTOSのサービス全容を示します。

パワーマネジメント面では、図3.に示す通り、ハードウェアが提供するさまざまなローパワー機能をAPIとして直接的に使用できるよう実装されています。休止状態やスタンバイモードに遷移するような複雑な動きをサポートするために、Nucleusには周辺機器を安全に切り離し、コードを不揮発メモリに移し、デバイスの動作モードを切り替えるといった一連の処理を行うフレームワークが備わっています。

まとめ

IoTデバイスとしての可能性を最大限に引き出そうと思うと、それだけソフトウェアの複雑さが大きな課題となります。設計者は、社内開発コードや商用コード、オープンソースのさまざまなコードを統合してIoTデバイスを開発するため、数多くの課題が発生し、開発上のリスクも伴います。こうした中、コスト効率の良いIoTデバイスの需要が高まっており、セキュアな接続性を持ち、電力効率に優れたデバイスというのは、競争上不可欠な要素となります。Nucleus RTOSはIoTデバイス要件をすべて満たしており、導入すると市場投入を早めるだけでなく、本来差別化要素となるべきアプリケーションに貴重なエンジニアリングリソースを集中させることが可能になります。