説明

経路計算方法、経路計算装置およびプログラム

【課題】マルチキャスト経路の合計コストと経路探索の計算量を抑えることを可能にした経路計算方法を提供する。
【解決手段】複数の受信ノードの経路計算の順位を決め、最上位から最下位の受信ノードまで順に第1の探索ノードに設定し、第1の探索ノード毎に隣接ノードまでの経路の合計コストを算出し、合計コストが最小となる隣接ノードを第2の探索ノードとし、第2の探索ノードが送信ノード、または上記順位が上位の受信ノードにおける経路計算で設定された経路上のノードに一致するまで、合計コストが最小となる隣接ノードを第2の探索ノードに更新することで第1の探索ノードから第2の探索ノードを順に結ぶ経路を設定し、第2の探索ノードの隣接ノードの合計コストを算出する際、第2の探索ノードが受信ノードと一致する場合、第2の探索ノードまでの合計コストをゼロにリセットし、第2の探索ノードを起点とする経路のコストを合計コストとする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチキャスト通信において、最適な経路を選択するために、ネットワークのリンクに距離や帯域などに関連したコスト値を与え、その合計が最小となるマルチキャスト経路を計算する経路計算方法、経路計算装置、およびコンピュータに実行させるためのプログラムに関する。
【背景技術】
【0002】
近年、デジタル映像配信やグループビデオ会議など、マルチキャスト通信の需要が高まっている。このようなアプリケーションは、データサイズが大きいため、大量のトラフィックがネットワーク上を流れることになる。したがって、ネットワーク管理者は、アプリケーションが満たすべき品質や、データ量に応じて、マルチキャスト経路を決定し、管理する必要がある。リング型やスター型といった、シンプルなネットワークでは、マルチキャスト経路は一意に決まり、ネットワーク管理者は、経路の管理を容易に行うことができる。しかし、近年、ネットワークは複雑化しており、最適な経路を決定するためには、適したマルチキャスト経路計算アルゴリズムが必要である。最適なマルチキャスト経路の決定方法として、ネットワークのリンクにコスト値を与え、マルチキャスト経路全体の合計コストを最小化する方法がある。
【0003】
合計コストが最小となるマルチキャスト経路を求める問題は、最小シュタイナーツリー問題として、古くから解かれているが、NP(Nondeterministic Polynomial)完全問題であることが知られており、実時間で最適解を見つけることは困難である。
【0004】
近似解を求める手法として、非特許文献1には、送信ノードと受信ノードそれぞれを結ぶフルメッシュの最短路ネットワークを求め、求めたネットワークにおいて、最小全域木を求めることで、低コストマルチキャスト経路を計算する方法が開示されている。
【0005】
また、非特許文献2には、送信ノードからダイクストラ法による最短経路計算を行い、経路探索中に受信ノードが発見されると、その受信ノードを経由して、他の受信ノードに向かう経路を優先的に選択することにより、一経路上に複数の受信ノードを乗せることで、低コストマルチキャスト経路を計算する方法が開示されている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Kou. L., G. Markowsky, and L. Berman, "A fast algorithm for Steiner trees," IBM Thomas J Watson Research Center, Acta Information 15, pp.141-145, 1981.
【非特許文献2】A. Shaikh and K. Shin, "Destination-driven routing for low-cost multicast," IEEE Journal on Selected Areas in Communications, vol.15, No.3, April 1997.
【発明の概要】
【発明が解決しようとする課題】
【0007】
非特許文献1に開示された方法では、コストを低く抑えることが可能だが、送信ノードと受信ノードの全ての組み合わせのフルメッシュ経路を計算する必要があり、計算量が多くなってしまう。一方、非特許文献2に開示された方法では、計算量は少ないが、コストは非特許文献1より大きくなる傾向がある。
【0008】
本発明は上述したような技術が有する問題点を解決するためになされたものであり、マルチキャスト経路の合計コストと経路探索の計算量を抑えることを可能にした経路計算方法、経路計算装置、およびコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するための本発明の経路計算方法は、
ネットワーク内の各ノードに対応する識別子、隣接するノード同士を接続する経路および各経路のコスト値の情報を含むトポロジ情報、ならびに送信ノードおよび複数の受信ノードのそれぞれの識別子の情報を取得し、
前記複数の受信ノードについて経路計算の順位を決め、
決定した順位の最上位の受信ノードから最下位の受信ノードまで順に第1の探索ノードに設定し、
設定した第1の探索ノード毎に、該第1の探索ノードの隣接ノードについて、該第1の探索ノードと該隣接ノードの間のコスト値を合計コストとし、該合計コストが最小となる隣接ノードを第2の探索ノードとし、該第2の探索ノードが前記送信ノード、または該第1の探索ノードよりも前記順位が上位の受信ノードにおける経路計算で設定された経路上のノードに一致するまで、前記第1の探索ノードから該第2の探索ノードを経由して該第2の探索ノードの隣接ノードまでの前記合計コストが最小となる隣接ノードを第2の探索ノードに順次更新することで、前記第1の探索ノードから更新された第2の探索ノードを順に結ぶ経路を設定し、
前記第2の探索ノードについて前記隣接ノードの前記合計コストを算出する際、該第2の探索ノードが前記複数の受信ノードのうち、いずれかの受信ノードと一致する場合、該第2の探索ノードまでの前記合計コストをゼロにリセットし、該第2の探索ノードを起点とする経路のコスト値を前記合計コストとするものである。
【0010】
また、本発明の経路計算装置は、
ネットワーク内の各ノードに対応する識別子、隣接するノード同士を接続する経路および各経路のコスト値の情報を含むトポロジ情報、ならびに送信ノードおよび複数の受信ノードのそれぞれの識別子の情報を保存する記憶手段と、
前記要求取得手段から受け取る前記複数の受信ノードについて経路計算の順位を決める計算順序決定手段と、
前記計算順序決定手段が決定した順位の最上位の受信ノードから最下位の受信ノードまで順に第1の探索ノードに設定し、設定した第1の探索ノード毎に、該第1の探索ノードの隣接ノードについて、該第1の探索ノードと該隣接ノードの間のコスト値を合計コストとし、該合計コストが最小となる隣接ノードを第2の探索ノードとし、前記第1の探索ノードから該第2の探索ノードを経由して該第2の探索ノードの隣接ノードまでの前記合計コストが最小となる隣接ノードを第2の探索ノードに順次更新する経路パラメータ計算手段と、
前記第2の探索ノードが前記送信ノード、または該第1の探索ノードよりも前記順位が上位の受信ノードにおける経路計算で設定された経路上のノードに一致すると、前記第1の探索ノードから更新された第2の探索ノードを順に結ぶ経路を設定する経路パラメータ判定手段と、を有し、
前記経路パラメータ計算手段は、
前記第2の探索ノードについて前記隣接ノードの前記合計コストを算出する際、該第2の探索ノードが前記複数の受信ノードのうち、いずれかの受信ノードと一致する場合、該第2の探索ノードまでの前記合計コストをゼロにリセットし、該第2の探索ノードを起点とする経路のコスト値を前記合計コストとする構成である。
【0011】
さらに、本発明のプログラムは、上記本発明の経路計算方法をコンピュータに実行させるものである。
【発明の効果】
【0012】
本発明によれば、マルチキャスト通信を行う際、経路探索の計算量を抑制し、経路全体の合計コストを抑制できる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施形態におけるマルチキャスト経路計算装置の一構成例を示すブロック図である。
【図2】本発明の一実施形態におけるマルチキャスト経路計算方法の手順を示すフローチャートである。
【図3】第1の実施形態におけるマルチキャスト経路計算装置の一構成例を示すブロック図である。
【図4】第1の実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【図5】第1の実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【図6】第1の実施形態におけるマルチキャスト経路計算方法を具体的に説明するためのネットワークトポロジの一構成例を示す図である。
【図7A】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図7B】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図7C】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図7D】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図8A】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図8B】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図8C】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図8D】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図9A】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図9B】第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図10】第2の実施形態におけるマルチキャスト経路計算装置の一構成例を示すブロック図である。
【図11】第2の実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【図12】第2の実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【図13A】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図13B】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図13C】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図13D】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図14A】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図14B】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図14C】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図14D】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図15A】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【図15B】第2の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【発明を実施するための形態】
【0014】
本発明のマルチキャスト経路計算装置は、ネットワークのリンクに距離や帯域などと関連付けられたコスト値を与え、コスト値の合計が最小となるマルチキャスト経路を計算する装置である。
【0015】
本発明の一実施形態のマルチキャスト経路計算装置の構成を説明する。図1は本発明の一実施形態におけるマルチキャスト経路計算装置の一構成例を示すブロック図である。
【0016】
マルチキャスト経路計算装置100は、要求取得手段1と、計算順序決定手段2と、計算受信ノード決定手段3と、探索ノード決定手段4と、経路パラメータ計算手段5と、経路パラメータ判定手段6と、経路保存手段7と、経路出力手段8とを有する。また、マルチキャスト経路計算装置100は、マルチキャスト経路を計算する過程で情報を保存し、また、計算結果を保存するための記憶手段を備えている。記憶手段は、経路記憶手段11と、訪問済みノード記憶手段12と、ノード情報記憶手段13とを有する。
【0017】
次に、図1に示したマルチキャスト経路計算装置100による経路計算方法の動作を説明する。図2は本発明の一実施形態におけるマルチキャスト経路計算方法の手順を示すフローチャートである。
【0018】
要求取得手段1が、ネットワーク内の各ノードの接続関係を表した情報を含むトポロジ情報、ならびに送信ノードおよび複数の受信ノードの識別子を受け付けると(ステップ101)、送信ノードの識別子を経路記憶手段11に格納する。続いて、計算順序決定手段2が、受信ノードの経路計算の順序である計算順序を決定する(ステップ102)。計算受信ノード決定手段3が、経路記憶手段11に格納されていない受信ノードの中で、計算順序最上位の受信ノードを決定する(ステップ103)。
【0019】
次に、探索ノード決定手段4が、訪問済みノード記憶手段12を参照し、経路計算が済んだノードである訪問済みノードが訪問済みノード記憶手段12に保存されていない場合、ステップ103で決定された受信ノードを探索ノードとして決定する。一方、訪問済みノードが訪問済みノード記憶手段12に保存されている場合、まだ経路計算が済んでいない(訪問済みとなっていない)ノードの中から、ノード情報記憶手段13を参照して、合計コストが最小のノードを探索ノードとして決定し、探索ノードを訪問済みノード記憶手段12に格納する(ステップ104)。
【0020】
続いて、経路パラメータ計算手段5が、ステップ104で決定された探索ノードの隣接ノードについて、探索ノード経由の経路における合計コストを計算する(ステップ105)。その際、探索ノードが受信ノードである場合、経路パラメータ計算手段5は、探索ノードまでの合計コストをゼロにリセットし、探索ノードと隣接ノードとの間のコスト値を新たな合計コストとする。ステップ105で算出される合計コストを第1の合計コストと称する。なお、本実施形態では、ステップ105において、探索ノードが受信ノードであると、探索ノードまでの合計コストをゼロにリセットする場合で説明するが、その合計コストをゼロにリセットしなくてもよい。
【0021】
経路パラメータ判定手段6は、隣接ノードについて、ノード情報記憶手段13を参照し、合計コストが保存されていない場合、または、他のノード経由の経路で既に計算された合計コストである第2の合計コストが保存されているが、第1の合計コストの方が小さい場合(ステップ106)、第1の合計コストおよび上記探索ノード経由の経路を、ノード情報記憶手段13に格納する(ステップ107)。第2の合計コストの方が第1の合計コストよりも小さい場合には、経路パラメータ判定手段6は、上記隣接ノードについて、ノード情報記憶手段13の情報を更新しない。
【0022】
経路記憶手段11を参照し、経路記憶手段11に探索ノードの識別子が含まれていなければ、ステップ104の探索ノード決定ステップからステップ107の経路パラメータ判定ステップまでの処理を繰り返す(ステップ108)。ステップ108で探索ノードが経路記憶手段11に含まれていると、経路保存手段109が、ノード情報記憶手段13を参照し、探索ノードから受信ノードまでの経路の情報として、探索ノードから受信ノードまでの各ノードの識別子を順に並べた情報を経路記憶手段11に格納する(ステップ109)。
【0023】
経路記憶手段11を参照して、ステップ101で取得した、受信ノードの識別子が経路記憶手段11に全て格納されていなければ、ステップ103の計算受信ノード決定ステップからステップ109の経路保存ステップまでの処理を繰り返す(ステップ110)。ステップ110で、受信ノードの識別子が経路記憶手段11に全て格納されていれば、経路出力手段8は、経路記憶手段11に格納された経路の情報を出力する(ステップ111)。
【0024】
以下に、本発明のマルチキャスト経路計算方法およびマルチキャスト経路計算装置についての実施形態を詳しく説明する。
【0025】
(第1の実施形態)
本実施形態のマルチキャスト経路計算装置の構成を説明する。図3は本実施形態におけるマルチキャスト経路計算装置の一構成例を示すブロック図である。
【0026】
図3に示すように、マルチキャスト経路計算装置200は、制御部20と、記憶部30とを有する。制御部20は、要求取得部21と、計算順序決定部22と、初期化部23と、計算受信ノード決定部24と、探索ノード決定部25と、経路パラメータ計算部26と、経路パラメータ判定部27と、経路保存部28と、経路出力部29とを有する。記憶部30は、トポロジ情報記憶部31と、送信・受信ノード記憶部32と、経路記憶部33と、訪問済みノード記憶部34と、ノード情報記憶部35とを有する。
【0027】
要求取得部21は、外部からトポロジ情報と、ネットワーク内のノードのうち送信ノードおよび複数の受信ノードのそれぞれを特定するための情報とが入力装置(不図示)を介して入力され、または、これらの情報を記憶装置(不図示)から読み出す。ノードを特定するための情報とは、ネットワーク内のノード毎に異なる識別子である。トポロジ情報には、ネットワーク内に配置されている全てのノードの識別子の情報と、隣接するノード同士を接続する経路の情報と、各経路のコスト値の情報とが含まれている。
【0028】
要求取得部21は、上記のようにして、トポロジ情報と、送信ノードおよび受信ノードのそれぞれの識別子の情報とを取得すると、トポロジ情報をトポロジ情報記憶部31に格納し、送信ノードおよび受信ノードのそれぞれの識別子を送信・受信ノード記憶部32に格納し、送信ノードの識別子を経路記憶部33に格納する。
【0029】
計算順序決定部22は、送信・受信ノード記憶部32を参照し、受信ノードの計算順序を決定し、決定した計算順序を送信・受信ノード記憶部32に格納する。
【0030】
初期化部23は、訪問済みノード記憶部34およびノード情報記憶部35を初期化する。計算受信ノード決定部24は、送信・受信ノード記憶部32および経路記憶部33を参照し、経路記憶部33に格納されていない受信ノードの中で計算順序最上位の受信ノードを決定する。
【0031】
探索ノード決定部25は、訪問済みノード記憶部34およびノード情報記憶部35を参照し、探索ノードを決定し、決定した探索ノードを訪問済みノード記憶部34に格納する。
【0032】
経路パラメータ計算部26は、トポロジ情報記憶部31を参照し、上記探索ノードの隣接ノードについて、探索ノード経由の経路における第1の合計コストを計算する。
【0033】
経路パラメータ判定部27は、ノード情報記憶部35を参照し、上記隣接ノードについて、既に算出された第2の合計コストがノード情報記憶部35に格納されていると、第2の合計コストと第1の合計コストとを比較し、合計コストの小さい方を残すように、ノード情報記憶部35の情報を更新する。ノード情報記憶部35に上記隣接ノードの第2の合計コストが格納されていない場合、経路パラメータ判定部27は、経路パラメータ計算部26が算出した第1の合計コストを隣接ノードの識別子と組にしてノード情報記憶部35に格納する。
【0034】
経路保存部28は、ノード情報記憶部35を参照し、探索ノードから受信ノードまでの経路を、ノードを経路順に並べた情報として、経路記憶部33に保存する。経路出力部29は、経路記憶部33に格納された経路の情報を出力する。
【0035】
なお、制御部20には、プログラムにしたがって処理を実行するCPU(Central Processing Unit)(不図示)と、プログラムを格納するためのメモリ(不図示)とが設けられている。CPUがプログラムを実行することで、要求取得部21、計算順序決定部22、初期化部23、計算受信ノード決定部24、探索ノード決定部25、経路パラメータ計算部26、経路パラメータ判定部27、経路保存部28および経路出力部29がマルチキャスト経路計算装置200に仮想的に構成される。
【0036】
次に、本実施形態のマルチキャスト経路計算装置200の動作を説明する。図4および図5は本実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【0037】
まず、ステップ201に示すように、要求取得部21がネットワークの各ノードの接続関係を表したトポロジ情報と、送信ノードおよび受信ノードの識別子を取得する。トポロジ情報には、各ノードの接続関係の情報の他に、各リンクのコスト値の情報が含まれている。また、受信ノードは、ここでは、複数のノードとする。また、要求取得部21は、取得したトポロジ情報をトポロジ情報記憶部31に格納し、送信ノードと受信ノードの識別子を送信・受信ノード記憶部32に保存する。
【0038】
次に、要求取得部21が、送信ノードの識別子を経路記憶部33に保存する(ステップ202)。次に、計算順序決定部22が、送信ノードから各受信ノードまでの最小合計コストを計算する(ステップ203)。
【0039】
次に、計算順序決定部22が、送信ノードから各受信ノードまでの最小合計コストを比較し、最小合計コストが最も小さい受信ノードを計算順序最上位、最も大きい受信ノードを最下位とし、計算順序を送信・受信ノード記憶部32の各受信ノードに対応して保存する(ステップ204)。次に、初期化部23が、訪問済みノード記憶部34とノード情報記憶部の情報を削除する(ステップ205)。ただし、最初はデータが格納されていないため、この処理を行う必要はない。
【0040】
次に、計算受信ノード決定部24が、経路記憶部33に保存されていない受信ノードの中で、計算順序最上位の受信ノードを決定する(ステップ206)。ただし、最初は、経路記憶部33には、送信ノードの情報しか保存されていないため、計算順序最上位の受信ノードが決定される。
【0041】
次に、探索ノード決定部25が、訪問済みノード記憶部34に何らかのノードが保存さているかを判定する(ステップ207)。訪問済みノード記憶部34に何も保存されていない場合、探索ノード決定25は、ステップ206で決定された受信ノードを探索ノードとして決定し、この受信ノードを訪問済みノード記憶部34に保存する(ステップ208)。ここで設定される受信ノードが第1の探索ノードに相当する。
【0042】
一方、ステップ207の判定で訪問済みノード記憶部34に何らかのノードが保存されている場合、探索ノード決定部25は、まだ訪問済みとなっていないノードについて、ノード情報記憶部35に保存されているノードに対する合計コストと経路を参照する。そして、探索ノード決定部25は、合計コストが最小のノードを1つ選び、選んだノードを探索ノードとして決定し、訪問済みノード記憶部34に保存する(ステップ209)。ここで設定される探索ノードは第2の探索ノードに相当し、第2の探索ノードは、送信ノードまたは上記計算順序が上位の受信ノードにおける経路計算で設定された経路上のノードに一致するまで更新される。
【0043】
次に、経路パラメータ計算部26が、探索ノードvの隣接ノードuについて、探索ノード経由の合計コストC1(第1の合計コストに相当)を計算する(ステップ210)。合計コストC1は、
C1=Id*C(v)+w(v,u)・・・(式1)
で求まる。
【0044】
(式1)において、Idは、探索ノードが受信ノードの1つであれば0であり、そうでなければ1である。C(v)は、探索ノードvの合計コストである。w(v,u)は、探索ノードと隣接ノード間のリンクのコスト値である。C(v)は、ノード情報記憶部35に保存されている値を用いる。ノード情報記憶部35に探索ノードvが保存されていない場合、C(v)は0である。
【0045】
次に、経路パラメータ判定部27が、ノード情報記憶部35を参照し、隣接ノードuに対して、他のノード経由の合計コストC(第2の合計コストに相当)が既に保存されているかどうかを判定する(ステップ211)。合計コストCが保存されていない場合、経路パラメータ判定部27は、ノード情報記憶部35の隣接ノードuに、C1と、経路を示す情報として探索ノードの識別子とを一緒にして保存する。ステップ211の判定で既にCが保存されている場合、経路パラメータ判定部27は、C1<Cかどうかを判定する(ステップ212)。C1<Cである場合、経路パラメータ判定部27は、ノード情報記憶部35の隣接ノードuに、C1と経路(探索ノード)の識別子の情報を上書きする(ステップ213)。
【0046】
経路パラメータ判定部27は、探索ノードに対する隣接ノード全てに対し、C1の計算が行われるまで、ステップ210〜ステップ213の処理を繰り返す(ステップ214)。ステップ214で、C1の計算を行っていない隣接ノードがなければ、経路パラメータ判定部27は、探索ノードが経路記憶部33に保存されているか否かを判定し(ステップ215)、探索ノードが経路記憶部33に保存されていなければ、ステップ207〜ステップ214の処理を繰り返す。
【0047】
ステップ215で探索ノードが経路記憶部33に保存されているノードであれば、経路保存部28は、ノード情報記憶部35を参照し、探索ノードから受信ノードまでの経路を、ノードを経路順に並べた情報として、経路記憶部33に保存する。つまり、経路保存部28は、経路情報として、探索ノードから受信ノードまでの経路における各ノードの識別子を経路順に並べた情報を、経路記憶部33に保存する。この経路は、ノード情報記憶部35の各ノードに保存されている経路(ノード)をたどることで得られる。
【0048】
このようにして、ステップ201で取得した識別子の全ての受信ノードの経路の情報が、経路記憶部33に保存されるまで、初期化部23が実行するステップ205〜経路保存部28が実行するステップ216までの処理を繰り返す(ステップ217)。
【0049】
全ての受信ノードの経路の情報が経路記憶部33に保存されたら、最後に、経路出力部29が、経路記憶部33に保存されている経路の情報を出力することで(ステップ218)、処理が終了する。
【0050】
次に、上述した本実施形態のマルチキャスト経路計算方法の具体例を、図6を参照して説明する。図6はネットワークトポロジの一構成例を示す図である。
【0051】
図6に示す例では、ノードの識別子を1〜16のノード番号としている。ノード間のリンク上の数値はコスト値を表している。
【0052】
はじめに、要求取得部21がトポロジ情報を外部から取得する。各ノードの接続関係、各リンクのコスト値は、図6に示すとおりである。次に、要求取得部21は、送信ノードと複数の受信ノードの識別子を外部から取得する。本具体例では、送信ノードを図6に示すノード1とする。また、受信ノードの数は5個とし、受信ノードAを図6に示すノード9とし、受信ノードBをノード10とし、受信ノードCをノード13とし、受信ノードDをノード12とし、受信ノードEをノード15とする。要求取得部21は、トポロジ情報をトポロジ情報記憶部31に保存し、送信ノードと受信ノードA〜Eの識別子を送信・受信ノード記憶部32に保存する。さらに、要求取得部21は、送信ノードの識別子を経路記憶部33に保存する。
【0053】
次に、計算順序決定部22が、送信ノードから各受信ノードまでの最小合計コストを計算する。本具体例において、各受信ノードの最小合計コストは、受信ノードAが3、受信ノードBが5、受信ノードCが6、受信ノードDが9、受信ノードEが10となる。計算順序決定部22は、これらのコスト値を比較し、最小合計コストが小さい方から順に、以下に示すように、計算順序を決定する。
1位:受信ノードA
2位:受信ノードB
3位:受信ノードC
4位:受信ノードD
5位:受信ノードE
計算順序決定部22は、これらの最小合計コストと順位の情報を送信・受信ノード記憶部32における、それぞれの受信ノードの識別子の情報に関連付けて保存する。
【0054】
図7Aから図9Bは、第1の実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。図7Aから図8Aに示す黒三角印は探索ノードを示し、図7Aから図9Bにおいて、ノードの脇に記述された四角の中のCとRの情報は、ノード情報記憶部35に保存される情報を示す。
【0055】
初期化部23が、訪問済みノード記憶部34とノード情報記憶部35の情報を削除する。ただし、最初はデータが格納されていないため、この処理を行う必要はない。次に、計算受信ノード決定部24が、経路記憶部33に保存されていない受信ノードの中で、計算順序最上位の受信ノードを決定する。ただし、最初は、経路記憶部33には、送信ノードの識別子しか保存されていないため、計算順序最上位の受信ノードが決定される。本具体例では、受信ノードAが選択される。
【0056】
次に、探索ノード決定部25が、訪問済みノード記憶部34に何らかのノードが保存さているかを判定する。最初は何も保存されていないため、ステップ206で決定された受信ノードAを探索ノードとして決定し、受信ノードAを訪問済みノード記憶部34に保存する(図7A)。
【0057】
次に、経路パラメータ計算部26が、探索ノードvの隣接ノードuについて、探索ノード経由の合計コストC1を計算する。ここでは、ノード9(受信ノードA)が探索ノードvに相当し、ノード5、ノード6、ノード10およびノード13が隣接ノードuに相当する。
【0058】
さらに、経路パラメータ判定部27が、ノード情報記憶部35を参照し、隣接ノードuに対して、他のノード経由の合計コストCが既に保存されているかどうかを判定する。最初は、合計コストCが保存されていないため、ノード情報記憶部35の隣接ノードuに、C1および、経路として、探索ノードの識別子を保存する(図5に示したステップ213)。経路パラメータ計算と、経路パラメータ判定の処理を全ての隣接ノードに対して行う(図7B)。図7Bにおいて、合計コストをC、経路の目印として探索ノードの識別子をRで示す。また、図7Aから図9Bの各図において、経路記憶部33および訪問済みノード記憶部34のそれぞれに保存される、ノードの識別子を破線枠の中に示す。
【0059】
続いて、図5に示したステップ215において、探索ノードが経路記憶部33に保存されていないので、探索ノード決定の処理(図5に示したステップ207)に戻る。
【0060】
探索ノード決定部25が、訪問済みノード記憶部34を参照し、ノードが保存されているため、訪問済みとなっていないノードについて、ノード情報記憶部35に保存されているノードに対する合計コストと経路を参照し、合計コストが最小のノードを1つ選ぶ。ここでは、合計コストが2のノード5が探索ノードとして選択され、訪問済みノード記憶部34に保存される(図7C)。
【0061】
次に、経路パラメータ計算部26が、探索ノードvの隣接ノードuについて、探索ノード経由の合計コストC1を計算する。ここでは、ノード5が探索ノードvに相当し、ノード1、ノード2、ノード6およびノード9が隣接ノードuに相当する。
【0062】
さらに、経路パラメータ判定部27が、ノード情報記憶部35を参照し、隣接ノードuに対して、他のノード経由の合計コストCが既に保存されているかどうかを判定する。保存されていないノードには、ノード情報記憶部35の隣接ノードuに、C1および、経路として、探索ノードを保存する。一方、既に、Cが保存されているノードにおいては、C1<Cの場合、C1を新たなCとして、また、探索ノードを経路として保存する。経路パラメータ計算と、経路パラメータ判定の処理を全ての隣接ノードに対して行う(図7D)。図7Dに示すように、ノード1およびノード2については、C1と経路として探索ノード(ノード5)とが保存され、ノード6およびノード9については情報が更新されなかった。
【0063】
続いて、図5に示したステップ215において、探索ノードが経路記憶部33に保存されていないので、探索ノード決定の処理(図5に示したステップ207)に戻る。
【0064】
探索ノード決定部25が、訪問済みノード記憶部34を参照し、ノードが保存されているため、訪問済みとなっていないノードについて、ノード情報記憶部35に保存されているノードに対する合計コストと経路を参照し、合計コストが最小のノードを1つ選ぶ。ここでは、合計コストが3のノード1が探索ノードとして選択され、訪問済みノード記憶部34に保存される(図8A)。ここで、合計コスト3のノードが複数あるが、そのような場合、ノード番号が最も小さいノードを選択することとした。
【0065】
ノード1の識別子が経路記憶部33に保存されているため、図4および図5に示したステップ207からステップ215までの繰り返し処理が終了し、経路記憶部33に探索ノードから受信ノードAまでの経路の情報が保存される(図8B)。ここで、探索ノードから受信ノードAまでの経路の情報は、具体的には、送信ノード1、ノード5およびノード9の識別子が順に並んだ情報である。図8Bでは、保存された経路の情報に相当する経路を太線で示している。
【0066】
経路記憶部33には全ての受信ノードの識別子が保存されていないため、初期化部23の処理(図4に示したステップ205)に戻る。初期化部23は、訪問済みノード記憶部34とノード情報記憶部35の情報を削除する(図8C)。
【0067】
次に、計算受信ノード決定部24が、送信・受信ノード記憶部32を参照し、次の計算対象の受信ノードとして、受信ノードBを選択する。
【0068】
受信ノードBについて、探索ノード決定、経路パラメータ計算、および経路パラメータ判定の処理を、受信ノードAと同様に繰り返すと、探索ノードがノード10、ノード6、ノード11、ノード13、ノード9の順に決定される。
【0069】
ノード9の識別子が経路記憶部33に保存されているため、図4および図5に示したステップ207からステップ215までの繰り返し処理が終了し、経路記憶部33に探索ノードから受信ノードBまでの経路が保存される(図8D)。ここで、ノード13が探索ノードとして決定されたとき、経路パラメータ計算部26において、C1の計算式(式1)では、Idが0にセットされることに注意が必要である。また、このとき、探索ノードに相当するノード9から受信ノードBに相当するノード10までの経路情報として、ノード9、ノード13およびノード10が順に並んだ情報が経路記憶部33に保存される。つまり、受信ノードCの識別子が経路記憶部33に保存される。
【0070】
経路記憶部33に全ての受信ノードの識別子が保存されていないため、初期化部23の処理(図4に示したステップ205)に戻る。初期化部23は、訪問済みノード記憶部34とノード情報記憶部35の情報を削除する。次に、計算受信ノード決定部24が、送信・受信ノード記憶部32を参照し、次の計算対象の受信ノードとして、受信ノードDを選択する。1つ前の順位である受信ノードCは、受信ノードBからの経路に含まれているため、受信ノードCからの経路探索は行われない。
【0071】
受信ノードDについて、探索ノード決定、経路パラメータ計算、および経路パラメータ判定の処理を、受信ノードAと同様に繰り返すと、探索ノードがノード12、ノード11、ノード15、ノード14、ノード16、ノード7、ノード10の順に決定される。ここで、ノード15が探索ノードとして決定されたとき、経路パラメータ計算部26において、C1の計算式(式1)では、Idが0にセットされることに注意が必要である。
【0072】
ノード10の識別子が経路記憶部33に保存されているため、図4および図5に示したステップ207からステップ215までの繰り返し処理が終了し、経路記憶部33に探索ノードから受信ノードDまでの経路が保存される(図9A)。
【0073】
経路記憶部33に全ての受信ノードの識別子が保存されていないため、初期化部23の処理(図4に示したステップ205)に戻る。初期化部23は、訪問済みノード記憶部34とノード情報記憶部35の情報を削除する。次に、計算受信ノード決定部24が、送信・受信ノード記憶部32を参照し、次の計算対象の受信ノードとして、受信ノードEを選択する。
【0074】
受信ノードEについて、探索ノード決定、経路パラメータ計算、および経路パラメータ判定の処理を、受信ノードAと同様に繰り返すと、探索ノードがノード15、ノード14、ノード16、ノード12の順に決定される。
【0075】
ノード12の識別子が経路記憶部33に保存されているため、図4および図5に示したステップ207からステップ215までの繰り返し処理が終了し、経路記憶部33に探索ノードから受信ノードEまでの経路が保存される(図9B)。
【0076】
経路記憶部33に全ての受信ノードの識別子が保存されたため、最後に経路出力部29が経路記憶部33を参照し、マルチキャスト経路を、例えば以下のように出力し、処理を終了する。
受信ノードAへの経路:1、5、9
受信ノードBへの経路:1、5、9、13、10
受信ノードCへの経路:1、5、9、13
受信ノードDへの経路:1、5、9、13、10、11、12
受信ノードEへの経路:1、5、9、13、10、11、12、16、15
【0077】
本実施形態によれば、受信ノードから送信ノードへ、また、受信ノードから既に確定した経路へ、最小の合計コストで経路を接続させていくことで、1つの経路に複数の受信ノードが乗り、マルチキャスト経路全体の合計コストを低く抑えることができる。また、送信ノードと受信ノードの全ての組み合わせのフルメッシュ経路を計算する場合よりも計算量が少なく済む。
【0078】
また、本実施形態では、ある受信ノードからの経路探索の途中で他の受信ノードが発見されると、合計コストをゼロにリセットする場合を説明したが、必ずしもゼロにリセットしなくてもよい。このとき合計コストをゼロにリセットすることにより、他の受信ノードを経由する経路が優先的に選択されるため、さらにマルチキャスト経路全体の合計コストを最小限に抑えることが可能になる。
【0079】
(第2の実施形態)
本実施形態のマルチキャスト経路計算装置の構成を説明する。
【0080】
図10は、本実施形態のマルチキャスト経路計算装置の一構成例を示すブロック図である。なお、本実施形態では、第1の実施形態と異なる点を詳細に説明し、第1の実施形態と同様な構成についてはその詳細な説明を省略する。
【0081】
本実施形態のマルチキャスト経路計算装置300は、第1の実施形態で説明した初期化部23と計算受信ノード決定部24の処理が異なる。本実施形態では、図10に示すように、第1の実施形態における初期化部23と計算受信ノード決定部24の処理順序が逆転し、初期化部23の代わりに情報更新部41が設けられている。
【0082】
情報更新部41は、計算受信ノード決定部24で決定された受信ノード(受信ノードdとする)の1つ前の順位の受信ノード(受信ノードd’とする)からの経路探索において、受信ノードdからの経路が計算されている場合に、その経路と合計コストの情報を含む経路探索情報を訪問済みノード記憶部34とノード情報記憶部35に残し、それ以外の情報を削除する。
【0083】
図11および図12は、本実施形態におけるマルチキャスト経路計算方法の動作手順を示すフローチャートである。
【0084】
本実施形態におけるマルチキャスト経路計算方法は、図10で示したマルチキャスト経路計算装置の構成に対応して、第1の実施形態で説明した初期化ステップ(ステップ205)と計算受信ノード決定ステップ(ステップ206)の順序が逆になり、初期化ステップ(ステップ205)の代わりに情報更新ステップ(ステップ306)を有する。
【0085】
図4に示したステップ206は図11に示すステップ305に相当し、図4に示したステップ201〜204およびステップ207〜209のそれぞれは図11に示すステップ301〜304およびステップ307〜309のそれぞれに相当しており、同様な処理についての詳細な説明を省略する。また、図5に示したステップ210〜ステップ218のそれぞれは図11に示すステップ310〜ステップ318に相当し、同様な処理についての詳細な説明を省略する。
【0086】
本実施形態のマルチキャスト経路計算装置300の動作の具体例について、第1の実施の形態と異なる部分を詳しく説明する。ここでも、ネットワークトポロジの一例として、図6に示したトポロジを用いる。
【0087】
第1の実施形態で説明した動作を例に説明する。受信ノードAからの経路探索終了後、計算受信ノード決定部24が、探索ノードとして、計算順序次位の受信ノードである受信ノードBに決定する。受信ノードAからの経路探索では、受信ノードBからの経路は計算されていないため、図11に示すステップ306において、情報更新部41は、訪問済みノード記憶部34とノード情報記憶部35の全ての情報を削除する。
【0088】
次に、受信ノードBからの経路探索終了後、計算受信ノード決定部24が、探索ノードとして、計算順序次位の受信ノードである受信ノードDに決定する。1つ前の順位である受信ノードCは、受信ノードBからの経路に含まれているため、受信ノードCからの経路探索は行われていない。したがって、この場合にも、情報更新部41は、訪問済みノード記憶部34とノード情報記憶部35の全ての情報を削除する。
【0089】
受信ノードDからの経路計算について、情報更新ステップ以降の処理を、具体的に説明する。図13Aから図15Bは本実施形態におけるマルチキャスト経路計算方法の具体例を説明するための図である。
【0090】
探索ノード決定部25が、受信ノードDを探索ノードとして決定し、受信ノードDの識別子を訪問済みノード記憶部34に保存する(図13A)。
【0091】
次に、経路パラメータ計算部26が、探索ノードvの隣接ノードuについて、探索ノード経由の合計コストC1を計算する。さらに、経路パラメータ判定部27が、ノード情報記憶部35を参照し、隣接ノードuに対して、他のノード経由の合計コストCが既に保存されているかどうかを判定する。最初は保存されていないため、ノード情報記憶部35の隣接ノードuに、C1および、経路として、探索ノードの識別子を保存する。経路パラメータ計算と、経路パラメータ判定の処理を全ての隣接ノードに対して行う(図13B)。図13Bにおいて、合計コストをC、経路の目印として探索ノードの識別子をRで示す。
【0092】
探索ノードが経路記憶部33に保存されていないので、探索ノード決定の処理(図11に示すステップ307)に戻る。
【0093】
探索ノード決定部25が、訪問済みノード記憶部34を参照し、ノードが保存されているため、訪問済みとなっていないノードについて、ノード情報記憶部35に保存されているノードに対する合計コストと経路を参照し、合計コストが最小のノードを1つ選ぶ。ここでは、合計コストが2のノード11が探索ノードとして選択され、訪問済みノード記憶部34に保存される(図13C)。
【0094】
次に、経路パラメータ計算部26が、探索ノードvの隣接ノードuについて、探索ノード経由の合計コストC1を計算する。さらに、経路パラメータ判定部27が、ノード情報記憶部35を参照し、隣接ノードuに対して、他のノード経由の合計コストCが既に保存されているかどうかを判定する。保存されていないノードには、ノード情報記憶部35の隣接ノードuに、C1および、経路として、探索ノードの識別子を保存する。既に、Cが保存されているノードにおいては、C1<Cの場合、C1を新たなCとして、また、探索ノードを経路として保存する。経路パラメータ計算と、経路パラメータ判定の処理を全ての隣接ノードに対して行う(図13D)。
【0095】
上記の探索ノード決定、経路パラメータ計算、および経路パラメータ判定の処理を繰り返すと、探索ノードがノード12、ノード11、ノード15、ノード14、ノード16、ノード7、ノード10の順に決定される。ここで、ノード15が探索ノードとして決定されたとき、経路パラメータ計算部26において、C1の計算式(式1)では、Idが0にセットされることに注意が必要である(図14A〜図14C)。
【0096】
ノード10の識別子が経路記憶部33に保存されているため、図11および図12に示すステップ307からステップ315までの繰り返し処理が終了し、経路記憶部33に探索ノードから受信ノードDまでの経路が保存される(図14D)。
【0097】
経路記憶部33に全ての受信ノードの識別子が保存されていないため、計算受信ノード決定部24の処理に戻る。計算受信ノード決定部24が、送信・受信ノード記憶部32を参照し、次の計算対象の受信ノードとして、受信ノードEを選択する。
【0098】
次に、図11に示したステップ306において、情報更新部41が、受信ノードDからの経路探索において、受信ノードEからの経路が計算されているかを判定する。つまり、受信ノードEの識別子が訪問済みノード記憶部34に格納されており、受信ノードEを経由して探索されたノードの識別子が訪問済みノード記憶部34に格納されているかどうかを判定する。
【0099】
受信ノードEの識別子が訪問済みノード記憶部34に格納されている場合には、情報更新部41は、受信ノードEと受信ノードEから探索された訪問済みノードの識別子を、訪問済みノード記憶部34に残し、それ以外のノードの識別子を削除する。また、情報更新部41は、受信ノードEを経由して探索された訪問済みノードに関する情報をノード情報記憶部35に残し、それ以外のノードに関する情報を削除する。本動作例では、ノード15、ノード14、ノード16が訪問済みノード記憶部34に残され、ノード14とノード16の情報がノード情報記憶部35に残される(図15A)。経路パラメータ計算部26は、ノード15、ノード14およびノード16の経路探索情報を利用することが可能となる。
【0100】
これ以降は、受信ノードDと同様に、探索ノード決定、経路パラメータ計算、および経路パラメータ判定の処理を繰り返すと、探索ノードがノード12と決定され、経路計算が完了する(図15B)。
【0101】
第1の実施形態では、受信ノードEから新たに経路計算を行ったが、本実施形態では、ノード14とノード16への経路探索を行う必要がなく、計算量が少なくてすむ。経路出力部29が出力する経路の情報は、第1の実施形態と同じになる。
【0102】
本実施形態によれば、第1の実施形態と同様にマルチキャスト経路全体の合計コストを最小限に抑えられるだけでなく、ある受信ノードからの経路計算において、並行して計算された、次の計算順位の受信ノードからの経路を、次の受信ノードからの経路計算時に流用することで、計算量の低減を図ることが可能である。
【0103】
なお、上述した第1または第2の実施形態で説明した動作をプログラムとして構築し、そのプログラムをマルチキャスト経路計算装置として利用されるコンピュータにインストールして実行させる、または、そのプログラムをネットワークを介して流通させることが可能である。
【0104】
また、構築されたプログラムを、コンピュータ読み取り可能なディスク装置や、CD−ROM等の搬送可能な記憶媒体に格納し、コンピュータにインストールして実行させる、または、配布することが可能である。
【0105】
本発明は、上記の実施形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【0106】
100、200、300 マルチキャスト経路計算装置
1 要求取得手段
2 計算順序決定手段
4 探索ノード決定手段
5 経路パラメータ計算手段
6 経路パラメータ判定手段
7 経路保存手段
8 経路出力手段
11 経路記憶手段
12 訪問済みノード記憶手段
13 ノード情報記憶手段
20 制御部
30 記憶部

