JP6571161B2 - アプリケーショントポロジ関係を探索するための方法、装置、およびシステム - Google Patents

アプリケーショントポロジ関係を探索するための方法、装置、およびシステム Download PDF

Info

Publication number
JP6571161B2
JP6571161B2 JP2017505627A JP2017505627A JP6571161B2 JP 6571161 B2 JP6571161 B2 JP 6571161B2 JP 2017505627 A JP2017505627 A JP 2017505627A JP 2017505627 A JP2017505627 A JP 2017505627A JP 6571161 B2 JP6571161 B2 JP 6571161B2
Authority
JP
Japan
Prior art keywords
api call
call information
virtual machine
api
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017505627A
Other languages
English (en)
Other versions
JP2018503275A (ja
Inventor
挺 ▲劉▼
挺 ▲劉▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018503275A publication Critical patent/JP2018503275A/ja
Application granted granted Critical
Publication of JP6571161B2 publication Critical patent/JP6571161B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、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 分析ユニット

Claims (17)

  1. アプリケーショントポロジ関係を探索するための方法であって、前記方法は、
    少なくとも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の仮想マシンとの間に存在していると決定するステップとを含む、方法。
  2. API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項1に記載の方法。
  3. 前記第1の仮想マシンと前記第2の仮想マシンとのインタラクション頻度が第2の条件を満たしているかどうかを決定するステップは、
    前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析するステップと、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定するステップと、前記インタラクション頻度をプリセット頻度と比較するステップと、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するステップを含む、請求項1または2に記載の方法。
  4. 前記インタラクション頻度をプリセット頻度と比較するステップの前に、前記方法は、
    前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正するステップをさらに含み、
    前記インタラクション頻度をプリセット頻度と比較するステップは、
    修正したインタラクション頻度を前記プリセット頻度と比較するステップ、または、前記インタラクション頻度を修正したプリセット頻度と比較するステップを含む、請求項3に記載の方法。
  5. 前記少なくとも2セットのAPI呼び出し情報を収集するステップは、
    前記複数の仮想マシンのデプロイされたホスト内のログファイルから前記少なくとも2セットのAPI呼び出し情報を別々に読み込むステップ、または、
    前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するステップを含む、請求項1から4のいずれか一項に記載の方法。
  6. 前記複数の仮想マシンのデプロイされたホスト内のログファイルから前記少なくとも2セットのAPI呼び出し情報を別々に読み込むステップの前に、前記方法は、
    方式1: 仮想マシンがAPIを呼び出してパケットを前記仮想マシンが位置しているVMMに送信する場合には、前記仮想マシン、前記VMM内の仮想スイッチ、または前記VMMのうちのいずれか1つによって、API呼び出し情報を前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに書き込むステップ、
    方式2: 仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに、パケット伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を書き込むステップ、または、
    方式3: 仮想マシンのVMMがAPIを呼び出してパケットを前記仮想マシンに送信する場合には、前記仮想マシン、前記VMM内の仮想スイッチ、または前記VMMのうちのいずれか1つによって、API呼び出し情報を前記仮想マシンの前記デプロイされたホスト内の前記ログファイルに書き込むステップ、のうちの少なくとも1つをさらに含む、請求項5に記載の方法。
  7. 前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するステップの前に、前記方法は、
    前記ホスト内のパケットの伝送プロセスを、仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、監視して、前記伝送プロセスにおけるAPI呼び出しに対応するAPI呼び出し情報を記録するステップ、または、
    仮想マシンの前記デプロイされたホスト内のエージェントモジュールによって、前記ホスト内のパケット伝送プロセスにおけるAPI呼び出しに対応するとともに、前記仮想マシン、仮想スイッチ、またはVMMによって送信されたAPI呼び出し情報を受信するステップをさらに含む、請求項5に記載の方法。
  8. トポロジ探索サーバであって、
    少なくとも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の仮想マシンとの間に存在していると決定するようにさらに構成される、トポロジ探索サーバ。
  9. API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項8に記載のトポロジ探索サーバ。
  10. 前記分析ユニットは、前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定し、前記インタラクション頻度をプリセット頻度と比較し、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するように特に構成される、請求項8または9に記載のトポロジ探索サーバ。
  11. 前記分析ユニットは、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正するように特に構成され、
    前記分析ユニットは、修正したインタラクション頻度を前記プリセット頻度と比較するように特に構成され、または前記インタラクション頻度を修正したプリセット頻度と比較する、請求項10に記載のトポロジ探索サーバ。
  12. 前記取得ユニットは、前記少なくとも2セットのAPI呼び出し情報を前記複数の仮想マシンのデプロイされたホスト内のログファイルから別々に読み込むように特に構成される、または、
    前記取得ユニットは、前記複数の仮想マシンのデプロイされたホスト内のエージェントモジュールによって報告された前記少なくとも2セットのAPI呼び出し情報を受信するように特に構成される、請求項10または11に記載のトポロジ探索サーバ。
  13. アプリケーショントポロジ関係を探索するためのシステムであって、前記システムは、トポロジ探索サーバと少なくとも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の仮想マシンとの間に存在していると決定するようにさらに構成される、システム。
  14. API呼び出し情報の各セットは、通信プロトコルをさらに含み、それに応じて、前記第1のAPI呼び出し情報と前記第2のAPI呼び出し情報とが前記第1の条件を満たしているということは、前記第1のAPI呼び出し情報中の通信プロトコルおよび前記第2のAPI呼び出し情報中の通信プロトコルが同一であることをさらに含む、請求項13に記載のシステム。
  15. 前記トポロジ探索サーバは、前記第1の仮想マシン内の少なくとも2セットのAPI呼び出し情報と前記第2の仮想マシン内の少なくとも2セットのAPI呼び出し情報とを分析し、前記第1の仮想マシンと前記第2の仮想マシンとの前記インタラクション頻度を決定し、前記インタラクション頻度をプリセット頻度と比較し、前記インタラクション頻度が前記プリセット頻度より大きい場合には、前記インタラクション頻度が前記第2の条件を満たしていると決定するように特に構成される、請求項13または14に記載のシステム。
  16. 前記トポロジ探索サーバは、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にあるかどうかを決定し、前記第1の仮想マシンと前記第2の仮想マシンとが同一のネットワークセグメント内にある場合には、プリセットされた重み付け係数に従って前記インタラクション頻度または前記プリセット頻度のうちの1つを修正し、修正したインタラクション頻度を前記プリセット頻度と比較する、または前記インタラクション頻度を修正したプリセット頻度と比較するように特に構成される、請求項15に記載のシステム。
  17. コンピュータ可読記録媒体に記録されたプログラムであって、前記プログラムは、実行されると、コンピュータに請求項1から7のいずれか一項に記載の方法を実行させる、プログラム。
JP2017505627A 2015-12-21 2015-12-21 アプリケーショントポロジ関係を探索するための方法、装置、およびシステム Active JP6571161B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/098125 WO2017107018A1 (zh) 2015-12-21 2015-12-21 应用拓扑关系发现的方法、装置和系统

Publications (2)

Publication Number Publication Date
JP2018503275A JP2018503275A (ja) 2018-02-01
JP6571161B2 true JP6571161B2 (ja) 2019-09-04

Family

ID=58238289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017505627A Active JP6571161B2 (ja) 2015-12-21 2015-12-21 アプリケーショントポロジ関係を探索するための方法、装置、およびシステム

Country Status (6)

Country Link
US (1) US10459754B2 (ja)
EP (1) EP3226493B1 (ja)
JP (1) JP6571161B2 (ja)
KR (1) KR101979363B1 (ja)
CN (2) CN106489251B (ja)
WO (1) WO2017107018A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9912739B1 (en) * 2017-01-12 2018-03-06 Red Hat Israel, Ltd. Open virtualized multitenant network scheme servicing virtual machine and container based connectivity
CN108964959B (zh) * 2017-05-27 2022-02-25 阿里巴巴集团控股有限公司 一种用于虚拟化平台的网卡直通系统及数据包监管方法
CN109428824B (zh) * 2017-08-28 2021-09-17 中国电信股份有限公司 主机拓扑生成方法和系统
CN107861821B (zh) * 2017-10-26 2022-02-25 北京百度网讯科技有限公司 模块调用关系的挖掘方法、装置及计算机可读介质
CN109802842B (zh) * 2017-11-16 2021-12-03 华为技术有限公司 应用拓扑的生成方法及相关设备
CN109905436A (zh) * 2017-12-08 2019-06-18 华为软件技术有限公司 根因事件的确定方法、装置及存储介质
US10698664B2 (en) * 2017-12-21 2020-06-30 Fujitsu Limited API mashup generation
CN108038236A (zh) * 2017-12-27 2018-05-15 深信服科技股份有限公司 文件共享方法、装置、系统及可读存储介质
CN108388501B (zh) * 2018-01-10 2021-09-17 贝壳找房(北京)科技有限公司 一种系统间集成测试方法
CN110196750B (zh) * 2018-02-26 2023-02-24 华为技术有限公司 一种设备的分配方法及其相关设备
WO2020044192A1 (en) 2018-08-26 2020-03-05 Celeno Communications (Israel) Ltd. Wi-fi radar detection using synchronized wireless access point
CN109525515B (zh) * 2018-10-23 2021-04-30 郑州云海信息技术有限公司 一种云平台中网卡的管理方法和装置
US11240160B2 (en) * 2018-12-28 2022-02-01 Alibaba Group Holding Limited Method, apparatus, and computer-readable storage medium for network control
US11105912B2 (en) 2018-12-31 2021-08-31 Celeno Communications (Israel) Ltd. Coherent Wi-Fi radar using wireless access point
US11102750B2 (en) * 2019-01-01 2021-08-24 Celeno Communications (Israel) Ltd. Positioning system based on distributed transmission and reception of Wi-Fi signals
US11108642B2 (en) 2019-04-22 2021-08-31 Vmware, Inc. Method and apparatus for non-intrusive agentless platform-agnostic application topology discovery
US11055191B2 (en) * 2019-05-17 2021-07-06 Citrix Systems, Inc. Service graph highlights missing nodes and links
US20210173688A1 (en) * 2019-12-04 2021-06-10 Vmware, Inc. Machine learning based application discovery method using networks flow information within a computing environment
CN113722020B (zh) * 2020-05-26 2024-06-11 腾讯科技(深圳)有限公司 接口调用方法、装置和计算机可读存储介质
US11262990B2 (en) * 2020-05-26 2022-03-01 International Business Machines Corporation Application topology discovery
CN114157931A (zh) * 2020-09-07 2022-03-08 中兴通讯股份有限公司 波分设备的拓扑关系确定方法、系统、设备及存储介质
CN114697319B (zh) * 2020-12-30 2023-06-16 华为云计算技术有限公司 一种公有云的租户业务管理方法及装置
US11973655B2 (en) 2021-03-05 2024-04-30 VMware LLC SDL cache for O-RAN
CN113778423B (zh) * 2021-09-10 2024-03-01 上海幻电信息科技有限公司 接口文档生成方法及系统
CN114327748B (zh) * 2021-11-29 2022-10-18 北京志凌海纳科技有限公司 虚拟机交互方法、装置、非易失性存储介质及处理器
CN113992428B (zh) * 2021-11-29 2024-02-09 天融信雄安网络安全技术有限公司 容器环境下的入侵防御方法及装置、电子设备、存储介质
US20230171303A1 (en) * 2021-12-01 2023-06-01 X Development Llc Dynamic allocation of platform-independent machine learning state machines between edge-based and cloud-based computing resources
US20230229479A1 (en) * 2022-01-15 2023-07-20 Vmware, Inc. Application topology derivation in a virtualized computing system
CN114726909A (zh) * 2022-03-15 2022-07-08 阿里云计算有限公司 云服务迁移信息处理方法、装置、设备、介质及产品
CN115333966B (zh) * 2022-08-11 2023-05-12 天翼数字生活科技有限公司 一种基于拓扑的Nginx日志分析方法、系统及设备
KR102486087B1 (ko) * 2022-09-16 2023-01-09 오픈나루 주식회사 Msa에서의 호출관계 추적 및 이에 따른 로그정보 디스플레이 방법
US20240205806A1 (en) 2022-12-19 2024-06-20 Vmware, Inc. Provisioning and deploying ran applications in a ran system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099580B1 (en) * 2001-11-02 2006-08-29 Ciena Corporation Method and system for communicating network topology in an optical communications network
US8255546B2 (en) 2005-09-30 2012-08-28 Microsoft Corporation Peer name resolution protocol simple application program interface
US7774446B2 (en) * 2005-12-30 2010-08-10 Microsoft Corporation Discovering, defining, and implementing computer application topologies
JP5458308B2 (ja) * 2010-06-11 2014-04-02 株式会社日立製作所 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置
CN102137007B (zh) * 2011-01-17 2014-05-21 华为技术有限公司 网络拓扑生成方法、系统、协调者
CN102082692B (zh) 2011-01-24 2012-10-17 华为技术有限公司 基于网络数据流向的虚拟机迁移方法、设备和集群系统
CN102306156A (zh) * 2011-07-05 2012-01-04 成都智汇科技有限公司 用于交互式地编辑gis拓扑数据集的方法
US8943499B2 (en) * 2012-04-30 2015-01-27 Hewlett-Packard Development Company, L.P. Providing a virtual network topology in a data center
US9898317B2 (en) * 2012-06-06 2018-02-20 Juniper Networks, Inc. Physical path determination for virtual network packet flows
US9183033B2 (en) * 2012-12-06 2015-11-10 Industrial Technology Research Institute Method and system for analyzing root causes of relating performance issues among virtual machines to physical machines
WO2014110447A1 (en) * 2013-01-12 2014-07-17 Lyatiss, Inc. User interface for visualizing resource performance and managing resources in cloud or distributed systems
US20130219372A1 (en) * 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US10069677B2 (en) * 2013-04-06 2018-09-04 Citrix Systems, Inc. Systems and methods to collect logs from multiple nodes in a cluster of load balancers
CN103281248B (zh) * 2013-06-09 2016-03-30 北京星网锐捷网络技术有限公司 网络拓扑的发现方法、装置和系统
US9397896B2 (en) * 2013-11-07 2016-07-19 International Business Machines Corporation Modeling computer network topology based on dynamic usage relationships
US9722927B2 (en) * 2014-06-05 2017-08-01 Futurewei Technologies, Inc. Service chain topology map construction
CN104363159B (zh) * 2014-07-02 2018-04-06 北京邮电大学 一种基于软件定义网络的开放虚拟网络构建系统和方法
CN105446792B (zh) * 2014-08-27 2019-09-24 联想(北京)有限公司 一种虚拟机的部署方法、部署装置和管理节点
CN104468219B (zh) * 2014-12-11 2019-01-08 新华三技术有限公司 虚拟组网网络拓扑发现方法和设备
CN104618246A (zh) * 2015-02-12 2015-05-13 浪潮电子信息产业股份有限公司 一种面向xen虚拟化环境的网络拓扑发现方法

Also Published As

Publication number Publication date
EP3226493A1 (en) 2017-10-04
BR112017000458A2 (pt) 2017-11-07
KR101979363B1 (ko) 2019-05-16
BR112017000458A8 (pt) 2022-08-23
KR20180088577A (ko) 2018-08-06
WO2017107018A1 (zh) 2017-06-29
CN110865867B (zh) 2023-08-25
CN106489251A (zh) 2017-03-08
EP3226493B1 (en) 2020-03-25
EP3226493A4 (en) 2018-01-03
JP2018503275A (ja) 2018-02-01
CN106489251B (zh) 2019-10-18
US20180121226A1 (en) 2018-05-03
CN110865867A (zh) 2020-03-06
US10459754B2 (en) 2019-10-29

Similar Documents

Publication Publication Date Title
JP6571161B2 (ja) アプリケーショントポロジ関係を探索するための方法、装置、およびシステム
US11870702B1 (en) Dynamic resource allocation of cloud instances and enterprise application migration to cloud architecture
US20230205675A1 (en) Agentless distributed monitoring of microservices through a virtual switch
US11068314B2 (en) Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
KR100928603B1 (ko) 가상 머신 정보를 최적화하는 방법 및 시스템, 머신 액세스가능 매체
JP5458308B2 (ja) 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置
EP3606008A1 (en) Method and device for realizing resource scheduling
US11093296B2 (en) System, virtualization control apparatus, method for controlling a virtualization control apparatus, and program
US20130227566A1 (en) Data collection method and information processing system
US10089128B2 (en) Application aware service policy enforcement and autonomous feedback-based remediation
US10089163B2 (en) Automatic discovery and prioritization of fault domains
US20140032753A1 (en) Computer system and node search method
US9639379B1 (en) Dynamic configuration of virtual machines
US20190334776A1 (en) Creating and Using Service Control Functions
US9378039B2 (en) Virtual machine storage replication schemes
US10423439B1 (en) Automatic determination of a virtual machine&#39;s dependencies on storage virtualization
US10326826B1 (en) Migrating an on premises workload to a web services platform
US10402252B1 (en) Alternative event reporting for peripheral devices
US10824456B2 (en) System traffic analyzers to request co-location of virtual machines in frequent communication
US11875175B2 (en) Providing physical host hardware state information to virtual machines deployed on the physical host
JP2019502990A (ja) ラック内のノードのための分散型オペレーティング・システム機能
US20220197874A1 (en) Efficient storage of key-value data with schema integration
US20240241770A1 (en) Workload summarization for congestion avoidance in computer servers
BR112017000458B1 (pt) Método, aparelho e sistema para descobrir uma relação de topologia de aplicativo

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190807

R150 Certificate of patent or registration of utility model

Ref document number: 6571161

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250