<実施形態>
以下、マルチホップ方式の無線ネットワークシステム(アドホックネットワーク)を適用した例として、自動検針システムを説明する。自動検針システムは、各電力需要家に無線通信端末を設置し、これらを電力事業者が保有する収集サーバと通信可能に接続し、各電力需要家における電力量計の検針データを定期的に収集するシステムである。
図1は、実施形態の無線ネットワークシステムの使用例を示す図である。この無線ネットワークシステムは、電力需要家H1、H2、・・・、H20(総称するときは、電力需要家Hという。)、各電力需要家Hに設置されている電力計量器である端局T1、T2、・・・、T20(総称するときは、端局Tという。)、ゲートウェイGWa、GWb、GWc(総称するときは、ゲートウェイGWという。)、ネットワーク2、サーバ装置1を備える。尚、電力需要家H、端局T、ゲートウェイGW、及び、サーバ装置1の個数は、これらの数に限られない。
ネットワーク2は、電力会社等のネットワーク運営会社によって管理されているネットワークであり、有線、無線を問わない。また、ゲートウェイGWは、例えば、主な電柱に設けられ、ネットワーク2を介して、電力会社等によって管理されているサーバ装置1と接続される。
端局T、及び、ゲートウェイGWは、マルチホップを用いたネットワークのノードを構成する。端局Tは、何れかのゲートウェイGWに属している。端局Tは、積算電力量計としての機能を有し、それぞれの検針データは、順次、隣の端局Tに転送され、自装置が属するゲートウェイGWに集められる。各ゲートウェイGWに集められた検針データは、ネットワーク2を介して、サーバ装置1に送信される。端局Tは、無線LAN(Local Area Network)規格での通信を行い、信号A1〜5等で示すように、アドホックモードによって1対1の通信を行う。また、ゲートウェイGWはそれぞれ、数百程度の端局Tの検針データを収集し、収集した検針データをサーバ装置1に送信する。
図2は、端局Tの正面図の例である。この端局Tは、電力需要家の宅内の各配電線が接続される端子台6、負荷開閉器3000、電力量計2000、及び、通信ユニット1000が配列されて構成される。電力量計2000は、積算電力量を、予め定める周期、例えば、5分毎に検針する。その検針データは30分毎に、通信ユニット1000によって、自装置の属するゲートウェイGWに向けて送信される。負荷開閉器3000は、サーバ装置1から送信されてくる制御データに応じて、開閉動作を行う。
ここで、図3に、実施形態のマルチホップを用いたネットワークの概略を示す。円がノードを表し、円を結ぶ破線は、その両端の円で示すノードが、互いの存在を検出(認識、学習)していることを示す(双方向リンク)。ゲートウェイGWを表す円には、円内部にゲートウェイGWの識別子「GWa」等が記載されている。また、端局Tを表す円には、円内部に端局Tの識別子「T1」等が記載されている。
サーバ装置1とゲートウェイGWとはネットワーク2によって接続され、ゲートウェイGWと各端局Tとは、マルチホップにより接続される。例えば、実施形態のネットワークでは、ホップ数は、最大で数十、好ましくは十ホップ以下である。
実施形態のネットワークは、例えば、マルチホップ無線ネットワークにおけるいわゆるプロアクティブ型のルーティングのプロトコルの1つであるOLSR(Optimized Link State Routing)によって生成される。ゲートウェイGWと各端局Tとの間の経路は、各ノード(ゲートウェイGW、端局T)が、周期的に、自装置の存在を伝えるとともに、経路情報を交換するためのHelloメッセージを送受信することで、各ノードが自律的に構築する。各ゲートウェイGW、及び、各端局Tは、ネットワーク全体のトポロジー情報である経路表(ルーティングテーブル)として、例えば、学習したネットワーク内の端局Tの宛先と、その端局Tへデータを送信するための隣接送信先である端局Tの宛先とを対応付けて記憶する。
各ノードが自律的に、周囲の電波状況等の変化に応じて、最適な経路を構築するため、端局TからゲートウェイGWへの上りルートと、ゲートウェイGWから端局Tへの下りルートとでは、経路が異なる場合がある。また、各ノードは、使用中の経路の通信状態の悪化に備えて、複数の予備の経路を確保している。
検針データは、その端局Tが属するゲートウェイGWに向けて上りルートで送信される。例えば、図3において、ハッチングがかかった識別子「T8」の端局T(以下、「端局T8」という。)の、識別子「GWa」のゲートウェイGW(以下、「ゲートウェイGWa」という。)への上りルートを、ゲートウェイGW向きの実線矢印で示す。具体的には、端局T8が送信した検針データは、端局T6を経由してゲートウェイGWaに到達する。端局T8が、検針データをゲートウェイGWaに向けて送信する為に、上位の隣接送信先である端局T6に送信するパケット(ネットワークが伝送するデータ)の例を図17(a)に示す。このパケットには、隣接宛先として端局T6の宛先「T6」、最終宛先としてゲートウェイGWaの宛先「GWa」、データ種別として「検針データ」、自装置の検針データが含まれる。端局T8から検針データのパケットを受信した端局T6は、最終宛先「GWa」への経路上の宛先に、受信したパケットを転送する。図3の場合は、端局T6は、受信したパケットを「GWa」に転送することとなるが、他の端局Tを経由する場合は、その端局T宛にパケットを転送する。
尚、実施形態では、端局Tの宛先は、MAC(Media Access Control)アドレスとし、ゲートウェイGWの宛先は、IP(Internet Protocol)アドレスとする。また、図17、図18に示すパケットの例では、説明に必要な項目データのみを記載するものとする。
また、サーバ装置1は、各ゲートウェイGWに属している端局Tを記憶しており、端局T8に制御データを送信する際には、その端局Tが属するゲートウェイGWaに制御データ(命令)を渡して、端局T8への送信を依頼する。制御データは、図3の端局T8に向かう実線矢印のルートで示す下りルートで、送信されることになる。具体的には、ゲートウェイGWaが送信した制御データは、端局T1、端局T3、端局T5を経由して端局T8に到達する。
ゲートウェイGWaは、端局T8に送信する為に、制御データのパケットを、隣接送信先である端局T1宛に送信する。ゲートウェイGWaが、端局T1に送信するパケットの例を図17(b)に示す。このパケットには、隣接宛先として端局T1の宛先「T1」、データ種別として「制御データ」、最終宛先として端局T8の宛先「T8」、制御データが含まれる。ゲートウェイGWaから制御データのパケットを受信した端局T1は、最終宛先「T8」への隣接送信先である端局T3宛に、パケットを転送する。
ここで、端局T間は、無線によって通信が行われるため、電波環境が変化して通信ができなくなることが考えられる。例えば、天候が悪化したり、大型車の通行が増えたり、大きな建物が建築されたり等、様々な要因で電波環境に変化が生じる。また、新たなゲートウェイGWや通信ユニット1000が設置されたり、撤去されることもある。従って、一旦経路が決定されたとしても、電波環境の変化に迅速に対応するために、実施形態の端局Tの通信ユニット1000は、検針データをサーバ装置1に送信するために現在使用している経路以外の経路を、予備の経路(副経路)として確保している。つまり、現在属しているゲートウェイGW(以下、「主ゲートウェイGW」という。)への経路として、現在使用している経路(R1)以外に、予備の経路を確保している。例えば、図3の端局T8は、主ゲートウェイGWaへの予備の経路(白抜き矢印のルートR2、R3参照)を構築している。更に、主ゲートウェイGW以外のゲートウェイGWを、予備のゲートウェイGW(以下、「副ゲートウェイGW」という。)として確保している。例えば、図3の端局T8は、副ゲートウェイGWとして「GWb」を確保し、GWbへの経路(破線矢印のルート参照)を構築している。
<ルーティングテーブルの溢れ状態について>
本実施形態のような無線ネットワークでは、例えば、図1に示すように、市街地と郊外とでは、電力需要家Hの密集度に差があることから、電力需要家Hに設置された端局Tの分布密度にばらつきが発生する。このような端局Tの密度に差がある環境においては、ゲートウェイGWの適切な配置を設計することが難しく、意図しないゲートウェイGWに属してしまう端局Tが発生し、また、ネットワークに参加できないで孤立した端局Tが発生し得る。この原因の一つとして、各ノードが備えているルーティングテーブルの空きがなくなり、新たなノードを登録することができない状態、つまり、溢れ状態がある。
ノードのメモリリソースには当然に上限があり、各ノードが備えているルーティングテーブルに登録できる宛先(端局Tの宛先、ゲートウェイGWの宛先)に限りがある。従って、新設された端局Tを登録しようとしても登録できない場合や、ネットワークに参加している端局Tであっても、最適な経路上の端局Tのルーティングテーブルが溢れている場合には、迂回ルートを通らざる負えない場合や、予期せぬゲートウェイGWに属することとなっている場合等がある。また、最短ルートを構築できない場合には、ホップ数が増加することにより経路が切れる可能性が高まり、経路の通信品質も低くなる状態が生じ得る。
また、各ノードは、自律分散的に経路を構築するため、ノードの密集地では、各ノードのルーティングテーブルに重複して登録されている宛先が多くなる傾向にあることも、ルーティングテーブル溢れの一因である。
ルーティングテーブルが溢れた場合、通信品質のより良いネットワーク構築のために、評価の悪い宛先を削除して、新しく検出された宛先を登録することが行われる場合がある。評価とは、宛先までの繋がりやすさを示す指標であり、通信実績、宛先までのホップ数などを元に算出される。評価に基づいてルーティングテーブルの宛先の入れ替えを行う場合、頻繁に新しいノードが検出されるような環境下、例えば、ノード密集地では、評価の低い宛先同士が、頻繁に入れ替えられるという状態が発生する。
つまり、新しく検出されたノードの宛先がルーティングテーブルに登録されたとしても、その宛先への通信実績が上がる前に(評価が上がる前に)、他の新しいノードが検出されて、先に登録された宛先が削除されて、直近に検出されたノードの宛先が登録される、ということの繰り返しが発生し得る。
このような入れ替えが頻発する状態では、評価が低い宛先同士が、繰り返し入れ替えられる一方で、評価が高い宛先は入れ替えの対象とはならないので、着実に実績を積むことができて固定化することになる。しかし、評価が低い宛先であっても、実績を積めないが為に評価が低いだけであって、実際には、最適なルートを形成する宛先である場合もある。
そこで、実施形態の無線ネットワークの各ノードでは、ルーティングテーブルが溢れた場合に、評価に基づいてルーティングテーブルの入れ替えを行うだけでなく、宛先が適切なルートを形成するのであれば着実に通信実績が詰めるような方法(評価を高める方法)を併用することで、より最適なルーティングを行う。各ノードが、実施形態のようなルーティングを行うことで、結果的に、通信品質の良い、安定した、最適なネットワークを構築することが可能となる。
以下、本発明にかかる実施の一形態を図面に基づいて説明する。
<経路形成について>
まず、実施形態のルーティングテーブルの宛先の入れ替え方法について説明する。
<ルーティングテーブルの構成例>
図6は、実施形態のノード(端局T、ゲートウェイGW)が、後述のリンク情報記憶部1600に記憶しているルーティングテーブル1610の構成及び内容の例を示す図である。
図6には、上下に2つのテーブルが記載されており、上段のテーブルがルーティングテーブル1610を示し、下段のテーブルは、ルーティングテーブル1610に登録されている宛先ごとの経路の詳細テーブルを示す。図6では、順位1611が「3」の宛先の詳細テーブルを示しているが(太線矢印参照)、宛先それぞれが、同じ構成の詳細テーブルを有している。つまり、図6のルーティングテーブル1610では、説明の便宜上、宛先ごとに1レコードが登録されているように記載しているが、実際には、1つの宛先ごとに3つのレコードを有している。この3つのレコードそれぞれは、宛先への経路を示す。
上述したように、実施形態の端局Tは、検針データ等をゲートウェイGWに送信するために現在使用している経路以外の経路を、予備の経路(副経路)として確保している。詳細テーブルの3つのレコードが示す経路は、評価が高い順に1段目から並んでおり、1段目のレコードが示す経路が、現在使用している経路を示し、2段目、及び、3段目が、予備の経路を示す。同様に、ゲートウェイGWは、端局Tに制御データ等を送信するために、各端局への経路を複数確保している。図6では、ルーティングテーブル1610の宛先ごとに、現在使用している経路を記載しており、以下の説明において明記しない場合は、現在使用している経路を示す。また、ルーティングテーブル1610の宛先という場合は、最終宛先1612として設定されている宛先を示し、宛先を登録、宛先を削除という場合は、その宛先の予備の経路を含む3つの経路を登録、削除することを示す。
尚、実施形態では、2つの予備の経路を確保しているが、他の数の予備の経路を確保することとしても良い。
ルーティングテーブル1610には、複数の宛先(ノード)が登録されるが、登録可能なノードの数(レコード数)は、構築するネットワークに依存する。実施形態の自動検針システムでは、例えば、1500個のノードが登録される。図6では、「n」個と記載している。
ルーティングテーブル1610は、順位1611、最終宛先1612、種別1613、隣接宛先1614、実績1615、ホップ1616、電界1617、評価値1618、AMフラグ1619、及び、経過時間1620を有する。
順位1611は、最終宛先1612が示す宛先までの経路の順位を示す。順位は、経路の評価を基準に、評価が高い順に1からふられる。評価は、評価値1618に示される値である。
最終宛先1612は、最終的な送信先であるノードを特定するための識別子を示す。詳細には、送信先であるノードのアドレスを示す。尚、本実施形態では、送信先のノードに限らず各ノードの識別子(アドレス)のことを「宛先」と称する。
種別1613は、最終宛先1612が示す宛先のノードの種類を示す。実施形態では、ノードの種類として、端局T、及び、ゲートウェイGWの2種類がある。「端局」が端局Tを示し、「GW」は、ゲートウェイGWを示す。実施形態では、端局Tからの検針データはゲートウェイGWに集められ、端局Tに対する制御データはゲートウェイGWから送信されることから、端局Tが記憶するルーティングテーブル1610の種別1613としては、「端局」と「GW」が設定されており、ゲートウェイGWが記憶するルーティングテーブル1610の種別1613としては、「端局」のみが設定されている。尚、「GW」が設定されているレコードのうち、最も順位1611が良い(評価が高い)レコードのゲートウェイGWが、主ゲートウェイGWであり、現在、属しているゲートウェイGWとなる。また、2番目に順位1611が良いゲートウェイGWが、副ゲートウェイGWとなる。従って、もっとも良い順位1611のゲートウェイGWが変わった時に、属するゲートウェイGWが変わることになる。
隣接宛先1614は、最終宛先1612が示す宛先にパケットを送信する場合に、パケットを渡すべき、隣接するノードの識別子(中継先)を示す。
実績1615は、隣接宛先1614が示す宛先のノード(隣接ノード)を経た、最終宛先1612が示す宛先へのデータ送達実績(通信実績)を示す。通信が成功する都度に所定値が加算され、失敗する都度に所定値が減算される。つまり、値が大きい程、通信実績が良い。
ホップ1616は、最終宛先1612が示す宛先までのホップ数を示す。ホップ数が少ないほど、評価が高い。
電界1617は、隣接宛先1614が示すノードからのHelloメッセージの電波強度(電界強度)を示す。
評価値1618は、最終宛先1612が示す宛先までの経路の評価値を示す。評価値は、実績1615〜電界1617が示す値を元に、予め定められた計算式を用いて算出される。実施形態では、評価値が大きい程、評価が高い、つまり、接続しやすいことを示す。実績1615〜電界1617、及び、評価値1618は、後述する無線通信制御部1100によって、適時、更新される。評価値1618の値は、後述する評価値算出部1140によって算出される。例えば、メッセージが受信されたとき、データ通信の到達応答が受信されたとき、データ通信の失敗が検出されたとき、ループ経路等が検出されたとき等に更新される。尚、実績1615〜電界1617は、一例であり、他の情報を用いて評価値を算出することとしても良く、その評価値は、通信の実績を加味した評価を示すものであればよい。
AMフラグ1619は、以下の2つの場合に、「ON」が設定される。1つ目は、最終宛先1612が示す宛先へのアドホックメッセージを送信、又は、受信した場合に、「ON」が設定される。アドホックメッセージについては、<AMフラグについて>の項で説明する。このAMフラグ1619は、現在使用している経路に対するフラグである。具体的には、アドホックメッセージの送信元(メッセージを送出したノード)では、最終宛先1612としてアドホックメッセージの送信先(メッセージの届け先のノード)の宛先が設定されているレコードのAMフラグ1619が「ON」とされ、アドホックメッセージを転送するノードでは、最終宛先1612としてアドホックメッセージの送信先の宛先が設定されているレコードと、送信元の宛先が設定されているレコードの2つのレコードのAMフラグ1619が「ON」とされ、送信先のノードでは、最終宛先1612として送信元の宛先が設定されているレコードのAMフラグ1619が「ON」とされる。
2つ目の「ON」が設定される場合は、連続して所定回数、例えば、3回、最終宛先1612が示す宛先のノードの存在を示すHelloメッセージを受信した場合である。言い換えれば、連続して受信されたHelloメッセージそれぞれが、その宛先のノードの存在を示すノード集合等の情報を記憶していた場合である。以下、宛先のノードの存在を示すノード集合等の情報を記憶しているHelloメッセージを、「宛先のノードの存在を示すHelloメッセージ」等という。
このAMフラグ1619の使用方法の詳細は、<AMフラグについて>の項で説明する。尚、図6において、「1」が「ON」を表し、「0」が「OFF」を表す。
経過時間1620は、AMフラグ1619に「ON」が設定されてからの経過時間を示す。単位は、「分」である。図6では、説明の便宜上、経過した時間を表示しているが、AMフラグ1619が「ON」となった時刻が設定されており、経過時間の判断時に、タイマー1300から現在の時刻を取得して、経過時間を算出することとしても良い。
<AMフラグについて>
上述のように、AMフラグ1619は、最終宛先1612が示す宛先へのアドホックメッセージを送信、又は、受信した場合、また、最終宛先1612が示す宛先の存在を示すHelloメッセージを所定回数受信した場合に、「ON」が設定される。
実施形態の自動検針システムでは、様々なメッセージ(パケット)が伝送されており、これらメッセージには、以下の2つの機能を持つメッセージが含まれる。1つ目は、アドホック網を維持形成させるためのHelloメッセージである。2つ目は、特定のノード(端局T、ゲートウェイGW)に届けるために送信されるメッセージであり、例えば、検針データをゲートウェイGWに届けるためのメッセージ、自装置が属するゲートウェイGWの情報などの自情報をゲートウェイGWに届けるためのメッセージ、制御データを端局Tに届けるためのメッセージ等である。この2つ目のメッセージを、「アドホックメッセージ」というものとする。
尚、Helloメッセージとは、各ノードが記憶する情報を周囲に向けて配信することを目的として、周期的に、例えば、60秒周期で送信されるメッセージである。このHelloメッセージは、自装置に隣接するノードの宛先や、更にその先に存在するノードなど、自装置が把握している全ての宛先情報(ノード集合)や、各宛先への経路の評価を行うために必要な情報を含む。各ノードは、他のノードからのHelloメッセージを受信し、その内容を解析することで、アドホック網を維持形成する。尚、Helloメッセージは、隣接ノードにのみ送信される。
ルーティングテーブル1610のAMフラグ1619は、宛先(最終宛先1612の宛先)をルーティングテーブル1610から削除する候補(入替候補)とすることができるか否かを示すフラグである。最終宛先1612として登録されている宛先のうち、AMフラグ1619が「ON」となっている宛先は、入替候補とはされないことを示し、「OFF」となっている宛先は、入替候補となることを示す。
実施形態では、ルーティングテーブル1610が溢れて、いずれかの宛先が削除される場合、つまり、新たに検出された宛先と入れ替えられる場合は、AMフラグ1619が「OFF」となっている宛先のうち、評価値1618が示す評価値が最も小さい(評価が最も低い)宛先が入替候補となり削除される。従って、評価が最も低い宛先であっても、その宛先のAMフラグ1619が「ON」となっている場合は、削除されることは無い。
また、AMフラグ1619は、「ON」になってから特定期間、例えば、6時間(360分)が経過すると「OFF」になるものとし、特定期間が経過する前にアドホックメッセージを送信、又は、受信すると、経過時間1620が示す経過時間がリセットされて、特定期間のカウントが最初から開始されるものとする。
つまり、特定期間よりも短い間隔でアドホックメッセージを受信、又は、送信している間は、AMフラグ1619は常に「ON」であることになる。一方、特定期間の間にアドホックメッセージが受信、又は、送信されなかった場合には、「OFF」となる。
従って、アドホックメッセージがたまたま届いたような場合には、AMフラグ1619は、一旦は「ON」になるものの、特定期間経過後には「OFF」となって入替候補となる。一方、アドホックメッセージがある程度の間隔で送受信されている宛先への経路は、確保され続けることになる。言い換えれば、一定の頻度でアドホックメッセージを受信、又は、送信している間は、AMフラグ1619は常に「ON」であり、その経路は確保されていることになる。AMフラグ1619は、アドホックメッセージを受信、又は、送信している頻度が閾値を上回っているか否かを表している情報(頻度情報)ともいえる。
この特定期間は、アドホック網が適用されているアプリケーションの内容や、ルーティングテーブルのサイズ等に応じて、適切な期間とされる。
アドホックメッセージとは、上述のように、送信先の宛先として他のノード(端局T、ゲートウェイGW)の宛先が設定されているメッセージであり、目的の宛先へ情報を伝達する通信であるので、アドホックメッセージが通った経路は、維持したい経路である可能性が高い。ルーティングテーブル1610から宛先が削除されるということは、その宛先までの経路が切れることを意味するので、経路を切らないようにできるAMフラグ1619は、アドホックメッセージの通過する経路を維持するためのフラグということができる。
尚、存在を示すHelloメッセージを3回受信したらAMフラグ1619を「ON」にする場合は、Helloメッセージが60秒周期で送信されていることから、その宛先が、少なくとも120秒はルーティングテーブル1610から削除されないことが条件となる。従って、Helloメッセージの受信によりAMフラグ1619が「ON」になるのは、ノード密集地ではなく、ルーティングテーブルに余裕がある場合が多い。このような場合は、Helloメッセージにより存在が確認できたときに経路を維持することが可能となる。
<AMフラグの使用例>
以下、図7〜図9を用いて、AMフラグの使用例を具体的に説明する。
図7は、ノードDを送信先(宛先)としたアドホックメッセージを、ノードAが最初に送信した場合のルーティングテーブル1610を説明するための図である。図8は、その後、ノードDを送信先としたアドホックメッセージを、ノードAが同一経路で、一定頻度で送信し、ノードDに到達した場合を説明するための図であり、図9は、同一経路では、アドホックメッセージが到達しなかった場合を説明するための図である。円で示されたノードA〜Gの7つのノードが記載され、破線で結ばれたノード同士は相手の存在を認識していることを示す。
図7において、太線矢印で示すように、ノードAからノードDまでは、ノードB、ノードCを経由する経路が確保されている。また、ノードA〜Dに記憶されているルーティングテーブル1610が、各ノードからの細線矢印のよって示されている。
まず、ノードAは、ノードDを送信先としたアドホックメッセージをノードBに送信する。ノードAのルーティングテーブル1610の最終宛先1612が「D」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。
ノードAから、ノードDを送信先としたアドホックメッセージを受信したノードBは、受信したアドホックメッセージをノードCに送信(転送)する。ノードBのルーティングテーブル1610の最終宛先1612が「D」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。尚、最終宛先1612が「D」の評価値1618は「22」であり、最も低い評価である(ハッチングがかけられている欄参照)。また、送信元がノードAであるので、最終宛先1612が「A」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。
ノードBから、ノードDを送信先としたアドホックメッセージを受信したノードCは、受信したアドホックメッセージをノードDに送信(転送)する。ノードCのルーティングテーブル1610の最終宛先1612が「D」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。また、送信元がノードAであるので、最終宛先1612が「A」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。
ノードCから、ノードDを送信先としたアドホックメッセージを受信したノードDは、受信したアドホックメッセージを処理する。送信元がノードAであるので、ノードDのルーティングテーブル1610の最終宛先1612が「A」のAMフラグ1619が「ON」とされて経過時間のカウントが開始され、経過時間1620に示される。
この状態から、ノードAがノードDを送信先としたアドホックメッセージを、一定頻度で送信した場合の例を図8に示す。例えば、ノードDがゲートウェイGWであり、ノードAが端局Tであって、検針データを30分周期で送信した場合である。
特定期間が6時間であるとすると、ノードAが30分周期でアドホックメッセージを送信した場合には、最初のアドホックメッセージが送信されたときに、ノードA、B、C、Dのルーティングテーブル1610において「ON」となったAMフラグ1619は、「ON」のままであることになる。つまり、経路が維持され続けていることになる。
更に、経路が維持されていることで、経路上のノードは通信の実績を積むことができるので、ルーティングテーブル1610においてAMフラグ1619が「ON」となっている最終宛先1612の評価値1618の値が大きく(評価が高く)なる。評価が高くなれば、一時的に障害物が現れたなどの理由で通信が途絶えてAMフラグ1619が「OFF」となったとしても、直ちに入れ替えられる(削除される)ことは無い。従って、障害物が消えた時には、経路が切れていないので、再びAMフラグ1619が「ON」とされて、経路を維持することが可能となる。
ノードBについて、図7ではルーティングテーブル1610の最終宛先1612が「D」の評価値1618は「22」であり、順位1611が最下位であった。つまり、新たなノードが検出された場合には、入替候補となり削除される宛先であった。しかし、AMフラグ1619を「ON」として入替候補としないこととしたため、通信実績を積むことができ、評価値1618の値が大きくなり(評価が高くなり)、順位1611を「75」としている。AMフラグ1619を「ON」として入替候補としていない間に、評価値が上がるということは、ノードBからノードDへの経路が適切な(通信品質の良い)経路であることを示していることになる。
次に、図7の状態から、ノードAが送信したアドホックメッセージが、ノードDに届かなかった場合の例を図9に示す。例えば、ノードAとノードBとの間の通信環境が悪化して、アドホックメッセージがノードDに到達しなかった場合である。
この場合、ノードBについて、図7ではルーティングテーブル1610の最終宛先1612が「D」のAMフラグ1619は「ON」にされるが、ノードAからのノードDを送信先としたアドホックメッセージが届かないため(図9の1)参照)、特定期間経過後に「OFF」となる。従って、順位1611が最下位である最終宛先1612「D」は、新たに検出されたノード、例えば、ノードGの宛先と入れ替えられる(図9の(2)参照)。この時点で、ノードBからノードDへの経路が切れたことになる。
ノードAでは、ノードDを送信先としたアドホックメッセージが、隣接宛先1614が「B」の経路では届かないので、評価値1618の値が小さくなる(評価が下がる)。そして、ノードAは、評価が上となった隣接宛先1614が「E」の経路を用いて、ノードDを送信先としたアドホックメッセージを送信する(図9の(3)参照)。つまり、経路を変更する(白抜き矢印参照)。このアドホックメッセージがノードDに到達すれば、ノードA、E、F、Dのルーティングテーブル1610(不図示)において、最終宛先1612が「D」、「A」のAMフラグ1619が「ON」にされ、経路の維持が開始されることになる。
このように、AMフラグ1619を用いて、アドホックメッセージが一定頻度で通過している経路を維持し、特定期間の間にアドホックメッセージが通過しない経路は入替候補とすることで、通信品質の良い経路は残り、通信品質の悪い経路は淘汰されて行く。同時に、各ノードは確保している予備の経路に切り替えながら、より通信品質のよい経路を探すので、結果的に、アドホックネットワーク全体の経路が最適化され、安定したアドホック網を形成することができることになる。ルーティングテーブルにおいては、通信品質の悪い経路の代わりに、新しく検出されたノードを登録することができるので、ネットワークに参加できなかったノードを登録することができ、孤立したノードを大幅に減らすことが可能となる。
最適なアドホック網が形成されるということは、当該ネットワークを適用したアプリケーションの動作を保証することにつながる。例えば、実施形態の自動検針システムにおいては、最適なアドホック網が形成されることで、各電力需要家Hの端局Tから、検針データを定期的に収集することができ、また、ネットワークに参加できない端局Tを大幅に減らすことが可能となる。
<構成>
図4は、端局Tの機能ブロックの構成例を示す図である。端局Tは、通信ユニット1000、電力量計2000、及び、負荷開閉器3000を備える。破線の矢印は、一部の端局TがゲートウェイGWと通信を行うことを示す。
通信ユニット1000は、無線通信制御部1100、無線通信部1200、タイマー1300、機内通信制御部1400、インタフェース1410、インタフェース1420、外部インタフェース1500、リンク情報記憶部1600、及び、電力量情報記憶部1700を備える。
無線通信制御部1100は、メッセージ送受信部1110、ルーティングテーブル更新部1120、宛先入替処理部1130、及び、評価値算出部1140を有し、各機能部を制御して、無線通信の制御を行う機能を有する。また、無線通信制御部1100は、実施形態の自動検針システムに特有の処理、例えば、電力量計2000に積算電力量の検針を開始させる処理、負荷開閉器3000に対して開閉器をON又はOFFにする指示を出す処理等の処理を行う。更に、無線通信制御部1100は、アドホックメッセージの送信タイミングをタイマー1300から通知されると、そのアドホックメッセージを作成し、メッセージ送受信部1110に対して送信を依頼する処理等の処理を行う。例えば、30分周期の検針データの送信タイミングをタイマー1300から通知されると、電力量情報記憶部1700に記憶されている電力量を読み出して、自装置が属するゲートウェイGW宛のパケット(図17(a)参照)を作成し、メッセージ送受信部1110に送信を依頼する。
メッセージ送受信部1110は、実施形態の自動検針システムを実現するための様々なメッセージ(パケット)を送受信する機能を有する。これらメッセージには、Helloメッセージ、及び、アドホックメッセージが含まれる。
メッセージ送受信部1110は、Helloメッセージの送信タイミングをタイマー1300から通知されると、リンク情報記憶部1600から必要な情報を読み出して、Helloメッセージを作成し、無線通信部1200を介して送信(ブロードキャスト)する。図18(b)に、図3の端局T8が周囲に送信するメッセージの例を示す。このメッセージ(パケット)には、宛先として全宛先(ブロードキャストアドレス)、送信元として自装置の宛先「T8」、リンク情報として、隣接するノードの宛先や、更に先に存在するノードの宛先などの情報等が含まれる。
メッセージ送受信部1110は、他のノードからHelloメッセージを受信すると、受信したHelloメッセージに基づいたルーティングテーブルの更新を、ルーティングテーブル更新部1120に依頼する。
また、メッセージ送受信部1110は、無線通信制御部1100からの依頼を受けて、アドホックメッセージを送信する。アドホックメッセージとしては、検針データの他、自装置の状態通知データや、他の端局Tへのネットワーク疎通を確認するためのPing等のデータがある。
メッセージ送受信部1110は、アドホックメッセージを受信すると、リンク情報記憶部1600に記憶されているルーティングテーブル1610を参照し、メッセージの宛先に転送する。受信したメッセージが自装置に処理を指示するものである場合には、その内容に応じた処理を無線通信制御部1100に依頼する。例えば、電力を止めることを指示する制御データ(図17(b)参照)を受信した場合には、無線通信制御部1100は、負荷開閉器3000に対して開閉器をOFFにする指示を出すなどである。
更に、メッセージ送受信部1110は、アドホックメッセージを送信又は受信すると、そのアドホックメッセージに基づいたルーティングテーブル1610の更新を、ルーティングテーブル更新部1120に依頼する。
ルーティングテーブル更新部1120は、メッセージ送受信部1110からの依頼により、リンク情報記憶部1600に記憶されているルーティングテーブル1610を更新する。
宛先入替処理部1130は、ルーティングテーブル更新部1120からの依頼により、ルーティングテーブルの宛先を、新たな宛先と入れ替える処理を行う。
評価値算出部1140は、ルーティングテーブルに登録されている宛先ごとに、その宛先の評価値を算出する。評価値は、宛先までの繋がりやすさを示す値をいい、大きいほど繋がりやすいものとする。評価値は、通信実績や、現在の通信環境などに基づいて算出される。
無線通信部1200は、他の端局T(図4の「端局T’」)、又は、ゲートウェイGWと、無線LAN規格によりアドホックモードでの通信を行う機能を有する。
タイマー1300は、無線通信制御部1100、及び、機内通信制御部1400に時刻を通知し、また、予め定められた所定周期での各種割り込みを掛ける機能を有する。例えば、無線通信制御部1100に、検針データの送信タイミングとして30分毎に割り込みを掛ける。機内通信制御部1400に、電力積算値の検出タイミングとして5分毎に割り込みを掛ける等である。無線通信制御部1100は、割り込みのタイミングで電力量情報記憶部1700から30分間の検針データを読み出して送信し、機内通信制御部1400は、割り込みのタイミングで電力量計2000から5分間の受電電力量を取得して電力量情報記憶部1700に記憶させる。
インタフェース1410は、電力量計2000から検針データを受信するインタフェースであり、インタフェース1420は、負荷開閉器3000に制御データを送信するインタフェースである。
機内通信制御部1400は、インタフェース1410、及び、インタフェース1420を介して、電力量計2000、及び、負荷開閉器3000との通信を制御する機能を有する。また、機内通信制御部1400は、電力量計2000から受電電力量を定期的に取得して電力量情報記憶部1700に記憶させておく機能を有する。
外部インタフェース1500は、外部の設定ツール等と接続するインタフェースであり、設定ツール等を介してユーザの操作を受け付け、ユーザ操作に応じて、端局Tの初期設定時には初期値を設定したり、各記憶部にデータを記憶させたり、記憶されているデータを書き換えたりする機能を有する。
リンク情報記憶部1600は、図3で示すようなネットワーク全体のトポロジー情報、ルーティングテーブル1610など、データの送受信に必要な情報を、適時更新しながら記憶しておく機能を有する。更に、リンク情報記憶部1600は、宛先までの経路の評価値を算出する為に必要な情報を記憶している。
電力量情報記憶部1700は、機内通信制御部1400が電力量計2000から取得した電力量を記憶しておく機能を有する。
図5は、ゲートウェイGWの機能ブロックの構成例を示す図である。ゲートウェイGWは、無線通信制御部4100、無線通信部1200、タイマー1300、外部インタフェース1500、外部通信制御部4000、リンク情報記憶部1600、及び、検針データ記憶部1750を備える。
無線通信制御部4100は、各機能部を制御して、無線通信の制御を行う機能を有する。また、無線通信制御部4100は、実施形態の自動検針システムに特有の処理、例えば、端局Tから受信した検針データを検針データ記憶部1750に記憶させる処理、所定のタイミングで、検針データ記憶部1750に記憶されている検針データを読み出して、外部通信制御部4000を介してサーバ装置1に送信する処理等を行う。更に、無線通信制御部4100は、外部通信制御部4000を介してサーバ装置1から端局Tに対するアドホックメッセージの送信依頼があると、例えば、制御データの送信依頼があると、制御データのパケット(図17(b)参照)を作成し、メッセージ送受信部1110に送信を依頼する。
無線通信部1200、タイマー1300、外部インタフェース1500、リンク情報記憶部1600は、通信ユニット1000の無線通信制御部1100、無線通信部1200、タイマー1300、外部インタフェース1500、リンク情報記憶部1600と同様の機能を有する。
外部通信制御部4000は、サーバ装置1と通信する機能を有する。
検針データ記憶部1750は、自装置であるゲートウェイGWに属する端局Tから送信されてきた検針データを記憶しておく機能を有する。
実施形態の通信ユニット1000、及び、ゲートウェイGWはそれぞれ、例えば、コンピュータを用いて構成可能であり、ハードディスク等の記憶部(不図示)に格納されているルーティングテーブルの宛先入替方法等をプログラムしたソフトウェアを、CPUにより実行することによって上述の無線通信制御部1100等がコンピュータ上に実現される。尚、機能部の一部は、ハードウェアで実現されていてもよい。
<動作>
以下、端局Tの通信ユニット1000、及び、ゲートウェイGWの動作について、図10〜図12を用いて説明する。
図10は、ルーティングテーブルの更新処理のフローチャートである。この処理は、ルーティングテーブル更新部1120が、宛先入替処理部1130及び評価値算出部1140を用いて行う処理である。
メッセージ送受信部1110は、Helloメッセージを受信したとき、アドホックメッセージを送信したとき、アドホックメッセージを受信したときに、ルーティングテーブル更新部1120に、ルーティングテーブルの更新を依頼する。
依頼を受けたルーティングテーブル更新部1120は、Helloメッセージが受信された場合には(ステップS10:Yes)、ルーティングテーブル(RT)登録処理を行う(ステップS11)。ルーティングテーブル登録処理とは、Helloメッセージを解析し、登録すべきノードを検出した場合はリンク情報記憶部1600に記憶されているルーティングテーブル1610に登録する等の処理であり、図11を用いて説明する。
図11は、ルーティングテーブル登録処理のフローチャートである。
ルーティングテーブル更新部1120は、受信されたHelloメッセージを解析し、喪失した宛先、例えば、撤去された端局T等を検出すると(ステップS20:Yes)、喪失した宛先を、ルーティングテーブル1610から削除する(ステップS21)。具体的には、ルーティングテーブル更新部1120は、喪失した宛先が最終宛先1612として設定されているレコードを、ルーティングテーブル1610から削除する。喪失した宛先が複数ある場合には、複数の宛先を削除する。喪失した宛先を検出しない場合は(ステップS20:No)、削除は行わない。尚、喪失した宛先とは、その宛先までの予備の経路を含めたすべての経路が切れたものをいう。
次に、ルーティングテーブル更新部1120は、ルーティングテーブル1610に登録されていないノードを検出すると、つまり、最終宛先1612として設定されていない宛先のノードを検出すると(ステップS22:Yes)、ルーティングテーブル1610に空きがある場合は(ステップS23:Yes)、検出されたノードの宛先(以下、「新たな宛先」という。)をルーティングテーブル1610に登録する(ステップS24)。具体的には、ルーティングテーブル更新部1120は、新たな宛先を最終宛先1612として設定し、Helloメッセージ等から得られた情報を元に種別1613〜電界1617を設定し、評価値算出部1140に算出を依頼して得られた評価値を、評価値1618として設定したレコードを作成し、ルーティングテーブル1610に追加登録する。そして、AMフラグ1619として「OFF」を設定する(ステップS26)。
ルーティングテーブル1610に空きが無い場合(ステップS23:No)、ルーティングテーブル更新部1120は、宛先入替処理部1130に入替処理を依頼する。依頼を受けた宛先入替処理部1130は、新たな宛先を、ルーティングテーブル1610に登録されているいずれかの宛先と入れ替える宛先入替処理を行う(ステップS25)。この宛先入替処理を、図12を用いて説明する。
図12は、宛先入替処理のフローチャートである。
宛先入替処理部1130は、ルーティングテーブル1610のAMフラグ1619として「OFF」が設定されている宛先を検索する。具体的には、宛先入替処理部1130は、まず、AMフラグ1619として「ON」が設定されており、経過時間1620が特定期間を経過しているレコードのAMフラグ1619に「OFF」を設定する。そして、AMフラグ1619として「OFF」が設定されているレコードの検索を開始する。「OFF」が設定されているレコードが無い場合は(ステップS30:No)、宛先入替処理部1130は、宛先入替処理を終了する。AMフラグ1619として「OFF」が設定されているレコードが検索された場合(ステップS30:Yes)、宛先入替処理部1130は、「OFF」が設定されているレコードのうち、評価値1618として設定されている評価値が最も小さい(評価が最も低い)レコードの宛先を、入替候補として選択する(ステップS31)。宛先入替処理部1130は、選択した宛先のレコードを削除し、新たな宛先を登録する(ステップS32)。
これで、図11のステップS25の宛先入替処理が終了する。宛先入替処理部1130による宛先入替処理が終了したら、ルーティングテーブル更新部1120は、新たに登録された宛先のAMフラグ1619として「OFF」を設定する(ステップS26)。
ステップ22の処理において検出されたノードの宛先について、ステップS23〜S26の処理を行い(ステップS27:No)、全てのノードについての処理が終了すると(ステップS27:Yes)、ルーティングテーブル登録処理を終了する。
これで、図10のステップS11のルーティングテーブル登録処理が終了する。ルーティングテーブル登録処理が終了すると、ルーティングテーブル更新部1120は、ルーティングテーブル1610の最終宛先1612として設定されている宛先のうち、受信したHelloメッセージが、その存在を示す連続して3回目のHelloメッセージである場合には(ステップS12:Yes)、その宛先が最終宛先1612として設定されているレコードのAMフラグ1619に「ON」を設定し、経過時間1620として設定されている経過時間をリセットし、最初からカウントを開始する(ステップS13)。
次に、ルーティングテーブル更新部1120は、アドホックメッセージが送信、又は、受信された場合には(ステップS14:Yes)、そのアドホックメッセージの送信先の宛先、又は、送信元の宛先が、ルーティングテーブル1610の最終宛先1612として設定されているレコードを検索する。レコードが見つかった場合には(ステップS15:No)、そのレコードのAMフラグ1619に「ON」を設定し、経過時間1620として設定されている経過時間をリセットし、最初からカウントを開始する(ステップS16)。
ルーティングテーブル更新処理を終了したルーティングテーブル更新部1120は、その旨をメッセージ送受信部1110に通知する。
<変形例>
実施形態では、送受信したアドホックメッセージの送信先、又は、送信元の宛先が、ルーティングテーブル1612に登録されている場合に、その宛先のAMフラグ1619を「ON」にして、送信先までの経路を維持している。変形例では、アドホックメッセージの送信先、又は、送信元の宛先が、ルーティングテーブル1612に登録されていない場合には、その送信先、又は、送信元の宛先を、一時的に記憶しておくための経路予約テーブル1630を設ける。そして、その宛先のノードの存在を示すHelloメッセージを受信すると、ルーティングテーブル1610に移動させ、AMフラグ1619を「ON」にする。AMフラグ1619を「ON」にするのは、宛先がルーティングテーブル1610に新しく登録された場合であっても、直ぐには入替候補となって削除されることが無いようにするためである。経路予約テーブル1630に登録されている宛先は、アドホックメッセージを送信、又は、受信したノードの宛先であるので、その宛先のノードは存在して動作している可能性が高いからである。
例えば、自動検針システムにおいて端局Tが新たに設置された場合、その端局の電源が入れられると、Helloメッセージの送信及び受信を開始する。新設された端局Tは、隣接端局とHelloメッセージのやり取りが可能となると、隣接端局からのHelloメッセージに含まれた全ての宛先(隣接端局が属するゲートウェイGWの宛先も含む)を、自装置のルーティングテーブルに登録する。そして、新設された端局Tは、ルーティングテーブルに登録されているゲートウェイGWを送信先とした端末登録要求パケットを作成し、隣接端末に送信する。端末登録要求パケットが、隣接端局、及び、ゲートウェイGWを経由してサーバ装置1に到達し、サーバ装置1からの応答パケットを受信した場合、その新設された端局Tは、自動検針システムのネットワークに参加できたことになり、検針データの送信を開始する。
この場合、端末登録要求パケットが、アドホックメッセージとなる。アドホックメッセージが送信された時には、隣接端局は、新設された端局Tの存在を認識しているが、この隣接端局より後に経由する端局、及び、ゲートウェイGWは、未だ、新設された端局Tの存在を認識していない場合があり得る。端局の存在は、Helloメッセージに含まれて、ネットワーク内に伝搬していくが、Helloメッセージの送信周期や伝搬経路によっては、アドホックメッセージを受信する方が端局を認識するよりも早い場合が発生し得る。特に、ルーティングテーブルの溢れが発生する場合には、そもそもルーティングテーブルに登録され難いので、Helloメッセージに含まれて伝搬され難くなり、存在の認識が遅くなる傾向となる可能性が高い。
従って、未だその存在を認識していないノード(ルーティングテーブルに登録されていないノード)を送信元、または、送信先としたアドホックメッセージを受信した場合には、一旦、経路予約テーブル1630に記憶しておいて、その後の一定期間内にHelloメッセージにより存在を確認できたときに、AMフラグ1619を「ON」としてルーティングテーブルに移動する。尚、上記の例では、アドホックメッセージとして端末登録要求パケットを用いて説明しているが、端末登録要求パケットに限らず、他のメッセージでも良い。また、新設された端局Tを例に説明しているが、新設された端局Tに限らず、例えば、障害物が撤去されて通信範囲が広がった端局Tなどであっても良い。
経路予約テーブル1630を用いない場合は、ノードの存在を示すHelloメッセージが受信されると、そのノードの宛先をルーティングテーブル1610に登録するが、AMフラグ1619は「OFF」である。その後、そのノードの存在を示すHelloメッセーが連続3回受信されるか、そのノード宛又はそのノードが送信したアドホックメッセージが受信された場合に、AMフラグ1619が「ON」とされる。従って、そのノードの宛先がルーティングテーブル1610に登録されてから、AMフラグ1619が「ON」とされるまでの間に、入替候補となってルーティングテーブル1610から削除されてしまう可能性がある。しかし、経路予約テーブル1630を用いた場合には、AMフラグ1619を「ON」としてルーティングテーブル1610に登録されるので、入替候補となって削除されてしまうことなく、少なくとも特定期間の間は実績を積んで評価を上げることが可能となる。この特定期間内に、アドホックメッセージが一度も送受信されない場合、つまり、通信品質が悪く、確保しておく必要がない経路である場合は、AMフラグ1619は「OFF」とされて、入れ替えられることになる。
従って、経路予約テーブル1630を用いることで、新たに検出されたノードを迅速にルーティングテーブルに登録でき、通信品質の良い経路は残され、通信品質の悪い経路は削除されるので、早期に、最適なネットワークを構築することが可能となる。
<経路予約テーブルの構成例>
図13は、経路予約テーブル1630の構成及び内容の例を示す図である。経路予約テーブル1630は、リンク情報記憶部1600に記憶されている。
経路予約テーブル1630には、複数の宛先(ノード)が登録されるが、登録可能なノードの数(レコード数)は、ルーティングテーブル1610に登録可能なノードの数よりも少なく、構築するネットワークに依存する。実施形態の自動検針システムでは、例えば、ルーティングテーブル1610に登録可能なノード数が1500個である場合には、その10分の1の150個のノードが、経路予約テーブル1630には登録可能である。尚、図13では、「m」個と記載している。
経路予約テーブル1630は、ルーティングテーブル1610とほぼ同様の構成をしているが、AMフラグ1619を有しない点、各宛先が予備の経路を有しない点が異なる。
経路予約テーブル1630は、番号1631、最終宛先1632、種別1633、隣接宛先1634、実績1635、ホップ1636、電界1637、評価値1638、及び、経過時間1639を有する。
番号1631は、最終宛先1632が示す宛先の登録番号を示す。
最終宛先1632、種別1633、隣接宛先1634、実績1635、ホップ1636、電界1637、及び、評価値1638のそれぞれは、ルーティングテーブル1610の最終宛先1612、種別1613、隣接宛先1614、実績1615、ホップ1616、電界1617、評価値1618とそれぞれ同様である。つまり、最終宛先1632は、最終的な送信先であるノードを特定するための識別子を示し、隣接宛先1634は、最終宛先1632が示す宛先にパケットを送信する場合に、パケットを渡すべき、隣接するノードの識別子を示す。また、実績1635は、隣接宛先1634が示す宛先のノード(隣接ノード)を経た、最終宛先1632が示す宛先へのデータ送達実績(通信実績)を示し、ホップ1636は、最終宛先1632が示す宛先までのホップ数を示し、電界1637は、隣接宛先1634が示すノードからのHelloメッセージの電波強度(電界強度)を示し、評価値1638は、最終宛先1632が示す宛先までの経路の評価値を示す。
経過時間1639は、最終宛先1632に示す宛先が登録されてからの経過時間を示す。単位は、「分」である。
経路予約テーブル1630では、宛先が登録されてから所定期間、例えば、10分が経過したら、削除されるものとする。この所定期間は、アドホックメッセージの送信間隔、Helloメッセージの送信周期、ネットワークを構成するノードの数、通信環境等を元に決定される。
<経路予約テーブルの使用例>
以下、図14を用いて、経路予約テーブルの使用例を具体的に説明する。
図14は、ノードHを送信先(宛先)としたアドホックメッセージ、及び、Helloメッセージを、新たに設置されたノードEが送信した場合の経路予約テーブル1630、及び、ルーティングテーブル1610を説明するための図である。円で示されたノードE〜Hの4つのノードが記載され、破線で結ばれたノード同士は相手の存在を認識していることを示す。図14では、ハッチングかかけられているノードGの経路予約テーブル1630を例に、その使用例を説明する。
図14において、太線矢印で示すように、ノードEからノードHまでは、ノードF、ノードGを経由する経路が確保されているものとする。つまり、ノードFからノードHまでの経路は確立されており、ノードEとノードFとは、互いに認識している状態とする。この場合、ノードFのルーティングテーブル1610には、最終宛先1612が「H」で、隣接宛先1614が「G」のレコードが登録されており、また、ノードGのルーティングテーブル1610には、最終宛先1612が「H」で、隣接宛先1614が「H」のレコードが登録されている。
ノードEは、隣接するノードとHelloメッセージをやり取りすることで、ノードHの存在を認識して、ノードHを送信先としたアドホックメッセージをノードFに送信する。ノードFは、受信したアドホックメッセージを、ノードGに転送する。
アドホックメッセージを受信したノードGは、受信したアドホックメッセージをノードHに送信し、ルーティングテーブル1610の最終宛先1612が「H」のAMフラグ1619を「ON」にする。そして、アドホックメッセージの送信元のノードEの宛先は、ルーティングテーブル1610に登録されていないので、経路予約テーブル1630に登録する(図14の(1)参照)。
そして、ノードGは、ノードEを経路予約テーブル1630に登録してから所定期間経過する前に、ノードEの存在を示すHelloメッセージをいずれかのノードから受信した場合は、ノードEをルーティングテーブル1610に移動する。詳細には、ルーティングテーブル1610に空きがある場合は、最終宛先1612として「E」を設定したレコードを追加し、AMフラグ1619を「ON」にする。ルーティングテーブル1610に空きがない場合は、AMフラグ1619が「OFF」で評価値1618の値が最も小さい宛先と、ノードEとを入れ替え、AMフラグ1619を「ON」にする(図14の(2)参照)。そして、経路予約テーブル1630から最終宛先1632が「E」のレコードを削除する。
このように、経路予約テーブル1630を用いることで、動作しているノードを、迅速にルーティングテーブル1610に登録することができ、AMフラグ1619を「ON」にすることで、適切な経路は早期に固定化、つまり、入替対象となり難くすることが可能となる。
<動作>
以下、経路予約テーブル1630を用いた場合の、端局Tの通信ユニット1000、及び、ゲートウェイGWの動作について、図15、図16を用いて説明する。
図15は、経路予約テーブル1630を用いた場合のルーティングテーブルの更新処理のフローチャートであり、図10で示した実施形態のルーティングテーブルの更新処理のフローチャートに、ステップS40〜S43を追加したものである。図15のフローチャートのステップS10〜S16の処理は、図10のフローチャートのステップS10〜S16の処理と同様である。従って、ここでは、ルーティングテーブル更新部1120が経路予約テーブル1630を用いた処理を行うものとして説明し、ステップS40〜S43の処理を中心に説明する。
メッセージ送受信部1110は、Helloメッセージを受信したとき、アドホックメッセージを送信したとき、アドホックメッセージを受信したときに、ルーティングテーブル更新部1120に、ルーティングテーブルの更新を依頼する。
依頼を受けたルーティングテーブル更新部1120は、Helloメッセージが受信された場合には(ステップS10:Yes)、ルーティングテーブル(RT)登録処理を行う(ステップS11)。
ルーティングテーブル登録処理が終了すると、ルーティングテーブル更新部1120は、ルーティングテーブル1610の最終宛先1612として設定されている宛先のうち、受信したHelloメッセージが、その存在を示す連続して3回目のHelloメッセージである場合には(ステップS12:Yes)、その宛先が最終宛先1612として設定されているレコードのAMフラグ1619に「ON」を設定し、経過時間1620に設定されている経過時間をリセットし、最初からカウントを開始する(ステップS13)。
次に、ルーティングテーブル更新部1120は、経路予約テーブル(予約T)1630に登録されている宛先のうち、受信したHelloメッセージがその存在を示している宛先があるか否かを判断する(ステップS40)。具体的には、ルーティングテーブル更新部1120は、まず、経過時間1639が所定期間、例えば、10分間を経過しているレコードを削除する。そして、ルーティングテーブル更新部1120は、最終宛先1632として設定されている宛先の存在の有無を、Helloメッセージに含まれているノード集合等の情報から判断する。
経路予約テーブル1630にHelloメッセージが存在を示している宛先が登録されている場合(ステップS40:Yes)、ルーティングテーブル更新部1120は、予約宛先登録処理、つまり、Helloメッセージが存在を示している宛先を、経路予約テーブル1630からルーティングテーブル1610に移動する処理を行う(ステップS41)。この予約宛先登録処理を、図16を用いて説明する。
図16は、予約宛先登録処理のフローチャートである。
ルーティングテーブル1610(RT)に空きがある場合(ステップS50:No)、ルーティングテーブル更新部1120は、受信したHelloメッセージが存在を示している経路予約テーブル1630の宛先(以下、「移動予約宛先」という。)をルーティングテーブル1610に登録する(ステップS51)。そして、ルーティングテーブル更新部1120は、移動予約宛先を経路予約テーブル1630から削除する(ステップS55)。
ルーティングテーブル1610(RT)に空きが無い場合(ステップS50:No)、ルーティングテーブル更新部1120は、ルーティングテーブル1610のAMフラグ1619として「OFF」が設定されている宛先を検索する。具体的には、ルーティングテーブル更新部1120は、まず、AMフラグ1619として「ON」が設定されており、経過時間1620が特定期間を経過しているレコードのAMフラグ1619に「OFF」を設定する。そして、AMフラグ1619として「OFF」が設定されているレコードの検索を開始する。「OFF」が設定されているレコードが無い場合は(ステップS52:No)、ルーティングテーブル更新部1120は、予約宛先登録処理を終了する。
AMフラグ1619として「OFF」が設定されているレコードが検索された場合(ステップS52:Yes)、ルーティングテーブル更新部1120は、「OFF」が設定されているレコードのうち、評価値1618として設定されている評価値が最も低いレコードの宛先を、入替候補として選択する(ステップ53)。ルーティングテーブル更新部1120は、選択した宛先のレコードを削除し、移動予約宛先を登録する(ステップS54)。そして、ルーティングテーブル更新部1120は、移動予約宛先を経路予約テーブル1630から削除する(ステップS55)。
これで、図15のステップS41の予約宛先移動処理が終了する。
そして、ルーティングテーブル更新部1120は、ルーティングテーブル1610に登録した移動予約宛先が最終宛先1612として設定されているレコードのAMフラグ1619に「ON」を設定し、経過時間1620として設定されている経過時間をリセットし、最初からカウントを開始する(ステップS42)。
次に、ルーティングテーブル更新部1120は、アドホックメッセージが送信、又は、受信された場合には(ステップS14:Yes)、そのアドホックメッセージの送信先の宛先、又は、送信元の宛先が、ルーティングテーブル1610の最終宛先1612として設定されているレコードを検索する。レコードが見つかった場合には(ステップS15:No)、そのレコードのAMフラグ1619に「ON」を設定し、経過時間1620として設定されている経過時間をリセットし、最初からカウントを開始する(ステップS16)。
レコードが見つからなかった場合には(ステップS15:Yes)、そのアドホックメッセージの送信元の宛先を経路予約テーブル1630に登録する(ステップS43)。具体的には、ルーティングテーブル更新部1120は、その送信元の宛先を最終宛先1632として設定し、Helloメッセージ等から得られた情報を元に種別1633〜電界1637を設定し、評価値算出部1140に算出を依頼して得られた評価値を、評価値1638として設定し、経過時間1639として「0」を設定したレコードを作成する。そして、経過時間のカウントを開始する。
ルーティングテーブル更新処理を終了したルーティングテーブル更新部1120は、その旨をメッセージ送受信部1110に通知する。
このように、経路予約テーブル1630を用いることで、実施形態では、動作しているノードを、迅速にルーティングテーブル1610に登録することができ、AMフラグ1619を「ON」にすることで、適切な経路は早期に固定化、つまり、入替対象となり難くすることが可能となるので、結果的に、早期にネットワーク全体の経路の最適化を行うことが可能となる。
<ルーティングテーブルが溢れた場合の例>
以下、図19を用いて、ルーティングテーブルが溢れた場合の例を説明し、図20を用いて、ルーティングテーブルの溢れが解消され最適に形成された経路の例を説明する。
図19、図20において、ゲートウェイGWを示す円が円周上に配置された破線の楕円は、円周上のゲートウェイGWが制御下に置くことを想定したエリアを示す。ここでのエリアとは、電波環境の障害となる建物や、ホップ数などを考慮に入れた地域を示す。円で示されるノードを結ぶ破線は、図3と同様に、破線の両端のノードは互いにその存在を認識していることを示す。
まず、図19において、ハッチングが掛かっている端局T27、及び、ゲートウェイGWbのルーティングテーブルが溢れているものとする。破線の太線矢印は、矢印の先のゲートウェイGWへの経路として使用している経路を示し、破線の白抜き矢印は、矢印の先のゲートウェイGWへの経路として使用している経路であるが、不安定な経路であることを示す。つまり、ゲートウェイGWbのルーティングテーブルが溢れているので、ルーティングテーブルに登録されたり削除されたりを繰り返している経路を示す。
端局T27のルーティングテーブルが溢れていることにより、例えば、端局T27しか認識できない端局T26は、ネットワークに参加できずに孤立してしまう。また、端局T27を経由してゲートウェイGWbまでの経路が最適である端局T25は、端局T27を経由することができず、ゲートウェイGWaに属することとなり、ホップ数が多くなり、経路が切れるリスクが高くなっている。
また、ゲートウェイGWbのルーティングテーブルが溢れていることにより、例えば、新設された端局T30は、接続が予定されているゲートウェイGWbまで端末登録要求パケットを送信するが、ゲートウェイGWbに登録されないので、孤立し、検針データの送信業務を開始できない。タイミング良くゲートウェイGWbのルーティングテーブルに登録されたとしても、実績が詰めないため評価が上がらずに、新設された端局T37と入れ替えられてしまい、経路が安定しないことになる。入れ替えられた端局T37は、ゲートウェイGWbに登録されたとしても、実績が詰めないため評価が上がらずに、再度、端局T30と入れ替えられてしまい、経路が安定しないことになる。ゲートウェイGWbへの経路が安定しないので、端局T37は、ゲートウェイGWcへの経路を確立するが、最適な経路ではないので安定せず、ゲートウェイGWbとゲートウェイGWcとに交互に属することを繰り返すことになる。ゲートウェイGWを変更する際には、ゲートウェイGW切替通知等の自情報をサーバ装置1に送信する必要があるので、ネットワーク上を流れるパケットの量が増えることになる(灰色の太線破線矢印を参照)。また、端局T37の経路が安定しないので、端局T37を経由する端局T38も、ゲートウェイGWまでの経路が安定しないことになる。
本実施形態のルーティングテーブルの入れ替え方法を使用することで、適切なルーティングが行われて、端局T27、及び、ゲートウェイGWbのルーティングテーブルが最適化され、不要な経路が削除されて安定した経路が残された結果を図20に示す。
端局T27のルーティングテーブルが最適化されることにより、例えば、端局T27しか認識できない端局T26は、端局T27に登録され、ネットワークに参加でき、検針データの送付業務を開始できる。また、端局T25は、端局T27を経由して、最適なゲートウェイGWaに属することとなり、ホップ数も減り、経路が切れるリスクが低くなる。
また、ゲートウェイGWbのルーティングテーブルが最適化されることにより、例えば、新設された端局T30はゲートウェイGWbに登録され、孤立が解消して検針データの送信業務を開始できるようになる。新設された端局T37は、本来予定されているゲートウェイGWbに登録され、経路が安定し、ゲートウェイGWを変更することがないので、ゲートウェイGW切替通知等の自情報をサーバ装置1に送信する必要がなくなり、ネットワーク上を流れるパケットの量が増えないことになる。また、端局T37を経由する端局T38も、ゲートウェイGWまでの経路が安定することになる。更に、端局T39は、ゲートウェイGWaに登録されていたが、近くにゲートウェイGWdが新設され、より安定した経路のゲートウェイGWdに属することになる。
このように、ルーティングテーブルが最適化されて、最適なルーティングが行われることで、ネットワークが安定し、更に、無駄なトラフィックも削減できることになる。
<補足>
実施形態では、ルーティングテーブル1610のAMフラグ1619は、「ON」にされてから特定期間(例えば、6時間)内に、アドホックメッセージが送信、又は、受信されると、経過時間がリセットされて特定期間を最初からカウントすることとしている。つまり、特定期間に1回以上の頻度で、アドホックメッセージを送信、又は、受信した場合に、入替候補としないこととしている。この他の方法でアドホックメッセージの送受信の頻度を特定することとしても良い。例えば、特定期間内にアドホックメッセージの送信、又は、受信が所定回数以上、例えば、2回あった場合にAMフラグ1619を「ON」にし、特定期間を最初からカウントする。特定期間内にアドホックメッセージの送信、又は、受信が所定回数以上、例えば、2回以上あった場合には、特定期間経過後、更に、特定期間のカウントを開始するなどである。この頻度は、ネットワークが適用されるアプリケーションの内容、ネットワークの規模などにより、決定される。
また、実施形態では、AMフラグ1619を「ON」にするためのアドホックメッセージは、特定のノード(端局T、ゲートウェイGW)に届けるために送信されるメッセージであり、例えば、検針データをゲートウェイGWに届けるためのメッセージ、自装置が属するゲートウェイGWの情報などの自情報をゲートウェイGWに届けるためのメッセージ、制御データを端局Tに届けるためのメッセージ等であることとしているが、これらの一部のメッセージを送信、又は、受信した場合にのみ、AMフラグ1619を「ON」にすることとしても良い。例えば、実施形態の自動検針システムでは、本来の業務目的である検針データを送信、又は、受信した場合にのみ、AMフラグ1619を「ON」にするなどである。いずれのメッセージでAMフラグ1619を「ON」にするかは、ネットワークが適用されるアプリケーションの内容、ネットワークの規模などにより、決定される。
また、実施形態では、アドホックメッセージを転送するノードは、ルーティングテーブル1610の最終宛先1612としてアドホックメッセージの送信先及び送信元の双方の宛先が設定されているAMフラグ1619それぞれを「ON」にすることとしている。例えば、図7のノードBは、ノードA(送信元)がノードD(送信先)宛に送信したアドホックメッセージを転送する際に、最終宛先1612が「D」及び「A」のAMフラグ1619を「ON」としている。しかし、各ノードは、アドホックメッセージの送信先及び送信元のうち、予め決められたいずれか一方の宛先のAMフラグ1619のみを「ON」とすることとしても良い。例えば、図7のノードBが、ノードA(送信元)がノードD(送信先)宛に送信したアドホックメッセージを転送する際に、最終宛先1612が「D」のみのAMフラグ1619を「ON」とするなどである。ただし、送信先及び送信元のうち一方の宛先のAMフラグ1619のみを「ON」とする場合も、経路の確保に効果を奏するが、送信先及び送信元の双方の宛先のAMフラグ1619それぞれを「ON」にする方が、経路の確保が確実になるため、高信頼性が要求されるアドホックネットワークにおいてはより有効である。
また、実施形態のルーティングテーブル1610は、以下のように記述できる。
マルチホップ無線通信により接続される複数の通信装置を有する無線ネットワークシステムの前記通信装置が備えるルーティングテーブルのデータ構造であって、宛先と、当該宛先への中継先と、当該宛先を送信先とした特定のデータを送信又は受信する頻度が閾値を上回っているか否かを示す頻度情報とを含むことを特徴とする。
また、上述のデータ構造において、前記頻度情報は、前記通信装置が前記ルーティングテーブルから宛先を削除する処理において、前記頻度が前記閾値を上回っていることを前記頻度情報が示している宛先を前記ルーティングテーブルから削除しないために用いられる。
このような構成のデータ構造によれば、頻度情報が特定のデータを送信又は受信する頻度が閾値を上回っていることを示している宛先は、ルーティングテーブルから削除され難くなりルーティングテーブルの最適化が図られるので、パケットのルーティングが最適に制御される無線ネットワークシステムを構築することが可能となる。
本発明を表現するために、上述において図面を参照しながら実施形態を通して本発明を適切且つ十分に説明したが、当業者であれば上述の実施形態を変更および/または改良することは容易に為し得ることであると認識すべきである。したがって、当業者が実施する変更形態または改良形態が、請求の範囲に記載された請求項の権利範囲を離脱するレベルのものでない限り、当該変更形態または当該改良形態は、当該請求項の権利範囲に包括されると解釈される。