(57)【要約】【課題】仮想ネットワークを構成する仮想ハブが自律的に分割や移動することによって、物理ネットワークの設備コストの増加を伴わずにトラフィックの最適化を図ること。【解決手段】物理ネットワーク上に仮想ネットワークＡを構築するネットワーク仮想化装置２１は、各端末１７の接続を管理するデータ交換ノード１８を備えている。データ交換ノードは、端末の物理ネットワーク上のコネクションと、仮想ネットワークのアドレスとのマッピング情報を記憶するテーブル１８２と、端末とのコネクションを確立し保持する手段１８６と、他ネットワーク仮想化装置２１ａに含まれる他データ交換ノード１８ａとのコネクションを確立し保持する手段１８６と、対応する端末とのコネクションを確立し保持する手段１８６と、解除基準を超えた場合には、保持しているコネクションのうちの何れかを解除し、解除したコネクションを、他データ交換ノードに保持させる手段とを備える。【選択図】      図２
2008042665.tif 000002
【特許請求の範囲】
【請求項１】
予め構築され、それぞれ一つ以上の端末が接続された複数の物理ネットワーク上に、ソフトウェアによって仮想的にネットワークを構築するネットワーク仮想化装置であって、
前記構築された仮想ネットワークに対する前記各端末の接続を管理するデータ交換ノードを備え、前記データ交換ノードは更に、
前記各端末それぞれに対して予め割り当てられ、前記物理ネットワーク上において前記各端末をそれぞれ特定するための物理ネットワークアドレスが指定されると、前記指定された物理ネットワークによって特定された端末との前記物理ネットワークを介したコネクションを確立し、保持する手段と、
前記コネクションと、前記仮想ネットワーク上において前記各端末をそれぞれ特定するための仮想ネットワークアドレスとのマッピング情報を記憶する手段と、
他ネットワーク仮想化装置に含まれる他データ交換ノードとの前記物理ネットワークを介したコネクションを確立し、保持する手段と、
前記仮想ネットワークアドレスが指定されると、前記マッピング情報に基づいて、前記指定された仮想ネットワークアドレスにマップされたコネクションを特定し、この特定されたコネクションによって接続された端末と、前記仮想ネットワークを介して通信する手段と、
予め定めた解除基準を超えた場合には、保持している前記物理ネットワークを介したコネクションのうちの何れかを解除し、前記解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる手段と
を備えたネットワーク仮想化装置。
【請求項２】
前記予め定めた解除基準を超えた場合とは、
前記保持している物理ネットワークを介したコネクションのうち、単位時間当たりのトラフィック量が、予め定めた量を超えた場合、
同一の物理ネットワークに属する端末の数が、予め定めた数を超えた場合、
前記データ交換ノードの負荷が、予め定めた基準値を超えた場合
のうちの何れかの場合である請求項１に記載のネットワーク仮想化装置。
【請求項３】
前記データ交換ノードは更に、
前記他ネットワーク仮想化装置が複数存在する場合、前記解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる手段は更に、前記複数存在する他ネットワーク仮想化装置のうち、前記保持させる他データ交換ノードを含む他ネットワーク仮想化装置を、予め定めた選択基準に基づいて選択する手段を備え、
前記予め定めた選択基準とは、
前記他データ交換ノードが、前記解除されたコネクションを保持した場合、前記解除されたコネクションによって接続された端末との間のデータ転送コストが最小になるようなデータ交換ノードを含むネットワーク仮想化装置を選択するか、又は、前記解除されたコネクションによって接続された端末との前記物理ネットワークにおける距離が最小になるようなネットワーク仮想化装置を選択する
請求項１又は請求項２に記載のネットワーク仮想化装置。
【請求項４】
前記データ交換ノードは更に、
前記解除されたコネクションが、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持された後、前記解除されたコネクション以外のコネクションの保持を継続するか、又は前記解除されたコネクション以外のコネクションを全て解除し、これら解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させるか否かを、予め定めた判定基準に基づいて判定する手段を備え、
前記判定基準は、
前記解除されたコネクションの解除される前におけるトラフィック量の、前記データ交換ノードによって保持されていた仮想ネットワークを介した全てのコネクションによる合計トラフィック量に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第１の判定基準、
前記解除されたコネクションに接続された端末数の、解除される前に前記データ交換ノードによって保持されていた仮想ネットワークに接続されていた合計端末数に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第２の判定基準、
前記解除されたコネクションの、解除される前における負荷が、予め定めた基準値を超えている場合に全て解除し、超えていない場合に継続する第３の判定基準
のうちの何れかである請求項１乃至３のうち何れか１項に記載のネットワーク仮想化装置。
【請求項５】
前記データ交換ノードは更に、
前記予め定めた解除基準を超えた場合であっても、前記保持させる手段が解除すべきコネクションを、前記他データ交換ノードに保持させることによって、
前記他データ交換ノードを含む前記他ネットワーク仮想化装置の負荷が、予め定めた基準値を超えることになる第１の場合、
前記他データ交換ノードを含む前記他ネットワーク仮想化装置が保持する仮想化ネットワークに接続された端末の合計数、又は前記他ネットワーク仮想化装置が含む他データ交換ノード数が、予め定めた基準値を超えることになる第２の場合、
前記他データ交換ノードが保持する仮想化ネットワークに接続された端末の合計数が、予め定めた基準値を超えることになる第３の場合、
前記解除すべきコネクションに接続された端末が、過去に別のデータ交換ノードに保持されていた場合、現在のデータ交換ノードに保持された時からの経過時間、又は前記現在のデータ交換ノードが、最後に物理ネットワークを介したコネクションを保持した時からの経過時間が、予め定めた基準値に達していない第４の場合
のうちの何れかの場合には、前記保持させる手段に対して前記コネクションを解除させない手段を備えた請求項１乃至４のうち何れか１項に記載のネットワーク仮想化装置。
【請求項６】
予め構築され、それぞれ一つ以上の端末が接続された複数の物理ネットワーク上に、プログラムによって仮想的にネットワークを構築する、ネットワーク仮想化装置に含まれるデータ管理ノードに適用される前記プログラムであって、
前記各端末それぞれに対して予め割り当てられ、前記物理ネットワーク上において前記各端末をそれぞれ特定するための物理ネットワークアドレスが指定されると、前記指定された物理ネットワークによって特定された端末との前記物理ネットワークを介したコネクションを確立し、保持する機能、
前記コネクションと、前記仮想ネットワーク上において前記各端末をそれぞれ特定するための仮想ネットワークアドレスとのマッピング情報を記憶する機能、
他ネットワーク仮想化装置に含まれる他データ交換ノードとの前記物理ネットワークを介したコネクションを確立し、保持する機能、
前記仮想ネットワークアドレスが指定されると、前記マッピング情報に基づいて、前記指定された仮想ネットワークアドレスにマップされたコネクションを特定し、この特定されたコネクションによって接続された端末と、前記仮想ネットワークを介して通信する機能、
予め定めた解除基準を超えた場合には、保持している前記物理ネットワークを介したコネクションのうちの何れかを解除し、前記解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる機能
をコンピュータに実現させるためのプログラム。
【請求項７】
前記予め定めた解除基準を超えた場合とは、
前記保持している物理ネットワークを介したコネクションのうち、単位時間当たりのトラフィック量が、予め定めた量を超えた場合、
同一の物理ネットワークに属する端末の数が、予め定めた数を超えた場合、
前記データ交換ノードの負荷が、予め定めた基準値を超えた場合
のうちの何れかの場合である請求項６に記載のプログラム。
【請求項８】
前記他ネットワーク仮想化装置が複数存在する場合、前記解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる機能は更に、前記複数存在する他ネットワーク仮想化装置のうち、前記保持させる他データ交換ノードを含む他ネットワーク仮想化装置を、予め定めた選択基準に基づいて選択する機能をコンピュータに実現させ、
前記予め定めた選択基準とは、
前記他データ交換ノードが、前記解除されたコネクションを保持した場合、前記解除されたコネクションによって接続された端末との間のデータ転送コストが最小になるようなデータ交換ノードを含むネットワーク仮想化装置を選択するか、又は、前記解除されたコネクションによって接続された端末との前記物理ネットワークにおける距離が最小になるようなネットワーク仮想化装置を選択する
請求項６又は請求項７に記載のプログラム。
【請求項９】
前記解除されたコネクションが、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持された後、前記解除されたコネクション以外のコネクションの保持を継続するか、又は前記解除されたコネクション以外のコネクションを全て解除し、これら解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させるか否かを、予め定めた判定基準に基づいて判定する機能を更にコンピュータに実現させ、
前記判定基準は、
前記解除されたコネクションの解除される前におけるトラフィック量の、前記データ交換ノードによって保持されていた仮想ネットワークを介した全てのコネクションによる合計トラフィック量に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第１の判定基準、
前記解除されたコネクションに接続された端末数の、解除される前に前記データ交換ノードによって保持されていた仮想ネットワークに接続されていた合計端末数に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第２の判定基準、
前記解除されたコネクションの、解除される前における負荷が、予め定めた基準値を超えている場合に全て解除し、超えていない場合に継続する第３の判定基準
のうちの何れかである請求項６乃至８のうち何れか１項に記載のプログラム。
【請求項１０】
前記予め定めた解除基準を超えた場合であっても、前記保持させる機能が解除すべきコネクションを、前記他ネットワーク仮想化装置に保持させることによって、
前記他データ交換ノードを含む前記他ネットワーク仮想化装置の負荷が、予め定めた基準値を超えることになる第１の場合、
前記他データ交換ノードを含む前記他ネットワーク仮想化装置が保持する仮想化ネットワークに接続された端末の合計数、又は前記他ネットワーク仮想化装置が含む他データ交換ノード数が、予め定めた基準値を超えることになる第２の場合、
前記他データ交換ノードが保持する仮想化ネットワークに接続された端末の合計数が、予め定めた基準値を超えることになる第３の場合、
前記解除すべきコネクションに接続された端末が、過去に別のデータ交換ノードに保持されていた場合、現在のデータ交換ノードに保持された時からの経過時間、又は前記現在のデータ交換ノードが、最後に物理ネットワークを介したコネクションを保持した時からの経過時間が、予め定めた基準値に達していない第４の場合
のうちの何れかの場合には、前記保持させる機能に対して、前記コネクションを解除させない機能をコンピュータに実現させるための請求項６乃至９のうち何れか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の端末とのコネクションを保持するデータ交換ノードを備え、オーバレイネットワークを構築するネットワーク仮想化装置、及びデータ交換ノードに適用されるプログラムに関し、特に、データ交換ノードがネットワーク仮想化装置間にて自律的に分割したり、移動したりすることによって、オーバレイネットワーク上のトラフィックを最適化するネットワーク仮想化装置及びネットワーク仮想化プログラムに関する。
【背景技術】
【０００２】
例えば、ＴＣＰ／ＩＰネットワークのような既存の物理的なネットワーク（以後、「アンダーレイネットワーク」と称する）上に、ソフトウェアにて構築する仮想的なネットワークをオーバレイネットワークと呼ぶ。
【０００３】
主な仮想的なネットワーク（以後、「仮想ネットワーク」と称する）として、以下のように、いわゆるピアツーピア（以後、「Ｐ２Ｐ」と称する）ネットワーク（例えば、非特許文献１乃至７）と呼ばれるものや、仮想ローカルエリアネットワーク（以後、「仮想ＬＡＮ」と称する）がある。
【０００４】
Ｐ２Ｐネットワークは、現状、ファイル交換（Ｗｉｎｎｙ，ＢｉｔＴｏｒｒｅｎｔ等）、音声通信（Ｓｋｙｐｅ等）などに広く利用されている。その方式により、大きく以下の２つ、すなわち、（１）ホストやコンテンツの探索は特別なサーバに依存するが、最終的なデータの送受信はＰ２Ｐのホスト間で行なうものと、（２）データの送受信だけでなく、ホストやコンテンツの探索そのものも、特別なサーバを必要とせず、完全に対等な立場のホスト間で分散協調して行なうものとに分けられる。なお、ホスト、コンテンツの探索に、特定のサーバではないが、特別な役割を果たすホスト群を利用する、上記２つの中間的な方式を用いるものもある。
【０００５】
一方、仮想ＬＡＮとして代表的なものに、ソフトイーサ株式会社製のＳｏｆｔｅｔｈｅｒ（例えば、非特許文献８乃至９）がある。Ｓｏｆｔｅｔｈｅｒは仮想ネットワークを構築するソフトウェア群である。Ｓｏｆｔｅｔｈｅｒ又はこれに類似したソフトウェアでは、ある特定のホスト上にソフトウェアにて仮想的なイーサネット（登録商標）スイッチングハブ（以後、「仮想ハブ」と称する）が構築される。仮想ネットワークに参加を希望するホストは、同じくソフトウェアにて構築された仮想的なネットワークインタフェース（以後、「仮想ネットワークインタフェース」と称する）を介して、前述の仮想ハブにアンダーレイネットワーク（以後、「物理ネットワーク」とも称する）を使用して接続することにより、仮想ネットワークに参加する。
【０００６】
このような仮想ネットワークの一般的な構成を図１９に示す。
【０００７】
例えばＴＣＰ／ＩＰネットワークであるアンダーレイネットワーク１９００は、オーバレイネットワークである仮想ネットワーク１９０１を構築する基盤となる物理ネットワークである。アンダーレイネットワーク１９００は、ルータ１９０２、ファイアウォール１９０３、リンク層の通信装置（イーサネットならばハブやスイッチングハブ）により構成される。ルータ１９０２は、ＴＣＰ／ＩＰネットワークを構成するネットワーク層の装置であり、一般的なものであることからここではその詳細な説明を割愛する。また、ファイアウォール１９０３は、内部ネットワーク１９０４と外部ネットワーク１９０５との境界に設置されるセキュリティ装置であり、一般的なものであることからここではその詳細な説明を割愛する。
【０００８】
ホスト１９０６は、仮想ネットワーク１９０１を構成する仮想ハブ１９０７の何れかに接続する計算機であり、仮想ネットワークインタフェース１９０８を介して仮想ハブ１９０７に接続する。仮想ハブ１９０７は、このように複数のホスト１９０６とのコネクションを保持するデータ交換ノードである。コンピュータ１９０９は、このような仮想ハブ１９０７を配置するネットワーク仮想化装置である。仮想ネットワーク１９０１は、一つ又は複数の仮想ハブ１９０７に、それぞれ仮想ネットワークインタフェース１９０８を持った複数のホスト１９０６が接続することにより構築される。
【０００９】
このような仮想ネットワーク１９０１の特徴として、以下が挙げられる。  
１）仮想ハブ１９０７の配置場所が固定である（管理者により移動は可能）。  
２）仮想ハブ１９０７の配置個数が固定である（管理者により追加・削除は可能)  
３）仮想ネットワーク１９０１に属するホスト１９０６間のトラフィックは全て固定の仮想ハブ１９０７を経由する（管理者又は利用者により変更可能）  
４）仮想ネットワーク１９０１に属するホスト１９０６と仮想ハブ１９０７との位置関係はアンダーレイネットワーク１９００のトポロジを考慮していない。
【非特許文献１】電子情報通信学会誌、２００４年９月号、「Ｐ２Ｐ総論Ｉ  ブローカーレスモデルの挑戦」
【非特許文献２】電子情報通信学会誌、２００４年１０月号、「Ｐ２Ｐ総論ＩＩ  Ｐ２Ｐテクノロジ」
【非特許文献３】電子情報通信学会誌、２００４年１２月号、「Ｐ２Ｐ総論ＩＩＩ  Ｐ２Ｐサービスとビジネス」
【非特許文献４】電子情報通信学会誌、２００５年１月号、「Ｐ２Ｐ総論ＩＶ  最新動向と将来展望」
【非特許文献５】株式会社アスキー、ＵＮＩＸ  ＭＡＧＡＺＩＮＥ、２００５年９月号、「Ｐ２Ｐ技術の基礎知識［１］」
【非特許文献６】株式会社アスキー、ＵＮＩＸ  ＭＡＧＡＺＩＮＥ、２００５年１０月号、「Ｐ２Ｐ技術の基礎知識［２］」
【非特許文献７】株式会社アスキー、ＵＮＩＸ  ＭＡＧＡＺＩＮＥ、２００５年１１月号、「Ｐ２Ｐ技術の基礎知識［３］」
【非特許文献８】株式会社アスキー、公式ＳｏｆｔＥｔｈｅｒ活用ガイド
【非特許文献９】ｈｔｔｐ:／／ｗｗｗ．ｓｏｆｔｅｔｈｅｒ．ｃｏｍ、ソフトイーサ株式会社ホームページ
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このような従来の仮想ネットワーク１９０１では、上述したような特徴により、以下のような問題が生じる。
【００１１】
第一の問題は、トラフィックが非効率的であり、それに伴いアンダーレイネットワーク１９００への負荷が増大することである。つまり、データ送受信を行なうホスト１９０６同士が、例えば、同じアンダーレイネットワーク１９００（＃２）に属するホスト１９０６ａとホスト１９０６ｂのように、たとえ同じアンダーレイネットワーク１９００（＃２）のトポロジ的に近隣に位置していたとしても、仮想ハブ１９０７がこれらホスト１９０６ａ，１９０６ｂからアンダーレイネットワーク１９００（＃２）のトポロジ的に遠隔に位置している場合、これらホスト１９０６ａ，１９０６ｂ間のトラフィックは、アンダーレイネットワーク１９００の観点から、常に長距離を移動することとなり、非常に非効率的となる。これによって、アンダーレイネットワーク１９００のリソースを必要以上に浪費し、アンダーレイネットワーク１９００への負荷の増大を招く。これは、アンダーレイネットワーク１９００への設備投資コストの増加をもたらす。
【００１２】
第二の問題は、仮想ネットワーク１９０１の拡張に伴う性能的及び規模的な限界があることと、それに起因して管理の複雑さが増大することである。つまり、仮想ハブ１９０７に性能容量の限界があるために、仮想ネットワーク１９０１の拡張可能な規模に制約が生じてしまう。ホスト１９０６群を他の仮想ハブ（図示せず）へ繋ぎ変えたり、或いは、仮想ハブ１９０７を増設することにより仮想ネットワーク１９０１の拡張（接続ホスト１９０６の数の拡大）が可能だとしても、管理者や利用者によるホスト１９０６の繋ぎ変え、或いは管理者による新規仮想ハブ（図示せず）の作成、既存の仮想ハブ１９０７との接続調整などのための設定が必要となり、管理の複雑さが増大し、結果的に、管理コストの増大を招く。
【００１３】
本発明はこのような事情に鑑みてなされたものであり、仮想ネットワークを構成する仮想ハブが自律的に分割や移動することによって、物理ネットワークへの設備投資のコストの増加や、仮想ネットワークの管理の複雑さを招くこともなく、仮想ネットワーク上のトラフィックの最適化を図ることが可能なネットワーク仮想化装置及びネットワーク仮想化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために、本発明では、以下のような手段を講じる。
【００１５】
すなわち、請求項１の発明は、予め構築され、それぞれ一つ以上の端末が接続された複数の物理ネットワーク上に、ソフトウェアによって仮想的にネットワークを構築するネットワーク仮想化装置である。このネットワーク仮想化装置は、構築された仮想ネットワークに対する各端末の接続を管理するデータ交換ノードを備えている。そして、データ交換ノードは更に、各端末それぞれに対して予め割り当てられ、物理ネットワーク上において各端末をそれぞれ特定するための物理ネットワークアドレスが指定されると、指定された物理ネットワークによって特定された端末との物理ネットワークを介したコネクションを確立し、保持する手段と、仮想ネットワーク上において各端末をそれぞれ特定するための仮想ネットワークアドレスとコネクションとのマッピング情報を記憶する手段と、他ネットワーク仮想化装置に含まれる他データ交換ノードとの物理ネットワークを介したコネクションを確立し、保持する手段と、仮想ネットワークアドレスが指定されると、マッピング情報に基づいて、指定された仮想ネットワークアドレスにマップされたコネクションを特定し、この特定されたコネクションによって接続された端末と、仮想ネットワークを介して通信する手段と、予め定めた解除基準を超えた場合には、保持している物理ネットワークを介したコネクションのうちの何れかを解除し、解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる手段とを備えている。
【００１６】
請求項２の発明は、請求項１に記載のネットワーク仮想化装置において、予め定めた解除基準を超えた場合とは、保持している物理ネットワークを介したコネクションのうち、単位時間当たりのトラフィック量が、予め定めた量を超えた場合、同一の物理ネットワークに属する端末の数が、予め定めた数を超えた場合、データ交換ノードの負荷が、予め定めた基準値を超えた場合のうちの何れかの場合である。
【００１７】
請求項３の発明は、請求項１又は請求項２に記載のネットワーク仮想化装置において、データ交換ノードは更に、他ネットワーク仮想化装置が複数存在する場合、解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させる手段は更に、複数存在する他ネットワーク仮想化装置のうち、保持させる他データ交換ノードを含む他ネットワーク仮想化装置を、予め定めた選択基準に基づいて選択する手段を備えている。そして、予め定めた選択基準とは、他データ交換ノードが、解除されたコネクションを保持した場合、解除されたコネクションによって接続された端末との間のデータ転送コストが最小になるようなデータ交換ノードを含むネットワーク仮想化装置を選択するか、又は、解除されたコネクションによって接続された端末との物理ネットワークにおける距離が最小になるようなネットワーク仮想化装置を選択する。
【００１８】
請求項４の発明は、請求項１乃至３のうち何れか１項の発明のネットワーク仮想化装置において、データ交換ノードは更に、解除されたコネクションが、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持された後、解除されたコネクション以外のコネクションの保持を継続するか、又は解除されたコネクション以外のコネクションを全て解除し、これら解除したコネクションを、他ネットワーク仮想化装置に含まれる他データ交換ノードに保持させるか否かを、予め定めた判定基準に基づいて判定する手段を備える。そして、判定基準は、解除されたコネクションの解除される前におけるトラフィック量の、データ交換ノードによって保持されていた仮想ネットワークを介した全てのコネクションによる合計トラフィック量に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第１の判定基準、解除されたコネクションに接続された端末数の、解除される前にデータ交換ノードによって保持されていた仮想ネットワークに接続されていた合計端末数に対する割合が、予め定めた値を超えた場合に全て解除し、超えない場合に継続する第２の判定基準、解除されたコネクションの、解除される前における負荷が、予め定めた基準値を超えている場合に全て解除し、超えていない場合に継続する第３の判定基準のうちの何れかである。
【００１９】
請求項５の発明は、請求項１乃至４のうち何れか１項の発明のネットワーク仮想化装置において、データ交換ノードは更に、予め定めた解除基準を超えた場合であっても、保持させる手段が解除すべきコネクションを、他データ交換ノードに保持させることによって、他データ交換ノードを含む他ネットワーク仮想化装置の負荷が、予め定めた基準値を超えることになる第１の場合、他データ交換ノードを含む他ネットワーク仮想化装置が保持する仮想化ネットワークに接続された端末の合計数、又は他ネットワーク仮想化装置が含む他データ交換ノード数が、予め定めた基準値を超えることになる第２の場合、他データ交換ノードが保持する仮想化ネットワークに接続された端末の合計数が、予め定めた基準値を超えることになる第３の場合、解除すべきコネクションに接続された端末が、過去に別のデータ交換ノードに保持されていた場合、現在のデータ交換ノードに保持された時からの経過時間、又は現在のデータ交換ノードが、最後に物理ネットワークを介したコネクションを保持した時からの経過時間が、予め定めた基準値に達していない第４の場合のうちの何れかの場合には、保持させる手段に対してコネクションを解除させない手段を備えた。
【００２０】
請求項６乃至１０の発明は、請求項１乃至５のネットワーク仮想化装置のそれぞれを実現するためのプログラムである。
【発明の効果】
【００２１】
本発明によれば、仮想ネットワークを構成する仮想ハブが、ネットワーク環境や、トラフィック量等に応じて、自律的に分割や移動することができる。
【００２２】
以上により、物理ネットワークへの設備投資のコストの増加や、仮想ネットワークの管理の複雑さを招くこともなく、仮想ネットワーク上のトラフィックの最適化を図ることが可能なネットワーク仮想化装置及びネットワーク仮想化プログラムを実現することができる。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
【００２４】
［全体構成］  
図１は、本発明の実施の形態に係るネットワーク仮想化装置によって構築される仮想ネットワークの一般的な構成を示す概念図である。なお、以後の説明では、物理ネットワーク（アンダーレイネットワーク）１１はＴＣＰ／ＩＰネットワークであることを前提として説明する。現在、企業や通信事業者では、ほぼこのＴＣＰ／ＩＰネットワークが使用されているといっても差し支えない。ＴＣＰ／ＩＰネットワークは、後述するルータ１２、ファイアウォール１３、リンク層の通信装置（イーサネットならばイーサネットスイッチングハブ１４等）により構成される。ルータ１２は、ＴＣＰ／ＩＰネットワークを構成するネットワーク層の装置であり、一般的なものであることから、ここではその詳細な説明を割愛する。また、ファイアウォール１３は、企業ネットワーク等の内部ネットワーク１５と、インターネット等の外部ネットワーク１６との境界に設置されるセキュリティ装置であり、一般的なものであることからここではその詳細な説明は割愛する。
【００２５】
ホスト１７は、仮想ネットワーク１０を構成する仮想ハブ１８のいずれかに接続する計算機であり、仮想ネットワークインタフェース１９を介して仮想ハブ１８に接続する。詳細は後述する。
【００２６】
仮想ネットワークインタフェース未対応ホスト２０は、仮想ネットワークインタフェース１９が搭載されていないホストである。これらのホスト２０は、特殊なソフトウェアである仮想ネットワークインタフェース１９を搭載する必要が無い反面、仮想ハブ１８に接続する何らかの手段が別途必要である。
【００２７】
図１中では、一般的なＰＰＰｏＥ、ＳＳＬ−ＶＰＮを用いて仮想ハブ１８に接続する形態と、一つの実施例であるネットワーク仮想化装置２１が提供する特別なイーサネットポートに直結する形で、仮想ハブ１８に接続する形態を例として示している。以下に、ネットワーク仮想化装置２１の特別なイーサネットポートに関して述べる。
【００２８】
ネットワーク仮想化装置２１は、仮想ハブ１８を配置する装置であり、専用装置であることも、汎用の計算機（Ｗｉｎｄｏｗｓ（登録商標）やＵＮＩＸ（登録商標）が稼働する計算機）であることも可能である。一つのネットワーク仮想化装置２１には複数の仮想ハブ１８を配置することも可能であり、通常、それらの仮想ハブ１８は異なる仮想ネットワーク１０に属する。同一仮想ネットワーク１０に属すこともできるが、運用上のメリットは無い。
【００２９】
なお、ネットワーク仮想化装置２１には、仮想ネットワークインタフェース未対応ホスト２０を、ルータ１２を介さずに直接収容するための特別なイーサネットポートを持つことができる。この特別なイーサネットポートに収容されるイーサネット上のホストは、ある仮想ハブ１８を介して仮想ネットワーク１０に収容される形となる。仮想ハブ１８は、本実施の形態の中心的役割を担うものであり、詳細は後述する。
【００３０】
仮想イーサネットコネクションＡは、ホスト１７と仮想ハブ１８（具体的には、後述する仮想ハブ１８の仮想イーサネットポート）間を接続する仮想的なイーサネットの線であり、ＴＣＰ／ＩＰネットワーク上に何らかの方法で実現される。実現方法は本発明の特徴的な部分ではないため、ここではその詳細な説明を割愛するが、ＵＮＩＸ等の一般的なＯＳにおけるいくつかの実装例を後述する。
【００３１】
また、仮想イーサネットコネクションＡは、仮想ハブ１８間を接続する概念でもあり、仮想ハブ１８は、仮想ハブ１８の分割・移動処理時に、仮想ハブ１８間の仮想イーサネットコネクションＡの接続を変更する必要がある。しかし、これは、通常のイーサネットスイッチングハブ１４を接続するのと同等の機能であるのでここでは詳細に述べない。
【００３２】
［ホスト及びネットワーク仮想化装置の構成］  
ホスト１７及びネットワーク仮想化装置２１の詳細な機能ブロック図を図２に示す。以下、ホスト１７及びネットワーク仮想化装置２１に配置される仮想ハブ１８の詳細をそれぞれ記す。
【００３３】
（ホスト）  
ホスト１７は、ＴＣＰ／ＩＰネットワークにて通信を行なうためのネットワークインタフェースである物理ネットワークインタフェース２３だけでなく、仮想ハブ１８に接続するため（仮想ネットワーク１０にて通信を行なうため）のネットワークインタフェースである仮想ネットワークインタフェース１９、及びそれを制御するための仮想ネットワークインタフェース制御モジュール２４を持つ。
【００３４】
仮想ネットワークインタフェース１９は、仮想ハブ１８との仮想イーサネットコネクションＡを生成、保持する。ホスト１７上で動作するアプリケーションプログラムや、ホスト１７のＯＳ内のＴＣＰ／ＩＰプロトコルからは、仮想ネットワークインタフェース１９は物理ネットワークインタフェース２３と同じように見え、ＩＰ層の経路制御により、いずれのネットワークインタフェースが使用されるかが決定される。
【００３５】
仮想ネットワークインタフェース制御モジュール２４は、仮想ハブ１８との仮想イーサネットコネクションＡの生成の制御などの処理を行なう。
【００３６】
（ネットワーク仮想化装置）  
ネットワーク仮想化装置２１は、システム制御モジュール２０１、システム情報テーブル２０２、及び仮想ハブ１８を備えている。以下に、システム制御モジュール２０１及びシステム情報テーブル２０２の処理内容、及び、テーブルのデータ構成例を記す。なお、仮想ハブについては、次項にて説明する。
【００３７】
システム制御モジュール２０１は、ネットワーク仮想化装置２１全体の制御を行なうモジュールで、以下の処理を行なう。  
・自装置２１、自装置２１が収容する仮想ハブ１８、及びホスト１７に関する情報の収集を行う。すなわち、自装置２１に収容する仮想ハブ１８の情報は、後述の通り、各仮想ハブ１８が収集し、ホスト情報テーブル１８３に保持する。更にその情報をシステム制御モジュール２０１が各仮想ハブ１８から収集し、集中管理する。  
・同一管理ドメイン内の他ネットワーク仮想化装置２１ａとの情報交換を行う。すなわち、システム情報交換メッセージの交換により、自装置２１が収集した情報を他装置２１ａに通知し、他装置２１ａが収集した情報を獲得する。  
・上記収集した自装置２１、並びに同一管理ドメイン内の他装置２１ａの情報をシステム情報テーブル２０２にて管理する。  
・仮想ハブ１８の生成、削除などを行う。
【００３８】
次に、システム情報テーブル２０２について説明する。図３は、システム情報テーブル２０２のフォーマットの一例を示す模式図である。すなわち、システム情報テーブル２０２は、ネットワーク仮想化装置情報３０１と、仮想ハブ情報３１０とを含んでいる。
【００３９】
ネットワーク仮想化装置情報３０１は、アンダーレイネットワークのＩＰアドレス／ネットマスク情報３０２と、収容仮想ハブ数３０３と、収容仮想ネットワーク数３０４と、システム負荷情報３０５とを含んでいる。更に、システム負荷情報３０５は、ＣＰＵ利用率３０６、メモリ利用率３０７、仮想ハブ毎のトラフィック３０９、総トラフィック３０８を含んでいる。
【００４０】
仮想ハブ情報３１０は、収容ホスト数３１１と、仮想ハブと各ホスト間とのコスト３１２とを含んでいる。更に、コスト３１２は、ホスト３１２ａと、ラウンドトリップタイム３１２ｂと、ホップ数３１２ｃとを含んでいる。
【００４１】
（仮想ハブ）  
図２に示すように、仮想ハブ１８は、複数の仮想イーサネットポート１８７を有する仮想イーサネットポート制御モジュール１８６と、仮想イーサネットスイッチモジュール１８５と、仮想ハブ制御モジュール１８１と、ＭＡＣアドレス学習テーブル１８２と、ホスト情報テーブル１８３と、ポート間トラフィックテーブル１８４とを含んでいる。
【００４２】
ホスト情報テーブル１８３は、そのデータ構成例を図４に示すように、自仮想ハブ１８が収容するホストの情報を保持している。すなわち、ホスト情報テーブル１８３は、仮想ネットワークインタフェース１９のＭＡＣアドレス１８３ａ、ホスト１７を収容する仮想イーサネットポート１８７（仮想イーサネットポート制御モジュール１８６内にある）の仮想イーサネットポート識別子１８３ｂ、仮想ハブ１８と該当ホスト１７間のラウンドトリップタイム１８３ｃ、仮想ハブ１８と該当ホスト１７間のホップ数（経由ルータ数）１８３ｄ、該当ホスト１７へのアンダーレイネットワークのＩＰパケットを送信する次ホップのゲートウェイを表すフォワーディング情報１８３ｅ、該当ホスト１７のアンダーレイネットワークのＩＰアドレス／ネットマスク情報１８３ｆを含む。これら情報は、仮想ハブ１８の分割や移動処理時に使用される。
【００４３】
ポート間トラフィックテーブル１８４は、各仮想イーサネットポート１８７間のトラフィック量を保持するテーブルである。
【００４４】
仮想イーサネットポート１８７は、ホスト１７の仮想ネットワークインタフェース１９との仮想イーサネットコネクションＡを保持するための仮想的なイーサネットポートであり、仮想イーサネットコネクションＡの仮想ハブ１８側の端点と見なすことができる。各仮想イーサネットポート１８７には、仮想イーサネットポート識別子１８３ｂが付与され、それにより識別される。
【００４５】
ＭＡＣアドレス学習テーブル１８２は、通常のイーサネットスイッチングハブ１４と同様、受信イーサネットフレームの送信元ＭＡＣアドレスと受信ポートとのマッピングを保持するテーブルである。通常のイーサネットスイッチングハブ１４では、受信イーサネットフレームの送信元ＭＡＣアドレスとのマッピングは受信ポートであるが、本実施の形態においては、送信元ＭＡＣアドレス１８３ａと仮想イーサネットポート識別子１８３ｂとのマッピングとなる。
【００４６】
仮想イーサネットポート制御モジュール１８６は、ホスト１７、又は他仮想ハブ１８ａからの接続要求を受け付け、ユーザ認証、その他通信路暗号化方法などの調整を行なう。その結果、接続が完了すると、ホスト１７の仮想ネットワークインタフェース１９との間、又は他仮想ハブ１８ａとの間の仮想イーサネットコネクションＡを保持するための仮想イーサネットポート１８７を生成し、仮想イーサネットポート識別子１８３ｂを付与する。更に、ホスト１７から接続要求を受けた場合には、そのホスト１７に関するエントリをホスト情報テーブル１８３に作成し、接続要求に格納されているホスト１７のネットワークアドレス、ネットマスク情報などをホスト情報テーブル１８３に保存する。また、各仮想イーサネットポート１８７からのイーサネットフレーム受信時には、ＭＡＣアドレス１８３ａの学習を行なう。すなわち、受信イーサネットフレームの送信元ＭＡＣアドレスと、該当イーサネットフレームを受信した仮想ネットワークポート（仮想イーサネットポート識別子１８３ｂ）１８７のマッピングをＭＡＣアドレス学習テーブル１８２に書き込む。
【００４７】
仮想イーサネットスイッチモジュール１８５は、基本的には、一般的なイーサネットスイッチングハブ１４と同様の処理を行なう。つまり、イーサネットフレームを受信すると（仮想イーサネットポート制御モジュール１８６からイーサネットフレームを受け取ると）、該当イーサネットフレームのヘッダの宛先ＭＡＣアドレスとＭＡＣアドレス学習テーブル１８２の情報から、出力先仮想イーサネットポート１８７を決定し、該当イーサネットフレームをその仮想イーサネットポート１８７に出力する（出力先仮想ネットワークポート情報（仮想イーサネットポート識別子１８３ｂ）をパラメータとして、該当イーサネットフレームを仮想イーサネットポート制御モジュール１８６へ渡す)。更に、上記処理に伴い、各仮想イーサネットポート１８７間の単位時間当たりのトラフィックを計測し、ポート間トラフィックテーブル１８４に保存する。
【００４８】
仮想ハブ制御モジュール１８１は、仮想ハブ１８の分割や移動の制御を行なう。具体的には、ホスト情報テーブル１８３のラウンドトリップタイム１８３ｃ、ホップ数１８３ｄ、フォワーディング情報１８３ｅ、ＩＰアドレス／ネットマスク情報１８３ｆの収集及び設定を行う。また、仮想イーサネットスイッチモジュール１８５がスイッチング処理に伴い収集し、ポート間トラフィックテーブル１８４に格納したポート間トラフィック情報を監視する。そして、これらの情報に基づき、必要に応じて仮想ハブ１８の分割、又は移動処理を開始する。また、自仮想ハブ１８の削除処理も行なう。例えば、予め定められた期間、収容するホスト１７が存在しない場合には、自身の処理を終了する。
【００４９】
［処理詳細］  
以下、仮想イーサネットコネクションＡの生成（仮想ネットワークインタフェース１９による仮想ハブ１８への接続）、仮想ハブ１８による分割・移動処理のための情報収集、仮想ハブ１８の分割・移動処理に関し、順に詳細を述べ、最後に、具体的なネットワーク構成に基づいて、仮想ハブ１８の分割・移動処理の例を記す。
【００５０】
（仮想ネットワークコネクションの生成）  
仮想イーサネットコネクションＡは、ホスト１７と仮想ハブ１８との間、仮想ハブ１８と仮想ハブ１８との間で生成、保持されるものであるが、ここでは、前者の場合のみについて述べる。
【００５１】
１．仮想ハブ１８への接続（仮想イーサネットコネクションＡの生成）は、以下の場合に行なわれる。  
・ホスト１７のユーザが、仮想ネットワークインタフェース制御モジュール２４を使用して仮想ハブ１８への接続要求を手動で出す場合。  
・ホスト１７のＯＳ起動時の一連の処理の中で、コンフィグレーションに基づいて仮想ネットワークインタフェース制御モジュール２４が呼び出され、接続要求を自動で出す場合。  
・ホスト１７の仮想ハブ１８間の移動処理（繋ぎ替え処理）時、移動元の仮想ハブ１８の仮想ハブ制御モジュール１８１がホスト１７へ移動要求を出す場合。
【００５２】
２．接続要求のパラメータは以下の通りである。  
・物理ネットワーク１１での仮想ハブ１８のＩＰアドレスである接続先ＩＰアドレス（接続先仮想ハブ１８のＩＰアドレス）。  
・認証方法、及び、認証パラメータ（ユーザ名、パスワードなど）  
・物理ネットワーク１１でのホスト自身のＩＰアドレス／ネットマスクであるホスト自身のＩＰアドレス／ネットマスク情報。  
・その他、通信路暗号化プロトコルやキープアライブ時間（無通信時の接続切断などに使用）等。
【００５３】
３．仮想ネットワークインタフェース制御モジュール２４から仮想ハブ１８への接続要求を受け取った仮想ネットワークインタフェース１９は、ＴＣＰ／ＩＰ以下のプロトコルを使用し、接続先の仮想ハブ１８と物理ネットワーク１１を使用して通信を行ない、ユーザ認証、通信路暗号化プロトコルその他のパラメータの調整、自身のネットワークアドレス、ネットマスク情報の送信などを行なった後、ホスト１７と仮想ハブ１８の間に仮想イーサネットコネクションＡを作成、保持する。
【００５４】
４．仮想ネットワークインタフェース１９によりホスト１７、仮想ハブ１８間に仮想イーサネットコネクションＡが作成されたことにより、ホスト１７上のアプリケーションプログラムは、同一仮想ネットワーク上に属する他ホスト１７と、そのホスト１７のイーサネットアドレス（仮想イーサネット上のネットワークアドレス）を指定することにより、イーサネットレベルでの通信が可能となる。なお、仮想ネットワーク１０上でＴＣＰ／ＩＰにて通信を行なう場合は、別途、ＩＰアドレス（仮想ネットワーク１０上で動作するＴＣＰ／ＩＰネットワークのＩＰアドレス）が必要となるが、ＩＰアドレスの割り当て方法は一般的なものであるので、ここではその説明を省略する。
【００５５】
（仮想ハブによる情報収集）  
仮想ハブ１８の仮想ハブ制御モジュール１８１、及び仮想イーサネットスイッチモジュール１８５は、分割や移動処理のための以下に示す各種情報（ラウンドトリップタイム、ホップ数、仮想イーサネットポート間トラフィック）を収集、保存する。また、収集した情報を自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に通知する。以下、各種情報について補足する。
【００５６】
・ラウンドトリップタイム  
仮想ハブ制御モジュール１８１は、各仮想イーサネットポート１８７（仮想イーサネットコネクションＡ）に対して、定期的に、又は分割や移動先の決定時に、ラウンドトリップタイム計測パケットを送出し、規定回数分の平均値（例えば１０回分の平均値）をホスト情報テーブル１８３に保存する。
【００５７】
・ホップ数  
仮想ハブ制御モジュール１８１は、各仮想イーサネットポート１８７（仮想イーサネットコネクションＡ）のアンダーレイネットワークのＩＰアドレスに対して、定期的に、又は分割や移動先の決定時に、ホップ数計測パケットを送出し、得られたホップ数（ホスト１７−仮想ハブ１８間のルータ数）をホスト情報テーブル１８３に保存する。
【００５８】
・仮想ネットワークポート間トラフィック  
仮想ハブ１８の仮想イーサネットスイッチモジュール１８５は、イーサネットフレームのスイッチングの際、該当仮想イーサネットポート１８７間のトラフィックを計測し、単位時間当たりの値（イーサネットフレーム数、バイト数など）をポート間トラフィックテーブル１８４に保存する。
【００５９】
（仮想ハブ分割・移動処理フロー）  
仮想ハブ１８の分割及び移動処理は、本実施の形態におけるネットワーク仮想化装置２１における動作の中でも、最も特徴的な部分である。この処理の一例を図５に示すフローチャートを用いて説明する。
【００６０】
（ステップＳ１）仮想ハブ制御モジュール１８１は、ホスト情報テーブル１８３、ポート間トラフィックテーブル１８４の内容を定期的に監視し、分割・移動開始判定基準を超える事象又は状態を検出した場合に分割及び移動処理を開始する。なお、分割・移動開始判定基準及び判定処理の詳細は後述する。
【００６１】
（ステップＳ２）仮想ハブ制御モジュール１８１は、分割及び移動処理を開始すると、移動先ネットワーク仮想化装置２１の選択処理を行なう。移動先ネットワーク仮想化装置２１による選択処理の詳細は後述する。
【００６２】
（ステップＳ３）仮想ハブ制御モジュール１８１は、移動先ネットワーク仮想化装置２１に、自仮想ハブ１８と同一仮想ネットワークに属する仮想ハブ１８が存在するかを確認する。具体的には、自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に問い合わせを行なう。システム制御モジュール２０１は、システム情報テーブル２０２の移動先ネットワーク仮想化装置２１に対応するエントリにて、問い合わせを行なった仮想ハブ１８と同一の仮想ネットワークに属する仮想ハブ１８が存在するかどうかをチェックし、その結果を仮想ハブ制御モジュール１８１に返す。
【００６３】
（ステップＳ４）仮想ハブ制御モジュール１８１は、移動先ネットワーク仮想化装置２１にて、仮想ハブ１８の新規作成が受け入れ可能かをチェックする。具体的には、自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に問い合わせを行なう。システム制御モジュール２０１は、システム情報テーブル２０２の移動先ネットワーク仮想化装置２１に対応するエントリにて、上記処理が受け入れ可能かどうかの判定を行ない、結果を仮想ハブ制御モジュール１８１に返す。受け入れ可能かどうかの判定処理の詳細は後述する。
【００６４】
（ステップＳ５）移動先ネットワーク仮想化装置２１にて、新規の仮想ハブ１８を作成する。具体的には、以下の処理を行なう。すなわち、先ず、仮想ハブ制御モジュール１８１は、自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に、移動先ネットワーク仮想化装置２１での新規の仮想ハブ１８の作成依頼を行なう。次に、上記依頼を受けたシステム制御モジュール２０１は、移動先ネットワーク仮想化装置２１のシステム制御モジュール２０１に、新規仮想ハブ１８の作成を依頼する。そして、上記依頼を受けた移動先ネットワーク仮想化装置２１のシステム制御モジュール２０１は、自装置２１上で指定の仮想ネットワークに属する仮想ハブ１８を作成し、その結果を依頼元に返す。
【００６５】
（ステップＳ６）仮想ハブ制御モジュール１８１は、移動先ネットワーク仮想化装置２１、及び仮想ハブ１８にて、移動対象のホスト１７が受け入れ可能かのチェックを行なう。具体的には、自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に問い合わせを行なう。システム制御モジュール２０１は、システム情報テーブル２０２の移動先ネットワーク仮想化装置２１に対応するエントリにて、上記処理が受け入れ可能かどうかの判定を行ない、結果を仮想ハブ制御モジュール１８１に返す。受け入れ可能な場合はステップＳ７へ、受け入れ可能でない場合には処理を終了する。受け入れ可能かどうかの判定処理の詳細は後述する。
【００６６】
（ステップＳ７）仮想ハブ制御モジュール１８１は、仮想ハブ１８を移動するか、又は分割するかの判定を行なう。具体的には、ホスト情報テーブル１８３の情報を参照するか、又は自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に問い合わせを行なう。そして、分割すべきであると判定した場合はステップＳ８へ、移動すべきであると判定した場合にはステップＳ９へ進む。移動か分割かの判定基準、判定処理の詳細は後述する。
【００６７】
（ステップＳ８）仮想ハブ制御モジュール１８１は、移動対象のホスト１７を、移動先ネットワーク仮想化装置２１の該当仮想ハブ１８に繋ぎ替え、分割又は移動の処理を終了する。具体的には以下の処理を行なう。
【００６８】
すなわち、移動元の仮想ハブ制御モジュール１８１は、移動対象となるホスト１７に対して、物理ネットワークのＩＰアドレスである移動先ネットワーク仮想化装置２１の情報や、仮想ネットワークを識別可能な情報（識別子、アンダーレイネットワークのトランスポート層のポート番号等）をパラメータとした、仮想ハブ接続変更要求を送出する。
【００６９】
次に、上記仮想ハブ接続変更要求を受信したホスト１７の仮想ネットワークインタフェース制御モジュール２４は、要求に含まれる情報を元に、移動先の仮想ハブ１８との仮想イーサネットコネクションＡを生成し、要求に対する応答を移動元の仮想ハブ１８へ返す。その後、移動元の仮想ハブ１８との仮想イーサネットコネクションＡを削除する。
【００７０】
（ステップＳ９）仮想ハブ制御モジュール１８１は、移動先ネットワーク仮想化装置２１、及び仮想ハブ１８が、自仮想ハブ１８が収容する全ホストを受け入れ可能かのチェックを行なう。具体的には、自身が属するネットワーク仮想化装置２１のシステム制御モジュール２０１に問い合わせを行なう。システム制御モジュール２０１は、システム情報テーブル２０２の移動先ネットワーク仮想化装置２１に対応するエントリにて、上記処理が受け入れ可能かどうかの判定を行ない、結果を仮想ハブ制御モジュール１８１に返す。受け入れ可能な場合にはステップＳ１０へ、受け入れ可能でない場合にはステップＳ８に進む。受け入れ可能かどうかの判定処理の詳細は後述する。
【００７１】
（ステップＳ１０）仮想ハブ制御モジュール１８１は、自仮想ハブ１８が収容する全てのホスト１７を、移動先ネットワーク仮想化装置２１の該当仮想ハブ１８に繋ぎ替える。繋ぎ替え処理の詳細はステップＳ８と同様である。
【００７２】
（ステップＳ１１）仮想ハブ制御モジュール１８１は、自仮想ハブ１８の処理を終了（シャットダウン）する。
【００７３】
（ステップＳ１２，Ｓ１３）なお、ステップＳ４にて仮想ハブ１８の受け入れが不可となった場合、又はステップＳ６にて受け入れ不可となった場合に、分割・移動先候補が他にも存在する場合には、ステップＳ２の処理に戻り、次善の候補を選択することもできる。
【００７４】
（仮想ハブ分割・移動判定基準、判定処理詳細）  
次に、図５に示す処理フロー中の各種判定基準、判定処理の処理詳細について記載する。処理によっては複数基準が存在するが、いずれの基準を使用するか、基準値をどのように設定するかなどは仮想ネットワークを運用するサイトのポリシーにより設定される事項であるので、以下に示す記載に限定されるものではない。
【００７５】
ステップＳ１で用いられる分割・移動開始判定で用いられる基準、判定処理には、以下に示す通り、例えばフロードリブンと、トポロジドリブンとの２つがある。
【００７６】
フロードリブンによる分割・移動処理では、仮想ハブ制御モジュール１８１が、各仮想イーサネットポート１８７間のトラフィック（ポート間トラフィックテーブル１８４）を監視し、ある特定の仮想イーサネットポート１８７間トラフィックが予め定めている閾値を超えた場合に、分割・移動処理を開始する。例えば、閾値としては、単位時間当たりのフレーム数、バイト数（例えば１時間あたり１０Ｍフレーム、１分間あたり１０ＭＢｙｔｅ等）や、該当仮想ハブ１８の総トラフィックに対する該当仮想イーサネットポート１８７間のトラフィックの割合（例えば５０％等）が考えられる。
【００７７】
トポロジドリブンによる分割・移動処理では、仮想ハブ制御モジュール１８１は、ホスト情報テーブル１８３を監視し、自仮想ハブ１８が収容するホスト１７の内、予め定めた基準値を超えるホスト１７が、物理ネットワーク１１の特定のエリアに属していると判断した場合、分割・移動処理を開始する。例えば、基準値としては、収容するホスト１７の５０％や、１０ホスト等が考えられる。また、上記ホストが、物理ネットワーク１１の特定のエリアに属していると判断する基準は、以下のようなものが考えられる。  
・上記ホスト群が、物理ネットワーク１１にて同一ネットワークアドレスを持ち、かつ、そのネットワークアドレスが、自身が属するネットワーク仮想化装置２１とは異なる場合。  
・上記ホスト群への物理ネットワーク１１のＩＰパケット送信処理にて、次ホップが同一で、かつ、それらホスト１７が、自身が属するネットワーク仮想化装置２１と物理ネットワーク１１の同一ＬＡＮセグメントに存在しない場合。
【００７８】
ステップＳ２における分割・移動先ネットワークの決定に際しては、以下に示す通り、例えばコストベースと、トポロジベースとの２つの判定基準及び判定処理がある。なお、フロードリブンで分割・移動開始を決定した場合は、以下のいずれかの方法でも分割・移動先を決定しても差し支えないが、トポロジドリブンで分割・移動開始を決定した場合は、コストベースで決定しても動作上は問題無いが、トポロジベースで分割・移動先を決定することが妥当である。
【００７９】
コストベースの判定を行う場合、仮想ハブ制御モジュール１８１は、ホスト情報テーブル１８３、及びシステム制御モジュール２０１を介して自身が属するネットワーク仮想化装置２１のシステム情報テーブル２０２の情報から、以下のコストをチェックする。  
・自身が属するネットワーク仮想化装置２１と移動対象ホスト間のコスト。  
・同一管理ドメイン内の、自身が属するネットワーク仮想化装置２１以外のネットワーク仮想化装置２１と移動対象ホスト間のコスト。
【００８０】
またここで、コストは、具体的には以下のようなものが考えられる。
【００８１】
・ラウンドトリップタイム。  
・ホップ数（アンダーレイネットワークのホップ数）。
【００８２】
そして、上記チェックしたコストのうち、最小のコストを持つネットワーク仮想化装置２１が、自身の属するネットワーク仮想化装置２１でない場合、そのネットワーク仮想化装置２１を分割・移動先として選択する。なお、移動対象ホストは複数存在するため、最終的なコストは、それら全てのホストに対するコストの平均をとるなどの措置が必要となる。
【００８３】
一方、トポロジベースの判定を行う場合、仮想ハブ制御モジュール１８１は、ホスト情報テーブル１８３、及びシステム制御モジュール２０１を介して自身が属するネットワーク仮想化装置２１のシステム情報テーブル２０２の情報から、以下のトポロジ情報をチェックする。  
・移動対象ホストの物理ネットワーク１１上でのトポロジ情報。  
・同一管理ドメイン内の、自身が属するネットワーク仮想化装置２１以外のネットワーク仮想化装置２１の物理ネットワーク１１上でのトポロジ情報。
【００８４】
またここで、トポロジ情報は、具体的には以下のようなものが考えられる。
【００８５】
・物理ネットワーク１１のＩＰアドレス（ネットワークアドレス）。  
・物理ネットワーク１１のフォワーディング情報。  
・物理ネットワーク１１の経路制御情報。
【００８６】
そして、上記チェックしたトポロジ情報を元にした分割・移動先選択の基準は、以下のようなものが考えられる。
【００８７】
上記移動対象のホスト群が、物理ネットワーク１１にて、あるネットワーク仮想化装置２１と同一ネットワークアドレスを持ち、かつ、そのネットワーク仮想化装置２１が自身が属するものではなく、かつ、そのネットワーク仮想化装置２１が、自身が属するネットワーク仮想化装置２１と物理ネットワーク１１の同一ＬＡＮセグメントに存在しない場合に、そのネットワーク仮想化装置２１を分割・移動先とする。
【００８８】
上記移動対象ホスト群への物理ネットワーク１１のＩＰパケット送信処理における次ホップと、あるネットワーク仮想化装置２１への同処理における次ホップが同一で、かつ、そのネットワーク仮想化装置２１が自身が属するものではなく、かつ、そのネットワーク仮想化装置２１が、自身が属するネットワーク仮想化装置２１と物理ネットワーク１１の同一ＬＡＮセグメントに存在しない場合に、そのネットワーク仮想化装置２１を分割・移動先とする。
【００８９】
上記と同様の判定処理を、物理ネットワーク１１のＩＰ経路情報に基づいて行なう。
【００９０】
なお、移動対象ホスト１７は複数存在するため、最終的な判断は、移動対象の全ホスト１７のうち最も多いホスト１７とトポロジ的に近い（同一ネットワークアドレスを持つ、同一次ホップである等）ネットワーク仮想化装置２１を選択するなどの措置が必要となる。
【００９１】
次に、ステップＳ４，Ｓ６，Ｓ９で行われる移動先での仮想ハブ１８、ホスト１７の受け入れ判定基準及び判定処理の例について説明する。
【００９２】
仮想ハブ制御モジュール１８１は、（システム制御モジュール２０１を介して）自身が属するネットワーク仮想化装置２１のシステム情報テーブル２０２の情報から、予め定めている閾値を超えた場合に、移動先ネットワーク仮想化装置２１での仮想ハブ１８の受け入れ、又は移動先仮想ハブ１８でのホスト１７の受け入れが不可であると判断する。例えば、閾値は以下のようなものが考えられる。  
・移動先ネットワーク仮想化装置２１のＣＰＵ利用率５０％。  
・移動先ネットワーク仮想化装置２１の仮想ハブ収容数が１０。  
・移動先ネットワーク仮想化装置２１のホスト収容数が１００。  
・移動先仮想ハブ１８のホスト収容数が２０。  
・移動先仮想ハブ１８の単位時間当たりのトラフィックが１０ＭＢｙｔｅｓ。
【００９３】
次に、ステップＳ７で行われる分割か移動かの判定例について説明する。
【００９４】
仮想ハブ制御モジュール１８１は、ホスト情報テーブル１８３の情報、及びシステム制御モジュール２０１を介して自身が属するネットワーク仮想化装置２１のシステム情報テーブル２０２の情報から、予め定めている閾値を超えた場合（或いは超えていない場合）に移動とし、超えていない場合（或いは超えた場合）に分割と判断する。例えば、判断項目、及び、閾値は以下のようなものが考えられる。
【００９５】
移動対象のホスト１７の合計トラフィックの、自仮想ハブ１８が収容する全ホスト１７の合計トラフィックに対する割合が、予め定めている閾値を超えた場合に移動し、超えていない場合に分割とする。閾値としては、例えば、上記割合が７０％の場合とする。
【００９６】
移動対象のホスト１７の数の、自仮想ハブ１８が収容する全てのホスト１７の数に対する割合が、予め定めている閾値を超えた場合に移動し、超えていない場合に分割とする。閾値としては、例えば上記割合が５０％の場合とする。
【００９７】
移動先ネットワーク仮想化装置２１、又は移動先仮想ハブ１８の負荷が、予め定めている閾値を超えた場合に分割し、超えていない場合に移動とする。例えば、閾値としては、例えば以下のようなものがある。
【００９８】
・移動先ネットワーク仮想化装置２１のＣＰＵ利用率５０％。  
・移動先ネットワーク仮想化装置２１の仮想ハブ収容数が１０。  
・移動先ネットワーク仮想化装置２１のホスト収容数が１００。  
・移動先仮想ハブ１８のホスト収容数が２０。  
・移動先仮想ハブ１８の単位時間当たりのトラフィックが１０ＭＢｙｔｅｓ。
【００９９】
（仮想ハブ分割・移動処理の具体例１）  
物理ネットワーク１１、及び仮想ネットワーク１０を構成するネットワーク仮想化装置２１、仮想ハブ１８、ホスト１７が、図６のような状態の場合に関し、仮想ハブ１８の分割・移動処理の詳細を記す。本例はフロードリブンによる分割・移動処理開始の例である。
【０１００】
図６は、ある企業のネットワーク構成であり、物理ネットワークであるＴＣＰ／ＩＰネットワークはルータ１２（＃１〜＃３）により、４つのＬＡＮセグメント（ＬＡＮ１〜ＬＡＮ４）に分割されている。
【０１０１】
初期状態では、ネットワーク仮想化装置２１（＃１〜＃４）が、それぞれ、ＬＡＮ１〜４に配置されており、ＬＡＮ１上のネットワーク仮想化装置２１（＃１）がホスト１７（＃１〜＃９）の全てを収容している。この状態で、ネットワーク仮想化装置２１（＃１）の仮想ハブ１８（＃１）は、仮想イーサネットポート１８７間のトラフィック情報に基づき、ホスト１７（＃２〜＃６）及び、ホスト１７（＃７，＃８）を移動すべきできあると判断する。
【０１０２】
さらに、コストベースでの分割・移動先判定（ネットワーク仮想化装置２１（＃１），ネットワーク仮想化装置２１（＃３），ネットワーク仮想化装置２１（＃４）とホスト１７（＃２〜＃８）間のラウンドトリップタイム計測値）に基づき、最終的に、ホスト１７（＃２〜＃６）をネットワーク仮想化装置２１（＃３）に、ホスト１７（＃７，＃８）をネットワーク仮想化装置２１（＃４）に移動すべきであると判断する。
【０１０３】
そこで、ネットワーク仮想化装置２１（＃３，＃４）上での仮想ハブ１８の有無、仮想ハブ作成、ホスト１７の受け入れ可否、分割か移動か、などの判断ののち、分割と判断して処理をした状態が図７である。結果的に、ホスト１７（＃２〜＃６）のトラフィックはＬＡＮ３内に、ホスト１７（＃７，＃８）のトラフィックはＬＡＮ４内に、局所化される。
【０１０４】
一方、移動であると判断すると、ホスト１７（＃２〜＃８）だけでなく、ホスト１７（＃１，＃９）ともネットワーク仮想化装置２１（＃３）上の仮想ハブ１８（＃３）、又はネットワーク仮想化装置２１（＃４）上の仮想ハブ１８（＃４）へ移動し、更に、仮想ハブ１８（＃２）と仮想ハブ１８（＃３）、仮想ハブ１８（＃２）と仮想ハブ１８（＃４）との接続を仮想ハブ１８（＃３）と仮想ハブ１８（＃４）の接続に変更後、ネットワーク仮想化装置２１（＃１）上の仮想ハブ１８（＃１）は、自らを終了し、その結果、図８のような状態となる。
【０１０５】
（仮想ハブ分割・移動処理の具体例２）  
アンダーレイネットワーク及び、仮想ネットワーク１０を構成するネットワーク仮想化装置２１、仮想ハブ１８、ホスト１７が、図９のような状態の場合に関し、仮想ハブの分割・移動処理の詳細を記す。本例はトポロジドリブンによる分割・移動処理開始の例である。
【０１０６】
図９は、ある企業のネットワーク構成であり、構成、初期状態は前述の図６と同様である。この状態で、ネットワーク仮想化装置２１（＃１）の仮想ハブ１８（＃１）は、物理ネットワーク１１（＃１〜＃４）（ＬＡＮ１〜４）のフォワーディング情報（次ホップ情報）に基づき、ホスト１７（＃２〜＃８）を移動すべきできあると判断する。更に、トポロジベースでの分割・移動先判定に基づき、ネットワーク仮想化装置２１（＃２）が上記ホスト１７と同一次ホップに属すことが判るため、最終的に上記ホスト１７をネットワーク仮想化装置２１（＃２）に移動すべきであると判断する。
【０１０７】
そこで、ネットワーク仮想化装置２１（＃２）上での仮想ハブ１８（＃２）の有無、仮想ハブ作成、ホスト１７の受け入れ可否、分割か移動か、などの判断の後、分割と判断して処理をした状態が図１０である。結果的に、ホスト１７（＃２〜＃８）のトラフィックがＬＡＮ２〜４に局所化され、ＬＡＮ１に流入することが無くなった。一方、移動であると判断すると、ホスト１７（＃２〜＃８）だけでなく、ホスト１７（＃１，＃９）ともネットワーク仮想化装置２１（＃２）上の仮想ハブ１８（＃２）へ移動し、ネットワーク仮想化装置２１（＃１）上の仮想ハブ１８（＃１）は自らを終了し、その結果、図１１のような状態となる。
【０１０８】
さらに、図１１の状態で、ネットワーク仮想化装置２１（＃２）が、物理ネットワーク（ＬＡＮ）のＩＰのネットワークアドレス情報に基づき、ホスト１７（＃２〜＃６）をネットワーク仮想化装置２１（＃３）へ、ホスト１７（＃７，＃８）をネットワーク仮想化装置２１（＃４）へ、移動すべきであると判断する。そこで、上記と同様、ネットワーク仮想化装置２１（＃３，＃４）上での仮想ハブ１８（＃３，＃４）の有無、仮想ハブ作成、ホスト１７の受け入れ可否、分割か移動か、などの判断ののち、分割と判断して処理をした状態が図１２である。結果的に、ホスト１７（＃２〜＃６）のトラフィックはＬＡＮ３内に、ホスト１７（＃７，＃８）のトラフィックはＬＡＮ４内に局所化される。
【０１０９】
［各機能モジュールの実装例］  
本実施の形態の特徴的な部分である仮想ハブ１８の分割、移動の機能は、仮想イーサネットコネクションＡ、仮想ネットワークインタフェース１９、仮想ハブ１８の実装方法に依存しないが、参考のため、これらの機能モジュールの、一般的なＵＮＩＸにおけるいくつかの実装方法を以下に述べる。
【０１１０】
（仮想ネットワークインタフェースの実装例）  
仮想ネットワークインタフェース１３００，１４００の実装例として、仮想イーサネットコネクションＡの実現方法に着目した、一般的なＵＮＩＸにおける実装方法を図１３，図１４に示す。
【０１１１】
１．ＩＰトンネリングの仕組みを利用した実装方法  
図１３は、一般的なＩＰトンネリングの仕組みを利用したものであり、仮想ネットワークインタフェース層１３０８はＯＳのカーネル１３０２の内部に実装される。ユーザプロセス１３０１内には、例えばシステム制御モジュール２０１である制御アプリケーションプログラム１３０３、及びその他のアプリケーションプログラム１３０４が存在する。仮想ネットワークインタフェース層１３０８は、上位層であるイーサネット層１３０７からは単なるネットワークインタフェースとして見えるが、一方、下位層であるＩＰ（アウターＩＰ）層１３０９からは、ＴＣＰ／ＵＤＰ層１３０５と同様のトランスポート層として見える。本実装方法では、仮想イーサネットコネクションＡはホスト１７と仮想ハブ１８間のＩＰトンネルとなる。
【０１１２】
２．トンネルインタフェースの仕組みを利用した実装方法  
図１４（ａ）及び図１４（ｂ）は、一般的なトンネルインタフェースの仕組みを利用したものであり、仮想ネットワークインタフェースプログラム１４０３はユーザプロセス１４０１として実装される。ＯＳのカーネル１４０２内の通信プロトコルとのデータのやりとりは、トンネルインタフェース１４１１を介して行なう。
【０１１３】
図１４（ａ）は、トンネルインタフェース１４１１がＩＰデータグラムを処理する（ユーザランドのプログラムとＩＰデータグラムをやりとりする）タイプである。この場合、ユーザプロセス１４０１には、仮想ネットワークインタフェースプログラム１４０３の他に、制御アプリケーションプログラム１４０４、イーサネット層１４０５、必要に応じてＨＴＴＰ１４０６、アプリケーションプログラム１４０７が実装される。一方、カーネル１４０２には、ＴＣＰ／ＵＤＰ層１４０９、ＩＰ層１４１０、トンネルインタフェース１４１１、イーサネット層１４１２、及び物理ネットワークインタフェース１４１３が実装される。
【０１１４】
図１４（ｂ）は、トンネルインタフェース１４１１がイーサネットフレームを処理する（ユーザランドのプログラムとイーサネットフレームをやりとりする）タイプである。この場合、ユーザプロセス１４０１には、仮想ネットワークインタフェースプログラム１４０３の他に、制御アプリケーションプログラム１４０４、必要に応じてＨＴＴＰ１４０６、アプリケーションプログラム１４０７が実装される。一方、カーネル１４０２には、ＴＣＰ／ＵＤＰ層１４０９、ＩＰ層１４１０、トンネルインタフェース１４１１、イーサネット層１４１２、及び物理ネットワークインタフェース層１４１３が実装される。
【０１１５】
なお、図１３に示すＩＰトンネリングの仕組みを利用した方法、および図１４（ｂ）に示す方法では、ＵＮＩＸのＯＳ内の既存のイーサネット層１３０７，１３１０，１４１２が、物理ネットワークインタフェース層１３１１，１４１３、仮想ネットワークインタフェース１３０８，１４０３双方の上位層として使用可能であるが、図１４（ａ）に示す方法では、仮想ネットワークインタフェースプログラム１４０３の上位に位置するイーサネット層１４０５の処理を、ユーザプログラムである仮想ネットワークインタフェースプログラム１４０３の中に実装する必要があり、実装はより複雑になり得る。本実装方法では、仮想イーサネットコネクションＡはホスト１７と仮想ハブ１８間のソケット（ＴＣＰソケット、ＵＤＰソケット、或いはＲａｗ  ＩＰソケットなど）となる。
【０１１６】
（仮想ネットワークインタフェースの処理フロー）  
以下に、上記２つの実装例について、それぞれ処理内容を記す。
【０１１７】
１．ＩＰトンネリングの仕組みを利用した実装方法  
ＩＰトンネリングで構成されるホスト１７と仮想ハブ１８間の仮想イーサネットコネクションＡを使用し、仮想ネットワーク１０のイーサネットフレームの送受信を行なう。
【０１１８】
・仮想ネットワーク上の他ホストへの送信  
（ａ）ホスト（以後、送信元ホスト）１７上のアプリケーションプログラム１３０４は、宛先ホストへデータを送信しようとする。  
（ｂ）アプリケーションプログラム１３０４からの送信データを受け取ったＴＣＰ／ＵＤＰ層１３０５、及びＩＰ（インナーＩＰ）層１３０６は、仮想イーサネットコネクションＡ上での宛先ホストのＩＰアドレスを元に、出力ネットワークインタフェースとして仮想ネットワークインタフェース１９を選択し、ＩＰパケットをイーサネット層１３０７に渡す。
【０１１９】
（ｃ）ＩＰ（インナーＩＰ）層１３０６からＩＰパケットを受け取ったイーサネット層１３０７は、ＩＰパケットをイーサネットフレームに格納し、それを仮想ネットワークインタフェース層１３０８に渡す。
【０１２０】
（ｄ）イーサネット層からイーサネットフレームを受け取った仮想ネットワークインタフェース層１３０８は、送信元ホスト１７が接続している仮想ハブ１８のＩＰアドレスをパラメータとして、該当イーサネットフレームをＩＰ（アウターＩＰ）層１３０９へ渡す。この時、ＩＰヘッダのプロトコルフィールドに、自身を識別するための値を設定する。
【０１２１】
（ｅ）ＩＰ（アウターＩＰ）層１３０９以下のプロトコルスタックは、通常の処理を行ない、該当データを仮想ハブ１８へ送信する。
【０１２２】
・仮想ネットワーク上の他ホストからの受信  
（ａ）物理ネットワークインタフェース層１３１１、その上位のイーサネット層１３１０の処理は一般的なものにより、ここでは、その詳細説明を割愛する。  
（ｂ）イーサネット層１３１０からイーサネットフレームを受け取ったＩＰ（アウターＩＰ）層１３０９は、ＩＰヘッダのプロトコルフィールドを元に、該当ＩＰパケットが仮想ネットワークインタフェース層１３０８宛（ＩＰ（アウターＩＰ）層１３０９から見ると、仮想ネットワークインタフェース層１３０８は単なる一トランスポート層に見える）であると判断し、それを仮想ネットワークインタフェース層１３０８へ渡す。  
（ｃ）ＩＰ（アウターＩＰ）層１３０９からＩＰパケットを受け取った仮想ネットワークインタフェース層１３０８は、該当ＩＰパケットからイーサネットフレームを取り出し、それを上位層であるイーサネット層１３０７へ渡す。  
（ｄ）以降、イーサネット層１３０７以上のプロトコルは、通常の処理を行ない、該当データをアプリケーションプログラムへ渡す。
【０１２３】
２．トンネルインタフェースの仕組み（その１：図１４（ａ））を利用した実装方法  
ＴＣＰソケット、ＵＤＰソケット、或いはＲａｗ  ＩＰソケットなどで構成されるホスト１７と仮想ハブ１８間の仮想イーサネットコネクションＡを使用し、仮想ネットワークのイーサネットフレームの送受信を行なう。
【０１２４】
・仮想ネットワーク上の他ホストへの送信  
（ａ）ホスト（以後、送信元ホスト）上のアプリケーションプログラム１４０７は、宛先ホストへデータを送信しようとする。  
（ｂ）アプリケーションプログラム１４０７からの送信データを受け取ったＴＣＰ／ＵＤＰ層１４０９、及びＩＰ層１４１０は、仮想イーサネット上での宛先ホストのＩＰアドレスを元に、出力ネットワークインタフェースとしてトンネルインタフェースを選択し、ＩＰパケットをトンネルインタフェース１４１１に渡す。  
（ｃ）ＩＰ１４１０層からＩＰパケットを受け取ったトンネルインタフェース１４１１は、ＩＰパケットを、ｒｅａｄシステムコール経由でユーザランドの仮想ネットワークインタフェースプログラム１４０３に渡す。  
（ｄ）トンネルインタフェース１４１１からＩＰパケットを受け取った仮想ネットワークインタフェースプログラム１４０３は、送信元ホストが接続している仮想ハブのＩＰアドレスをパラメータとして生成されたソケットに対し、該当ＩＰパケットをイーサネットフレームに格納して書き込む。  
（ｅ）以下のプロトコルスタックは、通常の処理を行ない、該当データを仮想ハブ１８へ送信する。
【０１２５】
・仮想ネットワーク上の他ホストからの受信  
（ａ）物理ネットワークインタフェース層１４１３から上位のＴＣＰ／ＵＤＰ層１４０９の処理は一般的なものにより、ここではその詳細説明を割愛する。  
（ｂ）仮想ハブ１８とのソケットからデータ（イーサネットフレーム）を受け取った仮想ネットワークインタフェースプログラム１４０３は、イーサネットフレームからＩＰパケットを取り出し、ｗｒｉｔｅシステムコール経由でトンネルインタフェース１４１１へ該当ＩＰパケットを渡す。  
（ｃ）仮想ネットワークインタフェースプログラム１４０３からＩＰパケットを受け取ったトンネルインタフェース１４１１は、該当ＩＰパケットを上位層であるＩＰ層１４１０へ渡す。  
（ｄ）以降、ＩＰ層１４１０以上のプロトコルは、通常の処理を行ない、該当データをアプリケーションプログラム１４０７へ渡す。
【０１２６】
３．トンネルインタフェースの仕組み（その２：図１４（ｂ））を利用した実装方法  
ＴＣＰソケット、ＵＤＰソケット、或いはＲａｗ  ＩＰソケットなどで構成されるホストと仮想ハブ間の仮想ネットワークコネクションを使用し、仮想ネットワークのイーサネットフレームの送受信を行なう。
【０１２７】
・仮想ネットワーク上の他ホストへの送信  
（ａ）ホスト（以後、送信元ホスト）上のアプリケーションプログラム１４０７は、宛先ホストへデータを送信しようとする。  
（ｂ）アプリケーションプログラム１４０７からの送信データを受け取ったＴＣＰ／ＵＤＰ層１４０９、ＩＰ層１４１０、及びイーサネット層１４１２は、仮想イーサネット上での宛先ホストのＩＰアドレスを元に、出力ネットワークインタフェースとしてトンネルインタフェース１４１１を選択し、イーサネットフレームをトンネルインタフェース１４１１に渡す。  
（ｃ）イーサネット層１４１２からイーサネットフレームを受け取ったトンネルインタフェース１４１１は、イーサネットフレームを、ｒｅａｄシステムコール経由でユーザランドの仮想ネットワークインタフェースプログラム１４０３に渡す。  
（ｄ）トンネルインタフェース１４１１からイーサネットフレームを受け取った仮想ネットワークインタフェースプログラム１４０３は、送信元ホストが接続している仮想ハブのＩＰアドレスをパラメータとして生成されたソケットに対し、該当イーサネットフレームを書き込む。  
（ｅ）以下のプロトコルスタックは、通常の処理を行ない、該当データを仮想ハブへ送信する。
【０１２８】
・仮想ネットワーク上の他ホストからの受信  
（ａ）物理ネットワークインタフェース層１４１３から上位のＴＣＰ／ＵＤＰ層１４０９の処理は一般的なものにより、ここではその詳細説明を割愛する。  
（ｂ）仮想ハブとのソケットからデータ（イーサネットフレーム）を受け取った仮想ネットワークインタフェースプログラム１４０３は、ｗｒｉｔｅシステムコール経由でトンネルインタフェース１４１１へ該当イーサネットフレームを渡す。  
（ｃ）仮想ネットワークインタフェースプログラム１４０３からイーサネットフレームを受け取ったトンネルインタフェース１４１１は、該当イーサネットフレームを上位層であるイーサネット層１４１２へ渡す。  
（ｄ）以降、イーサネット層１４１２以上のプロトコルは、通常の処理を行ない、該当データをアプリケーションプログラム１４０７へ渡す。
【０１２９】
（仮想ハブの実装例）  
以下、仮想ハブの実装例について説明するが、先ず、ネットワーク仮想化装置の概念的なプロトコルスタック１５００を図１５に示す。この図から以下のようなことが言える。すなわち、仮想ハブ１５０３〜１５０５は、様々なプロトコル上で動作させることが可能である。一例として、図１５において一番左側に示す仮想ハブ１５０３では、ＨＴＴＰなどのより上位層プロトコル１５０６上で動作し、一番右側の仮想ハブ１５０５では、ＩＰ層１５０８及びイーサネット層１５０９のすぐ上位で動作する。後者は、例えば、仮想ネットワークインタフェース未対応ホスト２０を収容する場合に使用する。図１５に示す仮想ハブのうち、真ん中の仮想ハブ１５０４では、ＨＴＴＰ／他プロトコル１５０６、ＴＣＰ／ＵＤＰ層１５０７、及びＩＰ層１５０８のすぐ上位で動作する。また、これら仮想ハブ１５０３〜１５０５より上位に、仮想ＮＡＰ（ＮＡＰＴ）１５０２、或いは仮想ルータ１５０１などの機能を搭載することにより、仮想ネットワークの実現だけでなく、本実施の形態の特徴を持つ様々な仮想ネットワークを構築することが可能となる。
【０１３０】
次に、仮想ハブ１６００，１７００，１８００の実装例として、仮想イーサネットポート制御モジュール、仮想イーサネットスイッチモジュールの実装場所に着目した、一般的なＵＮＩＸにおける実装方法を図１６乃至図１８に示す。
【０１３１】
第１の方法は、図１６に示すように、仮想イーサネットポート制御モジュール１６０５、仮想イーサネットスイッチモジュール１６０１ともにＯＳのカーネル内に実装する方法である。この方法では、ＩＰ層１６０６の上位に仮想イーサネットポート制御モジュール１６０５が位置し、仮想イーサネットスイッチモジュール１６０１は仮想イーサネットポート制御モジュール１６０５の上位に位置するか、或いはカーネルスレッドなどにより実装される。なお、仮想イーサネットポート制御モジュール１６０５、仮想イーサネットスイッチモジュール１６０１ともにＯＳのカーネル１６１０内に実装されているため、これらは受信キュー１６０２や関数コール１６０４によりデータの受渡しを行なう。エンキュー１６０３は、受信キュー１６０２にデータを格納する処理である。なお、イーサネット層１６０７、ネットワークインタフェース１６０８は一般的なものであるので、ここでは説明を省略する。
【０１３２】
第２の方法は、図１７に示すように、仮想イーサネットポート制御モジュール１７０５をＯＳのカーネル１７０２内に、仮想イーサネットスイッチモジュール１７０３をユーザプロセス１７０１として実装する方法である。この方法では、仮想イーサネットポート制御モジュール１７０５は上記と同様、ＩＰ層１７０６の上位に位置し、仮想イーサネットスイッチモジュール１７０３はユーザプロセス１７０１として実装される。仮想イーサネットスイッチモジュール１７０３はユーザプロセス１７０１として実装されるため、これらはデータリンク層のデータを直接やりとりできるリンクソケット等の特別なソケット１７０４を介してデータの受渡しを行なう。なお、イーサネット層１７０７、ネットワークインタフェース１７０８は一般的なものであるので、ここでは説明を省略する。
【０１３３】
第３の方法は、図１８に示すように、仮想イーサネットポート制御モジュール１８０５、仮想イーサネットスイッチモジュール１８０３ともにユーザプロセス１８０１として実装する方法である。この方法では、仮想イーサネットポート制御モジュール１８０５とカーネル１８０２のＴＣＰ／ＩＰ層１８０７とは、ＴＣＰ／ＵＤＰソケット１８１１やＲａｗ  ＩＰソケット１８１２のような通常のＴＣＰ／ＩＰソケットを介してデータの受渡しを行う。なお、仮想イーサネットポート制御モジュール１８０５、仮想イーサネットスイッチモジュール１８０３ともにユーザプロセス１８０１として実装されているため、これらは関数コール、或いはプロセス間通信１８０４によりデータの受渡しを行なう。なお、イーサネット層１８０９、ネットワークインタフェース層１８１０は一般的なものであるのでここでは説明は省略する。
【０１３４】
前記第１及び第２の実装方法は、トランスポート層（ＴＣＰなど）の存在を前提としていないため、ホスト側の仮想ネットワークインタフェースがＩＰトンネリングを利用した方法の場合に採用できる方法である。
【０１３５】
逆に、第３の実装方法は、トランスポート層の存在を前提としているため、ホスト側の仮想ネットワークインタフェースがトンネルインタフェースを利用した方法の場合に採用することが望ましい。
【０１３６】
（仮想ハブのデータ送受信処理フロー）  
上述の通り、前記３つの実装例において仮想イーサネットポート制御モジュールと仮想イーサネットスイッチモジュールの実装場所、及びそれによるデータの受渡し方法は異なるが、仮想イーサネットポート制御モジュールによるイーサネットフレーム送受信処理、仮想イーサネットスイッチモジュールによるイーサネットフレームのスイッチング処理に関しては一般的なものにより、ここではその詳細説明を省略する。
【０１３７】
上述したように、本発明の実施の形態に係るネットワーク仮想化装置においては、上記のような作用により、仮想ネットワークに属する仮想ハブが、物理ネットワークのトポロジを考慮した上で、仮想ハブの自律的な分割及び移動を行なうことができる。以上により、物理ネットワークの観点から、仮想ネットワークに属するホスト間のトラフィックの最適化、局所化を実現することが可能となる。その結果、物理ネットワークへの負荷が軽減され、端末間のデータ送受信時間が短縮され、設備投資を抑制することが可能となる。
【０１３８】
また、仮想ネットワークに属する仮想ハブが、自身に接続するホストの増減、或は、ホスト間のトラフィックの増減に動的に追従して仮想ハブの自律的な分割及び移動を行なうことができるので、性能、規模の拡張を管理者（或は利用者）を介さず実現することが可能となる。その結果、管理コストを抑制することが可能となる。
【０１３９】
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
【０１４０】
（応用技術分野）  
仮想ハブの自律分割・移動によるトラフィックの局所化、最適化以外に、以下のような応用例が考えられる。
【０１４１】
・ネットワークデザイン不要の仮想ネットワーク構築  
例えば、新規に仮想ネットワークを作成する場合、ネットワーク管理者は、単に、あるネットワーク仮想化装置２１上に仮想ハブ１８を１つ作成し、その情報であるＩＰアドレスなどを、その仮想イーサネットに参加を希望するホスト１７に通知するだけでよい。あとは、上記仮想ハブ１８が、ホスト１７間のトラフィックや物理ネットワーク１１でのトポロジを考慮して、自律的に分割、移動することで、最適なネットワーク構成を構築する。
【０１４２】
・不正トラフィックの局所化、封じ込め  
例えば、ＩＤＳ（Intrusion Detection System）やウィルスチェックプログラムなどのセキュリティシステムと連携することにより、トラフィック量、トラフィック内容に基づき、特定のホストを物理ネットワーク１１上の特定のエリアに局所化することで、セキュリティの脅威を最小限に押えることが可能である。
【図面の簡単な説明】
【０１４３】
【図１】本発明の実施の形態に係るネットワーク仮想化装置によって構築される仮想ネットワークの一般的な構成を示す概念図。
【図２】ホスト及びネットワーク仮想化装置の詳細例を示す機能ブロック図。
【図３】システム情報テーブルのフォーマットの一例を示す模式図。
【図４】ホスト情報テーブルの一例を示すデータ構成図。
【図５】仮想ハブの分割及び移動処理の一例を示すフローチャート。
【図６】フロードリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（初期状態）。
【図７】フロードリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（分割後）。
【図８】フロードリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（移動後）。
【図９】トポロジドリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（初期状態）。
【図１０】トポロジドリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（分割後）。
【図１１】トポロジドリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（移動後）。
【図１２】トポロジドリブンによる仮想ハブ分割・移動処理の一例を説明するためのネットワーク構成図（再分割後）。
【図１３】一般的なＵＮＩＸにおける仮想ネットワークインタフェースの実装例を示す図（ＩＰトンネリングの仕組みを利用）。
【図１４】一般的なＵＮＩＸにおける仮想ネットワークインタフェースの実装例を示す図（トンネルインタフェースの仕組みを利用）。
【図１５】ネットワーク仮想化装置の概念的なプロトコルスタックを示す図。
【図１６】一般的なＵＮＩＸにおける仮想ハブの実装例を示す図（全てカーネル内）。
【図１７】一般的なＵＮＩＸにおける仮想ハブの実装例を示す図（一部カーネル内）。
【図１８】一般的なＵＮＩＸにおける仮想ハブの実装例を示す図（全てユーザプログラム内）。
【図１９】仮想ネットワークの一般的な構成を示す図。
【符号の説明】
【０１４４】
Ａ…仮想ネットワークコネクション、１〜４…ＬＡＮ、１０…仮想ネットワーク、１１…物理ネットワーク、１２…ルータ、１３…ファイアウォール、１４…イーサネットスイッチングハブ、１５…内部ネットワーク、１６…外部ネットワーク、１７…ホスト、１８…仮想ハブ、１９…仮想ネットワークインタフェース、２０…仮想ネットワークインタフェース未対応ホスト、２１…ネットワーク仮想化装置、２３…物理ネットワークインタフェース、２４…仮想ネットワークインタフェース制御モジュール、１８１…仮想ハブ制御モジュール、１８２…ＭＡＣアドレス学習テーブル、１８３…ホスト情報テーブル、１８３ａ…ＭＡＣアドレス、１８３ｂ…仮想ネットワークポート識別子、１８３ｃ…ラウンドトリップタイム、１８３ｄ…ホップ数、１８３ｅ…フォワーディング情報、１８３ｆ…ネットマスク情報、１８４…ポート間トラフィックテーブル、１８５…仮想イーサネットスイッチモジュール、１８６…仮想イーサネットポート制御モジュール、１８７…仮想ネットワークポート、２０１…システム制御モジュール、２０２…システム情報テーブル、３０１…ネットワーク仮想化装置情報、３０２…ネットマスク情報、３０５…システム負荷情報、３０６…ＣＰＵ利用率、３０７…メモリ利用率、３０８…総トラフィック、３０９…トラフィック、３１０…仮想ハブ情報、３１１…収容ホスト数、３１２…各ホスト間とのコスト、３１２ａ…ホスト、３１２ｂ…ラウンドトリップタイム、３１３ｃ…ホップ数、１３００…仮想ネットワークインタフェース、１３０１…ユーザプロセス、１３０２…カーネル、１３０３…制御アプリケーションプログラム、１３０４…アプリケーションプログラム、１３０５…ＴＣＰ／ＵＤＰ層、１３０６…ＩＰ（インナーＩＰ）層、１３０７…イーサネット層、１３０８…仮想ネットワークインタフェース層、１３０９…ＩＰ（インナーＩＰ）層、１３１０…イーサネット層、１３１１…物理ネットワークインタフェース層、１４００…仮想ネットワークインタフェース、１４０１…ユーザプロセス、１４０２…カーネル、１４０３…仮想ネットワークインタフェースプログラム、１４０４…制御アプリケーションプログラム、１４０５…イーサネット層、１４０６…ＨＴＴＰ、１４０７…アプリケーションプログラム、１４０９…ＴＣＰ／ＵＤＰ層、１４１０…ＩＰ層、１４１１…トンネルインタフェース、１４１２…イーサネット層、１４１３…物理ネットワークインタフェース層、１５００…プロトコルスタック、１５０１…仮想ルータ、１５０２…仮想ＮＡＰ、１５０３〜１５０５…仮想ハブ、１５０６…ＨＴＴＰ／他プロトコル、１５０７…ＴＣＰ／ＵＤＰ層、１５０８…ＩＰ層、１５０９…イーサネット層、１６００…仮想ハブ、１６０１…仮想イーサネットスイッチモジュール、１６０２…受信キュー、１６０３…エンキュー、１６０４…関数コール、１６０５…仮想イーサネットポート制御モジュール、１６０６…ＩＰ層、１６０７…イーサネット層、１６０８…ネットワークインタフェース、１６１０…カーネル、１７００…仮想ハブ、１７０１…ユーザプロセス、１７０２…カーネル、１７０３…仮想イーサネットスイッチモジュール、１７０４…ソケット、１７０５…仮想イーサネットポート制御モジュール、１７０６…ＩＰ層、１７０７…イーサネット層、１８００…仮想ハブ、１８０１…ユーザプロセス、１８０２…カーネル、１８０３…仮想イーサネットスイッチモジュール、１８０４…プロセス間通信、１８０５…仮想イーサネットポート制御モジュール、１８０７…ＴＣＰ／ＩＰ層、１８０９…イーサネット層、１８１０…ネットワークインタフェース層、１８１１…ＴＣＰ／ＵＤＰソケット、１８１２…Ｒａｗ  ＩＰソケット、１９００…アンダーレイネットワーク、１９０１…仮想ネットワーク、１９０２…ルータ、１９０３…ファイアウォール、１９０４…内部ネットワーク、１９０５…外部ネットワーク、１９０６…ホスト、１９０７…仮想ハブ、１９０８…仮想ネットワークインタフェース、１９０９…コンピュータ
【図１】
2008042665.tif 000003
【図２】
2008042665.tif 000004
【図３】
2008042665.tif 000005
【図４】
2008042665.tif 000006
【図５】
2008042665.tif 000007
【図６】
2008042665.tif 000008
【図７】
2008042665.tif 000009
【図８】
2008042665.tif 000010
【図９】
2008042665.tif 000011
【図１０】
2008042665.tif 000012
【図１１】
2008042665.tif 000013
【図１２】
2008042665.tif 000014
【図１３】
2008042665.tif 000015
【図１４】
2008042665.tif 000016
【図１５】
2008042665.tif 000017
【図１６】
2008042665.tif 000018
【図１７】
2008042665.tif 000019
【図１８】
2008042665.tif 000020
【図１９】
2008042665.tif 000021