(57)【要約】  送信データに対するＡｃｋを受信しない場合に複製データを迂回転送する通信ネットワークにおいて、通信ネットワークに負担をかけることなく、複製データの発生を確実に抑止する。ノード５０１は、ノード５０２に送信したデータに対するＡｃｋを受信しない場合に、複製データをノード５０４に送信する。ノード５０３は、ノード５０５からデータを受信し、そのデータとノード５０６から受信済みのデータの一方が他方の複製データであることが判明すると、複製通知をノード５０１に送信する。ノード５０１は、複製データの発生原因としてノード５０２を特定し、通信履歴の照合依頼をノード５０２に送信する。ノード５０２は、照合依頼に含まれる通信履歴と、格納部５２３に格納されている通信履歴とを照合し、ノード５０１がＡｃｋを受信していないことが判明すると、ノード５０１に対する応答方法を変更する。
2012131924.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを含むネットワーク中のノードであって、
他のノードに対してデータを送信する送信部と、
他のノードからのデータを受信する受信部と、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
前記複数の他のノードのうちの第１のノードに送信したデータに対する確認応答を該第１のノードから受信しない場合に、該送信したデータの複製データを生成する第１の生成部と、
前記複数の他のノードのうちの第２のノードに送信した前記複製データを検知したことを示す複製通知を前記複数の他のノードのうちの１つから受信したとき、前記通信履歴を参照し、前記複製データの発生原因として前記第１のノードを特定する特定部と、
前記第１のノードと前記自ノードとの間の通信履歴を含み、該第１のノードに対して該通信履歴の照合を依頼する照合依頼を生成する第２の生成部と
を備えることを特徴とするノード。
【請求項２】
前記複製通知は、前記複製データの発生原因として複数の候補ノードの識別情報を含み、前記特定部は、前記複数の他のノードと前記自ノードとの間の通信履歴に含まれる、該複数の候補ノードに対する複数のデータ送信処理のうち最も早いデータ送信処理の送信先を、前記第１のノードとして特定することを特徴とする請求項１記載のノード。
【請求項３】
前記特定部は、前記複製通知を受信して前記第１のノードを特定した回数が閾値を超えたとき、前記照合依頼の送信を前記第２の送信部に指示することを特徴とする請求項１又は２記載のノード。
【請求項４】
複数のノードを含むネットワーク中のノードであって、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
受信したデータに対する確認応答を送信する送信部と、
前記複数の他のノードのうち、前記自ノードに送信したデータに対する確認応答を該自ノードから受信しない場合に該送信したデータの複製データを生成する複製ノードから、該複製ノードと該自ノードとの間の第１の通信履歴を含み、該第１の通信履歴の照合を依頼する照合依頼を受信する受信部と、
前記照合依頼を受信したとき、該照合依頼に含まれる前記第１の通信履歴と、前記格納部に格納された前記複製ノードと前記自ノードとの間の第２の通信履歴とを照合し、前記複製ノードが前記自ノードに送信したデータに対する前記確認応答を該自ノードから受信していない場合に、該複製ノードに対する応答方法を変更する照合部と
を備えることを特徴とするノード。
【請求項５】
前記照合部は、前記第２の通信履歴に含まれる前記確認応答の数に対する、前記第１の通信履歴に含まれる前記確認応答の数の割合が、閾値より小さい場合に、前記応答方法を変更することを特徴とする請求項４記載のノード。
【請求項６】
前記照合部は、前記応答方法を、前記複製ノードから受信したデータに対する確認応答の送信回数を増加させる第１の方法、前記複製ノードから受信したデータに対する確認応答の送信電力を増加させる第２の方法、又は前記複製ノードから受信したデータに対する確認応答に対する確認応答を前記複製ノードから受信する第３の方法のいずれかに変更することを特徴とする請求項４又は５記載のノード。
【請求項７】
複数のノードを含むネットワーク中のノードであって、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
前記複数の他のノードのうちの第１のノードから第１のデータを受信する受信部と、
前記第１のデータを受信したとき、前記通信履歴を参照して、該第１のデータと、前記複数の他のノードのうちの第２のノードから受信した第２のデータの一方が他方の複製データであるか否かをチェックし、一方が他方の複製データである場合に、該複製データを生成した複製ノードを特定する特定部と、
前記複製データを検知したことを示す複製通知を前記複製ノードに送信する送信部と
を備えることを特徴とするノード。
【請求項８】
前記通信履歴は、前記第２のデータが通過した経路を示す情報を含み、前記特定部は、前記第１のデータが通過した経路と該第２のデータが通過した経路の共通部分に含まれる最後のノードを、前記複製ノードとして特定することを特徴とする請求項７記載のノード。
【請求項９】
前記特定部は、前記第１のデータが通過した経路に含まれる前記最後のノードの次のノードと、前記第２のデータが通過した経路に含まれる前記最後のノードの次のノードとを、前記複製データの発生原因として特定し、前記送信部は、特定された２つのノードの識別情報を含む前記複製通知を前記複製ノードに送信することを特徴とする請求項８記載のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードを含むネットワーク中のノードに関する。
【背景技術】
【０００２】
アドホックネットワークのように、パケットの転送経路として複数の選択肢を持つ通信ネットワークにおいて、最初に選択された最適経路に沿ったパケット中継が失敗すると、別の経路へのパケット転送が行われる。【０００３】
例えば、図１のような通信ネットワークにおいて、ノード１０１からノード１０５宛てにデータパケットを転送する場合、ノード１０２、１０３、及び１０４のそれぞれを経由する３つの転送経路が存在する。まず、ノード１０２を経由する転送経路が選択され、ノード１０１からノード１０２へのパケット送信が失敗すると、次に、ノード１０３を経由する転送経路が選択され、ノード１０１からノード１０３へデータパケットが迂回転送される。【０００４】
しかし、ノード１０１からノード１０３へのパケット送信も失敗すると、次に、ノード１０４を経由する転送経路が選択され、ノード１０１からノード１０４へデータパケットが迂回転送される。そして、ノード１０１からノード１０４へのパケット送信が成功すると、ノード１０４からノード１０５へデータパケットが送信され、ノード１０５にデータパケットが到達する。【０００５】
このように、通信ネットワークに迂回転送機能を実装することで、経路データと通信ネットワークの実態との間にずれがあっても、転送先にデータパケットが到達する可能性を高めることができる。【０００６】
しかしながら、通信ネットワークの輻輳時に迂回転送機能が輻輳を悪化させる方向に働く場合がある。例えば、図２のような通信ネットワークにおいて、ノード２０１からノード２０６宛てにデータパケットを転送する場合、ノード２０２とノード２０６の間には、ノード２０５を経由する転送経路と、ノード２０３及び２０４を経由する転送経路が存在する。【０００７】
まず、ノード２０５を経由する転送経路が選択され、ノード２０２からノード２０５へデータパケットが送信されると、ノード２０５からノード２０２へ確認応答（Ａｃｋ）パケット２１１が返信される。そして、ノード２０５からノード２０６へデータパケットが送信され、ノード２０６にデータパケットが到達する。【０００８】
ここで、Ａｃｋパケット２１１の返信が輻輳により阻害されると、Ａｃｋパケット２１１がノード２０２に到達しないため、ノード２０２から、同一のデータパケットが複製パケット２１２として、ノード２０３及び２０４を経由する転送経路へ迂回転送される。そして、ノード２０４からノード２０６へ複製パケット２１２が送信され、ノード２０６に複製パケット２１２が到達する。ノード２０６では、同一のデータパケットを複数回受信しても問題はないが、多数の複製パケットが繰り返し発生すると、通信ネットワークの輻輳がさらに悪化してしまう。【０００９】
そこで、データパケットの複製を抑止するために、以下のようなＡｃｋの送信方法が提案されている。
（１）Ａｃｋの送信を多重化する方法
この方法では、送信ノードから受信ノードへデータパケットが送信されると、受信ノードから送信ノードへＡｃｋパケットが複数回返信される。これにより、Ａｃｋパケットの到達性が向上し、データパケットの複製が抑止される。
（２）Ａｃｋの送信確認を行う方法
この方法では、送信ノードから受信ノードへデータパケットが送信されると、受信ノードから送信ノードへ第１のＡｃｋパケットが返信され、続いて、送信ノードから受信ノードへ、第１のＡｃｋパケットを受信したことを示す第２のＡｃｋパケットが返信される。ここで、受信ノードが第２のＡｃｋパケットを受信しなければ、受信ノードから送信ノードへ第１のＡｃｋパケットが再送される。これにより、第１のＡｃｋパケットの到達性が向上し、データパケットの複製が抑止される。
（３）Ａｃｋの送信電力を調整する方法
この方法では、送信ノードから受信ノードへデータパケットが送信されると、Ａｃｋパケットの送信電力を増加させて、受信ノードから送信ノードへＡｃｋパケットが返信される。これにより、Ａｃｋパケットの到達性が向上し、データパケットの複製が抑止される。【００１０】
通信ネットワークの輻輳を検知するために、通信ネットワークに含まれるノード間の送信成功率を計算することでリンク品質を評価する方法が知られている。ただし、データパケットやＡｃｋパケットの送信は不定期に行われるため、送信回数や送信タイミングを把握していなければ、受信ノードにおける測定のみで送信の成否を判断するのは難しい。そこで、定期的に送信されるＨｅｌｌｏパケットの到達周期の揺れに基づいて送信成功率が計算される。【００１１】
例えば、１つのノードにおいて１回目〜９回目のＨｅｌｌｏパケットの受信間隔を測定し、図３に示すような測定結果が得られた場合を考える。この例では、２回目及び５回目の受信間隔がそれぞれ２Ｔ及び３Ｔとなっており、他の受信間隔より長いことが分かる。この場合、送信失敗によるＨｅｌｌｏパケットの抜けに起因して受信間隔が長くなると考えられるため、受信間隔の測定結果に基づいて送信成功率を計算することができる。【００１２】
無線データ通信システムにおいて、送信装置が送信時刻と送信内容とを記録し、受信装置が受信時刻と受信内容とを記録しておき、通信に不具合があったときに記録内容を解析して送信装置及び受信装置が正常に動作していたか否かを解析する技術も知られている。【００１３】
移動通信ネットワークにおいて、送信ノードが定期的に測定用のパケット列を送信し、受信ノードがパケット遅延の測定値を送信ノードに送信することで、各経路の状態情報を更新する技術も知られている。【００１４】
モバイルアドホックネットワークにおいて、パケット誤り率に基づいてリンク品質を測定し、測定結果に基づいて経路を決定する技術も知られている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平９−２８４２３６号公報
【特許文献２】特開２００５−２１０６７１号公報
【特許文献３】特開２００５−５３５２３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上述した従来の通信ネットワークにおいて受信ノードがデータを受信した場合の送信ノードに対する応答方法には、以下のような問題がある。
通信ネットワークの容量減少と、複製パケットによる輻輳の悪化を考慮して、上記（１）〜（３）のうち最適なＡｃｋの送信方法と、Ａｃｋの送信回数又は送信電力等のパラメータを選択する必要がある。この場合、通信ネットワーク全体で最適なＡｃｋの送信方法及び最適なパラメータを設定するために、大規模なシミュレーションを行う必要がある。【００１７】
上記（１）又は（２）のＡｃｋの送信方法では、Ａｃｋパケットが複数回送信されるため、Ａｃｋパケットを１回だけ返信する場合と比べて、通信ネットワーク上のトラフィックが増加する。このため、却って輻輳を助長する恐れがあり、定常運用時の通信ネットワークの容量を圧迫し、通信ネットワークに負担がかかることが予想される。【００１８】
上記（１）又は（３）のＡｃｋの送信方法では、何らかの要因で輻輳が想定よりもさらに悪化した場合、Ａｃｋパケットの送信成功率が低下し、複製パケットが発生する可能性がある。このため、複製パケットを減らすことはできても、完全に抑えることはできない。【００１９】
また、Ｈｅｌｌｏパケットを用いて送信成功率を計算する方法では、輻輳による送信成功率の悪化を検知することが困難である。Ｈｅｌｌｏパケットのトラフィックは、各ノードにほぼ均一に分布するが、データパケットのトラフィックは、ゲートウェイのような特定のノードの周辺に集中するため、その周囲の送信成功率のみが悪化しやすい。【００２０】
さらに、図４に示すように、Ｈｅｌｌｏパケットは同一周期で途切れることなく、かつ、各パケットが独立して送信されるため、Ｈｅｌｌｏパケットのデータ量４０１は時間的に分散されている。一方、データパケットの場合は送信される期間が限定されており、かつ、パケットの中継やＡｃｋパケットの送信が連続して起こるため、特定の期間にデータパケットのデータ量４０２が集中しやすい。【００２１】
このように、データパケットとは特性が異なるＨｅｌｌｏパケットを用いて送信成功率を計算し、通信ネットワークの輻輳を検知することは困難である。
本発明の課題は、送信ノードが送信したデータに対するＡｃｋを受信ノードから受信しない場合に複製データを迂回転送する通信ネットワークにおいて、通信ネットワークに負担をかけることなく、複製データの発生を確実に抑止することである。
【課題を解決するための手段】
【００２２】
第１の態様において、複数のノードを含むネットワーク中のノードは、送信部、受信部、格納部、第１及び第２の生成部、及び特定部を含む。
送信部は、他のノードに対してデータを送信する。受信部は、他のノードからのデータを受信する。格納部は、複数の他のノードと自ノードとの間の通信履歴を格納する。第１の生成部は、複数の他のノードのうちの第１のノードに送信したデータに対する確認応答を第１のノードから受信しない場合に、送信したデータの複製データを生成する。特定部は、複数の他のノードのうちの第２のノードに送信した複製データを検知したことを示す複製通知を複数の他のノードのうちの１つから受信したとき、通信履歴を参照し、複製データの発生原因として第１のノードを特定する。第２の生成部は、第１のノードと自ノードとの間の通信履歴を含み、第１のノードに対して通信履歴の照合を依頼する照合依頼を生成する。【００２３】
第２の態様において、複数のノードを含むネットワーク中のノードは、格納部、送信部、受信部、及び照合部を含む。
格納部は、複数の他のノードと自ノードとの間の通信履歴を格納する。送信部は、受信したデータに対する確認応答を送信する。受信部は、複数の他のノードのうち複製ノードから、複製ノードと自ノードとの間の第１の通信履歴を含み、第１の通信履歴の照合を依頼する照合依頼を受信する。複製ノードは、自ノードに送信したデータに対する確認応答を自ノードから受信しない場合に、送信したデータの複製データを生成する。照合部は、照合依頼を受信したとき、照合依頼に含まれる第１の通信履歴と、格納部に格納された複製ノードと自ノードとの間の第２の通信履歴とを照合する。そして、複製ノードが自ノードに送信したデータに対する確認応答を自ノードから受信していない場合に、複製ノードに対する応答方法を変更する。【００２４】
第３の態様において、複数のノードを含むネットワーク中のノードは、格納部、受信部、特定部、及び送信部を含む。
格納部は、複数の他のノードと自ノードとの間の通信履歴を格納する。受信部は、複数の他のノードのうちの第１のノードから第１のデータを受信する。特定部は、第１のデータを受信したとき、通信履歴を参照して、第１のデータと、複数の他のノードのうちの第２のノードから受信した第２のデータの一方が他方の複製データであるか否かをチェックする。そして、一方が他方の複製データである場合に、複製データを生成した複製ノードを特定する。送信部は、複製データを検知したことを示す複製通知を複製ノードに送信する。
【発明の効果】
【００２５】
第１又は第２の態様によれば、複製データを生成したノードの通信履歴と複製データの発生原因である原因ノードの通信履歴が照合されるため、原因ノードから複製ノードに対する応答方法を変更することができ、複製データの発生が確実に抑止される。また、通信ネットワークの全ノード間の応答方法を変更するのではなく、原因ノードから複製ノードに対する応答方法を変更するだけで済むため、通信ネットワークにはあまり負担がかからない。【００２６】
第１又は第３の態様によれば、複製データが検知されたときに複製ノードが特定されるため、複製ノードから原因ノードに通信履歴の照合を依頼することができ、複製データの発生が確実に抑止される。また、通信ネットワークの全ノード間で通信履歴を交換するのではなく、複製ノードから原因ノードに通信履歴を送信するだけで済むため、通信ネットワークにはあまり負担がかからない。
【図面の簡単な説明】
【００２７】
【図１】第１の通信ネットワークを示す図である。
【図２】第２の通信ネットワークを示す図である。
【図３】Ｈｅｌｌｏパケットの受信間隔を示す図である。
【図４】Ｈｅｌｌｏパケット及びデータパケットのデータ量の時間変化を示す図である。
【図５】通信システムの構成図である。
【図６】第３の通信ネットワークを示す図である。
【図７】通常モードにおける動作のフローチャートである。
【図８】監視モードにおける動作のフローチャートである。
【図９】照合依頼パケットの送信を示すである。
【図１０】ノードの構成図である。
【図１１】通信処理のフローチャートである。
【図１２】データパケット再送処理のフローチャートである。
【図１３】データパケット受信処理のフローチャートである。
【図１４】複製通知パケット受信処理のフローチャートである。
【図１５】照合依頼パケット受信処理のフローチャートである。
【図１６】第１のデータ管理テーブルを示す図である。
【図１７】第２のデータ管理テーブルを示す図である。
【図１８】第３のデータ管理テーブルを示す図である。
【図１９】第１の通信履歴テーブルを示す図である。
【図２０】第２の通信履歴テーブルを示す図である。
【図２１】第４のデータ管理テーブルを示す図である。
【図２２】第１のデータパケットを示す図である。
【図２３】第２のデータパケットを示す図である。
【図２４】経路の比較を示す図である。
【図２５】複製通知パケットを示す図である。
【図２６】第１のリンクテーブルを示す図である。
【図２７】照合依頼パケットに含まれる通信履歴を示す図である。
【図２８】第２のリンクテーブルを示す図である。
【図２９】第１のＡｃｋ送信評価テーブルを示す図である。
【図３０】第２のＡｃｋ送信評価テーブルを示す図である。
【図３１】Ａｃｋパケットの送信を多重化する方法を示す図である。
【図３２】Ａｃｋパケットの送信確認を行う方法を示す図である。
【図３３】Ａｃｋパケットの送信電力を調整する方法を示す図である。
【図３４】情報処理装置の構成図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照しながら、実施形態を詳細に説明する。
図５は、実施形態の通信システムの構成例を示している。図５の通信システムは、通信ネットワーク中のノード５０１〜５０６を含み、ノード５０１〜５０６は、他のノードと無線又は有線で通信する。
【００２９】
ノード５０１及び５０２は、それぞれ、複製ノード及び原因ノードと呼ばれる場合がある。複製ノードは、他のノードに送信したデータに対する確認応答をそのノードから受信しない場合に、送信したデータの複製データを生成するノードである。
【００３０】
ノード５０１は、送信部５１１、受信部５１２、格納部５１３、生成部５１４、５１６、特定部５１５、及び照合部５１７を含む。
送信部５１１は、他のノードに対してデータを送信する。受信部５１２は、他のノードからのデータを受信する。格納部５１３は、複数の他のノードとノード５０１との間の通信履歴を格納する。生成部５１４は、ノード５０２に送信したデータに対する確認応答をノード５０２から受信しない場合に、送信したデータの複製データを生成する。送信部５１１は、ノード５０４に複製データを送信する。
【００３１】
受信部５１２は、ノード５０３から、複製データを検知したことを示す複製通知を受信する。特定部５１５は、複製通知を受信したとき、通信履歴を参照し、複製データの発生原因としてノード５０２を特定する。生成部５１６は、ノード５０１とノード５０２との間の通信履歴を含み、ノード５０２に対して通信履歴の照合を依頼する照合依頼を生成する。送信部５１１は、照合依頼をノード５０２に送信する。
【００３２】
ノード５０２は、送信部５２１、受信部５２２、格納部５２３、生成部５２４、５２６、特定部５２５、及び照合部５２７を含む。
格納部５２３は、複数の他のノードとノード５０２との間の通信履歴を格納する。送信部５２１は、ノード５０１から受信したデータに対する確認応答を、ノード５０１に送信する。受信部５２２は、ノード５０１から、ノード５０１とノード５０２との間の通信履歴を含み、その通信履歴の照合を依頼する照合依頼を受信する。
【００３３】
照合部５２７は、照合依頼を受信したとき、照合依頼に含まれる通信履歴と、格納部５２３に格納された、ノード５０１とノード５０２との間の通信履歴とを照合する。そして、ノード５０１がノード５０２に送信したデータに対する確認応答をノード５０２から受信していない場合に、ノード５０１に対する応答方法を変更する。
【００３４】
ノード５０３は、送信部５３１、受信部５３２、格納部５３３、生成部５３４、５３６、特定部５３５、及び照合部５３７を含む。
格納部５３３は、複数の他のノードとノード５０３との間の通信履歴を格納する。受信部５３２は、ノード５０５から第１のデータを受信する。特定部５３５は、第１のデータを受信したとき、通信履歴を参照して、第１のデータと、ノード５０６から受信した第２のデータの一方が他方の複製データであるか否かをチェックする。そして、一方が他方の複製データである場合に、複製データを生成したノード５０１を特定する。送信部５３１は、複製データを検知したことを示す複製通知をノード５０１に送信する。
【００３５】
図５の通信システムでは、ノード５０３において複製データが検知されたときに複製ノード（ノード５０１）が特定され、複製ノードから原因ノード（ノード５０２）に通信履歴の照合が依頼される。そして、原因ノードにおいて、複製ノードの通信履歴と原因ノードの通信履歴が照合され、原因ノードから複製ノードに対する応答方法が変更される。
【００３６】
このように、複製ノードと原因ノードが特定されて応答方法が変更されるため、複製データの発生が確実に抑止される。また、複製ノードから原因ノードに通信履歴を送信し、原因ノードから複製ノードに対する応答方法を変更するだけで済むため、複製データを抑止するために通信ネットワークにかける負担を抑えることができる。
【００３７】
図６は、実施形態の通信ネットワークの例を示している。図６の通信ネットワークはノード６０１〜６０６を含み、パケットの転送経路として複数の選択肢を持つ。ノード６０１〜６０６の識別情報（ノードＩＤ）は、それぞれａ、ｂ、ｃ、ｄ、ｅ、及びｆである。
【００３８】
図７は、図６の通信ネットワークの通常モードにおける動作の例を示すフローチャートである。ノード６０１からノード６０６宛てにデータパケットを転送する場合、ノード６０２とノード６０６の間には、ノード６０５を経由する転送経路と、ノード６０３及び６０４を経由する転送経路が存在する。
【００３９】
まず、ノード６０５を経由する転送経路が選択され、ノード６０２からノード６０５へデータパケットが送信されると、ノード６０５からノード６０２へＡｃｋパケット６１１が返信される。そして、ノード６０５からノード６０６へデータパケットが送信され、ノード６０６にデータパケットが到達する。
【００４０】
ここで、Ａｃｋパケット６１１の返信が輻輳により失敗すると（ステップ７０１）、Ａｃｋパケット６１１がノード６０２に到達しないため、ノード６０２から、同一のデータパケットが複製パケット６１２として、ノード６０３及び６０４を経由する転送経路へ迂回転送される（ステップ７０２）。そして、ノード６０４からノード６０６へ複製パケット６１２が送信され、ノード６０６に複製パケット６１２が到達する。
【００４１】
ノード６０６は、複製パケット６１２がノード６０５から受信したデータパケットの複製であることを検知する。そして、複製パケット６１２を検知したことを示す複製通知パケット６１３を、複製パケット６１２を生成したノード６０２（複製ノード）宛てに送信する（ステップ７０３）。
【００４２】
ノード６０２は、ノード６０２と隣接ノードの間の通信履歴を参照して、複製パケット６１２の発生原因であるノード６０５（原因ノード）を特定し、原因ノード毎に複製通知パケット６１３を受信した回数をカウントする（ステップ７０４）。そして、原因ノードのカウント値が閾値を超えると、監視モードへ移行する（ステップ７０５）。
【００４３】
図８は、図６の通信ネットワークの監視モードにおける動作の例を示すフローチャートである。ノード６０２は、図９に示すように、ノード６０５に対して定期的に照合依頼パケット９０１を送信する（ステップ８０１）。照合依頼パケット９０１には、ノード６０２とノード６０５の間の通信履歴が含まれる。
【００４４】
ノード６０５は、照合依頼パケット９０１に含まれる通信履歴から、ノード６０２がノード６０５からＡｃｋパケットを受信した記録を抽出する。また、ノード６０５内に格納されている、ノード６０２とノード６０５の間の通信履歴から、ノード６０５がノード６０２へＡｃｋパケットを送信した記録を抽出する。そして、抽出した２つの記録を照合し（ステップ８０２）、Ａｃｋパケットの送信成功率を計算する（ステップ８０３）。
【００４５】
次に、ノード６０５は、得られた送信成功率が閾値より小さければ、ノード６０２に対する応答方法を、送信成功率が大きくなるように変更する（ステップ８０４）。そして、ノード６０２及び６０５はステップ８０１〜８０４の動作を繰り返し、監視モードの動作開始から一定時間が経過すると、通常モードへ移行する（ステップ８０５）。Ａｃｋパケットの送信成功率が閾値以上になってから一定時間が経過したときに、通常モードへ移行するようにしてもよい。
【００４６】
図６の通信ネットワークは６個のノードを含んでいるが、実施形態の通信ネットワークに含まれるノードの数は５個以下の場合もあり、７個以上の場合もある。
次に、実施形態の各ノードの構成と動作について、より詳細に説明する。
【００４７】
図１０は、無線又は有線の通信ネットワークに含まれる各ノードに対応する、ノード１００１の構成例を示している。図１０のノード１００１は、図５のノード５０１〜５０６及び図６のノード６０１〜６０６の各々に対応する。
【００４８】
ノード１００１は、受信部１０１１、複製通知パケット処理部１０１２、照合依頼パケット処理部１０１３、Ａｃｋパケット処理部１０１４、データパケット処理部１０１５、複製通知パケット生成部１０１６、及び送信部１０１７を含む。ノード１００１は、さらに、格納部１０１８、モード処理部１０１９、再送処理部１０２０、照合依頼パケット生成部１０２１、及び制御部１０２２を含む。
【００４９】
格納部１０１８は、リンクテーブル１０３１、Ａｃｋ送信評価テーブル１０３２、データ管理テーブル１０３３、通信履歴テーブル１０３４、及び経路テーブル１０３５を格納する。
【００５０】
リンクテーブル１０３１には、ノード１００１と隣接ノードの間のリンク毎に、複製通知パケットを受信してその隣接ノードを原因ノードとして特定した回数、監視モードへ移行したか否かを示すフラグ、ＴＴＷ１、ＴＴＷ２等が記録される。Ａｃｋ送信評価テーブル１０３２には、Ａｃｋパケットの送信先である隣接ノード又はリンク毎に、Ａｃｋパケットの送信成功率、データパケットの受信成功率等が記録される。
【００５１】
通信履歴テーブル１０３４には、送受信したパケットの通信履歴が記録される。通信履歴テーブル１０３４には、送受信したパケット毎に、送受信時刻、グローバルソースノード（ＧＳ）のノードＩＤ、フレームＩＤ（ＦＩＤ）、ローカルソースノード（ＬＳ）のノードＩＤ、ローカルデスティネーション（ＬＤ）のノードＩＤが記録される。通信履歴テーブル１０３４には、さらにパケット種別、処理種別等も記録される。
【００５２】
データ管理テーブル１０３３には、通信履歴テーブル１０３４に記録されたパケットのうち、データパケットの通信履歴が記録される。データ管理テーブル１０３３には、送受信したデータパケット毎に、送受信時刻、ＧＳのノードＩＤ、ＦＩＤ、ＴＴＷ、ＬＤのノードＩＤ、経路等が記録される。
【００５３】
経路テーブル１０３５には、ノード１００１がパケット送信先として使用可能なＬＤを含む経路情報が記録される。
ＦＩＤはパケットの識別情報であり、ＧＳはパケットを最初に送出したノードに対応し、ＬＳは受信パケットを送信した隣接ノードに対応し、ＬＤは送信パケットの送信先の隣接ノードに対応する。パケット種別は、データパケット、Ａｃｋパケット等のパケットの種類を表し、処理種別は、送信、受信、迂回等のパケットに対して行った処理の種類を表す。
【００５４】
ＴＴＷは、データパケットが送信されるときにデータ管理テーブル１０３３に設定され、設定時の現在時刻にＡｃｋ待ち時間を加算した時刻を表す。ＴＴＷ１は、監視モードに移行したときと、監視モードにおいてＡｃｋパケットの送信成功率が閾値より小さいと判定されたときに、リンクテーブル１０３１に設定される。ＴＴＷ１は、設定時の現在時刻に照合間隔を加算した時刻を表す。ＴＴＷ２は、監視モードに移行したときに設定され、設定時の現在時刻に監視モード継続時間を加算した時刻を表す。
【００５５】
受信部１０１１は、隣接ノードからリンクを介してパケットを受信する。複製通知パケット処理部１０１２は、複製通知パケットを受信した場合の処理を行い、処理照合依頼パケット処理部１０１３は、処理照合依頼パケットを受信した場合の処理を行い、Ａｃｋパケット処理部１０１４は、Ａｃｋパケットを受信した場合の処理を行う。
【００５６】
データパケット処理部１０１５は、受信したデータパケットから複製パケットを検出し、複製通知パケット生成部１０１６は、複製パケットが検出されたとき、複製ノード宛ての複製通知パケットを生成する。送信部１０１７は、データパケット、Ａｃｋパケット等をリンクを介して隣接ノードに送信する。
【００５７】
モード処理部１０１９は、監視モードを解除して通常モードに移行する処理を行い、再送処理部１０２０は、データパケット送信先の隣接ノードからＡｃｋパケットを受信しない場合に、別の隣接ノードにデータパケットを再送する処理を行う。照合依頼パケット生成部１０２１は、監視モードにおいて照合依頼パケットを生成する。制御部１０２２は、タイマイベントにより動作し、モード処理部１０１９、再送処理部１０２０、又は照合依頼パケット生成部１０２１に対して必要な処理を依頼する。
【００５８】
受信部１０１１は、図５の受信部５１２、５２２、及び５３２に対応し、複製通知パケット処理部１０１２は特定部５１５、５２５、及び５３５に対応する。照合依頼パケット処理部１０１３は照合部５１７、５２７、及び５３７に対応し、データパケット処理部１０１５は特定部５１５、５２５、及び５３５に対応する。送信部１０１７は送信部５１１、５２１、及び５３１に対応し、格納部１０１８は格納部５１３、５２３、及び５３３に対応する。再送処理部１０２０は生成部５１４、５２４、及び５３４に対応し、照合依頼パケット生成部１０２１は生成部５１６、５２６、及び５３６に対応する。
【００５９】
図１１は、ノード１００１が行う通信処理の例を示すフローチャートであり、図１２、図１３、図１４、及び図１５は、それぞれ図１１のステップ１１１０、１１０８、１１０７、及び１１０６の処理の例を示すフローチャートである。図１１の通信処理は、例えば、タイマイベントとして一定時間間隔で開始される。
【００６０】
まず、制御部１０２２は、タイマから現在時刻を取得して、現在時刻をデータ管理テーブル１０３３の各エントリに記録されたＴＴＷと比較する（ステップ１１０１）。現在時刻と一致するＴＴＷを有するエントリがあれば（ステップ１１０１，Ｙｅｓ）、そのデータパケットの送信先からＡｃｋパケットを受信しておらず、Ａｃｋ待ち時間が経過したことが分かる。そこで、制御部１０２２は、再送処理部１０２０にデータパケット再送処理を依頼する（ステップ１１１０）。
【００６１】
現在時刻と一致するＴＴＷを有するエントリがなければ（ステップ１１０１，Ｎｏ）、制御部１０２２は、現在時刻をリンクテーブル１０３１の各エントリに記録されたＴＴＷ１と比較する（ステップ１１０２）。現在時刻と一致するＴＴＷ１を有するエントリがあれば（ステップ１１０２，Ｙｅｓ）、原因ノードに通信履歴の照合を依頼する時刻であるため、照合依頼パケット生成部１０２１に照合依頼パケット送信処理を依頼する（ステップ１１１１）。そして、照合依頼パケット生成部１０２１は、照合依頼パケットを生成し、送信部１０１７は、照合依頼パケットを原因ノードに送信する。
【００６２】
現在時刻と一致するＴＴＷ１を有するエントリがなければ（ステップ１１０２，Ｎｏ）、制御部１０２２は、現在時刻をリンクテーブル１０３１の各エントリに記録されたＴＴＷ２と比較する（ステップ１１０３）。現在時刻と一致するＴＴＷ２を有するエントリがあれば（ステップ１１０３，Ｙｅｓ）、監視モードを終了する時刻であるため、モード処理部１０１９に監視モードの解除を依頼する（ステップ１１１２）。そして、モード処理部１０１９は、リンクテーブル１０３１を更新して監視モードを解除し、ノード１００１は通常モードに移行する。
【００６３】
現在時刻と一致するＴＴＷ２を有するエントリがなければ（ステップ１１０３，Ｎｏ）、制御部１０２２は処理を終了する。次に、受信部１０１１は、いずれかの隣接ノードからパケットを受信したか否かをチェックする（ステップ１１０４）。パケットを受信していなければ、ステップ１１０１以降の処理を繰り返し、パケットを受信していれば、そのパケットの種別をチェックする（ステップ１１０５）。
【００６４】
パケットの種別が照合依頼パケットであれば、照合依頼パケット処理部１０１３に照合依頼パケット受信処理を依頼する（ステップ１１０６）。パケットの種別が複製通知パケットであれば、複製通知パケット処理部１０１２に複製通知パケット受信処理を依頼する（ステップ１１０７）。
【００６５】
パケットの種別がデータパケットであれば、データパケット処理部１０１５にデータパケット受信処理を依頼する（ステップ１１０８）。パケットの種別がＡｃｋパケットであれば、Ａｃｋパケット処理部１０１４にデータ管理テーブル１０３３の更新を依頼する（ステップ１１０９）。そして、Ａｃｋパケット処理部１０１４は、データ管理テーブル１０３３から対応するデータパケットのエントリを削除する。
【００６６】
ステップ１１１０〜１１１２又は１１０６〜１１０９の処理が終了すると、ステップ１１０１以降の処理が繰り返される。
図１２は、図１１のステップ１１１０において再送処理部１０２０が行うデータパケット再送処理の例を示すフローチャートである。
【００６７】
再送処理部１０２０は、データ管理テーブル１０３３を参照して、現在時刻と一致するＴＴＷを有するエントリに記録された複数のＬＤの中に、未使用のＬＤがあるか否かをチェックする（ステップ１２０１）。
【００６８】
図１６は、データ管理テーブル１０３３のエントリの例を示している。この例では、エントリに含まれる情報のうち、データパケットの送信時刻、ＧＳのノードＩＤ、ＦＩＤ、ＴＴＷ、及びＬＤの情報が示されている。ＬＤの情報には、ＬＤ１〜ＬＤ３の使用フラグ及びノードＩＤが含まれる。
【００６９】
ＬＤ１〜ＬＤ３は、ノード１００１がＬＤとして使用可能な複数のノードに対応し、それらのノードＩＤはそれぞれｈ、ｐ、及びｑであり、使用フラグはそれぞれ論理“１”、“０”、及び“０”である。使用フラグが“１”のとき、対応するＬＤは使用済みであることを表し、使用フラグが“０”のとき、対応するＬＤは未使用であることを表す。
【００７０】
図１６では、ＬＤ１の使用フラグが“１”に設定されているため、ノードｈに対してデータパケットを送信済みであることが分かる。ここで、現在時刻がＴＴＷに記録された３６００．９９９９になると、ＬＤ１〜ＬＤ３の中に未使用のＬＤがあるか否かがチェックされる。
【００７１】
未使用のＬＤがあれば（ステップ１２０１，Ｙｅｓ）、再送処理部１０２０は、そのうちの１つのＬＤを選択し、選択したＬＤの使用フラグを“１”に変更する（ステップ１２０２）。次に、現在時刻にＡｃｋ待ち時間を加算した時刻を、そのエントリのＴＴＷに再設定する（ステップ１２０３）。そして、そのエントリに対応する送信済みのデータパケットと同じデータを有するデータパケットを生成し、送信部１０１７に対して、選択したＬＤにデータパケットを再送するように依頼する（ステップ１２０４）。送信部１０１７は、依頼されたデータパケットを依頼されたＬＤに送信する。
【００７２】
例えば、図１６のＬＤ２が選択された場合、図１７に示すように、ＬＤ２の使用フラグが“１”に変更され、ノードｐに対してデータパケットが再送される。
その後、図１１のステップ１１０１において、現在時刻が再設定されたＴＴＷと一致すると、ＬＤ３が再送先として選択される。そして、図１８に示すように、ＬＤ３の使用フラグが“１”に変更され、ノードｑに対してデータパケットが再送される。
【００７３】
一方、現在時刻と一致するＴＴＷを有するエントリに記録された複数のＬＤの中に、未使用のＬＤがなければ（ステップ１２０１，Ｎｏ）、再送処理部１０２０は、そのエントリをデータ管理テーブル１０３３から削除する（ステップ１２０５）。
【００７４】
図１３は、図１１のステップ１１０８においてデータパケット処理部１０１５が行うデータパケット受信処理の例を示すフローチャートである。
データパケット処理部１０１５は、データ管理テーブル１０３３又は通信履歴テーブル１０３４を参照して、受信したデータパケットと同一のデータパケットが登録されているか否かをチェックする（ステップ１３０１）。
【００７５】
図１９及び図２０は、それぞれ図６のノード６０２（ノードｂ）及び６０５（ノードｅ）に格納されている通信履歴テーブル１０３４のエントリの例を示している。各ノードは、既に処理が終了した過去のｎ個のパケットの送受信記録を通信履歴テーブル１０３４に格納している。ｎは１以上の整数であり、あらかじめ設定してもよく、現在の通信状態に応じて設定してもよい。
【００７６】
図１９及び図２０の例では、エントリに含まれる情報のうち、パケットの送受信時刻、ＧＳのノードＩＤ、ＦＩＤ、ＬＳのノードＩＤ、ＬＤのノードＩＤ、パケット種別、及び処理種別が示されている。
【００７７】
これらの通信履歴によれば、ノードｂからノードｅに送信されたＦＩＤが“１”のデータパケットに対して、ＦＩＤが“１”のＡｃｋパケットがノードｅからノードｂに返信され、ノードｅにより受信されていることが分かる。しかし、ノードｂからノードｅに送信されたＦＩＤが“２”のデータパケットに対して返信されたＡｃｋパケットがノードｅに到達しなかったため、ノードｂからノードｃにデータパケットが迂回転送されている。
【００７８】
したがって、ノードｂからノードｅに送信されたＦＩＤが“２”のデータパケットと、ノードｂからノードｃに迂回転送されたＦＩＤが“２”のデータパケットは、同一のパケットとみなすことができる。
【００７９】
図６に示したように、ノードｅに送信されたデータパケットは、ノード６０６（ノードｆ）により受信され、ノードｃに迂回転送されたデータパケット（複製パケット６１２）もノードｆにより受信される。ノードｆでは、２つのデータパケットのうち先に受信した方のデータパケットが、通信履歴テーブル１０３４に先に登録される。そこで、後で受信した方のデータパケットのＧＳ及びＦＩＤを、通信履歴テーブル１０３４に登録されているデータパケットのＧＳ及びＦＩＤと比較することで、受信したデータパケットと同一のデータパケットが登録されているか否かをチェックすることができる。
【００８０】
上述したように、データ管理テーブル１０３３には、通信履歴テーブル１０３４に記録されたデータパケットの通信履歴が記録される。したがって、通信履歴テーブル１０３４の代わりにデータ管理テーブル１０３３を用いた場合でも、受信したデータパケットと同一のデータパケットが登録されているか否かをチェックすることができる。
【００８１】
図２１は、ノードｆに格納されているデータ管理テーブル１０３３のエントリの例を示している。この例では、エントリに含まれる情報のうち、データパケットの送受信時刻、ＧＳのノードＩＤ、ＦＩＤ、及び経路が示されている。経路は、受信したデータパケットがＧＳからノードｆに到達するまでに通過した１つ以上のノードのノードＩＤを、通過順に並べた情報である。例えば、ＦＩＤが“２”のデータパケットは、ノードａからノードｂ及びｅ経由でノードｆに到達していることが分かる。
【００８２】
この状態で、ノードｆが図２２に示すような複製パケット６１２をノードｄから受信すると、データパケット処理部１０１５は、図２１のデータ管理テーブル１０３３を参照して、複製パケット６１２と同一のデータパケットが登録されているか否かをチェックする。この例では、図２２のＧＳ及びＦＩＤと同一のＧＳ及びＦＩＤを有するエントリが、図２１のデータ管理テーブル１０３３に存在するため、同一のデータパケットが登録されていると判定される。
【００８３】
データ管理テーブル１０３３又は通信履歴テーブル１０３４に同一のデータパケットが登録されていなければ（ステップ１３０１，Ｎｏ）、データパケット処理部１０１５は、Ａｃｋパケットの送信を送信部１０１７に依頼する（ステップ１３０２）。送信部１０１７は、受信したデータパケットのＬＳにＡｃｋパケットを返信する。
【００８４】
次に、データパケット処理部１０１５は、送信先のＬＤを選択して、そのデータパケットをデータ管理テーブル１０３３に登録し（ステップ１３０３）、データパケットの送信を送信部１０１７に依頼する（ステップ１３０４）。送信部１０１７は、選択されたＬＤにデータパケットを送信する。
【００８５】
一方、同一のデータパケットが登録されていれば（ステップ１３０１，Ｙｅｓ）、データパケット処理部１０１５は、受信したデータパケットが既にノード１００１を通過しているか否かをチェックする（ステップ１３０５）。
【００８６】
図２２の複製パケット６１２の場合は、経路の最後にノードｆが記録されており、それ以前にノードｆを通過していないことが分かる。一方、図２３に示すようなデータパケットの場合は、経路の３番目と最後にノードｆが記録されており、既にノードｆを通過していることが分かる。したがって、受信したデータパケットの経路を参照することで、ノード１００１を通過しているか否かをチェックすることができる。
【００８７】
データパケットが既にノード１００１を通過していれば（ステップ１３０５，Ｙｅｓ）、ノード１００１を通るループ経路が形成されているため、前回使用したＬＤを経路テーブル１０３５から削除する（ステップ１３０７）。これにより、ループ経路へのパケット送出が禁止される。そして、データパケット処理部１０１５は、ステップ１３０２以降の処理を行って、別の経路へデータパケットを送出する。
【００８８】
一方、データパケットがノード１００１を通過していなければ（ステップ１３０５，Ｎｏ）、データ管理テーブル１０３３に登録されているデータパケットと受信したデータパケットの一方が他方の複製パケットであることが分かる。そこで、データ管理テーブル１０３３を参照して、複製パケットを生成した複製ノードを特定し、複製通知パケットの生成を複製通知パケット生成部１０１６に依頼する（ステップ１３０６）。複製通知パケット生成部１０１６は、複製通知パケットを生成し、送信部１０１７は、複製通知パケットを複製ノード宛てに送信する。
【００８９】
図２１のＦＩＤが“２”のデータパケットの経路と、図２２の複製パケット６１２の経路を比較すると、図２４のようになる。この場合、ＧＳであるノードａからノードｆに向かって、２つの経路の共通部分をチェックしていくと、ノードｂが共通部分の最後のノードであり、このノードｂで分岐していることが分かる。そこで、２つの経路の分岐点に位置するノードｂ（分岐ノード）が、複製ノードとして特定される。
【００９０】
図２５は、複製ノードｂが特定された場合に送信される複製通知パケット６１３の例を示している。この例では、複製通知パケット６１３に、複製ノードのノードＩＤ、原因候補、ＧＳ、及びＦＩＤが含まれている。
【００９１】
原因候補は、複製パケット６１２の発生原因である原因ノードの候補（候補ノード）を表すノードＩＤである。ノードｆでは、２つの同一のデータパケットのうちどちらが複製パケットであるかを特定することはできないため、図２４の２つの経路のどちらのリンクに問題があるかは分からない。そこで、複製ノードｂの次のノードであるノードｅ及びｃの両方を、原因ノードの候補として複製通知パケット６１３に記述する。
【００９２】
複製通知パケット６１３の送信には、通常のデータパケットの経路、又は複数の同一のデータパケットのうち最後のデータパケットを受信した経路が使用される。
【００９３】
図１４は、図１１のステップ１１０７において複製通知パケット処理部１０１２が行う複製通知パケット受信処理の例を示すフローチャートである。
複製通知パケット処理部１０１２は、通信履歴テーブル１０３４を参照して、複製パケットの発生原因である原因ノードを特定する（ステップ１４０１）。
【００９４】
複製通知パケットに原因候補が含まれている場合、通信履歴テーブル１０３４から、複数の候補ノードに対するデータ送信処理に対応する複数のエントリが抽出される。抽出されるデータ送信処理の処理種別には、送信及び迂回が含まれる。そして、抽出されたエントリのうち、最も早い送信時刻を有するエントリのＬＤが、原因ノードとして特定される。
【００９５】
例えば、図２５の複製通知パケット６１３を受信したノードｂでは、図１９の通信履歴テーブル１０３４から、候補ノードｅ及びｃをＬＤとする２つのデータ送信処理のエントリが抽出される。この場合、候補ノードｅをＬＤとするエントリの処理種別は送信であり、候補ノードｃをＬＤとするエントリの処理種別は迂回である。そして、２つのエントリのうち、早い方の送信時刻を有するエントリのＬＤであるノードｅが、原因ノードとして特定される。
【００９６】
次に、複製通知パケット処理部１０１２は、リンクテーブル１０３１において原因ノードに対応するエントリの通知回数をカウントアップし（ステップ１４０２）、通知回数を閾値と比較する（ステップ１４０３）。
【００９７】
通知回数が閾値を超えていれば（ステップ１４０３，Ｙｅｓ）、リンクテーブル１０３１の監視フラグを“１”に変更し、監視モードに移行する（ステップ１４０４）。通知回数が閾値以下であれば（ステップ１４０３，Ｎｏ）、監視モードには移行しない。
【００９８】
図２６は、ノードｂに格納されているリンクテーブル１０３１のエントリの例を示している。この例では、エントリに含まれる情報のうち、リンク、通知回数、監視フラグ、ＴＴＷ１、及びＴＴＷ２が示されている。
【００９９】
リンクは、ノード１００１と隣接ノードの間のリンクの識別情報である。リンクの識別情報としては、例えば、対応する隣接ノードのノードＩＤが用いられる。通知回数は、複製通知パケットを受信してその隣接ノードを原因ノードとして特定した回数であり、監視フラグは、そのリンクを監視する監視モードへ移行したか否かを表す。監視フラグが“１”のとき、監視モードを表し、監視フラグが“０”のとき、通常モードを表す。
【０１００】
ノードｂは、ノードｅを原因候補に含む複製通知パケットを受信してノードｅを原因ノードとして特定する度に、リンクｅの通知回数を１だけインクリメントする。通知回数の閾値が１である場合、インクリメントされた通知回数が２になると、リンクｅの監視フラグを“１”に変更し、リンクｅの監視モードに移行する。
【０１０１】
このとき、ＴＴＷ１には、現在時刻に照合間隔を加算した時刻が設定され、ＴＴＷ２には、現在時刻に監視モード継続時間を加算した時刻が設定される。照合間隔は、通信ネットワークにおけるＡｃｋパケットの送信成功率が変化する速度が大きいほど、照合間隔が小さくなるように設定される。これにより、通信状態が大きく変化している場合に照合回数を増加させて、高い精度で応答方法を制御することが可能になる。
【０１０２】
その後、図１１のステップ１１０２において現在時刻が設定されたＴＴＷ１と一致すると、図９に示したように、送信部１０１７が原因ノードｅに照合依頼パケット９０１を送信する。照合依頼パケット９０１には、複製ノードｂと原因ノードｅの間の通信履歴が含まれる。
【０１０３】
図２７は、照合依頼パケット９０１に含まれる通信履歴の例を示している。この例では、図１９の通信履歴テーブル１０３４に含まれるエントリのうち、ＬＳ又はＬＤとしてノードｅを含むエントリが抽出され、照合依頼パケット９０１に含まれている。
【０１０４】
照合依頼パケット９０１には、過去のｍ個のパケットの送受信記録が含まれている。ｍは１以上の整数であり、通信ネットワークの伝播環境が変化する速度に応じてあらかじめ設定してもよく、現在の通信状態に応じて設定してもよい。
【０１０５】
照合依頼パケット９０１としては、既存のＨｅｌｌｏパケットを用いることも可能である。この場合、Ｈｅｌｌｏパケットに通信履歴が追加される。ただし、Ｈｅｌｌｏパケットの送信間隔はデータパケットの送信間隔よりも短いので、複数回に１回だけＨｅｌｌｏパケットに通信履歴を追加することで、照合間隔を調整することが好ましい。
【０１０６】
図１５は、図１１のステップ１１０６において照合依頼パケット処理部１０１３が行う照合依頼パケット受信処理の例を示すフローチャートである。
照合依頼パケット処理部１０１３は、受信した照合依頼パケットに含まれる通信履歴と通信履歴テーブル１０３４とを照合し、照合依頼パケットに含まれる通信履歴から、依頼元である複製ノードにおけるＡｃｋパケットの受信回数を抽出する（ステップ１５０１）。次に、通信履歴テーブル１０３４から、同じ期間におけるノード１００１でのＡｃｋパケットの送信回数を抽出する（ステップ１５０２）。
【０１０７】
そして、抽出した受信回数及び送信回数からＡｃｋパケットの送信成功率を計算し（ステップ１５０３）、得られた送信成功率を閾値と比較する（ステップ１５０４）。送信成功率が閾値より小さければ（ステップ１５０４，Ｎｏ）、複製ノードからデータパケットを受信したときの応答方法を変更する（ステップ１５０５）。送信成功率が閾値以上であれば（ステップ１５０４，Ｙｅｓ）、応答方法を変更しない。
【０１０８】
ステップ１５０５において応答方法が変更された場合は、変更後の応答方法が複製ノードに通知される。この通知を受けた複製ノードは、現在時刻に照合間隔を加算した時刻をリンクテーブル１０３１のＴＴＷ１に再設定する。例えば、図２６のリンクテーブル１０３１は、図２８のように更新される。
【０１０９】
その後、複製ノードにおいて、図１１のステップ１１０２で再びリンクテーブル１０３１が参照され、現在時刻が再設定されたＴＴＷ１と一致すると、再びステップ１１１１の照合依頼パケット送信処理が行われる。
【０１１０】
図９の照合依頼パケット９０１を受信したノードｅでは、照合依頼パケット９０１に含まれる図２７の通信履歴と、図２０の通信履歴テーブル１０３４とが照合される。そして、図２７の通信履歴から、ノードｂにおけるＡｃｋパケットの受信回数が１回であることが認識され、図２０の通信履歴テーブル１０３４から、ノードｅにおけるＡｃｋパケットの送信回数が２回であることが認識される。
【０１１１】
そこで、ノードｂにおけるＡｃｋパケットの受信回数を、ノードｅにおけるＡｃｋパケットの送信回数で除算することで、Ａｃｋパケットの送信成功率として０．５が得られる。このＡｃｋパケットの送信成功率は、図２０の通信履歴テーブル１０３４に含まれるＡｃｋパケットの数に対する、図２７の通信履歴に含まれるＡｃｋパケットの数の割合を表す。送信成功率の閾値としては、例えば、０．５〜１．０の範囲の実数が用いられる。
【０１１２】
このとき、Ａｃｋ送信評価テーブル１０３２には、図２９に示すようなエントリが格納される。図２９のノードは、Ａｃｋパケットの送信先である複製ノードのノードＩＤを表し、Ａｃｋ送信成功率は、ノードｅからノードｂへ送信されたＡｃｋパケットの送信成功率を表す。送信成功率の閾値が０．７である場合、Ａｃｋ送信成功率が閾値より小さいため、応答方法が変更される。
【０１１３】
このような照合依頼パケット受信処理によれば、監視対象のリンクの両側のノードにおける通信履歴を照合することで、輻輳時におけるＡｃｋパケットの送信成功率を正確に計算することができる。
【０１１４】
また、比較的容量の大きな通信履歴を全ノード間で交換するのではなく、監視対象のリンク上のみに限定して送信するため、監視に伴う通信ネットワークに対する負荷を最小限に抑えることができる。データパケットの送受信が行われない期間に、通信履歴を含む照合依頼パケットを送信するようにすれば、通信ネットワークに対する負荷はさらに軽減される。
【０１１５】
図１５の照合依頼パケット受信処理では、Ａｃｋパケットの送信成功率のみに基づいて応答方法を変更しているが、他の条件も考慮して応答方法を変更してもよい。例えば、Ａｃｋパケットの送信成功率に加えて、データパケットの受信成功率を用いることができる。
【０１１６】
この場合、照合依頼パケット処理部１０１３は、ステップ１５０１において、照合依頼パケットに含まれる通信履歴から、複製ノードにおけるＡｃｋパケットの受信回数とデータパケットの送信回数を抽出する。また、ステップ１５０２において、通信履歴テーブル１０３４から、ノード１００１におけるＡｃｋパケットの送信回数とデータパケットの受信回数を抽出する。
【０１１７】
そして、ステップ１５０３において、Ａｃｋパケットの送信成功率とデータパケットの受信成功率を計算し、ステップ１５０４において、Ａｃｋパケットの送信成功率を閾値Ｔ１と比較し、データパケットの受信成功率を閾値Ｔ２と比較する。
【０１１８】
Ａｃｋパケットの送信成功率がＴ１より小さく、かつ、データパケットの受信成功率がＴ２より大きければ、応答方法を変更する。この場合、Ａｃｋパケットの送信成功率だけが小さいため、応答方法に起因して複製パケットが発生していると考えられる。
【０１１９】
一方、Ａｃｋパケットの送信成功率がＴ１以上であるか、又は、データパケットの受信成功率がＴ２以下であれば、応答方法を変更しない。データパケットの受信成功率が小さい場合は、応答方法には問題がなく、他の要因により複製パケットが発生していると考えられる。
【０１２０】
例えば、図２７の通信履歴からは、ノードｂにおけるデータパケットの送信回数が２回であることが認識され、図２０の通信履歴テーブル１０３４からは、ノードｅにおけるデータパケットの受信回数が２回であることが認識される。
【０１２１】
そこで、ノードｅにおけるデータパケットの受信回数を、ノードｂにおけるデータパケットの送信回数で除算することで、データパケットの受信成功率として１．０が得られる。このデータパケットの受信成功率は、図２７の通信履歴に含まれるデータパケットの数に対する、図２０の通信履歴テーブル１０３４に含まれるデータパケットの数の割合を表す。閾値Ｔ１及びＴ２としては、例えば、０．５〜１．０の範囲の実数が用いられる。
【０１２２】
このとき、Ａｃｋ送信評価テーブル１０３２には、図３０に示すようなエントリが格納される。図３０のデータ受信成功率は、ノードｂからノードｅへ送信されたデータパケットの受信成功率を表す。Ｔ１＝Ｔ２＝０．７とすると、Ａｃｋ送信成功率がＴ１より小さく、かつ、データ受信成功率がＴ２より大きいため、応答方法が変更される。
【０１２３】
原因ノードにおける変更後の応答方法としては、以下のような方法が考えられる。
（１）Ａｃｋパケットの送信を多重化する方法
この方法では、原因ノードｅから複製ノードｂへＡｃｋパケットが複数回返信される。これにより、Ａｃｋパケットの到達性が向上し、データパケットの複製が抑止される。
【０１２４】
例えば、ノードｅからノードｂへのＡｃｋパケットの送信回数を２回に変更した場合、図３１に示すように、ノードｂからノードｅへデータパケット３１０１が送信された後、ノードｅからノードｂへ１回目のＡｃｋパケット３１０２が返信される。続いて、２回目のＡｃｋパケット３１０３が返信される。
【０１２５】
この場合、多重化されたＡｃｋパケットは個別に送信回数及び受信回数がカウントされる。これにより、多重化によりＡｃｋパケットの到達性が向上している場合でも、それとは別に個々のＡｃｋパケットの送信成功率を評価することができる。
【０１２６】
例えば、輻輳状態が続く場合は、Ａｃｋパケットの送信成功率が小さいままなので、多重化が継続される。そして、輻輳状態が解消してＡｃｋパケットの送信成功率が閾値以上になれば、監視モードを解除してもよい。監視モードが解除された後は、Ａｃｋパケットの送信を多重化しない応答方法に戻る。
【０１２７】
（２）Ａｃｋパケットの送信確認を行う方法
この方法では、図３２に示すように、複製ノードｂから原因ノードｅへデータパケット３２０１が送信された後、ノードｅからノードｂへ第１のＡｃｋパケット３２０２が返信される。続いて、ノードｂからノードｅへ、第１のＡｃｋパケット３２０２を受信したことを示す第２のＡｃｋパケット３２０３が返信される。
【０１２８】
ここで、ノードｅが第２のＡｃｋパケット３２０３を受信しなければ、第２のＡｃｋパケット３２０３を受信するまで、ノードｅからノードｂへ第１のＡｃｋパケットが繰り返し送信される。これにより、第１のＡｃｋパケットの到達性が向上し、データパケットの複製が抑止される。
【０１２９】
第１のＡｃｋパケットの繰り返し送信回数を記録し、繰り返し送信回数が閾値より小さくなった時点で、監視モードを解除してもよい。監視モードが解除された後は、Ａｃｋパケットの送信確認を行わない応答方法に戻る。
【０１３０】
（３）Ａｃｋパケットの送信電力を調整する方法
この方法では、図３３に示すように、複製ノードｂから原因ノードｅへデータパケット３３０１が送信された後、Ａｃｋパケットの送信電力を増加させて、ノードｅからノードｂへＡｃｋパケット３３０２が返信される。これにより、Ａｃｋパケットの到達性が向上し、データパケットの複製が抑止される。
【０１３１】
その後、Ａｃｋパケットの送信成功率が閾値以上になれば、監視モードを解除してもよい。監視モードが解除された後は、Ａｃｋパケットの送信電力を減少させる。
変更後の応答方法として、上記（１）のＡｃｋパケットの送信を多重化する方法を採用した場合、照合依頼パケット処理部１０１３は、例えば、以下のようにしてＡｃｋパケットの送信を多重化する。
【０１３２】
照合依頼パケット処理部１０１３は、まず、図１５のステップ１５０３で計算されたＡｃｋパケットの送信成功率をａｒ、送信成功率の閾値をｒ０として、次式を満たす最小の整数ｋを求める。
（１−（１−ａｒ）＊＊ｋ）＞ｒ０      （１）
式（１）の左辺の“＊＊ｋ”は、ｋ乗演算を表す。例えば、ａｒ＝０．５、ｒ０＝０．７とするとｋ＝２となり、ａｒ＝０．５、ｒ０＝０．８とするとｋ＝３となる。
【０１３３】
照合依頼パケット処理部１０１３は、得られたｋをＡｃｋパケットの多重度として用い、データパケットを受信する度にＡｃｋパケットをｋ回返信するように、応答方法を変更する。式（１）以外の他の条件に基づいて多重度ｋを求めてもよい。
【０１３４】
このような多重化方法によれば、輻輳によりリンク品質が実際に低下している区間及び期間だけでＡｃｋパケットが多重化される。このため、通信ネットワーク全体で定常的にＡｃｋパケットを多重化する方法と比べると、多重化が不要な区間及び期間のＡｃｋパケットが削減され、通信ネットワークの負担を軽減することができる。
【０１３５】
上記（２）のＡｃｋパケットの送信確認を行う方法を採用した場合であっても、特定の区間及び期間だけでＡｃｋパケットの繰り返し送信が行われる。このため、通信ネットワーク全体で定常的にＡｃｋパケットの送信確認を行う方法と比べると、通信ネットワークの負担を軽減することができる。
【０１３６】
上記（３）のＡｃｋパケットの送信電力を調整する方法を採用した場合であっても、特定の区間及び期間だけでＡｃｋパケットの送信電力が増加する。このため、通信ネットワーク全体で定常的にＡｃｋパケットの送信電力を増加する方法と比べると、通信ネットワークの消費電力を軽減することができる。
【０１３７】
また、複製パケットを生成した複製ノードをリアルタイムで特定して、原因ノードから複製ノードへのＡｃｋパケットの送信成功率を向上させることで、複製パケットの発生を確実に抑止することができる。したがって、通信ネットワークにおける輻輳の悪化を早い段階で抑えることができ、通信ネットワーク全体で最適な応答方法を設定するためのシミュレーションは不要になる。
【０１３８】
さらに、図１４のステップ１４０３における通知回数の閾値を変更することで、監視モードの処理を適切に調整することができる。例えば、閾値を大きくすれば、監視モードに移行する頻度及び区間を削減することができ、通信ネットワークの負担が軽減される。
【０１３９】
また、閾値を小さくすれば、監視モードに移行する頻度及び区間を増加させることができ、複製パケットの発生が確実に抑止される。特に、閾値を０に設定した場合、複製パケットが検知される度に、複製通知パケットを受信した複製ノードが監視モードに移行し、Ａｃｋパケットの送信成功率が評価される。これにより、応答方法を変更して複製パケットの発生を抑止することができる。
【０１４０】
なお、図１１〜図１５の通信処理において、必ずしもすべてのステップを実行する必要はなく、通信ネットワークの構成や条件に応じて一部のステップを省略することも可能である。例えば、ループ経路が形成される可能性が低い場合は、図１３のステップ１３０５及び１３０７の処理を省略してもよい。また、図１４のステップ１４０１において原因ノードを特定した後直ちに監視モードに移行する場合は、ステップ１４０２及び１４０３の処理を省略してもよい。
【０１４１】
図５のノード５０１〜５０３及び図１０のノード１００１は、例えば、図３４に示すような情報処理装置（コンピュータ）を用いて実現可能である。図３４の情報処理装置は、Central Processing Unit （ＣＰＵ）３４０１、メモリ３４０２、外部記憶装置３４０３、媒体駆動装置３４０４、及びネットワーク接続装置３４０５を含む。これらはバス３４０６により互いに接続されている。
【０１４２】
メモリ３４０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、通信処理に用いられるプログラム及びデータを格納する。例えば、ＣＰＵ３４０１は、メモリ３４０２を利用してプログラムを実行することにより、通信処理を行う。メモリ３４０２は、図５の格納部５１３、５２３、５３３、又は図１０の格納部１０１８としても使用できる。
【０１４３】
外部記憶装置３４０３は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この外部記憶装置３４０３には、ハードディスクドライブも含まれる。情報処理装置は、この外部記憶装置３４０３にプログラム及びデータを格納しておき、それらをメモリ３４０２にロードして使用することができる。
【０１４４】
媒体駆動装置３４０４は、可搬型記録媒体３４０７を駆動し、その記録内容にアクセスする。可搬型記録媒体３４０７は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体３４０７には、Compact Disk Read Only
Memory （ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等も含まれる。オペレータは、この可搬型記録媒体３４０７にプログラム及びデータを格納しておき、それらをメモリ３４０２にロードして使用することができる。
【０１４５】
このように、通信処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ３４０２、外部記憶装置３４０３、及び可搬型記録媒体３４０７のような、物理的な（非一時的な）記録媒体が含まれる。
【０１４６】
ネットワーク接続装置３４０５は、無線又は有線の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置３４０５を介して受け取り、それらをメモリ３４０２にロードして使用することができる。ネットワーク接続装置３４０５は、図５の送信部５１１、５２１、５３１、受信部５１２、５２２、５３２、図１０の受信部１０１１又は送信部１０１７としても使用できる。
【０１４７】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【図１】
2012131924.tif 000003
【図２】
2012131924.tif 000004
【図３】
2012131924.tif 000005
【図４】
2012131924.tif 000006
【図５】
2012131924.tif 000007
【図６】
2012131924.tif 000008
【図７】
2012131924.tif 000009
【図８】
2012131924.tif 000010
【図９】
2012131924.tif 000011
【図１０】
2012131924.tif 000012
【図１１】
2012131924.tif 000013
【図１２】
2012131924.tif 000014
【図１３】
2012131924.tif 000015
【図１４】
2012131924.tif 000016
【図１５】
2012131924.tif 000017
【図１６】
2012131924.tif 000018
【図１７】
2012131924.tif 000019
【図１８】
2012131924.tif 000020
【図１９】
2012131924.tif 000021
【図２０】
2012131924.tif 000022
【図２１】
2012131924.tif 000023
【図２２】
2012131924.tif 000024
【図２３】
2012131924.tif 000025
【図２４】
2012131924.tif 000026
【図２５】
2012131924.tif 000027
【図２６】
2012131924.tif 000028
【図２７】
2012131924.tif 000029
【図２８】
2012131924.tif 000030
【図２９】
2012131924.tif 000031
【図３０】
2012131924.tif 000032
【図３１】
2012131924.tif 000033
【図３２】
2012131924.tif 000034
【図３３】
2012131924.tif 000035
【図３４】
2012131924.tif 000036
【手続補正書】
【提出日】平成25年10月3日(2013.10.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のノードを含むネットワーク中のノードであって、
他のノードに対してデータを送信する送信部と、
他のノードからのデータを受信する受信部と、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
前記複数の他のノードのうちの第１のノードに送信したデータに対する確認応答を該第１のノードから受信しない場合に、該送信したデータの複製データを生成する第１の生成部と、
前記複数の他のノードのうちの第２のノードに送信した前記複製データを検知したことを示す複製通知を前記複数の他のノードのうちの１つから受信したとき、前記通信履歴を参照し、前記複製データの発生原因として前記第１のノードを特定する特定部と、
前記第１のノードと前記自ノードとの間の通信履歴を含み、該第１のノードに対して該通信履歴の照合を依頼する照合依頼を生成する第２の生成部と
を備えることを特徴とするノード。
【請求項２】
前記複製通知は、前記複製データの発生原因として複数の候補ノードの識別情報を含み、前記特定部は、前記複数の他のノードと前記自ノードとの間の通信履歴に含まれる、該複数の候補ノードに対する複数のデータ送信処理のうち最も早いデータ送信処理の送信先を、前記第１のノードとして特定することを特徴とする請求項１記載のノード。
【請求項３】
前記特定部は、前記複製通知を受信して前記第１のノードを特定した回数が閾値を超えたとき、前記照合依頼の送信を前記送信部に指示することを特徴とする請求項１又は２記載のノード。
【請求項４】
複数のノードを含むネットワーク中のノードであって、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
受信したデータに対する確認応答を送信する送信部と、
前記複数の他のノードのうち、前記自ノードに送信したデータに対する確認応答を該自ノードから受信しない場合に該送信したデータの複製データを生成する複製ノードから、該複製ノードと該自ノードとの間の第１の通信履歴を含み、該第１の通信履歴の照合を依頼する照合依頼を受信する受信部と、
前記照合依頼を受信したとき、該照合依頼に含まれる前記第１の通信履歴と、前記格納部に格納された前記複製ノードと前記自ノードとの間の第２の通信履歴とを照合し、前記複製ノードが前記自ノードに送信したデータに対する前記確認応答を該自ノードから受信していない場合に、該複製ノードに対する応答方法を変更する照合部と
を備えることを特徴とするノード。
【請求項５】
前記照合部は、前記第２の通信履歴に含まれる前記確認応答の数に対する、前記第１の通信履歴に含まれる前記確認応答の数の割合が、閾値より小さい場合に、前記応答方法を変更することを特徴とする請求項４記載のノード。
【請求項６】
前記照合部は、前記応答方法を、前記複製ノードから受信したデータに対する確認応答の送信回数を増加させる第１の方法、前記複製ノードから受信したデータに対する確認応答の送信電力を増加させる第２の方法、又は前記複製ノードから受信したデータに対する確認応答に対する確認応答を前記複製ノードから受信する第３の方法のいずれかに変更することを特徴とする請求項４又は５記載のノード。
【請求項７】
複数のノードを含むネットワーク中のノードであって、
複数の他のノードと自ノードとの間の通信履歴を格納する格納部と、
前記複数の他のノードのうちの第１のノードから第１のデータを受信する受信部と、
前記第１のデータを受信したとき、前記通信履歴を参照して、該第１のデータと、前記複数の他のノードのうちの第２のノードから受信した第２のデータの一方が他方の複製データであるか否かをチェックし、一方が他方の複製データである場合に、該複製データを生成した複製ノードを特定する特定部と、
前記複製データを検知したことを示す複製通知を前記複製ノードに送信する送信部と
を備えることを特徴とするノード。
【請求項８】
前記通信履歴は、前記第２のデータが通過した経路を示す情報を含み、前記特定部は、前記第１のデータが通過した経路と該第２のデータが通過した経路の共通部分に含まれる最後のノードを、前記複製ノードとして特定することを特徴とする請求項７記載のノード。
【請求項９】
前記特定部は、前記第１のデータが通過した経路に含まれる前記最後のノードの次のノードと、前記第２のデータが通過した経路に含まれる前記最後のノードの次のノードとを、前記複製データの発生原因として特定し、前記送信部は、特定された２つのノードの識別情報を含む前記複製通知を前記複製ノードに送信することを特徴とする請求項８記載のノード。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2012131924.tif 000037
【国際調査報告】
2012131924.tif 000038
2012131924.tif 000039