(57)【要約】【課題】通信ネットワーク内のノードがマイクロループという意味での閉路を自律分散的かつ簡易に検出できるようにする。【解決手段】本発明による閉路検出方法は、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路を決定した後、前記通信ネットワークに含まれる所定のノードが、前記通信ネットワークを所定個のサブネットワークに分割し、分割された前記サブネットワークに含まれるノードが、前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求め、前記ノードが、求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断することを特徴とする。【選択図】図２
2011199383.tif 000002
【特許請求の範囲】
【請求項１】
ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路を決定した後、前記通信ネットワークに含まれる所定のノードが、前記通信ネットワークを所定個のサブネットワークに分割し、
分割された前記サブネットワークに含まれるノードが、前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求め、
前記ノードが、求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断する
ことを特徴とする閉路検出方法。
【請求項２】
前記ノードが、求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する
請求項１記載の閉路検出方法。
【請求項３】
前記ノードが、前記サブネットワークに含まれるノード数をＮとしたときに、前記サブネットワークに含まれるノードを起点として、最大でＮ−１ホップ先までのノード集合ＶＮと、両端ノードが前記ノード集合ＶＮに含まれるリンクとについて、１次元複体までの前記オイラー標数を求め、
前記ノードが、求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する
請求項１記載の閉路検出方法。
【請求項４】
前記ノードが、前記サブネットワークについての１次元複体までの前記オイラー標数の値、前記サブネットワーク内での閉路の存在の有無、及び前記サブネットワーク内での閉路の存在箇所を、前記通信ネットワーク内で経路制御を行う所定の経路制御手段に通知する
請求項１から請求項３のうちのいずれか１項に記載の閉路検出方法。
【請求項５】
前記通信ネットワークが、同じ大きさのサブネットワークに分割され、又は異なる大きさのサブネットワークに分割されている
請求項１から請求項４のうちのいずれか１項に記載の閉路検出方法。
【請求項６】
前記通信ネットワークが、各サブネットワークが互いに重なるように分割され、又は各サブネットワークが互いに重ならないように分割されている
請求項１から請求項５のうちのいずれか１項に記載の閉路検出方法。
【請求項７】
前記通信ネットワーク内の各ノードが、前記オイラー標数を求めるために必要な情報の取得間隔を、ノード間で統一的に決定する
請求項１から請求項６のうちのいずれか１項に記載の閉路検出方法。
【請求項８】
前記通信ネットワーク内の各ノードが、前記オイラー標数を求めるために必要な情報の取得間隔を、自律分散的に個々に決定する
請求項１から請求項６のうちのいずれか１項に記載の閉路検出方法。
【請求項９】
ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、前記通信ネットワークを所定個のサブネットワークに分割するネットワーク分割手段と、
前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求めるオイラー標数算出手段と、
前記オイラー標数算出手段が求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断する閉路判断手段とを
備えたことを特徴とする閉路検出システム。
【請求項１０】
コンピュータに、
ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、前記通信ネットワークを所定個のサブネットワークに分割する処理と、
前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求める処理と、
求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断する処理とを
実行させるための閉路検出用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワーク内に発生する閉路を検出する閉路検出方法、閉路検出システム、及び閉路検出用プログラムに関する。
【背景技術】
【０００２】
通信ネットワーク内における閉路を検出する関連技術が、例えば、非特許文献１に記載されている。オリジナルのＲＩＰを用いた経路制御を行う場合、通常３０秒毎に経路を一度に更新する。そのため、通信ネットワーク内にいわゆるマイクロループが発生し得る。非特許文献１に記載された関連技術では、３０秒毎に経路を更新することをやめて、経路に変更があった場合にのみ経路更新を行うよう設定することで、通信ネットワーク内におけるループの発生そのものを防いでいる。
【０００３】
また、通信ネットワーク内における閉路を検出する他の関連技術が、例えば、非特許文献２に記載されている。非特許文献２に記載された関連技術（Split Horizon）では、経路情報を受信したインターフェイスからは、その経路情報を送信しないように制御することによって、通信ネットワーク内における閉路の発生そのものを防いでいる。また、非特許文献２には、さらに他の関連技術（Split Horizon with Poisoned Reverse）として、経路情報を受信したインターフェイスに対して、その経路情報のメトリックを１６（無限大）として送信することで、通信ネットワーク内における閉路の発生そのものを防ぐことが記載されている。
【０００４】
また、通信ネットワーク内における閉路を検出するさらに他の関連技術が、例えば、非特許文献３に記載されている。非特許文献３には、通信ネットワークを扱う最大の学会であるＳＩＧＣＯＭＭにおいて、２００７年開催に提案されたＦＣＰ（Failure Carrying Packets）と呼ばれる技術が記載されている。非特許文献３に記載されたＦＣＰは、ある特別なノードが経路表を管理作成し、通信ネットワーク内の全てのノードに配付するという中央集権型手法である。非特許文献３に記載された関連技術を用いれば、一意に経路を決めるので、いわゆるマイクロループの意味での閉路そのものが通信ネットワーク内に発生しないようにすることができる。
【０００５】
また、通信ネットワーク内における閉路を検出するさらに他の関連技術が、例えば、非特許文献４に記載されている。非特許文献４には、インターネットの実効的な規格化団体であるＩＥＴＦにおけるIGP Microloop Analysis & Minimization と呼ばれるサブワーキンググループにおいて提案された技術が記載されている。非特許文献４に記載された関連技術では、ＰＬＳＮ（Path Locking via Safe Neighbors ）とＩＰＦＲＲ（IP Fast ReRoute ）とを組み合わせた手法を用いる。
【０００６】
ここで、ＩＰＦＲＲとは、ノード／リンク故障時の迂回経路の決定方法に関する提案の総称である。この非特許文献４に記載された手法では、以下の手順により、いわゆるマイクロループの意味での閉路を防いでいる。
【０００７】
（１）各ノードは、経路再計算で求められた、主隣接次ＨＯＰノードの安全性を評価する。ここで、主隣接次ＨＯＰノードとは、あるノードに直接隣接するノードのうち、経路表に書かれているノード（つまり、宛先までのリンクコストが最小になるノード）のことである。
【０００８】
（２）該主隣接次ＨＯＰノードが安全であれば、そのノードを次ＨＯＰノードとして用いる。
【０００９】
（３）該主隣接次ＨＯＰノードが安全でなければ、以下のいずれかの処理を行う。
（あ）主隣接次ＨＯＰノード以外の副隣接次ノードがあれば、その副隣接次ノードを新しい安全な主隣接次ＨＯＰノードが見つかるまで用いる。ここで、副隣接次ＨＯＰノードとは、あるノードに直接隣接するノードのうち、経路表に書かれていないノード（つまり、宛先までのリンクコストが最小ではないが、隣接しているノード）のことである。
（い）安全な隣接ＨＯＰノードが見つからなければ（副隣接次ノードもなければ）、これまで用いてきた主隣接次ＨＯＰノードを新しい安全な主隣接次ＨＯＰノードが見つかるまで用いる 
【００１０】
なお、上記でいう「安全性」とは、経路再計算完了後、あるノードＳが任意の宛先ノードへの次ＨＯＰノードとしてノードＮに経路を変更するためのノードＮの条件が、次の条件を満たすことを意味する。すなわち、ノードＮが、経路再計算前の経路でノードＳにとってループが無いノードであって、かつ経路再計算完了後の経路表でノードＮが自ノードより、下流にいるという条件を満たしていることを意味する。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Protocol Analysis for Triggered RIP(Routing Information Protocol)，［平成２２年３月１２日検索］，インターネット<URL:  http://tools.ietf.org/html/rfc2092>
【非特許文献２】Split Horizon ，［平成２２年３月１２日検索］，インターネット<URL:http://tools.ietf.org/html/rfc2453>
【非特許文献３】K. Lakshminarayanan, M. Caesar, M. Rangan, T. Anderson, S. Shenker, and I. Stoica, "Achieving Convergence-free routing using failure-carrying Packets.", In SIGCOMM, 2007, p241-252.
【非特許文献４】Analysis and Minimization of Microloops in Link-state Routing Protocols，［平成２２年３月１２日検索］，インターネット<URL:https://tools.ietf.org/html/draft-ietf-rtgwg-microloop-analysis-01>
【発明の概要】
【発明が解決しようとする課題】
【００１２】
まず、通信ネットワークにおいて、経路計算方法の代表的な手法の１つであるＯＳＰＦ（Open Shortest Path First）を用いて経路再計算を行う場合に、どのようにしてマイクロループが発生するかを説明する。ＯＳＰＦを用いた経路計算は「Ｄｉｊｋｓｔｒａアルゴリズム」に従っており、各ノードが自ノードｉと通信ネットワーク内の全てのノードｊとに対して、両者間のリンクｉ−ｊのコストｄｉｊが最小となるような経路を計算する。そして、自ノードｉをルートとする全域木をつくり、その全域木に基づいて経路表をつくる。この経路表に従って、ノードｉは通信ネットワーク内の任意の宛先に情報を届けることが可能となる。
【００１３】
図５は、通信ネットワークの構成例を示す説明図である。このうち、図５（ａ）は、通信ネットワークが正常に動作している場合を示している。また、図５（ｂ）は、通信ネットワーク内に障害（故障）が発生した場合を示している。また、図５において、各破線７は物理リングを示しており、各物理リンク７に付随して示されている括弧内の数字は、その物理リンク７のコストを示している。また、図５において、各矢印８は、そのようなコスト条件下で、各ノードが自ノードを送信元としてノードＡに情報を伝送する場合の情報の流れ（すなわち、論理リンク）を示している。
【００１４】
例えば、ノードＢに着目すると、ノードＢからノードＡに情報を送るための最小コスト経路がＢ→Ｃ→Ａであることが経路表に書かれているため、ノードＢは、ノードＣに情報を送る。そして、ノードＣは、自ノードの経路表を見て、ノードＢから送られてきた情報がノードＡ宛の情報であるので、その情報をノードＡに送る。また、他のノードＣ，Ｄ，Ｅも同様の処理に従って情報をノードＡに送る。
【００１５】
ＯＳＰＦでは、一定間隔で、リンクやノードが故障していないか否かを調べるための特殊なパケットをノード間でやり取りしている。そのため、もしノード又はリンクに故障が発生すれば、そのノード又はリンクに直接つながっているノードが、どのノード／リンクが故障したかを示す情報をアラームパケットに載せて、隣接ノードに送る。このアラームパケットは、同様にして、他のノードに次々と伝送される。
【００１６】
図５（ｂ）に示すように、リンクＢ−Ｃが故障４０により使用不能になったとする。この場合、ノードＢは、リンクＢ−Ｃが故障したことを検出すると、アラームパケットをノードＤに送るとともに、全ての宛先ノードへの経路再計算を開始する。そのアラームパケットを受信したノードＤは、そのアラームパケットを隣接するノードＥに送る。このようにして、リンクＢ−Ｃの故障は、時間遅れを伴いながら、各ノードに伝えられる。
【００１７】
ここで、ノードＤに着目すると、ノードＢがリンクＢ−Ｃの故障４０を検出して、アラームパケットをノードＤに送り、そのアラームパケットをノードＤが受信して初めて、経路再計算を行うことになる。そのため、その故障が発生してから経路再計算を開始するまでの遷移過程においては、ノードＤは、ノードＡ宛の情報を故障前と同じくノードＢに送ってしまう。しかし、ノードＢはリンクＢ−Ｃが使えないことを既に知っているため、その情報をノードＤに送り返してしまう。つまり、Ｄ→Ｂ→Ｄという狭い領域内で閉路（いわゆるマイクロループ）が発生してしまう。
【００１８】
上記の閉路はノードＤが経路再計算を開始するまで続いてしまい、情報の輻輳を加速的に増大させ、その結果、最悪の場合ノードＢ及びノードＤがともにダウンしてしまう。一方、経路再計算が始まれば、経路再計算が完了するまでに送られてきた情報は全て破棄されてしまうため、多大な情報損失が発生することになる。
【００１９】
非特許文献１〜３には、いずれもループの発生そのものを防ぐ関連技術が記載されており、非特許文献１〜３に記載された関連技術を用いれば、経路が収束した時点での通信ネットワーク内のループの発生をある程度回避可能である。しかし、非特許文献１〜３には、いずれも、いわゆるマイクロループという意味での閉路の発生を防止することに関しては何も言及されていない。また、非特許文献４に記載された関連技術を用いる場合、マイクロループという意味での閉路検出を行うためには、各経路制御手法で用いられている経路表を見なければならず、より自立分散的かつ簡易に閉路を検出できるようにすることが望まれる。
【００２０】
そこで、本発明は、通信ネットワーク内のノードがマイクロループという意味での閉路を自律分散的かつ簡易に検出できる閉路検出方法、閉路検出システム、及び閉路検出用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明による閉路検出方法は、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路を決定した後、通信ネットワークに含まれる所定のノードが、通信ネットワークを所定個のサブネットワークに分割し、分割されたサブネットワークに含まれるノードが、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求め、ノードが、求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断することを特徴とする。
【００２２】
本発明による閉路検出システムは、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、通信ネットワークを所定個のサブネットワークに分割するネットワーク分割手段と、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求めるオイラー標数算出手段と、オイラー標数算出手段が求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断する閉路判断手段とを備えたことを特徴とする。
【００２３】
本発明による閉路検出用プログラムは、コンピュータに、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、通信ネットワークを所定個のサブネットワークに分割する処理と、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求める処理と、求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断する処理とを実行させるためのものである。
【発明の効果】
【００２４】
本発明によれば、通信ネットワーク内のノードがマイクロループという意味での閉路を自律分散的かつ簡易に検出することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明による閉路検出方法を用いた通信ネットワークの必要最小のネットワーク構成の例を示す構成図である。
【図２】閉路検出システムの機能構成例を示すブロック図である。
【図３】通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の一例を示す流れ図である。
【図４】通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の流れを説明するための説明図である。
【図５】通信ネットワークの構成例を示す説明図である。
【図６】第２の実施形態における通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の一例を示す流れ図である。
【図７】図５に示す構成の通信ネットワークにおいて、通信ネットワークの技術分野において代表的な経路制御手法であるＯＳＰＦを用いて決定されたリンク障害発生前の全てのルータに関する全域木を示す説明図である。
【図８】図５示す構成の通信ネットワークにおいて、通信ネットワークの技術分野において代表的な経路制御手法であるＯＳＰＦを用いて決定されたリンク障害発生後のルータＢ及びルータＤに関する全域木を示す説明図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態を図面を参照して説明する。まず、本発明による閉路検出システムの概要について説明する。通信ネットワーク等のようにノードとリンクとで構成され、情報等をある送信元からある宛先の送信先に対して送信するための経路制御を行うネットワークにおいて、何らかの故障や障害等により経路を再計算しなければならなくなる場合がある。そのような場合に、その経路再計算が全てのノードにおいて完了するまでの遷移過程において、マイクロループという意味での閉路が発生し、その結果、情報損失や情報の輻輳が引き起こされるという問題がある。本発明は、マイクロループという意味での閉路を各ノードで自律分散的かつ簡易に検出する閉路検出方法に関する。
【００２７】
まず、閉路を自律分散的かつ簡易に検出できるようにするために、閉路検出システムは、グラフの連結性を理解する指標として知られているオイラー標数を用いる。この場合、１次元複体（つまり、点と線分によって構成されるグラフについてのオイラー標数）は、グラフのノード集合をＶとし、リンク集合をＥとし、それぞれの濃度（要素数）をｖ，ｅとすると、次の式（１）で求められる。
【００２８】
オイラー標数＝ｖ−ｅ      ・・・式（１）
【００２９】
従って、グラフが木構造である場合には、オイラー標数は必ず“１”になり、閉路を含む場合には、オイラー標数は“０”以下になる。そのため、閉路検出システムは、通信ネットワークについてオイラー標数を求め、求めたオイラー標数の値が０以下であるか否かを判定することによって、通信ネットワーク内に閉路が発生しているか否かを判定できる。
【００３０】
既存の経路制御手法を用いて経路制御を行う場合には、閉路の発生を防ぎ、かつ任意の宛先までの情報の到達性を重複無く実現するために、木構造の経路表を作成するので、オイラー標数をマイクロループという意味での閉路検出に適用することは効果的である。
【００３１】
なお、上記に説明したオイラー標数は、例えば、文献Ａ（瀬山士郎（著），“トポロジー：柔らかい幾何学”，日本評論社，増補版，２００３年１１月）に記載されている。
【００３２】
また、閉路検出システムにおいて、さらに、マイクロループという意味での閉路検出を行う時間を短縮できるようにすることが望ましい。そのため、閉路検出システムは、ネットワーク階層以外の階層であって、かつ通信ネットワークＮＷ内の様々な情報を入手することができるプロトコルをネットワーク構造の検出のために用いることで、マイクロループという意味での閉路の発生時間を可能な限り低減する。なお、マイクロループという意味での閉路検出は、ネットワーク構造の検出の一部として実行される。
【００３３】
以下、閉路検出システムの処理手順の概要について説明する。
【００３４】
（手順１）まず、閉路検出システムにおいて、通信ネットワーク内の各ノードは、常に適当な時間間隔を通信ネットワーク内で統一的に、あるいは各ノードが自律分散的に設定する。また、各ノードは、自身に論理リンクで接続されている全ての方向のリンクについて、何ＨＯＰ先のノードの論理リンク情報を得るかを自律分散的に決定する。そして、各ノードは、そのようにして得たノード集合Ｖを自身のもつ記憶領域に記憶させる。ここで、各方向によって何ＨＯＰ先のノードまでの論理リンク情報を得るかは同じであってもよいし、異なっていてもよい。なお、論理リンクとは、通信ネットワークが用いている経路制御手法によって決定されたリンクであって、あるノードからその他の全てのノードに情報を送信するための経路を構成するリンクのことである。
【００３５】
（手順２）次に、通信ネットワーク内の各ノードは、ネットワーク階層以外の階層であって、かつ通信ネットワーク内の様々な情報を入手することができるプロトコルを用いて、次の処理を行う。すなわち、各ノードは、常に適当な時間間隔で、上記の（手順１）で決定したノード集合Ｖに含まれる、自身を除く他の全てのノードに対して、パケットを送出（送信）する。このパケットは、ノード情報（他の各ノードと論理リンクで接続されていて、かつノード集合Ｖに含まれるノード数）及び論理リンク情報（他の各ノードのもつ論理リンクの両端のルータ番号、向き及び本数）を要求するためのものである。そして、各ノードは、その送信したパケットに対して、各相手ノードから論理リンク情報を受け取る（受信する）。
【００３６】
（手順３）次に、各ノードは、ノード集合Ｖで得られるノード数と上記の（手順２）で得られたリンク情報とに基づいて、オイラー標数を計算する。そして、各ノードは、求めたオイラー標数に基づいて、その限定された通信ネットワークにおけるトポロジーが木構造であるのか、マイクロループという意味での閉路を含む状態であるかを判定する。つまり、各ノードは、オイラー標数が“１”であるのか、オイラー標数が“０”以下であるのか、を求める。
【００３７】
（手順４）そして、各ノードは、マイクロループという意味での閉路が見つかった場合、その通信ネットワークで用いている経路制御手段（例えば、所定のノードや管理サーバ）に通知する。
【００３８】
実施形態１．
次に、本発明の第１の実施形態について図面を参照して説明する。図１は、本発明による閉路検出方法を用いた通信ネットワークの必要最小のネットワーク構成の例を示す構成図である。図１に示すように、本実施形態では、一例として、通信ネットワークが２つのルータ１Ａ，１Ｂを含む場合について説明する。なお、通信ネットワークは、３以上のルータを含んでいてもよい。なお、本実施形態において、閉路検出システムは、２つのルータ１Ａ，１Ｂを含む通信ネットワークによって実現される。また、本実施形態において、ノードは、ルータ１Ａ，１Ｂによって実現される。
【００３９】
図１に示すように、本実施形態では、２個のルータ１Ａ，１Ｂ間には、物理リンク７が１本張られている。また、ルータ１Ａ，１Ｂ同士は、通信ネットワーク内の各ノードが論理リンク数を取得するための手法として、既存手法であるＳＮＭＰ（Simple Network Management ）プロトコルを用いて、論理リンク数の情報を取得（他のノードから受信）する。
【００４０】
なお、上記に示したＳＮＭＰは、例えば、文献Ｂ（インターネット<URL:http://www.ietf.org/rfc/rfc1157.txt>，<URL:http://www.ietf.org/rfc/rfc1901.txt>，<URL:http://www.ietf.org/rfc/rfc2571.txt>）に記載されている。
【００４１】
また、通信ネットワークは、経路制御手法としてＯＳＰＦを用いて経路制御を行うものとする。また、図１に示すように、ＯＳＰＦを用いて左側のルータ１Ａから右側のルータ１Ｂの向きに論理リンク８が張られているものとする。論理リンク８とは、すなわち、図１に示す矢印の向きに従って、各ルータ１Ａ，１Ｂが情報を送信する経路を構成するリンクのことである。
【００４２】
また、通信ネットワークにおいて、ノードに関する様々な情報及び論理リンクに関する様々な情報は、通信ネットワーク内に存在するルータや物理／論理リンク等に関する様々な情報を保持するＭＩＢ−２と呼ばれるデータベース５Ａ，５Ｂに通常蓄積されている。なお、ＭＩＢ−２と呼ばれるデータベース５Ａ，５Ｂは、図１に示すように、具体的には、各ルータ１Ａ，１Ｂが備える。
【００４３】
なお、上記に示したＭＩＢ−２は、例えば、文献Ｃ（インターネット<URL:http://www.ietf.org/rfc/rfc1155.txt>，<URL:http://www.ietf.org/rfc/rfc1157.txt>，<URL:http://www.ietf.org/rfc/rfc1213.txt>）に記載されている。
【００４４】
本実施形態では、データベース５Ａ，５Ｂが記憶するＭＩＢ−２情報のうち、ノード情報及び論理リンク情報は、ネットワーク階層におけるトポロジー確認及び更新パケット（ＯＳＰＦの場合、Ｈｅｌｌｏパケット）の送信間隔よりも十分に短い時間間隔の範囲で、定期的、不定期又は何らかの更新通知情報に基づいて更新される。なお、ノード情報とは、そのノード自身と論理リンクで接続されているノード数を示す情報である。また、論理リンク情報は、そのノード自身がもつ論理リンクの両端のルータ番号、向き及び本数を示す情報である。
【００４５】
以上に説明したように、本実施形態では、既存の通信ネットワークで既に用いられている手法を用いた経路制御が行われ、ルータ１Ａ，１Ｂが構成されている。
【００４６】
次に、各ルータ１Ａ，１Ｂの構成について説明する。なお、以下では、一例として、２つのルータのうちのルータ１Ａの構成について説明するが、ルータ１Ｂの構成も同様であるので、説明を省略する。
【００４７】
図１に示すように、ルータ１Ａは、通信部２Ａ、制御部３Ａ、計算部４Ａ、データベース５Ａ、及び記憶部６Ａを含む。
【００４８】
通信部２Ａは、制御部３Ａの制御に従って、物理リンク７を介して、ルータ１Ｂと各種情報を送受信する機能を備える。
【００４９】
制御部３Ａは、プログラム制御により動作し、ルータ情報（ノード情報）及び論理リンク情報を、ＳＮＭＰを用いて取得するための各種処理を実行する機能を備える。具体的には、制御部３Ａは、通信部２Ａを用いて、ルータ情報及び論理リンク情報を要求するためのパケットを、物理リンク７を介してルータ１Ｂに送信する。ルータ情報及び論理リンク情報をルータ１Ｂから受信する。逆に、制御部３Ａは、ルータ１Ｂからルータ情報及び論理リンク情報を要求するためのパケットを受信した場合には、データベース５ＡからＭＩＢ−２情報としてのルータ情報（ノード情報）及び論理リンク情報を抽出する。そして、制御部３Ａは、抽出したルータ情報及び論理リンク情報を、通信部２Ａを用いて、物理リンク７を介してルータ１Ｂに送信する。
【００５０】
計算部４Ａは、制御部３Ａが取得したルータ数（ルータ情報）及び論理リンク数（論理リンク情報）に基づいて、オイラー標数を計算する機能を備える。また、計算部４Ａは、算出したオイラー標数を記憶部６Ａに記憶させる機能を備える。なお、計算部４Ａは、オイラー標数を算出するための独立の処理回路として実現されてもよいし、制御部３Ａがプログラムに従って処理を実行することによって実現されてもよい。
【００５１】
データベース５Ａは、具体的には、ルータ１Ａが備える磁気ディスク装置やメモリ等の記憶装置によって実現される。データベース５Ａは、ＭＩＢ−２情報として、例えば、ノード情報や論理リンク情報を記憶する。
【００５２】
記憶部６Ａは、具体的には、ルータ１Ａが備える磁気ディスク装置やメモリ等の記憶装置によって実現される。記憶部６Ａは、計算部４Ａによるオイラー標数の計算結果を蓄積する。
【００５３】
次に、本発明による閉路検出システムの機能構成について説明する。図２は、閉路検出システムの機能構成例を示すブロック図である。図２に示すように、閉路検出システムは、ネットワーク分割手段１１と、オイラー標数算出手段１２と、閉路判断手段１３とを含む。
【００５４】
ネットワーク分割手段１１は、具体的には、通信ネットワーク内の所定のノード（ルータ）が備えるプログラムに従って動作する制御部によって実現される。ネットワーク分割手段１１は、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、通信ネットワークを所定個のサブネットワークに分割する機能を備える。
【００５５】
オイラー標数算出手段１２は、具体的には、通信ネットワーク内の各ノード（ルータ）が備えるプログラムに従って動作する制御部によって実現される。なお、オイラー標数算出手段１２を、通信ネットワーク内の全てのノード（ルータ）が備えるのではなく、通信ネットワーク内の所定個数のノード（ルータ）が備えるようにしてもよい。オイラー標数算出手段１２は、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求める機能を備える。具体的には、また、オイラー標数算出手段１２は、サブネットワークに含まれるノード数をＮとしたときに、サブネットワークに含まれるノードを起点として、最大でＮ−１ホップ先までのノード集合ＶＮと、両端ノードがノード集合ＶＮに含まれるリンクとについて、１次元複体までのオイラー標数を求める。
【００５６】
閉路判断手段１３は、具体的には、通信ネットワーク内の各ノード（ルータ）が備えるプログラムに従って動作する制御部によって実現される。なお、閉路判断手段１３を、通信ネットワーク内の全てのノード（ルータ）が備えるのではなく、通信ネットワーク内の所定個数のノード（ルータ）が備えるようにしてもよい。閉路判断手段１３は、オイラー標数算出手段１２が求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断する機能を備える。具体的には、閉路判断手段１３は、求めたオイラー標数の値が１である場合には、サブネットワーク内に閉路が含まれないと判断する。また、閉路判断手段１３は、求めたオイラー標数の値が０以下である場合には、サブネットワーク内に閉路が含まれると判断する。
【００５７】
また、通信ネットワーク内のノード（ルータ）は、サブネットワークについての１次元複体までのオイラー標数の値、サブネットワーク内での閉路の存在の有無、及びサブネットワーク内での閉路の存在箇所を、通信ネットワーク内で経路制御を行う所定の経路制御手段（例えば、所定のノードや管理サーバ）に通知する機能を備える。
【００５８】
また、本実施形態において、通信ネットワークは、同じ大きさのサブネットワークに分割され、又は異なる大きさのサブネットワークに分割されていてもよい。
【００５９】
また、本実施形態において、通信ネットワークは、各サブネットワークが互いに重なるように分割され、又は各サブネットワークが互いに重ならないように分割されていてもよい。
【００６０】
また、本実施形態において、通信ネットワーク内の各ノードは、オイラー標数を求めるために必要な情報の取得間隔を、ノード間で統一的に決定する機能を備える。また、通信ネットワーク内の各ノードは、オイラー標数を求めるために必要な情報の取得間隔を、自律分散的に個々に決定するようにしてもよい。
【００６１】
また、本実施形態において、通信ネットワーク内のノードは、オイラー標数の算出結果を、所定の記憶領域（例えば、記憶部６Ａ，６Ｂ）に蓄積する機能を備える。
【００６２】
また、本実施形態において、通信ネットワーク内のノードは、オイラー標数を求めるために用いる通信手段として、ＳＮＭＰに従って通信を行う通信手段を用いる。
【００６３】
なお、本実施形態において、ルータ１Ａ，１Ｂの記憶装置は、通信ネットワーク内におけるマイクロループ等の閉路を検出するための各種プログラムを記憶している。例えば、ルータ１Ａ，１Ｂの記憶装置は、コンピュータに、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、通信ネットワークを所定個のサブネットワークに分割する処理と、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求める処理と、求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断する処理とを実行させるための閉路検出用プログラムを記憶している。
【００６４】
次に、動作について説明する。図３は、通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の一例を示す流れ図である。また、図４は、通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の流れを説明するための説明図である。なお、本実施形態では、図４において、（１）（２）（３）・・・の順に処理が遷移する。
【００６５】
本実施形態では、前提として、経路制御手法ＯＳＰＦを用いて経路制御を行うのとする。また、通信ネットワーク内の各ルータ１Ａ，１Ｂ間の論理経路（論理リンク）８が、図１に示すように、左側のルータ１Ａから右側のルータ１Ｂの向きに決定されている状態から、処理をスタートするものとする。
【００６６】
まず、図４（１）に示すように、左側のルータ１Ａにおいて、制御部３Ａは、常に適当な時間間隔を、通信ネットワーク内で統一的に、あるいは各ノードにおいて自律分散的に設定する（ステップＳ１１）。すなわち、制御部３Ａは、後述するステップＳ１３でＳＮＭＰパケットＰＳを送信する時間間隔を設定する。
【００６７】
次に、制御部３Ａは、ルータ１Ａ自身に論理リンク８で接続されている全ての方向について、ルータ１Ａ自身から近い順に、何ＨＯＰ先のルータのノード情報及び論理リンク情報を得るかを、既にＯＳＰＦを用いて得られている全域木あるいは経路表に基づいて自律分散的に決定する。そして、図４（２）に示すように、制御部３Ａは、このようにして決定したルータ集合Ｖを、ルータ１Ａ自身が備える記憶部６Ａに蓄積させる（ステップＳ１２）。本実施形態では、ルータ１Ａ，１Ｂは左右２個しかないので、制御部３Ａは、ルータ集合Ｖとして左右のルータ１Ａ，１Ｂを含む集合を設定する。
【００６８】
次に、図４（３）に示すように、左側のルータ１Ａにおいて、制御部３Ａは、ステップＳ１１で設定した適当な時間間隔で、ＳＮＭＰプロトコルを用いて、ステップＳ１２で決定したルータ集合Ｖに含まれるルータ１Ａ自身を除く全てのルータにＳＮＭＰパケットＰＳを送信する（ステップＳ１３）。すなわち、制御部３Ａは、右側のルータ１Ｂに、ノード情報及び論理リンク情報を要求するためのＳＮＭＰパケットＰＳを送信する。なお、本実施形態では、論理リンクは、図１に示す論理リンク８の１本のみである。
【００６９】
次に、図４（４）に示すように、右側のルータ１Ｂは、左側のルータ１Ａからノード情報及び論理リンク情報を要求するためのＳＮＭＰパケットＰＳを受信する。すると、右側のルータ１Ｂは、「両端がルータ集合Ｖに含まれている該論理リンク８の数＝１」という情報を含む返信用のＳＮＭＰパケットＰＲを生成して、左側のルータ１Ａに対して送信する（ステップＳ１４）。すなわち、右側のルータ１Ｂは、左側のルータ１Ａの要求に応じて、ノード情報及び論理リンク情報を含むＳＮＭＰパケットを返信する。
【００７０】
次に、図４（５）に示すように、左側ルータ１Ａは、右側のルータ１Ｂから返信パケットＰＲを受信する。すると、左側のルータ１Ａの計算部４Ａは、パケットを受信した順に、逐次的にルータ集合Ｖ、ノード情報及び論理リンク情報を用いてオイラー標数を計算する。そして、計算部４Ａは、算出したオイラー標数に基づいて、その限定された通信ネットワークにおけるトポロジーが木構造であるか、マイクロループという意味での閉路を含む状態であるかを判定する（ステップＳ１５）。すなわち、計算部４Ａは、算出したオイラー標数が“１”であるか、オイラー標数が“０”以下であるかを判定する。算出したオイラー標数が１であれば、計算部４Ａは、通信ネットワークにおけるトポロジーが木構造であると判定する。また算出したオイラー標数が０以下であれば、計算部４Ａは、マイクロループが発生していると判定する。
【００７１】
ここで、通信ネットワーク内にノードが多数存在する場合には、返送されるノード情報及び論理リンク情報の到着時間には、物理的な距離等によって時間差が生じる。そのため、受信したパケットＰＲを受信した順に逐次的にオイラー標数を計算してマイクロループの有無を判定することで、どこでマイクロループという意味での閉路が発生しているかを素早く検知可能になる。
【００７２】
次いで、図４（６）に示すように、左側のルータ１Ａにおいて、計算部４Ａは、ステップＳ１５で求めたオイラー標数値を、ルータ１Ａ自身の記憶部６Ａに記憶させる（ステップＳ１６）。また、図４（７）に示すように、ルータ１Ａは、オイラー標数が０以下であると判定し、マイクロループという意味での閉路Ｂ→Ｄ→Ｂが見つかった場合、その通信ネットワークで用いられている経路制御手段（例えば、所定のノードや管理サーバ）に、マイクロループが発生している旨の通知情報を通知（送信）する（ステップＳ１７）。
【００７３】
以上のように、本実施形態によれば、通信ネットワークについてオイラー標数を求め、求めたオイラー標数の値が０以下であるか否かを判定することによって、通信ネットワーク内に閉路が発生しているか否かを判定する。従って、通信ネットワーク内のノードがマイクロループという意味での閉路を自律分散的かつ簡易に検出することができる。
【００７４】
また、例えば、非特許文献４に記載された関連技術を用いる場合であっても、経路制御を行うネットワーク階層（通信ネットワークの階層構造の基準であるＯＳＩ参照モデルにおいて、Ｌａｙｅｒ３と呼ばれる階層）でネットワーク構造の検出をも行うためには、経路計算が収束するまでに時間がかかる。そのため、非特許文献４に記載された関連技術では、マイクロループという意味での閉路が発生している時間が長くなってしまうという課題もある。
【００７５】
これに対して、本実施形態によれば、ネットワーク階層以外の階層であって、かつ通信ネットワーク内の様々な情報を入手することができるプロトコル（具体的には、ＳＮＭＰプロトコル）を用いて、通信ネットワーク内の閉路検出を行う。そのため、マイクロループという意味での閉路を検出する時間が短縮可能とすることができる。また、本実施形態によれば、通信ネットワーク内の複数箇所で故障や障害が発生した場合であっても、マイクロループという意味での閉路を検出可能とすることができる。
【００７６】
実施形態２．
次に、本発明の第２の実施形態について図面を参照して説明する。なお、本実施形態では、閉路検出方法を用いた通信ネットワークは、図５と同様のネットワーク構成であるものとする。図５（ａ）に示すように、本実施形態では、通信ネットワークは、合計５個のルータＡ，Ｂ，Ｃ，Ｄ，Ｅを含む。また、それら各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅ間は、６本の物理リンク７を介して接続される。本例では、図５（ａ）に示すように、ルータＡ−ルータＢ間と、ルータＡ−ルータＣ間と、ルータＢ−ルータＣ間と、ルータＢ−ルータＤ間と、ルータＣ−ルータＥ間と、ルータＤ−ルータＥ間とにそれぞれ物理リンク７が存在するものとする。
【００７７】
また、図５（ａ）において、物理リンク７に添えて示されている数字は、物理リンク７のコスト値を意味している。なお、実際の通信ネットワークでは、同じ物理リンク７であっても、論理リンク８の向きによってリンクコストが非対称に与えられることが多いが、ここでは説明の簡易化のため、論理リンク８の向きにかかわらず、物理リンク７のリンクコストが対象であるものとして説明する。
【００７８】
なお、本実施形態において、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、図１に示したルータ１Ａ，１Ｂの構成と同様である。
【００７９】
次に、動作について説明する。図６は、第２の実施形態における通信ネットワーク内におけるマイクロループ等の閉路を検出する処理の一例を示す流れ図である。また、図７は、図５に示す構成の通信ネットワークにおいて、通信ネットワークの技術分野において代表的な経路制御手法であるＯＳＰＦを用いて決定されたリンク障害発生前の全てのルータに関する全域木を示す説明図である。また、図８は、図５示す構成の通信ネットワークにおいて、通信ネットワークの技術分野において代表的な経路制御手法であるＯＳＰＦを用いて決定されたリンク障害発生後のルータＢ及びルータＤに関する全域木を示す説明図である。
【００８０】
図７及び図８において、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅ間を結んでいる矢印付きの線は、それぞれ、ＯＳＰＦを用いて決定された論理リンク８を示している。論理リンク８とは、既に説明したように、この矢印付きの線の方向に従って、各ルータ１が情報を送信するための経路を構成するリンクのことである。なお、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、図７に示すルータＢの全域木や、図８に示すルータＤの全域木のように、それぞれルータ毎に全域木を作成している。そして、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、それらの全域木に基づいて、論理リンク８を作成する。
【００８１】
以下、主として、ルータＢとルータＤとの動作に焦点を絞って説明を行い、さらにルータＢ，Ｃ，Ｄ，ＥからルータＡに情報を送信するための経路に絞って説明する。
【００８２】
本実施形態では、図５（ａ）に示すように、通信ネットワーク上に障害や故障が無く、経路制御手法ＯＳＰＦに従って経路制御の動作を行い、通信ネットワーク内の各ルータ間の論理経路（論理リンク）８が図７のように決定されている状態から、処理をスタートするものとする。
【００８３】
まず、図４（１）と同様に、通信ネットワーク内のルータＡ，Ｂ，Ｃ，Ｄ，Ｅにおいて、第１の実施形態と同様の処理に従って、制御部３Ａは、後述するステップＳ２３でＳＮＭＰパケットＰＳを送信する時間間隔を設定する（ステップＳ２１）。この場合、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅの制御部３Ａは、ネットワーク階層でのトポロジー確認及び更新パケット（ＯＳＰＦの場合はＨｅｌｌｏパケット）の送信間隔よりも十分に短い時間間隔の範囲で、適当な時間間隔を通信ネットワーク内で統一的に、あるいは各ノードにおいて自律分散的に設定する。
【００８４】
次に、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅの制御部３Ａは、各ルータ自身に論理リンク８で接続されている全ての方向について、各ルータ自身から近い順に、何ＨＯＰ先のルータの論理リンク情報を得るかを、既にＯＳＰＦを用いて得られている全域木あるいは経路表に基づいて自律分散的に決定する。そして、図４（２）と同様に、制御部３Ａは、このようにして決定したルータ集合Ｖを、各ルータ自身が備える記憶部６Ａに蓄積させる（ステップＳ２２）。
【００８５】
図７に示す例では、ルータＢは、ルータ集合Ｖ＿Ｂとして、｛ルータＢ、ルータＣ、ルータＤ、ルータＡ｝を含む集合を選択する。また、ルータＤは、ルータ集合Ｖ＿Ｄとして、｛ルータＤ、ルータＢ、ルータＥ｝を含む集合を選択する。
【００８６】
まず、通信ネットワークが正常動作している時（すなわち、ＯＳＰＦを用いて各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅそれぞれの全域木と経路表とが確定している状態）の動作について説明する。
【００８７】
図４（３）と同様に、通信ネットワーク内のルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、ステップＳ２１で設定した適当な時間間隔で、ＳＮＭＰプロトコルを用いて、ステップＳ２２で決定したルータ集合Ｖに含まれる各ルータ自身を除く全てのルータにＳＮＭＰパケットＰＳを送信する（ステップＳ２３）。すなわち、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、ルータ集合Ｖとともにノード情報及び論理リンク情報を要求するためのＳＮＭＰパケットＰＳを送信する。具体的には、ルータＢは、ルータＣ、ルータＤ、及びルータＡに対してパケットＰＳ＿Ｂを送信する。また、ルータＤは、ルータＢ、及びルータＥに対してＰＳ＿Ｂを送信する。
【００８８】
次に、図４（４）と同様に、各ルータは、ＳＮＭＰパケットＰＳを受信する。すると、各ルータは、その送信元ルータに対して、各ルータ自身が有する全域木において、下流方向にあるルータとのノード情報及び論理リンク情報に関するノード情報及び論理リンク情報を含む返信用のＳＮＭＰパケットＰＲを生成して送信する（ステップＳ２４）。すなわち、各ルータは、各ルータ自身が有する全域木において、下流方向にあるルータに、受信したＳＮＭＰパケットＰＳを転送する。このような動作を、ＳＮＭＰパケットＰＳを受信したルータ全てが行う。
【００８９】
本例では、ルータＣは、ルータＣ自身がルータＢから受信したＰＳ＿Ｂパケットを、ルータＣ自身が有する全域木において、下流方向にあるルータＡに転送するとともに、論理リンクＢ→Ｃが１本あるという論理リンク情報をルータＢに対する返信用パケットＰＲ＿Ｃに付加して返信する。また、ルータＡは、ルータＣから転送されたＰＳ＿Ｂパケットに含まれるルータ集合Ｖ＿Ｂ情報に基づいて、ルータＡ自身が有する全域木において、ルータＡ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｂに無いことを知る。そのため、ルータＡは、論理リンクＣ→Ａが１本あるという論理リンク情報とともに、その旨をルータＢに対する返信用パケットＰＲ＿Ａに付加してルータＣに送信する。
【００９０】
また、ルータＤは、ルータＡと同様に、ルータ集合Ｖ＿Ｂ情報とルータＤ自身が有する全域木とに基づいて、ルータＤ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｂに無いことを知る。そのため、ルータＤは、論理リンクＢ→Ｄが１本あるという論理リンク情報とともに、その旨をルータＢに対する返信用パケットＰＲ＿Ｄに付加してルータＢに送信する。
【００９１】
一方、ルータＤからＳＮＭＰパケットＰＳ＿Ｄを受信すると、ルータＢは、受信したＰＳ＿Ｄパケットのルータ集合Ｖ＿Ｄ情報に基づいて、ルータＢ自身が有する全域木において、ルータＢ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｄに無いことを知る。そのため、ルータＢは、論理リンクＤ→Ｂが１本あるという論理リンク情報とともに、その旨をルータＤに対する返信用パケットＰＲ＿Ｄに付加してルータＣに送信する。
【００９２】
また、ルータＤからＳＮＭＰパケットＰＳ＿Ｄを受信すると、ルータＥは、受信したＰＳ＿Ｄパケットのルータ集合Ｖ＿Ｄ情報に基づいて、ルータＥ自身が有する全域木において、ルータＥ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｄに無いことを知る。そのため、ルータＥは、論理リンクＤ→Ｅが１本あるという論理リンク情報とともに、その旨をルータＤに対する返信用パケットＰＲ＿Ｅに付加してルータＣに送信する。
【００９３】
次に、図４（５）と同様に、ルータＢ，Ｄは、ルータＢ，Ｄ自身がノード情報及び論理リンク情報を要求するために送信したＳＮＭＰパケットＰＳに対して、その送信先のルータから返信パケットＰＲを受信する。すると、ルータＢ，Ｄは、パケットを受信した順に、逐次的に、ステップＳ２４で得られたノード情報及び論理リンク情報を用いて、オイラー標数を計算する。そして、ルータＢ，Ｄは、算出したオイラー標数に基づいて、その限定された通信ネットワークにおけるトポロジーが木構造であるか、マイクロループという意味での閉路を含む状態であるかを判定する（ステップＳ２５）。すなわち、ルータＢ，Ｄは、算出したオイラー標数が“１”であるか、オイラー標数が“０”以下であるかを判定する。算出したオイラー標数が１であれば、ルータＢ，Ｄは、通信ネットワークにおけるトポロジーが木構造であると判定する。また算出したオイラー標数が０以下であれば、ルータＢ，Ｄは、マイクロループが発生していると判定する。
【００９４】
ここで、一般に、返信されるノード情報及び論理リンク情報の到着時間には、ルータ間の物理的な距離等によって時間差が生じる。そのため、受信したパケットＰＲを受信した順に逐次的にオイラー標数を計算してマイクロループの有無を判定することで、どこでマイクロループという意味での閉路が発生しているかを素早く検知可能になる。
【００９５】
ルータＢの場合、オイラー標数計算は、以下のように行われる。まず、ルータＢは、ルータ数がルータＢ，Ｃ，Ｄ，Ａの４個であると求め、また論理リンク数がルータＢ→ルータＣ、ルータＢ→ルータＤ、ルータＣ→ルータＡの３本であると求める。そして、ルータＢは、オイラー標数Ｂを、以下の式（２）のように算出する。
【００９６】
オイラー標数Ｂ＝｛ルータ数＝４｝−｛論理リンク数＝３｝＝１      ・・・式（２）
【００９７】
この場合、ルータＢは、オイラー標数を“１”と求めたので、オイラー標数が０以下ではなく、ルータＢの経路木の中のルータ集合Ｖ＿Ｂ内には閉路が無いと判定することができる。
【００９８】
ルータＤの場合、オイラー標数計算は、以下のように行われる。まず、ルータＤは、ルータ数がルータＤ，Ｂ，Ｅの３個であると求める。また、ルータＤは、論理リンク数がルータＤ→ルータＢ、ルータＤ→ルータＥの２本であると求める。そして、ルータＤは、オイラー標数Ｂを、以下の式（３）のように算出する。
【００９９】
オイラー標数Ｂ＝｛ルータ数＝３｝−｛論理リンク数＝２｝＝１      ・・・式（３）
【０１００】
この場合、ルータＤは、オイラー標数を“１” と求めたので、オイラー標数が０以下ではなく、ルータＤの経路木の中のルータ集合Ｖ＿Ｄ内には閉路が無いと判定することができる。
【０１０１】
次いで、図４（６）と同様に、ルータＢとルータＤとは、それぞれステップＳ２５で求めたオイラー標数値を、ルータＢ，Ｄ自身の記憶部６Ａに記憶させる（ステップＳ２６）。また、図４（７）と同様に、ルータＢとルータＤとは、それぞれ、ルータＢ，Ｄ自身の全域木の中のルータ集合Ｖ＿Ｂ，Ｖ＿Ｄ内には閉路が無いことを示す通知情報を、通信ネットワークが用いている経路制御手段（例えば、所定のノードや管理サーバ）に通知（送信）する（ステップＳ２７）。
【０１０２】
以上の処理に従って、正常動作時のマイクロループ検出が実行される。
【０１０３】
ここで、このように通信ネットワークが正常動作しているときに、ある時刻で図５（ｂ）に示すように、故障４０が発生し、物理リンクＢ−Ｃが切断されたものとする。この場合、ルータＢとルータＤとの全域木は、図８に示すようになる。図８において、点線の矢印付きの線は、経路制御手法による故障検出パケットが到着する時間に遅延があるために、決定されない論理経路（論理リンク）８を示している。
【０１０４】
図４（３）と同様に、通信ネットワーク内のルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、ステップＳ２１で設定した適当な時間間隔で、ＳＮＭＰプロトコルを用いて、ステップＳ２２で決定したルータ集合Ｖに含まれる各ルータ自身を除く全てのルータにＳＮＭＰパケットＰＳを送信する（ステップＳ３３）。すなわち、各ルータＡ，Ｂ，Ｃ，Ｄ，Ｅは、ルータ集合Ｖとともにノード情報及び論理リンク情報を要求するためのＳＮＭＰパケットＰＳを送信する。具体的には、ルータＢは、ルータＣ、ルータＤ、及びルータＡに対してパケットＰＳ＿Ｂを送信する。また、ルータＤは、ルータＢ、及びルータＥに対してＰＳ＿Ｂを送信する。
【０１０５】
次に、図４（４）と同様に、各ルータは、ＳＮＭＰパケットＰＳを受信する。すると、各ルータは、その送信元ルータに対して、各ルータ自身が有する全域木において、下流方向にあるルータとのノード情報及び論理リンク情報に関するノード情報及び論理リンク情報を含む返信用のＳＮＭＰパケットＰＲを生成して送信する（ステップＳ３４）。すなわち、各ルータは、各ルータ自身が有する全域木において、下流方向にあるルータに、受信したＳＮＭＰパケットＰＳを転送する。このような動作を、ＳＮＭＰパケットＰＳを受信したルータ全てが行う。
【０１０６】
まず、ルータＢを基点とする動作について説明する。ステップＳ３４の段階では、ＯＳＰＦによる障害検知がルータＢにはまだ通知されていないので、ルータＢに関するＯＳＰＦによる経路再計算は、まだ完了していない。そのため、ルータＢの全域木は、図７に示す全域木のままの状態である。よって、ルータＢは、ノード集合Ｖ＿ＢにあるルータＣ，Ｄ，Ａに対して、それぞれＰＳ＿Ｂパケットを送信することになる。
【０１０７】
しかし、ルータＢとルータＣとの間のリンクＢ→Ｃが故障４０により切断されているので、ルータＣとルータＡとにはＰＳ＿Ｂパケットが届かない。ＯＳＰＦを用いた経路再計算を完了し、ルータＡ，Ｂ．Ｃ，Ｄ，Ｅの全てのルータの全域木及び経路表が確定されない限り、ルータＢには、返信パケットＰＲ＿Ｃ，ＰＲ＿Ａは帰ってこないことになる。
【０１０８】
一方、ルータＤについては、論理リンクＢ→Ｄは正常ではあるが、ＯＳＰＦによる障害検知がルータＤにはまだ通知されていないので、ルータＤに関するＯＳＰＦによる経路再計算は、まだ完了していない。そのため、ルータＤの全域木は、図８に示す全域木のままの状態である。ルータＢから送信されたＰＳ＿Ｂパケットを受信すると、ルータＤは、受信したＰＳ＿Ｂパケットに含まれるルータ集合Ｖ＿Ｂと、ルータＤ自身が有する全域木とに基づいて、ルータＤ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｂに無いことを知る。そのため、ルータＤは、論理リンクＢ→Ｄが１本あるという論理リンク情報とともに、その旨をルータＢに対する返信用パケットＰＲ＿Ｄに付加してルータＢに送信する。
【０１０９】
次に、ルータＤを基点とする動作について説明する。ルータＤは、ノード集合Ｖ＿Ｄに含まれるルータＢ，ＥにＰＳ＿Ｄパケットを送信する。ルータＢは、ルータＤから受信したＰＳ＿Ｄパケットに含まれるルータ集合Ｖ＿Ｄと、ルータＢ自身が有する全域木とに基づいて、ルータＢ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｄには無いことを知る。そのため、ルータＢは、論理リンクＤ→Ｂが１本あるという論理リンク情報とともに、その旨をルータＤに対する返信用パケットＰＲ＿Ｄに付加してルータＤに送信する。ルータＥは、ルータＤから受信したＰＳ＿Ｄパケットに含まれるルータ集合Ｖ＿Ｄと、ルータＥ自身が有する全域木とに基づいて、ルータＥ自身の全域木の下流方向のルータがルータ集合Ｖ＿Ｄに無いことを知る。そのため、ルータＥは、論理リンクＤ→Ｅが１本あるという論理リンク情報とともに、その旨をルータＤへの返信用パケットＰＲ＿Ｅに付加してルータＤに送信する。
【０１１０】
次に、図４（５）と同様に、ルータＢ，Ｄは、ルータＢ，Ｄ自身がノード情報及び論理リンク情報を要求するために送信したＳＮＭＰパケットＰＳに対して、その送信先のルータから返信パケットＰＲを受信する。すると、ルータＢ，Ｄは、パケットを受信した順に、逐次的に、ステップＳ３４で得られたノード情報及び論理リンク情報を用いて、オイラー標数を計算する。そして、ルータＢ，Ｄは、算出したオイラー標数に基づいて、その限定された通信ネットワークにおけるトポロジーが木構造であるか、マイクロループという意味での閉路を含む状態であるかを判定する（ステップＳ３５）。すなわち、ルータＢ，Ｄは、算出したオイラー標数が“１”であるか、オイラー標数が“０”以下であるかを判定する。算出したオイラー標数が１であれば、ルータＢ，Ｄは、通信ネットワークにおけるトポロジーが木構造であると判定する。また算出したオイラー標数が０以下であれば、ルータＢ，Ｄは、マイクロループが発生していると判定する。
【０１１１】
ここで、一般に、返信されるノード情報及び論理リンク情報の到着時間には、ルータ間の物理的な距離等によって時間差が生じる。そのため、受信したパケットＰＲを受信した順に逐次的にオイラー標数を計算してマイクロループの有無を判定することで、どこでマイクロループという意味での閉路が発生しているかを素早く検知可能になる。
【０１１２】
ルータＢの場合、オイラー標数計算は、以下のように行われる。まず、ルータＢは、ルータ数がルータＢ，Ｄの２個であると求める。これは、ルータＡとＣとは、まだ経路再計算が完了していないので、経路制御手法による故障検出パケットが到着する時間に遅延があり、ルータ数にカウントされないためである。また、ルータＢは、論理リンク数がルータＢ→ルータＤとルータＤ→ルータＢの２本であると求める。そして、ルータＢは、オイラー標数Ｂを、以下の式（４）のように算出する。
【０１１３】
オイラー標数Ｂ＝｛ルータ数＝２｝−｛論理リンク数＝２｝＝０      ・・・式（４）
【０１１４】
この場合、ルータＢは、オイラー標数を“０” と求めたので、オイラー標数が０以下であり、ルータＢ−ルータＤ間にマイクロループが発生していると判定することができる。
【０１１５】
ルータＤの場合、オイラー標数計算は、以下のように行われる。まず、ルータＤは、ルータ数がルータＤ，Ｂ，Ｅの３個であると求める。また、ルータＤは、論理リンク数がルータＤ→ルータＢ、ルータＤ→ルータＥ、ルータＢ→ルータＤの３本であると求める。そして、ルータＤは、オイラー標数Ｂを、以下の式（５）のように算出する。
【０１１６】
オイラー標数Ｂ＝｛ルータ数＝３｝−｛論理リンク数＝３｝＝０      ・・・式（５）
【０１１７】
この場合、ルータＤは、オイラー標数を“０” と求めたので、オイラー標数が０以下であり、ルータＤ−ルータＢ−ルータＥ間のどこかにマイクロループが発生していると判定することができる。
【０１１８】
従って、以上に示したオイラー標数計算に基づく処理によって、ルータＢ，Ｄは、即座にルータＢ−ルータＤ間にマイクロループという意味での閉路が存在すると判定することができる。
【０１１９】
次いで、図４（６）と同様に、ルータＢとルータＤとは、それぞれステップＳ３５で求めたオイラー標数値を、ルータＢ，Ｄ自身の記憶部６Ａにさせる（ステップＳ３６）。また、図４（７）と同様に、ルータＤは、ルータＢ−ルータＤ間にマイクロループという意味での閉路が存在することを示す通知情報を、通信ネットワークが用いている経路制御手段（例えば、所定のノードや管理サーバ）に通知（送信）する（ステップＳ３７）。
【０１２０】
なお、ステップＳ２２の処理において、各ルータが決定する各方向によって何ＨＯＰ先のノードまでの論理リンク情報を得るかの決定結果は、各ルータで同じであってもよいし、ルータ毎に異なっていてもよい。また、ステップＳ２３，Ｓ３３の処理において、各ルータは、ノード情報と論理リンク情報とを取得するための相手ルータとして、ステップＳ２２で決定したルータ集合Ｖに含まれる自身を除く適当な数のルータに対してパケットを送信してもよい。
【０１２１】
以上のように、本実施形態によれば、第１の実施形態と同様に、通信ネットワークについてオイラー標数を求め、求めたオイラー標数の値が０以下であるか否かを判定することによって、通信ネットワーク内に閉路が発生しているか否かを判定する。従って、通信ネットワーク内のノードがマイクロループという意味での閉路を自律分散的かつ簡易に検出することができる。
【０１２２】
また、本実施形態によれば、第１の実施形態と同様に、ネットワーク階層以外の階層であって、かつ通信ネットワーク内の様々な情報を入手することができるプロトコル（具体的には、ＳＮＭＰプロトコル）を用いて、通信ネットワーク内の閉路検出を行う。そのため、マイクロループという意味での閉路を検出する時間が短縮可能とすることができる。また、本実施形態によれば、通信ネットワーク内の複数箇所で故障や障害が発生した場合であっても、マイクロループという意味での閉路を検出可能とすることができる。
【０１２３】
なお、上記に示した各実施形態及び各実施例では、以下の（１）〜（１２）に示すような閉路検出方法及び閉路検出システムの特徴的構成が示されている。
【０１２４】
（１）閉路検出方法は、ノード（例えば、ノード１Ａ，１Ｂ）とノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路を決定した後、通信ネットワークに含まれる所定のノードが、通信ネットワークを所定個のサブネットワークに分割し、分割されたサブネットワークに含まれるノードが、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求め、ノードが、求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断することを特徴とする。
【０１２５】
（２）閉路検出方法は、ノードが、求めたオイラー標数の値が１である場合には、サブネットワーク内に閉路が含まれないと判断し、求めたオイラー標数の値が０以下である場合には、サブネットワーク内に閉路が含まれると判断するように構成されていてもよい。
【０１２６】
（３）閉路検出方法は、ノードが、サブネットワークに含まれるノード数をＮとしたときに、サブネットワークに含まれるノードを起点として、最大でＮ−１ホップ先までのノード集合ＶＮと、両端ノードがノード集合ＶＮに含まれるリンクとについて、１次元複体までのオイラー標数を求め、ノードが、求めたオイラー標数の値が１である場合には、サブネットワーク内に閉路が含まれないと判断し、求めたオイラー標数の値が０以下である場合には、サブネットワーク内に閉路が含まれると判断するように構成されていてもよい。
【０１２７】
（４）閉路検出方法は、ノードが、サブネットワークについての１次元複体までのオイラー標数の値、サブネットワーク内での閉路の存在の有無、及びサブネットワーク内での閉路の存在箇所を、通信ネットワーク内で経路制御を行う所定の経路制御手段（例えば、所定のノードや管理サーバ）に通知するように構成されていてもよい。
【０１２８】
（５）閉路検出方法は、通信ネットワークが、同じ大きさのサブネットワークに分割され、又は異なる大きさのサブネットワークに分割されているように構成されていてもよい。
【０１２９】
（６）閉路検出方法は、通信ネットワークが、各サブネットワークが互いに重なるように分割され、又は各サブネットワークが互いに重ならないように分割されているように構成されていてもよい。
【０１３０】
（７）閉路検出方法は、通信ネットワーク内の各ノードが、オイラー標数を求めるために必要な情報の取得間隔を、ノード間で統一的に決定するように構成されていてもよい。
【０１３１】
（８）閉路検出方法は、通信ネットワーク内の各ノードが、オイラー標数を求めるために必要な情報の取得間隔を、自律分散的に個々に決定するように構成されていてもよい。
【０１３２】
（９）閉路検出方法は、ノードが、オイラー標数の算出結果を、所定の記憶領域（例えば、記憶部６Ａ，６Ｂ）に蓄積するように構成されていてもよい。
【０１３３】
（１０）閉路検出方法は、ノードが、オイラー標数を求めるために用いる通信手段として、ＳＮＭＰに従って通信を行う通信手段を用いるように構成されていてもよい。
【０１３４】
（１１）閉路検出システムは、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、通信ネットワークを所定個のサブネットワークに分割するネットワーク分割手段（例えば、ネットワーク分割手段１１によって実現される）と、サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求めるオイラー標数算出手段（例えば、オイラー標数算出手段１２によって実現される）と、オイラー標数算出手段が求めたオイラー標数に基づいて、サブネットワーク内に閉路が含まれるか否かを判断する閉路判断手段（例えば、閉路判断手段１３によって実現される）とを備えたことを特徴とする。
【０１３５】
（１２）閉路検出システムにおいて、閉路判断手段は、オイラー標数算出手段が求めたオイラー標数の値が１である場合には、サブネットワーク内に閉路が含まれないと判断し、オイラー標数算出手段が求めたオイラー標数の値が０以下である場合には、サブネットワーク内に閉路が含まれると判断するように構成されていてもよい。
【０１３６】
上記の各実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１３７】
（付記１）ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路を決定した後、前記通信ネットワークに含まれる所定のノードが、前記通信ネットワークを所定個のサブネットワークに分割し、分割された前記サブネットワークに含まれるノードが、前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求め、前記ノードが、求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断することを特徴とする閉路検出方法。
【０１３８】
（付記２）前記ノードが、求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する付記１記載の閉路検出方法。
【０１３９】
（付記３）前記ノードが、前記サブネットワークに含まれるノード数をＮとしたときに、前記サブネットワークに含まれるノードを起点として、最大でＮ−１ホップ先までのノード集合ＶＮと、両端ノードが前記ノード集合ＶＮに含まれるリンクとについて、１次元複体までの前記オイラー標数を求め、前記ノードが、求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する付記１記載の閉路検出方法。
【０１４０】
（付記４）前記ノードが、前記サブネットワークについての１次元複体までの前記オイラー標数の値、前記サブネットワーク内での閉路の存在の有無、及び前記サブネットワーク内での閉路の存在箇所を、前記通信ネットワーク内で経路制御を行う所定の経路制御手段に通知する付記１から付記３のうちのいずれか１項に記載の閉路検出方法。
【０１４１】
（付記５）前記通信ネットワークが、同じ大きさのサブネットワークに分割され、又は異なる大きさのサブネットワークに分割されている付記１から付記４のうちのいずれか１項に記載の閉路検出方法。
【０１４２】
（付記６）前記通信ネットワークが、各サブネットワークが互いに重なるように分割され、又は各サブネットワークが互いに重ならないように分割されている付記１から付記５のうちのいずれか１項に記載の閉路検出方法。
【０１４３】
（付記７）前記通信ネットワーク内の各ノードが、前記オイラー標数を求めるために必要な情報の取得間隔を、ノード間で統一的に決定する付記１から付記６のうちのいずれか１項に記載の閉路検出方法。
【０１４４】
（付記８）前記通信ネットワーク内の各ノードが、前記オイラー標数を求めるために必要な情報の取得間隔を、自律分散的に個々に決定する付記１から付記６のうちのいずれか１項に記載の閉路検出方法。
【０１４５】
（付記９）前記ノードが、前記オイラー標数の算出結果を、所定の記憶領域に蓄積する付記１から付記８のうちのいずれか１項に記載の閉路検出方法。
【０１４６】
（付記１０）前記ノードが、前記オイラー標数を求めるために用いる通信手段として、ＳＮＭＰに従って通信を行う通信手段を用いる付記１から付記９のうちのいずれか１項に記載の閉路検出方法。
【０１４７】
（付記１１）ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、前記通信ネットワークを所定個のサブネットワークに分割するネットワーク分割手段と、前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求めるオイラー標数算出手段と、前記オイラー標数算出手段が求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断する閉路判断手段とを備えたことを特徴とする閉路検出システム。
【０１４８】
（付記１２）前記閉路判断手段は、前記オイラー標数算出手段が求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、前記オイラー標数算出手段が求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する付記１１記載の閉路検出システム。
【０１４９】
（付記１３）コンピュータに、ノードとノード間を接続するリンクとを含む通信ネットワークにおいて、該通信ネットワーク内のあるノードから他のノードに情報を伝達するための経路が決定された後、前記通信ネットワークを所定個のサブネットワークに分割する処理と、前記サブネットワークのグラフとしての構造の１次元複体までのオイラー標数を求める処理と、求めた前記オイラー標数に基づいて、前記サブネットワーク内に閉路が含まれるか否かを判断する処理とを実行させるための閉路検出用プログラム。
【０１５０】
（付記１４）コンピュータに、求めた前記オイラー標数の値が１である場合には、前記サブネットワーク内に閉路が含まれないと判断し、求めた前記オイラー標数の値が０以下である場合には、前記サブネットワーク内に閉路が含まれると判断する処理を実行させる付記１３記載の閉路検出用プログラム。
【産業上の利用可能性】
【０１５１】
本発明は、経路制御手法を用いた経路制御が必要とされる全ての通信ネットワーク及びシステムに適用可能である。
【符号の説明】
【０１５２】
１Ａ，１Ｂ  ルータ
２Ａ，２Ｂ  通信部
３Ａ，３Ｂ  制御部
４Ａ，４Ｂ  計算部
５Ａ，５Ｂ  データベース
６Ａ，６Ｂ  記憶部
７  物理リンク
８  論理リンク
１１  ネットワーク分割手段
１２  オイラー標数算出手段
１３  閉路判断手段
【図１】
2011199383.tif 000003
【図２】
2011199383.tif 000004
【図３】
2011199383.tif 000005
【図４】
2011199383.tif 000006
【図５】
2011199383.tif 000007
【図６】
2011199383.tif 000008
【図７】
2011199383.tif 000009
【図８】
2011199383.tif 000010