開示の無線端末、重要度生成方法及び無線通信システムでは、アドホックネットワークシステム等のノード間の経路が環境に応じて動的に調整されるネットワークシステムにおいて、各中継ノードの障害がネットワークシステム全体に及ぼす影響の重要度をネットワークシステムにおける伝送の障害確率で表す。具体的には、送信元ノードと送信先ノードの各対に対してどこを分断すると伝送が途絶するかを表す分断確率を調べることにより、各ノードに障害が発生した時のネットワークシステム上のデータ伝送に与える影響の大きさを見積もる。分断確率が大きい程、重要度が高いものとする。
従って、多数のノードを含むネットワークシステムにおいて、多重化された経路毎の各ノードの重要度から経路の評価値を計算すれば、評価値に基づいて保守の対象となるノードに優先順位を付けて保守の対象となるノードを絞り込むことができる。
図1は、アドホックネットワークシステムの全体構成の一例を示す図である。図1に示すアドホックネットワークシステム1は、無線通信システムの一例であり、この例ではゲートウェイGW及び無線端末a〜iを有する。ゲートウェイGW及び無線端末a〜iは、ノード(または、ノード装置)の一例であり、同じ構成を有しても良い。
アドホックネットワークシステム1において、無線端末a〜iは、自律的にルーティングを行い、マルチホップ通信を行う。この例では、実線はルーティングによって生成されたデータ転送経路を示し、点線は相互に通信可能であるが転送経路に該当しない経路を示す。例えば、無線端末dにおいて測定されたセンサデータは、無線端末c,e,f,aを経由してゲートウェイGWに到達する。
図2は、一実施例におけるノードの構成の一例を示すブロック図である。図2に示すノード5は、プロセッサの一例であるCPU(Central Processing Unit)11、記憶装置またはコンピュータ読取可能な記憶媒体の一例であるメモリ12、送受信機13及びセンサ14を有する。CPU11、メモリ12、送受信機13及びセンサ14は、バス15を介して相互に接続されている。
メモリ12は、例えば制御プログラム21を含む各種プログラム、及び各種テーブル22を記憶する。CPU11は、例えば制御プログラム21を実行し、後述する重要度生成処理等を行い、各種テーブル22等を生成する。なお、CPU11が実行する処理は、専用のハードウェアで実行しても良い。センサ14は、例えば所定の対象を測定してセンサデータを生成する。送受信機13は、アンテナ16を介してセンサデータ等を有するデータパケット及び通信用の制御パケットの送受信を、CPU11の制御下で行う。
図3は、ノードの機能ブロック図である。図3に示すノード5は、Helloパケット受信部31、Helloパケット送信部33、Helloパケット生成部34、経路情報抽出部32、経路テーブルTt及び隣接テーブルTyを有する。経路テーブルTt及び隣接テーブルTyは、各種テーブル22に含まれる。経路テーブルTtは、例えば自ノード5から送信先となる他ノード5にパケットを送信する際の経路を示す経路情報を格納する。隣接テーブルTyは、隣接するノード5の情報を格納する。
Helloパケット受信部31は、Helloパケットを受信し、経路情報抽出部32は、受信したHelloパケットに含まれるデータから経路情報及び経路数を抽出し、経路テーブルTtに格納する。また、Helloパケット生成部34は、経路テーブルTtを参照して経路情報及び経路数を有するHelloパケットを生成する。Helloパケット送信部33は、生成されたHelloパケットを送信する。
また、ノード5は、データパケット生成部41、経路選択部42、データパケット送信部43、及びデータパケット受信部44を有する。データパケット生成部41は、データパケットを生成する。データパケットは、所定のデータを有し、送信先となる他ノード5に送信される。
経路選択部42は、経路テーブルTtを参照してノード5の分断ポイントセットを計算し、データパケットのデータ部にノード5の分断ポイントセットを追加し、経路テーブルTtから送信先となるノード5に対応する送信先ノード5を選択する。データパケット送信部43は、センサデータを有するデータパケットを送信する。データパケット受信部44は、データパケットを受信する。
図4〜図8は、本実施例におけるHelloパケットに基づく経路情報の生成処理の一例を説明する図である。図4〜図8は、本実施例におけるアドホックネットワーク1の一部を示す。図4〜図8に示す例において、GWはゲートウェイを示す。この例において、経路テーブルTtは、目的ノードを含む送信先ノードT、送信先ノードTへの経路において経由する隣接ノードl(エル)、送信先ノードTまでのホップ数h、及び自ノードと送信先ノードTとの間の経路数kを有する。なお、経路テーブルTtにおいて、ゲートウェイGWは便宜上Gと表記されている。なお、経路テーブルTtは、変更フラグF及び分断ポイントセットDPSをさらに有するが、変更フラグF及び分断ポイントセットDPSについては後述する。
本実施例では、経路情報の生成のために、Helloパケットと呼ばれる制御パケットが用いられる。ノード5は、周期的にHelloパケットをブロードキャストする。そして、ノード5は、Helloパケットを送受信して他のノード5と経路情報を交換し、経路テーブルTtを生成する。また、本実施例において、Helloパケットには、経路情報に加えて経路数が付加される。
ノード5は、Helloパケットを受信すると、Helloパケットが有する経路情報に基づいて、自ノード5の経路テーブルTtを更新する。具体的に、ノード5は、Helloパケットを受信すると、Helloパケットが有する経路情報のうち、自ノード5の経路テーブルTtに存在しない経路の情報を経路数kと共に、自ノード5の経路テーブルTtに追加する。また、ノード5は、Helloパケットが、経路テーブルTtの経路情報よりもホップ数hの少ない経路情報を有する場合、Helloパケットが有する経路情報を経路テーブルTtに上書きする。また、送信先ノードT及びリンクLに同一の経路が複数ある場合、ノード5は、経路数の総和を経路テーブルTtに登録する。経路テーブルTtは、このようにして生成できる。
図4の(1)において、例えば、ゲートウェイGWは、ゲートウェイGWがネットワーク上に存在することを示すHelloパケットH11,H12を隣接するノードc及びノードdに送信する。ノードcは、受信したHelloパケットH11に基づいて経路情報を生成し、経路テーブルTc−1に格納する。具体的には、ノードcは、ゲートウェイGW(T)まで自ノードcから1ホップ(h)である旨の経路情報を生成する。なお、ノードcとゲートウェイGW間の経路数は1つである。このため、経路数1(k)が登録される。
図4の(1)において、同様にして、ノードdは、ゲートウェイGWから送信されたHelloパケットH12を受信する。ノードdは、受信したHelloパケットH12に基づいて、自ノードdからゲートウェイGW(T)まで1ホップ(h)である旨の経路情報、及び、経路数1(k)を生成し、経路テーブルTd−1に格納する。このように、ノード5は、隣接ノード5への経路を初めに生成する場合は、その経路数(k)を1とする。
図4の(2)は、ノードcが、HelloパケットH21,H22をノードa及びノードbに送信する場合を例示する。このとき、HelloパケットH21は、ノードcがゲートウェイGWまで1ホップ(h)である旨の経路情報を有する。そこで、ノードaは、HelloパケットH21が有する経路情報に基づいて、ノードc(l)をリンクしてゲートウェイGW(T)まで2ホップ(h)である旨の経路情報とその経路数1(k)を経路テーブルTa−2に追加する。このとき、Helloパケットが有する経路数(k)が経路テーブルに転記される。このように、HelloパケットH21が有する経路情報のリンク(l)とホップ(h)が変更され、自ノードaの経路テーブルTa−2に追加されることによって、経路情報が延長される。また、ノードaは、ノードc(T)まで1ホップ(h)である旨の経路情報とその経路数1(k)を経路テーブルTa−2に追加する。
また、ノードbは、ノードc(T)まで1ホップである旨の経路情報とその経路数1(k)、及び、隣接ノードc(l)をリンクしてゲートウェイGW(T)まで2ホップ(h)である旨の経路情報とその経路数1(k)を、経路テーブルTb−2に追加する。このように、Helloパケットの伝搬によって経路情報が延長される。
図5は、Helloパケットに基づく経路情報の生成処理の具体例の続き(3),(4)を説明する図である。図5の(3)において、ノードaがノードcにHelloパケットH31を送信すると、ノードcは、Helloパケットに含まれる経路情報に基づいて経路情報を生成する。このとき、HelloパケットH31は、ノードc(l)をリンクしてゲートウェイGW(T)まで2ホップ(h)である旨の経路情報を有する。ただし、ノードcの経路テーブルTc−3は、既にゲートウェイGW(T)まで1ホップである旨の経路情報を有する。この場合、例えばノードcは、ノードa(l)をリンクしてゲートウェイGW(T)まで3ホップ(h)である旨の非効率な経路情報を、経路テーブルTc−3に追加しなくても良い。
このように、経路テーブルに追加される経路は、経路長であるホップ(h)に基づいて、制限されても良い。図5の(3)の例において、例えば、経路テーブルにおける同一の送信先ゲートウェイGW(T)への最短ホップ数1から2ホップ以上長い3ホップの経路(この例ではノードaをリンクする経路)については除外される。このように、ホップ数に基づいて経路が除外されることにより、非効率な経路が除外される。これにより、例えば重要ととして利用可能な経路数を計算する場合には、計算誤差を回避できる。
また、図5の(3)において、ノードbは、ノードdからHelloパケットH32を受信すると、ノードd(T)まで1ホップ(h)である旨の経路情報とその経路数1(k)、及び、隣接ノードd(l)をリンクしてノードGW(T)まで2ホップ(h)である旨の経路情報とその経路数1(k)を経路テーブルTb−3に追加する。
図5の(4)において、ノードbはノードc、ノードa及びノードdにHelloパケットH41〜H43を送信する。ノードaは、ノードbからHelloパケットH41を受信すると、ノードb(T)までの経路情報とその経路数1(k)、及び、ノードb(l)をリンクするノードc(T)までの経路情報とその経路数1(k)を経路テーブルTa−4に追加する。また、ノードbの経路テーブルTb−3は、ゲートウェイGWを送信先(T)とし、ノードc(l)またはノードd(l)をリンクする2つの経路情報を有する。このため、ノードaは、ノードb(l)をリンクするゲートウェイGW(T)までの経路情報とその経路数2(k)を経路テーブルTa−4に追加する。このように、ノード5は、リンク(l)と送信先ノード5までの経路が複数ある場合、各リンクの経路数の和を経路テーブルに格納する。同様にして、HelloパケットH42,H43に基づいて、経路テーブルTc−4,Td−4が更新される。
このように、リンク(l)から送信先ノード(T)まで複数の経路がある場合、経路の和が、自ノード5から当該リンク(l)を中継する送信先ノード5間の経路数として、経路テーブルに格納される。これにより、経路テーブルに基づいて、経路情報に加えてその経路数(k)が検知可能になる。
図6は、Helloパケットに基づく経路情報の生成処理の具体例の続き(5)を説明する図である。図6の(5)において、ノードaは、ノードb及びノードcにHelloパケットH51,H52を送信する。これにより、ノードbの経路テーブルTb−5に、ノードaをリンク(l)とする3つの経路情報とその経路数(k)が追加される。また、ノードcの経路テーブルTc−5に、ノードaをリンク(l)とする2つの経路情報とその経路数(k)が追加される。
図7は、Helloパケットに基づく経路情報の生成処理の具体例の続き(6)を説明する図である。図7の(6)において、ノードbは、ノードc及びノードdにHelloパケットH61,H62を送信する。ノードcの経路テーブルTc−6は、ノードbをリンク(l)とする経路情報を既に有するが、ノードbをリンク(l)とする送信先ノードa(T)の経路情報は有していない。このため、ノードcは、ノードbをリンク(l)とする送信先ノードa(T)の経路情報と、その経路数1(k)を、経路テーブルTc−6に追加する。同様にして、ノードdは、ノードbをリンク(l)とする送信先ノードa(T)の経路情報とその経路数1(k)を経路テーブルTd−6に追加する。
図8は、Helloパケットに基づく経路情報の生成処理の具体例の続き(7)を説明する図である。図8の(7)において、ノードcは、ノードa及びノードbにHelloパケットH71,H72を送信する。図7の(6)と同様にして、ノードaは、ノードcをリンク(l)とする送信先ノードd(T)の経路情報とその経路数1(k)を、経路テーブルTa−7に追加する。同様にして、ノードbは、ノードcをリンク(l)とする送信先ノードa(T)の経路情報とその経路数1(k)を経路テーブルTb−7に追加する。
このように、Helloパケットの伝搬経路の相違によって、同一の送信先ノードについて複数の経路を有する経路テーブルが生成される。例えば、図8のノードaの経路テーブルTa−7は、点線で囲むように、ノードcを送信先ノードとする計2つの経路、ノードdを送信先ノードとする計2つの経路、ゲートウェイGWを送信先ノードとする計3つの経路を有する。
図9は、経路情報が有する各経路と経路数の一例を説明する図である。図9のテーブルTa−8〜Td−8は、図8の経路テーブルの情報に加えて、経路情報に対応する送信元ノードと送信先ノード(T)との間における総経路数を有する。
図9のノードaの経路テーブルは、前述したとおり、ノードaとゲートウェイGW(T)との間の経路として、隣接ノードcをリンク(l)とする1つの経路「ノードa→ノードc→ゲートウェイGW」と、隣接ノードbをリンク(l)とする2つの経路「ノードa→ノードb→ノードc→ゲートウェイGW」及び「ノードa→ノードb→ノードd→ゲートウェイGW」を有する。つまり、ノードaの経路テーブルTa−8は、ゲートウェイGW(T)を送信先とする3つの経路を有する。
同様にして、図9のノードaの経路テーブルTa−8は、ノードd(T)との間の経路として、隣接ノードcをリンク(l)とする1つの経路「ノードa→ノードc」と、隣接ノードbをリンク(l)とする1つの経路「ノードa→ノードb→ノードc」を有する。これは、経路テーブルTa−8が、ノードcを送信先とする2つの経路を有することを意味する。同様にして、経路テーブルTa−8は、ノードd(T)を送信先とする2つの経路「ノードa→ノードb→ノードd」及び「ノードa→ノードc→ゲートウェイGW→ノードd」を有する。
また、図9において、ノードbの経路テーブルTb−8は、ゲートウェイGW(T)を送信先とする経路として、ノードa、ノードc、ノードdを夫々リンク(l)とする経路を有する。つまり、経路テーブルTb−8は、ゲートウェイGW(T)を送信先とする3つの経路を有する。また、経路テーブルTb−8は、ノードaを送信先とする2つの経路、ノードcを送信先とする2つの経路、及びノードdを送信先とする1つの経路を有する。他のノードの経路テーブルについても、同様である。
このように、本実施例では、Helloパケットに経路数が付加されることによって、自ノード5と送信先ノード5との経路情報に加えて、自ノード5と送信先ノード5との総経路数を計算可能となる。
ノード5は、データパケット中継時に、データパケットの送信元ノード5と送信先ノード5との間の総経路数を抽出する。
図10は、送信元ノードと送信先ノード間の経路数の抽出処理の一例を説明する図である。この例において、実線の矢印はデータパケットの送信経路を示し、点線の矢印は相互に通信可能であるが、データパケットの送信経路には該当しない経路を示す。
図10の例において、例えばノードaは、測定したセンサデータを有するデータパケットを、ノードcを経由してゲートウェイGWに送信する。この場合、送信元ノードはノードa、送信先ノードはゲートウェイGWに相当する。また、図10の例において、例えばノードbは、測定したセンサデータを有するデータパケットを、ノードdを経由してゲートウェイGWに送信する。この場合、送信元ノードはノードb、送信先ノードはノードdに相当する。なお、ノードc及びノードdについても、夫々送信元ノードとなり得る。
先ず、ノードaから送信先ゲートウェイGWにデータパケットが送信される場合を例示する。この場合、送信元ノードaは、自ノードaと送信先ゲートウェイGWとの間の総経路数3をデータパケットに付加する。そして、中継ノードcは、データパケット中継時に、データパケットに含まれる、送信元ノードaと送信先ゲートウェイGWとの総経路数3を抽出する。ノードbから送信先ゲートウェイGWにデータパケットが送信される場合についても同様である。中継ノードdは、データパケット中継時に、データパケットに含まれる、送信元ノードbと送信先ゲートウェイGWとの総経路数3を抽出する。このように、本実施例では、送信元ノードと送信先ノードとの間の総経路数が、各中継のノードに伝達される。
送信元ノード5と送信先ノード5との間の総経路数は、既存のデータパケットに追加されることにより、効率的に中継ノード5に伝達される。総経路数を格納するフィールドのサイズは小さく、データパケットの数についても増加しないため、ネットワークの負荷は増加しない。
次に、代替経路数の計算方法の一例を説明する。図11は、代替経路数の計算方法の一例を説明する図である。図11の例において、データパケットの送信元ノード5はノードdであって、目的ノード5はゲートウェイGWである。この例では、発信ノードdから目的ゲートウェイGWまでの経路における、中継ノードfの代替経路数の計算方法について例示する。本実施例において、代替経路数は、計算式「(発信ノードから目的ノードまでの経路総数)−(ノードを中継する経路数)」に基づいて計算される。また、ノードを中継する経路数は、「(ノードと発信ノードと間の経路数)×(ノードと目的ノードとの間の経路数)」を示す。
図11の例において、発信ノードdと目的ゲートウェイGWとの間の経路数は9である。また、発信ノードdと中継ノードfとの間の経路数は2であって、中継ノードfと目的ゲートウェイGWとの間の経路数は3である。従って、発信ノードdと目的ゲートウェイGWとの間の総経路数9から、発信ノードdと中継ノードfとの間の経路数2と中継ノードfと目的ゲートウェイGWとの間の経路数3との乗算値(=2×3)を減算する。これにより、発信ノードdから目的ゲートウェイGWまでの経路における中継ノードfの代替経路数3(=9−2×3)を計算できる。
なお、この例では、ノードfについて代替経路数を計算したが、代替経路数は他の中継ノード5においても同様に計算できる。また、同一の中継ノード5における代替経路数は、データパケットの発信ノード5と目的ノード5によって異なる。
次に、代替経路数の一例を説明する。図12は、図4〜図8の具体例における代替経路数の一例を説明する図である。図12は、ノードc及びノードdについて、経路数テーブルTc−9,Td−9と代替経路数テーブルTcx,Tdxとを示す。代替経路数テーブルTcx,Tdxは、データパケットの送信元ノードtrと代替経路数dを有する。図12の例において、各データパケットの送信先ノードは、ゲートウェイGWである。
先ず、送信元ノードa(tr)から送信先ゲートウェイGWまでの経路における、中継ノードcの代替経路数(d)を説明する。この場合、ノードcの代替経路数(d)は、計算式「{送信元ノードaから送信先ゲートウェイGWまでの経路総数(=3)}−{ノードcと送信元ノードaとの間の経路数(=2)}×{ノードcと送信先ゲートウェイGWとの間の経路数(=1)}」に基づいて、1(=3−2×1)が計算される。なお、この場合、代替経路は、ノードa→ノードb→ノードd→ゲートウェイGWの経路である。また、送信元ノードc(tr)から送信先ゲートウェイGWまでの経路における、ノードcの代替経路数(d)は、ノードcが送信元ノードであることにより0である。
同様にして、送信元ノードb(tr)から送信先ゲートウェイGWまでの経路における、中継ノードdの代替経路数(d)を説明する。この場合、ノードdの代替経路数(d)は、計算式「{送信元ノードbから送信先ゲートウェイGWまでの経路総数(=3)}−{ノードbと送信元ノードaとの間の経路数(=1)}×{ノードdと送信先ゲートウェイGWとの間の経路数(=1)}」に基づいて、2(=3−1×1)が計算される。なお、この場合、代替経路は、ノードb→ノードc→ゲートウェイGW、または、ノードb→ノードa→ノードc→ゲートウェイGWの経路である。
以上のように、送信元ノード5と送信先ノード5との総経路数、中継ノード5と送信元ノード5との経路数、及び中継ノード5と送信先ノード5との経路数とに基づいて、中継ノード5の代替経路数の計算することができる。また、経路数は、既存の制御パケットであるHelloパケットに基づいて効率的に生成可能である。このように、ノード5は、他ノード5の中継時における代替経路数を、ネットワークへの負荷をかけることなく、迅速に、効率的に計算することができる。
なお、図8において前述したとおり、例えば経路のホップ数に基づいて、検出される経路が制限されても良い。これにより、非効率な経路が除外され、計算される代替経路数の誤差が回避される。例えば、送信元ノード5から送信先ノード5までの経路総数には非効率な経路の数が含まれ、ノード5を中継する経路数には非効率な経路の数が含まれない場合、計算される代替経路数は誤差を含んでしまう。このため、代替経路数の精度を向上するために、例えば経路は最短のホップ数から所定のホップ分だけ長い経路以内に制限される。
このように、本実施例における経路情報は、同一経路における最短距離から基準距離範囲内(例えば、2ホップ以内)の経路を有する。そして、ノード5は、当該経路情報に基づいた、送信元ノード5から送信先ノード5までの経路総数、及び、ノード5を中継する経路数に基づいて、代替経路数を計算しても良い。この場合、送信元ノード5から送信先ノード5までの経路総数、及び、ノード5を中継する経路数から、非効率な経路が除外して、高精度の代替経路数を計算できる。
次に、各ノード5の具体的な処理の流れについてより詳細に説明する。
図13は、ノードにおける処理の一例を説明するフローチャートである。なお、ノード5は、発信ノード5及び中継ノード5に相当する。発信ノード5とは、データの発信元となるノードである。中継ノード5とは、あるノード5から受信したデータを中継して他のノード5へ送信するノードである。発信ノード5には送信元ノードが含まれ、中継ノード5には送信元ノード5及び送信先ノード5が含まれる。送信元ノード5とは、データを他のノード5へ送信する側の中継ノードである。一方、送信先ノード5とは、データをあるノード5から受信する側のノードである。また、目的ノード5とは、発信ノード5から発信されたデータの最終的な宛先となるノードである。
ステップS21では、ノード5は、パケットデータの管理を行うデータ管理テーブルTmにおいて、時刻TTWが現時刻と一致するレコードが存在するか否かを判定する。データ管理テーブルTmは、各種テーブル22に含まれる。データパケットの送信後、ノード5は、当該データパケットに対応するエントリをデータ管理テーブルTmに登録する。そして、データパケットの送信に対応するアクノレッジ(Acknowledge、以下、「ACK」とも言う)を送信先ノード5から受信したとき、ノード5は、データ管理テーブルTmから該当するデータパケットのエントリを削除する。
時刻TTWは、データ管理テーブルTmにおいて、データパケットに対応して設定される時刻であって、データパケットの送信時間からACK待ち時間経過後の時刻に設定される。データ管理テーブルTmにおいて、時刻TTWが現時刻と一致するレコードが存在してステップS21の判定結果がYESの場合、データパケットの送信後、ACK待ち時間が経過しても、ACKが返ってきていないことを示す。即ち、送信したデータパケットが送信先ノード5により受信されていないことを意味する。
そこで、ステップS21の判定結果がYESの場合、ステップS22では、ノード5は、データパケットの送信または再送処理を行う。データパケットの送信または再送処理については、別のフローチャートに基づいて後述する。ステップS21,S22は、パケットデータを送信後、一定期間内にACKが戻って来ない場合にデータパケットを再送するための処理を行うことができる。
一方、データ管理テーブルTmにおいて、時刻TTWが現時刻と一致するレコードが存在せずステップS21の判定結果がNOの場合、ステップS23では、ノード5は、時刻TTW1が現在の時刻と一致するか否かを判定する。時刻TTW1は、Helloパケットの送信後に設定される時刻であって、Helloパケットの送信周期の時間経過後の時刻を示す。Helloパケットは、周期的にブロードキャストされる。即ち、時刻TTW1は、次のHelloパケットの送信時刻を示す。このため、時刻TTW1が現在の時刻と一致してステップS23の判定結果がYESの場合、Helloパケットの送信時間であることを意味する。これにより、ステップS24では、ノード5は、Helloパケットの送信処理を行う。本実施例におけるノード5は、経路データを有するHelloパケットを送信する。Helloパケットの送信処理については、別のフローチャートに基づいて、後述する。ステップS23,S24は、Helloパケットを周期的にボードキャストするための処理を行う。
時刻TTW1と現在の時刻とが一致せずステップS23の判定結果がNOの場合、ステップS25では、ノード5は、時刻TTW2が現在の時刻と一致するか否かを判定する。時刻TTW2は、データパケットの送信後に設定される時刻であって、データパケットの送信周期の時間経過後の時刻を示す。この例において、データパケットは、周期的に送信される。即ち、時刻TTW2は、次のデータパケットの送信時刻を示す。このため、時刻TTW2が現在の時刻と一致してステップS25の判定結果がYESの場合、データパケットの送信時間であることを意味する。これにより、ステップS26では、ノード5は、センサデータ(即ち、データパケット)の送信処理を行う。本実施例におけるノード5は、送信元ノードである自ノードと、目的ノード5までの経路の総経路数とを有するデータパケットを送信する。ステップS25,S26は、各送信元ノード5から周期的にセンサデータを送信するための処理を行う。
一方、時刻TTW2と現在の時刻とが一致せずステップS25の判定結果がNOの場合ステップS27では、ノード5は、パケットを受信したか否かを判定する。パケットを受信してステップS27の判定結果がYESの場合、ステップS28では、ノード5は、パケットのタイプを判定する。一方、パケットを受信しておらずステップS27の判定結果がNOの場合、ノード5は、ステップS21の判定処理に戻る。
パケットを受信してステップS27の判定結果がYESの場合、ステップS28の判定の結果、受信したパケットがHelloパケットである場合、ステップS29では、ノード5は、Helloパケットの受信処理を行う。一方、受信したパケットがデータパケットである場合、ステップS30では、ノード5は、データパケットの受信処理を行う。ステップS29におけるHelloパケットの受信処理及びステップS30におけるデータパケットの受信処理については、別のフローチャートに基づいて後述する。また、受信したパケットがACKである場合、ステップS31では、ノード5は、データ管理テーブルTmから、ACKに対応するデータパケットのエントリを削除する。これにより、送信済みのデータパケットの受信確認が行われる。
図14は、ゲートウェイにおける処理の一例を説明するフローチャートである。この例では、ゲートウェイGWは目的ノードの一例である。図14において、ステップS121では、ゲートウェイGWは、時刻TTW3が現時刻と一致するか否かを判定する。時刻TTW3は、ノード5の重要度の計算(または、生成)後に、現時刻の重要度の計算(または、生成)周期後の時刻を示す。時刻TTW3が現時刻と一致してステップS121の判定結果がYESの場合、ステップS122では、ゲートウェイGWは、重要度テーブルの形成を行い、処理はステップS121へ戻る。重要度テーブルは、送信元ノード5毎に重要度を記述したテーブルであり、この重要度テーブルによって複数のノード5の障害に対応する場合の優先順位を付けることができる。ゲートウェイGWの構成がノード5の構成と同じ場合、重要度テーブルは、図2に示す各種テーブル22に含まれる。
一方、時刻TTW3が現時刻と一致せずステップS121の判定結果がNOの場合、ステップS123では、ゲートウェイGWは、データパケットを受信したか否かを判定する。データパケットを受信しておらずステップS123の判定結果がNOの場合、処理はステップS121へ戻る。データパケットを受信しておりステップS123の判定結果がYESの場合、ステップS124では、ゲートウェイGWは、送信元ノード5にACKを送信する。ステップS125では、ゲートウェイGWは、受信したデータパケットのデータ部分から発信ノード5の分断ポイントセットを抽出して分断ポイントテーブルに登録する。分断ポイントセットとは、後述するように、発信ノード5から目的ノード5までの経路を分断するノード5のセットである。また、分断ポイントテーブルとは、後述するように、発信ノード5と、発信ノード5に対する分断ポイントセットとを含む。ステップS126では、ゲートウェイGWは、受信したデータパケットの残りの部分の処理を行い、処理はステップS121へ戻る。
次に、分断ポイントセットについて説明する。発信ノードから目的ノードまでの経路が多数ある場合であっても、異なる経路で共通するノードの数が多ければ、経路が分断される可能性が高くなる。また、経路が長くなれば、経路が分断される可能性が高くなる。そこで、複数のノードに障害が発生した場合、例えば分断確率が最も高くなるものを重要なノードであると判断する。
例えば図15に示すアドホックネットワークシステム1において、先ず経路の分断ポイント、即ち、経路を分断するノードのセットを調べる。図15の例では、ノードaが発信ノード(経路の起点)、ゲートウェイGWが目的ノード(目的点)であるものとする。また、分断ポイントは、破線で示す。
次に、経路上の各ノードについて、自ノードで障害が発生した場合の分断ポイントセットを調べる。つまり、各分断ポイントから自ノードを除いた残りの要素を分断ポイントに変更する。例えば、ノードbの分断ポイントb−i→b、分断ポイントb−e→eに変更する。また、同一の分断ポイント及び上位の分断ポイントを除く。例えば、分断ポイントi−eと分断ポイントeがあれば、分断ポイントi−eを除く。
そして、得られた分断ポイントの分断確率を、例えばノード故障確率Pを用いて計算する。図16は、図15に示すアドホックネットワークシステム1について、送信元ノードtr、分断ポイントを構成するノード数N=1〜3、分断確率の近似値、及び代替経路数の一例を示す図である。
この例では、発信ノードaから目的ノードであるゲートウェイGWまでの経路における、中継ノードfの代替経路数の計算方法について例示する。代替経路数は、計算式「(発信ノードから目的ノードまでの経路総数)−(ノードを中継する経路数)」に基づいて計算できる。また、ノードを中継する経路数は、「(ノードと発信ノードと間の経路数)×(ノードと目的ノードとの間の経路数)」を示す。図15の例において、発信ノードaと目的ノードであるゲートウェイGWとの間の経路数は4である。また、発信ノードaと中継ノードbとの間の経路数は3であって、中継ノードbとゲートウェイGWとの間の経路数は1である。従って、発信ノードaとゲートウェイGWとの間の総経路数4から、発信ノードaと中継ノードbとの間の経路数3と中継ノードbとゲートウェイGWとの間の経路数1との乗算値(=3×1)を減算する。これにより、発信ノードaからゲートウェイGWまでの経路における中継ノードbの代替経路数1(=4−3×1)が計算できる。
なお、この例では、中継ノードbについて代替経路数を計算したが、代替経路数は他の中継ノードにおいても同様に計算できる。また、同一の中継ノードにおける代替経路数は、データパケットの発信ノードと、目的ノードによって異なる。
図16は、発信ノードaから送信されるトラヒックに対する分断ポイントの変化を、各ノードが単独故障した場合について示す。この例では、発信ノードaは、分断ポイントを構成するノード数N=2については分断ポイントe−f,e−g,b−i,b−eを含み、分断ポイントを構成するノード数N=3については分断ポイントg−h−iを含む。図16に示すように、例えばノードbについては、分断ポイントを構成するノード数N=1については分断ポイントi,eを含み、分断確率の近似値は2*Pであり、代替経路数は1である。また、例えばノードfについては、分断ポイントを構成するノード数N=1については分断ポイントeを含み、分断ポイントを構成するノード数N=2については分断ポイントb−iを含み、分断ポイントを構成するノード数N=3については分断ポイントg−h−iを含み、分断確率の近似値はP+P**2+P**3であり、代替経路数は3である。なお、「*」は乗算を表し、「**」はべき乗を表す。このように、分断確率によれば、ノードの故障の影響度を、図16中、比較例として示す代替経路の数に比べてより精密に評価できる。つまり、分断確率は、代替経路の数よりもノードの重要度をより精密に表すことができる。
従って、多数のノード5を含むアドホックネットワークシステム1において、多重化された経路毎の各ノード5の重要度から経路の評価値を計算すれば、評価値に基づいて保守の対象となるノード5に優先順位を付けて保守の対象となるノード5を絞り込むことができる。
次に、図13のステップS22が実行するデータパケットの送信処理、図13のステップS24が実行するHelloパケットの送信処理、図13のステップS29が実行するHelloパケットの受信処理、図13のステップS30が実行するデータパケットの送信処理、及び図13のステップS22が実行するデータパケットの再送処理を説明する。
図17は、ノードにおけるデータパケットの送信処理の一例を説明するフローチャートである。図17の処理は、図13のステップS22により実行される。ステップS41では、ノード5の経路選択部42が経路テーブルTtを参照して、ノード5の分断ポイントセットを計算する。ステップS42では、データパケット生成部41及び経路選択部42がデータパケットのデータ部に、センサデータに加えて、ステップS41で計算したノード5の分断ポイントセットを追加する。ステップS43では、経路選択部42が経路テーブルTtを参照して、目的ノード5への経路における中継ノードが示す、次の送信先ノード5の情報を選択する。ステップS44では、データパケット送信部43が送信するデータパケットの情報をデータ管理テーブルTmに登録し、ステップS45では、データパケット送信部43がデータパケットを送信し、送信処理は終了する。
図18は、分断ポイントセットの計算方法の第1の例を説明する図である。この第1の例は、直近ノードに対する計算結果を再利用することで、アドホックネットワークシステム1の全ノードに対して別々に分断ポイントを計算するよりも効率的に分断ポイントを計算する。先ず、各送信元ノードに分断ポイントセットの情報を保存する。図18中、各ノードの横には、当該ノードが保存する分断ポイントセットの情報を示す。なお、この例では、ノードaが発信ノードであり、ノードdが目的ノードであるものとする。目的ノードdは、ゲートウェイGWであっても良い。
自ノードから目的ノードへの中継ノードが1つのみの場合、中継ノードのみからなる分断ポイントを中継ノードの持つ分断ポイントセットに追加して、自ノードの分断ポイントセットとする。従って、例えばノードl(エル)の分断ポイントセットの場合、中継ノードはノードoのみでありノードoの分断ポイントセットがpなので、このpを中継ノードoに加えたp,oをノードl(エル)の分断ポイントセットとして計算する。ノードpの分断ポイントセットの場合、目的ノードdと直接通信可能であるため、分断ポイントは無い。
一方、自ノードから目的ノードへの中継ノードが複数ある場合、各中継ノードの分断ポイントセットに中継ノード自体を追加する。また、各中継ノードの分断ポイントセットから1つずつ要素を選択し、積集合から重複を除いた分断ポイントセットを自ノードの分断ポイントセットとする。従って、例えばノードkの分断ポイントセットの場合、中継ノードはノードl(エル),mの2つであり、各々の中継ノードl(エル),mの分断ポイントセットはp,oで同じであるため、これらの分断ポイントセットp,oに自身を追加することで、2つの分断ポイントセットp,o,l(エル)とp,o,mを計算する。また、2つの分断ポイントセットp,o,l(エル)とp,o,mの直積集合から重複要素を取り除くことで、分断ポイントセットp,o,l(エル)−mを計算する。同様に、例えばノードjの分断ポイントセットの場合、中継ノードはノードk,nの2つであり、中継ノードkの分断ポイントセットはp,o,l(エル)−mであり、中継ノードnの分断ポイントセットはpであるため、これらの分断ポイントセットp,o,l(エル)−mとpに自身を追加することで、2つの分断ポイントセットp,o,l(エル)−m,kとp,nを計算する。また、2つの分断ポイントセットp,o,l(エル)−m,kとp,nの直積集合から重複要素を取り除くことで、分断ポイントセットk−n、l(エル)−m−n,p,o−nを計算する。
図19は、分断ポイントセットの計算方法の第2の例を説明する図である。図19中、図18と同一部分には同一符号を付し、その説明は省略する。一般的に、経路の多重度が増加すると分岐も多くなり、集合の直積の計算量が増大する。そこで、この第2の例は、要素数の多い分断ポイントは計算量が多い割には重要度への寄与が少なく、ノードの重要度に大きく寄与するのは経路数の少ない、即ち、要素数の少ない分断ポイントである点に着目する。
つまり、この第2の例は、分断ポイントの要素数をチェックし、要素数の多い分断ポイントをノードの分断ポイントセットから削除することで、重要度判断の精度を落とすことなく計算量を減らす。図19は、分断ポイントの要素数の上限を2とした場合に減らせる要素を四辺形で囲んで示す。図19では、例えばノードjの分断ポイントセットk−n,l(エル)−m−n,p,o−nから要素l(エル)−m−nが削除される。また、例えばノードeの分断ポイントセットp,j,k−n,o−n,b−i,g−h−i,l(エル)−m−nから要素g−h−i,l(エル)−m−nが削除される。
図20は、分断ポイントセットの計算方法の第3の例を説明する図である。図20中、図18と同一部分には同一符号を付し、その説明は省略する。例えばセンサネットワークシステムは、状況に応じて経路を変更する仕組みを備え、経路は常に部分的な修正を受ける。しかし、ローカルな経路変化であっても、変化のあった経路の先に経路変化の影響が及ぶ可能性があるため、センサネットワークシステム内の全てのノード(例えば、センサネットワーク装置)について分断ポイントセットを再計算しなければならない。
そこで、この第3の例は、分断ポイントの要素数に上限を設け、上限を超える要素数の分断ポイントを除去する。また、自ノードにおける分断ポイントセットが再計算によって変化した場合にのみ変化のあった経路の先のノードに再計算を行うように通知する。図20は、ノードkとノードoの間に新しいノードqを追加した場合を示す。この例では、ノードjではノードnへの経路があるため、元々l(エル)−mを含む分断ポイントがない。このため、ノードqを追加しても、ノードjの分断ポイントセットに変化はなく、図20中破線で囲んだノードjの手前のノードa,b,e,f,g,h,iへの再計算の通知は不要であり、ノードjの先のノードm,n,o,pへの再計算の通知も不要である。一方、ノードkについては、ノードqの追加により、中継路が2つから3つに多重化されるため、分断ポイントセットから要素l(エル)−mがなくなる。
図21は、経路変更の第1の例を説明する図である。図21中、図19と同一部分には同一符号を付し、その説明は省略する。図21は、ノードl(エル)が除去される場合を示す。この例では、ノードjではノードnへの経路があるため、元々l(エル)−mを含む分断ポイントがない。このため、ノードl(エル)を除去しても、図21中破線で囲んだノードjの手前のノードa,b,e,f,g,h,iへの再計算の通知は不要であり、ノードjの先のノードm,n,o,pへの再計算の通知も不要である。一方、ノードl(エル)の除去により、ノードjについては分断ポイントセットの要素がk−n,p,o−n,m−nとなり、ノードkについては分断ポイントセットの要素がp,o,mになる。
図22は、経路変更の第2の例を説明する図である。図22中、図18と同一部分には同一符号を付し、その説明は省略する。図22は、ノードnが除去される場合を示す。この例では、ノードnの除去により、ノードjについては分断ポイントセットに要素k,o,l(エル)−m等が出現するため、ノードjの手前のノードa,b,e,f,g,h,iへの再計算の通知が必要であり、ノードjの先のノードkへの再計算の通知も必要である。一方、ノードl(エル),m,o,pについては再計算の通知は不要である。
図23は、ノードにおける分断ポイントセットと経路テーブルの一例を示す図である。図23中、(a)に示すように、分断ポイントセットFPSは、目的ノードと共にメモリ12に記憶される。また、図23中、(b)に示すように、経路テーブルTtには、送信先ノードT、隣接ノードl(エル)、送信先ノードTまでのホップ数h、自ノードと送信先ノードTとの間の経路数k、変更フラグF、及び分断ポイントセットDPSが格納される。変更フラグFは、オン状態により経路変更があることを示し、例えばデフォルト値はオンである。
図24は、ノードにおけるHelloパケットの送信処理の一例を説明するフローチャートである。図24の処理は、図13のステップS24により実行される。ステップS51では、ノード5のHelloパケット生成部34が経路テーブルTtを参照して、未処理のエントリがあるか否かを判定する。未処理のエントリがありステップS51の判定結果がYESの場合、ステップS52では、Helloパケット生成部34が経路テーブルTtにおける未処理のエントリのうち、特定の目的ノードを選択する。例えばセンサネットワークシステムでは、通常、目的ノードはゲートウェイGWの1つだけである。
ステップS53では、Helloパケット生成部34が経路テーブルTtに変更フラグFがオンであるエントリが存在するか、或いは、エントリ数が変化しているか否かを判定し、経路テーブルTtに変更フラグFがオンであるエントリが存在せず、或いは、エントリ数が変化しておらずステップS53の判定結果がNOの場合、処理は後述するステップS57へ進む。一方、経路テーブルTtに変更フラグFがオンであるエントリが存在するか、或いは、エントリ数が変化しておりステップS53の判定結果がYESの場合、ステップS54では、Helloパケット生成部34が分断ポイントセットの再計算を行う。ステップS55では、Helloパケット生成部34が分断ポイントセットの値が変化しているか否かを判定し、分断ポイントセットの値が変化しておらずステップS55の判定結果がNOの場合、処理は後述するステップS57へ進む。
一方、分断ポイントセットの値が変化しておりステップS55の判定結果がYESの場合、ステップS56では、HelloパケットのHelloヘッダの変更フラグFをオンにして、分断ポイントセットDPSをHelloヘッダに書き込み、処理はステップS57へ進む。図25は、Helloヘッダの一例を示す図である。図25に示すHelloヘッダは、目的ノード、目的ノードまでのホップ数h、経路品質重み、復路リンク重み、変更フラグF、及び分断ポイントセットDPSを有する。経路品質重みには、経路品質の重み付けを行う場合に必要に応じて重み付けの値が設定される。復路リンク重みには、復路リンクの重み付けを行う場合に必要に応じて重み付けの値が設定される。
ステップS57では、Helloパケット生成部34がHelloパケットに付加する経路データを形成する。具体的に、Helloパケット生成部34は、選択した目的ノードの経路情報及び経路数を、Helloパケットに追加する。ステップS58では、Helloパケット生成部34が経路テーブルTtにおいて、選択した目的ノードのエントリを処理済みのステータスに更新し、処理はステップS51へ戻る。
経路テーブルTtに未処理のエントリがなくなりステップS51の判定結果がNOになると、ステップS59では、Helloパケット生成部34が隣接ノードテーブルTyを参照して、隣接ノードテーブルTyのエントリからHelloパケットの経路データを生成する。具体的に、Helloパケット生成部34は、隣接ノードテーブルTyを参照して隣接ノードの情報を取得し、Helloパケットに設定する。ステップS60では、ノード5のHelloパケット送信部33が、Helloパケット生成部34において生成されたHelloパケットを送信し、Helloパケットの送信処理は終了する。
図26は、ノードにおけるHelloパケットの受信処理の一例を説明するフローチャートである。図26の処理は、図13のステップS29により実行される。図26において、ステップS61では、ノード5のHelloパケット受信部31がHelloパケットを受信すると、Helloパケットがデータを有するか否かを判定する。受信したHelloパケットがデータを有しステップS61の判定結果がYESの場合、ステップS62では、ノード5の経路情報抽出部32が、Helloパケットが有するデータである経路情報を経路テーブル情報に変換する。具体的には、経路情報抽出部32は、例えばHelloパケットが有する経路情報における中継ノードを、Helloパケットの送信元ノードに書き換えると共に、ホップ数hをカウントアップする。また、経路情報抽出部32は、Helloパケットが有する経路情報が、目的ノードと中継ノードとが同一の経路を複数有する場合、各経路の経路数の合計を経路数とする。つまり、ステップS62では、経路情報抽出部32が受信したHelloパケットの経路情報を経路テーブルTtのエントリへ変換する。
ステップS63では、経路情報抽出部32が受信したHelloパケットのHelloヘッダの変更フラグFがオンであるか、或いは、経路テーブルTtに新エントリがあるか否かを判定し、判定結果がNOの場合、処理は後述するステップS65へ進む。一方、Helloヘッダの変更フラグFがオンであるか、或いは、経路テーブルTtに新エントリがありステップS63の判定結果がYESの場合、ステップS64では、経路情報抽出部32が経路テーブルTtのエントリの変更フラグFをオンにし、処理はステップS65へ進む。
ステップS65では、ノード5の経路情報抽出部32が変換した経路情報を経路テーブルTtに書き込む。ステップS66では、経路情報抽出部32が受信したHelloパケットが有するデータから、経路テーブル情報に変換済みのエントリを削除し、処理はステップS61へ戻る。
ノードの経路情報抽出部32は、Helloパケットが有するデータについて、未処理のエントリがなくなるまで、経路情報の経路テーブル情報への変換処理から経路テーブルTtへの書き込み処理(ステップS62〜S65)を行う。一方、Helloパケットがデータを有さずステップS61の判定結果がNOの場合、即ち、初めのHelloパケットの送信時、ノード5の経路情報抽出部32はHelloパケットの受信処理は終了する。
図27は、ノードにおけるデータパケットの受信処理の一例を説明するフローチャートである。図27の処理は、図13のステップS30により実行される。図27において、ステップS71では、ノード5のデータパケット受信部44がデータパケットを受信すると、受信したデータパケットに対応するエントリがデータ管理テーブルTmに登録されているか否かを判定する。受信したデータパケットに対応するエントリがデータ管理テーブルTmに登録されておりステップS71の判定結果がYESの場合、ステップS72では、ノード5の経路選択部42は、経路テーブルTtから、エントリに対応する送信先ノードの情報を削除し、処理はステップS73へ進む。
受信したデータパケットに対応するエントリがデータ管理テーブルTmに登録されておらずステップS71の判定結果がNOの場合、或いは、ステップS72の後、ステップS73では、データパケット受信部44は、受信したデータパケットに対応するエントリがデータ管理テーブルTmに登録されていたか否かに関わらず、データパケットを受信したことを示すACKを、データパケットの送信元ノードに送信する。
ステップS74では、経路選択部42が経路テーブルTtを参照し、データパケットの次の送信先ノードを選択し、データパケットの情報をデータ管理テーブルTmに登録する。ステップS75では、ノード5のデータパケット送信部43がデータパケットを送信し、データパケットの受信処理は終了する。
図28は、ノードにおけるデータパケットの再送処理の一例を説明するフローチャートである。図28の処理は、図13のステップS22により実行される。図28において、ステップS141では、ノード5の経路選択部42がデータ管理テーブルTmの対象レコードの次の送信先ノードに未使用のものがあるか否かを判定し、未使用のものがなく判定結果がNOの場合、処理はステップS142へ進む。ステップS142では、経路選択部42が対象レコードをデータ管理テーブルTmから削除し、データパケットの再送処理は終了する。一方、データ管理テーブルTmの対象レコードの次の送信先ノードに未使用のものがありステップS141の判定結果がYESの場合、処理はステップS143へ進む。
ステップS143では、経路選択部42がデータ管理テーブルTmの対象レコードの次の送信先ノードを選択し、選択した経路に使用フラグを立てる。ステップS144では、経路選択部42がデータ管理テーブルTmの対象レコードの時刻TTWを現時刻(即ち、データパケットの再送信時間)からACK待ち時間経過後の時刻に再設定する。ステップS145では、ノード5のデータパケット送信部43が対象レコードに対応するデータパケットを選択した経路に向けて送信し、データパケットの再送処理は終了する。データパケットの再送後は次の時刻TTWまで待ち、次の時刻TTWまでにACKが帰ってこないと、さらに未使用の経路があれば再度上記の如きデータパケットの再送処理を行う。
図29は、データ管理テーブルのレコードの一例を示す図である。説明の便宜上、図29はデータ管理テーブルTmの一部のみを示す。この例では、データ管理テーブルTmのレコードは、時刻、発信ノード、レコードの識別子FID、時刻TTW、及び送信先ノードLD1,LD2,LD3を有する。送信先ノードLDの左側の数字は、使用時に「1」に設定される使用フラグを示し、右側のアルファベットは送信先のノード名を示す。
図29中、(a)は図16に示すノードeにおいて発信ノードaから最初のデータパケットを受信した時のレコードを示し、送信先ノードLD1の「1」,「g」はノードgに送信することを表す。図29中、(b)は、(a)においてノードgへの送信に失敗してデータパケットが再送された後のレコードを示し、送信先ノードLD2の「1」,「h」はノードhに送信することを表す。図29中、(c)は、(b)においてノードhへの発信に失敗してデータパケットが再送された後のレコードを示し、送信先ノードLD3の「1」,「i」はノードiに送信することを表す。
図30は、目的ノードにおける重要度生成処理の一例を説明するフローチャートである。図30に示す処理は、例えばゲートウェイGWのCPU11により実行される。
図30において、ステップS81では、ゲートウェイGWのCPU11が重要度テーブルに未処理のノードがあるか否かを判定し、未処理のノードがあり判定結果がYESの場合、処理はステップS82へ進む。アドホックネットワークシステム1全体について上記の分断ポイントセットの再計算を行う場合、アドホックネットワークシステム1の全てのノードの処理が未処理とみなされる。このため、ステップS82では、ゲートウェイGWのCPU11が特定のノードを選択する。ステップS83では、CPU11が分断ポイントテーブルから選択した特定のノードを含む分断ポイントを抽出し、各分断ポイントの出現回数をカウントする。
図31は、目的ノードにおける分断ポイントテーブルと重要度テーブルの一例を説明する図である。図31中、(a)は分断ポイントテーブルを示し、(b)は重要度テーブルを示す。分断ポイントテーブルは、中継ノードから受信したHelloパケットのHelloヘッダに含まれる分断ポイントセットDPSに基づいて、ゲートウェイGW(即ち、目的ノード)が生成し、ノードと、対応する分断ポイントセットDPSを有する。重要度テーブルは、中継ノードから受信したHelloパケットのHelloヘッダに含まれる分断ポイントセットDPSに基づいて、ゲートウェイGW(即ち、目的ノード)が生成し、ノードと、対応する重要度を有する。分断ポイントテーブル及び重要度テーブルは、例えばゲートウェイGWのメモリ12に記憶された各種テーブル22に含まれる。
ステップS84では、ゲートウェイGWのCPU11が特定のノードの故障時の分断箇所出現数の期待値を、分断ポイントの出現回数のカウント値に基づいて計算する。ステップS85では、ゲートウェイGWのCPU11が特定のノードについて計算した分断箇所出現数の期待値を、重要度を表す分断確率として生成し、図31中、(b)に示す重要度テーブルに書き込む。ステップS86では、ゲートウェイGWのCPU11が重要度テーブルの特定ノードを処理済みとして、処理はステップS81へ戻る。
重要度テーブルに未処理のノードがなく、ステップS81の判定結果がNOの場合、ステップS87では、ゲートウェイGWのCPU11が重要度テーブルを参照し、ノードの重要度から経路の評価値を計算し、重要度生成処理は終了する。経路の評価値は、例えばノードの重要度が高い程高い優先順位を示す値である。ステップS87では、ゲートウェイGWのCPU11がノードの重要度から計算した経路の評価値に基づいて、保守対象のノードに優先順位を付けることで、保守対象のノードに係る保守の優先度を判定するようにしても良い。また、保守対象のノードに係る保守の優先度の判定は、ユーザが重要度テーブルの重要度に基づいて行うようにしても良い。これにより、例えば少ない人員であっても、ノードの保守の優先度に基づいて、多数のノードの効率的な保守が可能になる。
本実施例におけるノードは、既存の制御パケット(例えば、Helloパケット)を送受信することによって、簡易に、各ノードにおける経路の経路数を計算することができる。 また、本実施例におけるノードは、制御パケットの種別、及び、パケット数を増加させることなく、既存の制御パケットのデータサイズを、経路数を格納するフィールド分と分断ポイントセットを格納するフィールド分だけ僅かに増加させることにより、各経路の経路数を取得することができる。既存のデータパケットのデータサイズを僅かに増加させることにより、ノードは、送信元ノードと送信先ノードとの間の総経路数を取得することができる。さらに、ネットワークシステムへの負荷を増大させることなく、既存のリソースを用いて、簡易に、常に最新の経路数をノードに保持させることができる。また、ゲートウェイは、ノードから取得した分断ポイントセットから分断確率を重要度として計算することができる。
これに対し、一般的な方法に基づくと、例えば、経路数は、各ノードの隣接テーブルが集約ノードに送信され、集約ノードにおいて各ノードの隣接テーブルに基づいて計算される。このため、集約ノードにおける処理負荷が高くなると共に、集約ノードにおける経路構築処理は、各ノードにおける経路構築処理と冗長してしまう。また、隣接テーブルを集約ノードに周期的に送信することにより、パケット数が増加し、ネットワークの負荷が増大する。隣接テーブルの送信確認を行う場合、送信確認のためのACK等の制御パケットが必要となり、さらに、制御パケット数が増加する。これにより、ネットワークが高負荷状態となり、隣接テーブルの集約ノードへの伝送に時間がかかることがある。
具体的に、一般的な方法によると、隣接テーブル送信処理に係るデータ量は、隣接テーブルを周期的に収集することを想定した場合、計算式「(全てのノード数)×(隣接テーブルの平均サイズ)×(経路平均長)×(テーブルデータ収集頻度)」によって計算される。なお、隣接テーブルは全ての隣接ノードの情報を有することにより、ノード数の増加に従ってサイズも増加する。また、ACKパケット等の制御パケットを要する場合、隣接テーブル送信処理に係るデータ量は、ACK用のデータ量分「(全てのノード数)×(ACKパケットサイズ)×(経路平均長)」だけ増加する。
これに対し、本実施例におけるノードは、隣接テーブルの送受信を要することなく、既存の制御パケットに経路数の情報を付加することにより、各経路の経路数を計算可能になる。具体的に、本実施例において、増加するデータ量は、例えば、計算式「(全てのノード数)×1byte(経路数を格納する数値フィールドのサイズ)×(Helloパケットの送信頻度)」によって計算される。また、データパケット中継時に、中継ノードに伝達される経路数の増加データ量は、例えば、計算式「(全てのノード数)×1byte(総経路数を格納する数値フィールドのサイズ)×{(経路平均長)−1}×(センサデータ収集頻度)」によって計算される。
このように、本実施例によると、制御パケットを新たに用意する必要がなく、経路数の計算のために増加するデータ量の増加量も少ない。
また、上記の如き分散型の実装では、各ノード内で分断ポイントセットを計算し、計算結果をHelloパケットを利用して通知し、ノード間で共有する。このような分散型の実装では、経路テーブルのデータの送信に伴うトラヒックの輻輳や遅延を考慮しなくて済むという利点がある。しかし、一旦経路テーブルのデータをゲートウェイ等の一か所のノードに集めて全ての処理を行う集中型の実装も可能である。
上記実施例によれば、多数ノードからなるネットワークシステムにおいて、多重化された経路毎の各ノードの重要度から経路の評価値を計算し、評価値に基づいて対象ノードに優先順位を付けることで、保守(または整備)対象のノードの検出を高速化できる。
センサデータの完全性を保証する必要のあるシステムへの応用例として、例えば課金データを扱うシステムが挙げられる。課金データは、1つでも失われると大きな問題となるため、センサネットワークシステムによってこのようなデータの収集を行う際には、障害によるネットワークシステム機能の停止への対応が重要となる。障害の起こる可能性をできるだけ減らすために予防的な整備を行う場合(例えば、古くなった機器を置き換える場合)、整備に割くことのできるリソースは有限なので、大きな影響の出そうなところから保守(または整備)を進めることで、ネットワークシステム全体としてデータ喪失のリスクを抑えることが可能となる。或いは、ネットワークシステム内で実際に障害が発生した後でも、複数の障害が発生した場合にどの障害の緊急性が高いかを判断し、障害の優先度順に対処することによって、データ喪失のリスクを抑えることが可能となる。
以上、開示の無線端末、重要度生成方法及び無線通信システムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。