【特許請求の範囲】
【請求項1】
ネットワーク内の各ノードに対応する識別子、隣接するノード同士を接続する経路および各経路のコスト値の情報を含むトポロジ情報、ならびに送信ノードおよび複数の受信ノードのそれぞれの識別子の情報を取得し、
前記複数の受信ノードについて経路計算の順位を決め、
決定した順位の最上位の受信ノードから最下位の受信ノードまで順に第1の探索ノードに設定し、
設定した第1の探索ノード毎に、該第1の探索ノードの隣接ノードについて、該第1の探索ノードと該隣接ノードの間のコスト値を合計コストとし、該合計コストが最小となる隣接ノードを第2の探索ノードとし、該第2の探索ノードが前記送信ノード、または該第1の探索ノードよりも前記順位が上位の受信ノードにおける経路計算で設定された経路上のノードに一致するまで、前記第1の探索ノードから該第2の探索ノードを経由して該第2の探索ノードの隣接ノードまでの前記合計コストが最小となる隣接ノードを第2の探索ノードに順次更新することで、前記第1の探索ノードから更新された第2の探索ノードを順に結ぶ経路を設定し、
前記第2の探索ノードについて前記隣接ノードの前記合計コストを算出する際、該第2の探索ノードが前記複数の受信ノードのうち、いずれかの受信ノードと一致する場合、該第2の探索ノードまでの前記合計コストをゼロにリセットし、該第2の探索ノードを起点とする経路のコスト値を前記合計コストとする、経路計算方法。
【請求項2】
請求項1記載の経路計算方法において、
前記第1の探索ノードの前記隣接ノードおよび前記合計コスト、ならびに前記第2の探索ノードの前記隣接ノードおよび前記合計コストの情報を含む経路探索情報を保存し、
決定した順位のうち、任意の順位の受信ノードの経路計算を行う際、該任意の順位よりも上位の順位の受信ノードの経路計算の過程で保存された前記経路探索情報を利用する、経路計算方法。
【請求項3】
請求項1または2記載の経路計算方法において、
前記複数の受信ノードについて経路計算の順位を決める際、前記複数の受信ノードのそれぞれについて、前記送信ノードから該受信ノードに至るまでの経路の前記合計コストのうち最小値である最小合計コストを求め、該最小合計コストが最も小さい受信ノードを前記最上位の受信ノードとし、該最小合計コストが最も大きい受信ノードを前記最下位の受信ノードとする、経路計算方法。
【請求項4】
ネットワーク内の各ノードに対応する識別子、隣接するノード同士を接続する経路および各経路のコスト値の情報を含むトポロジ情報、ならびに送信ノードおよび複数の受信ノードのそれぞれの識別子の情報を保存する記憶手段と、
前記要求取得手段から受け取る前記複数の受信ノードについて経路計算の順位を決める計算順序決定手段と、
前記計算順序決定手段が決定した順位の最上位の受信ノードから最下位の受信ノードまで順に第1の探索ノードに設定し、設定した第1の探索ノード毎に、該第1の探索ノードの隣接ノードについて、該第1の探索ノードと該隣接ノードの間のコスト値を合計コストとし、該合計コストが最小となる隣接ノードを第2の探索ノードとし、前記第1の探索ノードから該第2の探索ノードを経由して該第2の探索ノードの隣接ノードまでの前記合計コストが最小となる隣接ノードを第2の探索ノードに順次更新する経路パラメータ計算手段と、
前記第2の探索ノードが前記送信ノード、または該第1の探索ノードよりも前記順位が上位の受信ノードにおける経路計算で設定された経路上のノードに一致すると、前記第1の探索ノードから更新された第2の探索ノードを順に結ぶ経路を設定する経路パラメータ判定手段と、を有し、
前記経路パラメータ計算手段は、
前記第2の探索ノードについて前記隣接ノードの前記合計コストを算出する際、該第2の探索ノードが前記複数の受信ノードのうち、いずれかの受信ノードと一致する場合、該第2の探索ノードまでの前記合計コストをゼロにリセットし、該第2の探索ノードを起点とする経路のコスト値を前記合計コストとする、経路計算装置。
【請求項5】
請求項4記載の経路計算装置において、
前記経路パラメータ判定手段は、
前記経路パラメータ計算手段が出力する、前記第1の探索ノードの前記隣接ノードおよび前記合計コスト、ならびに前記第2の探索ノードの前記隣接ノードおよび前記合計コストの情報を含む経路探索情報を前記記憶手段に保存し、
前記経路パラメータ計算手段は、
決定した順位のうち、任意の順位の受信ノードの経路計算を行う際、該任意の順位よりも上位の順位の受信ノードの経路計算の過程で前記記憶手段に保存された前記経路探索情報を利用する、経路計算方法。
【請求項6】
請求項4または5記載の経路計算装置において、
前記計算順序決定手段は、
前記複数の受信ノードについて経路計算の順位を決める際、前記複数の受信ノードのそれぞれについて、前記送信ノードから該受信ノードに至るまでの経路の前記合計コストのうち最小値である最小合計コストを求め、該最小合計コストが最も小さい受信ノードを前記最上位の受信ノードとし、該最小合計コストが最も大きい受信ノードを前記最下位の受信ノードとする、経路計算装置。
【請求項7】
請求項1から3のいずれか1項記載の経路計算方法をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図7C】
image rotate

【図7D】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図8D】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図13D】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図14C】
image rotate

【図14D】
image rotate

【図15A】
image rotate

【図15B】
image rotate