(57)【要約】【課題】仮想ハブを経由することなくクライアント間で直接的に通信を行うことにより、トラフィックの最適化を図ること。【解決手段】本発明は、複数の中継ノード２０のうちの少なくとも何れかとの通信リンクを持つ複数のクライアント３０がそれぞれ、中継ノード２０を経由して他のクライアント３０と互いに通信する仮想ネットワークにおいて、特定のクライアント３０（＃２，＃６）間にピアツーピアリンクｐを確立する装置であって、複数のクライアントのうち、任意の２つのクライアント３０（＃２，＃６）間において、連続した２つ以上の中継ノード２０（＃１〜＃４）を介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出し、グローバルフローが検出されたクライアント間にピアツーピアリンクｐを確立するネットワーク管理モジュール４０を備えている。【選択図】      図９
2008288872.tif 000002
【特許請求の範囲】
【請求項１】
複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、前記中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定のクライアント間にピアツーピアリンクを確立する装置であって、
前記複数のクライアントのうち、任意の２つのクライアント間において、連続した２つ以上の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出するグローバルフロー検出手段と、
前記グローバルフロー検出手段によってグローバルフローが検出されたクライアント間にピアツーピアリンクを確立するピアツーピアリンク確立手段とを備え、
前記ピアツーピアリンク確立手段によってピアツーピアリンクが確立されたクライアント間の通信が、前記ピアツーピアリンクを介してなされるようにしたことを特徴とするピアツーピア通信確立装置。
【請求項２】
請求項１のピアツーピア通信確立装置において、
前記グローバルフロー検出手段は、
前記中継ノードの全てについて、中継ノード間の通信フローを中継しない中継ノードであるリーフノードの各々に対する到達ホップ数を調査し、最大ホップ数が最も少ない中継ノードか、又は前記最大ホップ数が予め定めた閾値よりも小さい全ての中継ノードであるルートノードを決定するルートノード決定手段と、
前記ルートノード決定手段によって決定されたルートノードを開始点として、前記ルートノードから前記仮想ネットワークに沿って前記リーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローと判定するグローバルフロー判定手段と
を備えたことを特徴とするピアツーピア通信確立装置。
【請求項３】
請求項１のピアツーピア通信確立装置において、
前記グローバルフロー検出手段は、
前記中継ノードの全てについて、負荷が最大である中継ノードか、又は前記負荷が予め定めた閾値より大きい全ての中継ノードであるルートノードを決定するルートノード決定手段と、
前記ルートノード決定手段によって決定されたルートノードを開始点として、前記ルートノードから前記仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローと判定するグローバルフロー判定手段と
を備えたことを特徴とするピアツーピア通信確立装置。
【請求項４】
前記ルートノード決定手段は、前記ルートノードの決定の際に対象とする中継ノードを、前記中継ノードの全てではなく、前記リーフノードの全てとすることを特徴とする請求項２又は３のピアツーピア通信確立装置。
【請求項５】
前記グローバルフロー検出手段は、前記中継ノードの全てをそれぞれ開始点として、前記仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローとして検出することを特徴とする請求項１のピアツーピア通信確立装置。
【請求項６】
前記グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置。
【請求項７】
前記グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、アドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置。
【請求項８】
前記グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足し、かつアドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置。
【請求項９】
複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、前記中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定の中継ノード間にピアツーピアリンクを確立する装置であって、
前記複数の中継ノードのうち、ある２つの中継ノード間において、少なくとも１つの他の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出するグローバルフロー検出手段と、
前記グローバルフロー検出手段によってグローバルフローが検出された２つの中継ノード間にピアツーピアリンクを確立するピアツーピアリンク確立手段とを備え、
前記ピアツーピアリンク確立手段によってピアツーピアリンクが確立された中継ノード間の通信が、前記ピアツーピアリンクを介してなされるようにしたことを特徴とするピアツーピア通信確立装置。
【請求項１０】
複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、前記中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定のクライアント間にピアツーピアリンクを確立する方法であって、
前記複数のクライアントのうち、任意の２つのクライアント間において、連続した２つ以上の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出し、
前記グローバルフローが検出されたクライアント間にピアツーピアリンクを確立し、
前記ピアツーピアリンクが確立されたクライアント間の通信が、前記ピアツーピアリンクを介してなされるようにした
ことを特徴とするピアツーピア通信確立方法。
【請求項１１】
複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、前記中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定のクライアント間にピアツーピアリンクを確立するプログラムであって、
前記複数のクライアントのうち、任意の２つのクライアント間において、連続した２つ以上の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出する機能、
前記グローバルフローが検出されたクライアント間にピアツーピアリンクを確立する機能
をコンピュータに実現させるためのプログラム。
【請求項１２】
請求項１１のプログラムにおいて、
前記検出する機能は更に、
前記中継ノードの全てについて、中継ノード間の通信フローを中継しない中継ノードであるリーフノードの各々に対する到達ホップ数を調査し、最大ホップ数が最も少ない中継ノードか、又は前記最大ホップ数が予め定めた閾値よりも小さい全ての中継ノードであるルートノードを決定する機能と、
前記決定されたルートノードを開始点として、前記ルートノードから前記仮想ネットワークに沿って前記リーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローと判定する機能と
を含むプログラム。
【請求項１３】
請求項１１のプログラムにおいて、
前記検出する機能は更に、
前記中継ノードの全てについて、負荷が最大である中継ノードか、又は前記負荷が予め定めた閾値より大きい全ての中継ノードであるルートノードを決定する機能と、
前記決定されたルートノードを開始点として、前記ルートノードから前記仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローと判定する機能と
を含むプログラム。
【請求項１４】
前記決定する機能は、前記ルートノードの決定の際に対象とする中継ノードを、前記中継ノードの全てではなく、前記リーフノードの全てとする請求項１２又は１３のプログラム。
【請求項１５】
前記検出する機能は、前記中継ノードの全てをそれぞれ開始点として、前記仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、前記予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、前記連続するグローバルフロー候補を前記グローバルフローとして検出する機能を含む請求項１１のプログラム。
【請求項１６】
前記検出する機能は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定する機能を含む請求項１１のプログラム。
【請求項１７】
前記検出する機能は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、アドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定する機能を含む請求項１１のプログラム。
【請求項１８】
前記検出する機能は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足し、かつアドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定する機能を含む請求項１１のプログラム。
【請求項１９】
複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、前記中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定の中継ノード間にピアツーピアリンクを確立するプログラムであって、
前記複数の中継ノードのうち、ある２つの中継ノード間において、少なくとも１つの他の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出する機能、
前記グローバルフロー検出手段によってグローバルフローが検出された２つの中継ノード間にピアツーピアリンクを確立する機能
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピア通信確立装置、方法、及びプログラムに関し、更に詳しくは、仮想ネットワークにおけるグローバルフロー検出に基づいてピアツーピア通信を確立する装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
例えば、ＴＣＰ／ＩＰネットワークのような既存の物理的なネットワーク（以後、「アンダーレイネットワーク」と称する）上に、ソフトウェアにて構築する仮想的なネットワークをオーバレイネットワークと呼ぶ。
【０００３】
主なオーバレイネットワーク（以後、「仮想ネットワーク」とも称する）として、以下のように、いわゆるピアツーピア（Ｐ２Ｐ）ネットワーク（例えば、非特許文献１乃至７）と呼ばれるものや、仮想ローカルエリアネットワーク（以後、「仮想ＬＡＮ」と称する）がある。
【０００４】
ピアツーピアネットワークは、現状、ファイル交換（Ｗｉｎｎｙ，ＢｉｔＴｏｒｒｅｎｔ等）、音声通信（Ｓｋｙｐｅ等）などに広く利用されている。その方式により、大きく以下の２つ、すなわち、（１）ホストやコンテンツの探索は特別なサーバに依存するが、最終的なデータの送受信はピアツーピアのホスト間で行なうものと、（２）データの送受信だけでなく、ホストやコンテンツの探索そのものも、特別なサーバを必要とせず、完全に対等な立場のホスト間で分散協調して行なうものとに分けられる。なお、ホスト、コンテンツの探索に、特定のサーバではないが、特別な役割を果たすホスト群を利用する、上記２つの中間的な方式を用いるものもある。
【０００５】
一方、仮想ＬＡＮとして代表的なものに、ソフトイーサ株式会社製のＳｏｆｔｅｔｈｅｒ（Ｐａｃｋｅｔｉｘ）（例えば、非特許文献８乃至９）がある。Ｓｏｆｔｅｔｈｅｒ（Ｐａｃｋｅｔｉｘ）は仮想ネットワークの一例である仮想イーサネット（登録商標）を構築するソフトウェア群である。Ｓｏｆｔｅｔｈｅｒ（Ｐａｃｋｅｔｉｘ）又はこれに類似したソフトウェアでの仮想イーサネットの構築方法は例えば以下の通りである。
【０００６】
すなわち、先ず、ある計算機上にイーサネットスイッチングハブをエミュレートするソフトウェア（以後、「仮想ハブ」と称する）を動作させる（以後、仮想ハブを動作させる計算機を「サーバ」と称する。）。
【０００７】
次に、仮想イーサネットに参加を希望する計算機が、ソフトウェアにて構築された仮想的なネットワークインタフェース（以後、「仮想ネットワークインタフェース」と称する）を介して、仮想ハブに接続する（以後、仮想ネットワークインタフェースを動作させる計算機を「クライアント」と称する)。
【０００８】
このような仮想イーサネットの一般的な構成を図１８に示す。
【０００９】
例えばＴＣＰ／ＩＰネットワークであるアンダーレイネットワーク１５０は、オーバレイネットワークである仮想イーサネット１５４を構築する基盤となる物理ネットワークである。アンダーレイネットワーク１５０は、ファイアウォール１５６、ルータ１５７、リンク層の通信装置（イーサネットならばハブやスイッチングハブ）により構成される。ルータ１５７は、ＴＣＰ／ＩＰネットワークを構成するネットワーク層の装置であり、一般的なものであることからここではその詳細説明を割愛する。また、ファイアウォール１５６は、内部ネットワーク１６０と外部ネットワーク１６１との境界に設置されるセキュリティ装置であり、一般的なものであることからここではその詳細な説明を割愛する。
【００１０】
クライアント１５３は、仮想イーサネット１５４を構成する仮想ハブ１５１に接続する計算機であり、仮想ネットワークインタフェース１５２を介して仮想ハブ１５１に接続する。仮想ハブ１５１は、このように複数のクライアント１５３とのコネクションを保持する中継ノードとして機能する。サーバ１５５は、このような仮想ハブ１５１を配置するネットワーク仮想化装置である。本明細書では、このようなネットワーク仮想化装置であるサーバ１５５と、ネットワーク仮想化装置によって制御される端末であるクライアント１５３とを合わせてネットワーク仮想化システムと称する。仮想イーサネット１５４は、一つ又は複数の仮想ハブ１５１に、それぞれ仮想ネットワークインタフェース１５２を持った複数のクライアント１５３が接続することにより構築される。
【非特許文献１】電子情報通信学会誌、２００４年９月号、「Ｐ２Ｐ総論Ｉ  ブローカーレスモデルの挑戦」
【非特許文献２】電子情報通信学会誌、２００４年１０月号、「Ｐ２Ｐ総論ＩＩ  Ｐ２Ｐテクノロジ」
【非特許文献３】電子情報通信学会誌、２００４年１２月号、「Ｐ２Ｐ総論ＩＩＩ  Ｐ２Ｐサービスとビジネス」
【非特許文献４】電子情報通信学会誌、２００５年１月号、「Ｐ２Ｐ総論ＩＶ  最新動向と将来展望」
【非特許文献５】株式会社アスキー、ＵＮＩＸ（登録商標）  ＭＡＧＡＺＩＮＥ、２００５年９月号、「Ｐ２Ｐ技術の基礎知識［１］」
【非特許文献６】株式会社アスキー、ＵＮＩＸ  ＭＡＧＡＺＩＮＥ、２００５年１０月号、「Ｐ２Ｐ技術の基礎知識［２］」
【非特許文献７】株式会社アスキー、ＵＮＩＸ  ＭＡＧＡＺＩＮＥ、２００５年１１月号、「Ｐ２Ｐ技術の基礎知識［３］」
【非特許文献８】株式会社アスキー、公式ＳｏｆｔＥｔｈｅｒ活用ガイド
【非特許文献９】ｈｔｔｐ:／／ｗｗｗ．ｓｏｆｔｅｔｈｅｒ．ｃｏｍ、ソフトイーサ株式会社ホームページ
【発明の開示】
【発明が解決しようとする課題】
【００１１】
このような従来の仮想イーサネット１５４では、仮想イーサネット１５４に属するクライアント１５３間のトラフィックは全て仮想ハブ１５１、すなわちサーバ１５５を経由すること、及び、仮想イーサネット１５４に属するクライアント１５３同士、或いはクライアント１５３とサーバ１５５との位置関係はアンダーレイネットワーク１５０のトポロジを考慮したものではない。従って、  
１．仮想ハブ１５１のスケーラビリティ確保が困難である。  
２．アンダーレイネットワーク１５０への負荷が増大し、設備投資コストが増大する。  
３．複数の仮想ハブ１５１の設置や、複数の仮想ハブ１５１間でのクライアント１５３の繋ぎ替えなどの管理コストが増大する。  
という問題が生じる。
【００１２】
本発明はこのような事情に鑑みてなされたものであり、仮想ハブを経由することなくクライアント間で直接的に通信を行うことにより、トラフィックの最適化を図ることが可能なピアツーピア通信確立装置、方法、及びプログラムを提供することを目的とする。特に、複数の仮想ハブを経由して通信しているクライアント間においてもそれら仮想ハブ群を経由することなく、直接的に通信を行うことにより、トラフィックの最適化を図るピアツーピア通信確立装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために、本発明では、以下のような手段を講じる。
【００１４】
すなわち、請求項１の発明は、複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定のクライアント間にピアツーピアリンクを確立する装置であって、複数のクライアントのうち、任意の２つのクライアント間において、連続した２つ以上の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出するグローバルフロー検出手段と、グローバルフロー検出手段によってグローバルフローが検出されたクライアント間にピアツーピアリンクを確立するピアツーピアリンク確立手段とを備えている。
【００１５】
そして、ピアツーピアリンク確立手段によってピアツーピアリンクが確立されたクライアント間の通信が、ピアツーピアリンクを介してなされる。
【００１６】
請求項２の発明は、請求項１のピアツーピア通信確立装置において、グローバルフロー検出手段は、中継ノードの全てについて、中継ノード間の通信フローを中継しない中継ノードであるリーフノードの各々に対する到達ホップ数を調査し、最大ホップ数が最も少ない中継ノードか、又は最大ホップ数が予め定めた閾値よりも小さい全ての中継ノードであるルートノードを決定するルートノード決定手段と、ルートノード決定手段によって決定されたルートノードを開始点として、ルートノードから仮想ネットワークに沿ってリーフノード側へと中継ノードを辿りながら、予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、連続するグローバルフロー候補をグローバルフローと判定するグローバルフロー判定手段とを備えている。
【００１７】
請求項３の発明は、請求項１のピアツーピア通信確立装置において、グローバルフロー検出手段は、中継ノードの全てについて、負荷が最大である中継ノードか、又は負荷が予め定めた閾値より大きい全ての中継ノードであるルートノードを決定するルートノード決定手段と、ルートノード決定手段によって決定されたルートノードを開始点として、ルートノードから仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、連続するグローバルフロー候補をグローバルフローと判定するグローバルフロー判定手段とを備えている。
【００１８】
請求項４の発明は、ルートノード決定手段は、ルートノードの決定の際に対象とする中継ノードを、中継ノードの全てではなく、リーフノードの全てとすることを特徴とする請求項２又は３のピアツーピア通信確立装置である。
【００１９】
請求項５の発明は、グローバルフロー検出手段は、中継ノードの全てをそれぞれ開始点として、仮想ネットワークに沿って、中継ノード間の通信フローを中継しない中継ノードであるリーフノード側へと中継ノードを辿りながら、予め定めた基準を満足する通信フローであるグローバルフロー候補を検出して行き、２つのリーフノード間で連続するグローバルフロー候補が検出されれば、連続するグローバルフロー候補をグローバルフローとして検出することを特徴とする請求項１のピアツーピア通信確立装置である。
【００２０】
請求項６の発明は、グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置である。
【００２１】
請求項７の発明は、グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、アドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置である。
【００２２】
請求項８の発明は、グローバルフロー検出手段は、中継ノード間の通信フローを中継しない中継ノードである２つのリーフノードと、この２つのリーフノード間の全ての中継ノードとにおいて、トラフィック情報に関する同一条件を満足し、かつアドレス情報に関する同一条件を満足する通信フローを検出した場合、この２つのリーフノード間の通信フローをグローバルフローと判定するグローバルフロー判定手段を備えたことを特徴とする請求項１のピアツーピア通信確立装置である。
【００２３】
請求項９の発明は、複数の中継ノードのうちの少なくとも何れかとの通信リンクを持つ複数のクライアントがそれぞれ、中継ノードを経由して他のクライアントと互いに通信する仮想ネットワークにおいて、特定の中継ノード間にピアツーピアリンクを確立する装置であって、複数の中継ノードのうち、ある２つの中継ノード間において、少なくとも１つの他の中継ノードを介してなされ、かつ予め定めた基準を満足する通信フローであるグローバルフローを検出するグローバルフロー検出手段と、グローバルフロー検出手段によってグローバルフローが検出された２つの中継ノード間にピアツーピアリンクを確立するピアツーピアリンク確立手段とを備えている。
【００２４】
そして、ピアツーピアリンク確立手段によってピアツーピアリンクが確立された中継ノード間の通信が、ピアツーピアリンクを介してなされる。
【００２５】
請求項１０の発明は、請求項１の装置に対応する方法である。また、請求項１１乃至１９の発明は、請求項１乃至９の装置に対応するプログラムである。
【発明の効果】
【００２６】
本発明によれば、仮想ハブを経由することなくクライアント間で直接的に通信を行うことにより、トラフィックの最適化を図ることが可能なピアツーピア通信確立装置、方法、及びプログラムを実現することができる。
【００２７】
特に、複数の仮想ハブを経由して通信しているクライアント間においてもそれら仮想ハブ群を経由することなく、直接的に通信を行うことにより、トラフィックの最適化を図るピアツーピア通信確立装置、方法、及びプログラムを実現することができる。
【発明を実施するための最良の形態】
【００２８】
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
【００２９】
（第１の実施の形態）
本発明の第１の実施の形態について説明する。
【００３０】
図１は、本発明の第１の実施の形態に係るピアツーピア通信確立方法が適用される典型的なネットワーク１０の構成例を示す概念図である。なお、このネットワーク１０は、イーサネット（登録商標）等のＬＡＮ、あるいは公衆回線や専用回線を介して複数のＬＡＮが接続されるＷＡＮ等からなりうる。ＬＡＮの場合には、必要に応じてルータを介した多数のサブネットから構成される。また、ＷＡＮの場合には、公衆回線に接続するためのファイアウォール等を適宜備えている。しかしながら、ここでは、本発明の本質を曖昧にしないために、それらの図示及び詳細説明を省略し、仮想ハブ２０、クライアント３０、ネットワーク管理モジュール４０、及びＬＡＮ５０のみを示している。
【００３１】
図１に示すネットワーク構成は、クライアント３０（＃１）は仮想ハブ２０（＃２）に、クライアント３０（＃２）、クライアント３０（＃３）は仮想ハブ２０（＃１）に、クライアント３０（＃４）からクライアント３０（＃６）は仮想ハブ２０（＃４）にそれぞれ接続している。また、仮想ハブ２０（＃１）〜（＃４）は図示するように直列に接続している。なお、ＬＡＮ５０（＃１）〜（＃６）はアンダーレイネットワークのセグメント（通常、ＩＰネットワークのセグメント）を表し、セグメント間は通常、ルータ（図示せず）により接続されている。仮想ハブ２０（＃１）、及びクライアント３０（＃１）〜（＃３）はＬＡＮ５０（＃１）に、仮想ハブ２０（＃２）はＬＡＮ５０（＃２）に、仮想ハブ２０（＃３）はＬＡＮ５０（＃３）に、仮想ハブ２０（＃４）はＬＡＮ５０（＃４）に、クライアント３０（＃４）〜（＃６）はＬＡＮ５０（＃５）に、それぞれ属している。
【００３２】
更に、仮想ハブ２０（＃１）〜（＃４）は、ネットワーク管理モジュール４０に接続されている。ネットワーク管理モジュール４０はＬＡＮ５０（＃１）〜（＃６）のうち何れのＬＡＮ５０上に属すことも可能である。あるいは仮想ハブ２０（＃１）〜（＃４）や、クライアント３０等の計算機上で動作させることも、別の計算機上で動作させることも可能である。図１では一例として、ＬＡＮ５０（＃１）〜（＃６）のうちの何れかのＬＡＮ５０上に属しているものとして示している。
【００３３】
図２、図３、及び図４は、仮想ハブ２０、クライアント３０、及びネットワーク管理モジュール４０それぞれの構成例を示す機能ブロック図である。
【００３４】
図１の仮想ハブ２０（＃１）〜（＃４）に示すような仮想ハブ２０は、図２に示すように、イーサネットスイッチングハブ２１、転送テーブル２２、接続リンク制御部２３、仮想ポート２４、ネットワーク管理インタフェース部２５、ピアツーピアリンク制御部２６、アンダーレイネットワークプロトコル群２７、及び物理ネットワークインタフェース２８を備えている。
【００３５】
イーサネットスイッチングハブ２１は、いわゆる一般的なイーサネットスイッチングハブと同様の処理を行なう。
【００３６】
転送テーブル２２は、イーサネットフレームの宛先ＭＡＣアドレスと出力先ポートとのマッピングを保持するテーブルである。イーサネットスイッチングハブによるイーサネットフレーム転送処理に一般的に用いられるので、ここでは詳細は割愛する。
【００３７】
接続リンク制御部２３は、クライアント３０、あるいは他仮想ハブ２０とのアンダーレイネットワークでの接続（リンク）を保持、制御する部分であり、イーサネットスイッチングハブ２１から受け取ったイーサネットフレームを適切なアンダーレイネットワークのリンクへ送出する。また、アンダーレイネットワークから受信したイーサネットフレームをイーサネットスイッチングハブ２１へ渡す。
【００３８】
仮想ポート２４は、仮想ハブ２０において、通常のイーサネットスイッチングハブの通信ポートに相当する概念であり、論理的なケーブル、つまりアンダーレイネットワークの何らかの手段を用いた他仮想ハブ２０、あるいは仮想ネットワークインタフェース３２（図３を用いて後述する）との接続の端点である。従って、仮想ポート２４は、接続リンク制御部２３における、他仮想ハブ２０、あるいは自局が収容するクライアント３０（特に、仮想ネットワークインタフェース３２）とのアンダーレイネットワークでの接続（リンク）の端点を表し、仮想ハブ２０内で一意な識別子により区別される。
【００３９】
ネットワーク管理インタフェース部２５は、他仮想ハブ２０、あるいは自局が収容するクライアント３０（特に、仮想ネットワークインタフェース３２）との接続リンク状態、イーサネットスイッチングハブ２１での、それら接続リンク間のトラフィック量、トラフィックのプロトコル、クライアント３０のアンダーレイネットワークでの位置関係情報等を収集、管理し、更にネットワーク管理モジュール４０へのそれら情報の通知処理を行なう。
【００４０】
ピアツーピアリンク制御部２６は、ネットワーク管理インタフェース部２５経由でのネットワーク管理モジュール４０からの指示により、クライアント３０へピアツーピアリンク生成、削除の指示を行なう。
【００４１】
アンダーレイネットワークプロトコル群２７は、一般的には、ＴＣＰ／ＩＰ及びそれらを使用する上位プロトコル（例えばＨＴＴＰ）である。
【００４２】
物理ネットワークインタフェース２８は、実際の通信に使用される物理的なネットワークインタフェースである。
【００４３】
図１のクライアント３０（＃１）〜（＃６）に示すようなクライアント３０は、図３に示すように、アプリケーション／上位プロトコル群３１、仮想ネットワークインタフェース３２、アンダーレイネットワークプロトコル群３７、及び物理ネットワークインタフェース３８を備えている。更に、仮想ネットワークインタフェース３２は、イーサネットフレーム送受信部３３、送信先管理テーブル３４、及び接続リンク制御部３５を備えている。更に、接続リンク制御部３５は、複数の仮想ポート３６を備えている。
【００４４】
アプリケーション／上位プロトコル群３１は、仮想ネットワークインタフェース３２を使用するユーザアプリケーション、及び、上位プロトコル（例えばＴＣＰ／ＩＰ、ＨＴＴＰなど）である。
【００４５】
仮想ネットワークインタフェース３２では、イーサネットフレーム送受信部３３が、アプリケーション／上位プロトコル群３１からのデータをイーサネットフレームに格納し、接続リンク制御部３５へ送出する。また、接続リンク制御部３５から受け取ったイーサネットフレームからイーサネットヘッダを除去し、アプリケーション／上位プロトコル群３１に渡す。
【００４６】
また仮想ネットワークインタフェース３２では、接続リンク制御部３５が、仮想ハブ２０、あるいは他のクライアント３０とのアンダーレイネットワークでの接続（リンク）を保持、制御する部分であり、イーサネットフレーム送受信部３３から受け取ったイーサネットフレームを適切なアンダーレイネットワークのリンクへ送出する。また、アンダーレイネットワークから受信したイーサネットフレームをイーサネットフレーム送受信部３３へ渡す。
【００４７】
接続リンク制御部３５に備えられた仮想ポート３６は、接続リンク制御部３５における他仮想ハブ２０とのアンダーレイネットワークでの接続（リンク）の端点を表し、仮想ネットワークインタフェース３２内で一意な識別子により区別される。
【００４８】
送信先管理テーブル３４は、ピアツーピアリンクと、そのリンクのピアのＭＡＣアドレスとのマッピングを保持するテーブルである。後述するように、送信先管理テーブル３４に登録されているピア宛のイーサネットフレーム（ユニキャストフレーム）は該当ピアツーピアリンクへ、それ以外の宛先のイーサネットフレーム（ユニキャストフレーム）、ブロードキャストフレーム、マルチキャストフレームは仮想ハブ２０とのリンクへ出力される。
【００４９】
アンダーレイネットワークプロトコル群３７は、一般的には、ＴＣＰ／ＩＰ、及びそれらを使用する上位プロトコル（例えばＨＴＴＰ）である。
【００５０】
物理ネットワークインタフェース３８は、実際の通信に使用される物理的なネットワークインタフェースである。
【００５１】
図１に示すようなネットワーク管理モジュール４０は、本発明のピアツーピア通信確立方法を実行するための例えば磁気ディスク等の記録媒体に記録されたプログラムや、インターネット等の通信ネットワークを介してダウンロードしたプログラムを読み込み、このプログラムによって動作が制御されるコンピュータによって実現される装置である。
【００５２】
このプログラムは、ネットワーク管理モジュール４０のような計算機（コンピュータ）に実行させることができるものであって、例えば磁気ディスク（フロッピー（登録商標）ディスク、ハ一ドディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリ等の記録媒体に格納し、またインターネット等の通信媒体により伝送して頒布することもできる。なお、記録媒体に格納されるプログラムは、ネットワーク管理モジュール４０のような計算機に実行させるソフトウェア手段（実行プログラムのみならずテーブルやデータ構造も含む）をネットワーク管理モジュール４０のような計算機内に構成させる設定プログラムをも含む。そして、本プログラムは、記録媒体から、あるいは通信媒体からネットワーク管理モジュール４０のような計算機に読み込まれると、ネットワーク管理モジュール４０のような計算機を動作させることによって、情報収集部４１、ルートノード決定部４２、グローバルフロー検出部４３、及びピアツーピアリンク制御部４４に処理を実行させる。
【００５３】
情報収集部４１は、各仮想ハブ２０のネットワーク管理インタフェース部２５と通信し、各仮想ハブ２０から、他の仮想ハブ２０やその仮想ハブ２０が収容するクライアント３０（特に、仮想ネットワークインタフェース３２）との接続リンク状態、イーサネットスイッチングハブ２１でのそれら接続リンク間の転送トラフィック量、トラフィックのプロトコル、クライアント３０のアンダーレイネットワークでの位置関係情報等を定期的に収集、管理する。また、上記情報から仮想ハブ２０、仮想ネットワークインタフェース３２の接続トポロジ状態（以後、接続ツリー情報）を作成する。
【００５４】
ここで例えば図５に示すように、クライアント３０（＃２）とクライアント３０（＃６）との間に、ある条件にマッチする可能性のあるトラフィックＴが発生したとする。すると情報収集部４１は、各仮想ハブ２０（＃１）〜（＃４）のネットワーク管理インタフェース部２５から上述したような情報を収集する。更に、収集した情報のうち、各仮想ハブ２０（＃１）〜（＃４）の保持する接続リンク情報から、図６に示すように、各仮想ハブ２０（＃１）〜（＃４）、及びそれらが収容するクライアント３０（仮想ネットワークインタフェース３２）の接続状態、つまり接続ツリー情報（ツリーのデータ構造）を作成する。
【００５５】
なお、図６では、図示の便宜上、仮想ハブ２０（＃３）をツリーのルートのように記しているが、以降の処理におけるルートノードが仮想ハブ２０（＃３）であることを意味している訳ではない。
【００５６】
ルートノード決定部４２は、図６に示すような接続ツリー情報から、ルートノードを決定する。ルートノードとは、グローバルフローの検出処理が開始される仮想ハブ２０のことを称する。グローバルフローとは、トラフィック量の基準値を上回る、あるいは同一の上位層プロトコル情報を格納しているなど、ある同じ条件を満たしたローカルフローが、連続した２つ以上の仮想ハブ２０に渡って存在する場合、それら連続したローカルフローを大域的な１つのフローであると見なし、グローバルフローと呼ぶ。
【００５７】
一方、ローカルフローとは、本明細書では、以下の２つの定義のうちの何れかを意味している。第１の定義では、ある仮想ハブ２０内において、ある２つの仮想ポート２４間のトラフィックが発生している状態（転送が行なわれている状態）を、これら仮想ポート２４間にフローがあるとし、ローカルフローと称している。
【００５８】
第２の定義では、ある仮想ハブ２０内において、転送テーブル２２に学習されている任意の２つのＭＡＣアドレス、及びそれらにそれぞれマッピングされている出力ポートのペアをローカルフローと称している。この場合、マッピングを、以下のように表す。  
｛仮想ポートｍ：ＭＡＣ１｝＝＞｛仮想ポートｎ：ＭＡＣ２｝  
ここでｍ、ｎは仮想ポートを識別する整数であり、ＭＡＣ１，ＭＡＣ２はその仮想ポートとマッピングされているＭＡＣアドレスであり、“⇒”は方向を表す（詳細は後述する）。
【００５９】
なお、このようなルートノード決定部４２が、ルートノードを決定する具体的な処理については後述する。
【００６０】
グローバルフロー検出部４３は、ルートノード決定部４２によって決定されたルートノードを開始ノードとしてグローバルフローを検出する。この検出方法の詳細は後述する。なお、グローバルフロー検出部４３は、特定の仮想ハブ２０をルートノードとすることなく、全ての仮想ハブ２０をルートノードとして、グローバルフロー検出処理を行なうことも可能である。
【００６１】
ピアツーピアリンク制御部４４は、グローバルフロー検出部４３によってグローバルフローが検出された場合、仮想ハブ２０のネットワーク管理インタフェース部２５経由で、クライアント３０へピアツーピアリンク生成の指示を行なう。例えば、グローバルフロー検出部４３が、図５に示すように、仮想ハブ２０（＃１）と仮想ハブ２０（＃４）との間、つまりクライアント３０（＃２）とクライアント３０（＃６）との間でグローバルフローを検出すると、ピアツーピアリンク制御部４４は、クライアント３０（＃２）とクライアント３０（＃６）とに、互いの間にピアツーピアリンクを生成し、ピアツーピア通信に移行するよう指示を出す。
【００６２】
一方、グローバルフロー検出部４３が、グローバルフローを検出しなかった場合、ピアツーピアリンク制御部４４は、更なる処理は行なわず、クライアント３０はそれまでと同様に仮想ハブ２０を経由して通信を行なう。
【００６３】
図７のフローチャートに示すように、ピアツーピアリンク制御部４４から、ピアツーピアリンクを生成する指示が、関連するクライアント３０（例えば、クライアント３０（＃２）とクライアント３０（＃６））に対してなされる（Ｓ１）と、上記指示を受け取ったクライアント３０の接続リンク制御部３５は、アンダーレイネットワークの何らかの手段（例えば、ＴＣＰコネクションやＳＳＬセッションなど）を使用して、ピアツーピアリンクによる通信路を生成し（Ｓ２）、クライアント３０（＃２）はクライアント３０（＃６）の仮想イーサネットのＭＡＣアドレスを、クライアント３０（＃６）はクライアント３０（＃２）の同ＭＡＣアドレスを送信先管理テーブル３４に登録する（Ｓ３）。
【００６４】
以後、クライアント３０（＃２）の接続リンク制御部３５は、図８のフローチャートに示すように、送信データを受け取ると（Ｓ１１）、クライアント３０（＃６）向けのイーサネットフレーム（宛先ＭＡＣアドレスとして、クライアント３０（＃６）のＭＡＣアドレスを持つもの）を前記ピアツーピアリンクに送出し（Ｓ１２：Ｎｏ、Ｓ１３：Ｙｅｓ、Ｓ１４)、それ以外の宛先ＭＡＣアドレス（ユニキャスト）を持つイーサネットフレームは仮想ハブ（＃１）とのリンクに送出する(Ｓ１２：Ｎｏ、Ｓ１３：Ｎｏ、Ｓ１５)。また、ブロードキャストフレーム、マルチキャストフレームも仮想ハブ２０（＃１）とのリンクに送出する（Ｓ１２：Ｙｅｓ、Ｓ１５）。
【００６５】
同様に、クライアント３０（＃６）は、クライアント３０（＃２）向けのイーサネットフレーム（宛先ＭＡＣアドレスとして、クライアント３０（＃２）のＭＡＣアドレスを持つもの）は前記ピアツーピアリンクに送出し、それ以外の宛先ＭＡＣアドレスを持つイーサネットフレーム、及びブロードキャストフレーム、マルチキャストフレームは仮想ハブ２０（＃４）とのリンクに送出する。
【００６６】
結果として、クライアント３０（＃２）とクライアント３０（＃６）との間のトラフィックは仮想ハブ２０（＃１）から仮想ハブ２０（＃４）を経由することがなくなり、これら仮想ハブ２０（＃１）〜（＃４）群への負荷、及び、アンダーレイネットワークであるＬＡＮ５０（＃２）、ＬＡＮ５０（＃３）、及びＬＡＮ５０（＃４）への負荷が軽減される。
【００６７】
最終的に、上記処理によりクライアント３０（＃２）とクライアント３０（＃６）と間のピアツーピア通信が確立された状態を図９に示す。実線ｐがピアツーピア通信リンクｐを示し、破線ｄが仮想ハブ２０経由の通信リンクｄを示す。
【００６８】
なお、一旦検出されたグローバルフローが、ある条件を満たさなくなった場合、つまりグローバルフローでなくなった場合には、グローバルフロー検出部４３がそれを検出し、ピアツーピアリンク制御部４４が、関連するクライアント３０に対して、ピアツーピアリンクの削除、及び仮想ハブ２０経由での通信への移行を指示する。
【００６９】
この場合、クライアント３０側の処理は、図１０のフローチャートに示すように、ネットワーク管理モジュールからの指示受信をトリガとして（Ｓ２１）、ピアツーピアリンクの削除（Ｓ２２）、及び送信先管理テーブル３４からの該当クライアントのＭＡＣアドレスの削除を行なう（Ｓ２３）。
【００７０】
なお、前述したように、ネットワーク管理モジュール４０は、仮想ハブ２０や、仮想ネットワークインタフェース３２が動作するクライアント３０で動作させることも、別の計算機上で動作させる事も可能である。また、ネットワーク管理モジュール４０の情報収集部４１、ピアツーピアリンク制御部４４と各仮想ハブ２０のネットワーク管理インタフェース部２５、ピアツーピアリンク制御部２６間の通信は、アンダーレイネットワークを使用した一般的なもので実現可能であるので、ここではその詳細説明を省略する。
【００７１】
次に、ルートノード決定部４２によってなされるルートノード決定方法の３つの例を説明する。
【００７２】
（ルートノード決定方法１）
ここでは、トポロジ上のツリーの中心の仮想ハブをルートノードとする。
【００７３】
ネットワーク管理モジュール４０のルートノード決定部４２は、全ての仮想ハブ２０について、全てのリーフノードへの到達ホップ数を調査し、最大ホップ数が最小である仮想ハブをルートノードとする。リーフノードとは、他仮想ハブ２０との接続が０個、或は１個である仮想ハブ２０であり、言い換えると、他仮想ハブ２０間のトラフィックを中継しない仮想ハブ２０である。
【００７４】
一例として図１１を用いて説明すると、仮想ハブ２０（＃１）から仮想ハブ２０（＃７）について、それぞれの仮想ハブ２０（＃１）〜（＃７）から各リーフノード（仮想ハブ２０（＃１），（＃４），（＃６），（＃７））へのホップ数は図１２のようになり、結果的に、仮想ハブ２０（＃３）がルートノードとなる。なお、トポロジによっては、複数の仮想ハブ２０が上記ルートノードの条件を満たすことが考えられるが、この場合は、別途、以下のａ）〜ｃ）のうちの少なくとも何れかの手段でルートノードを決定する。
【００７５】
ａ）上記条件を満たした複数ルートノードを全てルートノードとする。  
ｂ）ランダムに１つを選ぶ。  
ｃ）負荷を考慮する（後述するルートノード決定方法２との組み合わせとも言える)。
【００７６】
更には、最大ホップ数が、予め定められた閾値を下回る全ての仮想ハブ２０をルートノードとすることも可能である。また、ツリーを形成するデータ構造における、各ノード間のホップ数をカウントする方法は一般的なものであるので、ここでは詳細説明を省略する。
【００７７】
（ルートノード決定方法２）
ここでは、負荷の高い仮想ハブ２０をルートノードとする。
【００７８】
ネットワーク管理モジュール４０のルートノード決定部４２は、全ての仮想ハブ２０について、収容ノード数、ＣＰＵ使用率、メモリ使用率、ローカルフローのトラフィック量、ローカルフロー数、ローカルフロー平均負荷（全負荷／ローカルフロー数）、ローカルフローのある特定の上位層プロトコルのトラフィック量等のような負荷情報を調査し、最も負荷の高い仮想ハブ２０をルートノードとする。
【００７９】
更には、上記負荷が、予め定められた閾値を上回る全ての仮想ハブ２０をルートノードとすることも可能である。ここで、例えば、図１３にて、各仮想ハブ２０（＃１）〜（＃７）の取り扱うトラフィック量を負荷とし、最も負荷のかかっている仮想ハブ２０をルートノードと決定するとする。ここで、クライアント３０（＃４）とクライアント３０（＃６）との間で非常に負荷の高いトラフィックｔが発生しており、それ以外のクライアント３０間ではあまりトラフィックが発生していない場合など、本方法で仮想ハブ２０（＃５）をルートノードとして選択することができれば、その後グローバルフロー検出部４３において行われるグローバルフロー検出処理において、例えば、リーフノードへのホップ数が少ないものからグローバルフローを検出する処理を行なう場合などに、素早く仮想ハブ２０（＃６）と仮想ハブ２０（＃７）との間、つまりクライアント３０（＃４）とクライアント３０（＃６）との間のグローバルフローを検出することが可能になる。
【００８０】
（ルートノード決定方法３）
本方法では、リーフノードをルートノードとする。
【００８１】
ネットワーク管理モジュール４０のルートノード決定部４２は、全てのリーフノードについて、仮想ポートの負荷（当該仮想ポートにより送受信されるトラフィック量）を調査し、最も負荷の高い仮想ポートを持つリーフノードをルートノードとする。更には、上記負荷が、予め定められた閾値を上回る全てのリーフノードをルートノードとすることも可能である。
【００８２】
例えば、図１４にて、クライアント３０（＃１）がファイルサーバであり、クライアント３０（＃１０）がそのバックアップを保存する計算機で、クライアント３０（＃１）とクライアント３０（＃１０）と間でファイルシステムのバックアップが行なわれているとする。この状態でリーフノードである仮想ハブ２０（＃１），（＃４），（＃６），（＃７）について、それらの保持する全仮想ポートのトラフィック量を調査する。そして、例えば、仮想ハブ２０（＃４）の仮想ポート３のトラフィック量が最大となり、仮想ハブ２０（＃４）をルートノードと決定することができれば、その後グローバルフロー検出部４３において行われるグローバルフロー検出処理において、ファイルシステムのバックアップのトラフィックを扱っている仮想ハブ２０（＃２）と仮想ハブ２０（＃４）との間、つまり、クライアント３０（＃１）とクライアント３０（＃１０）と間でグローバルフローを検出することが可能になる。なお、本方法において、負荷としてルートノード決定方法２と同様のものを採用した場合は、ルートノード決定方法２において対象とする仮想ハブ２０をリーフノードに限定したものと考える事ができる。
【００８３】
次に、グローバルフロー検出部４３によってなされるグローバルフロー検出方法の３つの例を説明する。
【００８４】
（グローバルフロー検出方法１）
本方法では、トラフィック情報を用いてグローバルフローを検出する。なお、本方法におけるローカルフローは、上述した定義１のローカルフローである。
【００８５】
ネットワーク管理モジュール４０のグローバルフロー検出部４３は、上記ルートノード決定方法１乃至３のうちの何れかの方法で決定されたルートノードを処理開始ノードとして、全てのリーフノード方向へ仮想ハブ２０を辿りながら、各仮想ハブ２０のルートノード方向の仮想ポートを含むローカルフローと、予め定めたトラフィックに関する条件とを比較し、その条件を満たすならば、そのローカルフローのリーフノード方向の仮想ポートの接続先である仮想ハブ２０へと同様の処理を進め、最終的に、２つのリーフノード間に連続したローカルフローが存在すれば、それをグローバルフローと判断する。
【００８６】
例えば、図１５の仮想ハブ２０（＃１）から仮想ハブ２０（＃７）において、図中に示すようなローカルフローが存在しているとする。太い矢印ｂで示されたローカルフローｂは１Ｍｂｐｓを越えるトラフィック（ローカルフローの仮想ポート間で転送されている）を示し、細い矢印ｈで示されたローカルフローｈは１Ｍｂｐｓに満たないトラフィックを示す。
【００８７】
ここで、トラフィックの閾値が仮想ポート間転送ビット数で１Ｍｂｐｓ、ルートノードが仮想ハブ２０（＃３）である場合のグローバルフロー検出処理を説明する。
【００８８】
１）仮想ハブ２０（＃３）にて、仮想ポート０−仮想ポート１のペアによるローカルフローが閾値を越えていることを検出する。
【００８９】
２）次に、上記ローカルフローのリーフノード方向の端点である仮想ポート０、仮想ポート１の接続先の仮想ハブ２０（＃２）、仮想ハブ２０（＃５）について、それぞれルートノードである仮想ハブ２０（＃３）方向の仮想ポート０を含むローカルフローのチェックを行ない、仮想ハブ２０（＃２）の仮想ポート０−仮想ポート１のペアによるローカルフロー、及び仮想ハブ２０（＃５）の仮想ポート０−仮想ポート１のペアによるローカルフローが閾値を越えていることを検出する。
【００９０】
３）同様に、仮想ハブ２０（＃５）の先の仮想ハブ２０（＃６）の仮想ポート０−仮想ポート２のペアによるローカルフローが閾値を越えていることを検出する。
【００９１】
４）上記１）乃至３）の処理により、２つのリーフノード、仮想ハブ２０（＃２）と仮想ハブ２０（＃６）との間、すなわち、それらが収容するクライアント３０（＃１）とクライアント３０（＃５）と間にグローバルフローが存在すると判断する。
【００９２】
５）ここで処理を仮想ハブ２０（＃３）に戻し、上記と同様に、仮想ハブ２０（＃３）にて、仮想ポート０−仮想ポート２のペアによるローカルフローが閾値を越えていることを検出する。
【００９３】
６）次に、仮想ハブ２０（＃３）の仮想ポート０、仮想ポート２それぞれの接続先である仮想ハブ２０（＃２）、仮想ハブ２０（＃４）についてローカルフローのチェックを行ない、仮想ハブ２０（＃２）の仮想ポート０−仮想ポート１のペアによるローカルフロー、及び仮想ハブ２０（＃４）の仮想ポート０−仮想ポート３のペアによるローカルフローが閾値を越えていることを検出する。
【００９４】
７）ここまでの処理により、２つのリーフノード、仮想ハブ２０（＃２）と仮想ハブ２０（＃４）との間、すなわち、それらが収容するクライアント３０（＃１）とクライアント３０（＃１０）と間にグローバルフローが存在すると判断する。
【００９５】
通常、上記処理は、ルートノードを起点とした再帰的手法により実行される。再帰的処理の中で各仮想ハブ２０に関して実行されるネットワーク管理モジュールによるグローバルフロー検出処理フローを図１６に示す。ルートノードは、ステップＳ４１乃至４５からなる再帰処理を２つのリーフノード方向双方に対して実行し、双方ともにリーフノードまで到達できた場合に、グローバルフローを検出することができる。なお、ローカルフローを閾値との比較処理の対象とするかどうかの判断、及び、リーフノード方向への処理継続の可否の判断に関して、以下のｉ）〜ｉｉｉ）に示すような注意が必要である。
【００９６】
ｉ）ローカルフローに含まれる仮想ポートの接続先のみが処理継続対象である（Ｓ４１）。
【００９７】
たとえリーフノード方向への仮想ポートが存在しても、ルートノード方向の仮想ポートとペアを組むローカルフローに含まれない仮想ポートへは、グローバルフロー検出処理を継続しない。上記例についていえば、仮想ハブ２０（＃５）での仮想ポート２であり、その接続先の仮想ハブ２０（＃７）へは処理を継続しない。
【００９８】
ｉｉ）ルートノード方向の仮想ポートを含むローカルフローのみが閾値との比較処理の対象である（Ｓ４２）。
【００９９】
たとえローカルフローが存在しても、それにルートノード方向の仮想ポートが含まれていない場合は、閾値との比較の対象としない。上記例についていえば、仮想ハブ２０（＃２）での仮想ポート１−仮想ポート２のペアによるローカルフローであり、閾値との比較処理は行なわない。ルートノードである仮想ハブ２０（＃３）を含むフローに含まれないからであるが、例えば、ルートノードとして仮想ハブ２０（＃２）を選択したならば、このローカルフローも処理の対象となったであろう。
【０１００】
ｉｉｉ）条件を満たしたローカルフローに含まれるリーフノード方向の仮想ポートの接続先のみが、検出処理継続の対象となる（Ｓ４３：Ｎｏ，Ｓ４４）。
【０１０１】
たとえルートノード方向の仮想ポートを含むローカルフローが存在したとしても、閾値との比較で条件を満たさなければ、そのローカルフローのリーフノード方向の仮想ポートの接続先へはグローバルフロー検索処理を継続しない。上記例についていえば、仮想ハブ２０（＃２）の仮想ポート０−仮想ポート２のペアによるローカルフローは閾値を越えていないため、このローカルフローの端点の接続先である仮想ハブ２０（＃１）についてグローバルフロー検出処理は継続しない。
【０１０２】
以上、図１５を用いて、トラフィック情報、特に、仮想ポート間の単位時間当たりの転送ビット数を元にした２つのグローバルフローの検出処理に関して例を記したが、トラフィック情報としては、これだけではなく、仮想ポート間の単位時間当たりの転送ビット数、仮想ポート間の単位時間当たりの転送バイト数、仮想ポート間の単位時間当たりの転送フレーム数、仮想ポート間の単位時間当たりの、特定サイズ以上の転送フレーム数、仮想ポート間での特定の上位層プロトコル情報を含むデータの検出（上位層プロトコル情報としては、プロトコル種別、ＩＰアドレス、ＵＤＰ／ＴＣＰポート番号等が考えられる）、仮想ポート間の単位時間当たりの、特定の上位層プロトコル情報を含むものの転送ビット数／バイト数／フレーム数（上位層プロトコル情報としては、プロトコル種別、ＩＰアドレス、ＵＤＰ／ＴＣＰポート番号等が考えられる）のような情報を使用することも可能である。
【０１０３】
（グローバルフロー検出方法２）
本方法では、アドレス情報を用いてグローバルフローを検出する。なお、本方法におけるローカルフローは、上述した定義２のローカルフローである。
【０１０４】
ネットワーク管理モジュール４０のグローバルフロー検出部４３は、上記ルートノード決定方法１乃至３のうちの何れかの方法で決定されたルートノードを処理開始ノードとして、全てのリーフノード方向へ仮想ハブ２０を辿りながら、各仮想ハブ２０のルートノード方向の仮想ポートを含むローカルフローと、そのローカルフローのルートノード方向の仮想ポートの接続先である仮想ハブ２０上の前記仮想ハブ２０に至るトリガとなったローカルフローとの、ＭＡＣアドレスのペアの値、及び、その方向が一致したならば、そのローカルフローのリーフノード方向の仮想ポートの接続先である仮想ハブ２０へと同様の処理を進め、最終的に、２つのリーフノード間に連続したローカルフローが存在すれば、それをグローバルフローと判断する。
【０１０５】
例えば、図１７の仮想ハブ２０（＃１）から仮想ハブ２０（＃７）において、図中に示すようにＭＡＣアドレスが学習されている、すなわち、各出力ポート（仮想ポート）とＭＡＣアドレスがマッピングされているとする。ここで、ルートノードを仮想ハブ２０（＃１）とした場合のグローバルフロー検出処理を説明する。仮想ハブ２０（＃１）では、複数のローカルフローが存在するが、ここでは特に｛仮想ポートｎ：ＭＡＣ３｝⇒｛仮想ポートｍ：ＭＡＣ６｝のペアからなるローカルフローに着目した場合について記す。
【０１０６】
なお、ローカルフローの記法中、“⇒”はＭＡＣアドレスペアの“方向”を示す。つまり、ＭＡＣアドレスペアの値が等しくても、この方向が逆の場合は、それらローカルフローは同一のグローバルフローに属しているとは見なさず、グローバルフロー検出処理を継続しない。なお、ＭＡＣアドレスペアの値が等しく、方向が逆となるような状況は、ループ発生時などを除き、通常は発生しない。
【０１０７】
さて、｛仮想ポートｎ：ＭＡＣ３｝⇒｛仮想ポートｍ：ＭＡＣ６｝のペアからなるローカルフローに着目すると、
１）仮想ハブ２０（＃１）にて、｛仮想ポート２：ＭＡＣ３｝⇒｛仮想ポート０：ＭＡＣ６｝のペアによるローカルフローが存在することを検出する。
【０１０８】
２）次に、上記ローカルフローのリーフノード方向の端点である仮想ポート０の接続先の仮想ハブ２０（＃２）について、ルートノードである仮想ハブ２０（＃１）方向の仮想ポート２を含むローカルフローのチェックを行ない、仮想ハブ２０（＃２）上には、仮想ハブ２０（＃１）上と同じＭＡＣアドレスペアの値と方向を持つローカルフロー、｛仮想ポート２：ＭＡＣ３⇒仮想ポート０：ＭＡＣ６｝が存在することを検出する。
【０１０９】
３）次に、上記ローカルフローのリーフノード方向の端点である仮想ポート０の接続先の仮想ハブ２０（＃３）について、ルートノードである仮想ハブ２０（＃１）方向の仮想ポート０を含むローカルフローのチェックを行ない、仮想ハブ２０（＃３）上には、仮想ハブ２０（＃１）、仮想ハブ２０（＃２）上と同じＭＡＣアドレスペアの値と方向を持つローカルフロー、｛仮想ポート０：ＭＡＣ３⇒仮想ポート１：ＭＡＣ６｝が存在することを検出する。
【０１１０】
４）同様に、仮想ハブ２０（＃５）、仮想ハブ２０（＃７）上にて、同じＭＡＣアドレスペアの値と方向を持つローカルフロー、｛仮想ポート０：ＭＡＣ３⇒仮想ポート２：ＭＡＣ６}、｛仮想ポート１：ＭＡＣ３⇒仮想ポート１：ＭＡＣ６｝が、それぞれ存在することを検出する。
【０１１１】
５）上記１）乃至４）の処理により、２つのリーフノード、仮想ハブ２０（＃１）と仮想ハブ２０（＃７）と間、すなわち、それらが収容するクライアント３０（＃３）とクライアント３０（＃６）と間にグローバルフローが存在すると判断する。
【０１１２】
通常、上記処理は、ルートノードを起点とした再帰的手法により実行される。再帰的処理の中で各仮想ハブに関して実行されるネットワーク管理モジュール４０によるグローバルフロー検出処理フローは、基本的に図１６と同様であり、２番目の条件判定処理部分が
異なるだけである。
【０１１３】
以上、図１７を用いて、アドレス情報、特に、ＭＡＣアドレスに基づいたグローバルフローの検出処理に関して例を記したが、アドレス情報としては、ＩＰアドレスなど、上位層のアドレスを使用することも可能である。ただし、処理は複雑になり、性能劣化も生じる可能性がある。
【０１１４】
（グローバルフロー検出方法３）
本方法では、トラフィック情報及びアドレス情報の双方を用いてグローバルフローを検出する。
【０１１５】
それぞれのグローバルフロー検出方法についてはグローバルフロー検出方法１及び２で説明した通りだが、それぞれ、以下のような事象が発生する可能性がある。
【０１１６】
すなわち、グローバルフロー検出方法１のように、トラフィック情報を元にした場合、上位層プロトコル情報、特にＩＰアドレス等、エンドエンド情報を参照する場合を除いては、主に仮想ポート間のトラフィックの量のみに着目するだけであり、送信元及び宛先を意識する事はない。つまり、様々な送信元及び宛先が混在したトラフィックをチェックしているため、トラフィックの量によりグローバルフローを検出したとしても、それが、ある特定のエンドエンドのクライアント３０間のトラフィックのみを根拠として検出されたとはいい難く、グローバルフローは正確性を欠く恐れがある。逆に、送信元及び宛先が混在したトラフィックを見ているため、多くのクライアント３０間でランダムに通信が行なわれている環境などでは、エンドエンドで顕著な傾向を示すフロー、つまり、グローバルフローを見つけ出すことは困難となる（エンドエンドのフローが埋もれる）かもしれない。
【０１１７】
一方、グローバルフロー検出方法２のように、アドレス情報に基づいた場合、グローバルフロー検出方法２で説明された例を取れば、クライアント３０（＃３）とクライアント３０（＃６）との間でイーサネットフレームがやりとりされれば経路上の各仮想ハブ２０（＃１），（＃２），（＃３），（＃５），（＃７）はそれらクライアントのＭＡＣアドレスを学習する。このため、極端な例ではあるが、ただ１つのイーサネットフレームの送受信が発生し、以後全くトラフィックが無いとしても、それをグローバルフローと見なしてしまうかもしれない。
【０１１８】
このような上記それぞれの事情を鑑み、本方法では、トラフィック情報及びアドレス情報の双方を用いてグローバルフローを検出する。
【０１１９】
例えば、先ず、アドレス情報（ＭＡＣアドレス情報）を使い、グローバルフローを検出する。続いて、そのグローバルフローに含まれる各ローカルフローのトラフィック量、つまり、各仮想ハブ２０のローカルフローを形成する２つの仮想ポート間のトラフィック量をチェックし、全てのローカルフローのトラフィック量がある条件を満たした場合にのみ、最終的にグローバルフローであると判断する。
【０１２０】
このようにすることで、確実にエンドエンドのクライアント間のグローバルフローを検出する事が可能になる。
【０１２１】
なお、上記グローバルフロー検出方法１乃至３では、グローバルフローの端点となり得るのがリーフノードのみとなる場合を例示しているが、適用領域などによれば、一方の端点、或は両方の端点が、リーフノードではない仮想ハブ２０、つまり他仮想ハブ２０間のトラフィックを中継する仮想ハブ２０である中間ノードである場合もあり得る。
【０１２２】
従って、本実施の形態に係る本実施の形態に係るピアツーピア通信確立方法によれば、特定の中継ノード群へのトラフィック集中、高負荷を避けることができ、該当中継ノード群、及び、仮想ネットワーク全体のスケーラビリティを確保することが可能となる。また、トラフィックが特定の中継ノード群を経由しないことにより、アンダーレイネットワークへの負荷を軽減することが可能となり、設備投資を抑制することが可能となる。更に、クライアント３０間で直接通信を行なうことにより、クライアント３０間の通信スループット、応答時間等を改善することも可能となる。
【０１２３】
（第２の実施の形態）
第２の実施の形態は、本発明のピアツーピア通信確立方法の第１の実施の形態とは異なる適用例である。したがって、第１の実施の形態と異なる点について説明し、重複説明を避ける。
【０１２４】
すなわち、第１の実施の形態では、本発明のピアツーピア通信確立方法によって、２つのクライアント３０間でピアツーピア通信が確立される例について説明したが、本発明のピアツーピア通信確立方法は、２つのクライアント３０間のピアツーピア通信の確立に限定されるものではなく、２つの仮想ハブ２０間のピアツーピア通信にも適用することができる。つまり、別の仮想ハブ２０を経由して接続している２つの仮想ハブ２０間でのピアツーピアによる直接通信にも適用することができる。
【０１２５】
例えば、図１７において、仮想ハブ２０（＃３）上で、仮想ハブ２０（＃４）と仮想ハブ２０（＃５）との間のトラフィックが非常に多いと検出されたが、リーフノード間、つまり仮想ハブ２０（＃４）と仮想ハブ２０（＃６）、或は仮想ハブ２０（＃４）と仮想ハブ２０（＃７）との間では、何らかの理由によりグローバルフローが検出されなかった場合に、仮想ハブ２０（＃４）と仮想ハブ２０（＃５）との間で直接通信をさせることが可能である。
【０１２６】
このように、本実施の形態に係る本実施の形態に係るピアツーピア通信確立方法によっても、特定の中継ノード群へのトラフィック集中、高負荷を避けることができ、該当中継ノード群、及び、仮想ネットワーク全体のスケーラビリティを確保することが可能となる。また、トラフィックが特定の中継ノード群を経由しないことにより、アンダーレイネットワークへの負荷を軽減することが可能となり、設備投資を抑制することが可能となる。更に、仮想ハブ２０間で直接通信を行なうことにより、仮想ハブ２０間の通信スループット、応答時間等を改善することも可能となる。
【０１２７】
（応用技術分野）
本発明のピアツーピア通信確立方法は、上述したような仮想イーサネットだけでなく、あるノードにトラフィックが集中する仮想ネットワーク構築技術に関しても、広く適用が可能である。
【０１２８】
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【０１２９】
【図１】第１の実施の形態に係るピアツーピア通信確立方法が適用される典型的なネットワークの構成例を示す概念図。
【図２】仮想ハブの構成例を示す機能ブロック図。
【図３】クライアントの構成例を示す機能ブロック図。
【図４】ネットワーク管理モジュールの構成例を示す機能ブロック図。
【図５】図１に示す典型的なネットワークにおいてトラフィックが発生した状態を示す概念図。
【図６】情報収集部によって作成された接続ツリー情報の一例を示す図。
【図７】ピアツーピアリンクの生成処理の流れを示すフローチャート。
【図８】ピアツーピアリンクによる通信処理の流れを示すフローチャート。
【図９】図１に示す典型的なネットワークにおいてピアツーピア通信を確立した状態を示す概念図。
【図１０】ピアツーピアリンクの削除処理の流れを示すフローチャート。
【図１１】ルートノード決定方法１を説明するためのネットワーク構成概念図。
【図１２】図１１のネットワーク構成におけるリーフノードへのホップ数を示す図。
【図１３】ルートノード決定方法２を説明するためのネットワーク構成概念図。
【図１４】ルートノード決定方法３を説明するためのネットワーク構成概念図。
【図１５】グローバルフロー検出方法１を説明するためのネットワーク構成概念図。
【図１６】再帰的処理によるグローバルフロー検出処理の流れを示すフローチャート。
【図１７】グローバルフロー検出方法２を説明するためのネットワーク構成概念図。
【図１８】仮想イーサネットの一般的な構成例を示すネットワーク概念図。
【符号の説明】
【０１３０】
ｂ…ローカルフロー、ｄ…通信リンク、ｈ…ローカルフロー、ｍ…仮想ポート、ｎ…仮想ポート、ｐ…ピアツーピア通信リンク、Ｔ…トラフィック、０〜３…仮想ポート、１０…ネットワーク、２０…仮想ハブ、２１…イーサネットスイッチングハブ、２２…転送テーブル、２３…接続リンク制御部、２４…仮想ポート、２５…ネットワーク管理インタフェース部、２６…ピアツーピアリンク制御部、２７…アンダーレイネットワークプロトコル群、２８…物理ネットワークインタフェース、３０…クライアント、３１…上位プロトコル群、３２…仮想ネットワークインタフェース、３３…イーサネットフレーム送受信部、３４…送信先管理テーブル、３５…接続リンク制御部、３６…仮想ポート、３７…アンダーレイネットワークプロトコル群、３８…物理ネットワークインタフェース、４０…ネットワーク管理モジュール、４１…情報収集部、４２…ルートノード決定部、４３…グローバルフロー検出部、４４…ピアツーピアリンク制御部、５０…ＬＡＮ、１５０…アンダーレイネットワーク、１５１…仮想ハブ、１５２…仮想ネットワークインタフェース、１５３…クライアント、１５４…仮想イーサネット、１５５…サーバ、１５６…ファイアウォール、１５７…ルータ、１６０…内部ネットワーク、１６１…外部ネットワーク
【図１】
2008288872.tif 000003
【図２】
2008288872.tif 000004
【図３】
2008288872.tif 000005
【図４】
2008288872.tif 000006
【図５】
2008288872.tif 000007
【図６】
2008288872.tif 000008
【図７】
2008288872.tif 000009
【図８】
2008288872.tif 000010
【図９】
2008288872.tif 000011
【図１０】
2008288872.tif 000012
【図１１】
2008288872.tif 000013
【図１２】
2008288872.tif 000014
【図１３】
2008288872.tif 000015
【図１４】
2008288872.tif 000016
【図１５】
2008288872.tif 000017
【図１６】
2008288872.tif 000018
【図１７】
2008288872.tif 000019
【図１８】
2008288872.tif 000020