(57)【特許請求の範囲】
【請求項１】
物理的なＩＰネットワーク上に論理的な仮想ネットワークを構成する通信装置であって、
自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する第１の探索手段と、
少なくとも１つの前記内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する第１の構成手段と、
ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する第２の探索手段と、
少なくとも１つの前記内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する第２の構成手段と、
前記自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、前記ＩＰサブネットワーク内に実在するゲートノード数を検出する実在ゲートノード数検知手段と、
前記実在ゲートノード数検知手段により検出された実在ゲートノード数に基づいて、前記自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する決定手段と、を有し、
前記実在ゲートノード数検知手段により検出された実在ゲートノード数が、目標ゲートノード数未満の場合に前記外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に前記外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加することを特徴とする通信装置。
【請求項２】
内部仮想ネットワークノードをＩＰネットワークのブロードキャストで探索し発見する第３の探索手段と、
仮想ネットワークゲートノードを仮想ネットワークのメッセージ配信で検索し発見する第４の探索手段と、を有することを特徴とする請求項１に記載の通信装置。
【請求項３】
内部仮想ネットワークノード数に対する所定の割合を目標ゲートノード数とする目標ゲートノード数決定手段を有することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
不定期間隔で前記自ノードが属するＩＰサブネットワーク内のゲートノードを探索する第５の探索手段と、
他ノードがゲートノードの探索を行った際、前記自ノードがゲートノードの探索を行うまでの時間を更新する更新手段と、を有し、
前記実在ゲートノード数が目標ゲートノード数未満なら外部仮想ネットワークゲートノードにリンクしゲートノードとなることでＩＰサブネットワーク内のゲートノード数を維持するような仮想ネットワークを構成することを特徴とする請求項１から３の何れか１項に記載の通信装置。
【請求項５】
前記自ノードが属するＩＰサブネットワーク内の内部仮想ネットワークゲートノード数を前記ＩＰサブネットワーク内の内部仮想ネットワークゲートノードに通知する通知手段と、
前記内部仮想ネットワークゲートノード数に応じて外部仮想ネットワークゲートノードへの最大リンク数を調節する調整手段と、を有し、
前記内部仮想ネットワークゲートノードが増加した場合にも外部仮想ネットワークとのリンク数が比例して増加しない仮想ネットワークを構成することを特徴とする請求項１から４の何れか１項に記載の通信装置。
【請求項６】
自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する第１の探索工程と、
少なくとも１つの前記内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する第１の構成工程と、
ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する第２の探索工程と、
少なくとも１つの前記内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する第２の構成工程と、
前記自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、前記ＩＰサブネットワーク内に実在するゲートノード数を検出する実在ゲートノード数検知工程と、
前記実在ゲートノード数に基づいて、前記自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する決定工程と、を有し、
前記実在ゲートノード数が、目標ゲートノード数未満の場合に前記外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に前記外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加することを特徴とするＰ２Ｐネットワーク構築方法。
【請求項７】
自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する処理と、
少なくとも１つの前記内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する処理と、
ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する処理と、
少なくとも１つの前記内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する処理と、
前記自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、前記ＩＰサブネットワーク内に実在するゲートノード数を検出する処理と、
前記実在ゲートノード数に基づいて、前記自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する処理と、をコンピュータに実行させ、
前記実在ゲートノード数が目標ゲートノード数未満の場合に前記外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に前記外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理的なＩＰネットワーク上にデータ配置に依存しない非構造なトポロジで論理的な仮想ネットワークを構成し、各ノードが隣接ノードへ転送することで、全てのノードへ検索クエリを配信するようなフラッディング検索を行う通信装置、Ｐ２Ｐネットワーク構築方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、サーバやクライアントといった区別が明確になっていない端末同士が対等に接続し、サービスを提供及び利用するＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ  ／Ｐｅｒｓｏｎａｌ  ｔｏ  Ｐｅｒｓｏｎａｌ）ネットワークが注目されている。このＰ２Ｐネットワークモデルは、データや負荷が分散されることからスケーラビリティや対障害性に強いといわれている。そして、Ｐ２Ｐネットワークモデルを利用した様々なアプリケーションが開発されている。代表的なアプリケーションには、ファイルを多数の端末で公開・共有するグヌーテラソフトがある。
【０００３】
このグヌーテラソフトは、物理的なＩＰネットワーク上に、データ配置に依存しない非構造なトポロジで仮想ネットワークを論理的に構成し、各ノードが隣接ノードへ検索クエリを転送し全てのノードへ検索クエリを配信することで、全てのノードが保有するファイルを検索するといったフラッディング検索を行う。そのため、グヌーテラソフトでは、検索に大量のメッセージがやり取りされ、それによるトラフィックの増加が問題となっている。またグヌーテラソフトは、ＩＰネットワークの物理的経路を考慮しないで仮想ネットワークを構成する。そのため、仮想ネットワーク上の近隣ノードが、物理的には遠方に位置することが多く、これもトラフィック増加の要因となっている。
【０００４】
そこで、物理ネットワークの通信トラフィックを低減し、効率の良い仮想ネットワークのトポロジを決定する方法がいくつか提案されている。特許文献１には、ピア間接続動作の応答時間を測定し、測定時間が相対的に短いものを物理的近傍ピアとして優先的に接続する技術が開示されている。しかし、この技術には、ピア間接続動作の応答時間がピアや通信回線の負荷状態により大きく変化するため、精度の良い判定ができないといった問題がある。
【０００５】
特許文献２には、物理ネットワーク上で多数の計算機間の距離を測定すると測定のための通信量が膨大になることを指摘し、分割仮想空間内で距離測定を行い、物理的に最適化したトポロジを持つ分割仮想空間を並べることで仮想空間全体の効率を上げる技術が開示されている。この技術は、距離測定を代表計算機に限定することで測定のための通信量を削減することを提案している。しかし、この方法で高い効果を得るためには、計算機の仮想空間座標を物理的に隣接する計算機が多い分割仮想空間にマッピングする必要があるが、特許文献２にその方法は開示も示唆もなされていない。さらに、計算機の距離を距離測定要求メッセージの送信から返信メッセージが届くまでの経過時間、つまりラウンド・トリップ・タイム、が特許文献１と同じであるという問題を持つ。また、特許文献２では、現在の空き帯域幅やホップ数を用いる方法も提示しているが、この方法は通信量と効果の面で特に優れている方法ではない。
【特許文献１】特開２００５−２５２５９６号公報
【特許文献２】特開２００６−３３３８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＰ２Ｐネットワーク構築法にはさらに以下のような問題点がある。仮想ネットワーク構成を物理ネットワーク構成に近い形で構成すると、無駄なメッセージの転送が抑制され通信トラフィックを低減することができる。しかし従来の方法は、ノード間の物理距離を測定するための通信量が多い割には、高精度な測定が困難で、しかも運用が複雑なことから有効な効果を上げられないといった問題がある。
【０００７】
仮想ネットワークに参加するとき最初に接続するノードの決定は、既知のノードアドレスを手動で入力するかサーバに問い合わせる方法が一般的である。しかし、サーバに問い合わせる方法をとったとしてもサーバのアドレスを入力する作業が必要である。したがって、仮想ネットワークに参加するには、ユーザが常に仮想ネットワークの存在を意識しなければならなかった。物理ネットワークのＩＰブロードキャストは、同一サブネットワーク内の装置を探索する手段としてよく利用されるが、サブネットワーク内のノードに優先的にリンクして仮想ネットワークを構成する本件に利用することで探索範囲の限定と探索の自動化を同時に行うことができる。
【０００８】
ゲートノードが少ないと、通信のボトルネックとなりパフォーマンスが低下する。また、ゲートノードが多いと、ゲートノード間の通信で通信負荷が増加する。全体の通信量はノード数で大きく変化するため、効率のよい仮想ネットワークを構成するためにはゲートノード数を動的に変化させるとよい。
【０００９】
ＩＰネットワークは複数のネットワークをルータで接続しており、仮想ネットワーク構成を物理ネットワーク構成に近づけるということは複数の仮想ネットワークノードグループを少数の回線で接続することになる。そしてＰ２Ｐネットワークなどの仮想ネットワークは端末で構成されることが多く、ノードの参加・離脱が激しい。そのため、複数の仮想ネットワークノードグループを接続するゲートノードが離脱すると、仮想ネットワークの分断が簡単に起きるといった問題がある。
【００１０】
ノードの参加・離脱に対して仮想ネットワークを安定的に保つためにはゲートノードが多いほうが良い。しかし比例して外部リンク数も多くなると通信パフォーマンスが低下する問題がある。
【００１１】
以上の問題点を鑑みて、本発明は、ノード探索に物理ネットワークを考慮した探索を行い、物理的に距離が近いサブネットワーク内のノードへ優先的にリンクを行うことで、物理ネットワークの通信トラフィックを低減する効率の良い仮想ネットワークを簡単に構成し安定的に運用することのできる通信装置、Ｐ２Ｐネットワーク構築方法、プログラムおよび記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１２】
本発明による通信装置は、物理的なＩＰネットワーク上に論理的な仮想ネットワークを構成する通信装置であって、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する第１の探索手段と、少なくとも１つの内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する第１の構成手段と、ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する第２の探索手段と、少なくとも１つの内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する第２の構成手段と、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、ＩＰサブネットワーク内に実在するゲートノード数を検出する実在ゲートノード数検知手段と、実在ゲートノード数検知手段により検出された実在ゲートノード数に基づいて、自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する決定手段と、を有し、実在ゲートノード数検知手段により検出された実在ゲートノード数が、目標ゲートノード数未満の場合に外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加することを特徴とする。
【００１３】
また、本発明による通信装置は、内部仮想ネットワークノードをＩＰネットワークのブロードキャストで探索し発見する第３の探索手段と、仮想ネットワークゲートノードを仮想ネットワークのメッセージ配信で検索し発見する第４の探索手段と、を有することを特徴とすることができる。
【００１４】
また、本発明による通信装置は、内部仮想ネットワークノード数に対する所定の割合を目標ゲートノード数とする目標ゲートノード数決定手段を有することを特徴とすることができる。
【００１５】
また、本発明による通信装置は、不定期間隔で自ノードが属するＩＰサブネットワーク内のゲートノードを探索する第５の探索手段と、他ノードがゲートノードの探索を行った際、自ノードがゲートノードの探索を行うまでの時間を更新する更新手段と、を有し、実在ゲートノード数が目標ゲートノード数未満なら外部仮想ネットワークゲートノードにリンクしゲートノードとなることでＩＰサブネットワーク内のゲートノード数を維持するような仮想ネットワークを構成することを特徴とすることができる。
【００１６】
また、本発明による通信装置は、自ノードが属するＩＰサブネットワーク内の内部仮想ネットワークゲートノード数をＩＰサブネットワーク内の内部仮想ネットワークゲートノードに通知する通知手段と、内部仮想ネットワークゲートノード数に応じて外部仮想ネットワークゲートノードへの最大リンク数を調節する調整手段と、を有し、内部仮想ネットワークゲートノードが増加した場合にも外部仮想ネットワークとのリンク数が比例して増加しない仮想ネットワークを構成することを特徴とすることができる。
【００１７】
また、本発明によるＰ２Ｐネットワーク構築方法は、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する第１の探索工程と、少なくとも１つの内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する第１の構成工程と、ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する第２の探索工程と、少なくとも１つの内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する第２の構成工程と、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、ＩＰサブネットワーク内に実在するゲートノード数を検出する実在ゲートノード数検知工程と、実在ゲートノード数に基づいて、自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する決定工程と、を有し、実在ゲートノード数が、目標ゲートノード数未満の場合に外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加することを特徴とする。
【００１８】
また、本発明によるプログラムは、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークノードを探索する処理と、少なくとも１つの内部仮想ネットワークノードに適宜リンクして仮想ネットワークを構成する処理と、ＩＰサブネットワーク外のノードとリンクする権利の有る仮想ネットワークゲートノードを探索する処理と、少なくとも１つの内部仮想ネットワークゲートノードに適宜リンクして仮想ネットワークを構成する処理と、自ノードが属するＩＰサブネットワーク内にある内部仮想ネットワークゲートノードを検出してカウントし、ＩＰサブネットワーク内に実在するゲートノード数を検出する処理と、実在ゲートノード数に基づいて、自ノードが属するＩＰサブネットワーク外にある外部仮想ネットワークゲートノードにリンクするか否かを決定する処理と、をコンピュータに実行させ、実在ゲートノード数が目標ゲートノード数未満の場合に外部仮想ネットワークゲートノードにリンクし、目標ゲートノード数以上の場合に外部仮想ネットワークゲートノードにリンクしないで仮想ネットワークに参加させることを特徴とする。
【００１９】
また、本発明による記録媒体は、上記プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２０】
本発明によれば、従来よりも通信負荷が小さい仮想ネットワークを構成できる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施形態における仮想ネットワークは、従来と同様に、サーバやクライアントといった区別が明確となっていないサーバントと呼ばれる端末が、複数のサーバントにリンクしメッシュ状のトポロジを構成する。ここではサーバントに分散されたファイルを共有するアプリケーションを想定しており、ファイルの検索と入手は「検索要求メッセージの送信」、「検索結果の受信」、「ファイルを受信」の３ステップで行われる。検索要求元のサーバントは目的ファイルを検索するためのキーワードを含んだ検索要求メッセージを送信する。
【００２２】
検索要求メッセージはバケツリレー方式で全てのサーバントにそれが届けられる。検索要求メッセージを受け取ったサーバントは、自分が公開しているファイルのファイル名やエイリアス名やメタファイル情報などを検索し、ヒットしたファイルのファイル名やアドレス情報を返す。この検索結果は、検索要求メッセージが辿った逆の順路で検索要求元に届く。そして、検索要求元のサーバントは各サーバントからの検索結果を受け取り、目的ファイルを選択し、そのファイルを保有するサーバントへ直接接続し、ファイルを受信する。
【００２３】
トポロジは検索のためのデータ配置を考慮しない非構造なものなので、ファイルはどのサーバントにも自由に配置できる。また、非構造なメッシュ状トポロジはあるサーバントが仮想ネットワークから離脱しても通信路が分断される可能性が低く、そして見つけたサーバントに適宜リンクすれば仮想ネットワークへ参加できるためサーバントの参加・離脱に強い。しかしその反面フラッディング通信によるトラフィックの増加が問題視される。
【００２４】
ネットワークの接続点に位置する装置を一般的にノードと呼ぶが、以後の説明ではサーバントに替えてノードという言葉を使用する。
【００２５】
図１は、物理的なＩＰネットワークとこの物理ネットワークにオーバーレイされた従来の仮想ネットワークと本実施形態の仮想ネットワークでトポロジがどう異なるかを表現した一例である。図１の下段は、サブネットワーク１にあるＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６台のＰＣと、サブネットワーク２にあるＫ、Ｌの２台のＰＣと、サブネットワーク３にあるＧ、Ｈ、Ｉ、Ｊの４台のＰＣと、サブネットワーク３を接続するルータ４と、で構成されたＩＰネットワークである。同じサブネットワーク内のＰＣ同士は１ホップの通信が可能であるが、他のサブネットワークにあるＰＣへは２ホップの通信となる。
【００２６】
このＡからＬの１２台のＰＣで、従来の手法を用いて仮想ネットワークを構成したときの一例を図１の上段、本実施形態の手法を用いて仮想ネットワークを構成したときの一例を図１の中段に示す。従来の仮想ネットワークは密なメッシュ状トポロジを構成しているのに対し、本実施形態の仮想ネットワークは少し疎なメッシュ状トポロジを構成している。従来の仮想ネットワークノードはノードの位置や距離に関係なくリンクするが、本実施形態の仮想ネットワークノードは同じサブネットワーク内のノードへ優先的に接続し、数の制限されたゲートノードだけが他のサブネットワークのノードへ接続するためである。なお、本実施形態では他のサブネットワークのノードへ接続するノードをゲートノードと呼ぶ。従来と本実施形態の仮想ネットワークで黒丸のノードは他のサブネットワークのノードにリンクしているノードである。
【００２７】
つまり、従来の一例においてはＡ、Ｃ、Ｄ、Ｆ、Ｇ、Ｈ、Ｉ、Ｋ、Ｌの９つのノードがゲートノードになっていることに対し、本実施形態ではＣ、Ｆ、Ｋ、Ｇの４つのノードがゲートノードになっている。図１中の従来の仮想ネットワークに比べ本実施形態の仮想ネットワークは黒丸のノードが少なく黒丸のノード同士のリンク数が少ないことが分かる。前述の通りサブネットワーク内の通信はルータ４を経由しないため、本実施形態の手法でゲートノードが少なくなることにより、ルータ４を通過するパケット量が抑えられ、物理ネットワークのホップ数が少ない効率のよい仮想ネットワーク通信が可能となる。
【００２８】
図２に、本実施形態のソフトウェア構造の一例を示す。図２中、一番下の層がＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信を行うための物理ネットワーク制御層７で、ＯＳＩ参照モデルでの物理層、データリンク層、ネットワーク層、トランスポート層が含まれる。図２中、真中の層が仮想ネットワークの構築と維持、及びメッセージ処理を行う仮想ネットワーク制御層６、図２中、一番上の層がユーザインターフェース及びファイルの公開、検索、取得を行うＰ２Ｐアプリケーション層５である。本実施形態では、主に仮想ネットワーク層６に関して説明を行う。
【００２９】
図３は、本実施形態でＰＣ、ノードと表現される通信装置の概略構成例を示すブロック図である。制御部１２は、ＣＰＵ、ＲＡＭ、ＲＯＭなどの演算器とメモリで構成され、ソフトウェアを実行する中心部分である。記憶部８は、ＨＤＤなどの補助記憶装置でありプログラムやデータが記憶される。入力部９は、マウスやキーボードやタッチパネル等で構成され、ユーザからのファイル検索指示やキーワード入力を受け付ける。表示部１０は、ランプや液晶ディスプレイで構成され、検索結果やファイルの内容を表示する。通信部１１は、イーサネット（登録商標）等の有線ＬＡＮ装置やＩＥＥＥ８０２．１１ａ／ｂ／ｇ等の無線ＬＡＮ装置で構成され、ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ通信を行う。
【００３０】
制御部１２の中には仮想ネットワーク制御層６のモジュールが示されている。仮想ネットワーク制御層６は、仮想ネットワーク管理部１３、メッセージ処理部１４、ノードリンク処理部１５から構成されている。ノードリンク処理部１５は、「内部ノードリンク」、「外部ノードリンク」、「リンク受付」といった機能を有する。ノードリンク処理部１５の「内部ノードリンク」と「外部ノードリンク」は、サブネットワーク内外のノードを探索・発見し、所定の数のノードに対してＴＣＰ／ＩＰ通信コネクション（リンク）を確立する機能である。また、「内部ノードリンク」と「外部ノードリンク」は、リンク先のノードがリンク拒否のメッセージを送ってきた場合には、コネクションを切断して他のノードに対してリンクを試行する機能を有する。「リンク受付」は、他のノードからのリンク要求に対してＴＣＰ／ＩＰ通信コネクションを確立する機能である。また、「リンク受付」は、リンク要求を受容できない場合には、リンク拒否のメッセージを送る機能を有する。
【００３１】
メッセージ処理部１４は、「要求メッセージ」、「返答メッセージ」、「メッセージ転送」といった機能を有する。「要求メッセージ」は、要求メッセージの生成や送受信を行う機能である。「返答メッセージ」は、返答メッセージの生成や送受信を行う機能である。「メッセージ転送」は、他のノードから受け取ったメッセージを他のノードに転送する機能である。要求メッセージのフラッディングは、要求メッセージを受け取ったノードが、要求メッセージを受け取ったノードにリンクしている、要求メッセージを送ってきたノードを除く、全てのノードに、受け取った要求メッセージをコピーして転送することで実現される。要求メッセージにはユニークなメッセージＩＤが振られており、要求メッセージを複数受け取った場合に、要求メッセージが同じか否かを判別できるようになっている。同じ要求メッセージを受け取ったノードは、受け取った要求メッセージを転送せずにその要求メッセージを破棄する。また、要求メッセージには生存カウンタがあり、ノードは要求メッセージをコピーして転送するときに、生存カウンタをディクリメントする。生存カウンタが０になった要求メッセージは、転送されずに、破棄される。そして、要求メッセージを転送したノードは、要求メッセージを送ってきたノードとメッセージＩＤとを関連付けた要求メッセージ管理情報を、記憶部８の要求メッセージ管理テーブルの１レコードとして記憶する。なお、要求メッセージを転送せずに破棄した場合であっても、要求メッセージを送ってきたノードが異なれば、要求メッセージを送ってきたノードとメッセージＩＤとを関連付けた要求メッセージ管理情報を、記憶部８の要求メッセージ管理テーブルの１レコードとして記憶する。
【００３２】
要求メッセージに対する返答メッセージも、ノードのメッセージ転送により要求メッセージ発行元に届く。要求メッセージに対して返答メッセージを生成したノードは、当該ノードの記憶部８の要求メッセージ管理テーブルを参照して要求メッセージを送ってきたノードを特定し、特定されたノードに対して返答メッセージを送信する。返答メッセージには、要求メッセージのメッセージＩＤが含まれている。返答メッセージを受け取ったノードは、当該ノードの記憶部８の要求メッセージ管理テーブルを参照し、同じメッセージＩＤの要求メッセージのレコードがある場合には、要求メッセージを送ってきたノードに受け取った返答メッセージを転送する。また、返答メッセージを送信するノードは、当該ノードの記憶部８の要求メッセージ管理テーブル内の同じメッセージＩＤを有するレコードに、返答メッセージを送信または転送したことを示す転送済みフラグを立てる。同じメッセージＩＤの要求メッセージのレコードがノードの記憶部８の要求メッセージ管理テーブル内にない場合には、受け取った返答メッセージを破棄する。
【００３３】
仮想ネットワーク管理部１３は、「ノードリンク監視」、「ゲートノード監視」、「サブネットワーク判定」、「ゲートノード数検出」、「内部ノード数検出」といった機能を有する。「ノードリンク監視」は、あるノードとそのノードにリンクされている他のノードとの通信コネクション（リンク）が正常に保たれているかを定期的に確認し、相手ノード（他のノード）の離脱や障害により通信コネクションが切れている場合には、新たなノードへリンクする指示を「ノードリンク処理」に対して出す機能である。「ゲートノード監視」は、ノードと同じサブネットワーク内に、ゲートノードが何台存在するかを不定期に調べ、所定の数のゲートノードが存在しない場合には自ノードがゲートノードになる処理を行う機能である。「サブネットワーク判定」は、あるＩＰアドレスを持つノードがサブネットワーク内にあるノードか否かを、サブネットワークマスクを用いて判定する機能である。「ゲートノード数検出」、「内部ノード数検出」は、今現在存在するゲートノード、内部ノードの台数とアドレスを調べる機能である。調べ方には、仮想ネットワークで要求メッセージを使って探索する方法と、ＩＰネットワークのブロードキャストを使って探索する方法とがある。
【００３４】
図１０は、本実施形態において、仮想ネットワーク上を流れるメッセージの一例を示す。メッセージの種類は、要求メッセージと返答メッセージとに分けられる。そして、返答メッセージは、要求メッセージに対するアクション結果である。以下、各メッセージを説明する。
ＮＯＤＥ＿ＳＥＲＣＨ＿ＩＮＮＥＲ＿ＡＬＬ（内部全ノードＩＰ要求メッセージ）は、サブネットワーク内にある、全ノードのＩＰアドレスを収集するための要求メッセージである。ＮＯＤＥ＿ＳＥＲＣＨ＿ＩＮＮＥＲ＿ＧＡＴＥ（内部ゲートノードＩＰ要求）は、サブネットワーク内にある、ゲートノードのＩＰアドレスを収集するための要求メッセージである。ＮＯＤＥ＿ＳＥＲＣＨ＿ＯＵＴＥＲ＿ＧＡＴＥ（外部ゲートノードＩＰ要求）は、サブネットワーク外にある、ゲートノードのＩＰアドレスを収集するための要求メッセージである。ＮＯＤＥ＿ＲＥＳＵＬＴ＿ＡＤＤＲＥＳＳ（アドレス返答）は、ＮＯＤＥ＿ＳＥＲＣＨ要求メッセージに対してノードアドレス情報を返信するための返答メッセージである。ＡＰＰＬＩ＿ＳＥＲＣＨ＿ＦＩＬＥ（ファイル検索要求）は、Ｐ２Ｐアプリケーションプログラムからのファイル検索要求メッセージである。ファイル検索要求を受け取ったノードは、そのメッセージに付属する検索条件に合致するファイルを、対象とする記憶装置から検索し、ファイル名やファイルサイズ等のリストを作成する。ＡＰＰＬＩ＿ＲＥＳＵＬＴ＿ＦＩＬＥ（ファイル検索結果返答メッセージ）は、Ｐ２Ｐアプリケーションプログラムからのファイル検索結果返答メッセージである。ファイル検索要求を受け取ったノードが、ファイル検索要求への返答として、ファイル検索要求と共に作成したリストを、ファイル検索要求の送信元に送る。実際のメッセージにはいろいろな内容が含まれるがここでは説明を割愛する。
【００３５】
図４を参照して、ノードが新規に仮想ネットワークへ参加するときの動作を説明する。仮想ネットワークへ新規に参加しようとするノードは、最初に内部ノードを探索し（ステップＳ１０１）、内部ノードのアドレス情報を収集する（ステップＳ１０２）。これにより、新規に参加しようとするノードは、リンクを試みるノードのＩＰアドレスを入手することができる。この入手の方法には、２通りの方法がある。１つ目は仮想ネットワークのメッセージを利用する方法で、既知の内部ノードへリンクした後、内部全ノードＩＰ要求メッセージで内部ノードのアドレス情報を収集する。２つ目はＩＰネットワークのブロードキャストにより内部ノードのアドレス情報を収集する方法である。
【００３６】
図８を参照して、ＩＰアドレスの入手方法のそれぞれについて説明する。図１の中段にある仮想ネットワークのサブネットワークＮ３にノードＭが参加するとして説明する。最初に、仮想ネットワークのメッセージを利用する方法の場合について説明する。ノードＭは、ユーザによって設定されたＩＰアドレスに従ってノードＨに仮リンクする。仮リンクしたら内部全ノードＩＰ要求メッセージを送信し、アドレス返答メッセージを一定時間待つ。ノードＨは、ノードＭから受け取った内部全ノードＩＰ要求メッセージをノードＩとノードＪに転送し、アドレス返答メッセージをノードＭに返す。
【００３７】
ノードＩは、ノードＨから受け取った内部全ノードＩＰ要求メッセージをノードＧに転送し、かつ、アドレス返答メッセージをノードＨに返す。そして、ノードＪから受け取った内部全ノードＩＰ要求メッセージを破棄する。ノードＪは、ノードＨから受け取った内部全ノードＩＰ要求メッセージをノードＧに転送し、かつ、アドレス返答メッセージをノードＨに返す。ノードＩは、ノードＧから受け取ったアドレス返答メッセージをノードＨに転送する。ノードＨは、ノードＩ、Ｊから受け取ったアドレス返答メッセージをノードＭに転送する。内部ノードのアドレス情報を収集したノードＭは、ノードＨへの仮リンクを切断する。
【００３８】
次に、ＩＰネットワークのブロードキャストを利用して内部ノードのアドレス情報を収集する方法の場合について説明する。ノードＭは、アドレス情報の返信を要求するＵＤＰパケットをブロードキャストアドレスに発信してアドレス情報の返信を一定時間待つ。前記ＵＤＰパケットは、サブネットワーク３内のノードＧ、Ｈ、Ｉ、Ｊに届けられる。ＵＤＰパケットを受け取った各ノードは、アドレス情報の入ったＵＤＰパケットをユニキャストでノードＭに送信する。ノードＭは、ノードＧ、Ｈ、Ｉ、Ｊのそれぞれからアドレス情報の入ったＵＤＰパケットを受信することで、ノードＧ、Ｈ、Ｉ、Ｊのアドレス情報を取得し、内部ノードのアドレス情報を収集する。
【００３９】
図９を参照して、ノードＧがノードＭに返信するアドレス情報の例を示す。図９のアドレス情報は、ノードＧにアドレス情報テーブルとして格納されている。ここでは、ノードＧの送信するアドレス情報を例に説明を行うが、仮想ネットワークノードとして機能している各ノードはアドレス情報テーブルを格納しており、アドレス情報をノードＭに送信する。表の１列目は、ノードＧが仮想ネットワークノードとして把握しているノードのＩＰアドレスである。２列目はリンクフラグである。リンクフラグは、ノードＧがそのノードに対してリンクしていなければ０、リンクしていれば１、リンクされていれば２となる。３列目はゲートノードフラグである。ゲートノードフラグは、ノードがゲートノードであれば１、ゲートノードでなければ０となる。４列目は仮リンクフラグである。リンクが仮リンクであれば１、仮リンクでなければ０となる。図９の例では、ノード「192.168.300.4」とのリンクが仮リンクであることを示している。表の１行目が自己のノードの情報、つまりノードＧの情報である。
【００４０】
図４に戻り、内部ノードのアドレス情報を収集した後の処理について説明する。収集した内部ノードのアドレス情報のゲートノード数をカウントして、サブネットワーク内に存在するゲートノードの数である、存在ゲートノード数を求める（ステップＳ１０３）。続いて、存在ゲートノード数と所定の目標ゲートノード数とを比較する（ステップＳ１０４）。存在ゲートノード数が所定の目標ゲートノード数より多い場合（ステップＳ１０４、ＮＯ）、ステップＳ１１１へ進む。存在ゲートノード数が所定の目標ゲートノード数よりも少ない場合（ステップＳ１０４、ＹＥＳ）、ステップＳ１０５に進む。続いて、存在ゲートノード数が０であるか判定する（ステップＳ１０５）。内部ゲートノードが存在する場合（ステップＳ１０５、ＮＯ）は、内部ゲートノードに仮リンクを行う（ステップＳ１０７）。内部ゲートノードが存在しない場合（ステップＳ１０５、ＹＥＳ）は、外部ノードに仮リンク（ステップＳ１０６）する。仮リンクする外部ノードは、ユーザが手動で入力したＩＰアドレスのノードや、ディレクトリサーバから入手したＩＰアドレスのノードである。ゲートノードに仮リンクしたら外部ゲートノードＩＰ要求メッセージで外部ゲートノードのアドレス情報を収集する（ステップＳ１０８）。
【００４１】
図８を用いて、外部ゲートノードＩＰ要求メッセージのシーケンス例を内部全ノードＩＰ要求メッセージと同じ様に説明する。ノードＧに仮リンクしたノードＭは、外部ゲートノードＩＰ要求メッセージを送信してアドレス返答メッセージを一定時間待つ（ステップＳ１０９）。ノードＧは、ノードＭから受け取った外部ゲートノードＩＰ要求メッセージをノードＣとノードＫに転送するとともに、アドレス返答メッセージをノードＭに返す。ノードＣは、ノードＧから受け取った外部ゲートノードＩＰ要求メッセージをノードＦに転送するとともに、アドレス返答メッセージをノードＧに返す。
【００４２】
そしてノードＣは、ノードＫから受け取った外部ゲートノードＩＰ要求メッセージを破棄する。ノードＦは、ノードＣから外部ゲートノードＩＰ要求メッセージを受け取るとアドレス返答メッセージをノードＣに返す。ノードＫは、ノードＧから外部ゲートノードＩＰ要求メッセージを受け取るとアドレス返答メッセージをノードＧに返す。ノードＣは、ノードＦから受け取ったアドレス返答メッセージをノードＧに転送する。ノードＧは、ノードＣ、Ｋから受け取ったアドレス返答メッセージをノードＭに転送する。
【００４３】
再び図４に戻り、外部ゲートノードのアドレス情報を収集した後の処理について説明する。外部ゲートノードのアドレス情報を収集すると、所定の数のゲートノードにリンクし、仮リンクを切断する（ステップＳ１１０）。外部ゲートノードへのリンクが終わると、先に収集した内部ノードのアドレス情報を用いて、所定の数の内部ノードにリンクする（ステップＳ１１１）。また、存在ゲートノード数が目標ゲートノード数に達している場合には、外部ゲートノードへのリンクは行わずに所定の数の内部ノードにリンクする。
【００４４】
図５を参照して、ノードが新規に仮想ネットワークへ参加するときの処理を説明する。図５の点線で囲った部分、即ち、内部ノードをカウントし、内部ノード総数を求める工程（ステップＳ２０４）と、内部ノード総数に所定の割合を乗算し、目標ゲートノード数を求める工程（ステップＳ２０５）以外は、図４で説明した処理と同じため、点線内の処理のみを説明する。存在ゲートノード数を求めた（ステップＳ２０３）後、内部ノードアドレス情報から内部ノードをカウントし、内部ノードの総数を求める（ステップＳ２０４）。この作業は存在ゲートノード数を求める工程（ステップＳ２０３）と同時に行うと効率がよい。そして内部ノード総数に所定の割合を乗算し目標ゲートノード数を求める（ステップＳ２０５）。目標ゲートノード数は、内部ノード総数の４％程度とし最低２ノードといった下限ノード数を設けると良い。
【００４５】
図６を参照して、ゲートノード以外のノードであるノーマルノードがゲートノードの存在を確認し、不足があればゲートノードとして機能するときの処理を説明する。図６において点線で囲った部分は図４の処理と同じであるため、それ以外の部分を説明する。なお、本処理は、タイマ値のタイムベース間隔、例えば１秒間隔で実行されることを前提にしている。まず、他ノードがゲートノードを探索したかどうかをチェックする（ステップＳ３０１）。メッセージ処理のところで内部全ノードＩＰ要求メッセージ、内部ゲートノードＩＰ要求メッセージを受け取った時にフラグをたてるようにしておくことでチェックすることができる。このフラグが立っている場合（Ｓ３０１、ＹＥＳ）、ゲートノード探索開始タイマ値に所定の値を加算し（ステップＳ３０３）、フラグをクリアして終了する。フラグが立っていない場合（ステップＳ３０１、ＮＯ）、ゲートノード探索開始タイマ値をディクリメントする（ステップＳ３０２）。続いて、上記ステップＳ３０２でディクリメンとした後のゲートノード探索開始タイマ値が０になったかをチェックする（ステップＳ３０４）。ゲートノード探索開始タイマ値が０にならない場合（ステップＳ３０４、ＮＯ）、何もしないで終了する。ゲートノード探索開始タイマ値が０になった場合（ステップＳ３０４、ＹＥＳ）、内部ゲートノードの探索と存在ゲートノード数の検知を行う（ステップＳ３０５）。
【００４６】
続いて、内部ゲートノードの探索と存在ゲートノード数の探知の手法について、説明する。まず、内部ゲートノードＩＰ要求メッセージで内部ゲートノードのアドレス情報を収集する。内部ゲートノードＩＰ要求メッセージのシーケンス例を、ノードＨを探索元ノードとして図８で説明する。ノードＨは、内部ゲートノードＩＰ要求メッセージを送信してアドレス返答メッセージを一定時間待つ。ノードＩは、ノードＨから受け取った内部ゲートノードＩＰ要求メッセージをノードＧに転送する。ノードＩは、ゲートノードでないのでアドレス返答メッセージをノードＭに返さない。ノードＪは、ノードＨから受け取った内部ゲートノードＩＰ要求メッセージをノードＧに転送する。ノードＪは、ゲートノードでないのでアドレス返答メッセージをノードＭに返さない。ノードＧは、ノードＩから内部ゲートノードＩＰ要求メッセージを受け取る。ノードＧは、ゲートノードなのでアドレス返答メッセージをノードＩに返す。ノードＧは、内部ゲートノードＩＰ要求メッセージを外部ノードに転送せず、ノードＪから受け取った内部ゲートノードＩＰ要求メッセージを破棄する。ノードＩは、ノードＧから受け取ったアドレス返答メッセージをノードＨに転送する。
【００４７】
内部ゲートノードのアドレス情報を収集すると、ゲートノード数をカウントして存在ゲートノード数を求める。そして、存在ゲートノード数が所定の目標ゲートノード数より小さければ自分がゲートノードとして外部ノードにリンクするステップに進む。最後は次回ゲートノード探索の間隔であるゲートノード探索開始タイマ値を他のノードによる探索とタイミングが重なることを避け、探索密度に偏りが発生しないようランダムに決定する（ステップＳ３１３）。
【００４８】
図７を参照して、ゲートノードが他の内部ゲートノードの数に応じてリンク数を動的に変更するときの処理を説明する。図７のノーマルノードのフロー図は、図６の続きであり、内部ゲートノードの探索を行ったノーマルノードは、最後に存在ゲートノード数をそれぞれの内部ゲートノードに送信する（ステップＳ４０１）。存在ゲートノード数を配信する仮想ネットワークメッセージを作っても良いが、内部ゲートノードの数は多くないので、ここではＩＰネットワークでゲートノードに直接接続し、ユニキャストで存在ゲートノード数を送る。
【００４９】
ゲートノードは、存在ゲートノード数を受け取り（ステップＳ５０１）、存在ゲートノード数から外部仮想ネットワークゲートノードへの最大リンク数を決める（ステップＳ５０２）。現在の外部リンク数と最大リンク数とを比較する（ステップＳ５０３）。現在の外部リンク数が前記最大リンク数より多ければ（ステップＳ５０３、ＹＥＳ）、外部仮想ネットワークゲートノードへのリンクを最大リンク数以下に減らす（ステップＳ５０４）。また、現在の外部リンク数が前記最大リンク数以下である場合（ステップＳ５０３、ＮＯ）、外部リンク数と所定の最小リンク数とを比較する（ステップＳ５０５）。現在の外部リンク数が所定の最小リンク数より少なければ（ステップＳ５０５、ＹＥＳ）、外部仮想ネットワークゲートノードへのリンクを最小リンク数以上に増やす（ステップＳ５０６）。現在の外部リンク数が所定の最小リンク数以上（ステップＳ５０５、ＮＯ）であれば何もしない。
【００５０】
上記の説明では、リンクの種類として、リンク、仮リンクを用いて説明されているが、リンクまたは仮リンクによるノードリンク処理部６の動作について、図１１を用いて説明する。図１１では、リンク要求を送信するノードをリンク元ノード、リンク要求を受け取るノードをリンク先ノードとして説明する。
【００５１】
リンク元ノードのノードリンク処理部１５のノードリンク機能（内部、外部を含む）は、リンク先ノードのＩＰアドレスと所定のポート番号に対して、物理ネットワーク制御層７の各層を介して、リンク要求または仮リンク要求を送信する（ステップＳ１１０１）。
【００５２】
続いて、リンク先ノードのノードリンク処理部１５のリンク受付機能は、リンク元ノードから送信されたリンク要求または仮リンク要求を受信する（ステップＳ１１０２）。リンク先ノードのリンク受付機能は、リンク元ノードから送信された要求が、リンク要求か仮リンク要求かを判断する（ステップＳ１１０３）。判断の結果、仮リンク要求であれば（ステップＳ１１０３、ＹＥＳ）、アドレス情報テーブルの仮リンクフラグを真にして、リンク元ノードを登録し（ステップＳ１１０５）、ステップＳ１１０６に進む。リンク元ノードから送信された要求がリンク要求であれば（ステップＳ１１０３、ＮＯ）、アドレス情報テーブルを参照して、仮リンクフラグの立っているノードを除く、既にリンクしているノードの数を取得し、所定の数（リンク数上限）と比較する（ステップＳ１１０４）。
【００５３】
上記ステップＳ１１０４における比較の結果、既にリンクしているノードの数がリンク数上限よりも少なければ（ステップＳ１１０４、ＮＯ）、アドレス情報テーブルの仮リンクフラグを偽にして、リンク元ノードを登録し（ステップＳ１１０５）、ステップＳ１１０６に進む。その後、リンク受付機能は、リンク要求を許可する旨のリンク要求結果を物理ネットワーク制御層７の各層を介して、リンク元ノードに送信する（ステップＳ１１０６）。
【００５４】
一方、上記ステップＳ１１０４における比較の結果、既にリンクしているノードの数がリンク数上限よりも多ければ（ステップＳ１１０４、ＹＥＳ）、リンク受付機能は、リンク要求を拒否する旨のリンク要求結果を物理ネットワーク制御層７の各層を介して、リンク元ノードに送信する（ステップＳ１１０７）。
【００５５】
リンク元ノードのノードリンク機能（内部、外部を含む）は、リンク先ノードから送信されたリンク要求結果を受信する（ステップＳ１１０８）。リンク元ノードのノードリンク機能（内部、外部を含む）は、受信したリンク要求結果が、リンク許可を示すものか、リンク拒否を示すものか、を確認する（ステップＳ１１０９）。
【００５６】
上記ステップＳ１１０９における確認の結果、リンク要求結果がリンク許可を示す場合（ステップＳ１１０９、ＹＥＳ）は、リンク元ノードのノードリンク機能（内部、外部を含む）は、リンク先ノードをアドレス情報テーブルに登録して（ステップＳ１１１０）、リンク要求のプロセスを終了する。このとき、リンク要求が仮リンク要求であった場合には、仮想ネットワークテーブルの仮リンクフラグを真とする。
【００５７】
一方、上記ステップＳ１１０９における確認の結果、リンク要求結果がリンク拒否を示す場合（ステップＳ１１０９、ＮＯ）には、リンク先ノードへのリンク要求のプロセスを終了し、ノードリンク処理機能は、異なるリンク先ノードへのリンク要求のプロセスを開始する。
【００５８】
アドレス情報テーブルにリンク先ノードが登録されると、図２の仮想ネットワーク制御層６のメッセージ処理機能により仮想ネットワークメッセージをやり取りできるようになる。ただ、仮リンク状態では相対的に負荷の小さいＮＯＤＥ＿ＳＥＲＣＨ、ＮＯＤＥ＿ＲＥＳＵＬＴ系のメッセージだけをやり取りできるように設計されている。すなわち、仮リンク状態ではファイルの検索はできないが、リンク先ノードに接続を拒否されることが無いので、確実にノードアドレスを収集できるメリットがある。
【００５９】
以上の実施形態により、従来よりも通信負荷が小さい仮想ネットワークを構成することができる。また、ＩＰブロードキャストを、サブネットワーク内のノードに優先的にリンクして仮想ネットワークを構成する本実施形態に利用していることで、探索範囲の限定と探索の自動化を同時に行うことができ、参加や離脱が容易な仮想ネットワークを構成するこができる。また、全体の通信量はノード数で大きく変化するため、ゲートノード数を動的に変化させることによって、仮想ネットワークのパフォーマンス低下を防止することができる。また、仮想ネットワークの分断を防止することができる。さらに、サブネットワーク内のノード数に応じてゲートノード数と外部へのリンク数が適切に設定されることによって、仮想ネットワークのパフォーマンスを最適に保つことができる。
【図面の簡単な説明】
【００６０】
【図１】下段に示されるＩＰネットワークを、従来の仮想ネットワーク構築法と、本実施形態におけるネットワーク構築法例で構築した場合の対比を示す図である。
【図２】本実施形態における、ソフトウェアの構造の例を示す図である。
【図３】本実施形態における、通信装置の概略構成例を示すブロック図である。
【図４】本実施形態における、ノードが新規に仮想ネットワークへ参加するときの例を示すフロー図である。
【図５】本実施形態における、ノードが新規に仮想ネットワークへ参加するときに、ゲートノード数を求める工程を追加した場合の例を示すフロー図である。
【図６】本実施形態における、ノーマルノードがゲートノードの存在を確認し、不足があればゲートノードとして機能するときの例を示すフロー図である。
【図７】本実施形態における、ゲートノードが他の内部ゲートの数に応じてリンク数を動的に更新するときの例を示すフロー図である。
【図８】本実施形態における、ノードが新規に仮想ネットワークへ参加するときに、ゲートノード数を求める工程を追加した場合の例を示すフロー図である。
【図９】本実施形態における、ノードＧが返すアドレス情報例を示す図である。
【図１０】本実施形態における、仮想ネットワークメッセージの種類と内容の例を示す図である。
【図１１】本実施形態における、ノードリンク処理部の動作例を示すフロー図である。
【符号の説明】
【００６１】
１、２、３    サブネットワーク
４    ルータ
５    Ｐ２Ｐアプリケーション層
６    仮想ネットワーク制御層
７    物理ネットワーク制御層
８    記憶部
９    入力部
１０    表示部
１１    通信部
１２    制御部
１３    仮想ネットワーク管理部
１４    メッセージ処理部
１５    ノードリンク処理部
【図１】
0005078034.tif 000002
【図２】
0005078034.tif 000003
【図３】
0005078034.tif 000004
【図４】
0005078034.tif 000005
【図５】
0005078034.tif 000006
【図６】
0005078034.tif 000007
【図７】
0005078034.tif 000008
【図８】
0005078034.tif 000009
【図９】
0005078034.tif 000010
【図１０】
0005078034.tif 000011
【図１１】
0005078034.tif 000012