パケット中継システム及び無線ノード
【課題】ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できるパケット中継システムを提供する。
【解決手段】パケット中継システムに含まれる各ノードは、ツリー状に構成され、隣接ノード1つからのパケットを所定の送信タイミングが到来するまで保持し、当該送信タイミングが到来するまでに他の隣接ノードからのパケットを受信した場合に当該受信パケットに含まれるアドレスと、当該保持パケットに含まれるアドレスと、自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成し、当該送信タイミングの到来に応じて最上位ノード側に位置する隣接ノードへ当該集約パケットを中継する。
【解決手段】パケット中継システムに含まれる各ノードは、ツリー状に構成され、隣接ノード1つからのパケットを所定の送信タイミングが到来するまで保持し、当該送信タイミングが到来するまでに他の隣接ノードからのパケットを受信した場合に当該受信パケットに含まれるアドレスと、当該保持パケットに含まれるアドレスと、自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成し、当該送信タイミングの到来に応じて最上位ノード側に位置する隣接ノードへ当該集約パケットを中継する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データパケットを相互に中継する複数のノードを含むパケット中継システムに関する。
【背景技術】
【0002】
パケット中継機能を有する複数の無線ノードによってネットワークを構成し、互いに隣接している無線ノード間で相互にパケットを中継するマルチホップ無線ネットワークが知られている。無線ノード間でパケットを順次中継することにより、電波が直接届かない無線ノードへパケットを転送することができる。
【0003】
パケットを所望の無線ノードに中継するためには、宛先アドレスから次に転送すべき無線ノードを決定するためのルーティングプロトコルが必要とされる。例えばジグビー(ZigBee(登録商標))アライアンスでは、アドレスの割り当て方法を工夫することによりルーティングテーブルが不要となるクラスタツリールーティング方式、メッシュトポロジーの構成できるAODV(Ad Hoc On-Demand Distance Vector)方式、複数のノードからデータを効率的に収集できるメニートゥーワン(Many to One)方式などによるルーティングプロトコルが標準化されている。特にメニートゥーワン方式は、シンクノードと複数のノードとの間の1対nの通信について考慮された方式であるので、環境情報のセンシングやメータの自動検針などのアプリケーションへの適用が期待されている。
【0004】
図22は、メニートゥーワン方式におけるルーティング時のノード間のパケット中継の態様を表す模式図である。図22(a)は、ノードb〜jの各々が、シンクノードであるノードaへパケットを中継するための上り経路を設定するときのRREQ(Route Request)パケット中継の態様を表す模式図である。ノードaは、送信先アドレスをブロードキャストアドレスとして、RREQパケットを送信する。RREQパケットを受信したノードは、他のノードへRREQパケットを中継する。RREQパケットには、ネットワーク上における任意の2つのノード間の論理的な距離を表すパスコストが含まれている。RREQパケットの中継時には、自身に隣接しているノードについてのリンクコストをパスコストに加算して送信する。リンクコストは、ネットワーク上におけるノード間の論理的な距離を表すものであり、パスコスト算出の基礎となるコストである。リンクコストは、ノード間の受信強度やパケットエラー率などから算出される。このようにRREQパケットの中継を繰り返すことにより、ノードb〜jの各々は、シンクノードaへパケットを転送するための上り経路を設定することができる。つまり、ノードb〜jの各々は、例えば最も小さいパスコストに対応するノードをパケット中継先のノードとして選択することにより、最適な条件にてパケットをシンクノードへ中継することができる。
【0005】
図22(b)は、シンクノードであるノードaからノードhへの下り経路を設定するときのRREC(Route Record)パケット中継の態様を表す模式図である。ノードhは、宛先をノードaとし、自身のアドレスを含めたRRECパケットを送信する。RRECパケットを受信したノードは自身のアドレス及び中継回数を含めたRRECパケットを転送先のノードへ転送する。つまり、ノードhからd、c、b、aの順にアドレスが追加されたパケットがノードaに転送される。ノードaから他のノードへの下り経路を設定するときも同様の処理がなされる。
【0006】
図22(c)は、下り経路設定後にノードaからノードhへのパケット中継の態様を表す模式図である。ノードaは、下り経路設定時におけるアドレス追加順と逆順にしたアドレスをパケットヘッダに記載してデータパケットを送信する。データパケットを受信したノードは、パケットヘッダ内に記載されている自身のアドレスを削除して転送先のノードへ転送する。このようにして、ノードaからb、c、d、hの順にデータパケットを中継できる。これらのルーティングは、送信元ノード(ソースノード)が、パケットを中継するノードを一意に決定する経路制御であるので、ソースルーティングと呼ばれている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】ZigBeeSpecification Revision17 (ZigBee Document 053474r17)
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、従来のメニートゥーワン方式におけるルーティングにおいては、リンクコストの算出方法が明確でなかった。非特許文献1では、LQI(Link Qulity Indicator)などの要素からリンクコストを算出するとしているが、RREQコマンドを受信した際のLQIにはばらつきがあるので、正確なリンクコストを算出するのが困難であるという問題があった。特に屋外など広範囲に亘る場所にノードを設置した場合、ノード間を人や自動車などの遮蔽物が通過したとき、ノード間のリンクの瞬断が生じ、リンク状況が変動してしまう。そのため、リンク状況が変動した場合においても、適切なリンクコストを算出できるシステムが要望されている。
【0009】
また、従来のメニートゥーワン方式におけるルーティングにおいては、シンクノードへの上り経路を確立するために、上記した図22(a)の如くRREQパケットを定期的にブロードキャスト送信する必要があった。RREQパケットは、各ノードで一度は再送され、ネットワーク全体に配送されるので、ネットワークの規模が大きくなるほどネットワーク内の通信情報量が増加し、無線帯域の利用効率が悪化するという問題があった。そのため、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できるシステムが要望されている。
【0010】
また、従来のメニートゥーワン方式におけるルーティングにおいては、シンクノードからの下り経路を確立するために、上記した図22(b)の如く各ノードはユニキャスト送信によりシンクノードへRRECコマンドを送信するので、各ノードにおける送信タイミングが重なった場合、シンクノード周辺のトラフィックに輻輳が生じてしまうという問題があった。そのため、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できるシステムが要望されている。
【0011】
また、従来のメニートゥーワン方式におけるルーティングにおいては、ノードの接続状態の変化やリンクの瞬断などの影響により、パケットが宛先ノードへ正しく転送されなかった場合、シンクノードからの下り経路を再確立するために、当該宛先ノードからシンクノードに対してRRECコマンドを送信していた。このような処理を行った場合、下り経路が再確立されるまでの間は、上記した図22(c)の如き下り通信を行うことができないという問題があった。そのため、シンクノードからの下り経路の途中でパケット中継を失敗した場合においても、宛先ノードへパケットを迅速に送信できるシステムが要望されている。
【0012】
本発明は上記した如き問題点に鑑みてなされたものであって、リンク状況が変動した場合においても適切なリンクコストを算出し、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できるパケット中継システムを提供することを目的とする。
【0013】
また、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できるパケット中継システム装置を提供することを目的とする。
【0014】
また、シンクノードからの下り経路においてパケットが宛先ノードへ正しく転送されなかった場合においても、宛先ノードへパケットを迅速に送信できるパケット中継システムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明によるパケット中継システムは、ツリー状に構成された複数のノードを含むパケット中継システムであって、前記ノードの各々は、前記複数のノードのうちの自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする。
【0016】
また、本発明によるパケット中継システムは、データパケットを相互に中継する複数のノードを含むパケット中継システムであって、前記ノードの各々は、前記複数のノードのうちの自身に隣接する隣接ノードの一から当該1の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする。
【0017】
また、本発明による無線ノードは、ツリー状に構成された無線通信路を介してデータパケットを中継する無線ノードであって、自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする。
【0018】
また、本発明による無線ノードは、無線通信路を介してデータパケットを中継する無線ノードであって、自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする。
【発明の効果】
【0019】
本発明によるパケット中継システムによれば、リンク状況が変動した場合においても適切なリンクコストを算出し、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できる。
【0020】
また、本発明によるパケット中継システムによれば、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できる。
【0021】
また、本発明によるパケット中継システムによれば、シンクノードからの下り経路においてリンク瞬断が生じた場合においても、宛先ノードへパケットを迅速に送信できる。
【図面の簡単な説明】
【0022】
【図1】第1の実施例によるパケット中継システムを表す模式図である。
【図2】第1の実施例によるノードの構成を表すブロック図である。
【図3】ルーティングテーブルの一例を示す表である。
【図4】(a)はセンサデータパケットのフォーマットの一例を表す図である。(b)はハローパケットのフォーマットの一例を表す図である。
【図5】ハローパケット送信処理ルーチンを表すフローチャートである。
【図6】パケット中継処理ルーチンを表すフローチャートである。
【図7】ルーティングテーブル更新処理ルーチンを表すフローチャートである。
【図8】各隣接ノード間のリンクコストを表す図である。
【図9】ノードb、c、f、e及びhにおけるルーティングテーブルの一例を示す表である。
【図10】リンクコストが変動したときのルーティングテーブルの一例を示す表である。
【図11】第2の実施例によるノードの構成を表すブロック図である。
【図12】ツリー状に形成されたパケット中継システムをRRECパケットの中継方向と共に示す図である。
【図13】RRECパケット中継処理ルーチンを表すフローチャートである。
【図14】各中継段階におけるRRECパケットの集約例を表す図である。
【図15】第3の実施例によるノードの構成を表すブロック図である。
【図16】(a)はノードcのルーティングテーブルの一例を示す表である。(b)はノードcの2ホップ隣接ノードテーブルの一例を示す表である。
【図17】下りデータパケット中継処理ルーチンを表すフローチャートである。
【図18】パケット中継システムを下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。
【図19】下りデータパケットのフォーマットの一例を表す図である。
【図20】パケット中継システムを下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。
【図21】(a)はノードcのルーティングテーブルの一例を示す表である。(b)はノードcの2ホップ隣接ノードテーブルの一例を示す表である。
【図22】従来のメニートゥーワン方式におけるルーティング時のノード間のパケット中継の態様を表す模式図である。
【発明を実施するための最良の形態】
【0023】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【0024】
<第1の実施例>
図1は本実施例によるパケット中継システム1を表す模式図である。パケット中継システム1は、例えば無線センサネットワークであり、シンクノードであるノードaと、センサノードであるノードb〜jを含む。ノードa〜jの各々は、自身に隣接するノードとの間で無線通信によりパケットを交換できる。同図中において点線で結ばれているノード同士が相互にパケットを交換できる。例えばノードaはノードb及びfとそれぞれパケットを交換できる。パケット中継システム1においては、例えばノードb〜jの各々で生成されたセンサデータをノードaへ集約する。
【0025】
図2は本実施例によるノードbの構成を表すブロック図である。ノードa及びc〜jの各々のノードもノードbと同一の構成である。
【0026】
ノードbは、アンテナ101と、増幅器102と、無線信号送受信部103と、パケット受信部104と、中継処理部105と、ルーティングテーブル106と、データパケット生成部107と、制御パケット生成部108と、パケット送信部109と、を含む。
【0027】
アンテナ101は、ノードbに隣接するノードとの間で無線信号を送受信する。
【0028】
増幅器102は、アンテナ101によって送受信される無線信号又は無線信号送受信部103からの電気信号の信号強度を増幅するアンプである。
【0029】
無線信号送受信部103は、増幅器102からの無線信号と、パケット受信部104又はパケット送信部109からの電気信号との間の相互変換及びこれらの信号に対して変調、復調及び周波数変換処理を施し、増幅器102及びアンテナ101を介して無線信号を送受信する。
【0030】
パケット受信部104は、無線信号送受信部103からの無線信号に含まれるパケットを受信する。
【0031】
中継処理部105は、パケット受信部104により受信されたパケットに含まれる情報に基づいて、パケットの種別を判別する中継処理部105は、パケットが制御パケットであると判別した場合には、そのパケットに含まれる情報に基づいてルーティングテーブル106を更新する。中継処理部105は、パケットがデータパケットであると判別した場合には、ルーティングテーブルの情報に基づいて中継先ノードの決定を行う。中継処理部105は、例えばマイクロプロセッサなどの演算回路である。
【0032】
ルーティングテーブル106は、ノードbに隣接しているノードについてのリンクコスト、パスコスト及びパケット到達率を記憶する。ルーティングテーブル106は、例えばRAMなどのメモリである。
【0033】
図3は、ノードbのルーティングテーブル106の一例を示す表である。ノードbに隣接しているノードa、f、c及びeの各々についてのリンクコスト、パスコスト及びパケット到達率が記憶されている。例えば、隣接ノードaについてのリンクコストは2、パスコストは2、パケット到着率は0.8である。これらの情報は中継処理部105によって更新される。
【0034】
データパケット生成部107は、図示せぬセンサからのセンサ信号に応じたセンサデータを生成しこれを含むセンサデータパケットを生成する。
【0035】
制御パケット生成部108は、ノードbに隣接しているノードからのパケット到達率やリンクコスト及びパスコストを算出するためのパケット(以下、ハローパケットと称する)や、ノードaからの下り経路の設定のためのRRECパケットなどの制御パケットを生成する。制御パケット生成部108及びデータパケット生成部107は、例えばマイクロプロセッサなどの演算回路である。
【0036】
図4(a)はセンサデータパケットのフォーマットの一例を表す図である。図4(b)はハローパケットのフォーマットの一例を表す図である。
【0037】
センサデータパケット及びハローパケットのヘッダ部には、パケットの種別を表す識別子であるパケットタイプ、パケット送信元のノードのアドレスである送信元アドレス、パケットの中継回数の制限を表す中継可能回数、パケット毎に付される連続番号であるシーケンス番号が含まれている。
【0038】
センサデータパケットのペイロード部には、パケット長、再送回数、例えばセンサデータなどのデータが含まれている。ハローパケットのペイロード部には、パケット長及びパスコストが含まれており、更に隣接アドレス毎のリンクコストを含んでも良い。ここでのパスコストは、シンクノードであるノードaから自身のノードまでの各ノードによって算出されたリンクコストの累積値(リンクコスト累積値)である。
【0039】
パケット送信部109は、データパケット生成部107又は制御パケット生成部108により生成されたパケットを、無線信号送受信部103をしてノードbに隣接しているノードへ送信せしめる。
【0040】
ノードa〜jの各々は、大別してハローパケット送信処理とパケット中継処理の2つの処理を並行して実行する。
【0041】
図5は、ハローパケット送信処理ルーチンを表すフローチャートである。制御パケット生成部108は、予め設定された例えば数秒〜数十秒間隔などの周期的なハローパケット送信タイミングが到来したか否かを判別し(ステップS101)、当該タイミングが到来したときにハローパケットを生成する(ステップS102)。このとき、制御パケット生成部108は、ルーティングテーブル106に記憶されている、隣接ノード毎のパスコストのうち最小のパスコストをペイロード部に含めたハローパケットを生成する。例えばノードbにおけるハローパケット生成時のルーティングテーブル106が図3に示される如きものである場合、最小のパスコスト「2」をペイロード部に含める。パケット送信部109は、制御パケット生成部108により生成されたハローパケットを、無線信号送受信部103をしてノードbに隣接しているノードへ送信せしめる(ステップS103)。
【0042】
図6は、ノードa〜jの各々におけるパケット中継処理ルーチンを表すフローチャートである。図7は、パケット中継処理ルーチンに含まれるルーティングテーブル更新処理ルーチンを表すフローチャートである。図8は、ノードa〜jにおける各隣接ノード間のリンクコストを各隣接ノード間に数値で示す図である。図9は、ノードb、f、c、e及びhにおけるルーティングテーブル106の一例を示す表である。以下、図6〜10を参照しつつ、パケット中継処理について説明する。
【0043】
先ず、シンクノードであるノードaに隣接するノードbおけるパケット中継処理から順に説明する。
【0044】
ノードbの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットがハローパケットか否かを判別する(ステップS201)。
【0045】
中継処理部105は、当該パケットがハローパケットであると判別した場合、ルーティングテーブル106の更新を行う(ステップS202)。なお、ハローパケットのフォーマットは前述したように図4(b)に示される如き形式である。
【0046】
中継処理部105は、先ず、当該パケットのヘッダ部に含まれる送信元アドレスから当該パケットを送信したノードを判別し、当該ノードについてのパケット到達率を算出する(ステップS301)。中継処理部105は、当該パケットが例えばノードaからのものであると判別した場合、ノードaからのハローパケットの受信履歴及び当該パケットのヘッダ部に含まれるシーケンス番号からパケット到達率を算出する。例えばパケット到達率算出時点までに受信したノードaからのハローパケットの個数が80個であり、当該パケットのシーケンス番号が100である場合、パケット到達率は0.8(=80/100)である。中継処理部105は、当該算出によって得られたノードaについてのパケット到達率を更新する(図9(b))。なお、当該パケットの送信元アドレスがルーティングテーブル106に記録されていない場合には新規にその送信元アドレスを追加する。
【0047】
次に中継処理部105は、隣接ノード毎のリンクコストを算出する(ステップS302)。中継処理部105は、例えばリンクコスト=10−パケット到達率×10として算出する。例えばノードaについてのパケット到達率が0.8である場合、リンクコスト=10−0.8×10=2となる。中継処理部105は、当該算出によって得られたノードaについてのリンクコストを更新する(図9(b))。
【0048】
次に中継処理部105は、当該パケットに含まれるパスコスト(リンクコスト累積値)を取得する(ステップS303)。例えば当該パケットがノードaからのものである場合、ノードaはシンクノードなので当該パスコストは0である。
【0049】
次に中継処理部105は、ノードaへパケットを中継したときの、ノードbからノードaまでのパスコストを算出する(ステップS304)。具体的には、中継処理部105は、ルーティングテーブル106に記憶されているノードaについてのリンクコスト「2」と、ノードaからのパケットから取得したパスコスト「0」とを加算してパスコスト「2」=(2+0)を算出する。中継処理部105は、当該算出によって得られたノードaについてのパスコストを更新する(図9(b))。
【0050】
ノードbと同様にノードaに隣接するノードfの場合も同様にしてノードaについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(f))。
【0051】
ノードbとノードfも互いに隣接しているので相互にハローパケットを交換する。
【0052】
先ず、ノードbは、ノードfからのハローパケットのパケット到達率「0.5」を算出し(ステップS301)、ノードfについてのリンクコスト「5」を算出する(ステップS302)。ノードfは、自身のルーティングテーブル106中の最小のパスコストである「3」をペイロード部に含めてハローパケットを送信するので、ノードbは、ノードfからのハローパケットのパスコスト「3」を取得し(ステップS303)、ノードfへパケットを中継したときの、ノードbからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードbは、ルーティングテーブル106に記憶されているノードfについてのリンクコスト「5」と、ノードfからのパケットから取得したパスコスト「3」とを加算してパスコスト「8」=(5+3)を算出する。ノードbの中継処理部105は、当該算出によって得られたノードfについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(b))。
【0053】
ノードfの場合も同様にしてノードbについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(f))。
【0054】
次に、ノードbに隣接するノードcの場合について説明する。先ず、ノードcは、ノードbからのハローパケットのパケット到達率「0.9」を算出し(ステップS301)、ノードbについてのリンクコスト「1」を算出する(ステップS302)。ノードbは、自身のルーティングテーブル106中の最小のパスコストである「2」をペイロード部に含めてハローパケットを送信するので、ノードcは、ノードbからのハローパケットのパスコスト「2」を取得し(ステップS303)、ノードbへパケットを中継したときの、ノードcからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードcは、ルーティングテーブル106に記憶されているノードbについてのリンクコスト「1」と、ノードbからのパケットから取得したパスコスト「2」とを加算してパスコスト「3」=(1+2)を算出する。ノードcの中継処理部105は、当該算出によって得られたノードbについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(c))。
【0055】
ノードb及びfに隣接するノードeの場合も同様にしてノードb及びfについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(e))。
【0056】
ノードcとノードeも互いに隣接しているので相互にハローパケットを交換する。
【0057】
先ず、ノードcは、ノードeからのハローパケットのパケット到達率「0.6」を算出し(ステップS301)、ノードeについてのリンクコスト「4」を算出する(ステップS302)。ノードeは、自身のルーティングテーブル106中の最小のパスコストである「4」をペイロード部に含めてハローパケットを送信するので、ノードcは、ノードeからのハローパケットのパスコスト「4」を取得し(ステップS303)、ノードeへパケットを中継したときの、ノードcからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードcは、ルーティングテーブル106に記憶されているノードeについてのリンクコスト「4」と、ノードfからのパケットから取得したパスコスト「4」とを加算してパスコスト「8」=(4+4)を算出する。ノードcの中継処理部105は、当該算出によって得られたノードeについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(c))。
【0058】
ノードeの場合も同様にしてノードcについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(e))。
【0059】
次に、シンクノードaから最も遠い位置にあるノードhの場合について説明する。ノードhは、隣接するノードd、g及びjの各々からのハローパケットに応じて上記したのと同様の処理により、ノードd、g及びjの各々についてのパケット到達率及びリンクコストを算出する(ステップS301及びS302)。
【0060】
ノードd、g及びjの各々も上記したのと同様に各隣接ノードについてのリンクコスト及びパスコストを算出してルーティングテーブル106に記憶している。ノードdは、ノードdからノードaまでの最小のパスコスト[6](ノードa、b及びc経由のパス)、ノードgは、ノードgからノードaまでの最小のパスコスト[5](ノードa、b及びc経由のパス)、ノードjは、ノードjからノードaまでの最小のパスコスト[6](ノードa、f及びi経由のパス)、をそれぞれのハローパケットに含めて送信する。ノードhは、ノードdからのハローパケットから取得したパスコスト「6」と、ルーティングテーブル106に記憶されているノードdについてのリンクコスト「2」とを加算してパスコスト「8」=(6+2)を算出する。同様にしてノードhは、ノードg及びjの各々についてのパスコスト「6」及び「7」を算出する。
【0061】
このように、各隣接ノード間でハローパケットを交換することにより、ノードb〜jの各々がルーティングテーブル106を更新する。
【0062】
再び図6を参照してノードhにおけるパケット中継処理について説明する。
【0063】
ノードhの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットが上りデータパケットであると判別した場合(ステップS203)、当該パケットの中継先ノードを選択する(ステップS204)。なお、前述したようにデータパケットのフォーマットは図4(a)に示される如き形式である。
【0064】
このとき、中継処理部105は、ルーティングテーブル106(図9(h))中の最小のパスコスト「6」に対応するノードgを中継先ノードとして選択し、無線信号送受信部103をしてノードgへ当該データパケットを送信せしめる(ステップS205)。この場合、データパケットは、ノードh、g、c、b、aの順に転送される。このときのノードhからノードaまでの最小パスコスト「6」でデータパケットを中継することができる。
【0065】
中継処理部105は、ノードgからの受信確認パケットがパケット受信部104により受信された場合には、パケットの中継が成功したと判別して(ステップS206)、パケット中継処理を終了する。
【0066】
一方、中継処理部105は、ノードgからの受信確認パケットがパケット受信部104により受信されなかった場合には、パケットの中継が失敗したと判別して(ステップS206)、再度、中継先ノードを選択する(ステップS204)。この場合、中継処理部105は、ノードgに対応するパスコスト「6」の次に小さいパスコスト「7」に対応するノードjを中継先ノードとして選択する。中継処理部105は、無線信号送受信部103をしてノードjへ当該データパケットを送信せしめる(ステップS205)。この場合、データパケットは、ノードh、j、i、f、aの順に転送される。
【0067】
また、中継処理部105は、ノードjに対するパケットの中継も失敗したと判別した場合、ノードjに対応するパスコスト「7」の次に小さいパスコスト「8」に対応するノードdを中継先ノードとして選択し、無線信号送受信部103がノードdへ当該データパケットを送信する(ステップS205)。ノードd、g及びjの何れに対してもパケット中継が失敗したと判別した場合には、再度、ルーティングテーブル106中の最小のパスコストに対応するノードgを中継先ノードとして選択するなどしてパケット中継処理を継続し、パケット中継が成功したと判別したときに終了する。
【0068】
また、例えばノードhとノードgの間を人や自動車などの遮蔽物が通過したことにより、これら両ノード間のリンク状況が悪化した場合、ノードgからのノードhへのハローパケットの到達率が悪化する。例えばその到達率が0.7に悪化した場合、ノードhが算出するノードgについてのリンクコストは3、パスコストは8となる。この場合、ノードhのルーティングテーブル106は図10に示されるように更新される。つまり、ルーティングテーブル106中の最小パスコストは7となるので、中継処理部105は、ルーティングテーブル106(図10)中の最小のパスコスト「7」に対応するノードjを中継先ノードとして選択し、無線信号送受信部103をしてノードjへ当該データパケットを送信せしめる。この場合、データパケットは、ノードh、j、i、f、aの順に転送される。
【0069】
なお、中継処理部105は、データパケットを中継する際に、そのヘッダ部に含まれる中継可能回数の値を減算する。中継処理部105は、中継可能回数の値が0であると判別した場合には、データパケットを中継せずにパケット中継処理を終了する。また、中継処理部105は、データパケットの中継が失敗したと判別する毎に、そのペイロード部に含まれる再送回数の値を減算する。中継処理部105は、再送回数の値が0であると判別した場合には、データパケットを中継せずにパケット中継処理を終了する。
【0070】
また、中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットが上りデータパケットではないと判別した場合(ステップS203)、RRECパケット中継処理ルーチンに移行する(ステップS207)。RRECパケット中継処理については、第2の実施例で説明する。ノードb〜g、i及びjの各々も上記したのと同様にデータパケットの中継処理を行う。
【0071】
上記したように、本実施例によるパケット中継システムによれば、ノードb〜jの各々は、自身からノードaへの最適な経路を選択することが可能になる。つまり、自身からノードaまでのパスコストが最小となるように、データパケットの中継先ノードとすべき隣接ノードを選択できる。
【0072】
各ノードは、自身に隣接するノードとの間でパケットを交換し、その到達率に基づいて、対応する隣接ノードについてのリンクコストを算出する。したがって、隣接ノード間でリンク状況が変動した場合においても適切なリンクコストを算出できる。また、自身からシンクノードまでの各リンクコストの加算によりシンクノードまでのパスコストを算出しているので、パスコストについてもリンク状況の変動に応じた適切な値を算出できる。
【0073】
また、各ノードは、自身に隣接していないノードすなわちシンクノードから隣接ノードに至るまでの各ノードにより算出されたリンクコストの累積値を隣接ノードから取得し、当該累積値と自身が算出した隣接ノードについてのリンクコストから、シンクノードまでのパスコストを算出する。このような処理によりパスコストを算出するので、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できる。
【0074】
また、各ノードは、隣接ノード毎のパスコストを算出して記憶しているので、最適な隣接ノードに対するパケット中継が失敗した場合でも、次にパケット中継対象とすべき隣接ノードを適切に選択することができる。
【0075】
<第2の実施例>
図11は、本実施例によるノードbの構成を表すブロック図である。なお、ノードa及びc〜jの各々も同一の構成である。第1の実施例におけるノードbの構成にパケット集約部110が更に含まれる。
【0076】
パケット集約部110は、中継処理部105が隣接ノードの1からのRRECパケットを受信したと判別した場合に当該パケットを所定の送信タイミングが到来するまで保持し、送信タイミングが到来するまでに中継処理部105が当該1の隣接ノード以外の隣接ノードからのRRECパケットを受信したと判別したときに、これら両パケットに含まれているアドレスを集約した新たなRRECパケット(以下、集約パケットとも称する)を生成し、送信タイミングの到来に応じてパケット送信部109をして中継先の隣接ノードへ中継せしめる。
【0077】
図12は、ツリー状に形成されたパケット中継システム2をRRECパケットの中継方向と共に示す図である。パケット中継システム2は、最上位のノードであるノードaと、ノードaの下位のノードであり階層構造を形成しながらツリー状に配置されているノードb〜hからなる。ノードb〜hの各々は、同図に矢印で示される如く下位の側に位置するノードからのRRECパケットを上位の側に位置するノードへ順次中継する。ノードb〜hの各々は、RRECパケットを中継する際に自身のアドレスをRRECパケットに含めて中継する。パケット集約部110は、RRECパケットに含まれるこれらのアドレスを集約した新たなRRECパケットを生成するのである。
【0078】
図13は、RRECパケット中継処理ルーチンを表すフローチャートである。このRRECパケット中継処理ルーチンは、図6に示されるパケット中継処理ルーチンにおけるステップS207のRRECパケット中継処理に対応する処理である。図14は、各中継段階におけるRRECパケットの集約例を、図12に矢印と共に示される数字に対応させて表す図である。以下、図12〜15を参照しつつ、RRECパケット中継処理について説明する。
【0079】
先ず、最下位ノードであるノードhおけるRRECパケット中継処理から順に説明する。
【0080】
ノードhの制御パケット生成部108は、ノードhのアドレスを含むRRECパケットを生成し、これをノードhに隣接するノードdへ送信する(図12(1))。このとき、制御パケット生成部108は、図14(1)に示される如く、ヘッダHDと、ペイロード部のパケットサイズLNと、当該パケットに含まれるアドレスの個数NM「1」と、ノードhの例えばIPアドレスなどのアドレスAD「h」と、を含むRRECパケットを生成する。以下、ノードhのアドレスを単にアドレスhと称する。他のノードのアドレスについても同様に、アドレスa、アドレスb、・・・、アドレスgと称する。
【0081】
ノードdの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットがRRECパケットか否かを判別する(ステップS401)。パケット集約部110は、中継処理部105が当該パケットがRRECパケットであると判別した場合に、当該パケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードhからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスhなどの情報を保持する。所定の送信タイミングは、例えば数秒〜数十秒など周期的なタイミングであり、予め設定されたタイミングである。
【0082】
ノードdのパケット集約部110は、所定の送信タイミングが到来した場合、アドレスd及びhを含めたRRECパケットを上位のノードであるノードbへ送信する(ステップS405)。このとき、パケット集約部110は、図14(2)に示される如く、ヘッダHD及びパケットサイズLNと、アドレスの個数NM「2」と、アドレスd及びhと、を含むRRECパケットを生成する。なお、ノードdのパケット受信部104はノードh以外のノードからはRRECパケットを受信しないので、パケット集約部110はステップS404におけるRRECパケット集約処理については省略する。
【0083】
ノードbの下位のノードeもノードhと同様の処理により、図14(3)に示される如きRRECパケットを上位のノードであるノードbへ送信する。
【0084】
ノードbのパケット集約部110は、中継処理部105がパケット受信部104により受信されたパケットがRRECパケットであると判別した場合に(ステップS401)、当該RRECパケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードdからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスd及びhを保持する。
【0085】
ノードbのパケット集約部110は、中継処理部105が所定の送信タイミングが到来するまでに更にパケット受信部104によりRRECパケットが受信されたと判別した場合(ステップS401)、同様にして当該RRECパケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードeからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスeを保持する。
【0086】
ノードbのパケット集約部110は、所定の送信タイミングが到来した場合(ステップS403)、保持しているアドレス情報を集約して新たなRRECパケットを生成する(ステップS404)。パケット集約部110は、図14(4)に示される如く、ヘッダHD及びパケットサイズLNと、親子関係にある複数のノードの各アドレスからなるアドレス群と、アドレス群毎のアドレス個数と、を含むRRECパケットを生成する。
【0087】
このとき、ノードbのパケット集約部110は、自身のノードであるノードbのアドレスbを先頭のアドレス、ノードbの子ノードであるノードdのアドレスdを2番目のアドレス、同じくノードbの子ノードであるノードeのアドレスeを3番目のアドレスとするアドレス群(アドレスb、d、e)を生成し、その個数NMを「3」とする。また、パケット集約部110は、ノードdのアドレスdを先頭のアドレス、ノードdの子ノードであるノードhのアドレスhを2番目のアドレスとするアドレス群(アドレスd、h)を生成し、その個数NMを「2」とする。このようにして、パケット集約部110は、図14(4)に示される如き新たなRRECパケット(集約パケット)を生成する。
【0088】
パケット集約部110は、新たなRRECパケット(図14(4))を上位ノードであるノードaへ送信する(ステップS405)。
【0089】
ノードcも、ノードbと同様のRRECパケット中継処理を行う。ノードcのパケット集約部110は、ノードfからのRRECパケット(図14(5))に含まれるアドレスfと、ノードgからのRRECパケット(図14(6))に含まれるアドレスgと、を所定の送信タイミングが到来するまで保持し(ステップS402)、送信タイミングが到来したときに(ステップS403)、新たなRRECパケットを生成する。
【0090】
このとき、ノードcのパケット集約部110は、自身のノードであるノードcのアドレスcを先頭のアドレス、ノードcの子ノードであるノードfのアドレスfを2番目のアドレス、同じくノードcの子ノードであるノードgのアドレスgを3番目のアドレスとするアドレス群(アドレスc、f、g)を生成し、その個数NMを「3」として、図14(7)に示される如き新たなRRECパケット(集約パケット)を生成する。パケット集約部110は、新たなRRECパケット(図14(7))を上位ノードであるノードaへ送信する(ステップS405)。
【0091】
ノードaは、下位ノードであるノードb及びcの各々からRRECパケット(図14(4)及び(7))を受信する。ノードaがシンクノードである場合にはRRECパケットの中継は行わないが、ノードaが更に上位のノードにRRECパケットを中継する場合には、パケット集約部110は、ノードb及びcの各々からRRECパケットに含まれるアドレスを集約して図14(8)に示される如きRRECパケットを生成する。
【0092】
このとき、ノードaのパケット集約部110は、自身のノードであるノードaのアドレスaを先頭のアドレス、ノードaの子ノードであるノードbのアドレスbを2番目のアドレス、同じくノードaの子ノードであるノードcのアドレスcを3番目のアドレスとするアドレス群(アドレスa、b、c)を生成し、その個数NMを「3」とする。また、パケット集約部110は、ノードbのアドレスbを先頭のアドレス、ノードbの子ノードであるノードdのアドレスdを2番目のアドレス、同じくノードbの子ノードであるノードeのアドレスeを3番目のアドレスとするアドレス群(アドレスb、d、e)を生成し、その個数NMを「3」とする。
【0093】
同様にして、パケット集約部110は、アドレス個数NM「2」のアドレス群(アドレスd、h)と、アドレス個数NM「3」のアドレス群(アドレスc、f、g)とを生成し、これら全てのアドレス群を含む新たなRRECパケット(図14(8))を生成する。パケット集約部110は、図14(8)に示される如きRRECパケットを更に上位のノード(図示せず)へ送信する。
【0094】
上記したように、本実施例によるパケット中継システムによれば、ツリー状に形成されたノードのうちの下位のノードから上位のノードへRRECパケットを順次中継する際に、各下位ノードからのRRECパケットに含まるアドレスを親子関係毎にまとめたアドレス群に集約して生成した新たなRRECパケット(集約パケット)を上位ノードへ送信する。
【0095】
従来のパケット中継システムでは、中継ノードが下位の各ノードからユニキャスト送信により送信されたRRECパケットを集約することなくそのまま中継していたので、各ノードにおける送信タイミングが重なった場合、シンクノード周辺のトラフィックに輻輳が生じてしまうという問題があったが、本実施例によるパケット中継システムによれば、下位の各ノードからのRRECパケットに含まれるアドレスを集約して1のRRECパケットを上位のノードへ中継するので、トラフィックに輻輳が生じさせることはない。また、RRECパケットに含まれる各アドレス群は、親子関係毎にまとめられたものなので、最上位のシンクノードは、下位の各ノードの接続関係を把握することが可能であり、シンクノードからの下り経路を確立できる。
【0096】
<第3の実施例>
図15は、本実施例によるノードcの構成を表すブロック図である。なお、ノードa、b及びd〜jの各々も同一の構成である。第1の実施例におけるノードbの構成に2ホップ隣接テーブル111が更に含まれる。
【0097】
図16(a)は、ノードcのルーティングテーブル106の一例を表す図である。図16(b)は、ノードcの2ホップ隣接ノードテーブル111の一例を表す図である。ノードcは、第1の実施例と同様のルーティングテーブル106の他に、2ホップ隣接テーブル111を有している。2ホップ隣接テーブル111には、1ホップのノードのアドレスと、2ホップのノードのアドレスが記憶されている。ここで、1ホップのノードとはノードcに隣接するノードのことをいい、2ホップのノードとは1ホップのノードに隣接するノードであってノードcとは隣接していないノードのことをいう。例えば、ノードcについての1ホップのノードはノードb、e、d及びgであり、2ホップのノードはノードa、f、e、j及びhである。
【0098】
ノードcの中継処理部105は、パケット受信部104が例えば数秒〜数十秒などの周期的に受信する図4(b)に示される如きハローパケットのペイロード部に含まれている、隣接アドレスに基づいて1ホップ及び2ホップのノードのアドレスを2ホップ隣接テーブル111に記憶する。例えばノードbはノードcの他、ノードa、f及びeに隣接しているので、ペイロード部の隣接アドレスをアドレスa、f及びeとしたハローパケットをノードcへ送信する。
【0099】
ノードcの中継処理部105は、この隣接アドレスのうちノードcに隣接していないアドレスすなわちアドレスa、fを2ホップのノードのアドレスとして2ホップ隣接テーブル111に記憶すると共に、アドレスa及びfの各々にアドレスbを対応付けて記憶する。中継処理部105は、他の隣接ノードからのハローパケットを受信した場合にも、同様の処理を施して図16(b)に示される如き2ホップ隣接テーブル111を生成する。
【0100】
図17は、下りデータパケット中継処理ルーチンを表すフローチャートである。この下りデータパケット中継処理ルーチンは、図13に示されるRRECパケット中継処理ルーチンにおけるステップS406の下りデータパケット中継処理に対応するものである。図18は、パケット中継システム1を下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。以下、図17及び図18を参照しつつ、シンクノードであるノードaからノードhへの下りデータパケット中継処理について説明する。
【0101】
先ず、シンクノードであるノードaにおける処理から説明する。図19は、下りデータパケットのフォーマットの一例を表す図である。データパケットのヘッダ部には、パケットの種別を表す識別子であるパケットタイプ、パケット送信元のノードのアドレスである送信元アドレス、パケットの中継回数の制限を表す中継可能回数、パケット毎に付される連続番号であるシーケンス番号が含まれている。
【0102】
下りデータパケットのペイロード部には、パケット長、アドレス個数、当該アドレス個数分だけのアドレス、宛先へ送信すべきデータが含まれている。以下、ペイロード部に含まれるアドレスの一群をアドレスリストと称する。ノードaのパケット送信部109が送信する下りデータパケットのアドレスリストには、アドレスb、c、g、hの順にアドレスが記載されている。なお、この順番は第2に実施例で説明した如くノードaが受信した、下位のノードからのRRECパケットに含まれているアドレス群から把握したノード接続状態に基づいて中継処理部105が設定した順番である。
【0103】
ノードaのパケット送信部109は、下りデータパケットを、アドレスリストの先頭に記載されているアドレスbを宛先としてつまりノードbへ送信する。
【0104】
ノードbの中継処理部105は、ノードaからの下りデータパケットに含まれるアドレスリストの先頭に記載されているアドレスb(つまり自身のノードのアドレス)を削除してアドレスリストを変更する(ステップS501)。中継処理部105は、当該変更したアドレスリストを含む下りデータパケットをアドレスリストの先頭に記載されているアドレスcを宛先としてつまりノードcへ送信する(ステップS502)。
【0105】
ノードbの中継処理部105は、パケット受信部104がノードcからのパケット受信通知を受け取ったと判別した場合には、パケット中継が成功したと判別し(ステップS503)、中継処理を終了する。ノードbの中継処理部105は、パケット受信部104がノードcからのパケット受信通知を受け取れなかったと判別した場合には、パケット中継が失敗したと判別し(ステップS503)、2ホップ隣接テーブル111を参照する(ステップS504)。ここでは、パケット中継が成功したものとし、中継処理部105は、パケット中継処理を終了する。
【0106】
ノードcの中継処理部105は、ノードbからの下りデータパケットに含まれるアドレスリストの先頭に記載されているアドレスc(つまり自身のノードのアドレス)を削除してアドレスリストを変更する(ステップS501)。中継処理部105は、当該変更したアドレスリストを含む下りデータパケットをアドレスリストの先頭に記載されているアドレスgを宛先としてつまりノードgへ中継する(ステップS502)。ここで、ノードcとノードgと間を例えば人や自動車などの遮蔽物が通過するなどしてリンクの瞬断が生じた影響により、ノードgへ下りデータパケットが到達できなかったものとする。
【0107】
ノードcの中継処理部105は、パケット受信部104がノードgからのパケット受信通知を受け取れなかったつまりパケット中継が失敗したと判別した場合(ステップS503)、図16(b)に示される如き2ホップ隣接テーブル111を参照する(ステップS504)。先ず、中継処理部105は、アドレスリスト内においてアドレスgの次に記載されているアドレスhが2ホップ隣接テーブル111における2ホップのノードのアドレスとして記憶されているか検索する(ステップS505)。
【0108】
アドレスhが2ホップのノードのアドレスとして記憶されていた場合、中継処理部105は、アドレスhに対応する1ホップのノードのアドレスd及びgのうちの未中継のノードのアドレスつまりアドレスdを下りデータパケットの宛先として決定する。中継処理部105は、アドレスリストのアドレスをアドレスd、hに変更し(ステップS501)、ノードdへ中継する(ステップS502)。
【0109】
ノードcの中継処理部105は、パケット受信部104がノードdからのパケット受信通知を受け取ったと判別し(ステップS503)、パケット中継処理を終了する。ノードdも上記したのと同様の処理により、アドレスリストのアドレスをアドレスhに変更した下りデータパケットをノードhへ中継する。
【0110】
上記したように本実施例によるパケット中継システムによれば、各ノードが、隣接ノードとの間で交換するパケットに含まれる2ホップ先のノードのアドレスを隣接ノードのアドレスと対応付けて記憶する。ノードが隣接ノードのうちの1へのパケット中継が失敗したと判別した場合に、2ホップ先の中継先ノードのアドレスに対応付けられているアドレスの1を選択し、当該1のアドレスの隣接ノードへパケットを中継する。
【0111】
従来のパケット中継システムにおいては、パケットが宛先ノードへ正しく転送されなかった場合にシンクノードからの下り経路を再確立するため、当該宛先ノードからシンクノードに対してRRECコマンドを送信していたので、下り経路が再確立されるまでの間は、下り通信を行うことができないという問題があった。それに対して本実施例による中継システムによれば、パケットの中継先ノードを変更してパケットを中継するので、シンクノードからの下り経路の途中でパケット中継を失敗した場合においても、宛先ノードへパケットを迅速に中継することができる。
【0112】
上記した例は、ノードcがパケット中継に失敗した場合の代替ノードの候補がノードdのみの場合の例であるが、代替ノード候補が複数ある場合には、以下のような処理がなされる。
【0113】
図20は、パケット中継システム1を下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。上記した例におけるパケット中継システム1に更にノードkが追加されている。ノードkは、同図に示されるとおり、ノードc及びhと隣接するノードである。図21(a)は、この場合のノードcのルーティングテーブルの一例を表す図である。ノードkについての隣接アドレス、リンクコスト、パスコスト、到着率が追加されている。図21(b)は、この場合のノードcの2ホップ隣接ノードテーブルの一例を表す図である。2ホップのノードhのアドレスhにアドレスd、g及びkが対応付けられている。
【0114】
ノードcの中継処理部105は、ノードgへの下りデータパケットの中継が失敗したと判別した場合(ステップS503)、図21(b)に示される如き2ホップ隣接テーブル111を参照する(ステップS504)。
【0115】
中継処理部105は、アドレスリスト内においてアドレスgの次に記載されているアドレスhが2ホップ隣接テーブル111における2ホップのノードのアドレスとして記憶されているか検索する(ステップS505)。
【0116】
アドレスhが2ホップのノードのアドレスとして記憶されていた場合、中継処理部105は、アドレスhに対応する1ホップのノードのアドレスd及びgのうちの未中継のノードのアドレスつまりアドレスd又はkのいずれか1を下りデータパケットの宛先として決定する。
【0117】
このとき、中継処理部105は、図21(a)に示される如きルーティングテーブルを参照し、アドレスdに対応するリンクコスト「3」と、アドレスkに対応するリンクコスト「1」とを比較し、リンクコストが小さい方のアドレスkを下りデータパケットの中継先として決定する。中継処理部105は、アドレスリストのアドレスをアドレスk、hに変更し(ステップS501)、ノードkへ中継する(ステップS502)。このような処理により、より適切な中継先ノード選択が可能となる。
【0118】
また、上記した例は、中継先ノードからの受信確認応答が1回でも得られなかった場合、直ぐに他の中継先ノードを選択する場合の例であるが、受信確認応答が得られなかった場合でも同一の中継先ノードに複数回のパケット送信を行い、それらの複数回送信が全て失敗したと判別した場合に他の中継先ノードを選択するようにしても良い。
【符号の説明】
【0119】
1 パケット中継システム
101 アンテナ
102 増幅器
103 無線信号送受信部
104 パケット受信部
105 中継処理部
106 ルーティングテーブル
107 データパケット生成部
108 制御パケット生成部
109 パケット送信部
110 パケット集約部
111 2ホップ隣接テーブル
【技術分野】
【0001】
本発明は、データパケットを相互に中継する複数のノードを含むパケット中継システムに関する。
【背景技術】
【0002】
パケット中継機能を有する複数の無線ノードによってネットワークを構成し、互いに隣接している無線ノード間で相互にパケットを中継するマルチホップ無線ネットワークが知られている。無線ノード間でパケットを順次中継することにより、電波が直接届かない無線ノードへパケットを転送することができる。
【0003】
パケットを所望の無線ノードに中継するためには、宛先アドレスから次に転送すべき無線ノードを決定するためのルーティングプロトコルが必要とされる。例えばジグビー(ZigBee(登録商標))アライアンスでは、アドレスの割り当て方法を工夫することによりルーティングテーブルが不要となるクラスタツリールーティング方式、メッシュトポロジーの構成できるAODV(Ad Hoc On-Demand Distance Vector)方式、複数のノードからデータを効率的に収集できるメニートゥーワン(Many to One)方式などによるルーティングプロトコルが標準化されている。特にメニートゥーワン方式は、シンクノードと複数のノードとの間の1対nの通信について考慮された方式であるので、環境情報のセンシングやメータの自動検針などのアプリケーションへの適用が期待されている。
【0004】
図22は、メニートゥーワン方式におけるルーティング時のノード間のパケット中継の態様を表す模式図である。図22(a)は、ノードb〜jの各々が、シンクノードであるノードaへパケットを中継するための上り経路を設定するときのRREQ(Route Request)パケット中継の態様を表す模式図である。ノードaは、送信先アドレスをブロードキャストアドレスとして、RREQパケットを送信する。RREQパケットを受信したノードは、他のノードへRREQパケットを中継する。RREQパケットには、ネットワーク上における任意の2つのノード間の論理的な距離を表すパスコストが含まれている。RREQパケットの中継時には、自身に隣接しているノードについてのリンクコストをパスコストに加算して送信する。リンクコストは、ネットワーク上におけるノード間の論理的な距離を表すものであり、パスコスト算出の基礎となるコストである。リンクコストは、ノード間の受信強度やパケットエラー率などから算出される。このようにRREQパケットの中継を繰り返すことにより、ノードb〜jの各々は、シンクノードaへパケットを転送するための上り経路を設定することができる。つまり、ノードb〜jの各々は、例えば最も小さいパスコストに対応するノードをパケット中継先のノードとして選択することにより、最適な条件にてパケットをシンクノードへ中継することができる。
【0005】
図22(b)は、シンクノードであるノードaからノードhへの下り経路を設定するときのRREC(Route Record)パケット中継の態様を表す模式図である。ノードhは、宛先をノードaとし、自身のアドレスを含めたRRECパケットを送信する。RRECパケットを受信したノードは自身のアドレス及び中継回数を含めたRRECパケットを転送先のノードへ転送する。つまり、ノードhからd、c、b、aの順にアドレスが追加されたパケットがノードaに転送される。ノードaから他のノードへの下り経路を設定するときも同様の処理がなされる。
【0006】
図22(c)は、下り経路設定後にノードaからノードhへのパケット中継の態様を表す模式図である。ノードaは、下り経路設定時におけるアドレス追加順と逆順にしたアドレスをパケットヘッダに記載してデータパケットを送信する。データパケットを受信したノードは、パケットヘッダ内に記載されている自身のアドレスを削除して転送先のノードへ転送する。このようにして、ノードaからb、c、d、hの順にデータパケットを中継できる。これらのルーティングは、送信元ノード(ソースノード)が、パケットを中継するノードを一意に決定する経路制御であるので、ソースルーティングと呼ばれている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】ZigBeeSpecification Revision17 (ZigBee Document 053474r17)
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、従来のメニートゥーワン方式におけるルーティングにおいては、リンクコストの算出方法が明確でなかった。非特許文献1では、LQI(Link Qulity Indicator)などの要素からリンクコストを算出するとしているが、RREQコマンドを受信した際のLQIにはばらつきがあるので、正確なリンクコストを算出するのが困難であるという問題があった。特に屋外など広範囲に亘る場所にノードを設置した場合、ノード間を人や自動車などの遮蔽物が通過したとき、ノード間のリンクの瞬断が生じ、リンク状況が変動してしまう。そのため、リンク状況が変動した場合においても、適切なリンクコストを算出できるシステムが要望されている。
【0009】
また、従来のメニートゥーワン方式におけるルーティングにおいては、シンクノードへの上り経路を確立するために、上記した図22(a)の如くRREQパケットを定期的にブロードキャスト送信する必要があった。RREQパケットは、各ノードで一度は再送され、ネットワーク全体に配送されるので、ネットワークの規模が大きくなるほどネットワーク内の通信情報量が増加し、無線帯域の利用効率が悪化するという問題があった。そのため、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できるシステムが要望されている。
【0010】
また、従来のメニートゥーワン方式におけるルーティングにおいては、シンクノードからの下り経路を確立するために、上記した図22(b)の如く各ノードはユニキャスト送信によりシンクノードへRRECコマンドを送信するので、各ノードにおける送信タイミングが重なった場合、シンクノード周辺のトラフィックに輻輳が生じてしまうという問題があった。そのため、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できるシステムが要望されている。
【0011】
また、従来のメニートゥーワン方式におけるルーティングにおいては、ノードの接続状態の変化やリンクの瞬断などの影響により、パケットが宛先ノードへ正しく転送されなかった場合、シンクノードからの下り経路を再確立するために、当該宛先ノードからシンクノードに対してRRECコマンドを送信していた。このような処理を行った場合、下り経路が再確立されるまでの間は、上記した図22(c)の如き下り通信を行うことができないという問題があった。そのため、シンクノードからの下り経路の途中でパケット中継を失敗した場合においても、宛先ノードへパケットを迅速に送信できるシステムが要望されている。
【0012】
本発明は上記した如き問題点に鑑みてなされたものであって、リンク状況が変動した場合においても適切なリンクコストを算出し、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できるパケット中継システムを提供することを目的とする。
【0013】
また、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できるパケット中継システム装置を提供することを目的とする。
【0014】
また、シンクノードからの下り経路においてパケットが宛先ノードへ正しく転送されなかった場合においても、宛先ノードへパケットを迅速に送信できるパケット中継システムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明によるパケット中継システムは、ツリー状に構成された複数のノードを含むパケット中継システムであって、前記ノードの各々は、前記複数のノードのうちの自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする。
【0016】
また、本発明によるパケット中継システムは、データパケットを相互に中継する複数のノードを含むパケット中継システムであって、前記ノードの各々は、前記複数のノードのうちの自身に隣接する隣接ノードの一から当該1の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする。
【0017】
また、本発明による無線ノードは、ツリー状に構成された無線通信路を介してデータパケットを中継する無線ノードであって、自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする。
【0018】
また、本発明による無線ノードは、無線通信路を介してデータパケットを中継する無線ノードであって、自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする。
【発明の効果】
【0019】
本発明によるパケット中継システムによれば、リンク状況が変動した場合においても適切なリンクコストを算出し、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できる。
【0020】
また、本発明によるパケット中継システムによれば、トラフィックに輻輳を生じさせること無くシンクノードからの下り経路を確立できる。
【0021】
また、本発明によるパケット中継システムによれば、シンクノードからの下り経路においてリンク瞬断が生じた場合においても、宛先ノードへパケットを迅速に送信できる。
【図面の簡単な説明】
【0022】
【図1】第1の実施例によるパケット中継システムを表す模式図である。
【図2】第1の実施例によるノードの構成を表すブロック図である。
【図3】ルーティングテーブルの一例を示す表である。
【図4】(a)はセンサデータパケットのフォーマットの一例を表す図である。(b)はハローパケットのフォーマットの一例を表す図である。
【図5】ハローパケット送信処理ルーチンを表すフローチャートである。
【図6】パケット中継処理ルーチンを表すフローチャートである。
【図7】ルーティングテーブル更新処理ルーチンを表すフローチャートである。
【図8】各隣接ノード間のリンクコストを表す図である。
【図9】ノードb、c、f、e及びhにおけるルーティングテーブルの一例を示す表である。
【図10】リンクコストが変動したときのルーティングテーブルの一例を示す表である。
【図11】第2の実施例によるノードの構成を表すブロック図である。
【図12】ツリー状に形成されたパケット中継システムをRRECパケットの中継方向と共に示す図である。
【図13】RRECパケット中継処理ルーチンを表すフローチャートである。
【図14】各中継段階におけるRRECパケットの集約例を表す図である。
【図15】第3の実施例によるノードの構成を表すブロック図である。
【図16】(a)はノードcのルーティングテーブルの一例を示す表である。(b)はノードcの2ホップ隣接ノードテーブルの一例を示す表である。
【図17】下りデータパケット中継処理ルーチンを表すフローチャートである。
【図18】パケット中継システムを下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。
【図19】下りデータパケットのフォーマットの一例を表す図である。
【図20】パケット中継システムを下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。
【図21】(a)はノードcのルーティングテーブルの一例を示す表である。(b)はノードcの2ホップ隣接ノードテーブルの一例を示す表である。
【図22】従来のメニートゥーワン方式におけるルーティング時のノード間のパケット中継の態様を表す模式図である。
【発明を実施するための最良の形態】
【0023】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【0024】
<第1の実施例>
図1は本実施例によるパケット中継システム1を表す模式図である。パケット中継システム1は、例えば無線センサネットワークであり、シンクノードであるノードaと、センサノードであるノードb〜jを含む。ノードa〜jの各々は、自身に隣接するノードとの間で無線通信によりパケットを交換できる。同図中において点線で結ばれているノード同士が相互にパケットを交換できる。例えばノードaはノードb及びfとそれぞれパケットを交換できる。パケット中継システム1においては、例えばノードb〜jの各々で生成されたセンサデータをノードaへ集約する。
【0025】
図2は本実施例によるノードbの構成を表すブロック図である。ノードa及びc〜jの各々のノードもノードbと同一の構成である。
【0026】
ノードbは、アンテナ101と、増幅器102と、無線信号送受信部103と、パケット受信部104と、中継処理部105と、ルーティングテーブル106と、データパケット生成部107と、制御パケット生成部108と、パケット送信部109と、を含む。
【0027】
アンテナ101は、ノードbに隣接するノードとの間で無線信号を送受信する。
【0028】
増幅器102は、アンテナ101によって送受信される無線信号又は無線信号送受信部103からの電気信号の信号強度を増幅するアンプである。
【0029】
無線信号送受信部103は、増幅器102からの無線信号と、パケット受信部104又はパケット送信部109からの電気信号との間の相互変換及びこれらの信号に対して変調、復調及び周波数変換処理を施し、増幅器102及びアンテナ101を介して無線信号を送受信する。
【0030】
パケット受信部104は、無線信号送受信部103からの無線信号に含まれるパケットを受信する。
【0031】
中継処理部105は、パケット受信部104により受信されたパケットに含まれる情報に基づいて、パケットの種別を判別する中継処理部105は、パケットが制御パケットであると判別した場合には、そのパケットに含まれる情報に基づいてルーティングテーブル106を更新する。中継処理部105は、パケットがデータパケットであると判別した場合には、ルーティングテーブルの情報に基づいて中継先ノードの決定を行う。中継処理部105は、例えばマイクロプロセッサなどの演算回路である。
【0032】
ルーティングテーブル106は、ノードbに隣接しているノードについてのリンクコスト、パスコスト及びパケット到達率を記憶する。ルーティングテーブル106は、例えばRAMなどのメモリである。
【0033】
図3は、ノードbのルーティングテーブル106の一例を示す表である。ノードbに隣接しているノードa、f、c及びeの各々についてのリンクコスト、パスコスト及びパケット到達率が記憶されている。例えば、隣接ノードaについてのリンクコストは2、パスコストは2、パケット到着率は0.8である。これらの情報は中継処理部105によって更新される。
【0034】
データパケット生成部107は、図示せぬセンサからのセンサ信号に応じたセンサデータを生成しこれを含むセンサデータパケットを生成する。
【0035】
制御パケット生成部108は、ノードbに隣接しているノードからのパケット到達率やリンクコスト及びパスコストを算出するためのパケット(以下、ハローパケットと称する)や、ノードaからの下り経路の設定のためのRRECパケットなどの制御パケットを生成する。制御パケット生成部108及びデータパケット生成部107は、例えばマイクロプロセッサなどの演算回路である。
【0036】
図4(a)はセンサデータパケットのフォーマットの一例を表す図である。図4(b)はハローパケットのフォーマットの一例を表す図である。
【0037】
センサデータパケット及びハローパケットのヘッダ部には、パケットの種別を表す識別子であるパケットタイプ、パケット送信元のノードのアドレスである送信元アドレス、パケットの中継回数の制限を表す中継可能回数、パケット毎に付される連続番号であるシーケンス番号が含まれている。
【0038】
センサデータパケットのペイロード部には、パケット長、再送回数、例えばセンサデータなどのデータが含まれている。ハローパケットのペイロード部には、パケット長及びパスコストが含まれており、更に隣接アドレス毎のリンクコストを含んでも良い。ここでのパスコストは、シンクノードであるノードaから自身のノードまでの各ノードによって算出されたリンクコストの累積値(リンクコスト累積値)である。
【0039】
パケット送信部109は、データパケット生成部107又は制御パケット生成部108により生成されたパケットを、無線信号送受信部103をしてノードbに隣接しているノードへ送信せしめる。
【0040】
ノードa〜jの各々は、大別してハローパケット送信処理とパケット中継処理の2つの処理を並行して実行する。
【0041】
図5は、ハローパケット送信処理ルーチンを表すフローチャートである。制御パケット生成部108は、予め設定された例えば数秒〜数十秒間隔などの周期的なハローパケット送信タイミングが到来したか否かを判別し(ステップS101)、当該タイミングが到来したときにハローパケットを生成する(ステップS102)。このとき、制御パケット生成部108は、ルーティングテーブル106に記憶されている、隣接ノード毎のパスコストのうち最小のパスコストをペイロード部に含めたハローパケットを生成する。例えばノードbにおけるハローパケット生成時のルーティングテーブル106が図3に示される如きものである場合、最小のパスコスト「2」をペイロード部に含める。パケット送信部109は、制御パケット生成部108により生成されたハローパケットを、無線信号送受信部103をしてノードbに隣接しているノードへ送信せしめる(ステップS103)。
【0042】
図6は、ノードa〜jの各々におけるパケット中継処理ルーチンを表すフローチャートである。図7は、パケット中継処理ルーチンに含まれるルーティングテーブル更新処理ルーチンを表すフローチャートである。図8は、ノードa〜jにおける各隣接ノード間のリンクコストを各隣接ノード間に数値で示す図である。図9は、ノードb、f、c、e及びhにおけるルーティングテーブル106の一例を示す表である。以下、図6〜10を参照しつつ、パケット中継処理について説明する。
【0043】
先ず、シンクノードであるノードaに隣接するノードbおけるパケット中継処理から順に説明する。
【0044】
ノードbの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットがハローパケットか否かを判別する(ステップS201)。
【0045】
中継処理部105は、当該パケットがハローパケットであると判別した場合、ルーティングテーブル106の更新を行う(ステップS202)。なお、ハローパケットのフォーマットは前述したように図4(b)に示される如き形式である。
【0046】
中継処理部105は、先ず、当該パケットのヘッダ部に含まれる送信元アドレスから当該パケットを送信したノードを判別し、当該ノードについてのパケット到達率を算出する(ステップS301)。中継処理部105は、当該パケットが例えばノードaからのものであると判別した場合、ノードaからのハローパケットの受信履歴及び当該パケットのヘッダ部に含まれるシーケンス番号からパケット到達率を算出する。例えばパケット到達率算出時点までに受信したノードaからのハローパケットの個数が80個であり、当該パケットのシーケンス番号が100である場合、パケット到達率は0.8(=80/100)である。中継処理部105は、当該算出によって得られたノードaについてのパケット到達率を更新する(図9(b))。なお、当該パケットの送信元アドレスがルーティングテーブル106に記録されていない場合には新規にその送信元アドレスを追加する。
【0047】
次に中継処理部105は、隣接ノード毎のリンクコストを算出する(ステップS302)。中継処理部105は、例えばリンクコスト=10−パケット到達率×10として算出する。例えばノードaについてのパケット到達率が0.8である場合、リンクコスト=10−0.8×10=2となる。中継処理部105は、当該算出によって得られたノードaについてのリンクコストを更新する(図9(b))。
【0048】
次に中継処理部105は、当該パケットに含まれるパスコスト(リンクコスト累積値)を取得する(ステップS303)。例えば当該パケットがノードaからのものである場合、ノードaはシンクノードなので当該パスコストは0である。
【0049】
次に中継処理部105は、ノードaへパケットを中継したときの、ノードbからノードaまでのパスコストを算出する(ステップS304)。具体的には、中継処理部105は、ルーティングテーブル106に記憶されているノードaについてのリンクコスト「2」と、ノードaからのパケットから取得したパスコスト「0」とを加算してパスコスト「2」=(2+0)を算出する。中継処理部105は、当該算出によって得られたノードaについてのパスコストを更新する(図9(b))。
【0050】
ノードbと同様にノードaに隣接するノードfの場合も同様にしてノードaについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(f))。
【0051】
ノードbとノードfも互いに隣接しているので相互にハローパケットを交換する。
【0052】
先ず、ノードbは、ノードfからのハローパケットのパケット到達率「0.5」を算出し(ステップS301)、ノードfについてのリンクコスト「5」を算出する(ステップS302)。ノードfは、自身のルーティングテーブル106中の最小のパスコストである「3」をペイロード部に含めてハローパケットを送信するので、ノードbは、ノードfからのハローパケットのパスコスト「3」を取得し(ステップS303)、ノードfへパケットを中継したときの、ノードbからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードbは、ルーティングテーブル106に記憶されているノードfについてのリンクコスト「5」と、ノードfからのパケットから取得したパスコスト「3」とを加算してパスコスト「8」=(5+3)を算出する。ノードbの中継処理部105は、当該算出によって得られたノードfについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(b))。
【0053】
ノードfの場合も同様にしてノードbについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(f))。
【0054】
次に、ノードbに隣接するノードcの場合について説明する。先ず、ノードcは、ノードbからのハローパケットのパケット到達率「0.9」を算出し(ステップS301)、ノードbについてのリンクコスト「1」を算出する(ステップS302)。ノードbは、自身のルーティングテーブル106中の最小のパスコストである「2」をペイロード部に含めてハローパケットを送信するので、ノードcは、ノードbからのハローパケットのパスコスト「2」を取得し(ステップS303)、ノードbへパケットを中継したときの、ノードcからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードcは、ルーティングテーブル106に記憶されているノードbについてのリンクコスト「1」と、ノードbからのパケットから取得したパスコスト「2」とを加算してパスコスト「3」=(1+2)を算出する。ノードcの中継処理部105は、当該算出によって得られたノードbについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(c))。
【0055】
ノードb及びfに隣接するノードeの場合も同様にしてノードb及びfについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(e))。
【0056】
ノードcとノードeも互いに隣接しているので相互にハローパケットを交換する。
【0057】
先ず、ノードcは、ノードeからのハローパケットのパケット到達率「0.6」を算出し(ステップS301)、ノードeについてのリンクコスト「4」を算出する(ステップS302)。ノードeは、自身のルーティングテーブル106中の最小のパスコストである「4」をペイロード部に含めてハローパケットを送信するので、ノードcは、ノードeからのハローパケットのパスコスト「4」を取得し(ステップS303)、ノードeへパケットを中継したときの、ノードcからノードaまでのパスコストを算出する(ステップS304)。具体的には、ノードcは、ルーティングテーブル106に記憶されているノードeについてのリンクコスト「4」と、ノードfからのパケットから取得したパスコスト「4」とを加算してパスコスト「8」=(4+4)を算出する。ノードcの中継処理部105は、当該算出によって得られたノードeについてのパケット到達率、リンクコスト及びパスコストを更新する(図9(c))。
【0058】
ノードeの場合も同様にしてノードcについてのパケット到達率、リンクコスト及びパスコストを算出してルーティングテーブル106を更新する(図9(e))。
【0059】
次に、シンクノードaから最も遠い位置にあるノードhの場合について説明する。ノードhは、隣接するノードd、g及びjの各々からのハローパケットに応じて上記したのと同様の処理により、ノードd、g及びjの各々についてのパケット到達率及びリンクコストを算出する(ステップS301及びS302)。
【0060】
ノードd、g及びjの各々も上記したのと同様に各隣接ノードについてのリンクコスト及びパスコストを算出してルーティングテーブル106に記憶している。ノードdは、ノードdからノードaまでの最小のパスコスト[6](ノードa、b及びc経由のパス)、ノードgは、ノードgからノードaまでの最小のパスコスト[5](ノードa、b及びc経由のパス)、ノードjは、ノードjからノードaまでの最小のパスコスト[6](ノードa、f及びi経由のパス)、をそれぞれのハローパケットに含めて送信する。ノードhは、ノードdからのハローパケットから取得したパスコスト「6」と、ルーティングテーブル106に記憶されているノードdについてのリンクコスト「2」とを加算してパスコスト「8」=(6+2)を算出する。同様にしてノードhは、ノードg及びjの各々についてのパスコスト「6」及び「7」を算出する。
【0061】
このように、各隣接ノード間でハローパケットを交換することにより、ノードb〜jの各々がルーティングテーブル106を更新する。
【0062】
再び図6を参照してノードhにおけるパケット中継処理について説明する。
【0063】
ノードhの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットが上りデータパケットであると判別した場合(ステップS203)、当該パケットの中継先ノードを選択する(ステップS204)。なお、前述したようにデータパケットのフォーマットは図4(a)に示される如き形式である。
【0064】
このとき、中継処理部105は、ルーティングテーブル106(図9(h))中の最小のパスコスト「6」に対応するノードgを中継先ノードとして選択し、無線信号送受信部103をしてノードgへ当該データパケットを送信せしめる(ステップS205)。この場合、データパケットは、ノードh、g、c、b、aの順に転送される。このときのノードhからノードaまでの最小パスコスト「6」でデータパケットを中継することができる。
【0065】
中継処理部105は、ノードgからの受信確認パケットがパケット受信部104により受信された場合には、パケットの中継が成功したと判別して(ステップS206)、パケット中継処理を終了する。
【0066】
一方、中継処理部105は、ノードgからの受信確認パケットがパケット受信部104により受信されなかった場合には、パケットの中継が失敗したと判別して(ステップS206)、再度、中継先ノードを選択する(ステップS204)。この場合、中継処理部105は、ノードgに対応するパスコスト「6」の次に小さいパスコスト「7」に対応するノードjを中継先ノードとして選択する。中継処理部105は、無線信号送受信部103をしてノードjへ当該データパケットを送信せしめる(ステップS205)。この場合、データパケットは、ノードh、j、i、f、aの順に転送される。
【0067】
また、中継処理部105は、ノードjに対するパケットの中継も失敗したと判別した場合、ノードjに対応するパスコスト「7」の次に小さいパスコスト「8」に対応するノードdを中継先ノードとして選択し、無線信号送受信部103がノードdへ当該データパケットを送信する(ステップS205)。ノードd、g及びjの何れに対してもパケット中継が失敗したと判別した場合には、再度、ルーティングテーブル106中の最小のパスコストに対応するノードgを中継先ノードとして選択するなどしてパケット中継処理を継続し、パケット中継が成功したと判別したときに終了する。
【0068】
また、例えばノードhとノードgの間を人や自動車などの遮蔽物が通過したことにより、これら両ノード間のリンク状況が悪化した場合、ノードgからのノードhへのハローパケットの到達率が悪化する。例えばその到達率が0.7に悪化した場合、ノードhが算出するノードgについてのリンクコストは3、パスコストは8となる。この場合、ノードhのルーティングテーブル106は図10に示されるように更新される。つまり、ルーティングテーブル106中の最小パスコストは7となるので、中継処理部105は、ルーティングテーブル106(図10)中の最小のパスコスト「7」に対応するノードjを中継先ノードとして選択し、無線信号送受信部103をしてノードjへ当該データパケットを送信せしめる。この場合、データパケットは、ノードh、j、i、f、aの順に転送される。
【0069】
なお、中継処理部105は、データパケットを中継する際に、そのヘッダ部に含まれる中継可能回数の値を減算する。中継処理部105は、中継可能回数の値が0であると判別した場合には、データパケットを中継せずにパケット中継処理を終了する。また、中継処理部105は、データパケットの中継が失敗したと判別する毎に、そのペイロード部に含まれる再送回数の値を減算する。中継処理部105は、再送回数の値が0であると判別した場合には、データパケットを中継せずにパケット中継処理を終了する。
【0070】
また、中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットが上りデータパケットではないと判別した場合(ステップS203)、RRECパケット中継処理ルーチンに移行する(ステップS207)。RRECパケット中継処理については、第2の実施例で説明する。ノードb〜g、i及びjの各々も上記したのと同様にデータパケットの中継処理を行う。
【0071】
上記したように、本実施例によるパケット中継システムによれば、ノードb〜jの各々は、自身からノードaへの最適な経路を選択することが可能になる。つまり、自身からノードaまでのパスコストが最小となるように、データパケットの中継先ノードとすべき隣接ノードを選択できる。
【0072】
各ノードは、自身に隣接するノードとの間でパケットを交換し、その到達率に基づいて、対応する隣接ノードについてのリンクコストを算出する。したがって、隣接ノード間でリンク状況が変動した場合においても適切なリンクコストを算出できる。また、自身からシンクノードまでの各リンクコストの加算によりシンクノードまでのパスコストを算出しているので、パスコストについてもリンク状況の変動に応じた適切な値を算出できる。
【0073】
また、各ノードは、自身に隣接していないノードすなわちシンクノードから隣接ノードに至るまでの各ノードにより算出されたリンクコストの累積値を隣接ノードから取得し、当該累積値と自身が算出した隣接ノードについてのリンクコストから、シンクノードまでのパスコストを算出する。このような処理によりパスコストを算出するので、ネットワーク内の通信情報量を増加させること無くシンクノードへの上り経路を確立できる。
【0074】
また、各ノードは、隣接ノード毎のパスコストを算出して記憶しているので、最適な隣接ノードに対するパケット中継が失敗した場合でも、次にパケット中継対象とすべき隣接ノードを適切に選択することができる。
【0075】
<第2の実施例>
図11は、本実施例によるノードbの構成を表すブロック図である。なお、ノードa及びc〜jの各々も同一の構成である。第1の実施例におけるノードbの構成にパケット集約部110が更に含まれる。
【0076】
パケット集約部110は、中継処理部105が隣接ノードの1からのRRECパケットを受信したと判別した場合に当該パケットを所定の送信タイミングが到来するまで保持し、送信タイミングが到来するまでに中継処理部105が当該1の隣接ノード以外の隣接ノードからのRRECパケットを受信したと判別したときに、これら両パケットに含まれているアドレスを集約した新たなRRECパケット(以下、集約パケットとも称する)を生成し、送信タイミングの到来に応じてパケット送信部109をして中継先の隣接ノードへ中継せしめる。
【0077】
図12は、ツリー状に形成されたパケット中継システム2をRRECパケットの中継方向と共に示す図である。パケット中継システム2は、最上位のノードであるノードaと、ノードaの下位のノードであり階層構造を形成しながらツリー状に配置されているノードb〜hからなる。ノードb〜hの各々は、同図に矢印で示される如く下位の側に位置するノードからのRRECパケットを上位の側に位置するノードへ順次中継する。ノードb〜hの各々は、RRECパケットを中継する際に自身のアドレスをRRECパケットに含めて中継する。パケット集約部110は、RRECパケットに含まれるこれらのアドレスを集約した新たなRRECパケットを生成するのである。
【0078】
図13は、RRECパケット中継処理ルーチンを表すフローチャートである。このRRECパケット中継処理ルーチンは、図6に示されるパケット中継処理ルーチンにおけるステップS207のRRECパケット中継処理に対応する処理である。図14は、各中継段階におけるRRECパケットの集約例を、図12に矢印と共に示される数字に対応させて表す図である。以下、図12〜15を参照しつつ、RRECパケット中継処理について説明する。
【0079】
先ず、最下位ノードであるノードhおけるRRECパケット中継処理から順に説明する。
【0080】
ノードhの制御パケット生成部108は、ノードhのアドレスを含むRRECパケットを生成し、これをノードhに隣接するノードdへ送信する(図12(1))。このとき、制御パケット生成部108は、図14(1)に示される如く、ヘッダHDと、ペイロード部のパケットサイズLNと、当該パケットに含まれるアドレスの個数NM「1」と、ノードhの例えばIPアドレスなどのアドレスAD「h」と、を含むRRECパケットを生成する。以下、ノードhのアドレスを単にアドレスhと称する。他のノードのアドレスについても同様に、アドレスa、アドレスb、・・・、アドレスgと称する。
【0081】
ノードdの中継処理部105は、パケット受信部104により受信されたパケットのヘッダ部に含まれるパケットタイプから当該パケットがRRECパケットか否かを判別する(ステップS401)。パケット集約部110は、中継処理部105が当該パケットがRRECパケットであると判別した場合に、当該パケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードhからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスhなどの情報を保持する。所定の送信タイミングは、例えば数秒〜数十秒など周期的なタイミングであり、予め設定されたタイミングである。
【0082】
ノードdのパケット集約部110は、所定の送信タイミングが到来した場合、アドレスd及びhを含めたRRECパケットを上位のノードであるノードbへ送信する(ステップS405)。このとき、パケット集約部110は、図14(2)に示される如く、ヘッダHD及びパケットサイズLNと、アドレスの個数NM「2」と、アドレスd及びhと、を含むRRECパケットを生成する。なお、ノードdのパケット受信部104はノードh以外のノードからはRRECパケットを受信しないので、パケット集約部110はステップS404におけるRRECパケット集約処理については省略する。
【0083】
ノードbの下位のノードeもノードhと同様の処理により、図14(3)に示される如きRRECパケットを上位のノードであるノードbへ送信する。
【0084】
ノードbのパケット集約部110は、中継処理部105がパケット受信部104により受信されたパケットがRRECパケットであると判別した場合に(ステップS401)、当該RRECパケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードdからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスd及びhを保持する。
【0085】
ノードbのパケット集約部110は、中継処理部105が所定の送信タイミングが到来するまでに更にパケット受信部104によりRRECパケットが受信されたと判別した場合(ステップS401)、同様にして当該RRECパケットに含まれるパケット情報を、所定の送信タイミングが到来するまで保持する(ステップS402、S403)。例えば、当該パケットがノードeからのRRECパケットである場合、パケット集約部110は、そのRRECパケットに含まれるアドレスeを保持する。
【0086】
ノードbのパケット集約部110は、所定の送信タイミングが到来した場合(ステップS403)、保持しているアドレス情報を集約して新たなRRECパケットを生成する(ステップS404)。パケット集約部110は、図14(4)に示される如く、ヘッダHD及びパケットサイズLNと、親子関係にある複数のノードの各アドレスからなるアドレス群と、アドレス群毎のアドレス個数と、を含むRRECパケットを生成する。
【0087】
このとき、ノードbのパケット集約部110は、自身のノードであるノードbのアドレスbを先頭のアドレス、ノードbの子ノードであるノードdのアドレスdを2番目のアドレス、同じくノードbの子ノードであるノードeのアドレスeを3番目のアドレスとするアドレス群(アドレスb、d、e)を生成し、その個数NMを「3」とする。また、パケット集約部110は、ノードdのアドレスdを先頭のアドレス、ノードdの子ノードであるノードhのアドレスhを2番目のアドレスとするアドレス群(アドレスd、h)を生成し、その個数NMを「2」とする。このようにして、パケット集約部110は、図14(4)に示される如き新たなRRECパケット(集約パケット)を生成する。
【0088】
パケット集約部110は、新たなRRECパケット(図14(4))を上位ノードであるノードaへ送信する(ステップS405)。
【0089】
ノードcも、ノードbと同様のRRECパケット中継処理を行う。ノードcのパケット集約部110は、ノードfからのRRECパケット(図14(5))に含まれるアドレスfと、ノードgからのRRECパケット(図14(6))に含まれるアドレスgと、を所定の送信タイミングが到来するまで保持し(ステップS402)、送信タイミングが到来したときに(ステップS403)、新たなRRECパケットを生成する。
【0090】
このとき、ノードcのパケット集約部110は、自身のノードであるノードcのアドレスcを先頭のアドレス、ノードcの子ノードであるノードfのアドレスfを2番目のアドレス、同じくノードcの子ノードであるノードgのアドレスgを3番目のアドレスとするアドレス群(アドレスc、f、g)を生成し、その個数NMを「3」として、図14(7)に示される如き新たなRRECパケット(集約パケット)を生成する。パケット集約部110は、新たなRRECパケット(図14(7))を上位ノードであるノードaへ送信する(ステップS405)。
【0091】
ノードaは、下位ノードであるノードb及びcの各々からRRECパケット(図14(4)及び(7))を受信する。ノードaがシンクノードである場合にはRRECパケットの中継は行わないが、ノードaが更に上位のノードにRRECパケットを中継する場合には、パケット集約部110は、ノードb及びcの各々からRRECパケットに含まれるアドレスを集約して図14(8)に示される如きRRECパケットを生成する。
【0092】
このとき、ノードaのパケット集約部110は、自身のノードであるノードaのアドレスaを先頭のアドレス、ノードaの子ノードであるノードbのアドレスbを2番目のアドレス、同じくノードaの子ノードであるノードcのアドレスcを3番目のアドレスとするアドレス群(アドレスa、b、c)を生成し、その個数NMを「3」とする。また、パケット集約部110は、ノードbのアドレスbを先頭のアドレス、ノードbの子ノードであるノードdのアドレスdを2番目のアドレス、同じくノードbの子ノードであるノードeのアドレスeを3番目のアドレスとするアドレス群(アドレスb、d、e)を生成し、その個数NMを「3」とする。
【0093】
同様にして、パケット集約部110は、アドレス個数NM「2」のアドレス群(アドレスd、h)と、アドレス個数NM「3」のアドレス群(アドレスc、f、g)とを生成し、これら全てのアドレス群を含む新たなRRECパケット(図14(8))を生成する。パケット集約部110は、図14(8)に示される如きRRECパケットを更に上位のノード(図示せず)へ送信する。
【0094】
上記したように、本実施例によるパケット中継システムによれば、ツリー状に形成されたノードのうちの下位のノードから上位のノードへRRECパケットを順次中継する際に、各下位ノードからのRRECパケットに含まるアドレスを親子関係毎にまとめたアドレス群に集約して生成した新たなRRECパケット(集約パケット)を上位ノードへ送信する。
【0095】
従来のパケット中継システムでは、中継ノードが下位の各ノードからユニキャスト送信により送信されたRRECパケットを集約することなくそのまま中継していたので、各ノードにおける送信タイミングが重なった場合、シンクノード周辺のトラフィックに輻輳が生じてしまうという問題があったが、本実施例によるパケット中継システムによれば、下位の各ノードからのRRECパケットに含まれるアドレスを集約して1のRRECパケットを上位のノードへ中継するので、トラフィックに輻輳が生じさせることはない。また、RRECパケットに含まれる各アドレス群は、親子関係毎にまとめられたものなので、最上位のシンクノードは、下位の各ノードの接続関係を把握することが可能であり、シンクノードからの下り経路を確立できる。
【0096】
<第3の実施例>
図15は、本実施例によるノードcの構成を表すブロック図である。なお、ノードa、b及びd〜jの各々も同一の構成である。第1の実施例におけるノードbの構成に2ホップ隣接テーブル111が更に含まれる。
【0097】
図16(a)は、ノードcのルーティングテーブル106の一例を表す図である。図16(b)は、ノードcの2ホップ隣接ノードテーブル111の一例を表す図である。ノードcは、第1の実施例と同様のルーティングテーブル106の他に、2ホップ隣接テーブル111を有している。2ホップ隣接テーブル111には、1ホップのノードのアドレスと、2ホップのノードのアドレスが記憶されている。ここで、1ホップのノードとはノードcに隣接するノードのことをいい、2ホップのノードとは1ホップのノードに隣接するノードであってノードcとは隣接していないノードのことをいう。例えば、ノードcについての1ホップのノードはノードb、e、d及びgであり、2ホップのノードはノードa、f、e、j及びhである。
【0098】
ノードcの中継処理部105は、パケット受信部104が例えば数秒〜数十秒などの周期的に受信する図4(b)に示される如きハローパケットのペイロード部に含まれている、隣接アドレスに基づいて1ホップ及び2ホップのノードのアドレスを2ホップ隣接テーブル111に記憶する。例えばノードbはノードcの他、ノードa、f及びeに隣接しているので、ペイロード部の隣接アドレスをアドレスa、f及びeとしたハローパケットをノードcへ送信する。
【0099】
ノードcの中継処理部105は、この隣接アドレスのうちノードcに隣接していないアドレスすなわちアドレスa、fを2ホップのノードのアドレスとして2ホップ隣接テーブル111に記憶すると共に、アドレスa及びfの各々にアドレスbを対応付けて記憶する。中継処理部105は、他の隣接ノードからのハローパケットを受信した場合にも、同様の処理を施して図16(b)に示される如き2ホップ隣接テーブル111を生成する。
【0100】
図17は、下りデータパケット中継処理ルーチンを表すフローチャートである。この下りデータパケット中継処理ルーチンは、図13に示されるRRECパケット中継処理ルーチンにおけるステップS406の下りデータパケット中継処理に対応するものである。図18は、パケット中継システム1を下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。以下、図17及び図18を参照しつつ、シンクノードであるノードaからノードhへの下りデータパケット中継処理について説明する。
【0101】
先ず、シンクノードであるノードaにおける処理から説明する。図19は、下りデータパケットのフォーマットの一例を表す図である。データパケットのヘッダ部には、パケットの種別を表す識別子であるパケットタイプ、パケット送信元のノードのアドレスである送信元アドレス、パケットの中継回数の制限を表す中継可能回数、パケット毎に付される連続番号であるシーケンス番号が含まれている。
【0102】
下りデータパケットのペイロード部には、パケット長、アドレス個数、当該アドレス個数分だけのアドレス、宛先へ送信すべきデータが含まれている。以下、ペイロード部に含まれるアドレスの一群をアドレスリストと称する。ノードaのパケット送信部109が送信する下りデータパケットのアドレスリストには、アドレスb、c、g、hの順にアドレスが記載されている。なお、この順番は第2に実施例で説明した如くノードaが受信した、下位のノードからのRRECパケットに含まれているアドレス群から把握したノード接続状態に基づいて中継処理部105が設定した順番である。
【0103】
ノードaのパケット送信部109は、下りデータパケットを、アドレスリストの先頭に記載されているアドレスbを宛先としてつまりノードbへ送信する。
【0104】
ノードbの中継処理部105は、ノードaからの下りデータパケットに含まれるアドレスリストの先頭に記載されているアドレスb(つまり自身のノードのアドレス)を削除してアドレスリストを変更する(ステップS501)。中継処理部105は、当該変更したアドレスリストを含む下りデータパケットをアドレスリストの先頭に記載されているアドレスcを宛先としてつまりノードcへ送信する(ステップS502)。
【0105】
ノードbの中継処理部105は、パケット受信部104がノードcからのパケット受信通知を受け取ったと判別した場合には、パケット中継が成功したと判別し(ステップS503)、中継処理を終了する。ノードbの中継処理部105は、パケット受信部104がノードcからのパケット受信通知を受け取れなかったと判別した場合には、パケット中継が失敗したと判別し(ステップS503)、2ホップ隣接テーブル111を参照する(ステップS504)。ここでは、パケット中継が成功したものとし、中継処理部105は、パケット中継処理を終了する。
【0106】
ノードcの中継処理部105は、ノードbからの下りデータパケットに含まれるアドレスリストの先頭に記載されているアドレスc(つまり自身のノードのアドレス)を削除してアドレスリストを変更する(ステップS501)。中継処理部105は、当該変更したアドレスリストを含む下りデータパケットをアドレスリストの先頭に記載されているアドレスgを宛先としてつまりノードgへ中継する(ステップS502)。ここで、ノードcとノードgと間を例えば人や自動車などの遮蔽物が通過するなどしてリンクの瞬断が生じた影響により、ノードgへ下りデータパケットが到達できなかったものとする。
【0107】
ノードcの中継処理部105は、パケット受信部104がノードgからのパケット受信通知を受け取れなかったつまりパケット中継が失敗したと判別した場合(ステップS503)、図16(b)に示される如き2ホップ隣接テーブル111を参照する(ステップS504)。先ず、中継処理部105は、アドレスリスト内においてアドレスgの次に記載されているアドレスhが2ホップ隣接テーブル111における2ホップのノードのアドレスとして記憶されているか検索する(ステップS505)。
【0108】
アドレスhが2ホップのノードのアドレスとして記憶されていた場合、中継処理部105は、アドレスhに対応する1ホップのノードのアドレスd及びgのうちの未中継のノードのアドレスつまりアドレスdを下りデータパケットの宛先として決定する。中継処理部105は、アドレスリストのアドレスをアドレスd、hに変更し(ステップS501)、ノードdへ中継する(ステップS502)。
【0109】
ノードcの中継処理部105は、パケット受信部104がノードdからのパケット受信通知を受け取ったと判別し(ステップS503)、パケット中継処理を終了する。ノードdも上記したのと同様の処理により、アドレスリストのアドレスをアドレスhに変更した下りデータパケットをノードhへ中継する。
【0110】
上記したように本実施例によるパケット中継システムによれば、各ノードが、隣接ノードとの間で交換するパケットに含まれる2ホップ先のノードのアドレスを隣接ノードのアドレスと対応付けて記憶する。ノードが隣接ノードのうちの1へのパケット中継が失敗したと判別した場合に、2ホップ先の中継先ノードのアドレスに対応付けられているアドレスの1を選択し、当該1のアドレスの隣接ノードへパケットを中継する。
【0111】
従来のパケット中継システムにおいては、パケットが宛先ノードへ正しく転送されなかった場合にシンクノードからの下り経路を再確立するため、当該宛先ノードからシンクノードに対してRRECコマンドを送信していたので、下り経路が再確立されるまでの間は、下り通信を行うことができないという問題があった。それに対して本実施例による中継システムによれば、パケットの中継先ノードを変更してパケットを中継するので、シンクノードからの下り経路の途中でパケット中継を失敗した場合においても、宛先ノードへパケットを迅速に中継することができる。
【0112】
上記した例は、ノードcがパケット中継に失敗した場合の代替ノードの候補がノードdのみの場合の例であるが、代替ノード候補が複数ある場合には、以下のような処理がなされる。
【0113】
図20は、パケット中継システム1を下りデータパケットの中継方向と各中継段階におけるアドレスリストと共に表す図である。上記した例におけるパケット中継システム1に更にノードkが追加されている。ノードkは、同図に示されるとおり、ノードc及びhと隣接するノードである。図21(a)は、この場合のノードcのルーティングテーブルの一例を表す図である。ノードkについての隣接アドレス、リンクコスト、パスコスト、到着率が追加されている。図21(b)は、この場合のノードcの2ホップ隣接ノードテーブルの一例を表す図である。2ホップのノードhのアドレスhにアドレスd、g及びkが対応付けられている。
【0114】
ノードcの中継処理部105は、ノードgへの下りデータパケットの中継が失敗したと判別した場合(ステップS503)、図21(b)に示される如き2ホップ隣接テーブル111を参照する(ステップS504)。
【0115】
中継処理部105は、アドレスリスト内においてアドレスgの次に記載されているアドレスhが2ホップ隣接テーブル111における2ホップのノードのアドレスとして記憶されているか検索する(ステップS505)。
【0116】
アドレスhが2ホップのノードのアドレスとして記憶されていた場合、中継処理部105は、アドレスhに対応する1ホップのノードのアドレスd及びgのうちの未中継のノードのアドレスつまりアドレスd又はkのいずれか1を下りデータパケットの宛先として決定する。
【0117】
このとき、中継処理部105は、図21(a)に示される如きルーティングテーブルを参照し、アドレスdに対応するリンクコスト「3」と、アドレスkに対応するリンクコスト「1」とを比較し、リンクコストが小さい方のアドレスkを下りデータパケットの中継先として決定する。中継処理部105は、アドレスリストのアドレスをアドレスk、hに変更し(ステップS501)、ノードkへ中継する(ステップS502)。このような処理により、より適切な中継先ノード選択が可能となる。
【0118】
また、上記した例は、中継先ノードからの受信確認応答が1回でも得られなかった場合、直ぐに他の中継先ノードを選択する場合の例であるが、受信確認応答が得られなかった場合でも同一の中継先ノードに複数回のパケット送信を行い、それらの複数回送信が全て失敗したと判別した場合に他の中継先ノードを選択するようにしても良い。
【符号の説明】
【0119】
1 パケット中継システム
101 アンテナ
102 増幅器
103 無線信号送受信部
104 パケット受信部
105 中継処理部
106 ルーティングテーブル
107 データパケット生成部
108 制御パケット生成部
109 パケット送信部
110 パケット集約部
111 2ホップ隣接テーブル
【特許請求の範囲】
【請求項1】
ツリー状に構成された複数のノードを含むパケット中継システムであって、
前記ノードの各々は、
前記複数のノードのうちの自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、
前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、
前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とするパケット中継システム。
【請求項2】
前記集約パケット生成手段は、複数のアドレスの一に対応する親ノードと前記親ノードに対する子ノードとからなるノード群に対応するアドレス群の集合を前記アドレスリストとして生成したパケットを前記集約パケットとすることを特徴とする請求項1に記載のパケット中継システム。
【請求項3】
データパケットを相互に中継する複数のノードを含むパケット中継システムであって、
前記ノードの各々は、
前記複数のノードのうちの自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、
前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、
前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とするパケット中継システム。
【請求項4】
前記ノードは、
前記隣接ノードの各々からのパケットの到達率を前記隣接ノード毎に算出する到達率算出手段と、
前記到達率に基づいて前記隣接ノード毎のリンクコストを算出するリンクコスト算出手段と、を更に含み、
前記パケット中継手段は、隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスのうちの前記リンクコストが最小の隣接ノードに対応するアドレスを宛先として前記データパケットを中継することを特徴とする請求項3に記載のパケット中継システム。
【請求項5】
ツリー状に構成された無線通信路を介してデータパケットを中継する無線ノードであって、
自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、
前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、
前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする無線ノード。
【請求項6】
前記集約パケット生成手段は、複数のアドレスの一に対応する親ノードと前記親ノードに対する子ノードとからなるノード群に対応するアドレス群の集合を前記アドレスリストとして生成したパケットを前記集約パケットとすることを特徴とする請求項5に記載の無線ノード。
【請求項7】
無線通信路を介してデータパケットを中継する無線ノードであって、
自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、
前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、
前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする無線ノード。
【請求項8】
前記隣接ノードの各々からのパケットの到達率を前記隣接ノード毎に算出する到達率算出手段と、
前記到達率に基づいて前記隣接ノード毎のリンクコストを算出するリンクコスト算出手段と、を更に含み、
前記パケット中継手段は、隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスのうちの前記リンクコストが最小の隣接ノードに対応するアドレスを宛先として前記データパケットを中継することを特徴とする請求項7に記載の無線ノード。
【請求項1】
ツリー状に構成された複数のノードを含むパケット中継システムであって、
前記ノードの各々は、
前記複数のノードのうちの自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、
前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、
前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とするパケット中継システム。
【請求項2】
前記集約パケット生成手段は、複数のアドレスの一に対応する親ノードと前記親ノードに対する子ノードとからなるノード群に対応するアドレス群の集合を前記アドレスリストとして生成したパケットを前記集約パケットとすることを特徴とする請求項1に記載のパケット中継システム。
【請求項3】
データパケットを相互に中継する複数のノードを含むパケット中継システムであって、
前記ノードの各々は、
前記複数のノードのうちの自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、
前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、
前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とするパケット中継システム。
【請求項4】
前記ノードは、
前記隣接ノードの各々からのパケットの到達率を前記隣接ノード毎に算出する到達率算出手段と、
前記到達率に基づいて前記隣接ノード毎のリンクコストを算出するリンクコスト算出手段と、を更に含み、
前記パケット中継手段は、隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスのうちの前記リンクコストが最小の隣接ノードに対応するアドレスを宛先として前記データパケットを中継することを特徴とする請求項3に記載のパケット中継システム。
【請求項5】
ツリー状に構成された無線通信路を介してデータパケットを中継する無線ノードであって、
自身に隣接する隣接ノードの一からのパケットを所定の送信タイミングが到来するまで保持するパケット保持手段と、
前記送信タイミングが到来するまでに当該一の隣接ノード以外の隣接ノードからのパケットを受信した場合に当該受信したパケットに含まれるアドレスと前記パケット保持手段によって保持されているパケットに含まれるアドレスと自身のアドレスとを集約して得られたアドレスリストを含む集約パケットを生成する集約パケット生成手段と、
前記送信タイミングの到来に応じて前記隣接ノードのうちの最上位ノード側に位置する隣接ノードへ前記集約パケットを中継する集約パケット中継手段と、を含むことを特徴とする無線ノード。
【請求項6】
前記集約パケット生成手段は、複数のアドレスの一に対応する親ノードと前記親ノードに対する子ノードとからなるノード群に対応するアドレス群の集合を前記アドレスリストとして生成したパケットを前記集約パケットとすることを特徴とする請求項5に記載の無線ノード。
【請求項7】
無線通信路を介してデータパケットを中継する無線ノードであって、
自身に隣接する隣接ノードの一から当該一の隣接ノードのアドレスと前記一の隣接ノードに隣接する2ホップ隣接ノードのアドレスとを取得する2ホップ隣接ノードアドレス取得手段と、
前記2ホップ隣接ノード毎に前記2ホップ隣接ノードのアドレスと前記隣接ノードのアドレスとを対応付けて記憶する2ホップ隣接ノードアドレス記憶手段と、
前記隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスの一を宛先として前記データパケットを中継するパケット中継手段と、を含むことを特徴とする無線ノード。
【請求項8】
前記隣接ノードの各々からのパケットの到達率を前記隣接ノード毎に算出する到達率算出手段と、
前記到達率に基づいて前記隣接ノード毎のリンクコストを算出するリンクコスト算出手段と、を更に含み、
前記パケット中継手段は、隣接ノードの一へ前記データパケットを中継できなかったと判別した場合に当該一の隣接ノードのアドレスと共に前記2ホップ隣接ノードのアドレスの一に対応する隣接ノードのアドレスのうちの前記リンクコストが最小の隣接ノードに対応するアドレスを宛先として前記データパケットを中継することを特徴とする請求項7に記載の無線ノード。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2012−239243(P2012−239243A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−201640(P2012−201640)
【出願日】平成24年9月13日(2012.9.13)
【分割の表示】特願2009−19809(P2009−19809)の分割
【原出願日】平成21年1月30日(2009.1.30)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成24年9月13日(2012.9.13)
【分割の表示】特願2009−19809(P2009−19809)の分割
【原出願日】平成21年1月30日(2009.1.30)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】
[ Back to top ]