ここから本文です

IoT時代の無線規格「Thread」IPスタックの基礎

EDN Japan 7月5日(火)11時52分配信

■ホームネットワーク向け無線規格「Thread」

 前回、あらゆるデバイスやセンサーがつながる「IoT」時代を迎え、ホームネットワーク向けに注目を集める無線規格「THREAD」の入門編を紹介した。今回からは、Thread Groupが発行しているホワイトペーパーから、Threadの詳細について解説していく。

【Threadのトポロジー例】

 2016年6月時点で発行されているホワイトペーパーは、下記の5つ。今回は、「Thread Overview」から、Threadの概要を振り返るとともに、IPスタックの基礎を紹介する。

<Thread Groupが公開するホワイトペーパー>
1. Thread Overview
2. 6LoWPAN
3. Security & Commissioning
4. Boarder Routers
5. Battery Operated Devices

●概要の振り返り

 Thread は低出力だが、高信頼で経済性に優れたデバイス間通信を規定するオープンな標準規格である。IPベースのネットワークが望まれるコネクテッドホームのアプリケーションに特化して設計され、アプリケーション層にはさまざまなプロトコルが活用できる。Threadスタックとネットワークの特徴を以下に記す。

(1)シンプルなネットワーク Threadネットワークを形成、参加、保守するシンプルなプロトコルにより、システムは自己形成し、経路の問題が発生するごとに適宜解決される。

(2)安全 デバイスは認証を受けない限りThreadネットワークに参加できない。また、全ての通信は暗号化され安全である。

(3)大小さまざまなネットワーク ホームネットワークは規模がさまざまで、デバイスが数個の場合から、数百個単位の数をシームレスに通信を行う場合もある。Threadのネットワーク層は、予想される使用状況に応じて最適な運用をするように設計されている。

(4)通信範囲 メッシュネットワークに参加しているデバイスは、一般的な家をカバーする十分な通信範囲がある。周波数拡散技術が物理層に使われ、優れた耐干渉性能をもたらす。

(5)No Single Point of Failure(単一障害点がないこと) 個々のデバイスでの欠陥や欠損が発生しても、Threadスタックは安全で信頼のある運用がされるように設計されている。

(6)低消費電力 典型的なホストデバイスでは、適切なデューティサイクルを設定することで、単三電池で複数年の駆動が可能となっている。

■IEEE802.15.4

 Threadの標準技術は、2.4GHz帯において250Kビット/秒で動作する「IEEE802.15.4」の物理層とMAC(Media Access Control)層を使用している。具体的には「IEEE802.15.4-2006版」の仕様が、Threadスタックに用いられる。

 802.15.4MAC層が基本的なメッセージングと通信の衝突回避制御に使われる。このMAC層には、CSMA(Carrier Sense Multiple Access:キャリアセンス多重アクセス)メカニズムがデバイスによるチャンネルの空き検知に使われ、リンク層で、隣接デバイスとの通信信頼性を確保するためのACKと再送信を行うことが定義されている。

 MAC層の暗号化と完全性保護が通信に用いられるが、ソフトウェアの上位層で発行および設定された鍵が使われる。これらの信頼できる端末間通信のメカニズムをベースに、ネットワーク層が構築されている。

■No Single Point of Failure

 Threadスタックが動作しているデバイスで構成されたシステムにおいては、いずれのデバイスもシステムを破綻させる唯一の欠損点とはならない。これを、「No Single Point of Failure」と呼ぶ。Threadスタックでは、いくつかのデバイスはシステムの中で特別な機能を持つが、これらのデバイスはThreadネットワーク内で、実行中のコミュニケーションに影響なく置き換わることができるよう設計されている。

 例えば、スリープ機能を持つ子機が親機に通信を要求した際、この親機はその通信の唯一の欠損点となり得る。しかしながら、スリープ機能を持つ子機は、その親機が通信不能となった場合、ユーザーによる機器の操作なくして他の親機の選択をする。

 システムはNo Single Point of Failureに向けて設計されているが、特定のトポロジーではバックアップの確保ができない個のデバイスが存在し得る。例えば、単一のゲートウェイで構成されたシステムが、これにあたる。もしこのゲートウェイが電源を失った場合、代替のゲートウェイに切り替えるすべがない。Threadでは、ボーダールーターがゲートウェイの役割となるが、複数のボーダールーターを持つことができる。

 ルーターとボーダールーターは、Threadネットワークで特定の役割であるリーダーになり得る。リーダーは、ネットワーク内で決定を行う事が求められる。

 例えば、リーダーはルーターのアドレスの割り当てを行い、新しいルーターになるという要求の許可をする。リーダーのデバイスは選挙で選ばれ、リーダーに不都合が生じた場合は、他のルーターかボーダールーターがリーダーの役割を担う。これらの運用は自動で行われ、No Single Point of Failureを確かなものにしている。

