(57)【特許請求の範囲】
【請求項１】
アプリケーショントポロジ関係を探索するための方法であって、前記方法は、
少なくとも2セットのアプリケーションプログラミングインターフェースAPI呼び出し情報を収集するステップであって、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、前記API呼び出しに対応する仮想マシンの識別子、前記API呼び出しの発生時間、および前記API呼び出しのパケットフローの方向を含む、ステップと、
前記少なくとも2セットのAPI呼び出し情報を分析し、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているかどうかを決定するステップであって、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中のパケットフローの方向と前記第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、前記第1のAPI呼び出し情報中のAPI呼び出しの発生時間と前記第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含む、ステップと、
前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしていると決定したことに応答して、前記第1のAPI呼び出し情報によって示される第1の仮想マシンと前記第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定するステップと、
前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度が前記第2の条件を満たしている場合には、アプリケーショントポロジ関係が前記第1の仮想マシンと前記第2の仮想マシンとの間に存在していると決定するステップとを含む、方法。
【請求項２】
API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項1に記載の方法。
【請求項３】
前記第1の仮想マシンと前記第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定するステップは、
前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析するステップと、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定するステップと、前記インタラクション頻度をプリセット頻度と比較するステップと、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するステップを含む、請求項1または2に記載の方法。
【請求項４】
前記インタラクション頻度をプリセット頻度と比較するステップの前に、前記方法は、
前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正するステップをさらに含み、
前記インタラクション頻度をプリセット頻度と比較するステップは、
修正したインタラクション頻度を前記プリセット頻度と比較するステップ、または、前記インタラクション頻度を修正したプリセット頻度と比較するステップを含む、請求項3に記載の方法。
【請求項５】
前記少なくとも2セットのAPI呼び出し情報を収集するステップは、
前記複数の仮想マシンのデプロイされたホスト内のログファイルから前記少なくとも2セットのAPI呼び出し情報を別々に読み込むステップ、または、
前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記複数の仮想マシンのデプロイされたホスト内のログファイルから前記少なくとも2セットのAPI呼び出し情報を別々に読み込むステップの前に、前記方法は、
方式1: 仮想マシンがAPIを呼び出してパケットを前記仮想マシンが位置しているVMMに送信する場合には、前記仮想マシン、前記VMM内の仮想スイッチ、または前記VMMのうちのいずれか1つによって、API呼び出し情報を前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに書き込むステップ、
方式2: 仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに、パケット伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を書き込むステップ、または、
方式3: 仮想マシンのVMMがAPIを呼び出してパケットを前記仮想マシンに送信する場合には、前記仮想マシン、前記VMM内の仮想スイッチ、または前記VMMのうちのいずれか1つによって、API呼び出し情報を前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに書き込むステップ、のうちの少なくとも1つをさらに含む、請求項5に記載の方法。
【請求項７】
前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するステップの前に、前記方法は、
前記ホスト内のパケットの伝送プロセスを、仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、監視して、前記伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を記録するステップ、または、
仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、前記ホスト内のパケット伝送プロセスにおけるAPI呼び出しに対応するとともに、前記仮想マシン、仮想スイッチ、またはVMMによって送信されたAPI呼び出し情報を受信するステップをさらに含む、請求項5に記載の方法。
【請求項８】
トポロジ探索サーバであって、
少なくとも2セットのアプリケーションプログラミングインターフェースAPI呼び出し情報を収集するように構成される、取得ユニットであって、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、前記API呼び出しに対応する仮想マシンの識別子、前記API呼び出しの発生時間、および前記API呼び出しのパケットフローの方向を含む、取得ユニットと、
前記少なくとも2セットのAPI呼び出し情報を分析し、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているかどうかを決定するように構成される、分析ユニットであって、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中のパケットフローの方向と前記第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、前記第1のAPI呼び出し情報中のAPI呼び出しの発生時間と前記第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含む、分析ユニットとを備え、
前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしていると決定したことに応答して、前記分析ユニットは、前記第1のAPI呼び出し情報によって示される第1の仮想マシンと前記第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度が前記第2の条件を満たしている場合には、アプリケーショントポロジ関係が前記第1の仮想マシンと前記第2の仮想マシンとの間に存在していると決定するようにさらに構成される、トポロジ探索サーバ。
【請求項９】
API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項8に記載のトポロジ探索サーバ。
【請求項１０】
前記分析ユニットは、前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定し、前記インタラクション頻度をプリセット頻度と比較し、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するように特に構成される、請求項8または9に記載のトポロジ探索サーバ。
【請求項１１】
前記分析ユニットは、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正するように特に構成され、
前記分析ユニットは、修正したインタラクション頻度を前記プリセット頻度と比較するように特に構成され、または前記インタラクション頻度を修正したプリセット頻度と比較する、請求項10に記載のトポロジ探索サーバ。
【請求項１２】
前記取得ユニットは、前記少なくとも2セットのAPI呼び出し情報を前記複数の仮想マシンのデプロイされたホスト内のログファイルから別々に読み込むように特に構成される、または、
前記取得ユニットは、前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するように特に構成される、請求項10または11に記載のトポロジ探索サーバ。
【請求項１３】
アプリケーショントポロジ関係を探索するためのシステムであって、前記システムは、トポロジ探索サーバと少なくとも1つのホストとを備え、複数の仮想マシンは、前記少なくとも1つのホスト上で動作し、
前記複数の仮想マシンのうちのある仮想マシンがパケットを送信する、または、前記少なくとも1つのホストのVMMがパケットを前記複数の仮想マシンのうちのある仮想マシンに転送する場合には、アプリケーションプログラミングインターフェースAPI呼び出し情報を生成し、
前記トポロジ探索サーバは、少なくとも2セットのAPI呼び出し情報を収集するように構成され、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、前記API呼び出しに対応する仮想マシンの識別子、前記API呼び出しの発生時間、および前記API呼び出しのパケットフローの方向を含み、
前記トポロジ探索サーバは、前記少なくとも2セットのAPI呼び出し情報を分析し、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているかどうかを決定するようにさらに構成され、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中のパケットフローの方向と前記第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、前記第1のAPI呼び出し情報中のAPI呼び出しの発生時間と前記第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含み、
前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしていると決定したことに応答して、前記トポロジ探索サーバは、前記第1のAPI呼び出し情報によって示される第1の仮想マシンと前記第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度が前記第2の条件を満たしている場合には、アプリケーショントポロジ関係が前記第1の仮想マシンと前記第2の仮想マシンとの間に存在していると決定するようにさらに構成される、システム。
【請求項１４】
API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項13に記載のシステム。
【請求項１５】
前記トポロジ探索サーバは、前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定し、前記インタラクション頻度をプリセット頻度と比較し、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するように特に構成される、請求項13または14に記載のシステム。
【請求項１６】
前記トポロジ探索サーバは、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正し、修正したインタラクション頻度を前記プリセット頻度と比較する、または前記インタラクション頻度を修正したプリセット頻度と比較するように特に構成される、請求項15に記載のシステム。
【請求項１７】
コンピュータ可読記録媒体に記録されたプログラムであって、前記プログラムは、実行されると、コンピュータに請求項1から7のいずれか一項に記載の方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、IT技術の分野に関し、詳細には、アプリケーショントポロジ関係を探索するための方法、装置、およびシステムに関する。
【背景技術】
【０００２】
情報化時代の到来に伴い、コンピュータネットワークへの依存によりコンピュータネットワークを運用する信頼性が著しく重要なものとなっており、より高い要件をネットワーク管理に課している。開放型システム間相互接続(Open System Interconnection、OSI)の定義によれば、ネットワーク管理に関して主に5つの機能領域が存在している、すなわち、障害管理、構成管理、性能管理、セキュリティ管理、および課金管理が存在している。5つの機能領域において、構成管理が基礎となっており、構成管理の主な機能は、ネットワークトポロジ構造を探索すること、ならびにネットワークデバイスの構成状態を監視および管理することである。他の機能のすべては、ネットワークトポロジ構造に基づいている。ネットワークトポロジ探索をネットワーク内のエンド・ツー・エンド接続関係に対して行い、主な目的は、ネットワークノードの存在情報およびネットワークノードの接続関係情報を取得および維持し、存在情報および接続関係情報に基づいて全ネットワークのトポロジダイアグラムを描画することにある。
【０００３】
ネットワークトポロジの具体的な形態としては、ITシステムにおけるアプリケーショントポロジ(Application Topology)が仮想マシン間のネットワーク通信関係であり、仮想マシン間のネットワーク通信が仮想マシンによって動作されるアプリケーションに基づいて生成される。より具体的には、アプリケーショントポロジは、ITシステムにおけるホスト(サーバなど)内のアプリケーションコンポーネント(プログラム、サービス、コンポーネント、およびアプリケーションを動作している仮想マシンなど)のデプロイメント関係、およびデプロイされたアプリケーションコンポーネント間のインタラクション関係(サービス要求および応答など)である。
【０００４】
既存のアプリケーショントポロジ探索は、アクティブ検出探索である。アクティブ検出は、関連している検出データパケットをネットワークターゲットに送信することによってアプリケーション構造およびアプリケーションユーザを学習し、結果を観測、記録、および返送する動作である。大量なデータをネットワークに送信する必要があるため、ネットワークにおける負荷が増大し、トポロジ探索の精度が低くなる。従来技術では、仮想化環境において検出データパケットを使用することなくアプリケーショントポロジを探索するための方法が欠如している。
【発明の概要】
【課題を解決するための手段】
【０００５】
本出願は、アプリケーショントポロジ関係を探索するための方法、装置、およびシステムを説明しており、仮想化環境のためのアプリケーショントポロジ探索ソリューション提供している、その結果、仮想マシン間のアプリケーショントポロジ関係を確立する複雑度を低減している。
【０００６】
1つの態様によれば、本出願は、アプリケーショントポロジ関係を探索するための方法を提供しており、方法は、少なくとも2セットのAPI呼び出し情報を収集するステップであって、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、API呼び出しに対応する仮想マシンの識別子、API呼び出しの発生時間、およびAPI呼び出しのパケットフローの方向を含む、ステップと、前述の収集したAPI呼び出し情報を分析し、第1の条件を満たしている第1のAPI呼び出し情報と第2のAPI呼び出し情報とを決定するステップであって、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中のパケットフローの方向と第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、第1のAPI呼び出し情報中のAPI呼び出しの発生時間と第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含む、ステップと、第1の条件を満たしているということが第1のAPI呼び出し情報および第2のAPI呼び出し情報中の2つの仮想マシン間に1回のインタラクションが存在していることを意味していると、第1のAPI呼び出し情報によって示される第1の仮想マシンと第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定するステップと、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度が第2の条件を満たしている場合には、アプリケーショントポロジ関係が第1の仮想マシンと第2の仮想マシンとの間に存在していると決定するステップとを含む。
【０００７】
本出願によって提供したアプリケーショントポロジ関係を探索するための方法によれば、パケット伝送プロセスにおけるAPI呼び出し情報を修正し、インタラクションが2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在しているかどうかを、2セットのAPI呼び出し情報が第1の条件を満たしているかどうかを照合することによって決定している。前述の方式を使用して、トポロジ探索サーバは、仮想マシンの、収集したAPI呼び出し情報に関わる、インタラクション頻度を決定し得るし、仮想マシン間のアプリケーショントポロジ関係を仮想マシンのインタラクション頻度に従って決定する。前述のソリューションは、仮想化シナリオにおける仮想マシン間のアプリケーショントポロジ関係を探索するための方法を提供している、ここで、仮想マシン間のアプリケーショントポロジ関係はパケット伝送プロセスにおいて生成されたAPI呼び出し情報を分析することによって決定されており、したがって、ソリューションの複雑度は相対的に低くなる。
【０００８】
ある可能な実施様態においては、パケットフローの方向およびAPI呼び出しの発生時間の間の差に加えて、API呼び出しに伴う通信プロトコルも考慮する必要がある。特に、API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中の通信プロトコルおよび第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む。すなわち、2セットのAPI呼び出し情報中の通信プロトコルが同一である場合のみ、アプリケーショントポロジ関係は、2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在し得るし、2セットのAPI呼び出し情報中の通信プロトコルが異なる場合には、パケットフローの方向およびAPI呼び出しの発生時間の間の差についての要件を満たしていたとしても、インタラクションが2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在しているとは依然としてみなすことはできない。仮想マシン間のインタラクションを特定する精度は、パケット送信端およびパケット受信端における通信プロトコルを特定することによって改善される。
【０００９】
ある可能な実施様態においては、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定するステップは、第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析するステップと、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度を決定するステップと、インタラクション頻度をプリセット頻度と比較するステップと、インタラクション頻度がプリセット頻度より大きい場合には、インタラクション頻度が第2の条件を満たしていると決定するステップとを含む。アプリケーショントポロジ関係が仮想マシン間に存在しているかどうかを決定するための根拠としてプリセット頻度を使用することによって、当業者は、前述のプリセット頻度を調整してアプリケーショントポロジ関係を決定する厳密性を制御し得る。プリセット頻度はまた、要件に従ってされてもよく、本発明の実施形態に限定されない。
【００１０】
ある可能な実施様態においては、インタラクション頻度をプリセット頻度と比較するステップの前に、方法は、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従ってインタラクション頻度またはプリセット頻度のうちの1つを修正するステップをさらに含み、
インタラクション頻度をプリセット頻度と比較するステップは、修正したインタラクション頻度をプリセット頻度と比較するステップ、または、インタラクション頻度を修正したプリセット頻度と比較するステップを含む。
【００１１】
ある可能な実施様態においては、トポロジ探索サーバは、少なくとも以下の2つの方式で、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し得る。
方式1: 第1の仮想マシンのIPアドレスと第2の仮想マシンのIPアドレスとが同一のネットワークセグメント内にあるかどうかを決定する。
方式2: 第1の仮想マシンのVXLAN(Virtual eXtensible Local Area Network、仮想拡張ローカルエリアネットワーク)識別子と第2の仮想マシンのVXLAN識別子とが同一であるかどうかを決定する、ここで、2つの識別子が同一である場合には、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にあることを示す。
【００１２】
同一のネットワークセグメント内の仮想マシンは、異なるネットワークセグメント内の仮想マシンと比べて、アプリケーショントポロジ関係を有する可能性が高い。したがって、本発明の実施形態においては、アプリケーショントポロジ関係を探索する精度を改善するために、重み付けを同一のネットワークセグメント内の仮想マシンのインタラクション頻度に対して行っている、または、プリセット頻度を低減している。
【００１３】
ある可能な実施様態においては、パケットを第1の仮想マシンから第2の仮想マシンへと送信するプロセスにおいて、API呼び出し情報は、第1の仮想マシンおよび第2の仮想マシンのデプロイされたホスト内のログファイルに記憶され得るし、トポロジ探索サーバは、API呼び出し情報をログファイルから読み込む。あるいは、エージェントモジュールが、各ホストにインストールされており、トポロジ探索サーバは、ホストのエージェントモジュールによって報告されたAPI呼び出し情報を受信する。
【００１４】
ある可能な実施様態においては、パケット伝送プロセスにおいて、API呼び出し情報を、以下の方式、すなわち、
仮想マシンがAPIを呼び出してパケットを仮想マシンが位置しているVMMに送信する場合には、仮想マシン、VMM内の仮想スイッチ、またはVMMによって、API呼び出し情報を仮想マシンのデプロイされたホスト内のログファイルに書き込む方式、
ホスト内のパケットの伝送プロセスを、仮想マシンのデプロイされたホスト内のエージェントモジュールによって、監視して、伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を仮想マシンのデプロイされたホスト内のログファイルに書き込む方式、
仮想マシンのデプロイされたホスト内のエージェントモジュールによって、仮想マシン、仮想スイッチ、またはVMMによって送信されたホスト内のパケット伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を受信して、受信したAPI呼び出し情報を仮想マシンのデプロイされたホストのログファイルに書き込む方式、または、
仮想マシンのVMMがAPIを呼び出してパケットを仮想マシンに送信する場合には、仮想マシン、VMM内の仮想スイッチ、またはVMMのうちのいずれか1つによって、API呼び出し情報を仮想マシンのデプロイされたホスト内のログファイルに書き込む方式で、ログファイルに書き込み得る。
【００１５】
特に、ホスト内の仮想マシン、仮想スイッチ、またはVMMのうちのいずれか1つが、トポロジ情報レポートAPI関数を呼び出すことによって、API呼び出し情報をエージェントモジュールに報告し得る。
【００１６】
ある可能な実施様態においては、エージェントモジュールは、各ホストにインストールされるとともに、ホスト内のAPI呼び出し情報を収集するように構成され、エージェントモジュールは、ホスト内の仮想マシン、仮想スイッチ、およびVMMを監視し、API呼び出し情報を取得し、取得したAPI呼び出し情報をログファイルに書き込み得る、または、API呼び出し情報を取得した後に、エージェントモジュールは、API呼び出し情報をトポロジ探索サーバに報告する。
【００１７】
ある可能な実施様態においては、API呼び出しは、入力API関数呼び出しと出力API関数呼び出しとを含む。特に、仮想マシンが位置しているVMMは、出力API関数を呼び出してパケットを仮想マシンに送信し、仮想マシンは、入力API関数を呼び出してパケットを仮想マシンが位置しているVMMに送信する。
【００１８】
ある可能な実施様態においては、API呼び出し情報は、送信元仮想マシンの識別子および宛先仮想マシンの識別子をさらに含み得る、この場合には、1セットのAPI呼び出し情報に従って、送信元仮想マシンと宛先仮想マシンとの間に1回のインタラクションが存在していることを学習し得る。
【００１９】
さらに、システム内の仮想マシンクラスタに関しては、トポロジ探索サーバは、仮想マシンクラスタ内の仮想マシン間のアプリケーショントポロジ関係を決定し、仮想マシンクラスタのアプリケーショントポロジビューを生成する。
【００２０】
トポロジ探索サーバは、独立した物理サーバである、または、トポロジ探索サーバは、機能モジュールの形式で、システム内の他の物理サーバとともに共同で配置される。
【００２１】
ある可能な実施様態においては、特定のアプリケーショントポロジ関係にある仮想マシンは、同一のホスト上または異なるホスト上で動作し得る。仮想マシンが異なるホスト上で動作している場合には、2つのホストは、パケットを外部の物理ネットワークを介して伝送する。特定の伝送方法において、様々な既存のネットワーク伝送プロトコルおよび伝送設定が使用されてもよく、本出願は伝送ネットワーク構造を限定していない。
【００２２】
別の態様によれば、本発明の実施形態は、別のアプリケーショントポロジ関係を探索するための方法を提供している。アプリケーショントポロジ関係の探索のための前述の方法との違いは、本実施形態において記録されているAPI呼び出し情報の各セット内の仮想マシンの識別子がパケット送信端における送信元仮想マシンの識別子と宛先仮想マシンの識別子との両方を含んでいる点にある。この場合には、1セットのAPI呼び出し情報に従って、2つの仮想マシン間に1回のインタラクションが存在していることが決定される。特に、送信元仮想マシンの識別子および宛先仮想マシンの識別子を含むとともに1つのAPI呼び出しに対応するAPI呼び出し情報を取得し、送信元仮想マシンと宛先仮想マシンとの間に1回のインタラクションが存在していると決定し、収集したAPI呼び出し情報を分析し、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度に従って、アプリケーショントポロジ関係が第1の仮想マシンと第2の仮想マシンとの間に存在していると決定する。
【００２３】
さらに別の態様によれば、本発明の実施形態は、トポロジ探索サーバを提供しており、トポロジ探索サーバは、前述の方法の機能を特に実施する。機能を、ハードウェアを使用して実施してもよい、または、ハードウェアを使用して対応するソフトウェアを実行することによって実施してもよい。ハードウェアまたはソフトウェアは、前述の機能に対応する1つまたは複数のモジュールを含む。
【００２４】
ある可能な設計においては、トポロジ探索サーバの構造は、プロセッサとメモリとを備える、ここで、プロセッサは、前述の方法における対応する機能を実施する際に、トポロジ探索サーバを支援するように構成される。トポロジ探索サーバは、メモリをさらに含み得る、ここで、メモリは、前述の機能を実施するために、プロセッサに接続され、トポロジ探索サーバによって要求されるプログラム命令およびデータを記憶するように構成される。
【００２５】
さらに別の態様によれば、本発明の実施形態は、アプリケーショントポロジ関係を探索するためのシステムを提供しており、システムは、トポロジ探索サーバと少なくとも1つのホストとを備える、ここで、複数の仮想マシンは、少なくとも1つのホスト上で動作し、トポロジ探索サーバは、パケット伝送プロセスにおいてAPIが呼び出される際に生成されるAPI呼び出し情報を取得することによって、アプリケーショントポロジ関係が2つの仮想マシン間に存在しているかどうかを決定する。特に、トポロジ探索サーバ、仮想マシン、エージェントモジュールなどは、最初の態様におけるアプリケーショントポロジ関係を探索するための方法における機能を実施する。機能を、ハードウェアを使用して実施してもよい、または、ハードウェアを使用して対応するソフトウェアを実行することによって実施してもよい。ハードウェアまたはソフトウェアは、前述の機能に対応する1つまたは複数のモジュールを含む。
【００２６】
必要に応じて、アプリケーショントポロジ関係を探索するための方法を実行するためのシステムは、データベースをさらに含み得る、ここで、データベースは、アプリケーショントポロジ関係およびアプリケーショントポロジビューを記憶するように構成される。システムは、管理ノードをさらに含み得る、ここで、管理ノードは、管理効率を改善するために、仮想マシン間のアプリケーショントポロジ関係に従って仮想マシンを管理する。
【００２７】
ある可能な設計においては、ホストは、プロセッサとメモリとを備える、ここで、プロセッサは、前述のシステム内の対応する機能を実施する際に、ホストを支援するように構成される。ホストは、メモリをさらに含み得る、ここで、メモリは、前述の機能を実施するために、プロセッサに接続され、プロセッサによって要求されるプログラム命令およびデータを記憶するように構成される。
【００２８】
その上さらに別の態様によれば、本発明の実施形態は、コンピュータ記憶媒体を提供している、ここで、コンピュータ記憶媒体は、前述のトポロジ探索サーバによって使用されるコンピュータソフトウェア命令を記憶し、前述の機能を実施するように設計されたプログラムを含むように構成される。
【００２９】
さらなる態様によれば、本発明の実施形態は、コンピュータ記憶媒体を提供している、ここで、コンピュータ記憶媒体は、前述のホストによって使用されるコンピュータソフトウェア命令を記憶し、前述の機能を実施するように設計されたプログラムを含むように構成される。
【００３０】
本出願によって提供したアプリケーショントポロジ関係を探索するための方法、装置、およびシステムによれば、パケット伝送プロセスにおけるAPI呼び出し情報を修正し、インタラクションが2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在しているかどうかを、2セットのAPI呼び出し情報が第1の条件を満たしているかどうかを照合することによって決定している。前述の方式を使用して、トポロジ探索サーバは、仮想マシンの、収集したAPI呼び出し情報に関わる、インタラクション頻度を決定し得るし、仮想マシン間のアプリケーショントポロジ関係を仮想マシンのインタラクション頻度に従って決定する。前述のソリューションは、仮想化シナリオにおける仮想マシン間のアプリケーショントポロジ関係を探索するための方法を提供している、ここで、仮想マシン間のアプリケーショントポロジ関係はパケット伝送プロセスにおいて生成されたAPI呼び出し情報を分析することによって決定されており、したがって、ソリューションの複雑度は相対的に低くなる。
【００３１】
本発明の実施形態におけるまたは従来技術における技術的ソリューションをより明確に説明するために、実施形態または従来技術を説明するために必要となる添付の図面を以下に簡単に説明する。以下の説明における添付の図面は本発明のいくつかの実施形態を示しているにすぎず、当業者が創造的努力なしにこれらの添付の図面から他の実施様態を導出し得ることは明らかであろう。これらの実施形態または実施様態のすべては、本発明の保護範囲に含まれるものとする。
【図面の簡単な説明】
【００３２】
【図１Ａ】本発明の実施形態による、可能な仮想化システムの概略アーキテクチャ図である。
【図１Ｂ】本発明の実施形態による、別の仮想化システムの概略アーキテクチャ図である。
【図１Ｃ】本発明の実施形態による、さらに別の仮想化システムの概略アーキテクチャ図である。
【図２】本発明の実施形態による、コンピュータデバイスの概略図である。
【図３Ａ】本発明の実施形態による、ホスト内の仮想化構造の概略図である。
【図３Ｂ】本発明の実施形態による、ネットワークインターフェースカード・ストレートスルー・シナリオにおけるホスト内の仮想化構造の概略図である。
【図３Ｃ】本発明の実施形態による、別のネットワークインターフェースカード・ストレートスルー・シナリオにおけるホスト内の仮想化構造の概略図である。
【図４】本発明の実施形態による、アクティブ探索を用いて収集エージェントによってAPI呼び出し情報を取得することについての概略図である。
【図５】本発明の実施形態による、パッシブ探索を用いて収集エージェントによってAPI呼び出し情報を取得することについての概略図である。
【図６】本発明の実施形態による、同一のホスト内の2つの仮想マシンが互いに通信している場合に、収集エージェントによってAPI呼び出し情報を取得する概略フローチャートである。
【図７】本発明の実施形態による、異なるホスト内の2つの仮想マシンが互いに通信している場合に、収集エージェントによってAPI呼び出し情報を取得する概略フローチャートである。
【図８】本発明の実施形態による、アプリケーショントポロジ関係を探索するシステムの概略構造図である。
【図９】本発明の実施形態による、トポロジ探索サーバの概略構造図である。
【発明を実施するための形態】
【００３３】
本発明の実施形態による技術的ソリューションを添付の図面を参照して以下に明確かつ完全に説明する。説明した実施形態が本発明の実施形態のすべてではなく一部にすぎないことは明らかであろう。創造的努力なしに本発明の実施形態に基づいて当業者によって取得された他の実施形態のすべては本発明の保護範囲に含まれるものとする。
【００３４】
本発明の実施形態において説明したネットワークアーキテクチャおよびサービスシナリオを使用して、本発明の実施形態の技術的ソリューションをより明確に説明しているが、本発明の実施形態によって提供した技術的ソリューションに限定されるわけではない。当業者は、ネットワークアーキテクチャの進化および新たなサービスシナリオの出現にともない、本発明の実施形態によって提供した技術的ソリューションも同様の技術的問題に適用可能であることを理解されよう。
【００３５】
従来技術では、ある仮想化レベルにある仮想化環境のための専用のアプリケーショントポロジ関係を探索するための方法が欠如しているため、本発明の実施形態は、仮想化環境における仮想マシン間のアプリケーショントポロジ関係を探索するための方法、装置、およびシステムを提供しており、仮想マシンクラスタ内の仮想マシン間のアプリケーショントポロジ関係を正確に特定することを可能としている。特に、本発明の実施形態は、各ホスト内の仮想マシン間の通信において使用されるAPI(Application Programming Interface、アプリケーションプログラミングインターフェース)呼び出し情報を修正するように構成される、トポロジ探索サーバを提供している。トポロジ探索サーバは、各ホストから収集したAPI呼び出し情報を分析し、仮想マシン間のアプリケーショントポロジ関係を生成する。
【００３６】
図1Aに示したように、図1Aは、本発明の実施形態による、仮想化システムの概略アーキテクチャ図である。トポロジ探索サーバは、各ホストに接続されており、ホスト上にAPI呼び出し情報を収集するように構成される。トポロジ探索サーバは、仮想マシン間のアプリケーショントポロジ関係をデータベースにさらに記憶し得る。管理ノードが仮想マシン間のアプリケーショントポロジ関係に従って管理演算を行う必要がある場合には、管理ノードは、仮想マシン間のアプリケーショントポロジ関係を取得する。特に、図1Aに示した各コンポーネントの機能を以下に説明する。
【００３７】
各ホストは物理サーバであり、いくつかの仮想マシンがホスト上で動作する。
【００３８】
収集エージェント: 収集エージェント(Collect Agent)は、ホスト上にデプロイされ、ホスト内の仮想マシン、仮想スイッチ、または仮想マシンモニタ(Virtual Machine Monitor、VMM)の各々がパケットを送信する際に生成されるAPI呼び出し情報を収集するように構成される。収集エージェントは、収集したAPI呼び出し情報をトポロジ探索サーバ(Topology Discovery Server)に送信し、トポロジ探索サーバは、収集したAPI呼び出し情報を分析し、その結果、仮想マシン間のアプリケーショントポロジ関係を最終的に取得する。収集エージェントは、ホスト内の仮想マシン、仮想スイッチ、もしくはVMM(Virtual Machine Monitor、仮想マシンモニタ)を監視し、パケットが送信もしくは受信されたことが判明した際のAPI呼び出し情報を記録し得る、または、仮想マシン、仮想スイッチ、もしくはVMMは、パケットを送信または受信した後に、API呼び出し情報を収集エージェントに報告する。
【００３９】
ある例では、API呼び出し情報を収集した後に、収集エージェントは、周期的にまたは適切な時間(例えば、ホストまたはネットワークがアイドルの場合)に、収集したAPI呼び出し情報をトポロジ探索サーバに送信し得る。
【００４０】
別の例では、収集エージェントは、API呼び出し情報をトポロジ探索サーバに積極的にプッシュし得る、または、要求をトポロジ探索サーバから受動的に受信した後にAPI呼び出し情報をトポロジ探索サーバにプッシュし得る。あるいは、収集エージェントは、トポロジ探索サーバと共有しているストレージ領域にAPI呼び出し情報を保存し、トポロジ探索サーバは、API呼び出し情報を自動的に読み出す。
【００４１】
本発明の本実施形態は、トポロジ探索サーバがAPI呼び出し情報を各ホストから取得できるのであれば、収集エージェントとトポロジ探索サーバとの間のAPI呼び出し情報の特定の伝送方式に限定されないことに留意されたい。
【００４２】
前述の収集エージェントはオプションであり、収集エージェントがホストに存在していない場合には、仮想マシン、仮想スイッチ、またはVMMは、収集エージェントによって使用されていたものと同様の方式で、API呼び出し情報をトポロジ探索サーバに報告してもよいことにさらに留意すべきである。
【００４３】
トポロジ探索サーバ: トポロジ探索サーバは、API呼び出し情報をトポロジ探索サーバに接続されている各ホストから収集し、収集したAPI呼び出し情報を分析して仮想マシン間のアプリケーショントポロジ関係を取得し、データベース内のアプリケーショントポロジ関係を記憶する。さらに、トポロジ探索サーバは、取得した仮想マシン間のアプリケーショントポロジ関係に従ってアプリケーショントポロジビューを生成し得る。
【００４４】
API呼び出し情報の各セットは、仮想マシンの識別子、API呼び出しの発生時間、およびパケットフローの方向を含む。仮想マシンの識別子は、パケットを受信または送信する仮想マシンの識別子である。API呼び出しの発生時間は、API呼び出しが行われた時間である。パケットフローの方向には入力または出力が含まれる、ここで、入力はパケットが仮想マシンからVMMへと送信されることを指し、出力はパケットがVMMから仮想マシンへと出力されることを指す。ある例では、API呼び出しの発生時間は、ログが記録された時間、全呼び出しの期間、または、呼び出しの発生が監視された時間でさらにあり得る。API呼び出し情報の各セットは、通信プロトコルをさらに含み得るし、通信プロトコルは、仮想マシンが通信を行う場合に使用される通信プロトコルである。通信プロトコルは、ハイパーテキスト転送プロトコル(HTTP、HyperText Transfer Protocol)、ユーザー・データグラム・プロトコル(User Datagram Protocol、UDPプロトコル)、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol、TCP/IPプロトコル)などであり得る。仮想マシンの識別子は、仮想マシンのIPアドレスであり得る。例えば、API呼び出し情報は、VM1がパケットを仮想スイッチVSwitchまたはVMMに送信するためにプロトコルP1を使用して時点t1において入力関数を呼び出していることを示す(VM1, t1, P1, In)であったりする。API呼び出し情報は、仮想スイッチまたはVMMがパケットをVM2に送信するためにプロトコルP2を使用して時点t2において出力関数を呼び出していることを示す(VM2, t2, P2, Out)であったりする。
【００４５】
ホストがネットワークインターフェースカード・ストレートスルー・ソリューションを使用する場合には、パケットは、仮想スイッチを介するのではなくVMMから物理ネットワークインターフェースカードに送信されることに留意されたい。
【００４６】
トポロジ探索サーバは、各ホストから収集したAPI呼び出し情報を分析し、仮想マシンのインタラクション頻度を特定し、仮想マシン間のアプリケーショントポロジ関係を決定する。
【００４７】
ある例では、API呼び出し情報が対象とするAPIは入力API関数および出力API関数である。
【００４８】
ある例では、送信元仮想マシンは、パケットを宛先仮想マシンに送信する。パケットを送信するために送信元仮想マシンによって使用されるプロトコルがパケットを受信するために宛先仮想マシンによって使用されるプロトコルと同一であり、送信元仮想マシンがAPIを呼び出してパケットを送信する時間Tと宛先仮想マシンがパケットのAPI呼び出しを受信する時間Teとが許容可能なカスタマイズされたプリセット閾値内にある場合には、送信元仮想マシンと宛先仮想マシンとの間に1回のインタラクションが発生しているとみなす。さらに、ある期間において、2つの仮想マシンのインタラクション頻度がプリセット頻度より大きい場合には、アプリケーショントポロジ関係が2つの仮想マシン間に存在していると決定する。
【００４９】
例として、本出願におけるトポロジ探索サーバによって収集されたAPI呼び出し情報の例を以下に示す。
VM1, Time1, protocol, In;      VM1', Time1', protocol, Out;
VM2, Time2, protocol, In;      VM2', Time2', protocol, Out;
…                             …
VMn, Timen, protocol, In;      VMn', Timen', protocol, Out;
【００５０】
トポロジ探索サーバは、前述のAPI呼び出し情報を分析し、第1の条件を満たしている第1のAPI呼び出し情報と第2のAPI呼び出し情報とを決定し、ここで、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中のパケットフローの方向と第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、第1のAPI呼び出し情報中のAPI呼び出しの発生時間と第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含み、第1の条件を満たしているということが第1のAPI呼び出し情報および第2のAPI呼び出し情報中の2つの仮想マシン間に1回のインタラクションが存在していることを意味していると、さらに、第1のAPI呼び出し情報によって示される第1の仮想マシンと第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定し、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度が第2の条件を満たしている場合には、アプリケーショントポロジ関係が第1の仮想マシンと第2の仮想マシンとの間に存在していると決定する。
【００５１】
前述の分析プロセスは、トポロジ探索サーバがAPI呼び出し情報に従って仮想マシン間のアプリケーショントポロジ関係を決定する方法を提供している。特に、通信プロトコルを考慮する場合には、分析プロセスは、以下の3つの決定プロセスに集約され得る。
方式1: 2セットのAPI呼び出し情報中のパケットフローの方向がそれぞれ入力および出力であることを決定する。
方式2: 2セットのAPI呼び出し情報中の通信プロトコルが同一であることを決定する。
方式3: 2セットのAPI呼び出し情報中のAPI呼び出しの発生時間の間の差がプリセット閾値未満であること(すなわち、前述の第2の条件)を決定する。
【００５２】
前述の3つの決定プロセスは、プログラミング言語では以下のように表される。
If(Protocol==Protocol && |(Time1-Time1')|<T && In⇔Out)
【００５３】
その場合には、VM1とVM1'との間に1回のインタラクションが発生している。
【００５４】
本発明の本実施形態は、トポロジ探索サーバが前述の3つの決定プロセスを同時に実施することに限定しておらず、トポロジ探索サーバは、要件により異なるシーケンスで前述の3つの決定プロセスを実施し得ることに留意されたい。例として、通信プロトコルを考慮しない場合には、収集したAPI呼び出し情報に関しては、トポロジ探索サーバは、API呼び出しの発生時間に従ってAPI呼び出し情報をまずスクリーニングし、方式3の決定を満たすAPI呼び出し情報を選択し、方式1の決定を満たすAPI呼び出し情報をさらにスクリーニングし、仮想マシン間のアプリケーショントポロジ関係を決定するために、最終的にスクリーニングしたAPI呼び出し情報において、互いの間にインタラクション関係が存在している仮想マシンのインタラクション頻度を決定してもよい。
【００５５】
その上さらに、仮想マシンクラスタが同一の通信プロトコルを使用している、または、仮想マシンクラスタ内のほとんどの仮想マシンが同一の通信プロトコルを使用して通信を行っている場合には、前述のAPI呼び出し情報は、通信プロトコルを含んでいなくてもよい。それに応じて、トポロジ探索サーバは、2セットのAPI呼び出し情報中の通信プロトコルが同一であるかどうかを決定する必要がなくなる。この場合には、アプリケーショントポロジ関係を探索する効率が改善される、そして、精度が低下する可能性がある。
【００５６】
ある例では、方式3の決定における閾値は、要件に従って設定され得る。特に、実際のネットワーク負荷状態を考慮してもよく、本発明の本実施形態に限定されない。
【００５７】
トポロジ探索サーバは、収集したAPI呼び出し情報を考察し、任意の2つの仮想マシンのインタラクション頻度を取得する。インタラクション頻度がプリセットされたインタラクション頻度より大きい場合には、アプリケーショントポロジ関係が2つの仮想マシン間に存在しているとみなす。トポロジ探索サーバは、データベース内の仮想マシン間のアプリケーショントポロジ関係を記憶する。トポロジ探索サーバは、ある期間内に発生しているAPI呼び出しのAPI呼び出し情報を考察し、仮想マシン間のインタラクションについての取得回数をインタラクション頻度として使用し得るし、期間は、要件に従って設定され得ることに留意されたい。それに応じて、プリセット頻度はまた、要件に従って設定されてもよく、本発明の本実施形態に限定されない。
【００５８】
仮想マシン間のインタラクションが前述の方式で計算される場合にはエラーは予測可能な形で生じることに留意されたい。例えば、プロトコルを考慮しない場合には、仮想マシンaが時点t1において入力API関数を呼び出してパケットをVMMに送信し、パケットの宛先仮想マシンが仮想マシンbであるならば、記録されるAPI呼び出し情報は(a, t1, in)となる。仮想マシンbが、時点t2において、仮想マシンaからのものであるとともにVMMによって転送されたパケットを受信すると、記録されるAPI呼び出し情報は(b, t2, out)となる。仮想マシンcが、時点t2において、仮想マシンXから送信されるとともにVMMによって転送されたパケットを受信すると、記録されるAPI呼び出し情報は(b, t2, out)となる。t1とt2との間の差がプリセットされた間隔未満であると、前述のルールに従って、仮想マシンaと仮想マシンbとの間に1回のインタラクションが存在しており、仮想マシンaと仮想マシンcとの間に1回のインタラクションが存在していると学習し得る。明らかに、この場合には、仮想マシンcのパケットが仮想マシンXからのものであるため、インタラクションは仮想マシンaと仮想マシンcとの間に存在していない。
【００５９】
実際の製品の実施シナリオでは、仮想マシン間で大量のパケット交換が存在している場合には、前述のエラーは、比較的小さく、膨大な仮想マシン間のアプリケーショントポロジ関係に明らかな影響を引き起こすことはないことに留意されたい。したがって、前述のエラーは許容可能である。
【００６０】
いくつかの場合においては、API呼び出し情報中の仮想マシンの識別子がすべて送信元仮想マシンの識別子および宛先仮想マシンの識別子を含み得ることをさらに留意すべきである。この場合には、理論上は、1セットのAPI呼び出し情報を記録することによって、送信元仮想マシンと宛先仮想マシンとの間に1回のインタラクションが存在していることを決定し得る。本出願においては、計算効率を保証するために、API呼び出し情報が通信中の2端の識別子を含むか通信中の1端の識別子のみを含むか、インタラクションが仮想マシン間に存在しているかどうかは、前述の分析方法に従って本出願では決定され得る。すなわち、パケットフローの方向が入力であるAPI呼び出し情報に関しては、API呼び出し情報中の送信元仮想マシンの識別子だけが使用される。パケットフローの方向が出力であるAPI呼び出し情報に関しては、API呼び出し情報中の宛先仮想マシンの識別子だけが使用される。2つのタイプのAPI呼び出し情報フォーマットについては、インタラクションが仮想マシン間に存在しているかどうかは、2つのタイプのAPI呼び出し情報フォーマットに対して計算を別々に行う必要はなく、前述の3つの決定プロセスに従って決定され、その結果、分析効率が効率的に改善され得る。
【００６１】
管理ノード: 管理ノードは、仮想マシンのネットワークトポロジを取得する必要がある、VMware VcenterおよびFusionManagerなどの機能エンティティであり得る。管理ノードは、アプリケーショントポロジ関係をトポロジ探索サーバまたは前述のデータベースから読み出す。
【００６２】
ある例では、トポロジ探索サーバは、独立した物理サーバであり得る、または、トポロジ探索サーバは、機能モジュールとしての役割を果たし、管理ノードなどの他の物理サーバとともに共同で配置される。
【００６３】
図1Bに示したように、図1Bは、本発明の実施形態による、別の仮想化システムの概略アーキテクチャ図であり、図1Aとの違いは、ホストが、収集エージェントを含んでおらず、API呼び出し情報が、ログファイルに記憶されている、または、VM、仮想スイッチ、もしくはVMMによってトポロジ探索サーバに直接送信されている点にある。
【００６４】
図1Cに示したように、図1Cは、本発明の実施形態による、さらに別の仮想化システムの概略アーキテクチャ図である。この場合には、トポロジ探索サーバと管理ノードとが共同で配置され、前述のトポロジ探索サーバの機能は管理ノード内のトポロジ探索モジュールによって実施される。
【００６５】
図1Bおよび図1Cにおいて提供した仮想化アーキテクチャは、図1Aのものをベースとした改善版である。仮想化アーキテクチャ内のコンポーネントの機能は、図1Aのものと同様のものであり、アーキテクチャの変更に従って適応的に修正され得るし、また、API呼び出し情報を報告および分析する機能を実施し得る。図1Bおよび図1C中のコンポーネントの機能は本発明の実施形態では繰り返し説明しない。
【００６６】
例えば、同一のアプリケーショントポロジクラスタに属している仮想マシンは、インタラクション時間を低減するために、同一のスイッチによってカバーされるネットワークまたは同様のネットワークにおいて最適に配置されなければならない。システム内の仮想マシンクラスタをバッチでアップグレードする必要がある場合には、同一のアプリケーショントポロジクラスタの仮想マシンは、同一のバッチで最適にアップグレードされなければならない。アプリケーショントポロジ関係にある仮想マシンクラスタは、同一のサーバまたは隣接サーバに最適に配置されなければならない。アプリケーショントポロジ関係にある仮想マシンクラスタおよび対応するバックアップクラスタは、異なるサーバに最適に配置されなければならない。また、全アプリケーショントポロジクラスタに対応する仮想マシンは、マイグレーション中などに最適に移行されなければならない。このようなことにより、アプリケーショントポロジ関係は広く適用されている。前述の機能を実施している管理ノードが仮想マシンのアプリケーショントポロジを使用する必要がある場合には、アプリケーショントポロジをトポロジ探索サーバから取得し得る。
【００６７】
収集エージェントおよびトポロジ探索サーバは、ハードウェア/ソフトウェアを使用して実装され得る。例として、図2に示したように、図2は、本発明の実施形態による、コンピュータデバイスの概略図である。コンピュータデバイス200は、少なくとも1つのプロセッサ201、通信バス202、メモリ203、および少なくとも1つの通信インターフェース204を含む。
【００６８】
プロセッサ201は、中央処理ユニット(CPU)、マイクロプロセッサ、特定用途向け集積回路(application-specific integrated circuit、ASIC)、または、本発明のソリューションにおけるプログラム実行を制御するための1つまたは複数の集積回路であり得る。
【００６９】
通信バス202は、前述のコンポーネント間で情報を伝達するための1つの経路を含み得る。通信インターフェース204は、任意のタイプのトランシーバを使用し、別のデバイス、または、イーサネット(登録商標)、無線アクセスネットワーク(RAN)、もしくは無線ローカルエリアネットワーク(Wireless Local Area Network、WLAN)などの通信ネットワークと通信するように構成される、装置である。
【００７０】
メモリ203は、静的な情報および命令を記憶することができる、リードオンリーメモリ(read-only memory、ROM)もしくは別のタイプの静的ストレージデバイス、情報および命令を記憶することができる、ランダムアクセスメモリ(ランダムアクセスメモリ、RAM)もしくは別のタイプの動的ストレージデバイスであり得るし、または、電気的消去可能プログラマブルリードオンリーメモリ(Electrically Erasable Programmable Read-Only Memory、EEPROM)、コンパクトディスクリードオンリーメモリ(Compact Disc Read-Only Memory、CD-ROM)、または他のコンパクトディスクストレージ、光ディスクストレージ(圧縮光ディスク、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク、Blu-ray(登録商標)ディスクなどを含む)、磁気ディスク記憶媒体もしくは別の磁気ストレージデバイス、または命令もしくはデータ構造の形式で指定したプログラムコードを搬送もしくは記憶するために使用され得るおよびコンピュータによってアクセスされ得る任意の他の媒体であり得るし、このことに限定されない。メモリは、独立して存在していてもよいし、バスを使用してプロセッサに接続されている。メモリはまた、プロセッサと一体化していてもよい。
【００７１】
メモリ203は、本発明のソリューションを実行するためのアプリケーションプログラムコードを記憶するように構成され、プロセッサ201の制御により実施される。プロセッサ201は、メモリ203に記憶されているアプリケーションプログラムコードを実行するように構成される。
【００７２】
ある実施形態として、具体的な実施形態においては、プロセッサ201は、例えば図2中のCPU0およびCPU1といった、1つまたは複数のCPUを含み得る。
【００７３】
ある実施形態として、具体的な実施形態においては、コンピュータデバイス200は、例えば図2中のプロセッサ201およびプロセッサ208といった、複数のプロセッサを含み得る。プロセッサの各々は、シングルコア(single-CPU)プロセッサであり得る、または、マルチコア(multi-CPU)プロセッサであり得る。ここで、プロセッサは、データ(例えば、コンピュータプログラム命令)を処理するように構成された、1つまたは複数のデバイス、回路、および/またはプロセッシングコアを指し得る。
【００７４】
ある実施形態として、具体的な実施形態においては、コンピュータデバイス200は、出力デバイス205と入力デバイス206とをさらに備え得る。出力デバイス205は、プロセッサ201と通信し、複数の方式で情報を表示し得る。例えば、出力デバイス205は、液晶ディスプレイ(liquid crystal display、LCD)、発光ダイオード(light emitting diode、LED)表示デバイス、陰極線管(cathode ray tube、CRT)表示デバイス、プロジェクタ(projector)などであってもよい。入力デバイス206は、プロセッサ201と通信し、複数の方式でユーザの入力を受信し得る。例えば、入力デバイス206は、マウス、キーボード、タッチスクリーンデバイス、センシングデバイスなどであってもよい。
【００７５】
前述のコンピュータデバイス200は、汎用コンピュータデバイスまたは専用コンピュータデバイスであり得る。具体的な実施形態においては、コンピュータデバイス200は、デスクトップコンピュータ、ポータブルコンピュータ、ネットワークサーバ、携帯情報端末(Personal Digital Assistant、PDA)、携帯電話、タブレットコンピュータ、無線端末デバイス、通信デバイス、組み込みデバイス、または図2中の同様の構造を有するデバイスであり得る。本発明の本実施形態は、コンピュータデバイス200のタイプを限定していない。
【００７６】
図1A、図1B、および図1C中の収集エージェント、ホスト、およびトポロジ探索サーバは、図2に示したデバイスであってもよい。1つまたは複数のソフトウェアモジュールは、メモリに記憶され、収集エージェント、ホスト、およびトポロジ探索サーバの機能(例えば、トポロジ探索サーバ内のAPI呼び出し情報を分析する機能)を実施する。収集エージェント、ホスト、およびトポロジ探索サーバは、プロセッサおよびメモリ内のプログラムコードを使用して、仮想マシン間のアプリケーショントポロジを探索するための方法を実施し得る。
【００７７】
図2に示したコンピュータデバイスは、アプリケーショントポロジを探索するためのシステム内の可能なハードウェア実施様態の一部を提供しているにすぎず、コンピュータデバイスのハードウェアコンポーネントは、システム内の機能の一部に一致するように、システム内の機能の一部の違いまたは変更に従って追加または除去され得ることに留意されたい。
【００７８】
図3Aに示したように、図3Aは、本発明の実施形態による、ホスト内の仮想化構造の概略図である。ホストは、物理サーバであり、物理サーバの最下位レイヤは、ハードウェアレイヤであり、ハードウェアレイヤは、中央処理ユニット(CPU、Central Processing Unit)、メモリ、ハードディスク、およびネットワークインターフェースカードなどのハードウェアリソースを主に含む。サーバ仮想化は、仮想化ソフトウェア(VMWare ESXおよびCitrix XENなど)を使用して、物理サーバ内で複数の仮想マシン(Virtual Machine、VM)の仮想化された動作環境を実施することを指す。仮想化された環境を実施するためにサーバにインストールされたソフトウェアレイヤをVMMと称する。ハードウェアレイヤ上で動作するVMMは、ハードウェアレイヤにおいてハードウェアリソースをスケジューリング、割り振り、および管理することを担当している。複数の仮想マシンVMがVMM上で動作し、VMMは、複数の仮想マシンが互いに分離された方式で動作することを保証するために、仮想化されたCPU、メモリ、ストレージ、IOデバイス(ネットワークインターフェースカードなど)、およびイーサネット(登録商標)スイッチなどのハードウェア環境を有する各仮想マシンを提供している。
【００７９】
仮想化された動作環境において、VMMは、各仮想マシンに対する仮想ネットワークインターフェースカード(Virtual Network Interface Card、vNIC)を付与し、仮想スイッチVSwitchは、仮想マシン同士のおよび仮想マシンと外部ネットワークとのための通信能力を提供している。VMM内で動作しているVSwitchについては、各仮想マシンに対する仮想ネットワークインターフェースカードはVSwitchの論理ポートに対応しており、ホストの物理ネットワークインターフェースカードはVSwitchを外部の物理スイッチに接続しているポートに対応している。
【００８０】
仮想マシンによってパケットを受信するプロセスは、VSwitchが、イーサネット(登録商標)パケットを物理ネットワークインターフェースカードから受信し、仮想マシンの媒体アクセス制御(Media Access Control、MAC)アドレスとVSwitchの論理ポートとの間のものであるとともにVMMによって配信される対応付けテーブル(すなわち、静的MACテーブル)に従ってパケットを転送している。
【００８１】
仮想マシンによってパケットを送信するプロセスは、パケットのMACアドレスが外部ネットワーク内のものである場合には、VSwitchは物理ネットワークインターフェースカードから外部ネットワークにパケットを直接送信し、パケットの宛先MACアドレスが同一のVSwitchの仮想マシンに接続されているものである場合には、VSwitchは静的MACテーブルを使用してパケットを転送している。
【００８２】
図3Bに示したように、図3Bは、本発明の実施形態による、ネットワークインターフェースカード・ストレートスルー・シナリオにおけるホスト内の仮想化構造の概略図である。この場合には、物理ネットワークインターフェースカードは仮想化されておらず、物理ネットワークインターフェースカードの各出口ポートは1つの仮想マシンに割り振られる。図3Cに示したように、図3Cは、本発明の実施形態による、別のネットワークインターフェースカード・ストレートスルー・シナリオにおけるホスト内の仮想化構造の概略図である。図3Bとの違いは、物理ネットワークインターフェースカードが仮想マシンを使用して複数の仮想機能デバイス(Virtual Function、VF)に仮想化されており、ここで、前述のネットワークインターフェースカード仮想化の技術がシングルルートIO仮想化(Single-Root I/O Virtualization、SR-IOV)およびマルチルートIO仮想化(Multi-Root I/O Virtualization、MR-IOV)であり得る点にある。仮想機能デバイスは、物理ネットワークインターフェースカードの物理リソース(ネットワークインターフェースカードポートなど)を共有し得るし、仮想機能デバイスはまた、ホスト内の仮想マシンシステムと関連し得る。
【００８３】
本発明の実施形態によって提供したアプリケーショントポロジ関係を探索するための方法は、図3Bおよび図3Cに示したシナリオにも適用可能である。この場合には、仮想マシンは、VMM内の仮想スイッチをスキップするために、物理ネットワークインターフェースカードの発信インターフェースを直接呼び出してパケットを送信してもよい。エージェントモジュールは、API呼び出し情報を仮想マシンまたはVMMから取得し得る。例えば、ネットワークインターフェースカード・ストレートスルー・シナリオにおいては、仮想マシンが入力API関数を呼び出してVMMを使用してパケットを物理ネットワークインターフェースカードに送信する場合には、仮想マシンまたはVMMが、API呼び出し情報をログファイルに記録もしくはAPI呼び出し情報を収集エージェントに直接送信し得る、または、収集エージェントが、仮想マシン、VMM、および物理ネットワークインターフェースカードの間のパケットの伝送を監視し、API呼び出し情報をログファイルに記録する。
【００８４】
収集エージェントは、アクティブ探索およびパッシブ探索の2つの手段によりAPI呼び出し情報を収集し得る。図4に示したように、図4は、本発明の実施形態による、アクティブ探索を用いて収集エージェントによってAPI呼び出し情報を取得することについての概略図である。図5に示したように、図5は、本発明の実施形態による、パッシブ探索を用いて収集エージェントによってAPI呼び出し情報を取得することについての概略図である。アクティブ探索は、仮想マシンが入力API関数(Port_Input API)を呼び出す場合には、仮想マシン、仮想スイッチ、もしくはVMMがAPI呼び出し情報をログファイルに書き込み、または、仮想スイッチが出力API関数(Port_Output API)を呼び出す場合には、仮想マシン、仮想スイッチ、もしくはVMMがAPI呼び出し情報をログファイルに書き込み、収集エージェントがログファイルをスキャンすることによってログファイルからAPI呼び出し情報を取得し得ることを指し、パッシブ探索は、API呼び出し情報を収集エージェントに報告するために使用されるトポロジ情報レポートAPI関数(Topo_Info_API)が追加されており、仮想マシンが入力API関数(Port_Input API)を呼び出してVMMを使用してパケットを送信する場合には、仮想マシン、仮想スイッチ、またはVMMがトポロジ情報レポートAPI関数を呼び出して現時点において呼び出されたAPIの呼び出し情報を収集エージェントに送信すること、または、仮想スイッチが出力API関数(Port_Output API)を呼び出す場合には、仮想マシン、仮想スイッチ、またはVMMがトポロジ情報レポートAPI関数を呼び出して現時点において呼び出されたAPIの呼び出し情報を収集エージェントに送信することを指す。
【００８５】
異なるオペレーティングシステムについては、前述の入力API関数、出力API関数、およびトポロジ情報レポートAPI関数は、異なるフォーマットであってもよく、本発明の本実施形態に限定されないことに留意されたい。前述の関数は、入力、出力、およびレポート関数を別々に実施し得ることを当業者は理解できよう。API関数は、API関数リファレンスブックを使用して検索され得る。例として、Post & Telcom Pressにより出版されているWindow API Function Reference Manualは、Microsoft Win32 API関数のリファレンスマニュアルであり、他のバージョンまたはタイプのオペレーティングシステムについては、対応する入力API関数および出力API関数がまた、関連したリファレンスブックを使用して検索され得る。
【００８６】
ログファイルにAPI呼び出し情報を記憶することは一例にすぎないことをさらに留意すべきである。API呼び出し情報はまた、他のファイルまたは他のロケーションに記憶されてもよく、そこから収集エージェントはAPI呼び出し情報を取得し得る。
【００８７】
トポロジ探索サーバは、API呼び出し情報をホストから収集し、API呼び出し情報の各セットは1つのAPI呼び出しに対応している。本発明の実施形態においては、API呼び出しは、入力API関数呼び出しと出力API関数呼び出しとを特に含む。パケット送信端における送信元仮想マシンは、入力API関数を呼び出してパケットをVMMに送信し、VMMは、ネットワークを介してパケット受信端におけるVMMにパケットを送信し、パケット受信端におけるVMMは、出力API関数を呼び出してパケットを宛先仮想マシンに送信する。前述のプロセスにおいて、パケット送信端におけるホストとパケット受信端におけるホストとの双方が、API呼び出し情報のセットを記録し、API呼び出し情報の各セットが、API呼び出しに対応する仮想マシンの識別子、API呼び出しの発生時間、およびAPI呼び出しのパケットフローの方向を含み、通信プロトコルをさらに含み得る。トポロジ探索サーバは、収集したAPI呼び出し情報を分析する。2セットのAPI呼び出し情報中のAPI呼び出しの発生時間の間の差がプリセット閾値未満であり、2セットのAPI呼び出し情報中のパケットフローの方向が互いに反対となっている(一方が入力であり、他方が出力である)場合には、インタラクション関係が、2セットのAPI呼び出し情報中の仮想マシンの2つの識別子に対応する2つの仮想マシン間に存在しており、それにより2つの仮想マシンのインタラクション頻度を決定する。第1の仮想マシンと第2の仮想マシンとのインタラクション頻度が第2の条件を満たしている場合には、アプリケーショントポロジ関係が第1の仮想マシンと第2の仮想マシンとの間に存在していると決定する。特に、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度を決定し、インタラクション頻度をプリセット頻度と比較し、インタラクション頻度がプリセット頻度より大きい場合には、インタラクション頻度が第2の条件を満たしていると決定する。前述の2セットのAPI呼び出し情報中の仮想マシンの2つの識別子に対応する2つの仮想マシンが異なるのは明らかであろう。前述のソリューションは、仮想化シナリオにおける仮想マシン間のアプリケーショントポロジ関係を探索するための方法を提供している、ここで、仮想マシン間のアプリケーショントポロジ関係はパケット伝送プロセスにおいて生成されたAPI呼び出し情報を分析することによって決定されており、したがって、ソリューションの複雑度は相対的に低くなる。
【００８８】
図3Aに示したホスト内の仮想化構造の概略図を参照して、図6に示したように、図6は、本発明の実施形態による、同一のホスト内の2つの仮想マシンが互いに通信している場合に、収集エージェントによってAPI呼び出し情報を取得する概略フローチャートである。収集エージェントは、ホスト内で動作し、ホストの機能モジュールとして役割を果たしている。VM1およびVM2(2つのVMを本発明の本実施形態における説明のための一例として使用している)はホスト上で動作し、VM1の仮想ネットワークインターフェースカードはvNIC1であり、VM2の仮想ネットワークインターフェースカードはvNIC2であり、vNIC1に対応する、仮想スイッチ上の、ポートはPort1であり、vNIC2に対応する、仮想スイッチ上の、ポートはPort2である。仮想ネットワークインターフェースカードを仮想マシンに割り振り、仮想ネットワークインターフェースカードと仮想スイッチのポートとの間の対応付けを確立することは、先行技術において一般的な技術的手段であり、その具体的なプロセスは本発明の本実施形態では繰り返し説明しないことに留意されたい。図6に示した方法は、以下のステップを含む。
【００８９】
ステップ601: VM1がパケットをVM2に送信する必要がある場合には、VM1が、VMMの入力API関数(Port_Input API)を呼び出して、vNIC1を使用してパケットを仮想スイッチのPort1に送信する。
【００９０】
ステップ602: 仮想スイッチが、静的MACテーブルを検索することによって、パケットの宛先MACを決定し、VM2に対応する、仮想スイッチの、ポートがPort2であると決定する。
【００９１】
ある可能な方式においては、VM1がVM2のアドレスを把握していない場合には、VM1によってVM2に送信されるパケットは、VM2のアドレスを搬送していない。この場合には、仮想スイッチは、VM1のパケットをブロードキャストし、ブロードキャスト方式でVM1のパケットを仮想スイッチのすべてのVMに送信し、その後、VM2は、VM1のパケットを受信し得るし、応答を返す。
【００９２】
ステップ603: 仮想スイッチが、出力API関数(Port_Output API)を呼び出し、Port2を介してVM2の仮想ネットワークインターフェースカードvNIC2にパケットを送信し、その後、VM2が、VM1によって送信されたパケットを受信する。
【００９３】
ステップ601においては、VM1が入力API関数を呼び出す必要があり、1つのAPI呼び出しが生じているため、API呼び出し情報を記録する必要があり、VM1は、以下の2つの方式でAPI呼び出し情報を記録し得る。
【００９４】
方式1: VM1が、VM1と収集エージェントとの間のインターフェースを呼び出し、API呼び出し情報を報告する、具体的には、VM1が、収集エージェントのトポロジ情報レポートAPI関数(Topo_Info API)を呼び出し、API呼び出し情報を収集エージェントに送信する。本発明の本実施形態は、VM1がAPI呼び出し情報を収集エージェントに送信する時点を限定していないことに留意されたい。必要に応じて、VM1は、ネットワーク負荷が小さいときに、API呼び出し情報を送信してもよい。
【００９５】
方式2: VM1がAPI呼び出し情報をログファイルに書き込み、収集エージェントがAPI呼び出し情報を読み込む。本発明の本実施形態は、収集エージェントがAPI呼び出し情報をログファイルから取得する時点を限定していないことに留意されたい。必要に応じて、収集エージェントは、API呼び出し情報をログファイルから周期的に読み込んでもよいし、または、VM1は、API呼び出し情報をログファイルに書き込んだ後にAPI呼び出し情報を読み込むように収集エージェントに命令する。
【００９６】
その上さらに、加えて、VMによってAPI呼び出し情報を記録するために、仮想スイッチまたはVMMもAPI呼び出し情報を記録し得る。特に、仮想スイッチまたはVMMは、API呼び出し情報をログファイルに書き込む、または、VM1によって送信されたパケットを受信するとAPI呼び出し情報を収集エージェントに送信する。
【００９７】
API呼び出し情報は、仮想マシンの識別子、API呼び出しの発生時間、通信プロトコル、およびパケットフローの方向を含む。必要に応じて、API呼び出し情報中の仮想マシンの識別子は、送信元仮想マシンの識別子および宛先仮想マシンの識別子を含んでいてもよい。この場合には、API呼び出し情報の一部だけに従って、送信元仮想マシンと宛先仮想マシンとの間に1回のインタラクションが発生していると直ちに特定し得る。VM1が通信ピアエンドVM2のアドレスを把握している場合には、記録したAPI呼び出し情報は、送信元仮想マシンの識別子および宛先仮想マシンの識別子を含み得ることに留意されたい。前述の通信プロトコルは、HTTPプロトコル、TCP/IPプロトコル、UDPプロトコルなどであり得る。
【００９８】
ステップ603においては、仮想スイッチが出力API関数(Port_Output API)を呼び出しており、1つのAPI呼び出しが生じているため、API呼び出し情報を記録する必要がある。VM1と同様に、仮想スイッチも以下の2つの方式でAPI呼び出し情報を記録し得る。
【００９９】
方式1: 仮想スイッチが、仮想スイッチと収集エージェントとの間のインターフェースを呼び出し、API呼び出し情報を報告する、具体的には、仮想スイッチが、収集エージェントのトポロジ情報レポートAPI関数(Topo_Info API)を呼び出し、API呼び出し情報を収集エージェントに送信する。本発明の本実施形態は、仮想スイッチがAPI呼び出し情報を収集エージェントに送信する時点を限定していないことに留意されたい。トポロジ情報レポートAPI関数は、API呼び出し情報の伝送が提供され得る限り、HOOK関数を使用してまたはコードを修正することで実施され得る。
【０１００】
方式2: 仮想スイッチがAPI呼び出し情報をログファイルに書き込み、収集エージェントがAPI呼び出し情報を読み込む。本発明の本実施形態は、収集エージェントがAPI呼び出し情報をログファイルから取得する時点を限定していないことに留意されたい。
【０１０１】
その上さらに、ステップ603においては、仮想スイッチに加えて、API呼び出し情報がまた、仮想マシン(VM2)またはVMMによって記録されてもよく、本発明の本実施形態では繰り返し説明しない。
【０１０２】
図6に示した方法は、同一のホスト内の2つの仮想マシンが互いに通信している場合に、収集エージェントによってAPI呼び出し情報を取得するプロセスを提供している。図3Aに示した仮想化構造の概略図を参照して、図7に示したように、図7は、本発明の実施形態による、異なるホスト内の2つの仮想マシンが互いに通信している場合に、収集エージェントによってAPI呼び出し情報を取得する概略フローチャートである。2つのホストは、図3Aに示した仮想化構造を使用し得るし、ホストは、物理スイッチによって接続されている。VM1および仮想スイッチ1はホスト1上で動作し、VM2および仮想スイッチ2(2つのVMを本発明の本実施形態における説明のための一例として使用している)はホスト2上で動作し、VM1の仮想ネットワークインターフェースカードはvNIC1であり、VM2の仮想ネットワークインターフェースカードはvNIC2であり、vNIC1に対応する、仮想スイッチ1上の、ポートはPort1であり、vNIC2に対応する、仮想スイッチ2上の、ポートはPort2である。仮想ネットワークインターフェースカードを仮想マシンに割り振り、仮想ネットワークインターフェースカードと仮想スイッチのポートとの間の対応付けを確立することは、先行技術において一般的な技術的手段であり、その具体的なプロセスは本発明の本実施形態では繰り返し説明しないことに留意されたい。図7に示した方法は、以下のステップを含む。
【０１０３】
ステップ701: VM1がパケットをVM2に送信する必要がある場合には、VM1が、VMMの入力API関数(Port_Input API)を呼び出して、vNIC1を使用してパケットを仮想スイッチ1のPort1に送信する。
【０１０４】
ステップ702: 仮想スイッチ1が、port1上のパケットを受信し、パケットの宛先MACアドレスおよび外部ネットワークを決定し、その後、仮想スイッチ1が、ホスト1の物理ネットワークインターフェースカードを使用してパケットを外部ネットワークに送信する。
【０１０５】
ステップ703: パケットが、既存のパケット転送ルールに従って、VM2が位置しているホスト2の物理ネットワークインターフェースカードにルーティングされる。
【０１０６】
ステップ704: ホスト2が、ホスト2の物理ネットワークインターフェースカードを使用してパケットを受信する。
【０１０７】
ステップ705: 仮想スイッチ2が、VM2に対応するポートがPort2であると決定し、仮想スイッチ2が、ポートPort2を介してVM2の仮想ネットワークインターフェースカードvNIC2にパケットを送信し、その後、VM2が、VM1によって送信されたパケットを受信する。
【０１０８】
前述のパケット伝送プロセスにおいて、パケットを既存のルールに従ってカプセル化およびカプセル化解除をしてもよく、本発明の本実施形態では繰り返し説明しないことに留意されたい。
【０１０９】
ステップ701においては、VM1は、ステップ601において定義したものと同様の方式でAPI呼び出し情報を記録する。ホスト1の収集エージェントは、API呼び出し情報を取得する。
【０１１０】
ステップ705においては、仮想スイッチ2は、ステップ603において定義したものと同様の方式でAPI呼び出し情報を記録する。ホスト2の収集エージェントは、API呼び出し情報を取得する。
【０１１１】
分散仮想スイッチを本発明の本実施形態において使用してもよく、分散仮想スイッチは、複数のホスト上の仮想マシンが同一の仮想スイッチに接続されているかのように複数のホストを橋渡しし得るし、仮想マシンは、前述の複数のホストの間を移行され得る、または、複数の分散仮想スイッチが1つのホスト上に存在し得ることに留意されたい。分散仮想スイッチを使用する場合には、収集エージェントによってAPI呼び出し情報を取得する方式は、前述したものと同様のものであり、プリセットアプリケーションでは繰り返し説明しない。
【０１１２】
図6および図7に示した方法のプロセスに関しては、ホストが収集エージェントを備えていない場合には、仮想マシンまたは仮想スイッチは、API呼び出し情報を図6および図7において定義した方式でトポロジ探索サーバに直接報告し得る。
【０１１３】
本出願によって提供したアプリケーショントポロジ関係を探索するための方法によれば、パケット伝送プロセスにおいて、API呼び出し情報を記録し、インタラクションが2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在しているかどうかを、2セットのAPI呼び出し情報が第1の条件を満たしているかどうかを照合することによって決定している。前述の方式を使用して、トポロジ探索サーバは、仮想マシンの、収集したAPI呼び出し情報に関わる、インタラクション頻度を決定し得るし、仮想マシン間のアプリケーショントポロジ関係を仮想マシンのインタラクション頻度に従って決定する。前述のソリューションは、仮想化シナリオにおける仮想マシン間のアプリケーショントポロジ関係を探索するための方法を提供している、ここで、API呼び出し情報を、パケット伝送を行う2端だけが記録する必要があり、したがって、ソリューションの複雑度は相対的に低くなる。
【０１１４】
図8に示したように、図8は、本発明の実施形態による、アプリケーショントポロジ関係を探索するためのシステムであって、システム80は、トポロジ探索サーバ81と少なくとも1つのホスト82とを備え、複数の仮想マシンは、少なくとも1つのホスト82上で動作する、システムを示している。
【０１１５】
複数の仮想マシンのうちのある仮想マシン822がパケットを送信する、または、少なくとも1つのホスト82上のVMMがパケットを複数の仮想マシンのうちのある仮想マシン822に転送する場合には、アプリケーションプログラミングインターフェースAPI呼び出し情報が生成される。
【０１１６】
トポロジ探索サーバ81は、少なくとも2セットのアプリケーションプログラミングインターフェースAPI呼び出し情報を収集するように構成され、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、API呼び出しに対応する仮想マシンの識別子、API呼び出しの発生時間、およびAPI呼び出しのパケットフローの方向を含む。
【０１１７】
トポロジ探索サーバ81は、少なくとも2セットのAPI呼び出し情報を分析し、第1の条件を満たしている第1のAPI呼び出し情報と第2のAPI呼び出し情報とを決定するようにさらに構成され、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中のパケットフローの方向と第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、第1のAPI呼び出し情報中のAPI呼び出しの発生時間と第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含む。
【０１１８】
トポロジ探索サーバ81は、第1のAPI呼び出し情報によって示される第1の仮想マシン822と第2のAPI呼び出し情報によって示される第2の仮想マシン822とのインタラクション頻度が第2の条件を満たしているかどうかを決定し、第1の仮想マシン822と第2の仮想マシン822とのインタラクション頻度が第2の条件を満たしていると決定した場合には、アプリケーショントポロジ関係が第1の仮想マシン822と第2の仮想マシン822との間に存在していると決定するようにさらに構成される。
【０１１９】
さらに、API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中の通信プロトコルおよび第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む。
【０１２０】
トポロジ探索サーバ81は、第1の仮想マシン822内の少なくとも2セットのAPI呼び出し情報と第2の仮想マシン822内の少なくとも2セットのAPI呼び出し情報とを分析し、第1の仮想マシン822と第2の仮想マシン822とのインタラクション頻度を決定し、インタラクション頻度をプリセット頻度と比較し、インタラクション頻度がプリセット頻度より大きい場合には、インタラクション頻度が第2の条件を満たしていると決定するように特に構成される。
【０１２１】
トポロジ探索サーバ81は、第1の仮想マシン822と第2の仮想マシン822とが同一のネットワークセグメント内にあるかどうかを決定し、第1の仮想マシン822と第2の仮想マシン822とが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従ってインタラクション頻度またはプリセット頻度のうちの1つを修正し、修正したインタラクション頻度をプリセット頻度と比較する、またはインタラクション頻度を修正したプリセット頻度と比較するように特に構成される。
【０１２２】
トポロジ探索サーバ81は、少なくとも2セットのAPI呼び出し情報を複数の仮想マシンのデプロイされたホスト82内のログファイルから別々に読み込むように特に構成される、または、
トポロジ探索サーバ81は、複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された少なくとも2セットのAPI呼び出し情報を受信するように特に構成される。
【０１２３】
さらに、API呼び出しは、入力API関数呼び出しと出力API関数呼び出しとを含む。
【０１２４】
アプリケーショントポロジを探索するためのシステム80は、
APIが呼び出されて、パケットを仮想マシン822が位置しているVMMに送信する、または、VMMによって転送されたパケットを受信する場合には、API呼び出し情報を仮想マシン822のデプロイされたホスト82内のログファイルに書き込むようにさらに構成される、仮想マシン822、または、
パケット伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を仮想マシン822のデプロイされたホスト82内のログファイルに書き込むように構成される、仮想マシン822のデプロイされたホスト内のエージェントモジュールをさらに備える。
【０１２５】
図9に示したように、図9は、本発明の実施形態による、前述のシステムに対応する、トポロジ探索サーバを示しており、トポロジ探索サーバは、
少なくとも2セットのアプリケーションプログラミングインターフェースAPI呼び出し情報を収集するように構成される、取得ユニット91であって、API呼び出し情報の各セットは、1つのAPI呼び出しに対応しており、API呼び出し情報の各セットは、API呼び出しに対応する仮想マシンの識別子、API呼び出しの発生時間、およびAPI呼び出しのパケットフローの方向を含む、取得ユニット91と、
少なくとも2セットのアプリケーションプログラミングインターフェースAPI呼び出し情報を分析し、第1の条件を満たしている第1のAPI呼び出し情報と第2のAPI呼び出し情報とを決定するように構成される、分析ユニット92であって、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中のパケットフローの方向と第2のAPI呼び出し情報中のパケットフローの方向とが互いに反対となっていることと、第1のAPI呼び出し情報中のAPI呼び出しの発生時間と第2のAPI呼び出し情報中のAPI呼び出しの発生時間との間の差がプリセット閾値以下であることとを含む、分析ユニット92とを備える。
【０１２６】
分析ユニット92は、第1のAPI呼び出し情報によって示される第1の仮想マシンと第2のAPI呼び出し情報によって示される第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定し、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度が第2の条件を満たしている場合には、アプリケーショントポロジ関係が第1の仮想マシンと第2の仮想マシンとの間に存在していると決定するようにさらに構成される。
【０１２７】
さらに、API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、第1のAPI呼び出し情報と第2のAPI呼び出し情報とが第1の条件を満たしているということは、第1のAPI呼び出し情報中の通信プロトコルおよび第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む。
【０１２８】
分析ユニット92は、第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析し、第1の仮想マシンと第2の仮想マシンとのインタラクション頻度を決定し、インタラクション頻度をプリセット頻度と比較し、インタラクション頻度がプリセット頻度より大きい場合には、インタラクション頻度が第2の条件を満たしていると決定するように特に構成される。
【０１２９】
分析ユニット92は、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、第1の仮想マシンと第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従ってインタラクション頻度またはプリセット頻度のうちの1つを修正するように特に構成される。
【０１３０】
分析ユニット92は、修正したインタラクション頻度をプリセット頻度と比較するように特に構成され、またはインタラクション頻度を修正したプリセット頻度と比較する。
【０１３１】
取得ユニット91は、少なくとも2セットのAPI呼び出し情報を複数の仮想マシンのデプロイされたホスト内のログファイルから別々に読み込むように特に構成される、または、
取得ユニット91は、複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された少なくとも2セットのAPI呼び出し情報を受信するように特に構成される。
【０１３２】
API呼び出しは、入力API関数呼び出しと出力API関数呼び出しとを含む。
【０１３３】
本発明の本実施形態によって提供したアプリケーショントポロジ関係を探索するための方法、装置、およびシステムによれば、パケット伝送プロセスにおけるAPI呼び出し情報を修正し、インタラクションが2セットのAPI呼び出し情報に対応する2つの仮想マシン間に存在しているかどうかを、2セットのAPI呼び出し情報が第1の条件を満たしているかどうかを照合することによって決定している。前述の方式を使用して、トポロジ探索サーバは、仮想マシンの、収集したAPI呼び出し情報に関わる、インタラクション頻度を決定し得るし、仮想マシン間のアプリケーショントポロジ関係を仮想マシンのインタラクション頻度に従って決定する。前述のソリューションは、仮想化シナリオにおける仮想マシン間のアプリケーショントポロジ関係を探索するための方法を提供している、ここで、仮想マシン間のアプリケーショントポロジ関係はパケット伝送プロセスにおいて生成されたAPI呼び出し情報を分析することによって決定されており、したがって、ソリューションの複雑度は相対的に低くなる。
【０１３４】
図8および図9に対応する実施形態においては、仮想マシン、収集エージェント、仮想スイッチ、およびトポロジ探索サーバが機能ユニット/機能モジュールの形式で示されている。ここでは、「ユニット/モジュール」は、1つまたは複数のソフトウェアまたはファームウェアプログラムを実行するように構成される、特定用途向け集積回路(application-specific integrated circuit、ASIC)、回路、プロセッサ、およびメモリ、集積論理回路、および/または前述の機能を提供することができる別のデバイスを指し得る。簡略した実施形態においては、仮想マシン、収集エージェント、仮想スイッチ、およびトポロジ探索サーバは図2に示した形式を使用し得ると当業者は思い至るであろう。例えば、取得ユニット901および処理ユニット902は、図2中のプロセッサおよびメモリを使用して実施され得る。
【０１３５】
本発明の実施形態は、コンピュータ記憶媒体をさらに提供しており、ここで、コンピュータ記憶媒体は、図8および図9に示したデバイスによって使用されるコンピュータソフトウェア命令を記憶し、前述の方法の実施形態を実行するように設計されたプログラムを含むように構成される。アプリケーショントポロジ関係を探索するための方法は、保存されているプログラムを実行することによって実施され得る。
【０１３６】
実施形態を参照して本明細書にて本発明を説明しているが、保護されるべき本発明を実施するプロセスにおいて、当業者は、添付の図面、開示した内容、および添付の特許請求の範囲を参照することによって、開示した実施形態の他の変更を理解および実施し得る。特許請求の範囲において、「含む」(comprising)という用語は、他の構成要素の部分またはステップを除外しておらず、「1つ」または「一部」は、複数のケースを除外していない。単一のプロセッサまたは別のユニットは、特許請求の範囲に記載したいくつかの機能を実施し得る。いくつかの手段を互いに異なる従属請求項に記録しているが、これらの手段を組み合わせて良好な効果を生み出すことができないということを意味しているわけではない。
【０１３７】
本発明の実施形態が方法、装置(デバイス)、またはコンピュータプログラム製品として提供され得ることを当業者は理解すべきである。したがって、本発明は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組合せを有する実施形態の形式を使用し得る。さらに、本発明は、コンピュータ利用可能プログラムコードを含む1つまたは複数のコンピュータ利用可能記憶媒体(ディスクメモリ、CD-ROM、光学メモリなどを含むがこれに限定されない)上で実施されるコンピュータプログラム製品の形式を使用し得る。コンピュータプログラムは、適切な媒体に記憶/分散されており、他のハードウェアとともに提供されまたはハードウェアの一部として機能を果たし、インターネットまたは別の有線または無線通信システムを使用するなどして他の分散方式も使用し得る。
【０１３８】
本発明は、本発明の実施形態による、方法、装置(デバイス)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明している。コンピュータプログラム命令はフローチャートおよび/またはブロック図中の各プロセスおよび/または各ブロックならびにフローチャートおよび/またはブロック図中のプロセスおよび/またはブロックの組合せを実施するために使用され得ることを理解されたい。本コンピュータプログラム命令は、機械を生成するために、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または任意の他のプログラマブルデータ処理デバイスのプロセッサに提供され得る、その結果、コンピュータまたは任意の他のプログラマブルデータ処理デバイスのプロセッサによって実行される命令は、フローチャート内の1つまたは複数のプロセスにおけるおよび/またはブロック図中の1つまたは複数のブロックにおける特定の機能を実施するための装置を生成する。
【０１３９】
本コンピュータプログラム命令はまた、コンピュータまたは任意の他のプログラマブルデータ処理デバイスに特定の方式で動作するように命令することができるコンピュータ可読メモリに記憶されていてもよく、その結果、コンピュータ可読メモリに記憶されている命令は、命令装置に含まれているアーティファクトを生成する。命令装置は、フローチャート内の1つまたは複数のプロセスおよび/またはブロック図中の1つまたは複数のブロックにおける特定の機能を実施する。
【０１４０】
本コンピュータプログラム命令はまた、コンピュータまたは別のプログラマブルデータ処理デバイス上にロードされてもよく、その結果、一連の演算およびステップは、コンピュータまたは別のプログラマブルデバイス上で実行され、それによって、コンピュータ実装処理を生成している。したがって、コンピュータまたは別のプログラマブルデバイス上で実行される命令は、フローチャート内の1つまたは複数のプロセスおよび/またはブロック図中の1つまたは複数のブロックにおける特定の機能を実施するためのステップを提供している。
【０１４１】
本発明を特定の特徴およびその実施形態を参照して説明しているが、精神および本発明の範囲を逸脱しない限り、様々な修正および組合せを本発明に対してなし得ることは明らかであろう。それに応じて、本明細書および添付の図面は、添付の特許請求の範囲によって定義した本発明の例示的な説明にすぎず、本発明の範囲における任意のおよびすべての修正、変更、組合せ、または均等物を包含するものとみなされる。当業者が、本発明の範囲を逸脱しない限り、様々な修正および変形を本発明になし得ることは明白であろう。本発明は、これらの修正および変形が以下の特許請求の範囲およびそれらの均等物の技術によって定義される保護の範囲に含まれているならば、それらを包含することを意図している。
【符号の説明】
【０１４２】
200  コンピュータデバイス
201  プロセッサ
202  通信バス
203  メモリ
204  通信インターフェース
205  出力デバイス
206  入力デバイス
208  プロセッサ
80  システム
81  トポロジ探索サーバ
82  ホスト
822  仮想マシン
901  取得ユニット
902  分析ユニット
【図１Ａ】
0006571161.tif 000002
【図１Ｂ】
0006571161.tif 000003
【図１Ｃ】
0006571161.tif 000004
【図２】
0006571161.tif 000005
【図３Ａ】
0006571161.tif 000006
【図３Ｂ】
0006571161.tif 000007
【図３Ｃ】
0006571161.tif 000008
【図４】
0006571161.tif 000009
【図５】
0006571161.tif 000010
【図６】
0006571161.tif 000011
【図７】
0006571161.tif 000012
【図８】
0006571161.tif 000013
【図９】
0006571161.tif 000014