(57)【要約】【課題】ノード間のメトリック値が急変した場合に、パケットのループが発生することがある。【解決手段】ノード間のメトリック値がＡｎ−１からＡｎと変化した場合において、その変化量が、所定の範囲内にあるかどうかを判断し、判断の結果、範囲外となればメトリック値Ａｎ−１を用いて変化量が削減された修正値を算出する。そして、この修正値をメトリック値として確定する。【選択図】図６
2011171973.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを構成するノードであり、送信元ノードから送信先ノードへと至るメトリック値を計算して当該メトリック値が最小となる経路の設定に用いるトポロジーテーブルに用いるメトリック値を更新するための経路計算装置であって、
隣接ノードと、各隣接ノードへのメトリック値とを示すネイバーテーブルを記憶する記憶手段と、
隣接ノードへのメトリック値（Ａｎ）を新たに取得する取得手段と、
前記取得手段により新たに取得された値（Ａｎ）の、前記ネイバーテーブルに記憶された対応するメトリック値（Ａｎ−１）に対する変化量が、所定値の範囲内か判断する判断手段と、
前記判断手段により前記変化量が所定値の範囲内と判断されると、前記新たに取得したメトリック値（Ａｎ）に基づいて、対応するネイバーテーブルのメトリック値を更新し、
前記判断手段により前記変化量が所定値の範囲内ではないと判断されると、前記新たに取得したメトリック値（Ａｎ）には基づかずに、前記ネイバーテーブルに記憶された対応するメトリック値（Ａｎ−１）を用いて算出した修正値であって、前記変化量がより少なくなる修正値に基づいて、対応するネイバーテーブルのメトリック値を更新する更新手段と
を備えることを特徴とする経路計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
通信ネットワーク技術に関し、特にルーティング（経路制御）の評価尺度となるメトリック値を更新する技術に関する。
【背景技術】
【０００２】
メトリック値は、ルーティングの評価尺度となる値である（非特許文献１参照）。
メトリック値を求める仕組みは種々提案されており、例えば、ＥＴＸ（Expected Transmission Count）では、あるふたつのノードの間でひとつをパケットを送信する場合に、再送も含めた平均パケット送信回数をリンクのメトリック値とするものである（非特許文献２参照）。
【０００３】
また、ルーティングプロトコルとしてＯＬＳＲ（Optimized Link State Routing)が知られている（非特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「アドホック・メッシュネットワーク」、間瀬憲一，阪田史郎、コロナ社、2007年、P33-38，P157-161」
【非特許文献２】「A High-Throughput Path Metric for Multi-Hop Wireless Routing」、D. De Couto, D. Aguayo, J. Bicket and R. Morris、MOBICOM 2003
【非特許文献３】「Optimized Link State Routing Protocol (RFC 3626)」、IETF RFC3626、［平成２２年２月１０日検索］、インターネット＜URL：http://www.ietf.org/rfc/rfc3626.txt
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、実際のネットワークにおいては、回線状況の変化などの原因によりメトリック値が変化することがある。
例えば、図１１に示すように、３つのノードＡ，Ｂ，Ｃから構成されるネットワークを考える（図１１（ａ））。
図１１（ａ）のネットワークでは、ノードＡ，ＢからそれぞれノードＣへ至る最短の経路は、Ａ→ＣまたはＢ→Ａ→Ｃである。
【０００６】
ここで、ノードＡ−Ｃ間におけるメトリック値が4から12へと変化したとする。
仮に、ノードＡ，Ｂそれぞれのトポロジーテーブルにおいて、この変化に対応する更新が同期していれば適切なルーティングを行うことができる（図１１（ｂ））。
もっとも現実には、変更後のメトリック値を送るためのリンク情報（ＯＬＳＲではＴＣメッセージ）は一定時間間隔（ＯＬＳＲにおけるデフォルト値は5秒間隔）ごとに隣接ノードに伝えられることで全体に拡がっていくものである。
【０００７】
このため、トポロジーテーブルの更新タイミングはノード間でずれ、変更前のメトリックを用いて計算されたルーティングテーブルを有するノードと変更後のメトリックを用いたテーブルを有するノードとが混在してしまうことがある。
図１１（ｃ）の例は、ノードＡはトポロジーテーブルの更新を完了しているのに、ノードＢは未更新である場合である。
【０００８】
この場合、ノードＡにおけるトポロジーテーブルによると、宛先のノードＣに至るためのメトリック値の総和は、Ａ→Ｃの経路ならば12であり、Ａ→Ｂ→Ｃの経路ならば9(=1+8)である。このため、ノードＡは、Ａ→Ｂ→Ｃの経路が最短経路と決定し、ルーティングテーブル１００ａの宛先ノードＣに対応する次ホップのレコードをノードＢに更新する。
これに対して、ノードＢにおけるトポロジーテーブルにおいては、ノードＡ−Ｃ間のメトリック値は4と古い値のままである。このため、宛先のノードＣに至るためのメトリック値の総和は、Ｂ→Ｃの経路ならば8であり、Ｂ→Ａ→Ｃの経路ならば5(=1+4)となる。従ってノードＢは、ルーティングテーブル１００ｂの宛先ノードＣに対応する次ホップのレコードをノードＡに更新する。
【０００９】
このようなルーティングテーブル１００ａ，１００ｂが存在する状況下において、宛先をノードＣとするパケットがノードＡまたはノードＢに到着すると、ノードＡ側ではノードＢへとこのパケットを転送する一方で、ノードＢ側ではノードＡへとこのパケットを転送する。従ってノードＡ−Ｂ間において延々とパケットの転送が繰り返されてしまうこととなる。
【００１０】
このようなパケットのループは、ノードＡ−Ｂ間の輻輳や、これに伴う通信障害を引き起こし得るため問題である。
このような事態を回避するために、ＴＣメッセージの送信間隔を極めて小さくしてトポロジーテーブルの更新を頻繁にする手立ても考えられるが、頻繁にすることはＴＣメッセージのオーバーヘッド増加につながるので一定の制約があり、望ましい解決方法とは言い難い。
【００１１】
また、パケットのループを検出して、ループパケットを破棄する方法も考えられる。この場合にはループに伴う輻輳、及びこれに伴う通信性能の低下を防ぐことができるが、ループしたパケットは宛先に到達できないため、この間はユーザは通信ができない状態になるため、根本的な解決にはなっていない。
なお、このようにトポロジーテーブルの内容がノード間で異なることに起因してパケットのループが発生する問題は、ＯＬＳＲに限らず各種ルーティングプロトコルにおいて同様に生じ得る問題である。
【００１２】
本発明はこのような問題に鑑みてなされたものであって、ノード間のメトリック値が変化した場合において、簡易な方法でパケットのループを低減できる経路計算装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る経路計算装置は、ネットワークを構成するノードであり、送信元ノードから送信先ノードへと至るメトリック値を計算して当該メトリック値が最小となる経路の設定に用いるトポロジーテーブルに用いるメトリック値を更新するための経路計算装置であって、隣接ノードと、各隣接ノードへのメトリック値とを示すネイバーテーブルを記憶する記憶手段と、隣接ノードへのメトリック値（Ａｎ）を新たに取得する取得手段と、前記取得手段により新たに取得された値（Ａｎ）の、前記ネイバーテーブルに記憶された対応するメトリック値（Ａｎ−１）に対する変化量が、所定値の範囲内か判断する判断手段と、前記判断手段により前記変化量が所定値の範囲内と判断されると、前記新たに取得したメトリック値（Ａｎ）に基づいて、対応するネイバーテーブルのメトリック値を更新し、前記判断手段により前記変化量が所定値の範囲内ではないと判断されると、前記新たに取得したメトリック値（Ａｎ）には基づかずに、前記ネイバーテーブルに記憶された対応するメトリック値（Ａｎ−１）を用いて算出した修正値であって、前記変化量がより少なくなる修正値に基づいて、対応するネイバーテーブルのメトリック値を更新する更新手段とを備えることを特徴とするとしている。
【発明の効果】
【００１４】
この構成によれば、変化量が所定値の範囲内ではない場合には、新たに取得したメトリック値ではなく、変化量がより少なくなる修正値に基づいてメトリック値を更新するので、メトリック値の急変を抑えることができる。
このため、最新のメトリックに基づいて計算されたルーティングテーブルと古いメトリックに基づいて計算されたルーティングテーブルの間の矛盾が発生する可能性を低減することができ、これによりパケットのループが発生する可能性を低減することができる。
【図面の簡単な説明】
【００１５】
【図１】ネットワークの概略図
【図２】ノード２ａの機能ブロック図
【図３】各ノード２ａ〜２ｆの動作のあらましを説明するフローチャート
【図４】ネイバーテーブル更新処理の詳細を示すフローチャート
【図５】トポロジーテーブル更新処理の詳細を示すフローチャート
【図６】あるネットワークにおけるメトリック値を示す図
【図７】メトリック値の変化を示すグラフを示す図
【図８】理論的解析で用いる式を示す図
【図９】理論的解析で用いる式を示す図
【図１０】経路ループの発生を説明するための図
【図１１】メトリック値が変化したときのルーティングを説明する図
【発明を実施するための形態】
【００１６】
以下、図面に基づいて実施の形態について説明する。
＜構成＞
図１は、ネットワークの概略図である。
図１に示すように、ネットワーク１は、モバイルアドホックネットワーク（ＭＡＮＥＴ：mobile ad hoc network）と呼ばれるタイプであり、６つのノード２ａ〜２ｆを含む。各ノード２ａ〜２ｆは、ＯＬＳＲ（Optimized Link State Routing)のルーティングプロトコルに従って動作し、ネットワーク１を自律的に構成している。
【００１７】
以下では、ノード２ａをノードＡというように、ノード２ａ〜２ｆを、それぞれノードＡ〜Ｆと呼ぶことがある。
なお、ＯＬＳＲにおいては、ルーティングに必要な情報の伝搬（フラッディング）を効率良くするために、全ノードの中からＭＰＲ（Multi-Point Relay）と呼ばれるノードを選択するのであるが、本実施の形態の重要部分ではないので、ＭＰＲノードの選択方法などについては説明を省略する。
【００１８】
図２は、ノード２ａの機能ブロック図である。なお、ノード２ｂ〜２ｆもノード２ａと同様の構成を備えるため説明を省略する。
ノード２ａは、アンテナ１０、送受信制御部１２、メッセージ処理部１４、メトリック値算出部１５、ネイバー更新部１６、ネイバーテーブル２４、トポロジー更新部２６、トポロジーテーブル２８、ルーティング更新部３０、ルーティングテーブル３２および送信先決定部３４を備える。
【００１９】
アンテナ１０は、無指向性のオムニアンテナである。
送受信制御部１２は、例えば通信モジュールなどから構成され、アンテナ１０を介してデータを送受信する。
メッセージ処理部１４は、ＯＬＳＲで規定されたＨｅｌｌｏ、ＴＣ(Topology Control)、ＭＩＤ(Multiple Interface Decraration)、ＨＮＡ(Host and Network Association)の4種類のメッセージに関する処理を行う。メッセージに関する処理は、各種メッセージを生成して、生成したメッセージを送受信制御部１２を介して送信する処理や、送受信制御部１２が他のノードから受信した各種メッセージに応じた処理を含む。メッセージ処理部１４としては、例えば、ＲＯＭに格納されたプログラムとこのプログラムを実行するＣＰＵにより構成される。
【００２０】
メッセージ処理部１４は、Ｈｅｌｌｏメッセージを定期的に（例えば、ＯＬＳＲにおけるデフォルト値である2秒間隔で）ブロードキャストする。
このＨｅｌｌｏメッセージには、自身のアドレス、シーケンス番号などの情報が含まれる。
また、メッセージ処理部１４は、定期的に（例えば、ＯＬＳＲにおけるデフォルト値である5秒間隔で）ＴＣメッセージを生成し、隣接ノード２ｂ，２ｃに送信する。
【００２１】
ＴＣメッセージには、自身のアドレス、シーケンス番号、自身のＭＰＲセレクタのアドレスなどが含まれる。本実施の形態では、ＯＬＳＲを拡張して、自身のノードと隣接ノードとの間のメトリック値を示す情報をＴＣメッセージに追加する。
ＴＣメッセージを受信した隣接ノード２ｂ，２ｃも、受信したＴＣメッセージをノード２ｄ，２ｅ，２ｆへと転送する。
【００２２】
このように、ノード２ａのメッセージ処理部１４が生成・送信したＴＣメッセージの内容は、ノード２ｂ，２ｃを経てから、ノード２ｄ，２ｅ，２ｆへと到達するため、特にノード２ｄ，２ｅ，２ｆにおける到達時間は生成時間に対して遅延する。そして、この遅延がノード間でのトポロジーテーブルの内容の不一致へとつながることとなる。
なお、メッセージ処理部１４が処理をするＭＩＤメッセージは、複数のインターフェイスを有する場合に使用される。また、ＨＮＡメッセージはノードがゲートウェイとして機能するときに使用される。
【００２３】
メトリック値算出部１５は、メッセージ処理部１４が処理をするＨｅｌｌｏメッセージに含まれるリンク品質情報と、他のノードから受信したＨｅｌｌｏメッセージの受信履歴とを用いることによりＥＴＸ（ひとつのパケットを送信する場合に、再送も含めた平均パケット送信回数を表す。）と呼ばれるメトリック値を算出する。
このＥＴＸの算出の方法は、上述非特許文献２などに掲載されたＥＴＸ（Expected Transmission Count）の一般的手法を利用できるため、詳細な説明を省略する。
【００２４】
なお、メトリック値算出部１５は、例えば、ＲＯＭに格納されたプログラムとこのプログラムを実行するＣＰＵにより構成される。
ネイバー更新部１６は、取得部１８、判断部２０および算出部２２を備える。ネイバー更新部１６は、例えば、ＲＯＭに格納されたプログラムとこのプログラムを実行するＣＰＵにより構成される。
【００２５】
取得部１８は、メトリック値算出部１５とネイバーテーブル２４からメトリック値を取得する。
判断部２０は取得されたメトリック値を用いて比較を行ってその結果を出力する。
算出部２２は、判断部２０が出力する結果に応じてメトリック値を算出する。
ネイバーテーブル２４は、例えばＲＡＭから構成される。データ構造としては、「隣接ノード」２４ａと隣接ノードまでの「メトリック値」２４ｂとから構成される。
【００２６】
隣接ノードとは自ノードから１ホップで通信可能なノードである。図２の例では、隣接ノードＣに対応するメトリック値は4となっている。
トポロジー更新部２６は、送受信制御部１２が受信した他のノードが生成したＴＣメッセージなどに基づいて、ネットワーク全体の構造を示すトポロジーテーブル２８を更新する。トポロジー更新部２６は、例えばＲＯＭに格納されたプログラムとこのプログラムを実行するＣＰＵにより構成される。
【００２７】
ルーティング更新部３０は、トポロジーテーブル２８を参照して、ダイクストラ（Dijkstra）アルゴリズム等を用いて宛先ノードに至るための最短経路を算出し、宛先ノードと最短経路上の次ホップとを対応付けたデータをルーティングテーブル３２に記憶させる。なお、ルーティング更新部３０は、例えばＲＯＭに格納されたプログラムとこのプログラムを実行するＣＰＵにより構成される。
【００２８】
ルーティングテーブル３２は、例えばＲＡＭにより構成され、「宛先ノード」３２ａと宛先ノードへの経路上にある次のノードである「次ホップ」３２ｂとのデータ構造を含む。図２の例では、宛先ノードＢに対応する次ホップはノードＢとなっている。
送信先決定部３４は、送受信制御部１２が受信したパケットのヘッダーに記述された宛先のノードを、ルーティングテーブル３２の「宛先ノード」３２ａと照らし合わせて、ルーティングテーブル３２上の「宛先ノード」３２ａに対応する「次ホップ」３２ｂのノードを送信先として決定する。
＜動作＞
図３は、実施の形態に係る各ノード２ａの動作のあらましを説明するフローチャートである。
【００２９】
動作のあらましは、主にネイバー更新部１６が行うネイバーテーブル更新処理（Ｓ１１）と、主にトポロジー更新部２６が行うトポロジーテーブル更新処理（Ｓ１２）である。このフローチャートでは、説明の便宜上、ネイバーテーブル更新処理の後でトポロジーテーブル更新処理を行う順番としているが、実際には両処理は別個に実行される。すなわち、ネイバーテーブル更新処理（Ｓ１１）は、Ｈｅｌｌｏメッセージの送信間隔である２秒ごとに実行され（図４：Ｓ２１）、トポロジーテーブル更新処理（Ｓ１２）は、ＴＣメッセージを受信するごとに実行される（図５：Ｓ４１）。
【００３０】
図４は、ネイバーテーブル更新処理の詳細を示すフローチャートである。
まずは、隣接ノードに至るためのメトリック値Ａｎを算出する（Ｓ２３）。
ステップＳ２３の具体例として、ノードＡがノードＢに対応するＥＴＸ（メトリック値）を算出する場合について説明する。上述のように、ノードＡのメトリック値算出部１５は、Ｈｅｌｌｏメッセージの受信履歴に基づいて、ノードＢから送信されてきたはずの最近10回分のＨｅｌｌｏメッセージのうち何回受信に成功したかの割合（「ｒａ」とする。）を求める。上述のようにＨｅｌｌｏメッセージの送信間隔は２秒と決まっているので、受信履歴と送信間隔を照らし合わせることで、受信するはずのＨｅｌｌｏメッセージが受信できなかった（受信に失敗した）ことが把握できる。
【００３１】
また同様に、ノードＢ側でも、ノードＡから送信されてきた最近10回分のＨｅｌｌｏメッセージのうち何回受信したかの割合（「ｒｂ」とする。）を算出する。
そして、ノードＡのメトリック値算出部１５は、ノードＢから割合「ｒｂ」を受信すると、「ｒａ」と「ｒｂ」とを掛け合わせた逆数（１／ｒａ＊ｒｂ）をノードＢに対応するメトリック値Ａｎとして算出する。
【００３２】
続いて、取得部１８はメトリック値算出部１５により計測されたメトリック値Ａｎと、ネイバーテーブル２４中のメトリック値Ａｎの隣接ノードに対応する隣接ノードのメトリック値Ａｎ−１（「Ａｎ−１」は前回更新されたメトリック値である。）とを取得する（Ｓ２４）。
そして、判断部２０は、取得されたメトリック値Ａｎが、
Ａｎ−１／ｒ≦Ａｎ≦Ａｎ−１×ｒ・・・（式２）
の範囲内にあるかどうか判断する。以下の例ではｒ=1.1として説明する。なお、係数のｒ（＞１）は１に近いほどメトリック値の変化を抑制することができるのであるが詳細は後述する。
【００３３】
範囲内にあれば（Ｓ２５：Ｙｅｓ）、そのままメトリック値Ａｎを更新すべきメトリック値として確定する（Ｓ２６）。
範囲内になく、ＡｎがＡｎ−１／ｒより小さくなっていれば（Ｓ２５：Ｎｏ，Ａｎ＜Ａｎ−１／ｒ）、算出部２２はＡｎ−１／ｒを更新すべきメトリック値として確定する（Ｓ２７）。この条件を満たすのは、メトリック値が急減したときである。
【００３４】
範囲内になく、Ａｎ−１×ｒよりＡｎが大きくなっていれば、（Ｓ２５：Ｎｏ，Ａｎ−１×ｒ＜Ａｎ）、算出部２２はＡｎ−１×ｒを更新すべきメトリック値として確定する（Ｓ２８）。この条件を満たすのは、メトリック値が急増したときである。
例えば、隣接ノードがノードＣとすると、前回更新されたメトリック値はＡｎ−１＝4（図２参照）である。そして、メトリック値が急増して、計測されたメトリック値Ａｎが12になったとすると、Ａｎ−１×ｒ=4*1.1=4.4と12を下回るので、この算出部２２はＡｎ−１×ｒ（＝4.4）に確定する。
【００３５】
そして、ネイバー更新部１６は確定されたメトリック値（以下、ステップＳ２６〜Ｓ２８のいずれかにより確定された値を「確定値」と呼ぶことがある。）を用いて、ネイバーテーブル２４の対応するレコードを更新する（Ｓ２９）。
例えば、上のノードＣの例では、確定値が4.4なので、ノードＣに対応する「メトリック値」２４ｂのレコードを4から4.4へと更新する。
【００３６】
続いて、ＴＣメッセージを送信する間隔が到来すれば、メッセージ処理部１４はネイバーテーブル２４に記述されたメトリック値を含むＴＣメッセージを作成して送信する（Ｓ３０）。
このようなネイバーテーブル更新処理（Ｓ１１）を終えると、トポロジーテーブル更新処理（Ｓ１２）に移行する。
【００３７】
図５は、トポロジーテーブル更新処理の詳細を示すフローチャートである。
トポロジーテーブル更新処理では、送受信制御部１２が他のノードからＴＣメッセージを受信すると（Ｓ４１：Ｙｅｓ）、トポロジー更新部２６は、受信したＴＣメッセージに含まれるメトリック値が、トポロジーテーブル２８の値から変更されていれば、ＴＣメッセージに含まれるメトリック値により更新する(Ｓ４２)。
【００３８】
トポロジーテーブル２８の更新があれば、ルーティング更新部３０は、更新されたトポロジーテーブル２８に基づいて宛先ノードへの最短経路を算出して、最短経路に変更があれば、ルーティングテーブル３２を更新する（Ｓ４３）。
以上説明したように、本実施の形態によれば、ネイバーテーブル２４に記述された前回の値Ａｎ−１に対して、メトリック値が急変（急増・急減）した場合には、メトリック値算出部１５により実際に計測された値Ａｎを更新に用いる代わりに、前回の値Ａｎ−１に係数ｒを積算した値もしくは前回の値Ａｎ−１を係数ｒで除算した値を更新に用いる。
【００３９】
このため、トポロジーテーブル２８を最新のメトリック値に更新済みのノードと未更新なノードとが混在したとしても、新しいメトリックにより計算されたルーティングテーブルと古いメトリックにより計算されたルーティングテーブル一貫性が失われ、その結果一部のパケットがループして宛先に到達できなくなる可能性を低減できる。
すなわち、メトリック値の急変がもたらすルーティングテーブルの一貫性が喪失する可能性を低減し、もってパケットのループの防止に貢献することができる。
【００４０】
例えば、図６に示すように、図１１と同様メトリック値が4から12へと急増した場合を考えると、メトリック値算出部１５が計測したメトリック値12（=Ａｎ)は、前回のメトリック値4（=Ａｎ−１）に対して急増している（Ｓ２５：Ｎｏ，Ａｎ−１×ｒ＜Ａｎ）。このとき、算出部２２により修正された値4.4（=4×1.1）が確定値となる（Ｓ２８）。
この場合、ノードＡにおけるトポロジーテーブルによると、宛先ノードＣに至るためのメトリック値の総和は、Ａ→Ｃの経路ならば4.4であり、Ａ→Ｂ→Ｃの経路ならば9(=1+8)である。このため、ノードＡはノードＣへの最短経路上にある次ホップはノードＢと決定する。
【００４１】
これに対して、ノードＢにおけるトポロジーテーブルはノードＡ−Ｃ間におけるメトリック値は古い値の4のままであるが、4.4と大差ない。そして、ノードＣに至るためのメトリック値の総和は、Ｂ→Ｃの経路ならば8であり、Ｂ→Ａ→Ｃの経路ならば5(=1+4)となる。このため、ノードＢはノードＣへの最短経路上にある次ホップはノードＣと決定する。
従って、ノードＣを宛先とするパケットを受信した場合には、ノードＡはノードＣへとこのパケットを転送し、ノードＢもノードＣへとこのパケットを転送することとなるので、図１１のようにノードＡとノードＢのルーティングテーブルの一貫性が失われ、パケットがループすることを回避することができる。
＜具体例＞
図７を用いてメトリック値が変化する具体例について説明する。
（１）急増
図７（ａ）の例は、メトリック値が4から12へと急増する場合（An-1×ｒ＜Anとなる場合）である。
【００４２】
急増直後（t1）におけるメトリック値算出部１５の計測値は12となるが、12＞4.4(=4×1.1)となるので、確定値は4.4となる。
そして、次の更新タイミング（t2）におけるメトリック値算出部１５の計測値は12となるが、12＞4.8[＝4×(1.1^2)]となるので、確定値は4.8となる。
さらに、次の更新タイミング（t3）におけるメトリック値算出部１５の計測値は12となるが、12＞5.3[＝4×(1.1^3)]となるので、確定値は5.3となる。
【００４３】
このようにネイバーテーブルの更新タイミング（Ｓ２１）が到来するたびに、確定値を徐々に実測値へと近づけることができ、パケットのループを回避しつつ、効率的な経路選択をも実現できる。
（２）急減
図７（ｂ）の例は、メトリック値が12から4へと急減する場合（An＜An-1／ｒとなる場合）である。
【００４４】
急減直後（t1）におけるメトリック値算出部１５の計測値は4となるが、4＜10.9(=12/1.1)となるので、確定値は10.9となる。
そして、次の更新タイミング（t2）におけるメトリック値算出部１５の計測値は4となるが、12＞9.9[=12/(1.1^2)]となるので、確定値は9.9となる。
さらに、次の更新タイミング（t3）におけるメトリック値算出部１５の計測値は4となるが、12＞9.0[=12/(1.1^3)]となるので、確定値は9.0となる。
【００４５】
このように急減の場合も急増の場合と同様、確定値を徐々に実測値へと近づけることができる。
（３）緩やかに変化
図７（ｃ）の例は、メトリック値が緩やかに変化する場合（An-1／ｒ≦An≦An-1×ｒとなる場合）である。
【００４６】
最初の更新タイミング（t1）におけるメトリック値算出部１５の計測値は3.9となり、4/1.1≦3.9≦4×1.1という関係なので、実測値3.9がそのまま確定値となる。
そして、次の更新タイミング（t2）におけるメトリック値算出部１５の計測値は4.1となるが、3.9/1.1≦4.1≦3.9×1.1という関係なので、実測値4.1がそのまま確定値となる。
【００４７】
このように、メトリック値が緩やかに変化する場合には、それに合わせて確定値を追随させることができる。
（４）一瞬急増
図７（ｄ）の例は、メトリック値が一瞬だけ急増して元の値に戻る場合である。
急増直後（t1）におけるメトリック値算出部１５の計測値は12となるが、12＞4.4(=4×1.1)となるので、確定値は4.4となる。
【００４８】
そして、次の更新タイミング（t2）におけるメトリック値算出部１５の計測値は4となるが、4.4/1.1≦4≦4.4×1.1という関係なので、実測値4がそのまま確定値となる。
このように、ノード間の空間で障害物が通り過ぎるなどの理由でメトリック値が一瞬だけ急増するような場合には、メトリック値の変化を抑制することができ、拙速なルーティングの変更を回避できる。
＜補足＞
（１）ｒの決め方
実施の形態では、ｒ＝1.1として説明したが、ｒの値はこれに限られない。
【００４９】
パケットのループ防止という側面からは、ｒの値はより１に近いほどメトリック値の変更を抑えられるので好ましい。もっとも、ｒの値が１に近づくほど、実際のメトリック値への追随が遅れる結果となり、ネットワークにおけるスループットが悪化するという側面がある。
ｒの値は、この両方の側面のバランスを考慮して決定することができ、具体的には、ネットワークを構成するノードの数、ネットワークの安定性、パケットループの発生をどの程度許容するかなどの要素に基づいて決定することができる。
【００５０】
例えば、それぞれ無線通信を行う50個のノードを1200メートルｘ１２００メートルのフィールドにランダム配置し、24時間ＯＬＳＲ上で本手法を動作させ、メトリック値をランダムに変更するシミュレーション実験を行ったところ、ｒを1.5 , 1.2 , 1.10 , 1.08としたときには、それぞれ100回の反復実験を行った中で、100回、60回、1回、0回の実験においてパケットループの可能性があった。
（２）判断方法、算出方法
実施の形態においては、変化量ｒを用いて、メトリック値が急変しないよう調整する例について説明したが、実施の形態のステップＳ２５の式に限らず、急変を抑えることができるようなやり方であれば種々の手法が考えられる。
【００５１】
例えば、本実施の形態で説明した変化量ｒは、メトリック値が増加する場合と減少する場合で異なる値になっても良い。あるいは実行するノードによって異なる値を用いても良いし、ネットワーク上のノードの一部のみがこの方法を用いてメトリックを修正しても良い。
さらには、ネットワーク上の、特定の条件を満たす一部のリンクに対してのみ、この変化量ｒを用いてメトリック値を修正しても良く、またリンクによってｒなどのメトリック修正に適用するパラメータを個別に設定しても良い。
【００５２】
また、以前にメトリックを広告してからの経過時間やネットワークの状況によって動的にｒなどのパラメータを変動させても良い。
また、実施の形態では、新たなメトリックの取り得る範囲は直近のメトリックのみに依存することになっているが、本発明の原理は一定時間内のメトリックの変化を一定の範囲内に制限することであるので、過去の複数のメトリックに依存して変化量rや新たなメトリック決定されてもよい。例えば、メトリックが増加する場合に、過去１０回のメトリックの最小値を求め、その値にrを乗じた値を新たなメトリックの上限としてもよい。
【００５３】
さらに、実施の形態では、メトリック値算出時（Ｓ２３）にメトリックを修正する形態となっているが、ルーティングテーブルの更新（Ｓ４３）において修正しても良い。すなわち、ＴＣメッセージにより受信したメトリック値が以前に受信したメトリック値と異なる場合には、ルーティングテーブルを更新するタイミングで、ＴＣメッセージを受信してからの経過時間等に応じて各リンクに対するｒを定め、このｒに基づいて修正された各リンクのメトリックを用いてルーティングテーブルを計算しても良い。すなわちこの場合には、一定時間後に再びルーティングテーブルを計算し直すことで、徐々にＴＣメッセージに記載されていたメトリック値に近い値を用いてルーティングテーブルの計算ができる。
【００５４】
（３）メトリック値
実施の形態では、メトリック値を算出する計算方法の一例としてＥＴＸを挙げて説明したが、メトリック値を算出する計算方法はこれに限らず一般的な手法を用いることができる。
例えば、例えば、ＥＴＴ（Expected Transmission Time）や、ＥＴＴを応用したＷＣＥＴＴ（Weighted Cumulative ETT）など、他のいかなるメトリック値の計算方法を用いてもよい。また、各ノードの移動速度や、各ノードを構成する無線端末のスペック（ＣＰＵの処理能力やバッテリ残量）などの測定可能な値からメトリック値を求めても良い。
【００５５】
さらには、上に挙げたメトリック値の計算方法を組み合わせるとしてもよい。
また、メトリック値をノード間で交換のやり方については、実施の形態で説明した形態に限らず、他の一般的な手法を採っても構わない。
（４）ネットワーク
実施の形態においては、モバイルアドホックネットワークを例に挙げて説明したが、ネットワークのタイプとしてはこれに限らず、各種無線ネットワーク、有線ネットワーク、センサーネットワーク、その他経路制御を必要とする種々のネットワークに適用可能である。
【００５６】
もっとも、モバイルアドホックネットワークなどの無線ネットワークは、ネットワーク構成が頻繁に変化する傾向であるので本実施の形態を適用することが特に好適である。
（５）ルーティングプロトコル
実施の形態では、ルーティングプロトコルの例としてＯＬＳＲを例に挙げて説明したが、ルーティングプロトコルはこれに限られない。
【００５７】
例えば、ＯＳＰＦ（Open Shortest Path First）を用いてもよい。
ＯＳＰＦの場合は、メトリック値を示すリンク状態情報であるＬＳＡ（Link State Advertisement）をノード間でやりとりすることとなるが、このＬＳＡがすべてのノードに拡がるまで一定の時間を要し、ノード間のトポロジーテーブル（ＯＳＰＦでは、このトポロジーテーブルをＬＳＤＢ（Link State Database）とも呼ぶ。）の内容に食い違いが生じる可能性がある。このため、本実施の形態を適用し得る。
【００５８】
その他、ＯＬＳＲｖ２，ＴＢＲＰＦ（Topology Broadcast Based on Reverse-Path Forwarding），ＩＳ−ＩＳ（Intermediate System-to-Intermediate System）など、いかなるリンク状態型ルーティングプロトコル（つまり、ネットワーク上のトポロジ情報をノード内に持ち、そのトポロジ情報から通信経路を計算するルーティングプロトコル）にも適用可能である。
【００５９】
（６）上述の実施の形態で示した動作、処理（図４〜図５）を、経路計算装置としてのノード２ａ〜２ｆのプロセッサ、及びそのプロセッサに接続された各種回路に実行させるためのプログラムコードからなる制御プログラムを、記録媒体に記録すること、又は各種通信路を介して流通させ頒布することもできる。
このような記録媒体には、ＩＣカード、ハードディスク、光ディスク、フレキシブルディスク、ＲＯＭ等がある。
【００６０】
流通、頒布された制御プログラムは、プロセッサに読み出され得るメモリ等に格納されることにより利用に供され、そのプロセッサがその制御プログラムを実行することにより実施の形態で示したような各種機能が実現されるようになる。
＜解析＞
以下、実施の形態で説明したメトリック値に変更に関する理論的解析について説明する。
【００６１】
１．１  緒定義
以下で扱うネットワークをG={N,L}で表す。Nはノードの集合、Lはリンクの集合である。ノードn1,n2∈Nに対して、（n1,n2）∈Lであれば、n1とn2とは「隣接している」と言う。また、隣接するノードの列p=(n1,n2,...,nm)((nk,nk+1)∈L,k=1,2,...,m-1)を、「経路」と言う。
【００６２】
リンクｌ（エル）＝(n1,n2)の時刻ｔにおけるメトリックをml,tで表す。経路pの時刻tにおけるメトリックは、pに含まれる全てのリンクの時刻tのメトリックの和であり、δt(P)=Σl∈pml,tで表す。ノードs,d∈Nに対して、δt(p)が最小となるｓからｄへの経路ｐを時刻ｔにおけるs,d間の「最短路」と呼ぶ。時刻tの宛先dに対する最短路に含まれる全ての有向リンクから成るグラフをdへの最短路グラフと呼び、Dt(d)で表す。また、2つのグラフG=(V,E)，H=(V,F)に対して、グラフの合成をG∪H=(V,E∪F)で定義する。
【００６３】
１．２メトリック変更が一度しか発生しない場合
１．２では、メトリックが特定の変化割合を守って推移する時の経路ループ発生条件を明らかにする。時刻tにおけるリンクlのメトリックml,tは（図８：式1）を満たす範囲の値をとる。これは、メトリック値の単位時間あたりの変動割合をr-1からrまでの間で自由に変動させて良いことを意味する。
【００６４】
このようなメトリック変動によりループが発生する条件を調べる。まずはメトリックの変更が一度しか発生しない場合を考える。つまり時刻0には全てのノードが他の全てのノードの時刻0のメトリックに基づいて計算された経路表を用いており、時刻tに一度だけ各ノードがメトリックを変更する場合である。
このときには、メトリックの伝搬遅延により各ノードの経路再計算のタイミングのずれが発生するため、ループが発生し得る。いま、時刻0のメトリックを用いて計算された経路表が用いられているとする。次に全ノードが時刻tのメトリックを計算し広告する。このメトリックが各ノードに到達するタイミングにはずれが生じる。このため、ネットワーク上には一時的に、時刻0のメトリックと時刻tのメトリックの両方から計算された経路表が混在することになる。この混在時に経路ループが発生しないための十分条件を次に示す。
【００６５】
命題1：経路ループが発生しないための十分条件は、D=D0(d)∪Dt(d)が閉路を持たないことである。
ここで、ループの形成場面について考える。図１０は一般的なループ形成の場面を描いた図であり、時刻0とtの宛先dへの最短路によりループが形成された状態である。ループが存在する場合には、ループ中から、D0(d)に属するリンクの始点となり、かつDt(d)に属するリンクの終点となるようなノードn1を選択できる。n1を始点として、ループをD0(d)に属する経路とDt(d)に属する経路が交互に表れるように経路の列p'1,p'2,...,p'2mに分割する。ただし、p'2k-1とp'2k(0<k≦m)はそれぞれD0(d)とDt(d)に属するリンクにより構成される。経路p'2k-1とp'2kの始点をそれぞれn2k-1およびn2kとおく。n2kからdへの時刻0の最短路をp2kとし、n2k-1からdへの時刻tの最短路をp2k-1とする。ここで、次の定理が成立する。
【００６６】
定理1：全てのリンクl∈Eに対して、メトリック値がml,t-t'r-t≦ml,t≦ml,t-t'rtを満たすとき、図８の（式２）はD=D0(d)、Dt(d)が閉路を含まないためのrの十分条件の一つを示す。
ただし、（式２）のKは図８の（式３）により示される。
Proof：時刻0における最短路と時刻tにおける最短路が閉路を形成したとして、そのようなループを一つ考える。この時、各リンクの時刻0と時刻tにおけるメトリックはml,0r-t≦ml,t≦ml,0rtを満たす範囲の値をとる。
【００６７】
しかし考えてみると、図１０のループが発生するのは、n1,n2,...,n2mの全てのノードにおいて、時刻0からtの間に最短路が切り替わった時である。つまり、整数k(1≦k≦m)としてp2k-1及びp'2kに含まれる任意のリンクlについてδt(l)=r-tδ0(l)が成り立ち、逆にp2k及びp'2k-1に含まれる任意のリンクlについδt(l')=rtδ0(l')が成り立つ場合に、最も宛先dへの最短路の切り替えが発生しやすい。
【００６８】
つまりは、この場合に経路ループが発生しないならば、各リンクが許容範囲内でどのようなメトリック値をとろうとも、経路ループは発生しない。よって、以後この最悪の場合のみについて解析する。
時刻0において、ノードn2k-1における最短路の条件より、図８の（式４）（式５）の2式が成り立つ。
【００６９】
また、n2kからの最短路の条件より、図８の（式６）（式７）の2式が成り立つ。
(式５)(式６)よりp2k-1とp2kを消去すると、それぞれ、図９の（式８）（式９）となる。
（式８）とδ0(p'2k)>r2tδ0(p'2k)より、図９の（式１０）となる。
k=1,2,...,mに関して（式９）（式１０）を足して整理すると、図９の（式１１）となる。
【００７０】
この（式１１）が経路ループが発生する必要条件であることから、経路ループが発生しない十分条件は図９の（式１２）で表わされる。
（式１２）について、r,K>1より、図９の（式１３）が得られる。
1.3メトリック変更が一定時間間隔で発生する場合
上記の結果を、一般的なルーティングプロトコルの挙動に当てはまるように拡張する。OLSRなどのリンク状態型ルーティングプロトコルにおいてメトリックを利用する場合には、ノードは一定時間毎に最新のメトリックを計算し、この値をリンク情報広告メッセージに含めて広告する。リンク情報広告メッセージは各ノードにおいて一定時間間隔ごとに繰り返し送信されることが一般的であり、このためネットワークに伝播されるために時間がかかる。
【００７１】
ここで、tintをリンク情報広告メッセージの送信時間間隔、wをネットワークのホップカウントによる直径とする（つまりwは最もホップ数が長い最短路のホップ数）。r'をメトリック更新１回（リンク情報広告メッセージを送信する度に更新）あたりのメトリックの変動割合の許容量とする。
このとき、あるノードがあるメトリックを受信し、このメトリックを次のノードに転送するための平均待ち時間はtintである。よって、このメトリックは平均してt'=（wtint/2）時間あればネットワーク全体に伝わる。このt'は、ネットワーク全体であるリンクのメトリックが異なり得る変動幅を表している。
【００７２】
つまり、現在時刻をtとすると、この時刻tにおいてネットワーク上で利用される任意のノードu,vが保持しているメトリック値は、時刻t-t'からtの間に生成された値であり、式(1)のtにこのt'を当てはめることで、ループが発生しないr'とt'の条件を求めることができる。つまり、uが保持するメトリック集合から計算される最短路をDu(d)で表すと、Du(d)∪Dv(d)が閉路を持たないことを保証する条件を定理1から導くことができる。
【００７３】
これをu,vだけでなくネットワーク上の全てのノードに適用することで、メトリック変更が一定時間間隔で発生する時にも、ループを発生させないためのr'の条件を求めることができる。
ここでt'=（wtint/2）より、rt'=r'^（t'/tint）=r'^（w/2）であり、定理１より（正式には後述する定理2より）図９の（式１４）のようなr'に関してのループが発生しない条件が導かれる。
【００７４】
さて、正式にループが発生しない条件の定式化を行い、定理を証明する。つまり、上記の議論はu,vの２ノードのみに対して行ったものであるが、これを全てのノードに拡張した場合に拡張し、この場合にも同じ条件が当てはまることを証明する。
定理2：ml(i)(1≦i≦N,Nはネットワーク上のノード数)をリンクl∈Eのi番目のメトリック集合Miにおけるメトリックとする。また、全てのi,j(1≦i,j≦N)に対してml(i)r-t'≦ml(j)≦ml(i)rt'を満たすと仮定する。
【００７５】
この時、図９の式１５はD=D1∪D2∪...DNが閉路を含まない十分条件の一つである。
証明：経路ループが発生した場合として、再び図１０を用いる。ループ中のノードnで、あるメトリック集合Miにおけるnからdへの最短路がループ上の他のノードを含まず、別のメトリック集合Mjにおけるnからdへの最短路がループ上の他のノードを含むようなものを全て選び、任意の一つからループ上の出現順にn1,n2,...,n2mとおく。nkのMiにおけるdへの最短路の一つをpk,Mjにおけるdへの最短路の一つのうち、ループ上にある部分をp'kとおく。ここで、ループが生成されやすい最悪の場合は、Miの下ではpk上のリンク全てが取り得る範囲内の最小値を、p'kとpk+1上のリンク全てが取り得る範囲内の最大値をとり、同時にMjの下ではpk上のリンク全てが取り得る範囲内の最大の値を、p'kとpk+1上のリンク全てが取り得る範囲内の最小の値をとるときである。
【００７６】
逆にこの場合にループが生じなければ、その他の場合にループが生じることはない。ここで、この場合のメトリックを具体的に考えると、次のように当てはめることができる。
つまり、pkのメトリックはMiの下ではr-tδ0(pk)、Mjの下ではδ0(pk)である。
また、p'kとpk+1のメトリックはMiの下ではδ0(p'k),δ0(pk+1),Mjの下ではrtδ0(p'k)、rtδ0(pk+1)である。
【００７７】
このメトリックからは定理1と同じ式が導かれ、その結果、rに関する同じ条件式である（式１５）が導かれる。
この（式１５）のr'≦K1/wの意味するところを考える。メトリックの取り得る最大値を５、最小値を１とする。また、ネットワークの直径をw=10とする。この場合には、r'≦1.00198≒2%となる。また、w=5とした場合には、r'≦1.007870≒8%となる。ネットワークの大きさにより値は変化するが、このr'の範囲内でメトリックを変更する場合にはループが発生しないことが理論的に証明できた。
【産業上の利用可能性】
【００７８】
本発明に係る経路計算装置は、携帯電話機、携帯ゲーム機などの各種携帯通信機器や、ルータなどのネットワーク機器として有用である。
【符号の説明】
【００７９】
１  ネットワーク
２ａ〜２ｆ  ノード（経路計算装置）
１２  送受信制御部
１４  メッセージ処理部
１５  メトリック値算出部
１６  ネイバー更新部
１８  取得部
２０  判断部
２２  算出部
２４  ネイバーテーブル
２６  トポロジー更新部
２８  トポロジーテーブル
３０  ルーティング更新部
３２  ルーティングテーブル
３４  送信先決定部
【図１】
2011171973.tif 000003
【図２】
2011171973.tif 000004
【図３】
2011171973.tif 000005
【図４】
2011171973.tif 000006
【図５】
2011171973.tif 000007
【図６】
2011171973.tif 000008
【図７】
2011171973.tif 000009
【図８】
2011171973.tif 000010
【図９】
2011171973.tif 000011
【図１０】
2011171973.tif 000012
【図１１】
2011171973.tif 000013