ここから本文です

IoT向け無線規格「Thread」のネットワークトポロジーと形成手順

EDN Japan 7月26日(火)12時53分配信

 あらゆるデバイスやセンサーがつながる「IoT(モノのインターネット)」時代を迎え、ホームネットワーク向けに注目を集める無線規格「Thread」。本連載は、Thread Groupが発行するホワイトペーパーから、Threadの詳細を解説している。

【写真:Threadネットワークにおける、さまざまな経路のリンクコストの例 】

 前回は、ホワイトペーパー「Thread Overview」から、Threadの概要を振り返るとともに、そのIPスタックの基礎を紹介した。今回は、同じくThread Overviewから、ネットワークトポロジーと形成手順の基礎について解説していく。

■ネットワークアドレスとデバイス

 Threadスタックは、Threadネットワーク内の全てのルーターで完全なメッシュ接続をサポートする。実際のトポロジーは、Threadネットワーク内のルーターの数による。ルーターかボーダールーターが1つしかなければ、基本的な星型トポロジーが形成される。複数のルーターがあると自動的にメッシュトポロジーが形成される。

○メッシュネットワーク

 メッシュネットワークは、無線機がデータを他の無線機に中継することで無線システムをより堅ろうにする。例えば、あるノードがデータを直接もう一方のノードに送ることができない場合、メッシュネットワークは1つ、もしくは複数の中間ノードで中継を行う。Threadネットワークの特徴は、全てのルーターノードがお互いのルートと接続性をメンテナンスして、メッシュネットワークの接続を継続的に保つことである。

○ルーティングとネットワーク接続

 Threadネットワークは通常、最大32個のルーターで構成され、デバイスルーティングテーブルを参照して次の中継ルーター(ネクストホップ)にデータ中継する。デバイスルーティングテーブルはスタックソフトウェアにより、Threadネットワーク内の全てのルーターの接続性を保ち、どのルーターとも最新の経路が示されるよう継続してメンテナンスされる。ここではRIP(Routing Information Protocol)アルゴリズムが使われる。

 アルゴリズムはRFC1058とRFC2080を参照するが、特定のメッセージフォーマットはない。全てのルーターは、Threadネットワーク内の他のルーターとのルーティングのコスト情報を互いに交換し、MLE(Mesh Link Establishment)を使用し圧縮されたフォーマットでやりとりが行われる*)。

*)IPでみると、Threadネットワークはルーターとホストをサポートしている。ホストは、REEDかスリープ機能付きエンドデバイスとなる。

○MLEメッセージ

 MLEメッセージは、安全な無線接続の構築と構成、隣接デバイスの堅持、Threadネットワーク内でデバイス間のルーティングコストの維持管理に使われる。

 シングルホップのリンク内ユニキャストと、ルーター間のマルチキャストで通信され、トポロジーや物理的環境変化に対応して、隣接デバイスとのリンクを特定、構成、安全保持を行うことに使われる。使用する無線チャンネルやPAN ID(パーソナルエリアネットワークを特定する番号)といった、Threadネットワーク内全体で使われる構成パラメータの配布にも使われる。これらのメッセージは、MPL(Mozilla Public License)を使った、簡易なフラッディングによる配布である。

 MLEメッセージは、2つのデバイス間のルーティングコストを割り出す際、非対称のリンクコストになることも考慮されている。非対称のリンクコストは、802.15.4ネットワークではよくあることなので、双方向の通信信頼性を確保するために、双方向のリンクのコストを考慮するのは非常に重要である(参照:IETFの内容を拡張)。

○ルートの発見と修復

 これまでの802.15.4低電力ネットワークは、オンデマンドでの経路発見が共通で使われていた。しかし、ルート発見は、ネットワークのフラッディングが求められるので、実際にはネットワークにはオーバーヘッドが生じ、帯域も使用するので負担が大きい。

 Threadネットワークでは、全てのルーターは定期的にシングルホップのMLEアドバタイズパケットを交換し、その中に全ての隣接ルーターとのリンクコスト情報と、全てのThread内の他のルーターとの経路コスト情報を含めている。

 このローカルでの定期的なアップデートにより、全てのルーターはThreadネットワーク内の全てのルーターとの経路コスト情報がアップデートされる。そのため、オンデマンドでの経路発見は不要となる。ある経路が使い物にならなくなった場合、ルーターは目的地までの次に最適な経路を選択することができる。

 この自己修復ルーティングメカニズムにより、他のルーターがThreadネットワークを離脱したときもルーターは素早く検知でき、最適な経路を計算してThreadネットワーク内の他の全ての接続性を保つ。それぞれの方向におけるリンククオリティーは、隣接デバイスから受信時のリンクコストが基になる。

 受信時のリンクコストは、0から3のリンククオリティーにマッピングされる。リンククオリティー=0はリンクコストが不明なのを示す。リンクコストは一定の受信レベルを超えた受信データ取得時のRSSI(Received Signal Strength Indicator)を基に測る。

