(57)【要約】  無線アドホックネットワークにおけるパケットの輻輳の発生を効率よく抑制することを課題とする。課題解決のため、ゲートウェイ装置２００は、パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信するパケット受信部２０４を備える。また、ゲートウェイ装置２００は、パケット受信部２０４により受信されたパケットに基づいて、パケットがパケット受信部２０４に到達するまでの通信経路に輻輳が発生したことを検出する輻輳検出部２１０を備える。また、ゲートウェイ装置２００は、輻輳検出部２１０により通信経路に輻輳が発生したことが検出されたら、通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する輻輳制御メッセージ生成部２１２を備える。また、輻輳制御メッセージ生成部２１２により生成された輻輳制御メッセージをブロードキャストするメッセージ送信部２１６を備える。
2012101763.tif 000002
【特許請求の範囲】
【請求項１】
パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信するパケット受信部と、
前記パケット受信部により受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出する輻輳検出部と、
前記輻輳検出部により前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する輻輳制御メッセージ生成部と、
前記輻輳制御メッセージ生成部により生成された輻輳制御メッセージをノード装置に送信するメッセージ送信部と
を備えることを特徴とする通信装置。
【請求項２】
前記パケット受信部により受信されたパケットに付加されている通信経路の履歴に基づいて、前記パケットが前記ノード装置から前記パケット受信部に到達するまでに通信経路を変更した回数を求める経路変更回数抽出部を
さらに備え、
前記輻輳検出部は、前記経路変更回数抽出部により求められた通信経路の変更回数が、あらかじめ設定された制御閾値を超えたら、前記通信経路に輻輳が発生したことを検出する
請求項１に記載の通信装置。
【請求項３】
前記ノード装置がキャリアセンス方式でパケットを送信する場合において、
前記パケット受信部により受信されたパケットに付加されており、前記ノード装置がパケットを送信する際に他のノード装置が同一の宛先へパケットを送信していることを表すビジーの回数の履歴に基づいて、前記パケットが前記ノード装置から前記パケット受信部に到達するまでのビジーの回数を求めるビジー回数抽出部を
さらに備え、
前記輻輳検出部は、前記ビジー回数抽出部により求められたビジーの回数が、あらかじめ設定された制御閾値を超えたら、前記通信経路に輻輳が発生したことを検出する
請求項１に記載の通信装置。
【請求項４】
前記輻輳制御メッセージ生成部は、前記輻輳制御メッセージに、前記輻輳を回避するための行動を実行すべきノード装置の識別子を付加したメッセージを生成する
請求項１に記載の通信装置。
【請求項５】
前記輻輳制御メッセージ生成部は、前記輻輳制御メッセージに、パケットの廃棄、再送回数の抑制、転送経路数の抑制、パケット送信頻度の抑制の少なくとも１つを含む輻輳制御行動種別を付加したメッセージを生成する
請求項１に記載の通信装置。
【請求項６】
前記メッセージ送信部は、前記輻輳制御メッセージ生成部により生成された輻輳制御メッセージをブロードキャストする
請求項１に記載の通信装置。
【請求項７】
前記輻輳検出部により前記通信経路に輻輳が発生したことが検出された後に、輻輳検出部により前記通信経路に輻輳が発生したことが検出されなくなったら、前記通信経路の輻輳を回避するための行動の実行の解除を指示する輻輳解除メッセージを生成する輻輳解除メッセージ生成部を
さらに備え、
メッセージ送信部は、前記輻輳解除メッセージ生成部により生成された輻輳解除メッセージをブロードキャストする
請求項１に記載の通信装置。
【請求項８】
無線アドホック通信網を介して通信を行うノード装置とゲートウェイ装置とを備えた通信システムであって、
前記ゲートウェイ装置は、
パケットの送信元のノード装置から前記無線アドホック通信網を介して送信されたパケットを受信するパケット受信部と、
前記パケット受信部により受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出する輻輳検出部と、
前記輻輳検出部により前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する輻輳制御メッセージ生成部と、
前記輻輳制御メッセージ生成部により生成された輻輳制御メッセージをノード装置に送信するメッセージ送信部とを備え、
前記ノード装置は、
前記送信された輻輳制御メッセージを受信するメッセージ受信部と、
前記メッセージ受信部により前記輻輳制御メッセージを受信したら、前記通信経路の輻輳を回避するための行動を実行する輻輳回避行動制御部と、
前記メッセージ受信部により受信された輻輳制御メッセージを再送信するメッセージ再送信部と
を備えることを特徴とする通信システム。
【請求項９】
前記メッセージ送信部は、前記輻輳制御メッセージ生成部により生成された輻輳制御メッセージをブロードキャストし、
前記メッセージ再送信部は、前記メッセージ受信部により受信された輻輳制御メッセージを再ブロードキャストする
請求項８に記載の通信システム。
【請求項１０】
前記ゲートウェイ装置は、
前記輻輳検出部により前記通信経路に輻輳が発生したことが検出された後に、輻輳検出部により前記通信経路に輻輳が発生したことが検出されなくなったら、前記通信経路の輻輳を回避するための行動の実行の解除を指示する輻輳解除メッセージを生成する輻輳解除メッセージ生成部
をさらに備え、
前記ノード装置は、
前記メッセージ受信部により前記輻輳解除メッセージを受信したら、前記通信経路の輻輳を回避するための行動の実行を解除する輻輳回避行動解除部
をさらに備え、
前記メッセージ送信部は、前記輻輳解除メッセージ生成部により生成された輻輳解除メッセージをブロードキャストし、
前記メッセージ再送信部は、前記メッセージ受信部により受信された輻輳解除メッセージを再ブロードキャストする
請求項８に記載の通信システム。
【請求項１１】
前記輻輳制御メッセージ生成部は、前記輻輳制御メッセージに、前記輻輳を回避するための行動を実行すべきノード装置の識別子を付加したメッセージを生成し、
前記輻輳回避行動制御部は、前記メッセージに含まれる前記輻輳を回避するための行動を実行すべきノード装置の識別子と自ノード装置の識別子が一致する場合には、前記通信経路の輻輳を回避するための行動を実行する
請求項８に記載の通信システム。
【請求項１２】
前記ノード装置は、
前記ゲートウェイ装置からのホップ数が自ノード装置と比べて小さいノード装置から前記輻輳制御メッセージまたは輻輳解除メッセージを受信した場合にのみ、前記メッセージ再送信部に前記輻輳制御メッセージまたは輻輳解除メッセージを再ブロードキャストさせるか、または、自ノード装置から送信された前記ゲートウェイ装置宛てのパケットの直近の中継ノード装置から前記輻輳制御メッセージまたは輻輳解除メッセージを受信した場合にのみ、前記メッセージ再送信部に前記輻輳制御メッセージまたは輻輳解除メッセージを再ブロードキャストさせる転送メッセージ選択部を
さらに備えることを特徴とする請求項８に記載の通信システム。
【請求項１３】
パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信するパケット受信ステップと、
前記パケット受信ステップにより受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出する輻輳検出ステップと、
前記輻輳検出ステップにより前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する輻輳制御メッセージ生成ステップと、
前記輻輳制御メッセージ生成ステップにより生成された輻輳制御メッセージをノード装置に送信するメッセージ送信ステップと
を備えることを特徴とする通信方法。
【請求項１４】
前記メッセージ送信ステップは、前記輻輳制御メッセージ生成ステップにより生成された輻輳制御メッセージをブロードキャストする
請求項１３に記載の通信方法。
【請求項１５】
パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信し、
前記受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出し、
前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成し、
前記生成された輻輳制御メッセージをノード装置に送信する
処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項１６】
前記生成された輻輳制御メッセージをノード装置に送信する処理は、前記生成された輻輳制御メッセージをブロードキャストする処理をコンピュータに実行させる
請求項１５に記載の通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信システム、通信方法、および通信プログラムに関する。
【背景技術】
【０００２】
近年、監視制御システム(例えばSCADA,  Supervisory  Control  And  Data  Acquisition)において、ツリーネットワーク型に構成された複数のノード装置間をキャリアセンス方式の無線アドホック通信で結ぶマルチホップネットワークが注目されている。マルチホップネットワークにおいて、隣接ノード装置へのパケットの到達性を重視する場合には、隣接ノード装置間で到達確認を行いながらパケットを転送するルーティングアルゴリズムが用いられる。【０００３】
隣接するノード装置間で到達確認を行いながらデータを転送するルーティングアルゴリズムでは、パケットの通信経路に輻輳が発生することが知られている。すなわち、キャリアセンス方式で通信を行う無線アドホックネットワークは、自律分散的にノード装置が追加されるため、ノード装置の数が多くなる。ノード装置の数が多くなると、ノード装置からツリー型ネットワークのツリーの頂点に当たるノード装置(以下、ゲートウェイ装置（GW:  Gateway）という)へのパケットの送信要求は増加する。すると、ゲートウェイ装置へのパケットの送信要求と、ゲートウェイ装置から周辺ノード装置へのパケット到達確認用のパケット（ACK:ACKnowledgementパケット）の送信要求とが競合して、ゲートウェイ装置がACKを送信する機会が減少する。その結果、ゲートウェイ装置からのACK到着遅延が大きくなり、ACK待ち時間を超えると周辺ノード装置で複製されるパケットが増加する。パケットの複製が増加すると、複製されたパケットの送信要求がさらに発生するため、ゲートウェイ装置からのACK遅延がさらに大きくなり、その結果、複製パケットが大量に発生する悪循環が生じる。【０００４】
このような場合、輻輳が収まるまで長期間にわたり監視制御システムが使えなくなるおそれがある。したがって、安定した監視制御システムの運用を行うためには、輻輳の発生を抑制すること、および輻輳が発生した場合には速やかに終息させる仕組みを持つことが重要である。【０００５】
これに対して、従来技術では、無線ネットワーク上のトラフィック量を測定して、測定したトラフィック量が所定レベルを超えた場合、ノード装置から送信するパケットの送信レートを減少させることが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００５−５１０９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術は、無線アドホックネットワークにおけるパケットの輻輳の発生を効率よく抑制することについては考慮されていない。【０００８】
すなわち、従来技術は、ノード装置がネットワーク上のパケットの輻輳を検出したら、自ノード端末から送信されるパケットの送信レートを減少させることにより、輻輳の発生を抑制するものである。この従来技術では、ネットワーク上のパケットの輻輳が検出されたときに、周辺ノード装置から送信されるパケットの送信レートは制御することができない。【０００９】
これに対して、ゲートウェイ装置をツリーの頂点とするツリー型ネットワークにおいては、複数のノード装置から送信されるパケットがゲートウェイ装置に集中するため、ゲートウェイ装置の周辺のパケット通信経路で特に輻輳が発生し易い。ここで、ゲートウェイ装置の周辺に配置された各ノード装置が、従来技術のように自ノード装置のパケットの送信レートを減少させたとしても、ゲートウェイ装置に集中するパケットの輻輳状態を考慮して送信レートを減少させるものではない。したがって、ゲートウェイ装置の周辺のパケット通信経路における輻輳を効率よく抑制できないことが考えられる。一方、ゲートウェイ装置の１箇所で従来技術に沿って輻輳を検出しようとすると、ゲートウェイ装置の周辺の輻輳しか検出できない。その半面、各ノード装置で従来技術に沿って輻輳を検出しようとすると、ネットワークのどこで発生した輻輳も検知できるが、各ノード装置に輻輳検知の機能が必要となり、コストパフォーマンスの点で非効率的である。【００１０】
開示の技術は、上記に鑑みてなされたものであって、無線アドホックネットワークにおけるパケットの輻輳の発生を効率よく抑制することができる通信装置、通信システム、通信方法、および通信プログラムを実現することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する通信装置は、一つの態様において、パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信するパケット受信部を備える。また、通信装置は、前記パケット受信部により受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出する輻輳検出部を備える。また、通信装置は、前記輻輳検出部により前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する輻輳制御メッセージ生成部を備える。また、通信装置は、前記輻輳制御メッセージ生成部により生成された輻輳制御メッセージをノード装置に送信するメッセージ送信部を備える。
【発明の効果】
【００１２】
本願の開示する通信装置の一つの態様によれば、無線アドホックネットワークにおけるパケットの輻輳の発生を効率よく抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施例の通信システムの全体構成を示す図である。
【図２】図２は、本実施例のゲートウェイ装置の構成を示すブロック図である。
【図３】図３は、制御／解除メッセージのフォーマットの一例を示す図である。
【図４】図４は、ゲートウェイ装置の第１の処理を示すフローチャートである。
【図５】図５は、本実施例のノード装置の第１の構成を示すブロック図である。
【図６】図６は、ノード装置の第１の処理を示すフローチャートである。
【図７】図７は、ゲートウェイ装置の第２の処理を示すフローチャートである。
【図８】図８は、ノード装置の第２の処理を示すフローチャートである。
【図９】図９は、ゲートウェイ装置の第３の処理を示すフローチャートである。
【図１０】図１０は、本実施例のノード装置の第２の構成を示すブロック図である。
【図１１】図１１は、ゲートウェイ装置の第４の処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する通信装置、通信システム、通信方法、および通信プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。
【実施例】
【００１５】
図１は、本実施例の通信システムの全体構成を示す図である。図１に示すように、本実施例の通信システム１００は、ゲートウェイ装置２００と、ゲートウェイ装置２００との間で無線通信を行う複数のノード装置３００−１〜３００−ｍ（ｍは２以上の自然数）とを備える。通信システム１００は、ゲートウェイ装置２００を頂点として、ノード装置３００−１〜３００−ｍが枝分かれして設けられたツリー型ネットワークを構成している。ゲートウェイ装置２００とノード装置３００−１〜３００−ｍとの間、およびノード装置３００−１〜３００−ｍ相互間は、無線アドホック通信網によって無線通信可能となっている。複数のノード装置３００−１〜３００−ｍは、いずれも同様の構成を有しているので、以下、説明の便宜上ノード装置３００−１〜３００−ｍのいずれかを示す場合には、ノード装置３００という。また、ゲートウェイ装置２００とノード装置３００はいずれも通信装置の一態様である。【００１６】
本実施例では、ゲートウェイ装置２００と無線通信可能な範囲内にノード装置３００−１〜３００−３が配置されていると仮定する。また、ノード装置３００−１〜３００−３それぞれに対して無線通信可能な範囲内にノード装置３００−４〜３００−ｍが配置されていると仮定する。例えば、ノード装置３００−８からゲートウェイ装置２００に対してパケットを送信する場合、ノード装置３００−８から直接ゲートウェイ装置２００に対してパケットを送信することはできない。そこで、ノード装置３００−８は、パケットを一旦ノード装置３００−３へ送信する。ノード装置３００−３は、ノード装置３００−８から送信されたパケットを受信したら、受信したパケットをゲートウェイ装置２００へ送信する。つまり、この場合は、ノード装置３００−３はパケットを中継する中継ノード装置となる。【００１７】
なお、ノード装置３００−１〜３００−３は、ゲートウェイ装置２００宛てのパケットを送信する場合には、直接ゲートウェイ装置２００にパケットを送信すべきことがあらかじめ設定されたルーティングテーブルを有している。また、ノード装置３００−１〜３００−３は、ゲートウェイ装置２００へパケットを送信できない場合に、どのノード装置へパケットを送信すべきか優先順位を付けてあらかじめ設定されたルーティングテーブルを有している。また、ノード装置３００−４〜３００−ｍは、ゲートウェイ装置２００宛てのパケットを送信する場合に、どの中継ノード装置へパケットを送信すべきかあらかじめ設定されたルーティングテーブルを有している。また、ノード装置３００−４〜３００−ｍは、あらかじめ設定された中継ノード装置へパケットを送信できない場合に、どの中継ノード装置へパケットを送信すべきか優先順位を付けてあらかじめ設定されたルーティングテーブルを有している。ゲートウェイ装置２００は、通信ケーブル２０２を介して他のゲートウェイ装置と接続される。他のゲートウェイ装置に対しては、ゲートウェイ装置２００と同様に、複数のノード装置がツリー型ネットワークを構成して配置される。【００１８】
図２は、本実施例のゲートウェイ装置２００の構成を示すブロック図である。図２に示すように、本実施例のゲートウェイ装置２００は、パケット受信部２０４と、経路変更回数抽出部２０８と、ビジー回数抽出部２０９とを備える。また、ゲートウェイ装置２００は、輻輳検出部２１０と、輻輳制御メッセージ生成部２１２と、輻輳解除メッセージ生成部２１４と、メッセージ送信部２１６とを備える。【００１９】
パケット受信部２０４は、例えばノード装置３００−１〜３００−３から無線アドホック通信網を介して送信されたパケットを受信する。経路変更回数抽出部２０８は、パケット受信部２０４により受信されたパケットに基づいて、このパケットがパケットの送信元のノード装置からパケット受信部２０４に到達するまでに通信経路を変更した回数を抽出する。経路変更回数抽出部２０８は、例えば、受信したパケットに付加されている通信経路の履歴に基づいて、通信経路の変更回数を抽出することができる。通信経路の履歴とは、受信したパケットが送信元のノード装置からどのノード装置を中継して送信されたかを示す履歴のことである。送信元のノード装置から送信されたパケットには、中継ノード装置を経由するたびに、中継ノード装置の識別子が付加される。経路変更回数抽出部２０８は、受信したパケットに付加されている中継ノード装置の識別子を参照することにより、通信経路の変更回数を抽出することができる。【００２０】
例えばノード装置３００−８がパケットの送信元であり、ノード装置３００−８から送信されたパケットはノード装置３００−３を経由してゲートウェイ装置２００へ送信されるという通信経路があらかじめ設定されていたとする。あらかじめ設定された通信経路のとおりにパケットが送信された場合には、パケットの通信経路は変更されていないので、経路変更回数抽出部２０８は、通信経路の変更回数として「０」回を抽出する。一方、ノード装置３００−８からノード装置３００−３へパケットの送信を試みたが送信できなかった場合には、ノード装置３００−８は、例えばノード装置３００−２を介してゲートウェイ装置２００へパケットを送信する。この場合には、パケットの通信経路は１回変更されているので、経路変更回数抽出部２０８は、通信経路の変更回数として「１」回を抽出する。また、ノード装置３００−８からノード装置３００−３へパケットを送信できず、ノード装置３００−２へパケットの送信を試みたがそれでも送信できない場合に、例えばノード装置３００−１を介してゲートウェイ装置２００へパケットを送信したとする。この場合には、パケットの通信経路は２回変更されたことになるので、経路変更回数抽出部２０８は、通信経路の変更回数として「２」回を抽出する。なお、ノード装置は、例えばパケットを送信したにもかかわらず到達確認(ACK)パケットが返送されない場合に、パケットの送信ができなかったと判断する。【００２１】
また、経路変更回数抽出部２０８は、送信元のノード装置からゲートウェイ装置２００へパケットを送信した場合のホップ数に基づいて、経路変更回数を抽出することもできる。ホップ数とは、あるノード装置３００からゲートウェイ装置２００へパケットを送信する場合に、ゲートウェイ装置２００へ到達するまでにパケットが何回ノード装置から送信されたかを示すものである。例えばノード装置３００−４からノード装置３００−１を中継してゲートウェイ装置２００へパケットが送信された場合を考える。この場合、パケットは、ノード装置３００−４から送信されてノード装置３００−１へ到達し、ノード装置３００−１から送信されてゲートウェイ装置２００へ到達するので、ホップ数は「２」回となる。経路変更回数抽出部２０８は、受信パケットに記録された通信経路の履歴から、ホップ数を求めることができる。経路変更回数抽出部２０８は、ノード装置からゲートウェイ装置２００までの最短ホップ数をあらかじめ記録しておき、この最短ホップ数と受信パケットの通信経路の履歴から求めたホップ数との差分を経路変更回数として抽出することもできる。経路変更回数抽出部２０８は、受信パケットに記録された通信経路の履歴や、ホップ数の差分に限らず、その他の方法で経路変更回数を抽出することもできる。また、ホップ数とは、ゲートウェイ装置２００からノード装置３００へパケットを送信した場合に、送信されたパケットが宛先のノード装置３００へ到達するまでにパケットが何回ゲートウェイ装置２００およびノード装置から送信されたかを示すものでもある。【００２２】
ビジー回数抽出部２０９は、ノード装置３００−１〜３００−ｍがキャリアセンス方式でパケットを送信する場合において、パケットの送信元のノード装置からパケット受信部２０４に到達するまでのビジーの回数を求める。キャリアセンス方式とは、例えばノード装置３００−６がノード装置３００−２へパケットを送信しようした際に、他のノード装置（例えばノード装置３００−７）がノード装置３００−２へパケットを送信しているか否かをセンシングするものである。そして、キャリアセンス方式とは、センシング結果に応じてノード装置３００−２へパケットを送信するか否かを決定するものである。例えば、他のノード装置３００−７がノード装置３００−２へパケットを送信している場合には、ビジーであるのでノード装置３００−６はノード装置３００−２へパケットを送信しない。一方、他のノード装置３００−７がノード装置３００−２へパケットを送信していない場合には、ビジーではないので、ノード装置３００−６はノード装置３００−２へパケットを送信する。言い換えると、ビジーとは、あるノード装置が宛先のノード装置へパケットを送信しようとした際に、他のノード装置が同一の宛先のノード装置へパケットを送信しており、パケットを送信できない状態を表す。ビジーの回数は、送信元のノード装置からゲートウェイ装置２００へ送信される過程で、ビジーが発生するたびにカウントアップされて履歴としてパケットに付加される。なお、本実施例では、ゲートウェイ装置２００が、経路変更回数抽出部２０８とビジー回数抽出部２０９の両方を有する例を挙げたが、これに限らず、ゲートウェイ装置２００は、経路変更回数抽出部２０８とビジー回数抽出部２０９の一方を有することもできる。【００２３】
輻輳検出部２１０は、パケット受信部２０４により受信されたパケットに基づいて、パケットがパケット受信部２０４に到達するまでの通信経路に輻輳が発生したことを検出する。輻輳検出部２１０は、例えば経路変更回数抽出部２０８により抽出された通信経路の変更回数があらかじめ設定された制御閾値を超えたら、通信経路に輻輳が発生したことを検出する。また、輻輳検出部２１０は、ビジー回数抽出部２０９により抽出されたビジーの回数があらかじめ設定された制御閾値を超えたら、通信経路に輻輳が発生したことを検出することもできる。【００２４】
輻輳制御メッセージ生成部２１２は、輻輳検出部２１０により通信経路に輻輳が発生したことが検出されたら、通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する。また、輻輳解除メッセージ生成部２１４は、輻輳検出部２１０により通信経路に輻輳が発生したことが検出された後に、輻輳検出部２１０により通信経路に輻輳が発生したことが検出されなくなったら、輻輳解除メッセージを生成する。輻輳解除メッセージとは、通信経路の輻輳を回避するための行動の実行の解除を指示するメッセージである。【００２５】
メッセージ送信部２１６は、輻輳制御メッセージ生成部２１２により生成された輻輳制御メッセージまたは輻輳解除メッセージ生成部２１４により生成された輻輳解除メッセージを含む制御／解除メッセージをノード装置に送信する。メッセージ送信部２１６は、例えば、輻輳制御メッセージ生成部２１２により生成された輻輳制御メッセージまたは輻輳解除メッセージ生成部２１４により生成された輻輳解除メッセージを含む制御／解除メッセージをブロードキャストする。メッセージ送信部２１６によりブロードキャストされた制御／解除メッセージは、ゲートウェイ装置２００との間で通信可能な範囲内に配置されたノード装置３００−１〜３００−３へ送信される。【００２６】
図３は、制御／解除メッセージのフォーマットの一例を示す図である。図３の制御／解除メッセージ４００は、輻輳制御メッセージ生成部２１２または輻輳解除メッセージ生成部２１４で生成される。制御／解除メッセージ４００は、制御／解除フラグ４０２と、輻輳制御対象ＩＤ４０４と、輻輳制御行動種別４０６とを含む。【００２７】
制御／解除フラグ４０２は、輻輳制御メッセージまたは輻輳解除メッセージが生成されたらセットされるフラグであり、輻輳制御メッセージに対応するフラグと輻輳解除メッセージに対応するフラグは識別可能にセットされる。輻輳制御対象ＩＤ４０４は、ノード装置３００−１〜３００−ｍのうち、輻輳を回避するための行動を実行すべきノード装置の識別子を表すものである。ただし、輻輳制御対象ＩＤ４０４を設定しないことにより、輻輳を回避するための行動を実行すべき対象を、ノード装置３００−１〜３００−ｍとすることもできる。また、輻輳制御対象ＩＤ４０４には、ノード装置３００−１〜３００−ｍの個別のＩＤをセットするだけではなく、例えばゲートウェイ装置２００からのホップ数が等しいノード装置、または隣接するノード装置などの属性を表す識別子をセットすることもできる。【００２８】
輻輳制御行動種別４０６は、輻輳を回避するために実行すべき行動の種類を表すものである。輻輳制御行動種別４０６には、例えば、「パケットの廃棄」、「再送回数の抑制」、「転送経路数の抑制」、または「パケット送信頻度の抑制」の少なくとも１つに対応する行動種別が設定される。ただし、輻輳制御行動種別４０６を設定せず、輻輳を回避するために実行すべき行動の種類をあらかじめノード装置３００−１〜３００−ｍに設定しておくこともできる。【００２９】
輻輳制御行動種別４０６に「パケットの廃棄」が設定された場合には、ノード装置は、送信すべきパケットを送信することなく廃棄する。ただし、送信すべきパケットを全て廃棄するのではなく、例えば送信すべきパケットの５０％を廃棄するなど、廃棄するパケットの割合を設定することもできる。輻輳制御行動種別４０６に「再送回数の抑制」が設定された場合には、ノード装置は、パケットの送信が失敗したときにパケットを同一の宛先へ再送する（リトライする）回数を抑制する。例えば、パケットを再送する回数の上限を設定することにより、ノード装置は、パケットの送信が失敗したら、設定された上限の回数まではパケットを再送するが、再送回数が上限の回数に達したらパケットを廃棄する。【００３０】
輻輳制御行動種別４０６に「転送経路数の抑制」が設定された場合には、ノード装置は、パケットの送信が失敗したときにパケットを他の宛先へ送信する回数を抑制する。例えば、パケットを他の宛先へ送信する回数の上限を設定したとする。この場合、ノード装置は、パケットの送信が失敗したら、設定された上限の回数までは、あらかじめ設定された優先順位にしたがって他の宛先へパケットを送信するが、送信回数が上限の回数に達したらパケットを廃棄する。また、輻輳制御行動種別４０６に「パケット送信頻度の抑制」が設定された場合には、ノード装置は、パケットを送信する頻度を抑制する。例えば、単位時間あたりにパケットを送信する頻度を設定することにより、ノード装置は、設定された頻度に応じてパケットを送信する。【００３１】
図４は、ゲートウェイ装置の第１の処理を示すフローチャートである。図４に示すように、まず、パケット受信部２０４は、ノード装置３００−１〜３００−ｍのいずれかから送信されたパケットを受信する（ステップＳ１０１）。続いて、経路変更回数抽出部２０８は、ステップＳ１０１で受信されたパケットに基づいて、このパケットがパケットの送信元のノード装置からパケット受信部２０４に到達するまでに通信経路を変更した回数を抽出する（ステップＳ１０２）。続いて、輻輳検出部２１０は、ステップＳ１０２で抽出された経路変更回数が制御閾値より大きいか否かを判定する（ステップＳ１０３）。続いて、輻輳制御メッセージ生成部２１２は、経路変更回数が制御閾値より大きいと判定されたら（ステップＳ１０３でＹｅｓ）、輻輳制御メッセージを生成する（ステップＳ１０４）。すなわち、輻輳検出部２１０により経路変更回数が制御閾値より大きいと判定されたということは、パケットの通信経路に輻輳が発生したことに起因してパケットの経路変更が頻繁に発生していることを表している。このように輻輳検出部２１０でパケットの通信経路に輻輳が発生したことが検出されたら、輻輳制御メッセージ生成部２１２は、輻輳制御メッセージを生成する。【００３２】
一方、輻輳検出部２１０は、経路変更回数が制御閾値より大きくないと判定されたら（ステップＳ１０３でＮｏ）、輻輳制御中であるか否かを判定する（ステップＳ１０５）。つまり、輻輳検出部２１０は、ノード装置３００−１〜３００−ｍに対して通信経路の輻輳を回避するための行動の実行を指示している状態か否かを判定する。輻輳検出部２１０は、輻輳制御中である場合には（ステップＳ１０５でＹｅｓ）、経路変更回数が解除閾値よりも小さいか否かを判定する（ステップＳ１０６）。輻輳解除メッセージ生成部２１４は、経路変更回数が解除閾値よりも小さい場合には（ステップＳ１０６でＹｅｓ）、輻輳解除メッセージを生成する（ステップＳ１０７）。すなわち、輻輳検出部２１０により経路変更回数が解除閾値より小さいと判定されたということは、パケットの通信経路の輻輳が収まったことに起因してパケットの経路変更の発生が減少したことを表している。このように輻輳検出部２１０でパケットの通信経路に輻輳が発生したことが検出されなくなったら、輻輳解除メッセージ生成部２１４は、輻輳解除メッセージを生成する。また、輻輳解除メッセージ生成部２１４は、経路変更回数が解除閾値を下回ったノード装置を判別して記録しておいて、輻輳解除メッセージに、判別されたノード装置のＩＤを付加することもできる。この場合、ノード装置３００−１〜３００−ｍは、輻輳解除メッセージに自ノード装置のノードＩＤが付加されている場合にのみ、通信経路の輻輳を回避するための行動の実行を解除する。【００３３】
メッセージ送信部２１６は、ステップＳ１０４で輻輳制御メッセージが生成されたら、またはステップＳ１０７で輻輳解除メッセージが生成されたら、制御／解除メッセージをブロードキャストして送信する（ステップＳ１０８）。一方、ステップＳ１０５で輻輳制御中でないと判定された場合またはステップＳ１０６で経路変更回数が解除閾値よりも小さくないと判定された場合には、処理を終了する。【００３４】
以上のように、本実施例によれば、もっともトラフィックの集中するゲートウェイ装置２００で輻輳の発生を検出することにより、輻輳を早期に発見できる。このため、ゲートウェイ装置の周辺のネットワークのキャパシティ以上のトラフィックが発生することを予防することができる。また、ゲートウェイ装置２００は、通信システム１００のネットワーク全体に輻輳制御メッセージを送信し、ネットワーク全体のノード装置３００−１〜３００−ｍが輻輳回避行動をとるため、輻輳の発生を効率よく抑制することができる。その結果、本実施例によれば、輻輳の終息時間を短縮することができる。【００３５】
また、上記の説明では、ゲートウェイ装置２００が、パケットの通信経路の輻輳を検出して、ノード装置３００に対して輻輳制御メッセージをブロードキャストするものであるが、これには限られない。すなわち、ノード装置３００−１〜３００−ｍが、パケットの通信経路の輻輳を検出して、他のノード装置に対して輻輳制御メッセージをブロードキャストすることもできる。例えば、ノード装置３００−３がパケットの通信経路の輻輳を検出する場合を一例に挙げて説明する。ノード装置３００−３に対しては、ノード装置３００−３を中継ノード装置とするノード装置３００−８〜３００−ｍからパケットが集中して送信される。また、仮にノード装置３００−６，３００−７からノード装置３００−２へパケットが送信できない場合には、ノード装置３００−６，３００−７からもノード装置３００−３へパケットが送信される。つまり、ノード装置３００−３についても、ゲートウェイ装置２００と同様にパケットが集中的に送信されて通信経路の輻輳が生じる場合がある。そこで、ノード装置３００−３に、図２のゲートウェイ装置２００と同様の構成を搭載することができる。この場合、ノード装置３００は、パケット送信元のノード装置から無線アドホック通信網を介してゲートウェイ装置２００へ送信されたパケットをパケット送信元のノード装置とゲートウェイ装置２００との間で受信する。パケットを受信した後の処理は、ゲートウェイ装置２００と同様である。【００３６】
図５は、本実施例のノード装置の第１の構成を示すブロック図である。図５に示すように、ノード装置３００は、メッセージ受信部３０２と、制御／解除メッセージ判別部３０６と、輻輳回避行動制御部３０８と、輻輳回避行動解除部３１０と、輻輳解除タイマー３１２と、メッセージ再送信部３１４とを備える。【００３７】
メッセージ受信部３０２は、メッセージ送信部２１６からブロードキャストされた制御／解除メッセージ４００を受信する。制御／解除メッセージ判別部３０６は、メッセージ受信部３０２により受信された制御／解除メッセージ４００の制御／解除フラグ４０２を参照する。そして、制御／解除メッセージ判別部３０６は、制御／解除フラグ４０２の参照結果に基づいて、制御／解除メッセージ４００が、輻輳制御メッセージを表しているか、輻輳解除メッセージを表しているか、またはその他の種別を表しているかを判別する。【００３８】
輻輳回避行動制御部３０８は、制御／解除メッセージ判別部３０６により制御／解除メッセージ４００が輻輳制御メッセージを表していると判別されたら、通信経路の輻輳を回避するための行動を実行する。輻輳回避行動解除部３１０は、制御／解除メッセージ判別部３０６により制御／解除メッセージ４００が輻輳解除メッセージを表していると判別されたら、通信経路の輻輳を回避するための行動の実行を解除する。【００３９】
輻輳解除タイマー３１２は、通信経路の輻輳を回避するための行動の実行を解除するためのタイマーである。より具体的には、輻輳解除タイマー３１２は、輻輳回避行動制御部３０８により通信経路の輻輳を回避するための行動が実行されたら起動される。そして、輻輳解除タイマー３１２は、あらかじめ設定された時間が経過したら、タイマー設定時間が経過した旨を輻輳回避行動解除部３１０に通知する。輻輳回避行動解除部３１０は、輻輳解除タイマー３１２からタイマー設定時間が経過した旨が通知されたら、通信経路の輻輳を回避するための行動の実行を解除する。つまり、輻輳回避行動解除部３１０は、輻輳解除メッセージを表す制御／解除メッセージ４００が受信されるか、または輻輳解除タイマー３１２からタイマー設定時間が経過した旨が通知されたら、通信経路の輻輳を回避するための行動の実行を解除する。【００４０】
メッセージ再送信部３１４は、メッセージ受信部３０２により受信された制御／解除メッセージ４００を再ブロードキャストする。例えば、ゲートウェイ装置２００のメッセージ送信部２１６からブロードキャストされた制御／解除メッセージ４００は、ノード装置３００−１〜３００−３で受信される。ノード装置３００−１〜３００−３で受信された制御／解除メッセージ４００は、メッセージ再送信部３１４により再ブロードキャストされて、ノード装置３００−４〜３００−ｍで受信される。【００４１】
図６は、ノード装置３００の第１の処理を示すフローチャートである。図６に示すように、まず、メッセージ受信部３０２は、ゲートウェイ装置２００またはノード装置３００−１〜３００−ｍのいずれかからブロードキャストされた制御／解除メッセージ４００を受信する（ステップＳ２０１）。続いて、制御／解除メッセージ判別部３０６は、ステップＳ２０１で受信された制御／解除メッセージ４００が、輻輳制御メッセージを表しているか、輻輳解除メッセージを表しているか、またはその他の種別を表しているかを判別する（ステップＳ２０２）。【００４２】
続いて、輻輳回避行動制御部３０８は、ステップＳ２０１で制御／解除メッセージ４００が輻輳制御メッセージを表していると判別されたら、通信経路の輻輳を回避するための行動を実行する（ステップＳ２０３）。輻輳回避行動制御部３０８は、制御／解除メッセージ４００の輻輳制御行動種別４０６が設定されている場合には、輻輳制御行動種別４０６で設定された種別の行動を実行する。輻輳回避行動制御部３０８は、制御／解除メッセージ４００の輻輳制御行動種別４０６が設定されていない場合には、あらかじめ設定された種別の行動を実行する。【００４３】
一方、輻輳回避行動解除部３１０は、ステップＳ２０２で制御／解除メッセージ４００が輻輳解除メッセージを表していると判別されたら、通信経路の輻輳を回避するための行動の実行を解除する（ステップＳ２０４）。【００４４】
続いて、メッセージ再送信部３１４は、ステップＳ２０３で通信経路の輻輳を回避するための行動が実行されたら、制御／解除メッセージ４００を再ブロードキャストする（ステップＳ２０５）。また、メッセージ再送信部３１４は、ステップＳ２０４で通信経路の輻輳を回避するための行動の実行が解除された場合も同様に、制御／解除メッセージ４００を再ブロードキャストする（ステップＳ２０５）。なお、ステップＳ２０２で制御／解除メッセージ４００がその他の種別を表していると判別されたら、処理を終了する。【００４５】
図７は、ゲートウェイ装置２００の第２の処理を示すフローチャートである。ゲートウェイ装置２００の第２の処理は、第１の処理と比べて、輻輳を回避するための行動を実行する対象となるノード装置を指定する点が異なる。したがって、第１の処理と異なる点を中心に以下の説明を行う。【００４６】
図７に示すように、まず、パケット受信部２０４は、ノード装置３００−１〜３００−ｍのいずれかから送信されたパケットを受信する（ステップＳ３０１）。続いて、経路変更回数抽出部２０８は、ステップＳ３０１で受信されたパケットに基づいて、このパケットがパケットの送信元のノード装置からパケット受信部２０４に到達するまでに通信経路を変更した回数を抽出する（ステップＳ３０２）。続いて、輻輳検出部２１０は、ステップＳ３０２で抽出された経路変更回数が制御閾値より大きいか否かを判定する（ステップＳ３０３）。【００４７】
続いて、輻輳検出部２１０は、経路変更回数が制御閾値より大きいと判定された場合は（ステップＳ３０３でＹｅｓ）、輻輳を回避するための行動を実行する対象となるノード装置のＩＤを記録する（ステップＳ３０４）。より具体的には、輻輳検出部２１０は、受信パケットに付加されている通信経路の履歴に基づいて、どの通信経路で輻輳が発生しているかを検出する。すなわち、受信パケットに付加された通信経路の履歴は、受信したパケットが送信元のノード装置からどのノード装置を中継して送信されたかを示しているので、この履歴を参照すると、どの通信経路で輻輳が発生しているかを検出することができる。例えば、ノード装置３００−８から送信されたパケットは、輻輳が発生していない状態では、ノード装置３００−３を経由してゲートウェイ装置２００へ送信されるとする。これに対して、ノード装置３００−８から送信されたパケットの通信経路の履歴を参照すると、パケットはノード装置３００−８からノード装置３００−２を経由してゲートウェイ装置２００へ到達したとする。これは、ノード装置３００−８とノード装置３００−３との間の通信経路に輻輳が発生していることによって、ノード装置３００−８からノード装置３００−３へのパケットの送信が成功せず、ノード装置３００−２経由で送信されたことを示している。そこで、輻輳検出部２１０は、ノード装置３００−８を、輻輳を回避するための行動を実行する対象となるノード装置とし、ノード装置３００−８のＩＤ（IDentification）を記録する。【００４８】
続いて、輻輳検出部２１０は、あらかじめ設定された周期が経過したか否かを判定する（ステップＳ３０５）。輻輳検出部２１０は、あらかじめ設定された周期が経過するまで、ステップＳ３０１〜ステップＳ３０４を繰り返す。輻輳検出部２１０は、あらかじめ設定された周期が経過したら（ステップＳ３０５でＹｅｓ）、輻輳を回避するための行動を実行する対象となるノード装置の数が０より多いか否かを判定する（ステップＳ３０６）。【００４９】
輻輳制御メッセージ生成部２１２は、輻輳を回避するための行動を実行する対象となるノード装置の数が０より多いと判定されたら（ステップＳ３０６でＹｅｓ）、輻輳制御メッセージを生成する（ステップＳ３０７）。ここで、輻輳制御メッセージ生成部２１２は、輻輳制御メッセージに対応するフラグを制御／解除フラグ４０２にセットするとともに、輻輳を回避するための行動を実行する対象となるノード装置のＩＤを輻輳制御対象ＩＤ４０４にセットする。【００５０】
一方、輻輳検出部２１０は、輻輳を回避するための行動を実行する対象となるノード装置の数が０であると判定されたら（ステップＳ３０６でＮｏ）、輻輳制御中であるか否かを判定する（ステップＳ３０８）。輻輳検出部２１０は、輻輳制御中である場合には（ステップＳ３０８でＹｅｓ）、経路変更回数が解除閾値よりも小さいか否かを判定する（ステップＳ３０９）。輻輳解除メッセージ生成部２１４は、経路変更回数が解除閾値よりも小さい場合には（ステップＳ３０９でＹｅｓ）、輻輳解除メッセージを生成する（ステップＳ３１０）。【００５１】
メッセージ送信部２１６は、ステップＳ３０７で輻輳制御メッセージが生成されたら、またはステップＳ３１０で輻輳解除メッセージが生成されたら、制御／解除メッセージ４００をブロードキャストして送信する（ステップＳ３１１）。一方、ステップＳ３０８で輻輳制御中でないと判定された場合またはステップＳ３０９で経路変更回数が解除閾値よりも小さくないと判定された場合には、処理を終了する。【００５２】
図８は、ノード装置の第２の処理を示すフローチャートである。ノード装置３００−１〜３０−ｍの第２の処理は、第１の処理と比べて、自ノードが輻輳を回避するための行動を実行する対象となっているか否かを判定する点が異なる。したがって、第１の処理と異なる点を中心に以下の説明を行う。【００５３】
図８に示すように、まず、メッセージ受信部３０２は、ゲートウェイ装置２００またはノード装置３００−１〜３００−ｍのいずれかからブロードキャストされた制御／解除メッセージ４００を受信する（ステップＳ４０１）。続いて、制御／解除メッセージ判別部３０６は、ステップＳ２０１で受信された制御／解除メッセージ４００が、輻輳制御メッセージを表しているか、輻輳解除メッセージを表しているか、またはその他の種別を表しているかを判別する（ステップＳ４０２）。【００５４】
続いて、輻輳回避行動制御部３０８は、ステップＳ２０１で制御／解除メッセージ４００が輻輳制御メッセージを表していると判別されたら、輻輳制御対象ＩＤと自ノード装置のＩＤが一致するか否かを判定する（ステップＳ４０３）。より具体的には、輻輳回避行動制御部３０８は、輻輳制御対象ＩＤ４０４にセットされているＩＤと、自ノード装置のＩＤが一致するか否かを判定する。輻輳回避行動制御部３０８は、輻輳制御対象ＩＤと自ノード装置のＩＤが一致すると判定されたら（ステップＳ４０３でＹｅｓ）、通信経路の輻輳を回避するための行動を実行する（ステップＳ４０４）。【００５５】
一方、輻輳回避行動解除部３１０は、ステップＳ４０２で制御／解除メッセージ４００が輻輳解除メッセージを表していると判別されたら、通信経路の輻輳を回避するための行動の実行を解除する（ステップＳ４０５）。【００５６】
続いて、メッセージ再送信部３１４は、ステップＳ４０４で通信経路の輻輳を回避するための行動が実行されたら、制御／解除メッセージ４００を再ブロードキャストする（ステップＳ４０６）。また、メッセージ再送信部３１４は、ステップＳ４０５で通信経路の輻輳を回避するための行動の実行が解除された場合も同様に、制御／解除メッセージ４００を再ブロードキャストする（ステップＳ４０６）。また、メッセージ再送信部３１４は、ステップＳ４０３で輻輳制御対象ＩＤと自ノード装置のＩＤが一致しないと判定された場合も同様に、制御／解除メッセージ４００を再ブロードキャストする（ステップＳ４０６）。なお、ステップＳ４０２で制御／解除メッセージ４００がその他の種別を表していると判別されたら、処理を終了する。【００５７】
以上、ゲートウェイ装置２００の第２の処理およびノード装置３００の第２の処理によれば、効率よく輻輳の発生を抑制することができる。すなわち、ゲートウェイ装置２００の第２の処理およびノード装置の第２の処理によれば、どの通信経路で輻輳が発生しているかを検出することができる。したがって、輻輳が発生している通信経路にパケットを送信するノード装置に絞って、輻輳を回避するための行動を実行する対象とすることができる。その結果、輻輳が発生している通信経路にパケットを送信するノード装置に限って、輻輳回避行動を実行するので、効率よく輻輳の発生を抑制することができる。【００５８】
図９は、ゲートウェイ装置の第３の処理を示すフローチャートである。ゲートウェイ装置２００の第３の処理は、第２の処理と比べて、輻輳を回避するための行動を実行する対象となるノード装置を指定する方法が異なる。したがって、第２の処理と異なる点を中心に以下の説明を行う。【００５９】
図９に示すように、まず、パケット受信部２０４は、ノード装置３００−１〜３００−ｍのいずれかから送信されたパケットを受信する（ステップＳ５０１）。続いて、経路変更回数抽出部２０８は、ステップＳ５０１で受信されたパケットに基づいて、このパケットがパケットの送信元のノード装置からパケット受信部２０４に到達するまでに通信経路を変更した回数を抽出する（ステップＳ５０２）。続いて、輻輳検出部２１０は、ステップＳ３０２で抽出された経路変更回数が制御閾値より大きいか否かを判定する（ステップＳ５０３）。【００６０】
続いて、輻輳制御メッセージ生成部２１２は、経路変更回数が制御閾値より大きいと判定されたら（ステップＳ５０３でＹｅｓ）、輻輳を回避するための行動を実行する対象となるノード装置のＩＤを輻輳制御対象ＩＤ４０４に設定する（ステップＳ５０４）。ここで、輻輳制御メッセージ生成部２１２は、あらかじめ設定されたホップ数の基準値に基づいて、輻輳制御対象となるノード装置を設定する。より具体的には、輻輳制御メッセージ生成部２１２は、あらかじめ設定されたホップ数の基準値より少ないホップ数でメッセージを送信可能な範囲に設置されているノード装置を輻輳制御対象のノード装置として設定する。例えば、輻輳制御対象となるノード装置を設定するためにあらかじめ設定されたホップ数の基準値が「１」であるとする。この場合、ゲートウェイ装置２００から１回のホップ数でメッセージを送信可能な範囲に設置されているのは、ノード装置３００−１〜３００−３である。そこで、輻輳制御メッセージ生成部２１２は、輻輳制御対象ＩＤ４０４に、ノード装置３００−１〜３００−３に対応するＩＤを設定する。【００６１】
続いて、輻輳制御メッセージ生成部２１２は、輻輳制御メッセージを生成する（ステップＳ５０５）。ここで、輻輳制御メッセージ生成部２１２は、輻輳制御対象ＩＤ４０４に輻輳回制御対象となるノード装置のＩＤが設定された制御／解除メッセージ４００の制御／解除フラグ４０２に、輻輳制御メッセージに対応するフラグをセットする。【００６２】
一方、輻輳検出部２１０は、経路変更回数が制御閾値より大きいと判定されなかったら（ステップＳ５０３でＮｏ）、輻輳制御中であるか否かを判定する（ステップＳ５０６）。輻輳検出部２１０は、輻輳制御中である場合には（ステップＳ５０６でＹｅｓ）、経路変更回数が解除閾値よりも小さいか否かを判定する（ステップＳ５０７）。輻輳解除メッセージ生成部２１４は、経路変更回数が解除閾値よりも小さい場合には（ステップＳ５０７でＹｅｓ）、輻輳解除メッセージを生成する（ステップＳ５０８）。【００６３】
メッセージ送信部２１６は、ステップＳ５０５で輻輳制御メッセージが生成されたら、またはステップＳ５０８で輻輳解除メッセージが生成されたら、制御／解除メッセージ４００をブロードキャストして送信する（ステップＳ５０９）。一方、ステップＳ５０６で輻輳制御中でないと判定された場合またはステップＳ５０７で経路変更回数が解除閾値よりも小さくないと判定された場合には、処理を終了する。【００６４】
以上、ゲートウェイ装置の第３の処理によれば、効率よく輻輳の発生を抑制することができる。すなわち、ゲートウェイ装置の第３の処理によれば、輻輳制御メッセージ生成部２１２は、あらかじめ設定されたホップ数の基準値に基づいて、輻輳制御対象となるノード装置を設定する。例えば、ゲートウェイ装置２００には、ノード装置３００−１〜３００−ｍから送信されたパケットが集中するので、ゲートウェイ装置２００の周囲の通信経路は輻輳が生じ易い。これに対して、ゲートウェイ装置２００からのホップ数が少ない通信経路にパケットを送信するノード装置に限って、輻輳を回避するための行動を実行する対象とすることができるので、効率よく輻輳の発生を抑制することができる。【００６５】
図１０は、本実施例のノード装置の第２の構成を示すブロック図である。ノード装置３００−１〜３００−ｍの第２の構成は、第１の構成と比べて、転送メッセージ選択部３１６が加わった点が異なる。したがって、第１の構成と重複する構成（メッセージ受信部３０２、制御／解除メッセージ判別部３０６、輻輳回避行動制御部３０８、輻輳回避行動解除部３１０、輻輳解除タイマー３１２、およびメッセージ再送信部３１４）の構成の説明は省略する。【００６６】
転送メッセージ選択部３１６は、自ノード装置に制御／解除メッセージ４００を送信したノード装置に基づいて、制御／解除メッセージ４００を再ブロードキャストするか否かを判定する。より具体的には、転送メッセージ選択部３１６は、ゲートウェイ装置２００からのホップ数が自ノード装置と比べて小さいノード装置から制御／解除メッセージ４００を受信した場合にのみ、受信した制御／解除メッセージ４００を再ブロードキャストさせる。例えば、ノード装置３００−８を一例に挙げて説明すると、ノード装置３００−８のゲートウェイ装置２００からのホップ数は「２」である。したがって、ノード装置３００−８は、ゲートウェイ装置２００からのホップ数が「２」より小さい「１」であるノード装置３００−１〜３００−３から制御／解除メッセージ４００を受信した場合にのみ、再ブロードキャストを行う。また、転送メッセージ選択部３１６は、自ノード装置から送信されたゲートウェイ装置２００宛てのパケットの直近の中継ノード装置から制御／解除メッセージ４００を受信した場合にのみ、受信した制御／解除メッセージ４００を再ブロードキャストさせてもよい。例えば、ノード装置３００−８を一例に挙げて説明すると、ノード装置３００−８がゲートウェイ２００宛てのパケットを送信する場合の直近の中継ノード装置は、ノード装置３００−３である。したがって、ノード装置３００−８は、ノード装置３００−３から制御／解除メッセージ４００を受信した場合にのみ、再ブロードキャストを行う。【００６７】
ノード装置３００の第２の構成によれば、制御／解除メッセージ４００のブロードキャストに起因する輻輳の発生を抑制することができる。すなわち、ゲートウェイ装置２００およびノード装置３００が頻繁に制御／解除メッセージ４００をブロードキャストすれば、ブロードキャストされた制御／解除メッセージ４００が原因となって、かえって輻輳状態が悪化するおそれも考えられる。この点、転送メッセージ選択部３１６は、ゲートウェイ装置２００からのホップ数が自ノード装置と比べて小さいノード装置から制御／解除メッセージ４００を受信した場合にのみ、受信した制御／解除メッセージ４００を再ブロードキャストする。また、転送メッセージ選択部３１６は、自ノード装置から送信されたゲートウェイ装置２００宛てのパケットの直近の中継ノード装置から制御／解除メッセージ４００を受信した場合にのみ、受信した制御／解除メッセージ４００を再ブロードキャストさせる。このように、転送メッセージ選択部３１６によれば、制御／解除メッセージ４００が再ブロードキャストされる頻度が減少するので、制御／解除メッセージ４００の再ブロードキャストに起因して輻輳状態が悪化するのを防止することができる。【００６８】
図１１は、ゲートウェイ装置の第４の処理を示すフローチャートである。ゲートウェイ装置２００の第４の処理は、第１の処理と比べて、あらかじめ設定された周期における経路変更回数の平均値を求める点が異なる。したがって、第１の処理と異なる点を中心に以下の説明を行う。【００６９】
図１１に示すように、まず、パケット受信部２０４は、ノード装置３００−１〜３００−ｍのいずれかから送信されたパケットを受信する（ステップＳ６０１）。続いて、経路変更回数抽出部２０８は、ステップＳ６０１で受信されたパケットに基づいて、このパケットがパケットの送信元のノード装置からパケット受信部２０４に到達するまでに通信経路を変更した回数を抽出する（ステップＳ６０２）。続いて、経路変更回数抽出部２０８は、平均経路変更回数を計算する（ステップＳ６０３）。続いて、経路変更回数抽出部２０８は、あらかじめ設定された周期が経過したか否かを判定する（ステップＳ６０４）。経路変更回数抽出部２０８は、あらかじめ設定された周期が経過していないと判定されたら（ステップＳ６０４でＮｏ）、ステップＳ６０１に戻り、あらかじめ設定された周期が経過するまで、ステップＳ６０１〜ステップＳ６０３を繰り返す。これにより、あらかじめ設定された周期における経路変更回数の平均値が求められる。【００７０】
輻輳検出部２１０は、あらかじめ設定された周期が経過したと判定されたら（ステップＳ６０４でＹｅｓ）、ステップＳ６０３で抽出された平均経路変更回数が制御閾値より大きいか否かを判定する（ステップＳ６０５）。輻輳制御メッセージ生成部２１２は、平均経路変更回数が制御閾値より大きいと判定されたら（ステップＳ６０５でＹｅｓ）、輻輳制御メッセージを生成する（ステップＳ６０６）。【００７１】
一方、輻輳検出部２１０は、平均経路変更回数が制御閾値より大きいと判定されなかったら（ステップＳ６０５でＮｏ）、輻輳制御中であるか否かを判定する（ステップＳ６０７）。輻輳検出部２１０は、輻輳制御中である場合には（ステップＳ６０７でＹｅｓ）、経路変更回数が解除閾値よりも小さいか否かを判定する（ステップＳ６０８）。輻輳解除メッセージ生成部２１４は、経路変更回数が解除閾値よりも小さい場合には（ステップＳ６０８でＹｅｓ）、輻輳解除メッセージを生成する（ステップＳ６０９）。【００７２】
メッセージ送信部２１６は、ステップＳ６０６で輻輳制御メッセージが生成されたら、またはステップＳ６０９で輻輳解除メッセージが生成されたら、制御／解除メッセージ４００をブロードキャストして送信する（ステップＳ６１０）。一方、ステップＳ６０７で輻輳制御中でないと判定された場合またはステップＳ６０８で経路変更回数が解除閾値よりも小さくないと判定された場合には、処理を終了する。【００７３】
以上、ゲートウェイ装置の第４の処理によれば、あらかじめ設定された周期における経路変更回数の平均値を求めて、求められた平均経路変更回数に基づいて通信経路の輻輳を検出する。したがって、ゲートウェイ装置の第４の処理によれば、通信経路の輻輳状態を精度よく求めることができるので、精度よく輻輳制御および輻輳解除を行うことができる。【００７４】
なお、上記の実施例は、主に通信装置（ゲートウェイ装置２００およびノード装置３００）、通信システム１００、および通信方法を中心に説明したが、これには限られない。あらかじめ用意された通信プログラムをコンピュータで実行することによって、上述の実施例と同様の機能を実現することができる。すなわち、通信プログラムは、コンピュータに、パケットの送信元のノード装置から無線アドホック通信網を介して送信されたパケットを受信する処理を実行させる。また、通信プログラムは、コンピュータに、前記受信されたパケットに基づいて、前記パケットが前記パケット受信部に到達するまでの通信経路に輻輳が発生したことを検出する処理を実行させる。また、通信プログラムは、コンピュータに、前記通信経路に輻輳が発生したことが検出されたら、前記通信経路の輻輳を回避するための行動の実行を指示する輻輳制御メッセージを生成する処理を実行させる。また、通信プログラムは、コンピュータに、前記生成された輻輳制御メッセージをブロードキャストする処理を実行させる。なお、通信プログラムは、インターネットなどの通信ネットワークを介してコンピュータに配布することができる。また、通信プログラムは、コンピュータに設けられたメモリ、ハードディスク、その他のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００７５】
１００  通信システム
２００  ゲートウェイ装置
２０４  パケット受信部
２０８  経路変更回数抽出部
２１０  輻輳検出部
２１２  輻輳制御メッセージ生成部
２１４  輻輳解除メッセージ生成部
２１６  メッセージ送信部
３００  ノード装置
３０２  メッセージ受信部
３０６  制御／解除メッセージ判別部
３０８  輻輳回避行動制御部
３１０  輻輳回避行動解除部
３１４  メッセージ再送信部
３１６  転送メッセージ選択部
４００  制御／解除メッセージ
４０２  制御／解除フラグ
４０６  輻輳制御行動種別
４０４  輻輳制御対象ＩＤ
【図１】
2012101763.tif 000003
【図２】
2012101763.tif 000004
【図３】
2012101763.tif 000005
【図４】
2012101763.tif 000006
【図５】
2012101763.tif 000007
【図６】
2012101763.tif 000008
【図７】
2012101763.tif 000009
【図８】
2012101763.tif 000010
【図９】
2012101763.tif 000011
【図１０】
2012101763.tif 000012
【図１１】
2012101763.tif 000013
【国際調査報告】
2012101763.tif 000014
2012101763.tif 000015
2012101763.tif 000016
2012101763.tif 000017