●デバイスの種類

(1)ボーダールーター ボーダールーターは特別で、802.15.4ネットワークから隣接の異なる物理層(Wi-Fiやイーサネット)のネットワークへの接続を賄う。ボーダールーターは802.15.4ネットワーク内のデバイスに対してサービスを行うが、外のネットワークへのルーティングサービスも行う。Threadネットワークは、複数のボーダールーターを配置できる。

(2)ルーター ルーターは、ネットワーク内のデバイスにルーティングサービスを行う。また、ルーターは新規にネットワークに参加するデバイスに対して、参加サービスとセキュリティサービスを提供する。ルーターは後述するREEDへその機能を降格することがある。

(3)REED REED(ルーター機能搭載のエンドデバイス)はルーターになり得る機能を持つデバイスであるが、ネットワークのトポロジーや状況による判断でルーターの役割を持たない。これらのデバイスは一般に通信データの中継は行わず、Threadネットワーク内のほかのデバイスへの参加サービスやセキュリティサービスも提供しない。Threadネットワークはユーザーによる操作なく、必要に応じてREEDがルーターになるよう管理している。

(4)スリープ機能付きエンドデバイス スリープ機能付きのエンドデバイスはホストデバイスである。これらのデバイスは親機との通信のみを行い、他のデバイスへのデータの転送機能は持たない。

●IPスタック基礎

■アドレッシング

 Threadスタック内のデバイスはRFC4291に定義されたIPv6アドレス構造をサポートする。デバイスは、ULA(Unique Local Address)、もしくはGUA(Global Unicast Address)から1つ以上のアドレスを持つ。

 ネットワークを開始するデバイスは「/64プレフィックス」を抽出し、これがThreadネットワークで使用されていく。プレフィックスは、ローカルに割り当てられたグローバルIDであり、しばしばULAプレフィックスとして知られるが、メッシュのローカルULAプレフィックスとして参照される。

 Threadネットワークでは複数のボーダールーターが存在できる。しかし、追加のGUAを生成するのに使うプレフィックスを持つことも、持たないこともある。

 RFC4944の6章に規定されているが、Threadネットワーク内のデバイスは拡張MACアドレスを使いインタフェース識別子を得る。また、拡張MACアドレスからリンクローカルのIPv6アドレスを得る。このときは、よく知られているようにRFC4862とRFC4944の記述に従い、ローカルプレフィックス「FE80::0/64」が用いられる。

 デバイスは適切なマルチキャストアドレスもサポートする。ここにはリンク内の全てのノードへのマルチキャスト、リンク内の全てのルーターへのマルチキャスト、レルム内のマルチキャストも含まれる。

 Threadネットワークに参加するデバイスはIEEE802.15.4に規定されている16ビットのショートアドレスを割り当てられる。ルーターはこのうち上位ビットを使ったアドレスが割り当てられ下位ビットは全てゼロになり、これがルーターであることが示される。

 子機は16ビットのショートアドレスを親機となるルーターの上位ビットを使い、下位ビットで適切に個々のアドレスが割り振られる。これにより、Threadネットワーク内のどのデバイスも、子機のルーティング先がアドレスの上位ビットから把握できる。

■6LoWPAN

 全てのThreadデバイスは、RFC4944とRFC6282で定義される6LoWPANを使う。Threadネットワーク内ではヘッダ圧縮が使われ、データを送信するデバイスは、送信パケットサイズを小さくするためにできる限りのIPv6ヘッダを圧縮する。

 メッシュヘッダはメッシュ内の送信データと、リンク層で行う中継をより効率良く行うように使われる。メッシュヘッダはRFC4944で規定されるように、中継される際はホッピングごとに断片化処理を行わず、メッセージの断片化を発信元と宛先との間で行えるようになっている。Threadスタックは、いわゆるルート-オーバーの方式である。

 デバイスはDHCPv6がルーターのアドレス割り当てに使用されるので、RFC6775で規定された近隣探索は行わない。エンドデバイスとREEDは、親機であるルーターのアドレスに従うショートアドレスが割り当てられる。このショートアドレスはネットワーク内部の通信に使われるメッシュ内ULAに使われるように設定される。

■ICMPとUDP

 デバイスは、RFC4443にて規定されているICMPv6(Internet Control Message Protocol v6)プロトコルをサポートする。ICMPv6 エラーメッセージやエコー要求、エコー応答もサポートされる。また、Threadスタックは、RFC768に規定されているUDP(User Datagram Protocol)をデバイス間通信としてサポートしている。

 ここまで、ThreadのIPスタックに関する基礎を紹介してきた。次回は、同じホワイトペーパーから「ネットワークトポロジーと形成手順の基礎」について解説する。

最終更新:7月5日(火)11時52分

EDN Japan