○電源投入後のThreadネットワーク形成

 Threadネットワーク内における全ての他ノードへの経路コストはそのノードに到達するまでのリンクコストの総和である。無線リンククオリティーやネットワークのトポロジーが変化したとしても、ルーターはこれらのコストを監視し、定期的なMLEアドバタイズメッセージを通じて、新しいリンクコストが波及する。ルーティングコストは、2つのデバイス間の双方向のリンクコストがベースである。

 同時に電源が投入された場合を想定してみる。全てのノードがコミッショニング済みでセキュリティ情報を共有した状態と仮定する。

 それぞれのルーターが定期的にアドバタイズを送るが、そこに含まれる情報は初期の隣接するシングルホップのコストだけである。内部では、各ルーターは次のホッピング情報を保持していくだろうが、アドバタイズの中には含まれない。

 最初のいくつかのアドバタイズでは、上記図のようにルーターが知りえるのは直近に隣接するルーターだけなので、経路コストがリンクコストに等しい。

○メッシュネットワークの形成

 一方、ルーターがアドバタイズを聞き始めると、隣接のルーターから数ホップ先のルーターへの経路コスト情報が含まれ、ルーティングテーブルはマルチホップの経路コストも含むよう発展していき、最終的に全てのルーターとの接続情報ができる。

 ルーターが新しいMLEアドバタイズを隣接ルーターから受信したとき、既に存在する隣接テーブルの場合と追加される場合がある。MLEアドバタイズは送られてくる際の隣接ルーターからのリンクコストを含むので、この情報は、ルーターの隣接テーブルにアップデートされる。また、MLEアドバタイズは、アップデートされた他のルーターへの経路情報を含み、この情報でデバイス内のルーティングテーブルのアップデートがされる。

 子機への経路は、子機のアドレスに含まれる上位ビットを見ることで親機ルーターのアドレスが分かる。親機ルーターが分かれば、デバイスは経路コスト情報とネクストホップ情報が分かる。アクティブなルーターの個数は、経路とコストの情報を1つの802.15.4パケットに収める必要があるため、最大32個のルーターが現在限界となっている。ルーターのアドレスは64個まであるが、これはルーターアドレスのエージングに用いられることが想定されているためで、実際には32個が最大である。

○ルーティング

 デバイスはパケットの転送にIPルーティングを用いる。デバイスルーティングテーブルは、圧縮されたルーターのメッシュ内ULAアドレスと適切なネクストホップ情報を含む。

 ディスタンスベクター型ルーティングを使用して、Threadネットワークのルーターアドレスへの経路を入手する。Threadネットワークのルーティングでは、16ビットのアドレス空間のうち上位6ビットが宛先のルーターのアドレスとなる。

 宛先アドレスの下位ビットが全て0であれば、そのルーターが実際の宛先デバイスである。そうでない場合、宛先ルーターは宛先アドレスの下位ビットに割り振られた宛先デバイスに転送する義務を負う。

 Threadネットワークを超えてルーティングを行う場合は、ボーダールーターが特定のプレフィックスをリーダーに通知し、その情報がMLEパケットに含まれるThreadネットワークデータとして配布される。Threadネットワークデータには、プレフィックスデータ、6LoWPANコンテキスト、ボーダールーター、そのプレフィックスのDHCPv6サーバの情報が含まれる。

 デバイスがそのプレフィックスを使用してIPv6アドレスを構成する際は、SLAAC(Stateless Address Autoconfiguration)を用いるか、適切なDHCP(Dynamic Host Configuration Protocol)サーバに問い合わせる。Threadネットワークデータは、デフォルトボーダールーターのルーターアドレスを示すルーティングサーバのリストも含む。

 リーダーはREEDを選びルーターにさせ、ルーターがREEDに降格することを許可する決定を行う。また、ルーターアドレスの割り当てと管理を行う。一方で、リーダーが持つ全ての情報は他の全てのルーターも保有する。リーダーが到達不能になった場合、他のルーターが自動的に選抜され、ユーザーの介入なく自動的にリーダーの役割を引き継ぐ。

○再送とAck

 Threadスタックでは、UDPメッセージが使われるが、信頼性の高いメッセージの伝達が求められる場合もある。この場合でも下記のシンプルなメカニズムで実現できる。

 MAC層レベルの再送:それぞれのデバイスは、ネクストホップとの通信にMAC層のAckを使用する。MAC Ackを受信しない場合、メッセージの再送が行われる。

 アプリケーションレベルの再送:アプリケーションレベルで信頼性がクリティカルなパラメータな場合、必要に応じて再送メカニズムを自身に組み込むことができる。

■Threadネットワークへの参加

 デバイスがThreadネットワークに加わるためには、参加するデバイスが行わなければならないフェーズがいくつかある。Threadネットワークでは、全ての参加プロセスはユーザーが開始するようになっている。いったん参加プロセスが完了すると、デバイスはThreadネットワークに完全に加入して、アプリケーション層の情報を他のデバイスと交換し、Threadネットワーク内外を問わず、さまざまなサービスができるようになる。

