(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理するコントローラと、を有し、
前記コントローラは、
前記論理トポロジ情報を基に、前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースが、前記仮想リソースの中に存在するか否か判定し、前記分岐点リソースが存在するとの判定結果を得た場合、前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定する
ことを特徴とする管理サーバ。
【請求項２】
請求項１に記載の管理サーバであって、
前記コントローラは、
前記論理トポロジ情報を基に、前記分岐点リソースが存在するか否か判定する分岐点決定部を有し、
前記分岐点決定部は、
前記分岐点リソースを指定する要求を受けた場合、前記要求に付加される情報を解析して、前記論理トポロジ情報の中から前記分岐点リソースを抽出する要求解析部と、
前記各仮想ネットワーク内に存在する仮想リソース間の接続関係を示す情報であって、他の仮想リソースとの接続の数を示す情報を基に、前記論理トポロジ情報の中から特定の仮想リソースを抽出し、前記抽出した仮想リソースを前記分岐点リソースとして特定する分岐点推定部のうち少なくとも一方を含む
ことを特徴とする管理サーバ。
【請求項３】
請求項１又は２に記載の管理サーバであって、
前記コントローラは、
前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを一つの部分トポロジとして特定するトポロジ探索部を有し、
前記トポロジ探索部は、
前記論理トポロジ情報の中の探索対象の仮想リソース群の中から、前記分岐点リソースを除去する分岐点除去部と、
前記部分トポロジに含まれない任意の仮想リソースを探索の起点とし、前記分岐点リソースが除去された論理トポロジ情報の中から、前記起点となる仮想リソースと接続関係を有する仮想リソースを探索する仮想ネットワーク探索処理を実行する探索部と、
前記探索部の探索によって得られた一連の仮想リソースを一つの部分トポロジとして特定する部分トポロジ特定部と、を含み、
前記探索部は、
前記探索対象の仮想リソースがいずれかの前記部分トポロジに含まれるまで、特定済みの前記部分トポロジに含まれない任意の仮想リソースを、新たな探索の起点とする前記仮想ネットワーク探索処理を実行する
ことを特徴とする管理サーバ。
【請求項４】
請求項１又は２に記載の管理サーバであって、
前記コントローラは、
前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを一つの部分トポロジとして特定するトポロジ探索部を有し、
前記トポロジ探索部は、
前記部分トポロジに含まれない任意の仮想リソースを探索の起点とし、前記論理トポロジ情報の中の探索対象の仮想リソース群の中から、前記起点となる仮想リソースと接続関係を有する仮想リソースであって、前記分岐点リソースとは異なる仮想リソースを探索する仮想ネットワーク探索処理を実行する探索部と、
前記探索部の探索によって得られた一連の仮想リソースを一つの部分トポロジとして特定する部分トポロジ特定部と、を含み、
前記探索部は、
前記探索対象の仮想リソースがいずれかの前記部分トポロジに含まれるまで、特定済みの前記部分トポロジに含まれない任意の仮想リソースを、新たな探索の起点とする前記仮想ネットワーク探索処理を実行する
ことを特徴とする管理サーバ。
【請求項５】
請求項３又は４に記載の管理サーバであって、
前記コントローラは、
前記各仮想ネットワークの分岐点リソースを管理するための分岐点管理テーブルと、
前記分岐点リソースを前記分岐点管理テーブルに登録する分岐点登録部と、を含む
ことを特徴とする管理サーバ。
【請求項６】
請求項１又は５に記載の管理サーバであって、
前記コントローラは、
前記論理トポロジ情報を一時的に保持して管理するトポロジ一時管理データベースと、
前記特定した部分トポロジに関する情報を保持して管理する部分トポロジ管理データベースと、を含む
ことを特徴とする管理サーバ。
【請求項７】
請求項１又は６に記載の管理サーバであって、
前記コントローラは、
前記仮想リソースの種類を示すノードタイプと、前記仮想リソースの生成に関する生成パターンとを管理するノードパターン管理テーブルと、
複数の仮想リソースを相互接続するエッジの種類を示すエッジタイプと、前記エッジの両端に接続される仮想リソースの種類を示す接続ノードタイプと、前記仮想リソース間の接続に関する接続パターンとを管理するエッジパターン管理テーブルと、
前記物理機器の設定情報を基に前記ノードパターン管理テーブルと前記エッジパターン管理テーブルを参照し、前記仮想リソースに対応した仮想リソース情報と仮想リソース間接続情報を生成し、前記生成した仮想リソース情報と仮想リソース間接続情報から前記論理トポロジ情報を生成するトポロジ生成部とを含む
ことを特徴とする管理サーバ。
【請求項８】
請求項１又は７に記載の管理サーバであって、
前記各仮想ネットワークは、
複数種類の仮想化技術によって構築される
ことを特徴とする管理サーバ。
【請求項９】
請求項７に記載の管理サーバであって、
前記仮想リソース情報は、
前記仮想リソースの種類を示すノードタイプと、前記仮想リソースが仮想的に存在する物理機器の機器識別子と、前記仮想リソースを前記仮想ネットワーク内で一意に特定するタイプ内識別子を含み、
前記仮想リソース間接続情報は、
前記仮想ネットワーク内に存在する複数の仮想リソースを相互に接続するためのエッジの種類を示すエッジタイプと、前記エッジの両端に接続される２つの仮想リソースをそれぞれ前記仮想ネットワーク内で一意に特定する複数のノード識別子を含む
ことを特徴とする管理サーバ。
【請求項１０】
請求項８に記載の管理サーバであって、
前記複数種類の仮想化技術は、
前記物理機器のうちネットワーク機器を仮想化する仮想化技術であって、仮想ＬＡＮ技術と、仮想インタフェース技術又は仮想ルータ技術のうちいずれか２つ以上を用いて構成される
ことを特徴とする管理サーバ。
【請求項１１】
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理するコントローラと、を有し、
前記コントローラは、
前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースを基に、前記仮想ネットワーク全体の論理トポロジ情報における前記仮想リソース間の接続情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定する
ことを特徴とする管理サーバ。
【請求項１２】
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理すると共に表示装置を制御するコントローラと、を有し、
前記コントローラは、
前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースである分岐点リソースを基に、前記仮想ネットワークの論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定し、前記特定した部分トポロジに関する情報の表示を前記表示装置に指示し、前記物理機器と前記仮想ネットワークとの対応関係を示す情報の非表示を前記表示装置に指示する
ことを特徴とする管理サーバ。
【請求項１３】
コンピュータ上に、
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理するコントローラと、を有する管理装置と、を実現するプログラムであって、
前記コントローラは、
前記論理トポロジ情報を基に、前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースが、前記仮想リソースの中に存在するか否か判定し、前記分岐点リソースが存在するとの判定結果を得た場合、前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定する
ことを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムであって、
前記コントローラは、
前記論理トポロジ情報を基に、前記分岐点リソースが存在するか否か判定する分岐点決定部を有し、
前記分岐点決定部は、
前記分岐点リソースを指定する要求を受けた場合、前記要求に付加される情報を解析して、前記論理トポロジ情報の中から前記分岐点リソースを抽出する要求解析部と、
前記各仮想ネットワーク内に存在する仮想リソース間の接続関係を示す情報であって、他の仮想リソースとの接続の数を示す情報を基に、前記論理トポロジ情報の中から特定の仮想リソースを抽出し、前記抽出した仮想リソースを前記分岐点リソースとして特定する分岐点推定部のうち少なくとも一方を含む
ことを特徴とするプログラム。
【請求項１５】
請求項１３又は１４に記載のプログラムであって、
前記コントローラは、
前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを一つの部分トポロジとして特定するトポロジ探索部を有し、
前記トポロジ探索部は、
前記論理トポロジ情報の中の探索対象の仮想リソース群の中から、前記分岐点リソースを除去する分岐点除去部と、
前記部分トポロジに含まれない任意の仮想リソースを探索の起点とし、前記分岐点リソースが除去された論理トポロジ情報の中から、前記起点となる仮想リソースと接続関係を有する仮想リソースを探索する仮想ネットワーク探索処理を実行する探索部と、
前記探索部の探索によって得られた一連の仮想リソースを一つの部分トポロジとして特定する部分トポロジ特定部と、を含み、
前記探索部は、
前記探索対象の仮想リソースがいずれかの前記部分トポロジに含まれるまで、特定済みの前記部分トポロジに含まれない任意の仮想リソースを、新たな探索の起点とする前記仮想ネットワーク探索処理を実行する
ことを特徴とするプログラム。
【請求項１６】
請求項１３又は１４に記載のプログラムであって、
前記コントローラは、
前記論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを一つの部分トポロジとして特定するトポロジ探索部を有し、
前記トポロジ探索部は、
前記部分トポロジに含まれない任意の仮想リソースを探索の起点とし、前記論理トポロジ情報の中の探索対象の仮想リソース群の中から、前記起点となる仮想リソースと接続関係を有する仮想リソースであって、前記分岐点リソースとは異なる仮想リソースを探索する仮想ネットワーク探索処理を実行する探索部と、
前記探索部の探索によって得られた一連の仮想リソースを一つの部分トポロジとして特定する部分トポロジ特定部と、を含み、
前記探索部は、
前記探索対象の仮想リソースがいずれかの前記部分トポロジに含まれるまで、特定済みの前記部分トポロジに含まれない任意の仮想リソースを、新たな探索の起点とする前記仮想ネットワーク探索処理を実行する
ことを特徴とするプログラム。
【請求項１７】
請求項１５又は１６に記載のプログラムであって、
前記コントローラは、
前記各仮想ネットワークの分岐点リソースを管理するための分岐点管理テーブルと、
前記分岐点リソースを前記分岐点管理テーブルに登録する分岐点登録部と、を含む
ことを特徴とするプログラム。
【請求項１８】
請求項１３又は１７に記載のプログラムであって、
前記コントローラは、
前記論理トポロジ情報を一時的に保持して管理するトポロジ一時管理データベースと、
前記特定した部分トポロジに関する情報を保持して管理する部分トポロジ管理データベースと、を含む
ことを特徴とするプログラム。
【請求項１９】
請求項１３又は１８に記載のプログラムであって、
前記コントローラは、
前記仮想リソースの種類を示すノードタイプと、前記仮想リソースの生成に関する生成パターンとを管理するノードパターン管理テーブルと、
複数の仮想リソースを相互接続するエッジの種類を示すエッジタイプと、前記エッジの両端に接続される仮想リソースの種類を示す接続ノードタイプと、前記仮想リソース間の接続に関する接続パターンとを管理するエッジパターン管理テーブルと、
前記物理機器の設定情報を基に前記ノードパターン管理テーブルと前記エッジパターン管理テーブルを参照し、前記仮想リソースに対応した仮想リソース情報と仮想リソース間接続情報を生成し、前記生成した仮想リソース情報と仮想リソース間接続情報から前記論理トポロジ情報を生成するトポロジ生成部とを含む
ことを特徴とするプログラム。
【請求項２０】
請求項１３又は１９に記載のプログラムであって、
前記各仮想ネットワークは、
複数種類の仮想化技術によって構築される
ことを特徴とするプログラム。
【請求項２１】
請求項１９に記載のプログラムであって、
前記仮想リソース情報は、
前記仮想リソースの種類を示すノードタイプと、前記仮想リソースが仮想的に存在する物理機器の機器識別子と、前記仮想リソースを前記仮想ネットワーク内で一意に特定するタイプ内識別子を含み、
前記仮想リソース間接続情報は、
前記仮想ネットワーク内に存在する複数の仮想リソースを相互に接続するためのエッジの種類を示すエッジタイプと、前記エッジの両端に接続される２つの仮想リソースをそれぞれ前記仮想ネットワーク内で一意に特定する複数のノード識別子を含む
ことを特徴とするプログラム。
【請求項２２】
請求項２０に記載のプログラムであって、
前記複数種類の仮想化技術は、
前記物理機器のうちネットワーク機器を仮想化する仮想化技術であって、仮想ＬＡＮ技術と、仮想インタフェース技術又は仮想ルータ技術のうちいずれか２つ以上を用いて構成される
ことを特徴とするプログラム。
【請求項２３】
コンピュータ上に、
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理するコントローラと、を有する管理装置と、を実現するプログラムであって、
前記コントローラは、
前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースを基に、前記仮想ネットワーク全体の論理トポロジ情報における前記仮想リソース間の接続情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定する
ことを特徴とするプログラム。
【請求項２４】
コンピュータ上に、
ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む論理トポロジ情報を格納する記憶装置と、
前記論理トポロジ情報を管理するコントローラと、を有する管理装置と、を実現するプログラムであって、
前記コントローラは、
前記複数の仮想リソースを用いて構築される複数の仮想ネットワークを相互接続する仮想リソースである分岐点リソースを基に、前記仮想ネットワークの論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定し、前記特定した部分トポロジに関する情報の表示を前記表示装置に指示し、前記物理機器と前記仮想ネットワークとの対応関係を示す情報の非表示を前記表示装置に指示する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想化技術を用いて構築されるテナントトポロジ情報を自動生成する管理サーバ及び管理方法に関する。
【背景技術】
【０００２】
コンピュータネットワーキングにおけるコスト削減の有力な手段として、マルチテナント方式が普及しつつある。マルチテナントとは、単一の物理インフラ（物理機器群）に、複数のテナント（情報システム）を仮想化し集約する方式である。実質的には複数のテナントが機器を共有しながらも、種々のネットワーク仮想化技術を用いることで、個々のテナントにとっては、あたかも占有の機器群を利用しているかのように見せることができる。
【０００３】
近年のネットワーク仮想化技術の発展により、テナントは柔軟で複雑なネットワーク構成をとれるようになった。ネットワーク仮想化技術は、Ｌ２（Ｌａｙｅｒ  ２）レイヤのものやＬ３（Ｌａｙｅｒ  ３）レイヤのものを含む。Ｌ２レイヤの仮想化技術は、ＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）のような仮想ＬＡＮ(Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ)技術を含み、Ｌ３レイヤの仮想化技術は、ＶＲＦ（Ｖｉｒｔｕａｌ  Ｒｏｕｔｉｎｇ  ａｎｄ  Ｆｏｒｗａｒｄｉｎｇ）やＶＲ（Ｖｉｒｔｕａｌ  Ｒｏｕｔｅｒ）のような仮想ルータ技術を含む。また、Ｌ２技術とＬ３技術を繋ぐための技術として、ＶＬＡＮインタフェースやサブインタフェースのような仮想インタフェース技術を含む。このような仮想化技術が組み合わされて、テナントのネットワークが構成される。
【０００４】
上記のような仮想化技術を駆使することで、例えば、データセンタネットワークにおいて、単一の物理インフラの中に、様々な構成のテナントの仮想ネットワークを構築できるようになった。テナントの構成には、単一のＬ２ネットワークセグメントからなるものや、複数のＬ２ネットワークを仮想的なルータ・ファイアウォール・ロードバランサを用いてＬ３レベルで相互接続してからなるものを含む。
【０００５】
これらテナントは、例えば、外部ネットワークとのゲートウェイを担うルータなどにより終端され、外部ネットワーク向けに様々なサービスを提供する。また、別の例としては、テナントは、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）装置により終端され、ＶＰＮ経由でデータセンタ外のクライアントと接続し、科学計算などの内部用途として用いられる。
【０００６】
一方、様々な構成の多数のテナントが単一の物理インフラ上に共存するようになったため、テナントの論理的な構成（テナントトポロジ）を把握することが困難になり、運用コストが増加している。個々のテナントトポロジを把握することは、運用管理業務における基本的な作業であり、例えば、新規テナントの追加、既存テナントの構成変更・削除、設計・検証、監視、障害対応などにおいて必要である。
【０００７】
従来のテナントトポロジ把握において採られてきた方法と課題は次の通りである。ひとつ目の方法は、台帳等を用いてテナントトポロジ図を人手で管理し把握する方法である。この手法では、台帳に記載されている情報と、機器に実際に設定されている内容が、必ずしも一致しない点が課題である。また、ひとつひとつのテナントについてトポロジ図を描いて管理すること自体が煩雑な作業であり、ヒューマンエラーが生じやすい点も課題である。
【０００８】
ふたつ目の方法は、機器の設定情報を手作業で解釈し、論理テナントトポロジを把握する方法である。しかしながら、複雑な仮想ネットワークでは、先にも説明したように膨大な項目が機器に設定されるため、この方法は、ヒューマンエラーにより正しく構成を把握できない可能性が高いこと、また、テナントトポロジの把握に多大な時間を要してしまう点が課題である。
【０００９】
従来の方法が抱える課題を解決するためには、機器の設定情報（コンフィグ）を自動的に解析し、ひとつ以上のテナントトポロジ情報を自動生成することが課題となる。機器の設定情報を解析することができれば、テナントトポロジを把握でき、この解析を自動化することで、ヒューマンエラーを削減しつつ作業時間をも削減できる。
【００１０】
この課題に関連して、仮想ネットワークにおける論理トポロジ情報を自動生成する従来技術がある。例えば、特許文献１では、Ｌ２の仮想化技術であるＶＬＡＮのトポロジ情報を自動生成する。この技術は、スイッチやルータからなるネットワーク環境において機器に設定されているコンフィグ情報から、ＶＬＡＮインタフェースに関する設定情報を用いて、複数のＶＬＡＮから構成されるネットワークにおいて、物理機器の論理的な接続関係の情報を生成する。
【００１１】
特許文献２では、Ｌ３の仮想化技術である仮想ルータ間の情報交換の関係を自動的に生成する。この技術は、キャリア網におけるＭＰＬＳ（Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）ネットワークのＶＰＮサービス向けに用いられる。この技術を用いると、ＭＰＬＳルータのＶＲＦの設定情報を基に、複数の顧客サイトそれぞれの仮想ルータ間の経路交換関係を把握できる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００９−１９４６７５号公報
【特許文献２】米国特許第７，５９３，３５２号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１３】
これら従来技術の問題は、複数の仮想化技術を用いて複数テナントの仮想ネットワークが構築されるネットワーク環境において、個々の仮想ネットワークの論理トポロジ情報を生成できないことである。
【００１４】
具体的には、特許文献１が開示する技術は、物理機器の論理接続関係を特定する技術であり、複数テナントの仮想ネットワークが物理機器を共有するような環境においては、本技術を直接適用してもテナントトポロジを個別に特定できない。また、対象機器がＶＬＡＮを実現するスイッチあるいはルータのみであり、仮想ルータ技術を用いた環境では、仮想ネットワークの論理トポロジを正しく把握できない点が課題である。さらに、論理トポロジを生成するために生成プログラム内部で持つべき情報が開示されていない。
【００１５】
特許文献２が開示する技術は、対象機器がキャリア網のＭＰＬＳでＶＰＮを実現するためのルータのみであり、仮想ルータ間の接続関係を特定できるものの、仮想ＬＡＮに関するトポロジ情報を生成できない。オフィスネットワークやデータセンタネットワークでは、仮想ＬＡＮは、一般的に利用される技術であるが、本技術ではその論理トポロジを把握し、テナント単位でのトポロジを把握できない点が課題である。さらに、前述のネットワーク環境では、キャリア網ＶＰＮとは異なり、テナントトポロジ間は、ゲートウェイなどの箇所で相互接続する可能性があり、完全に分離しているわけではない。この場合では、この開示技術を適用したとしても、相互接続された複数のテナントトポロジを、ひとつのトポロジと誤認識してしまう課題が発生する。
【００１６】
したがって、特許文献１および特許文献２では、仮想ＬＡＮ、仮想インタフェース、仮想ルータ技術などを組み合わせて構成される複雑なマルチテナント環境において、そのテナントトポロジ情報を正しく生成できないという課題がある。
【００１７】
複数の仮想化技術を用いる仮想ネットワークは、単一の仮想化技術を用いる場合に比べて、管理すべき情報や対応付けるべき情報が複雑であり、前記課題は、従来技術の単純な拡張では容易には解決できない。また、前述のように、テナントトポロジは完全独立ではなく、部分的に相互接続する可能性もあるため、個々のテナントトポロジを特定する方式は自明ではなく容易には達成できない。
【００１８】
本発明の目的は、ネットワークに接続される物理機器に仮想的に構築される複数の仮想リソースを含む複数の仮想ネットワークの論理トポロジのうち、各仮想ネットワークの論理トポロジを特定することができる管理サーバ及び管理方法を提供することにある。
【課題を解決するための手段】
【００１９】
前記課題を解決するために、本発明は、ネットワークに接続される複数の物理機器に仮想的に構築される複数の仮想リソースを含む複数の仮想ネットワークの論理トポロジ情報であって、前記仮想ネットワーク全体の論理トポロジ情報を格納する記憶装置と、前記仮想ネットワーク全体の論理トポロジ情報を管理するコントローラと、を有し、前記コントローラは、前記仮想ネットワーク全体の論理トポロジ情報を基に、前記複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースが、前記仮想ネットワーク全体の仮想リソースの中に存在するか否か判定し、前記分岐点リソースが存在するとの判定結果を得た場合、前記仮想ネットワーク全体の論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジ又は一つの仮想ネットワークとして特定することを特徴とする。
【００２０】
また、前記分岐点リソースが既知である場合、前記コントローラは、前記複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースを基に、前記仮想ネットワーク全体の論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジ又は一つの仮想ネットワークとして特定することを特徴とする。
【００２１】
また、表示装置に前記コントローラの指示による情報を表示する場合、前記コントローラは、前記複数の仮想ネットワークを相互接続する仮想リソースであって、前記各仮想ネットワークの分岐点を構成する分岐点リソースを基に、前記仮想ネットワーク全体の論理トポロジ情報を探索して、前記分岐点リソースを終端とする一連の仮想リソースを抽出し、前記抽出した一連の仮想リソースを部分トポロジとして特定し、前記特定した部分トポロジに関する情報の表示を前記表示装置に指示し、前記物理機器と前記複数の仮想ネットワークとの対応関係を示す情報の非表示を前記表示装置に指示することを特徴とする。
【００２２】
上記態様は、例えば、仮想化技術を用いて構築される情報処理システムに応用可能である。
【発明の効果】
【００２３】
本発明によれば、物理機器に仮想的に構築される複数の仮想リソースを含む複数の仮想ネットワークの論理トポロジのうち、各仮想ネットワークの論理トポロジを特定することができる。
【図面の簡単な説明】
【００２４】
【図１】第一実施例におけるデータセンタのシステム構成図である。
【図２】第一実施例における管理サーバの構成図である。
【図３】ネットワーク機器管理テーブルの構成図である。
【図４】ノードパターン管理テーブルの構成図である。
【図５】エッジパターン管理テーブルの構成図である。
【図６】ノード管理テーブルの構成図である。
【図７】エッジ管理テーブルの構成図である。
【図８】ノード生成部の構成図である。
【図９】エッジ生成部の構成図である。
【図１０】全体トポロジＤＢの構成図である。
【図１１】テナントトポロジ管理ＤＢの構成図である。
【図１２】テナント分岐点管理テーブルの構成図である。
【図１３】テナントトポロジ生成を説明するためのフローチャートである。
【図１４】コンフィグ単体の解析処理を説明するためのフローチャートである。
【図１５】単一ノード生成・登録処理を説明するためのフローチャートである。
【図１６】単一エッジ生成・登録処理を説明するためのフローチャートである。
【図１７】テナントトポロジ特定処理を説明するためのフローチャートである。
【図１８】テナント分岐点決定処理を説明するためのフローチャートである。
【図１９】テナント分岐点要求解析処理を説明するためのフローチャートである。
【図２０】テナント分岐点推定処理を説明するためのフローチャートである。
【図２１】テナントトポロジ探索処理を説明するためのフローチャートである。
【図２２】論理トポロジの構成図である。
【図２３】テナントトポロジ管理画面の表示例を示す図である。
【図２４】テナント分岐点指定処理を説明するためのフローチャートである。
【図２５】管理サーバの物理的な構成図である。
【図２６】第三実施例における管理サーバの構成図である。
【図２７】第三実施例におけるテナントトポロジ探索処理を説明するためのフローチャートである。
【図２８】分岐点ノード判別処理を説明するためのフローチャートである。
【図２９】第四実施例における管理サーバの構成図である。
【図３０】類似テナントトポロジＤＢの構成図である。
【図３１】トポロジ間類似度テーブルの構成図である。
【図３２】類似テナントトポロジ特定処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００２５】
（第一実施例）
以下、第一実施例を、データセンタにおけるネットワークシステムにおけるテナントトポロジ生成を例にとって説明する。なお、データセンタネットワークは、あくまでも適用箇所の一形態であり、適用先には、複数のデータセンタにまたがったネットワーク、キャリアネットワーク、オフィスネットワーク、あるいは、キャンパスネットワークなどを含む。
【００２６】
図１は、第一実施例におけるデータセンタのシステム構成図である。図１において、データセンタ１００は、ネットワーク１０１を介して、適宜のＩＣＴ（Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）サービスを提供するためのシステムを構成する。そのシステムの構成要素になりうる機器として、ファイアウォール１０２、ロードバランサ１０３、Ｌ３スイッチ１０４、Ｌ２スイッチ１０５ａ、１０５ｂのようなネットワーク機器に加えて、サーバ１０６ａ、１０６ｂ、１０６ｃ、１０６ｄといったサーバ機器、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）スイッチ１０７ａ、１０７ｂのようなＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）スイッチ機器、ストレージ１０８ａ、１０８ｂなどのストレージ機器を含む。なお、これら機器を全て用いてシステムを構成する必要はなく、適宜の種類の機器を適宜の個数だけ用いて、適宜のＩＣＴサービスを提供するためのシステムを構成すればよい。また、このシステムには、管理サーバ１０９が接続される。管理サーバ１０９はコンソール１１０と接続している。
【００２７】
ファイアウォール１０２、ロードバランサ１０３、Ｌ３スイッチ１０４、Ｌ２スイッチ１０５ａ、１０５ｂのようなネットワーク機器は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を構築し、サーバ１０６ａ〜１０６ｄにネットワーク接続性を提供するとともに、サーバが送受信するパケットを制御する。これらネットワーク機器は、サーバと接続し、また、管理サーバ１０９やデータセンタ１００の外部のネットワークとも接続してもよい。ＬＡＮ内通信をするためのプロトコルは、Ｅｔｈｅｒｎｅｔ（登録商標）を含み、ＬＡＮ間通信をするためのプロトコルは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を含む。そして、これらネットワーク機器は、ＶＬＡＮのような仮想ＬＡＮ技術、ＶＬＡＮインタフェースやサブインタフェースのような仮想インタフェース技術、ＶＲＦやＶＲのような仮想ルータ技術を有し、物理的なネットワークの上に仮想的なネットワークを構成する。これらネットワーク機器は、後述するサーバ１０６ａ〜１０６ｄの仮想化技術によって、仮想マシン（仮想アプライアンス）として実現されてもよい。
【００２８】
サーバ１０６ａ〜１０６ｄのようなサーバ機器は、適宜のＩＣＴサービスを行うためのアプリケーションを実行する。これらサーバ機器は、前述のネットワーク機器を介して相互に接続し、また、データセンタ１００の外部に接続する。また、後述のように、ＦＣスイッチ１０７ａ、１０７ｂを介して、ストレージ機器１０８ａ、１０８ｂにアクセスする。それぞれのサーバ機器は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）やＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）あるいはＣＮＡ（Ｃｏｎｖｅｒｇｅｄ  Ｎｅｔｗｏｒｋ  Ａｄａｐｔｅｒ）を搭載し、ＬＡＮおよびＳＡＮにアクセスする。サーバ機器には、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）技術あるいはＬＰＡＲ（Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎｉｎｇ）技術によって、複数の仮想サーバ（ＶＭ）が生成されていてもよい。この場合、ＶＭは、仮想的なインタフェースであるｖＮＩＣ(Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ)、ｖＨＢＡ（Ｖｉｒｔｕａｌ  Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）や仮想ＣＮＡを生成し、これらの仮想的なインタフェースにより、ネットワーク機器あるいはストレージ機器にアクセスする。
【００２９】
ＦＣスイッチ１０７ａ、１０７ｂのようなＳＡＮスイッチ機器は、ＳＡＮを構成し、サーバ１０６ａ〜１０６ｄからのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求をストレージ１０８ａ、１０８ｂに転送し、ストレージ１０８から読み出したＩ／Ｏデータをサーバ１０６ａ〜１０６ｄに転送する。ＳＡＮ内通信およびＳＡＮ間通信をするためのプロトコルは、ＦＣ、ＦＣＩＰ（ＦＣ  ｏｖｅｒ  ＩＰ）、ＦＣｏＥ（ＦＣ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）やｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）を含む。また、これらＳＡＮスイッチ機器は、Ｚｏｎｉｎｇ、ＮＰＩＶ（Ｎ  Ｐｏｒｔ＿ＩＤ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）、ＶＳＡＮ（Ｖｉｒｔｕａｌ  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋｉｎｇ）のような仮想化技術を備えている。なお、これ以外の仮想化技術を備えていてもよい。
【００３０】
ストレージ１０８ａ、１０８ｂのようストレージ機器は、前述のＳＡＮを介して、サーバ１０６ａ〜１０６ｄに外部記憶領域を提供する。ストレージ機器１０８は、ストレージにアクセスする物理ポートを仮想化するためのＮＰＩＶ、物理ストレージに構成された論理ヴォリュームであるＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）を含む。ストレージ１０８は、ストレージのポートと、ＬＵおよびサーバを対応付けるＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）マスキングなどの機能を備えていてもよい。
【００３１】
管理サーバ１０９は、システム内の機器がそれぞれ保有する設定情報（以下、コンフィグと称することもある。）を収集し、収集した設定情報を用いて、データセンタ１００の複数機器が構築する仮想ネットワークの全体あるいは一部の論理トポロジ情報を生成する。生成した論理トポロジ情報を可視化し、コンソール１１０の画面に表示する。
【００３２】
なお、上記のシステムの構成機器（ファイアウォールやロードバランサなど）の機能は、ハードウェアによって提供されてもよく、また、ソフトウェアによって提供されてもよい。
【００３３】
図２は、管理サーバ１０９の構成例を示す構成図である。図２において、管理サーバ１０９は、構成要素として、コンフィグ収集部２０１、トポロジ視覚化部２０２、管理要求受付部２０３、ネットワーク機器管理テーブル２０４、全体トポロジＤＢ２０５、テナントトポロジＤＢ（ＤａｔａＢａｓｅ）２０６、全体トポロジ生成部２０７、テナントトポロジ特定部２０８を有する。
【００３４】
コンフィグ収集部２０１は、データセンタ１００内のネットワーク機器から機器の設定情報（コンフィグ）を収集する。コンフィグ収集部２０１の構成要素には、ネットワーク機器情報登録部２１１とコンフィグ収集部２１２を含む。ネットワーク機器情報登録部２１１は、データセンタ１００内のネットワーク機器からコンフィグを収集する上で必要な情報を、後述するネットワーク機器管理テーブル２０４に対して追加または削除する。
【００３５】
コンフィグ収集部２１２は、ネットワーク機器管理テーブル２０４のネットワーク機器情報を参照し、データセンタ１００内の各ネットワーク機器から、機器のコンフィグを収集する。収集したコンフィグは、例えば、管理サーバ１０９内にコンフィグファイルとして保存される。例えば、コンフィグファイルは、記憶装置（図示せず）に保存され、保存したコンフィグファイルのファイル名の一覧が、ネットワーク機器管理テーブル２０４に保持される。なお、このコンフィグ収集部２１２は、必須ではなく、管理サーバ１０９がコンフィグを解析できれば、他の方法でもよい。例えば、管理者が手動でコンフィグを収集し、管理サーバ１０９内にコンフィグファイルとして保存してもよい。
【００３６】
トポロジ視覚化部２０２は、全体トポロジＤＢ２０５内の全体トポロジ情報、あるいはテナントトポロジＤＢ２０６内のテナントトポロジ情報を可視化し、ＧＵＩ表示制御部２２１を用いて、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面に論理トポロジを出力する。
【００３７】
ＧＵＩ表示制御部２２１は、オペレータによる入力を基に、ＧＵＩ画面に表示する論理トポロジの表示方法を制御する。実現例を図２３において説明する。
【００３８】
管理要求受付部２０３は、論理トポロジ情報の生成に関する処理要求をオペレータから受け付け、各機能部に処理の実行を命令する。オペレータが要求する処理は、例えば、コンフィグの収集、収集したコンフィグに基づく論理トポロジ情報の生成、生成した論理トポロジの視覚化である。この例において、それぞれの処理に対応する機能部は、コンフィグ収集部２０１、全体トポロジ生成部２０７、トポロジ視覚化部２０２である。
【００３９】
また、他にも、オペレータが要求する処理は、例えば、ノードパターンやエッジパターンの登録がある。ノードパターンやエッジパターンの登録が要求された場合、全体トポロジ生成部２０７を介して、ノードパターン登録部２３２ないしエッジパターン登録部２３３が呼び出される。あるいは、オペレータが要求する処理は、例えば、後述するテナント分岐点リソースの明示的な指定があり、この場合は、テナントトポロジ特定部２０８が呼び出される。
【００４０】
ネットワーク機器管理テーブル２０４は、ネットワーク機器からコンフィグを収集する上で必要な情報を保持する。その情報とは、機器の識別子、機種、ＩＰアドレス、ログイン名、パスワードなどを含む。ネットワーク機器管理テーブル２０４の詳細は図３において説明する。
【００４１】
生成トポロジＤＢ２０５は、全体トポロジ生成部２０７が生成した全体トポロジ情報を保持する。詳細を図１０で説明する。
【００４２】
テナントトポロジＤＢ２０６は、テナントトポロジ特定部２０８が生成したテナントトポロジ情報を保持する。詳細を図１１で説明する。
【００４３】
全体トポロジ生成部２０７は、コンフィグ収集部２０１が収集したコンフィグファイルを解析し、仮想ネットワーク全体の論理トポロジ情報を、ノード（仮想ＬＡＮ、仮想インタフェース等の仮想リソース）とエッジ（仮想リソース間の論理的な結線）からなるグラフ構造として生成し、生成したグラフ構造の情報を全体トポロジＤＢ２０５に保存する。
【００４４】
全体トポロジ生成部２０７は、構成要素として、全体トポロジ生成・管理テーブル２３１、ノードパターン登録部２３２、エッジパターン登録部２３３、ノード生成部２３４、エッジ生成部２３５、全体トポロジ構築部２３６を含む。
【００４５】
全体トポロジ生成・管理テーブル２３１は、コンフィグからノードとエッジを生成するための情報を管理し、生成したノードとエッジを管理するものであり、ひとつまたは複数のノードパターン管理テーブル２４１ａ、２４１ｂ、２４１ｃ、ひとつまたは複数のエッジパターン管理テーブル２４２ａ、２４２ｂ、２４２ｃ、ノード管理テーブル２４３、エッジ管理テーブル２４４を含む。全体トポロジ生成部２０７が、コンフィグからノードを生成する際に、ノードパターン管理テーブル２４１ａ〜２４１ｃが参照され、エッジを生成する際にエッジパターン管理テーブル２４２ａ〜２４２ｃが参照される。生成されたノードとエッジは、それぞれ、ノード管理テーブル２４３、エッジ管理テーブル２４４に保存される。
【００４６】
ノードパターン登録部２３２は、コンフィグのノードパターンをノードパターン管理テーブル２４１に登録する。例えば、新しい機種の機器をデータセンタに導入した際に、管理者は、この機器に対応するノードパターンを新規入力する。新規入力されるノードパターンは、管理要求受付部２０３、全体トポロジ生成部２０７を介してノードパターン登録部２３２に入力される。ノードパターン登録部２３２は、この新規ノードパターンを新規のノードパターン管理テーブル２４１ｄとして生成する。
【００４７】
なお、ノードパターンとは、コンフィグにおける各種仮想化技術の仮想リソースの生成を示す生成コマンドの設定パターンである。以後、生成コマンドの設定パターンを、生成パターンと呼ぶ。生成パターンの詳細は、図４において説明する。
【００４８】
また、前述の仮想リソースとは、仮想化技術によって生成される仮想的なインスタンスであり、仮想ネットワーク全体の論理トポロジの構成要素となるインスタンスのことである。仮想リソースは、例えば、仮想ＬＡＮのインスタンス、仮想インタフェースのインスタンス、仮想ルータのインスタンスを含む。
【００４９】
エッジパターン登録部２３３は、コンフィグのエッジパターンをエッジパターン管理テーブル２４２に登録する。例えば、新しい機種の機器をデータセンタに導入した際に、利用者はこの機器に対応するエッジパターンを新規入力する。新規入力されるエッジパターンは、管理要求受付部２０３、全体トポロジ生成部２０７を介してエッジパターン登録部２３３に入力され、ノードパターン登録部２３２はこの新規エッジパターンを新規のエッジパターン管理テーブル２４２ｄとして生成する。
【００５０】
なお、エッジパターンとは、コンフィグにおける各種仮想化技術の仮想リソース間の接続を示す設定コマンドのパターンである。以後、接続コマンドの設定パターンを、接続パターンと呼ぶ。この接続パターンの詳細は、図５において説明する。
【００５１】
また、仮想リソース間の接続とは、論理トポロジを構成する前述の仮想リソース間の論理的な結線のことである。仮想リソース間の接続は、例えば、ＶＬＡＮとＶＬＡＮインタフェースの接続、ＶＬＡＮインタフェースとＶＲＦの接続を含む。
【００５２】
ノード生成部２３４は、ノードパターン管理テーブル２４１に基づいて、機器のコンフィグのうち、仮想リソースの生成に該当するコマンドを抽出し、抽出したコマンドを含む情報に基づいて、前記の仮想リソースに対応するノードを生成する。生成ノードは、ノード管理テーブル２４３に保存される。ノード生成部２３４の詳細は図８において説明する。
【００５３】
エッジ生成部２３５は、エッジパターン管理テーブル２４２に基づいて、機器のコンフィグのうち、仮想リソース間の接続に該当するコマンドを抽出し、抽出したコマンドを含む情報に基づいて、前記の仮想リソース間の接続に対応するエッジを生成する。生成されたエッジは、エッジ管理テーブル２４４に保存される。エッジ生成部２３５の詳細は図９において説明する。
【００５４】
全体トポロジ構築部２３６は、ノード管理テーブル２４３とエッジ管理テーブル２４４の内容に基づいて、データセンタ１００の仮想ネットワーク全体の論理トポロジ情報を生成し、全体トポロジＤＢ２０５に保存する。このＤＢに保存するトポロジ情報の形式は、隣接行列、接続行列、隣接リスト、接続リストなど適宜の形式でよい。本実施の形態では隣接リストの形式を利用する。
【００５５】
ノードパターン管理テーブル２４１ａ〜２４１ｃは、コンフィグにおける各種仮想化技術の仮想リソースの生成を示す設定パターンを、ノードタイプに対応付けて保持する。仮想リソースの生成の例には、仮想インタフェースのインスタンスの新規生成、仮想ルータのインスタンスの新規生成があげられる。なお、これらテーブルは、機器の機種ごとに用意される。例えば、機種ａａａのノードパターンは２４１ａである。ノードパターン管理テーブル２４１ａの詳細は図４において説明する。
【００５６】
エッジパターン管理テーブル２４２ａ〜２４２ｃは、コンフィグにおける各種仮想化技術の仮想リソース間の接続を示す接続パターンを保持する。仮想リソース間の接続の例には、仮想ＬＡＮのインスタンスと仮想インタフェースとのインスタンスの論理的な結線や、仮想インタフェースのインスタンスと仮想ルータのインスタンスとの論理的な結線があげられる。このテーブルは、機器の機種ごとに用意される。例えば、機種ａａａのエッジパターンは２４２ａである。エッジパターン管理テーブル２４２ａの詳細は図５において説明する。
【００５７】
ノード管理テーブル２４３は、コンフィグから生成されるノードを管理するテーブルである。ノード管理テーブル２４３の詳細は図６において説明する。
【００５８】
エッジ管理テーブル２４４は、コンフィグから生成されるエッジを管理するテーブルである。エッジ管理テーブル２４４の詳細は図７において説明する。
【００５９】
テナントトポロジ特定部２０８は、全体トポロジＤＢ２０５が保持する、仮想ネットワーク全体の論理トポロジの情報を入力とし、個々のテナントトポロジを特定して、テナントトポロジＤＢ２０６に保存する。このＤＢに保存するトポロジ情報の形式は、隣接行列、接続行列、隣接リスト、接続リストなど適宜の形式でよいが、テナント単位でトポロジを判別できる必要がある。
【００６０】
テナントトポロジ特定部２０８は、構成要素として、全体トポロジ一時管理ＤＢ２５１、テナントトポロジ管理ＤＢ２５２、テナント分岐点決定部２５３、分岐点管理テーブル２５４、テナントトポロジ探索部２５５を含む。
【００６１】
全体トポロジ一時管理ＤＢ２５１は、全体の論理トポロジを一時的に管理するＤＢである。基本的な構成は全体トポロジＤＢ２０５と同様である。
【００６２】
テナントトポロジ管理テーブル２５２は、全体トポロジの中から特定したテナントトポロジを保持するＤＢである。基本的な構成はテナントトポロジＤＢ２０６と同様である。
【００６３】
テナント分岐点決定部２５３は、全体トポロジ中で複数のテナントトポロジを集約し、複数の仮想ネットワークを相互に接続する仮想リソースであって、各仮想ネットワークの分岐点となる仮想リソース（以下、分岐点リソースと称することがある。）の有無を判定し、分岐点リソースが有るならば、その１つ以上の仮想リソースを特定する。
【００６４】
分岐点管理テーブル２５４は、分岐点リソース情報を保持するテーブルである。詳細は図１２において説明する。
【００６５】
テナントトポロジ探索部２５５は、分岐点管理テーブル２５４に保持された分岐点リソースの情報を基に、個々のテナントのテナントトポロジを特定する処理を行い、特定したテナントトポロジをテナントトポロジ管理テーブル２５２に保存する。全てのテナントトポロジ特定処理が終了した後に、テナントトポロジＤＢ２０６に出力する。
【００６６】
テナント分岐点決定部２５３は、要求解析部２６１、分岐点推定部２６２、分岐点登録部２６３を含む。
【００６７】
要求解析部２６１は、分岐点リソースの情報がコンソール１１０経由で指定される場合に、この分岐点リソース指定要求を受け付け、指定される分岐点リソースに対応する仮想リソースを全体トポロジ一時管理ＤＢ２５１から特定する。
【００６８】
分岐点推定部２６２は、全体トポロジの中から分岐点リソースの有無を判定し、分岐点リソースが有るならば、その１つ以上の分岐点リソースを特定する。
【００６９】
分岐点登録部２６３は、要求解析部２６１と分岐点推定部２６２が特定した分岐点リソースを、分岐点管理テーブル２５４に登録する。
【００７０】
テナントトポロジ探索部２５５は、分岐点ノード除去部２７１、再帰探索部２７２、部分トポロジ特定部２７３を含む。
【００７１】
分岐点ノード除去部２７１は、分岐点管理テーブル２５４で保持される分岐点リソースを、全体トポロジ一時管理ＤＢ２５１から除去する。
【００７２】
再帰探索部２７２は、テナントトポロジに対応する部分トポロジを全体トポロジ一時管理ＤＢ２５１から特定するために、任意の仮想リソースを探索の起点とし、隣接する仮想リソースを再帰的に探索する。
【００７３】
部分トポロジ特定部２７３は、再帰探索部２７２が探索した一連の仮想リソースが構成する部分トポロジをテナントトポロジとして、テナントトポロジ管理ＤＢ２５２に保存する。
【００７４】
図３は、ネットワーク機器管理テーブル２０４の構成例である。図３において、ネットワーク機器管理テーブル２０４は、データセンタ１００内のネットワーク機器からコンフィグを収集する際に用いる情報を管理する。管理対象情報として、機器識別子３０１、機種３０２、ＩＰアドレス３０３、ユーザ名３０４、パスワード３０５、コンフィグのファイル名３０６がある。機器識別子３０１は、個々のネットワーク機器を、ネットワーク全体から一意に特定するための識別子である。機種３０２、ＩＰアドレス３０３、ユーザ名３０４、パスワード３０５は、ネットワーク機器にリモートログインし、コンフィグを収集するために必要な情報である。ファイル名３０６は、収集したコンフィグを保存する時のファイル名である。ネットワーク機器管理テーブル２０４は、これ以外の情報も適宜保持してもよい。
【００７５】
図４は、ノードパターン管理テーブル２４１ａの構成例を示す。図４において、ノードパターン管理テーブル２４１ａは、機種ａａａについて、ノードタイプ４０１と仮想リソースの生成に関する設定パターン（生成パターン）４０２との対応付けを管理する。
【００７６】
ノードタイプとは、仮想リソースの種類を表す。例えば、ノードＮ１は仮想ＬＡＮに関する仮想リソース、ノードＮ２は仮想インタフェースに関する仮想リソース、ノードＮ３は仮想ルータに関する仮想リソースである。
【００７７】
例えば、生成パターン４１１は仮想ＬＡＮ技術のひとつであるＶＬＡＮ（ノードＮ１）の仮想リソースの生成、生成パターン４１２は仮想インタフェース技術のひとつであるＶＬＡＮインタフェース（ノードＮ２）の仮想リソースの生成、生成パターン４１３は仮想ルータ技術のひとつであるＶＲＦ（ノードＮ３）の仮想リソースの生成に関する設定パターンである。コンフィグの中でこれら生成パターンにマッチする箇所が見つかると、対応するノードタイプのノードが生成される。
【００７８】
生成パターン４０２の各セルに記載されている内容について説明する。セル内の最初の行は、ある項目の設定を開始することを意味し、最後の行はこの項目に関する設定を終了することを意味する。例えば、ＶＬＡＮインタフェースの生成パターン４１２においては、「ｉｎｔｅｒｆａｃｅ  ｖｌａｎ  ＜ｉｄ＞」の行が、あるＶＬＡＮインタフェースの設定を開始することを意味し、最後の「！」の行が、この設定に関する記述の最後の行であることを意味する。この開始から終了までの間には、生成パターン４０２に示されていない文字列が存在してもよい。
【００７９】
例えば、生成パターン４１２に記載の「ｉｐ  ａｄｄｒｅｓｓ」の行は必須ではない。生成パターンがしたがうべき条件は、後述するノード生成処理において、ノードのタイプとタイプ内識別子を判別できることである。タイプ内識別子とは、あるコンフィグのあるノードタイプにおいてノードを一意に特定するための識別子（コンフィグに記載の仮想リソースの識別子）である。ノードパターン管理テーブル２４１ａの例においては、生成パターン中に＜ｉｄ＞と示されている箇所が、タイプ内識別子に該当する。例えば、ＶＬＡＮ（ノードＮ１）の生成パターン４１１であれば、ＶＬＡＮ番号に該当する箇所＜ｉｄ＞が、ノードタイプＮ１のタイプ内識別子である。
【００８０】
また、上記で説明したノードパターン管理テーブル２４１ａの構成は必須ではなく、適宜の構成をとってもよい。ノードパターン管理テーブルがしたがうべき条件は、ノードを生成する処理において、コンフィグから生成パターンを判別し、ノード識別子を抽出できることである。したがって、例えば、ノードパターン管理テーブル２４１ａ〜２４１ｃそれぞれに機種ａａａ、ｂｂｂ、ｃｃｃを割り当てるのではなく、ひとつのテーブルにおいて、列４０２に機種ａａａ、別の列に機種ｂｂｂ、また別の列に機種ｃｃｃの生成パターンを保持するといった構成をとってもよい。
【００８１】
図５は、エッジパターン管理テーブル２４２ａの構成例を示す。図５において、エッジパターン管理テーブル２４２ａは、機種ａａａについて、エッジタイプ５０１、接続ノードタイプ５０２、仮想リソース間の接続に関する設定パターン（接続パターン）５０３を管理する。
【００８２】
エッジタイプ５０１とは、仮想リソースの接続関係の種類を表す。例えば、エッジＥ１は、仮想ＬＡＮと仮想インタフェースそれぞれの仮想リソース間の接続、エッジＥ２は、仮想インタフェースと仮想ルータそれぞれの仮想リソース間の接続、エッジＥ３は、仮想ルータの２つの仮想リソース間の接続である。このように、各エッジタイプは、エッジが接続する２つのノードのノードタイプ（接続ノードタイプ５０２）にも対応付けられる。
【００８３】
この例において、接続パターン５１１は、ＶＬＡＮ（ノードＮ１）の仮想リソースとＶＬＡＮインタフェース（ノードＮ２）の仮想リソースを接続するエッジＥ１、接続パターン５１２は、ＶＬＡＮインタフェース（ノードＮ２）の仮想リソースとＶＲＦ（ノードＮ３）の仮想リソースを接続するエッジＥ２、接続パターン５１３は、ＶＲＦ（ノードＮ３）の２つの仮想リソースを接続するエッジ３に関する設定パターンである。コンフィグの中でこれら接続パターンにマッチする箇所が見つかると、対応するエッジが生成される。
【００８４】
接続パターン５０３の各セルに記載されている内容について説明する。セル内の最初の行は、ある項目の設定を開始することを意味し、最後の行はこの項目に関する設定を終了することを意味する。例えば、接続パターン５１１において、「ｉｎｔｅｒｆａｃｅ  ｖｌａｎ」から始まる行が最初の行であり、「！」の行が最後の行である。なお、この開始から終了までの間には、接続パターンの例に示されていない文字列が存在してもよい。
【００８５】
例えば、接続パターン５１１に記載の「ｉｐ  ａｄｄｒｅｓｓ」の行は必須ではない。また、接続パターン５１３は、「ｒｏｕｔｅ−ｍａｐ」の行から始まり、「！」の行で終わるブロックと、「ｖｒｆ  ｄｅｆｉｎｉｔｉｏｎ」の行から始まり、「！」で終わるブロックの、複数のブロックからなる。両ブロックは＜ｎａｍｅ＞と示される文字列によって相互に対応付けられる。両ブロック間には、このエッジに関係しない文字列が存在してもよい。
【００８６】
接続パターンがしたがうべき条件は、後述するエッジ生成処理において、エッジのタイプと、エッジの両端に接続される２ノードのタイプ内識別子を判別できることである。タイプ内識別子は、前述の通り、ある機器内のあるノードタイプに関してノードを一意に特定するための識別子であり、この例では、接続パターン中に＜ｉｄ１＞、＜ｉｄ２＞と示されている箇所である。
【００８７】
具体的には、エッジＥ２の接続パターン５１２であれば、ＶＬＡＮインタフェース番号に該当する箇所＜ｉｄ１＞が片方のノードのタイプ内識別子であり、ＶＲＦ番号に該当する箇所＜ｉｄ２＞が他方のノードのタイプ内識別子である。なお、エッジＥ１の接続パターン５１１のように、両者のノードのタイプ内識別子が同じ箇所＜ｉｄ＞に示される場合もある。
【００８８】
なお、上記で説明したエッジパターン管理テーブル２４２ａの構成は必須ではなく、適宜の構成をとってもよい。エッジパターン管理テーブルがしたがうべき条件は、エッジを生成する処理において、コンフィグからエッジに関する接続パターンを判別し、エッジ識別子を抽出できることである。したがって、例えば、エッジパターン管理テーブル２４２ａ〜２４２ｃそれぞれに機種ａａａ、ｂｂｂ、ｃｃｃを割り当てるのではなく、ひとつのテーブルにおいて、列５０３に機種ａａａ、別の列に機種ｂｂｂ、また別の列に機種ｃｃｃの接続パターンを保持するといった構成をとってもよい。
【００８９】
図６は、ノード管理テーブル２４３の構成例を示す。図６において、ノード管理テーブル２４３は、コンフィグの設定パターンに基づいて生成されたノードを一元的に管理するためのテーブルであり、このノード管理テーブル２４３には、仮想リソース情報が格納される。各ノードは、仮想ネットワーク全体で一意に特定できるノード識別子６０１を有する。ノードの要素は、ノードタイプ４０１、ノードが存在する物理機器の識別子６０３、タイプ内識別子６０４を含む仮想リソース情報で構成される。
【００９０】
行６１１は、仮想ＬＡＮ番号（ノードＮ１のタイプ内識別子）が１０の仮想ＬＡＮ（ノードＮ１）が存在することを意味し、行６１２は、機器ＳＷ１において仮想インタフェース番号（ノードＮ２のタイプ内識別子）が１０の仮想インタフェース（ノードＮ２）が存在することを意味し、行６１３は、機器ＦＷにおいて仮想ルータ番号（ノードＮ３のタイプ内識別子）が１の仮想ルータ（ノードＮ３）が存在することを意味する。
【００９１】
なお、上記で説明したノード管理テーブル２４３の構成は必須ではなく、適宜の構成をとってもよい。このほかのテーブル構成方法としては、例えば、ノードタイプごとにテーブルを分ける方法や、機器ごとにテーブルを分ける方法をとってもよい。ノード管理テーブル２４３がしたがうべき条件は、各機器の各ノードタイプのノードを一元的に管理できることである。
【００９２】
図７は、エッジ管理テーブル２４４の構成例を示す。図７において、エッジ管理テーブル２４４は、コンフィグの接続パターンに基づいて生成されたエッジに関わるエッジ情報を一元的に管理するテーブルであり、このエッジ管理テーブル２４４には、仮想リソース間接続情報が格納される。各エッジは、仮想ネットワーク全体で一意に特定できるエッジ識別子７０１を有し、エッジ情報の要素として、エッジタイプ５０１と、エッジの両端に接続されるノードのノード識別子６０１−１、６０１−２を含み、これらの要素は、仮想リソース間接続情報として構成される。なお、エッジ管理テーブル２４４において、エッジタイプ５０１は必ずしも必要ではなく、特定の２ノードが接続されることを意味する必要最低限の情報さえあればよい。
【００９３】
なお、上記で説明したエッジ管理テーブル２４４の構成は必須ではなく、エッジを管理できる適宜の構成をとってもよい。このほかのテーブル構成方法としては、例えば、エッジタイプごとにテーブルを分ける方法をとってもよい。
【００９４】
図８は、ノード生成部２３４の構成例を示す。図８において、ノード生成部２３４は、構成要素として、ノードパターンテーブル呼出部８０１、ノードパターン抽出部８０２、ノードパラメータ抽出部８０３、ノード情報生成部８０４、ノード識別子生成部８０５、ノード情報登録部８０６を含む。
【００９５】
ノードパターン呼出部８０１は、コンフィグ解析対象の機器の機種に対応するノードパターン管理テーブル２４１を呼び出す。機種情報は、ネットワーク機器管理テーブル２０４から特定する。ノードパターン呼出部８０１は、管理者からのトポロジ情報生成要求をトリガとして、管理要求受付部２０３と全体トポロジ生成部２０７を介して実行される。
【００９６】
ノードパターン抽出部８０２は、呼び出したノードパターン管理テーブル２４１に記載の生成パターンにしたがって、コンフィグからノードの生成コマンドを抽出する。
【００９７】
ノードパラメータ抽出部８０３は、抽出した設定コマンドそれぞれについて、ノードのタイプ内識別子を抽出する。
【００９８】
ノード情報生成部８０４は、ノードのノードタイプ、タイプ内識別子、機器識別子を要素とするノードを生成する。
【００９９】
ノード識別子生成部８０５は、生成したノードを一意に特定するための識別子を生成する。
【０１００】
ノード情報登録部８０６は、生成したノードをノード管理テーブル２４３に追加する。
【０１０１】
図９は、エッジ生成部２３５の構成例を示す。図９において、エッジ生成部２３５は、構成要素として、エッジパターンテーブル呼出部９０１、エッジパターン抽出部９０２、エッジパラメータ抽出部９０３、エッジ情報生成部９０４、ノード検索部９０５、エッジ識別子生成部９０６、エッジ情報登録部９０７を含む。
【０１０２】
エッジパターンテーブル呼出部９０１は、解析対象コンフィグの機器の機種に対応する、エッジパターン管理テーブル２４２を呼び出す。機種情報はネットワーク機器管理テーブル２０４から特定する。
【０１０３】
エッジパターン抽出部９０２は、呼び出したエッジパターン管理テーブルに基づいて、コンフィグからエッジに関する接続コマンドを抽出する。
【０１０４】
エッジパラメータ抽出部９０３は、抽出した接続コマンドからそれぞれについて、エッジによって接続される２ノードのタイプ内識別子を抽出する。
【０１０５】
エッジ情報生成部９０４は、エッジが接続する２ノードの情報（ノードの要素には、抽出したタイプ内識別子、機器識別子、ノードタイプを有する）を生成する。
【０１０６】
ノード検索部９０５は、ノード管理テーブル２４３から、前記２ノードの情報に基づき、前記２ノードを検索し、それら２ノードのノード識別子を返す。この２つのノード識別子が、生成するエッジの要素に含まれる。
【０１０７】
エッジ識別子生成部９０６は、生成したエッジを一意に特定するための識別子を生成する。
【０１０８】
エッジ情報登録部９０７は、生成したエッジをエッジ管理テーブル２４４に追加する。
【０１０９】
図１０は、全体トポロジＤＢ２０５を示す構成図である。図１０において、全体トポロジＤＢ２０５は、ネットワーク全体のトポロジ情報を表すために、ノード管理テーブル２４３、エッジ管理テーブル２４４相当の情報を持つ。
【０１１０】
図１１は、テナントトポロジ管理ＤＢ２５２を示す構成図である。図１１において、テナントトポロジ管理ＤＢ２５２は、テナント単位でトポロジを管理するために、テナント識別子１１１１を有するサブデータベース１０１１ａ〜ｃを持つ。各テナントに対応するサブデータベース１１０１ａ〜ｃは、ノード管理テーブル２４３、エッジ管理テーブル２４４相当の情報を持つ。
【０１１１】
なお、テナントトポロジ管理ＤＢ２５２の構造として、ノード・エッジとテナントが対応付けられればよく、適宜の構造をとってもよい。例えば、テナント単位でのサブデータベース１１０１ａ〜ｃを作成するのではなく、ひとつのデータベースのノード管理テーブル・エッジ管理テーブルに、テナント識別子１１１１の列を追加し、テナント識別子と個々のノード・エッジを対応付ける方法をとってもよい。
【０１１２】
図１２は、分岐点管理テーブル２５４を示す構成図である。図１２において、分岐点管理テーブル２５４は、全体トポロジ中で複数のテナントトポロジを集約しているノード情報を分岐点の仮想リソース（分岐点リソース）として保持する。本実施例においては、分岐点リソースの情報として、分岐点ノード識別子１２０１、ノード識別子６０１を含む。
【０１１３】
なお、このテーブル構成は必ずしも必須ではなく、分岐点リソースが全体トポロジから一意に特定できればよい。例えば、分岐点管理テーブルの構成要素として、ノード管理テーブル２４３と同じ要素を持たせてもよい。
【０１１４】
図１３は、テナントトポロジ情報の生成フローを示す図である。図１３において、コンフィグ収集部２０１は、ネットワーク機器管理テーブル２０４の情報に基づいて、各ネットワーク機器からコンフィグを収集する（Ｓ１３０１）。コンフィグの収集に使用する方法は、ｔｅｌｎｅｔ、ＴＦＴＰ（Ｔｒｉｖｉａｌ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＮＥＴＣＯＮＦ（Ｎｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、あるいはＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）などを含む。
【０１１５】
次に、全体トポロジ生成部２０７の全体トポロジ構築部２３６は、コンフィグ収集部２０１が収集したコンフィグのうち未解析のコンフィグファイルを一つ読込み（Ｓ１３０２）、各機器から収集したコンフィグそれぞれについて、コンフィグ単体の解析処理を行う（Ｓ１３０３）。この後、全体トポロジ構築部２３６は、未解析のコンフィグファイルが存在するか否かを判定し（Ｓ１３０４）、未解析のコンフィグファイルが存在する場合には、ステップＳ１３０２の処理に戻り、未解析のコンフィグファイルが存在しない場合には、ステップＳ１３０５の処理に移行する。なお、処理Ｓ１３０３では、個々のコンフィグについてひとつまたは複数のノードとエッジを生成する処理を行う。詳細は図１４において説明する。
【０１１６】
次に、全体トポロジ構築部２３６は、全てのコンフィグを解析し、全てのノードとエッジを生成した後に、ノード管理テーブル２４３とエッジ管理テーブル２４４の要素を単一のグラフとして統合し、全体トポロジＤＢ２０５に保存する（Ｓ１３０５）。
【０１１７】
そして、テナントトポロジ特定部２０８は、全体トポロジＤＢ２０５内の全体トポロジから、個々のテナントトポロジを特定し、個々のテナントトポロジを、部分ネットワークトポロジ又は一つの仮想ネットワークとして、テナントトポロジＤＢ２０６に保存する（Ｓ１３０６）。詳細は図１７において説明する。
【０１１８】
最後に、ＧＵＩ表示制御部２２１は、全体トポロジＤＢ２０５内の仮想ネットワーク全体の論理トポロジ、あるいは、テナントトポロジＤＢ２０６内のテナントトポロジを可視化し、コンソール１１０に表示する（Ｓ１３０７）。
【０１１９】
図１４は、コンフィグ単体の解析処理Ｓ１３０３のフローを示す図である。図１４において、全体トポロジ生成部２０７は、最初に、解析対象のコンフィグのファイル名３０６に基づいて、ネットワーク機器管理テーブル２０４から、コンフィグに対応する機器識別子３０１と機種３０２を特定する（Ｓ１４０１）。
【０１２０】
次に、ノード生成の処理に移り、ノード生成部２３４のノードパターンテーブル呼出部８０１は、ネットワーク機器管理テーブル２０４から特定した機種に対応するノードパターン管理テーブル２４１を特定する（Ｓ１４０２）。
【０１２１】
この特定したテーブルに基づいて、ノードパターン抽出部８０２は、コンフィグの中から、ノードパターン４０２に該当するコマンドを抽出し、抽出したコマンドに該当するノードタイプ４０１も判別する（Ｓ１４０３）。
【０１２２】
そして、ノード生成部２３４は、抽出したコマンドそれぞれについて、単一ノードの生成処理と登録処理を実行する（Ｓ１４０５）。この処理では、ノード生成部２３４は、ひとつの抽出コマンドに対応するノードを生成し、ノード管理テーブル２４３に登録する。この処理の詳細は図１５において説明する。この後、ノード生成部２３４は、未選択の抽出コマンドが存在するか否かを判定し（Ｓ１４０６）、未選択の抽出コマンドが存在する場合には、ステップＳ１４０４の処理に戻り、未選択の抽出コマンドが存在しない場合には、ステップＳ１４０７のエッジ生成処理に移行する。
【０１２３】
ノード生成処理を完了した後は、エッジ生成処理に移り、エッジ生成部２３５のエッジパターンテーブル呼出部９０１は、解析対象のコンフィグに関して、ネットワーク機器管理テーブル２０４から取得した機種に対応するノードパターン管理テーブル２４１を特定する（Ｓ１４０７）。
【０１２４】
この特定したテーブルに基づいて、エッジパターン抽出部９０２は、コンフィグの中から、接続パターン５０３に該当するコマンドを抽出し、抽出したコマンドに該当するエッジタイプ５０１と、このエッジに接続される２つのノードのノードタイプ５０２も判別する（Ｓ１４０８）。
【０１２５】
そして、エッジ生成部２３５は、抽出したコマンドを一つ選択し（Ｓ１４０９）、選択したコマンドそれぞれについて、単一エッジの生成処理と登録処理を行う（Ｓ１４１０）。この処理では、エッジ生成部２３５は、選択したコマンドに対応するエッジを生成し、エッジ管理テーブル２４４に登録する。この処理の詳細は図１６において説明する。この後、エッジ生成部２３５は、未選択の抽出コマンドが存在するか否かを判定し（Ｓ１４１１）、未選択の抽出コマンドが存在する場合には、ステップＳ１４０９の処理に戻り、未選択の抽出コマンドが存在しない場合には、このルーチンでの処理を終了する。
【０１２６】
なお、本実施例においては、コンフィグにおいて、ノードパターンにマッチしたコマンドを全て抽出した後に、それぞれのコマンドについてノード生成処理を行っているが、この順序は必須ではない。すなわち、コマンドをひとつ抽出する度に、この抽出コマンドに関してノード生成処理を行うなどの適宜の方法をとってもよい。
【０１２７】
エッジパターン抽出処理とエッジ処理の順序についても、同様に必須ではない。すなわち、エッジパターンにマッチするコマンドをひとつ抽出する度に、この抽出コマンドに関してエッジ生成処理を行うなどの適宜の方法をとってもよい。
【０１２８】
また、本実施例においては、ノード生成処理の後にエッジ生成処理を行っているが、この順序も必須ではなく、両者の処理を並行に行っても構わない。すなわち、コンフィグを解析しつつ、ノードとエッジに関するパターンに関して並行マッチング処理を行い、見つかったパターンに関連するノードとエッジを適宜生成してもよい。エッジを生成する際に、エッジの両端に結ばれるノードが既に生成済みであるような条件さえ満たしていれば、いかなる順序で個々のノードとエッジを生成してもよい。
【０１２９】
図１５は、単一ノード生成・登録処理Ｓ１４０５の処理フローを示す図である。図１５において、この処理は、抽出したコマンドに対応するノードを生成し、ノード管理テーブル２４３に登録する。そのために以下のような処理を行う。
【０１３０】
最初に、ノードパラメータ抽出部８０３は、抽出コマンドからタイプ内識別子を特定する（Ｓ１５０１）。具体的には、ステップＳ１４０３で抽出したひとつのコマンドについて、ステップＳ１４０３で判別されたノードタイプと、ノードパターン管理テーブル２４１の生成パターン４０２にしたがって、ノードのタイプ内識別子を特定する。
【０１３１】
次に、ノード情報生成部８０４は、ノードを新規生成する（Ｓ１５０２）。新規生成ノードが持つべき要素は、３つあり、それらはノードタイプ（ステップＳ１４０３で判別）、タイプ内識別子（ステップＳ１５０１で特定）、機器識別子（Ｓ１４０１で特定）である。なお、ノードタイプがＮ１（仮想ＬＡＮ技術の仮想リソース）の場合は、例外的に機器識別子は付与しない（あるいは機器識別子にｎ／ａなどの固定文字列を入力する）。仮想ＬＡＮのノードに機器識別子を付与しない理由は後述する。
【０１３２】
そして、ノード情報登録部８０６は、生成したノードと同じ要素を持つノードが、ノード管理テーブル２４３に既に存在しているかどうかを確認する（Ｓ１５０３）。存在していなければ以下の処理（Ｓ１５０４〜Ｓ１５０６）が実行され、存在していれば以下の処理が実行されず、単一ノード生成・登録処理Ｓ１４０５は終了する。
【０１３３】
ノード識別子生成部８０５は、新規生成したノードに対するノード識別子を生成する（Ｓ１５０４）。本実施例においては、ノード識別子を整数とし、ノード管理テーブル２４３に存在するノードのノード識別子のうち、最大のものに１を足した値を、新規生成ノードのノード識別子とする。生成するノードＩＤの値は、ノード管理テーブル２４３に存在するノードＩＤの最大値に１を足した値である。なお、ノード識別子は他の方法によって決定されてもよい。ノード識別子の書式や生成規則がしたがうべき条件は、各ノードがネットワーク全体で一意に特定できることである。
【０１３４】
ノード情報生成部８０４は、前記のノード識別子を新規生成ノードに付与する（Ｓ１５０５）。
【０１３５】
ノード情報登録部８０６は、ノード識別が付与された新規生成ノードを、ノード管理テーブル２４３に追加する（Ｓ１５０６）。以上が、単一ノード生成・登録処理である。
【０１３６】
図１６は、単一エッジ生成・登録処理Ｓ１４１０を示すフロー図である。図１６において、この処理は、抽出したコマンドに対応するエッジを生成し、エッジ管理テーブル２４４に登録する。そのために、以下のような処理を行う。
【０１３７】
最初に、エッジパラメータ抽出部９０３は、エッジが接続する２ノードのタイプ内識別子を、抽出コマンドから特定する（Ｓ１６０１）。具体的には、ステップＳ１４０９で抽出したひとつのコマンドについて、ステップＳ１４０８で判別されたエッジタイプ、エッジが接続する２つのノードのノードタイプと、エッジパターン管理テーブル２４２の接続パターン５０３にしたがって、エッジが接続する２ノードのタイプ内識別子を特定する。
【０１３８】
次に、エッジ情報生成部９０４は、エッジに接続される２ノードのノード情報を生成する（Ｓ１６０２）。ノードが持つべき要素は、３つあり、それらはノードタイプ（ステップＳ１１０８で判別）、タイプ内識別子（ステップＳ１６０１で特定）、機器識別子（Ｓ１４０１で特定）である。なお、ノードタイプがＮ１（仮想ＬＡＮの仮想リソース）の場合は、例外的に機器識別子は付与しない（あるいは機器識別子にｎ／ａなどの固定文字列を入力する）。
【０１３９】
仮想ＬＡＮのノードに機器識別子を付与しない理由は、仮想ＬＡＮの設定情報は、複数の機器間で共有されるためである。仮想ＬＡＮノードに機器識別子を付与せずに、複数機器間で共有させることで、複数機器のＶＬＡＮインタフェースのノードを、機器設定情報のみから直接接続することができ、最終的にネットワーク全体の論理トポロジ情報を生成できる。なお、厳密な結線情報を得るには、仮想ＬＡＮのノードにも機器識別子を付与する必要があり、機器ごとに仮想ＬＡＮノードが生成さる。この場合、両者の仮想ＬＡＮノードを繋ぐためには、物理結線の情報が必要となる。しかし、稼働中のデータセンタのように物理結線の設定が正しい場合には、物理的な情報を省略することができ、論理的な情報のみを考慮して論理トポロジ情報を生成可能である。
【０１４０】
そして、ノード検索部９０５は、Ｓ１４０３で生成した２ノードと同じ要素を持つノードを、ノード管理テーブル２４３から検索する（Ｓ１６０３）。ノード検索部９０５は、この検索によりヒットした２つのノードのノード識別子を、エッジ情報生成部９０４に渡す。
【０１４１】
エッジ情報生成部９０４は、エッジを新規生成する（Ｓ１６０４）。エッジに持たせる要素は、エッジタイプと、エッジが接続する２ノードのノード識別子である。
【０１４２】
エッジ識別子生成部９０６は、新規生成したエッジに対するエッジ識別子を生成する（Ｓ１６０５）。実施例においては、エッジ識別子を整数とし、エッジ管理テーブル２４４に存在するエッジのエッジ識別子のうち、最大のものに１を足した値を、新規生成エッジのエッジ識別子とする。なお、エッジ識別子は他の方法によって決定されてもよい。エッジ識別子の書式や生成規則がしたがうべき条件は、各エッジがネットワーク全体で一意に特定できることである。
【０１４３】
エッジ情報生成部９０４は、前記のエッジ識別を新規生成エッジに付与する（Ｓ１６０６）。
【０１４４】
エッジ情報登録部９０７は、エッジ識別が付与された新規生成エッジを、エッジ管理テーブル２４４に追加する（Ｓ１６０７）。以上が、単一エッジ生成・登録処理のフローである。
【０１４５】
図１７は、テナントトポロジ特定処理Ｓ１３０６のフローを示す図である。図１７において、この処理は、全体トポロジＤＢ２０５内の全体トポロジから、個々のテナントトポロジを特定し、テナントトポロジＤＢ２０６に保存する。そのために、以下のような処理を行う。
【０１４６】
最初に、テナントトポロジ特定部２０８は、全体トポロジＤＢ２０５から全体トポロジを読み込み、全体トポロジ一時管理ＤＢ２５１に保持する（Ｓ１７０１）。
【０１４７】
次に、テナント分岐点決定部２５３は、分岐点リソースの有無を判定し、分岐点ノードが存在すれば、そのノードを特定し、分岐点管理テーブル２５４に登録する（Ｓ１７０２）。この処理の詳細は図１８において説明する。
【０１４８】
続いて、テナントトポロジ探索部２５５は、分岐点管理テーブル２５４の情報をもとに、全体トポロジ一時管理ＤＢ２５１から個々のテナントトポロジを探索し、特定したテナントトポロジ１１０１ａ〜ｃをテナントトポロジ管理ＤＢ２５２に保存する（Ｓ１７０３）。この処理の詳細は図２１において説明する。
【０１４９】
最後に、テナントトポロジ管理ＤＢ２５２内のテナントトポロジを、テナントトポロジＤＢ２０６に保存する（Ｓ１７０４）。以上が、テナントトポロジ特定処理のフローである。
【０１５０】
図１８は、テナント分岐点決定処理Ｓ１７０２のフローを示す図である。図１８において、最初に、要求解析部２６１は、ユーザからの分岐点リソース指定要求を解析し、全体トポロジ一時管理ＤＢ２５１から指定された分岐点リソースを特定し、分岐点管理テーブル２５４に追加する（Ｓ１８０１）。この処理の詳細は図１９において説明する。
【０１５１】
次に、分岐点判定部２６２は、全体トポロジ一時管理ＤＢ２５１内のノード群の次数（ｄｅｇｒｅｅ）情報を用いて、テナント分岐点となるノードを特定し、分岐点管理テーブル２５４に追加する（Ｓ１８０２）。この処理の詳細は図２０において説明する。以上が、テナント分岐点決定処理Ｓ１７０２のフローである。
【０１５２】
図１９は、テナント分岐点要求解析処理Ｓ１８０１のフローを示す図である。図１９において、この処理は、ユーザからの分岐点リソース指定要求を解析し、全体トポロジ一時管理ＤＢ２５１から指定された分岐点リソースを特定し、分岐点管理テーブル２５４に追加する。
【０１５３】
最初に、要求解析部２６１は、ユーザからの分岐点リソース指定要求を、受け付け済みかどうかを判定する（Ｓ１９０１）。受け付け済要求がなければ本フローは終了し、受け付け済要求があれば以下の処理を行う。
【０１５４】
次に、要求解析部２６１は、登録要求を１つ選択する（Ｓ１９０２）。この後、要求解析部２６１は、選択した要求を解析し、指定された分岐点リソースに該当するノードを全体トポロジ一時管理ＤＢ２５１から特定し、ノード識別子６０１を取得する（Ｓ１９０３）。本実施例では、要求の形式として、分岐点リソースとなるノードのノードタイプ４０１、機器識別子６０３、タイプ内識別子６０４の３つの要素を含む。
【０１５５】
要求解析部２６１は、全体トポロジ一時管理ＤＢ２５１を参照し、これら３つの要素を含むノードを特定する。なお、要求の内容は、全体トポロジから分岐点リソースを特定できれば適宜の形態をとってよく、ノード識別子６０１を要求に含めてもよい。
【０１５６】
分岐点登録部２６３は、分岐点リソースのノード識別子６０１を取得した後、このノードが分岐点管理テーブル２５４に登録済みであるかどうかを確認する（Ｓ１９０４）。登録済みであれば本フローは終了し、未登録であれば以下の処理を行う。
【０１５７】
分岐点登録部２６３は、分岐点リソースに対して、テナント分岐点識別子１２０１を生成し付与する（Ｓ１９０５）。識別子の値は、分岐点管理テーブル２５４のレコード数に１を足した値である。本実施例では、テナント分岐点管理テーブル２５４のレコード数に１を足した数字をテナント分岐点識別子とするが、分岐点管理テーブル２５４内で一意に特定できる識別子を付与できるならば、適宜の方法を用いてもよい。
【０１５８】
そして、分岐点登録部２６３は、取得したノード識別子６０１と生成した分岐点識別子１２０１のペアを、分岐点管理テーブル２５４に追加する（Ｓ１９０６）。
【０１５９】
分岐点登録部２６３は、未解析の登録要求があれば、ステップＳ１９０２に戻り、要求解析部２６１は、全ての登録要求について同様の処理を行う（Ｓ１９０７）。以上が、テナント分岐点要求解析処理Ｓ１８０１のフローである。
【０１６０】
図２０は、テナント分岐点推定処理Ｓ１８０２のフローを示す。図２０において、この処理は、テナント分岐点決定部２５３が、分岐点リソースの有無を判定し、分岐点ノードが存在すれば、そのノードを特定し、分岐点管理テーブル２５４に登録する。
【０１６１】
最初に、分岐点推定部２６２は、全体トポロジ一時管理ＤＢ２５１内のノード管理テーブルを取得する（Ｓ２００１）。
【０１６２】
次に、分岐点推定部２６２は、各ノードについて次数を計算する（Ｓ２００２）。次数とは、ノードが接続するエッジの数であり、計算方法としては、全体トポロジ一時管理ＤＢ内のエッジ管理テーブルを参照し、計算対象のノードが所属するレコードの数を次数とみなす方法が挙げられる。
【０１６３】
そして、分岐点推定部２６２は、次数の平均値ｕと標準偏差ｓを計算する（Ｓ２００３）。
【０１６４】
次に、分岐点推定部２６２は、次数がｕ＋３ｓを超えるノードの有無を判定する（Ｓ２００４）。条件を満たすノードが存在しなければこのフローは終了し、ノードが存在すれば以下の処理を行う。
【０１６５】
まず、分岐点推定部２６２は、特定した１つ以上のノードを分岐点ノードであるとみなす（Ｓ２００５）。
【０１６６】
次に、分岐点推定部２６２は、１つ以上の分岐点ノードのうちひとつを選択し、対応するノード識別子６０１を取得する（Ｓ２００６）。
【０１６７】
そして、分岐点登録部２６３は、特定したノードが分岐点管理テーブル２５４に登録済みであるかどうかを確認する（Ｓ２００７）。登録済みであればステップＳ２０１０に移動し、未登録であれば以下のステップが実行される。
【０１６８】
特定したノードが分岐点管理テーブル２５４に登録済みでない場合、分岐点推定部２６２は、選択した分岐点ノードに対して、テナント分岐点識別子を生成して付与する（Ｓ２００８）。実施例では、テナント分岐点管理テーブル２５４のレコード数に１を足した数字をテナント分岐点識別子とするが、分岐点管理テーブル２５４で一意に特定できる識別子を付与できるならば適宜の方法を用いてもよい。
【０１６９】
そして、分岐点登録部２６３は、取得したノード識別子６０１と生成した分岐点識別子１２０１のペアを、分岐点管理テーブル２５４に追加する（Ｓ２００９）。
【０１７０】
分岐点推定部２６２は、未選択のテナント分岐点ノードが存在するか否かを判定し（Ｓ２０１０）、未選択の分岐点ノードがあればステップＳ２００６に戻り、全ての分岐点ノードについて同様の処理を行い（Ｓ２０１０）、未選択の分岐点ノードが無い場合には、このルーチンでの処理を終了する。以上が、テナント分岐点処理Ｓ１８０２のフローである。
【０１７１】
なお、推定したテナント分岐点をコンソール１１０を介してユーザに提示し、その正しさの是非を確認して必要に応じて修正してもよい。
【０１７２】
また、本実施例においては、テナント分岐点の推定に次数情報を用いたが、他にも次のような方法がある。
【０１７３】
最初に挙げられる方法は、テナント分岐点のノードは多数のテナントを集約することによって、他のノードと統計的に優位な差がある特徴を持つと仮定し、この特徴を持つノードを探す方法である。本実施例では、ｕ＋３ｓ以上の次数を持つノードを特定したが、任意の統計的外れ値（ｏｕｔｌｉｅｒ）検出手法を使い、また、任意の統計情報を用いてよい。例えば、ノードの統計情報として次数（ｄｅｇｒｅｅ）に限らず、媒介中心性（ｂｅｔｗｅｅｎｎｅｓｓ）や近接中心性（ｃｌｏｓｅｎｅｓｓ）などの指標を採用してもよい。
【０１７４】
次に挙げられる方法には、通信データ（パケット）の特徴に応じ、標準のＩＰのプロトコルに準拠しない方法で転送先を振り分ける機能を持つノードを、分岐点ノードとみなす方法である。例えば、ポリシーベースルーティング（ＰＢＲ）により、到達パケットの送信元ＩＰアドレスまたは宛先ＩＰアドレスに応じて、転送先の仮想インタフェースを明示的に振り分ける仮想ルータを、機器の設定情報から特定し、テナント分岐点ノードとみなす方法がある。この際、ＰＢＲと同時にＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）を行う仮想ルータのみを、テナント分岐点ノードとみなす方法も考えられる。この場合、ＰＲＢの場合と同様に、ＮＡＴ設定も機器の設定情報から特定する必要がある。
【０１７５】
また、別の方法として、特定の機器に生成されるノードをテナント分岐点とみなす方法が考えられる。例えば、インターネットとのゲートウェイとなるボーダールータなど、複数テナントを集約する機能を持つ機器について、その機器ＩＤを持つノードをテナント分岐点とみなす方法が挙げられる。テナントを集約する役割を持つ機器には、他にも、管理セグメント用のスイッチ、ＳＳＬ−ＶＰＮ用の装置、ＮＡＴ用の装置などが挙げられる。
【０１７６】
図２１は、テナントトポロジ探索処理Ｓ１７０４のフローを示す。図２１において、この処理は、テナント探索部２５５が、分岐点管理テーブル２５４の情報を基に、全体トポロジから個々のテナントトポロジを探索し、この探索で特定したテナントトポロジ１１０１ａ〜ｃを、部分トポロジ又は一つの仮想ネットワークのトポロジとしてテナントトポロジ管理ＤＢ２５２に保存する
【０１７７】
最初に、分岐点ノード除去部２７１は、分岐点ノードに接続するエッジを全体トポロジ一時管理ＤＢ２５７から除去する（Ｓ２１０１）。具体的には、分岐点ノード除去部２７１は、全体トポロジ一時管理ＤＢ２５１内エッジ管理テーブルの各エッジについて、エッジ内のノード識別子（６０１−１，６０１−２）のいずれかが、分岐点管理テーブル２５４内ノードのノード識別子６０１と一致する場合、そのエッジを全体トポロジ一時管理ＤＢ２５１から除去する。
【０１７８】
次に、分岐点ノード除去部２７１は、分岐点ノードに対応するノードを全体トポロジ一時管理ＤＢ２５１から除去する（Ｓ２１０２）。具体的には、分岐点ノード除去部２７１は、全体トポロジ一時管理ＤＢ２５１内のノード管理テーブルの各ノードについて、そのノードが、分岐点管理テーブル２５４にも存在する場合（両テーブルに同一のノード識別子６０１が存在する場合）に、そのノードを全体トポロジ一時管理ＤＢ２５１から除去する。これにより、各仮想ネットワークを相互に接続する仮想リソースであって、各仮想ネットワークの分岐点となる分岐点リソースが、各仮想ネットワークから外れることになる。
【０１７９】
以下、全体トポロジから個々のテナントトポロジを特定する処理を繰り返す。まず、再帰探索部２７２は、全体トポロジ一時管理ＤＢ２５１内ノード管理テーブルから、任意のノードを１つ選択する（Ｓ２１０３）。このノードが再帰探索の起点となる。
【０１８０】
次に、再帰探索部２７２は、全体トポロジ一時管理ＤＢ２５１に対し、前述の選択ノードを探索の起点とし、接続関係を再帰的に探索して得られる部分トポロジを特定する（Ｓ２１０４）。この場合、分岐点リソースである分岐点ノードが除去されているので、各仮想ネットワークは、互いに非接続状態にある。このため、任意のノードを探索の起点とし、この起点と接続関係を有するノードを順次探索することで、探索で得られた一連のノードを部分トポロジ又は一つの仮想ネットワークのトポロジとして抽出することができる。また、一つの部分トポロジを抽出した後、他の任意のノードを新たに選択し、選択したノードを、新たな探索の起点とし、この起点と接続関係を有するノードを順次探索する処理を繰り返すことで、複数の部分トポロジ又は複数の仮想ネットワークのトポロジを抽出することができる。部分トポロジの構成要素には、探索して得られた一連のノード、一連のエッジを含む。探索方法には、幅優先探索、深さ優先探索など、適宜の手法を用いればよい。
【０１８１】
そして、部分トポロジ特定部２７３は、特定した部分トポロジについて、テナントトポロジ識別子１１１１を生成して付与し、テナントトポロジ１１０１として保持する（Ｓ２１０５）。本実施例においては、テナントトポロジ識別子は、１から順次増加した値とするが、テナントトポロジを一意に特定できる識別子を付与できるならば適宜の方法を用いてもよい。
【０１８２】
部分トポロジ特定部２７３は、上記の特定したテナントトポロジを構成する一連のノードと一連のエッジを、全体トポロジ一時管理ＤＢ２５１から除去する（Ｓ２１０６）。
【０１８３】
最後に、再帰探索部２７２は、全体トポロジ一時管理ＤＢ２５１にノードが存在するかどうかを判定する（Ｓ２１０７）。全体トポロジ一時管理ＤＢ２５１に１つ以上ノードが残っていれば、それらノードは未探索であり、未探索のテナントの構成要素であるため、再帰探索部２７２は、ステップＳ２１０３に移り、残りのテナントトポロジを全て特定する。他方、全体トポロジ一時管理ＤＢ２５１にノードが残っていなければ、再帰探索部２７２は、本フローを終了する。以上が、テナントトポロジ探索処理Ｓ１７０４のフローである。
【０１８４】
なお、第三実施例に示すように、分岐点ノードを全体トポロジから除去するのではなく、テナントトポロジ探索の過程において、分岐点ノードを探索しないような処理を行ってもよい。
【０１８５】
また、現実的には、いかなる利用者にも利用されていない仮想リソース（すなわち未使用リソース）が存在する場合があり、この条件下で上述の処理を適用した場合、未使用リソースもテナントトポロジのひとつとして誤認識されてしまう。
【０１８６】
そこで、未使用の仮想リソースを除去し、未使用の仮想リソースをテナントトポロジとして扱わないようにするに際して、テナントに関連する仮想リソース群を特定するために、テナント探索部２５４を拡張する方法がいくつか考えられる。
【０１８７】
第一に、テナント識別子と何らかの仮想リソースの対応関係を保持するテーブルを有し、そのテーブルに保持された対応関係に従って前述のグラフ探索手法を適用し、残りの仮想リソースについても利用テナントを特定する方法である。例えば、仮想ＬＡＮのノードとテナント名を対応付けるテーブルを利用し、全体トポロジ内にある前記仮想ＬＡＮノードを起点とし、接続するノードを再帰的に取得し、取得したノード群を同一のテナント群とみなし、いずれのテナントにも属しない仮想リソースを未使用リソースとみなす方法である。
【０１８８】
第二に、サーバと仮想ＬＡＮの接続関係の設定情報を取得し、探索して取得した部分トポロジがサーバに接続しない場合に、その部分トポロジに属する仮想リソース群を未使用であるみなす方法である。データセンタなど、物理サーバを含む環境においては、テナントトポロジにサービスを提供するためのサーバが存在すると仮定できる場合には、この方法が有効である。
【０１８９】
第三に、取得した部分トポロジのノード数が一定数以下の場合に、その部分トポロジに属する仮想リソース群を未使用であるみなす方法である。この方法は、未使用リソースが他の仮想リソースと接続せずに孤立して存在すると仮定できる場合に有効である。この場合、ひとつまたは少数の未使用リソースの組み合わせとして部分トポロジが形成されるため、使用リソースから構成される部分トポロジに対して構成ノード数が小さくなると想定できるため、前述の方法を適用できる。なお、上記の方法は排他ではなく、組み合わせて用いてもよい。
【０１９０】
図２２は、これまでに説明したトポロジ生成処理によって生成されるトポロジの例を示す図である。図２２において、コンフィグにより生成されたノードはＮ２２０１〜Ｎ２２０７であり、生成されたエッジはＥ２２１１〜Ｅ２２１５である。ノードＮ１はＮ２２０１、Ｎ２２０７であり、ノードＮ２はＮ２２０２、Ｎ２２０６であり、ノードＮ３はＮ２２０３、Ｎ２２０５である。エッジＥ１はＥ２２１１、Ｅ２２１５であり、ノードタイプＮ１とＮ２のノードを接続している。エッジＥ２はＥ２２１２、Ｅ２２１４であり、ノードタイプＮ２とＮ３のノードを接続している。エッジＥ３はＥ２２１３であり、ノードタイプＮ３の２ノードを接続している。
【０１９１】
図２３は、トポロジ生成画面の例である。図２３において、トポロジ生成画面２３０１は、コンソール１１０に表示される。トポロジ生成画面２３０１は、例えば、トポロジ表示タブ２３０２とパターン一覧タブ２３０３を含む。
【０１９２】
トポロジ表示タブ２３０２内では、トポロジを表示するための一連の項目を表示する。例えば、このタブは、生成トポロジ表示エリア２３１１、表示制御エリア２３１２、テナント一覧エリア２３１３、テナントリソース一覧エリア２３１４、リソース検索エリア２３１５を含む。
【０１９３】
パターン一覧タブ２３０３では、ネットワーク機器の各機種に対応するノードパターン管理テーブル２４１、エッジパターン管理テーブル２４２を表示する。この画面上では、例えば、新規機種についてのノードパターン管理テーブルやエッジパターン管理テーブルを追加する。
【０１９４】
機器一覧表示タブ２３０４では、ネットワーク機器一覧を表示する。ネットワーク機器一覧の表示例として、ネットワーク機器管理テーブル２０４がある。また、このタブの中では、ネットワーク機器一覧に機器情報を登録するためのボタン、ネットワーク機器からのコンフィグ収集を実行するためのボタン、収集したコンフィグからの論理トポロジ情報の生成を実行するためのボタン、生成したトポロジを画面上に表示するためのボタンを有する。
【０１９５】
生成トポロジ表示エリア２３１１では、視覚化した論理トポロジ情報２３２１を表示する。本実施例においては、ノードタイプに応じたノード形状、エッジタイプに応じたエッジ形状を定義し、設定情報から生成した論理トポロジ情報を視覚化している。視覚化する情報は、後述の表示制御エリア２３１２、テナント一覧エリア２３１３、テナントリソースエリア２３１４、リソース検索エリア２３１５における操作に基づいて変化する。また、生成トポロジ表示エリア２３１１のノードをインタラクティブに選択し、そのノードが所属するテナントをテナント一覧２３１３において強調表示してもよい。なお、視覚化にあたっては、仮想インタフェース（ノードＮ２）の表示を省略し、仮想ＬＡＮ（ノードＮ１）と仮想ルータ（ノードＮ３）を直接接続する表現方法で表示するなど、適宜の方法をとってもよい。
【０１９６】
表示制御エリア２３１２は、生成トポロジ表示エリア２３１１に表示する情報を指定するボタンを有する。例えば、論理ネットワークの表示方法（２３３１）として、テナント分岐点を含む全ての仮想リソースからなる仮想ネットワークの表示、テナント分岐点を除いた仮想リソースからなる仮想ネットワークの表示、特定のテナントについての仮想ネットワークの表示、あるいは仮想リソースを表示せず後述の物理ネットワークのみの表示を含む。
【０１９７】
あるいは、例えば、リソース識別子の表示方法（２３３２）として、生成トポロジエリア２３１１のノード、エッジに、タイプ内識別子を表示する／しない方法が考えられる。また、例えば、前述の未使用リソースに関する表示方法（２３３３）として、未使用リソースを表示する／しない方法が挙げられる。未使用リソースの特定方法の例は前述のとおりである。他にも、例えば、物理機器情報の表示方法（２３３４）として、ノードが持つ機器識別子を利用し、同一の機器識別子を持つノードをグループ化し、仮想リソースと物理機器の対応関係を明示的に示す方法が考えられる。
【０１９８】
テナント一覧エリア２３１３は、テナントの一覧を表示する。本実施例では、テナント識別子とテナント名を表形式で表示している。ひとつのテナントの行を選択した時に、生成トポロジ２３１１のトポロジから、そのテナントに属するトポロジを強調表示してもよい。なお、設定情報からは、テナント名を得られないことが多いが、このＧＵＩ画面を通じて、ユーザが手動で入力する方法や、テナント名一覧の外部ファイルを入力する方法などの適宜の方法をとる。ユーザが手動で入力する場合は、テナント名が入力済みテナントを生成トポロジ表示エリア２３１１から逐次除去するといった表示方法をとってもよい。
【０１９９】
テナントリソースエリア２３１４は、特定のテナントが持つ仮想リソース（ノード）を一覧にするエリアである。本実施例では、ノードタイプ、機器識別子、タイプ内識別子を表形式で表示し、ノードの一覧を表示する。
【０２００】
リソース検索エリア２３１５は、リソースの検索を行うエリアである。テナント名、ノードタイプ、機器識別子、タイプ内識別子に関する情報をキーにし、このキーに該当するノードを検索し、検索結果の画面に表示する。例えば、表形式として、ヒットしたノードが所属するテナントの識別子と、ヒットしたノードのノードタイプ、機器識別子、あるいはタイプ内識別子を表示してもよい。
【０２０１】
図２４に、テナント分岐点指定処理のフローを示す。図２４において、この処理では、ユーザがコンソール１１０を介して分岐点ノードに関する情報を管理サーバ１０９に入力し、管理サーバ１０９がその分岐点ノードの情報を分岐点管理テーブル２５４に保存する。
【０２０２】
本実施例において、ユーザが分岐点ノードを入力する方法として、２通りの方法が挙げられる。
【０２０３】
第一に、管理要求受付部２０３に、分岐点ノード指定要求を入力する方法である。この場合において、ユーザは、分岐点ノード指定要求に分岐点ノードのノードタイプ、機器識別子、タイプ内識別子の３つのパラメータを含めて入力する（Ｓ２４０１）。
【０２０４】
次に、管理要求受付部２０３は、前記３つのパラメータを受け取り、要求解析部に渡す（Ｓ２４０２）。
【０２０５】
そして、要求解析部２６１は、受け取った要求に付加された３つのパラメータを基に、全体トポロジ一時管理ＤＢ２５１内の該当ノードを特定し、ノード識別子６０１を取得するとともに、適宜の方法でテナント分岐点識別子１１１１を生成し付与する（Ｓ２４０５）。
【０２０６】
最後に、分岐点登録部２６３は、取得したノード識別子６０１とテナント分岐点識別子１１１１のペアを分岐点管理テーブル２５４に登録する（Ｓ２４０６）。
【０２０７】
第二に、ＧＵＩ表示制御部２２１に対し、生成トポロジエリア２３１１に表示されたノードをＧＵＩ画面上で指定する方法である。
【０２０８】
この場合において、ＧＵＩ表示制御部２２１は、指示されたノードについて、ノードタイプ、機器識別子、タイプ内識別子の３つのパラメータを取得する（Ｓ２４０３）。
【０２０９】
次に、ＧＵＩ表示制御部２２１は、前記３つのパラメータを受け取り、要求解析部に渡す（Ｓ２４０４）。以後の処理は、Ｓ２４０５、Ｓ２４０６と同様である。以上が、テナント分岐点指定処理フローである。
【０２１０】
図２５に、管理サーバ１０９の装置構成の例を示す。図２５において、管理サーバ１０９は、ＣＰＵ２５０１、メモリ２５０２、補助記憶装置２５０３を備える一般的な計算機を用いて実現することができる。さらに、各装置を構成するそれぞれの機能は、ＣＰＵが補助記憶装置に格納されているプログラムを実行することにより、上記計算機上に具現化される。各プログラムは、あらかじめ、上記計算機内の補助記憶装置２５０３に格納されていてもよい。あるいは、各プログラムは、必要なときにＬＡＮインタフェース２５０４やメディアインタフェース２５０５を経由して上記計算機が利用可能な媒体を介し、他の装置から上記記憶装置に導入されてもよい。媒体とは、たとえば、通信媒体（すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号）、またはメディアインタフェース２５０５に着脱可能な外部記憶媒体２５０７を指す。なお、管理サーバ１０９は、入出力装置２５０６を介して管理サーバを操作するコンソール１１０に接続してもよい。
【０２１１】
この際、補助記憶装置１６０３は、ネットワーク１０１に接続される複数の物理機器（ファイアウォール１０２、ロードバランサ１０３、Ｌ３スイッチ等）に仮想的に構築される複数の仮想リソースを含む複数の仮想ネットワークの論理トポロジ情報であって、前記仮想ネットワーク全体の論理トポロジ情報を格納する記憶装置として機能する。ＣＰＵ２５０１は、仮想ネットワーク全体の論理トポロジ情報を管理すると共に、コンフィグ収集部２０１、トポロジ視覚化部２０２、管理受付部２０３、全体トポロジ生成部２０７、テナントトポロジ特定部２０８を構成するコントローラとして機能する。また、コンソール１１０は、コントローラ（ＣＰＵ２５０１）の制御対象であって、ＣＰＵ２５０１の指示による情報を表示する表示装置として機能する。
【０２１２】
この場合、ＣＰＵ２５０１は、例えば、分岐点リソースを基に、仮想ネットワーク全体の論理トポロジ情報を探索して、分岐点リソースを終端とする一連の仮想リソースを抽出し、抽出した一連の仮想リソースを部分ネットワークトポロジ又は一つの仮想ネットワークとして特定し、特定した部分ネットワークトポロジ又は一つの仮想ネットワークに関する情報の表示をコンソール１１０に指示し、各物理機器と複数の仮想ネットワークとの対応関係を示す情報の非表示をコンソール１１０に指示することができる。
【０２１３】
本実施例において、再帰探索部２７２は、任意の未探索の仮想リソースを探索の起点とし、分岐点リソースが除去された仮想ネットワーク全体の論理トポロジ情報の中から、起点となる仮想リソースと接続関係を有する仮想リソースを再帰的又は反復的に探索する仮想ネットワーク探索処理を実行する。部分トポロジ特定部２７３は、再帰探索部２７２の探索によって得られた一連の仮想リソースを一つの部分ネットワークトポロジとして特定する。
【０２１４】
この際、再帰探索部２７２は、部分トポロジ特定部２７３が、一連の仮想リソースを一つの部分ネットワークトポロジとして特定したことを条件に、任意の未探索の仮想リソースとは異なる仮想リソースであって、任意の未探索の仮想リソースを、新たな探索の起点とし、仮想ネットワーク全体の仮想リソースが全て探索済みになるまで、仮想ネットワーク探索処理を実行する。部分トポロジ特定部２７３は、再帰探索部２７２の探索によって一連の仮想リソースが得られる毎に、当該一連の仮想リソースをそれぞれ一つの部分ネットワークトポロジとして特定する。
【０２１５】
本実施例においては、最初に設定情報から全体の論理トポロジを生成し、次に全体の論理トポロジの中から個々のテナントトポロジを特定した。この方法は必ずしも必須ではなく、設定情報から直接個々の論理トポロジを特定してもよい。具体的には、設定情報にある何らかの仮想リソースの情報を抽出し、その仮想リソースに接続する仮想リソースを再帰的に探索し、探索した仮想リソースの集合をひとつのテナントトポロジとみなす方法である。
【０２１６】
本実施例においては、３種類のノードをＮ１、Ｎ２、Ｎ３を定義し、それぞれのタイプ内識別子として、仮想ＬＡＮ識別子、仮想インタフェース識別子、仮想ルータ識別子を付与した。一方、データセンタ１００に構築されるシステムの構成によっては、以下のように、ノードに情報を追加しても有用である。すなわち、ノード管理テーブル２４３を以下のように拡張する方法も有用である。
【０２１７】
まず、仮想的でない物理的な機能要素を含める方法である。この方法では、例えば、物理ＬＡＮの識別子として仮想ＬＡＮの０番（仮想ＬＡＮとして設定できない番号）を割り当てる、あるいは、物理ルータの識別子として仮想ルータ番号の０番を割り当てるなどのように、物理的なリソースを仮想リソースのひとつとしてみなす。この方法は、例えば、仮想ＬＡＮに加えて物理ＬＡＮ、仮想インタフェースに加えて物理インタフェース、仮想ルータに加えて物理ルータも、ネットワーク通信のためのリソースとして機能するシステムにおいて有用である。
【０２１８】
次に、仮想ＬＡＮにＩＰセグメント情報を付加する方法である。この方法では、ひとつのＶＬＡＮが複数のＩＰセグメントを持ち、ＶＬＡＮ内においてもルーティングをする場合などに有効である。この場合では、Ｎ１のタイプ内識別子として、仮想ＬＡＮ番号に加えて、仮想ＬＡＮのＩＰセグメント情報を付加し、Ｎ２のタイプ内識別子として、仮想インタフェース番号に加えて、インタフェースのＩＰアドレスを付加する。ＩＰセグメントの情報はコンフィグに記載されているため、この情報を抽出するようにノードパターン管理テーブル２４１を拡張するだけでよい。
【０２１９】
そして、ＬＡＮの物理的な結線情報を加味する方法である。この方法では、新たにノード、エッジの体系を定義しなおす必要があり、それらはノードＮ１、Ｎ２、Ｎ３、エッジＥ０、Ｅ１、Ｅ２、Ｅ３である。ノードＮ１は物理インタフェースを表し、ノードＮ２、Ｎ３は実施例と同様に、それぞれ、仮想インタフェース、仮想ルータである。エッジＥ０は物理インタフェース間が物理リンクで接続されていることを意味し、エッジＥ１は物理インタフェースと仮想インタフェースとの設定関係を意味し、エッジＥ２、Ｅ３は実施例と同様である。再定義するノードタイプＮ１が持つべき要素は３つあり、それらはノードタイプ、機器識別子と、タイプ内識別子として物理インタフェース識別子と仮想ＬＡＮ識別子のペアである。２つの物理機器がリンクで結ばれている場合は、ふたつのノードＮ１がエッジＥ０で結ばれる。物理インタフェースに仮想ＬＡＮが割り当てられている場合は、ノードＮ１とＮ２をエッジＥ０で結ぶ。この方法は、物理結線情報が入手できる場合に、仮想ＬＡＮの詳細なトポロジを把握する際に有用である。
【０２２０】
最後に、サーバ、ストレージの情報を含める方法である。サーバおよびストレージも、本実施例で定義したノードＮ１、Ｎ２、Ｎ３、エッジＥ１、Ｅ２、Ｅ３を用いて表現できる。サーバ機器に関する情報として、ＶＭはノードＮ３、ｖＮＩＣ、ｖＨＢＡはノードＮ２に対応する。ストレージ機器やＳＡＮスイッチ機器に関する情報として、ＬＵおよびＶＳＡＮがノードＮ３、ＶＳＡＮインタフェースやＮＰＩＶによって生成される仮想インタフェースがノードＮ２、Ｚｏｎｉｎｇによって生成されるゾーンがノードＮ１に対応する。これら機能要素の関連付けは、同様にエッジとして表現される。
【０２２１】
また、本実施例で定義したノードＮ１、Ｎ２、Ｎ３、エッジＥ１、Ｅ２、Ｅ３とは異なるノードとエッジを定義し、それぞれのノードとエッジをサーバ、ストレージの仮想化技術に対応させてもよい。
【０２２２】
ネットワーク機器のコンフィグは、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）で収集されるＭＩＢ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ）でもよい。この方法をとる場合、ネットワーク機器管理テーブル２０４に必要な情報は、ＳＮＭＰのコミュニティ名などである。また、ノードパターン管理テーブル２４１の生成パターン、エッジパターン管理テーブル２４２の接続パターンには、ＭＩＢの形式にしたがうように改変する必要がある。
【０２２３】
本実施例によれば、物理機器に仮想的に構築される複数の仮想リソースを含む複数の仮想ネットワークの論理トポロジのうち、各仮想ネットワークの論理トポロジを特定することができる。
【０２２４】
また、本実施例によれば、以下の効果を奏することができる。複数の仮想化技術を用いて構築される複数のテナントの仮想ネットワークが単一の物理インフラを共有する場合においても、個々のテナントトポロジを迅速かつ正確に把握できる。また、生成したトポロジ情報を視覚化することにより、論理トポロジ図作成における個々人のスキルの差を解消でき、論理トポロジ図の品質を一定に保てる。また、論理トポロジの視覚化によって、コンフィグの正しさを直感的に検証できるようになる。また、テナント間で誤接続がないことを自動的に保証する自動検証機能を持たせることも可能である。例えば、各テナントトポロジを特定した後、さらに、再帰探索処理を実行することで、テナント間が誤接続されているか否かを検証することができる。そして、仮想リソース単位でのトラフィック流量の監視などが行われる環境では、計測データとテナントトポロジを対応付けることで、テナント単位での監視が可能である。あるいは、テナントトポロジの構造的な複雑度を計算することで、テナントトポロジの設計スキルを客観的に評価できる。
【０２２５】
（第二実施例）
第一実施例においては、テナントの分岐点となる仮想リソース（分岐点リソース）の有無を判定した。これに対して、第二実施例は、分岐点が無いことが何らかの外部要因によって既知の場合、分岐点リソースの有無を判定する処理を省略したものであり、他の構成は第一実施例と同一である。
【０２２６】
基本的な構成は、第一実施例において説明したとおりであるが、第二実施例では、第一実施例と比較して、テナント分岐点決定部２５３、分岐点管理テーブル２５４、分岐点ノード除去部２７１が不要となる。
【０２２７】
したがって、テナント分岐点決定処理Ｓ１７０２が不要となり、テナントトポロジ探索処理（Ｓ１７０４）における分岐点ノード除去処理Ｓ２１０１、Ｓ２１０２が不要となる。
【０２２８】
以上のように、本実施例は、第一実施例に対して一部の構成要素を取り除くことで、実現できる。したがって、本実施例によれば、分岐点リソースが無いことが既知の場合には、分岐点リソースに関する処理を省き、簡略化されたテナントトポロジ特定処理が可能となる。
【０２２９】
（第三実施例）
第一実施例においては、テナントトポロジ探索時において、探索前の事前処理として分岐点リソースを全体トポロジ一時管理ＤＢ２５１から除去したが、他の実現例も考えられる。すなわち、探索前の事前処理でなく、探索中の事中処理として、適宜分岐点リソースを探索しないように、探索ノードを選択することで、分岐点リソースを含まない範囲で探索できた部分グラフを抽出し、抽出した部分グラフをテナントトポロジとして特定して、管理する方法である。
【０２３０】
図２６に、本方法を実施する管理サーバ１０９の構成例を示す。図２６において、管理サーバ１０９は、テナントトポロジ探索部において、分岐点ノード判定部２６０１と探索済ノードテーブル２６１１を保持する。
【０２３１】
分岐点ノード判定部２６０１は、探索処理において、適宜選択ノードが分岐点リソースを表す分岐点ノードと一致するか否かの判定を行う。
【０２３２】
探索済ノードテーブル２６１１は、再帰探索処理において探索済みのノードの一覧を一時的に管理するテーブルである。
【０２３３】
図２７に、第三の実施例におけるテナントトポロジ探索処理Ｓ１７０４のフローを示す。図２７において、まず、再帰探索部２７２は、探索済みノードテーブル２６１１をクリアする（Ｓ２７０１）。
【０２３４】
次に、再帰探索部２７２は、全体トポロジ一時管理ＤＢ２５１内ノード管理テーブルから、分岐点ノード判定が不一致である任意のノードを１つ選択し、探索の起点ノードとする（Ｓ２７０２）。
【０２３５】
そして、再帰探索部２７２は、選択した起点ノードを探索済ノードテーブル２６１１に追加する（Ｓ２７０３）。
【０２３６】
以下、再帰探索部２７２は、ひとつのテナントトポロジに対する探索処理を行う。まず、再帰探索部２７２は、探索済みノード群のいずれかの隣接ノードについて、未探索ノードのうち分岐点ノード判定で不一致となるノードが存在するかどうかを判定する（Ｓ２７０４）。再帰探索部２７２は、存在すれば以下の処理を行い、存在しなければステップＳ２７０７に移る。探索済みノードとは、探索済ノードテーブルに２６１１に保持されているノードである。また、隣接ノードとは、あるノードに対してエッジで接続する対向ノードのことを指し、エッジ管理テーブル２４４を参照することで特定可能である。なお、分岐点ノード判定処理の詳細は図２８に示す。
【０２３７】
次に、再帰探索部２７２は、探索済ノード群の隣接ノードの中で、未探索かつ分岐点ノード判定に不一致のノードをひとつ選択する（Ｓ２７０５）。
【０２３８】
そして、再帰探索部２７２は、選択したノードを探索済ノードテーブルに追加する（Ｓ２７０６）。この後、再帰探索部２７２は、Ｓ２７０４の処理に移ることで、全ての相互に接続するノードが探索されるまでこの処理を繰り返す。
【０２３９】
起点ノードに対して、接続関係を辿って到達可能なノードを全て特定した後、部分トポロジ特定部２７３は、特定した探索済みノードテーブル２７２内ノード群と、これらノード群に接続する全てのエッジを合わせて、テナントを構成する部分トポロジとみなし、全体トポロジ一時管理ＤＢ２５１から除去する（Ｓ２７０７）。
【０２４０】
そして、部分トポロジ特定部２７３は、前述の特定した部分トポロジについて、テナントトポロジ識別子１１１１を生成し、生成したテナントトポロジ識別子１１１１を特定した部分トポロジに付与し、特定した部分トポロジをテナントトポロジ１１０１として保存する（Ｓ２７０８）。本実施例においては、識別子の値は、１から順次増加した値とするが、テナントトポロジを一意に特定できる識別子であればいかなる識別子を付与してもよい。
【０２４１】
最後に、部分トポロジ特定部２７３は、全体トポロジ一時管理ＤＢ２５１に分岐点ノード判定に不一致のノードが存在するかどうかを判定する（Ｓ２７０９）。部分トポロジ特定部２７３は、存在するならばステップＳ２７０１に移り、未特定のテナントを特定する処理を行い、存在しないならば、本フローを終了する。以上が、第三実施例におけるテナントトポロジ探索処理１７０４である。
【０２４２】
図２８に、分岐点ノード判別処理のフローを示す。図２８において、この処理は、分岐点ノード判定部２６０１が、判定対象のノードが、分岐点ノードかどうかを判定する。
【０２４３】
最初に、分岐点ノード判別部２６０１は、判定対象ノードのノード識別子を受け取る（Ｓ２８０１）。
【０２４４】
次に、分岐点ノード判別部２６０１は、判定対象ノードのノード識別子が分岐点管理テーブル２５４に存在するかどうかを確認する（Ｓ２８０２）。
【０２４５】
分岐点ノード判別部２６０１は、判定対象ノードが、分岐点管理テーブル２５４に存在するか否かを判定し（Ｓ２８０３）、判定対象ノードが、分岐点管理テーブル２５４に存在すると判定した場合、判定対象ノードは、分岐点ノードに一致するという判定を返して終了する（Ｓ２８０４）。
【０２４６】
一方、分岐点ノード判別部２６０１は、判定対象ノードが、分岐点管理テーブルに存在しないと判定した場合、判定対象ノードは、分岐点ノードに不一致という判定を返して終了する（Ｓ２８０５）。以上が、分岐点ノード判別処理である。
【０２４７】
本実施例において、再帰探索部２７２は、任意の未探索の仮想リソースを探索の起点とし、仮想ネットワーク全体の論理トポロジ情報の中から、起点となる仮想リソースと接続関係を有する仮想リソースであって、分岐点リソースとは異なる仮想リソースを再帰的又は反復的に探索する仮想ネットワーク探索処理を実行する。部分トポロジ特定部２７３は、再帰探索部２７２の探索によって得られた一連の仮想リソースを一つの部分ネットワークトポロジとして特定する。
【０２４８】
この際、再帰探索部２７２は、部分トポロジ特定部２７３が、一連の仮想リソースを一つの部分ネットワークトポロジとして特定したことを条件に、任意の未探索の仮想リソースとは異なる仮想リソースであって、任意の未探索の仮想リソースを、新たな探索の起点とし、仮想ネットワーク全体の仮想リソースのうち、分岐点リソースとは異なる仮想リソースが全て探索済みになるまで、仮想ネットワーク探索処理を実行する。部分トポロジ特定部２７３は、再帰探索部２７２の探索によって一連の仮想リソースが得られる毎に、当該一連の仮想リソースをそれぞれ一つの部分ネットワークトポロジとして特定する。
【０２４９】
本実施例によれば、仮想リソースを探索する際に、分岐点リソースを探索対象から外したので、テナント分岐点決定処理や分岐点ノード除去処理不要となり、第一実施例よりも、テナントトポロジ特定処理を簡略化することができる。
【０２５０】
（第四実施例）
これまでの実施例においては、テナントトポロジを特定する例を述べた。本実施例では、さらに、特定したテナントトポロジから、類似の構造を持つテナントトポロジを特定し、グループ化し管理する例を述べる。類似のテナントトポロジを特定することは、例えば、典型的なテナントトポロジの傾向を定量的に把握することなどに有効である。
【０２５１】
図２９に、類似テナントトポロジの特定を実現する管理サーバ１０９の構成例を示す。図２９において、本実施例では、第１実施例で記載した管理サーバ１０９に、類似テナントトポロジＤＢ２９０１と類似テナントトポロジ特定部２９０２が追加される。
【０２５２】
類似テナントトポロジＤＢ２９０１は、類似テナント特定部２９０２が特定した類似テナント情報を保持する。類似テナントトポロジＤＢ２９０１の構成は、図３０に示すとおりであり、基本的には、テナントトポロジＤＢ２０５と同じであるが、グループ識別子３０１１を新たに有する点が異なる。グループ識別子が同一のテナントトポロジは互いに類似であることを意味する。
【０２５３】
類似テナントトポロジ特定部２９０２は、テナントトポロジＤＢ２０６から類似トポロジのテナントを特定し、類似テナントトポロジＤＢ２９０１に保存する。類似のテナントトポロジを特定するためには、テナントトポロジ間の類似度を定量的に計算し、相互に類似度が高いテナントトポロジの集合を特定する。そのために、類似テナントトポロジ特定部２９０２の要素として、テナントトポロジ一時管理ＤＢ２９１１、テナントトポロジ取得部２９１２、トポロジ間類似度計算部２９１３、トポロジ間類似度テーブル２９１４、類似度閾値管理テーブル２９１５、類似トポロジ抽出部２９１６を有する。
【０２５４】
テナントトポロジ一時管理ＤＢ２９１１は、テナントトポロジを一時的に保持するＤＢである。構成は類似テナントトポロジＤＢ２０９１と同じである。
【０２５５】
テナントトポロジ取得部２９１２は、テナントトポロジＤＢ２０６からテナントトポロジの一覧を取得し、テナントトポロジ一時管理ＤＢ２９１１に保存する。
【０２５６】
トポロジ間類似度計算部２９１３は、テナントトポロジ間の類似度を計算する機能部である。トポロジ間類似度計算部２９１３は、テナントトポロジの一覧を入力とし、類似度行列（ｓｉｍｉｌａｒｉｔｙ  ｍａｔｒｉｘ）を計算しトポロジ間類似度テーブル２９１４に保存する。類似度行列の要素（ｅｌｅｍｅｎｔ）は、ふたつのテナントトポロジ間の類似度である。
【０２５７】
トポロジ間類似度テーブル２９１４は、テナントトポロジ間の類似度を保持する。このテーブルの構成例を図３１に示す。
【０２５８】
図３１において、トポロジ間類似度テーブル２９１４は、テナントトポロジ間の類似度行列を示すテーブルであって、行のテナントトポロジ３１０１〜３１０３、・・・と、列のテナントトポロジ３２０１〜３２０３、・・・とから構成される。行・列ともに、テナントトポロジを表す。例えば、ｉ行は、ｉ番目のテナントトポロジを表し、ｊ列は、ｊ番目のテナントトポロジを表す。ｉ行ｊ列の要素は、ｉ番目とｊ番目のテナントトポロジ間の類似度を表す。類似度が０の場合は、両者のトポロジが同じ構造を持っていることを意味し、数字が高くなるにつれて両者のトポロジの違いが大きいことを意味する。この類似度は、後述のグラフ編集距離（ｇｒａｐｈ  ｅｄｉｔ  ｄｉｓｔａｎｃｅ）などによって計算される。なお、このテーブル構成は必須ではなく、任意のテナントトポロジ間の類似度を保持すれば、適宜の形式をとってよい。
【０２５９】
類似度閾値管理テーブル２９１５は、類似トポロジを判断するための閾値（基準値）を保持する。このテーブルの構成は、後述するクラスター分析手法に依存するが、数字をひとつだけ保持する場合が多い。この閾値は、例えば、管理要求受付部２０３介してユーザが入力してもよく、あるいは、事前に定数を保持してもよい。
【０２６０】
類似トポロジ抽出部２９１６は、相互に高い類似度を持つテナントトポロジの集合を特定する機能部である。トポロジ間類似度テーブル２９１４を入力とし、類似のテナントトポロジの集合を算出し出力する。
【０２６１】
図３２に、類似テナントトポロジ特定処理のフローを示す。図３２において、最初に、テナントトポロジ取得部２９１２は、テナントトポロジＤＢ２０６からテナントトポロジの一覧を取得し、テナントトポロジ一時管理ＤＢ２９１１に保存する（Ｓ３２０１）。この時点では、テナントトポロジ一時管理ＤＢ２９１１内のグループ識別子３０１１に値は入力されていない。
【０２６２】
次に、トポロジ間類似度計算部２９１３は、全ての組のトポロジ間の類似度を計算し、
類似度行列としてトポロジ間類似度テーブル２９１４に保存する（Ｓ３２０２）。テナントトポロジ間の類似度は、既存の手法を用いて計算可能な、グラフ編集距離（ｇｒａｐｈ  ｅｄｉｔ  ｄｉｓｔａｎｃｅ）として算出する。
【０２６３】
そして、類似トポロジ抽出部２９１６は、トポロジ間類似テーブル２９１４の類似度行列と類似度閾値管理テーブル２９１５を入力し、既存のクラスター分析手法を適用し、類似のテナントトポロジのグループを抽出して出力する（Ｓ３２０３）。
【０２６４】
次に、類似トポロジ抽出部２９１６は、テナントトポロジ一時管理ＤＢ２９１１に対して、同一グループ内の各テナントトポロジについて、グループ識別子３０１１に同一の値を付与する（Ｓ３２０４）。
【０２６５】
最後に、類似トポロジ抽出部２９１６は、テナントトポロジ一時管理 ＤＢ２９１１を類似テナントトポロジＤＢ２９０１に保存し（Ｓ３２０５）、このルーチンでの処理を終了する。以上が、類似テナントトポロジ特定処理のフローである。
【０２６６】
処理Ｓ３０２３において、ふたつグラフ間のグラフ編集距離とは、一方のグラフに対してノード・エッジの追加・削除のグラフ操作を行い、他方のグラフと同型（ｉｓｏｍｏｒｐｈｉｃ）にする際の、最小の操作回数である。同型とは、ふたつのグラフが同じ構造を持つことである。すなわち、一方のグラフのノードとエッジの接続関係を保ちつつ、両者のグラフの各ノードが一対一にマッピングできることである。
【０２６７】
ふたつのグラフ間の編集距離は、既存の手法を用いて計算可能である。ここで、類似テナントトポロジの特定においては、ノード間のマッピングとして、両者のノードのノードタイプが一致する場合にのみマッピングしうる方法をとる。この方法においては、例えば、ふたつの仮想ＬＡＮノード間でマッピングは許可するが、仮想ＬＡＮノードと仮想ルータノード間でのマッピングは許可しない。
【０２６８】
処理Ｓ３２０４において、類似度行列から類似成分の特定については、既存のクラスター分析（ｃｌｕｓｔｅｒ  ａｎａｌｙｓｉｓ）手法を用いればよい。クラスター分析手法の例には、階層（ｈｉｅｒａｒｃｈｉｃａｌ）クラスタリング、Ｋ−ｍｅａｎｓ法などがある。これらの手法は、相互に類似する成分をグループ化し、グループＩＤを与えて出力する。入力した全ての成分は、いずれかのグループに所属する。これら手法が生成するグループＩＤを、グループ識別子３０１１として与える。
【０２６９】
クラスター分析の一例は次の通りである。最初に、類似度閾値管理テーブル２９１５から閾値を取得する。この閾値の値をＴとする。次に、トポロジ間類似度テーブル２９１４を参照し、相互に類似度がＴ以下の一連のテナントトポロジを抽出する。例えば、Ｔ＝０の時は、相互に完全一致するグラフの集合が抽出される。次に、抽出した一連のテナントトポロジに対し、グループ識別子３０１１を生成し付与する。グループ識別子は、抽出したグループを識別できれば、いかなる値を用いてもよい。そして、この抽出処理をすべてのテナントトポロジに対して適用されるまで繰り返す。これらの操作により、類似のテナントトポロジを抽出できる。以上の構成により、類似テナントトポロジの特定が可能である。
【０２７０】
上記の実施例においては、グラフ編集距離を類似度として用いたが、グラフ同型の是非を類似度として用いてもよい。すなわち、例えば、ふたつのグラフが同型の場合は類似度を１とし、同型で無い場合は類似度を０としてとってもよい。この類似度は既存の手法を用いて計算可能である。
【０２７１】
なお、グラフ同型判定におけるノード間マッピングにおいて、本実施例においては、ノードタイプが一致する場合にマッピングを許可したが、適宜の方法をとってもよい。例えば、マッピングの際に、ノードタイプと機器識別子が一致する場合を許可するなどの方法をとってもよい。
【０２７２】
本実施例によれば、各テナントトポロジのうち、類似したテナントトポロジを特定することができる。
【０２７３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２７４】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【符号の説明】
【０２７５】
１００  データセンタ、  １０１  ネットワーク、  １０２  ファイアウォール、  １０３  ロードバランサ、  １０４  Ｌ３スイッチ、  １０５ａ、１０５ｂ  Ｌ２スイッチ、  １０６ａ、１０６ｂ、１０６ｃ、１０６ｄ  サーバ、  １０７ａ、１０７ｂ  ＦＣスイッチ、  １０８ａ、１０８ｂ  ストレージ、  １０９  管理サーバ、  １１０  コンソール、  ２０１  コンフィグ収集部、  ２０２  トポロジ視覚化部、  ２０３  管理要求受付部、  ２０４  ネットワーク機器管理テーブル、  ２０５  全体トポロジＤＢ、  ２０６  テナントトポロジＤＢ、  ２０７  全体トポロジ生成部、  ２０８  テナントトポロジ特定部、  ２１１  ネットワーク機器情報登録部、  ２１２  コンフィグ収集部、  ２２１  ＧＵＩ表示制御部、  ２３１  論理トポロジ生成・管理テーブル、  ２３２  ノードパターン登録部、  ２３３  エッジパターン登録部、  ２３４  ノード生成部
２３５  エッジ生成部、  ２３６  論理トポロジ構築部、  ２４１ａ、２４１ｂ、２４１ｃ  ノードパターン管理テーブル、  ２４２ａ、２４２ｂ、２４２ｃ  エッジパターン管理テーブル、  ２４３  ノード管理テーブル、  ２４４  エッジ管理テーブル、  ２５１  全体トポロジ一時管理ＤＢ、  ２５２  テナントトポロジ管理ＤＢ、  ２５３  テナント分岐点決定部、  ２５４  分岐点管理テーブル、  ２５５  テナントトポロジ探索部、  ２６１  要求解析部、  ２６２  分岐点推定部、  ２６３  分岐点登録部、  ２７１  分岐点ノード除去部、  ２７２  再帰探索部、  ２７３  部分トポロジ特定部、  ８０１  ノードパターンテーブル呼出部、  ８０２  ノードパターン抽出部、  ８０３  ノードパラメータ抽出部、  ８０４  ノード情報生成部、  ８０５  ノード識別子生成部、  ８０６  ノード情報登録部、  ９０１  エッジパターンテーブル呼出部、  ９０２  エッジパターン抽出部、  ９０３  エッジパラメータ抽出部、  ９０４  エッジ情報生成部、  ９０５  ノード検索部、  ９０６  エッジ識別子生成部、  ９０７  エッジ情報登録部、  ２３０１  論理トポロジ管理画面、  ２３０２  トポロジ表示タブ、  ２３０３  パターン一覧タブ、  ２３０４  機器一覧タブ、  ２３１１  トポロジ表示エリア、  ２３１２  トポロジ表示制御エリア、  ２３１３  テナント一覧エリア、  ２３１４  テナントリソースエリア、  ２３１５  リソース検索エリア、  ２３２１  生成トポロジ、  ２３２２  トポロジ表示実行ボタン、  ２３３１  表示ネットワーク指示サブエリア、  ２３３２  リソース識別子表示指示サブエリア、  ２３３３  未使用リソース表示指示サブエリア、  ２３３４  物理機器表示指示サブエリア。
【図１】
0005941703.tif 000002
【図２】
0005941703.tif 000003
【図３】
0005941703.tif 000004
【図４】
0005941703.tif 000005
【図５】
0005941703.tif 000006
【図６】
0005941703.tif 000007
【図７】
0005941703.tif 000008
【図８】
0005941703.tif 000009
【図９】
0005941703.tif 000010
【図１０】
0005941703.tif 000011
【図１１】
0005941703.tif 000012
【図１２】
0005941703.tif 000013
【図１３】
0005941703.tif 000014
【図１４】
0005941703.tif 000015
【図１５】
0005941703.tif 000016
【図１６】
0005941703.tif 000017
【図１７】
0005941703.tif 000018
【図１８】
0005941703.tif 000019
【図１９】
0005941703.tif 000020
【図２０】
0005941703.tif 000021
【図２１】
0005941703.tif 000022
【図２２】
0005941703.tif 000023
【図２３】
0005941703.tif 000024
【図２４】
0005941703.tif 000025
【図２５】
0005941703.tif 000026
【図２６】
0005941703.tif 000027
【図２７】
0005941703.tif 000028
【図２８】
0005941703.tif 000029
【図２９】
0005941703.tif 000030
【図３０】
0005941703.tif 000031
【図３１】
0005941703.tif 000032
【図３２】
0005941703.tif 000033