○発見

 参加するデバイスはまずThreadネットワークを発見し、コミッショニングのためにルーターとの接触を開始しなければならない。参加するデバイスは、全ての無線チャンネルをスキャンし、それぞれの無線チャンネルでビーコン要求をして応答を待つ。

 ビーコンは、ネットワークSSIDを含むペイロードを持つ。Threadネットワークが新メンバーを受け入れる場合、参加を許可するという意味のパーミットジョイニングであることがビーコンで表明される。デバイスがThreadネットワークを発見したのち、MLEメッセージを使い、隣接ルーターとの交信を通じてコミッショニングを行うことができる。

 既にコミッショニング情報を入手したデバイスは、直接Threadネットワークにアタッチするための十分な情報を持つため、発見を必要としない。

○コミッショニング

 Threadは2つのコミッショニング手段を用意している。

1. アウトオブバンド(Thread以外の通信方式)手段で、直接コミッショニング情報をデバイスに構成する。コミッショニング情報により、デバイスは適切なThreadネットワークを見つけ次第、すぐに参加することができる。

2. 参加デバイスとスマートフォンやタブレット、Webブラウザ上のアプリケーションとの間にコミッショニングセッションを確立する。コミッショニングセッションにより、コミッショニング情報が安全に参加デバイスに通達され、セッション完了後、適切なThreadネットワークにアタッチすることができるようになる。

○アタッチ

 コミッショニング情報を持つ参加デバイスは、親機ルーターと接触し、親機ルーターを通じてMLEリンク構成メッセージを交換することでThreadネットワークにアタッチする。デバイスは、エンドデバイスか、REEDとしてThreadネットワークにアタッチし、親機ルーターから16ビットのショートアドレスが割り当てられる。

 REEDとしてアタッチした後、REEDはリーダーからルーターアドレスを受けているルーターになるよう要求を出すことができる。

○MLEメッセージ

 Threadネットワークにアタッチしたデバイスは、ネットワークへの参加を維持するためにさまざまな情報が必要になる。MLEでネットワーク全体にネットワークの情報が配布され、リンクコストや隣接とのセキュリティフレームカウンターの交換も行われる。

MLEメッセージは、以下の情報を交換や配布を行う*)
・隣接デバイスの16ビットショート、64ビットEUI64ロングアドレス
・スリープ機能付きエンドデバイスの場合、スリープサイクルの情報を含めたデバイスの機能情報
・隣接のリンクコスト(ルーターの場合)
・セキュリティ情報とデバイス間のフレームカウンター
・Threadネットワーク内の全てのルーターに対する経路コスト
・無線チャンネル、PAN ID、MACで使用されるネットワークデータのアップデート

*)MLEメッセージは、参加デバイスが必要なセキュリティ情報を得る際を除いて暗号化される。

○DHCPv6

 DHCPv6は、UDBベースのクライアント‐サーバプロトコルでネットワーク内のデバイスの構成を管理する。DHCPv6はDHCPサーバの要求にUDPを使用する。

ボーダールーターのDHCPv6サービスは、下記の構成に使われる
・ネットワークアドレス
・デバイスに必要なマルチキャストアドレス
・ホストネームサービス

■管理

○ICMP

 全てのデバイスは、ICMPv6エラーメッセージ、エコー要求とエコー応答メッセージをサポートする。

○デバイス管理

 デバイスのアプリケーション層は、デバイス管理と診断を行う情報一式へのアクセスを持つ。これらはローカルで使用されたり、他の管理デバイスへ送られたりする。

Threadが、802.15.4のMAC層から使用する情報
・EUI64アドレス
・16ビットショートアドレス
・機能情報
・PAN ID
・パケット送受信完了情報
・パケット送受信時のパケット欠落
・セキュリティエラー
・MAC再送回数

Threadが、ネットワーク層から使用する情報
・IPv6アドレス欠損
・近接デバイステーブル
・子機デバイステーブル
・経路テーブル

○永続的データ

 実際にフィールドで運用されているデバイスは不慮、もしくはさまざまな目的においてリセットが掛かることがある。リセットされたデバイスは、ユーザーの操作なしにネットワーク機能の稼働を再開する必要がある。これを行うためにいくつかの情報は、不揮発性のストレージに収めておく必要があり、以下のものが含まれる。

・PAN IDなどのネットワーク情報
・セキュリティ要素(それぞれで使用される鍵)
・IPv6アドレスを構成するためのネットワークからのアドレス情報

 ここまで、Threadのネットワークトポロジーと形成手順の基礎について紹介してきた。次回は、2つ目のホワイト―ペーパーから「6LoWPAN」について解説する。

最終更新:7月26日(火)12時53分

EDN Japan