KR101979363B1 - 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템 - Google Patents

애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템 Download PDF

Info

Publication number
KR101979363B1
KR101979363B1 KR1020177001923A KR20177001923A KR101979363B1 KR 101979363 B1 KR101979363 B1 KR 101979363B1 KR 1020177001923 A KR1020177001923 A KR 1020177001923A KR 20177001923 A KR20177001923 A KR 20177001923A KR 101979363 B1 KR101979363 B1 KR 101979363B1
Authority
KR
South Korea
Prior art keywords
api call
call information
virtual machine
api
virtual
Prior art date
Application number
KR1020177001923A
Other languages
English (en)
Other versions
KR20180088577A (ko
Inventor
팅 류
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
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 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20180088577A publication Critical patent/KR20180088577A/ko
Application granted granted Critical
Publication of KR101979363B1 publication Critical patent/KR101979363B1/ko

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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/028Dynamic adaptation of the update intervals, e.g. event-triggered updates
    • 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)

Abstract

본 출원은 IT 기술 분야에 관한 것이고, 특히 버추얼 머신 간의 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템에 관한 것이다.
본 출원의 이 실시예에 의해 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법, 장치, 및 시스템에 따르면, 패킷 전송 과정에서 API 호출 정보가 기록되고, 토폴로지 발견 서버가 수집된 API 호출 정보를 분석하여, 버추얼 머신 클러스터 내의 버추얼 머신 간에 상호작용이 존재하는지 여부를 결정한다. 전술한 분석 방식을 사용하여, 상기 토폴로지 발견 서버는 나아가, 상기 수집된 API 호출 정보가 관련되는 버추얼 머신 간의 상호작용 빈도를 더 결정하고, 상기 버추얼 머신의 상기 상호작용 빈도에 따라 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계를 결정할 수 있다. 전술한 해결수단은 버추얼화 시나리오 내의 버추얼 머신 간의 애플리케이션 토폴로지 관계를 발견하기 위한 방법을 제공하고, 여기서 여기서 버추얼 머신 간의 애플리케이션 토폴로지 관계는 패킷 전송 과정에서 생성되는 API 호출 정보를 분석함으로써 결정되어, 그러므로, 상기 해결수단의 복잡도는 비교적 낮다.

Description

애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템{METHOD, APPARATUS, AND SYSTEM FOR DISCOVERING APPLICATION TOPOLOGY RELATIONSHIP}
본 발명은 IT 기술 분야에 관한 것이고, 특히 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템에 관한 것이다.
정보 시대의 도래에 따라, 컴퓨터 네트워크에 의존하는 것은 컴퓨터 네트워크 운영의 신뢰성이 매우 중요하도록 하고 높은 수준의 요구가 네트워크 관리에 부과된다. 개방형 시스템 간의 상호접속(Open System Interconnection, OSI)의 정의에 따라, 네트워크 관리에 대해 주로 5개의 기능 영역이 있다: 오류 관리, 구성 관리, 성능 관리, 보안 관리 및 회계 관리. 상기 5개의 기능 영역 중에서, 구성 관리가 기초이고, 구성 관리의 주 기능은 네트워크 토폴로지 구조를 발견하는 것, 네트워크 장치의 구성 상태를 감시하고 관리하는 것을 포함한다. 모든 다른 기능은 상기 네트워크 토폴로지 구조에 기초한다. 네트워크 토폴로지 발견은 네트워크 내의 종단 간의 연결관계를 위해 수행되고, 주 목적은 네트워크 노드의 존재 정보 및 상기 네트워크 노드의 연결 관계 정보를 획득 및 유지하고, 상기 존재 정보 및 상기 연결 관계 정보에 기초하여 전체 네트워크의 토폴로지 다이어그램을 작성하는 것이다.
네트워크 토폴로지의 구체적 형태로서, IT 시스템 내의 애플리케이션 토폴로지(Application Topology)는 버추얼 머신 간의 네트워크 통신 관계이고, 상기 버추얼 머신 간의 네트워크 통신은 상기 버추얼 머신에 의해 실행되는 애플리케이션에 기초하여 생성된다. 더 구체적으로, 상기 애플리케이션 토폴로지는 상기 IT 시스템 내의 호스트(서버 같은) 내의 애플리케이션 구성요소(상기 애플리케이션을 실행하는 프로그램, 서비스, 구성요소, 및 버추얼 머신)의 배치 관계 및 상기 배치된 애플리케이션 구성요소 간의 상호작용 관계(서비스 요청 및 응답 같은)이다.
기존의 애플리케이션 토폴로지 발견은 능동 감지 발견이다. 능동 감지는, 네트워크 목표물에 관련된 감지 데이터 패킷을 송신하고, 결과를 관찰, 기록 및 회신함으로써, 애플리케이션 구조 및 애플리케이션 사용자를 연구하는 동작이다. 다량의 데이터가 네트워크에 송신될 필요가 있기 때문에, 상기 네트워크 내의 부가가 증가하고, 토폴로지 발견의 정확도는 낮다. 상기 종래 기술에서는, 버추얼화 환경에서 감지 데이터 패킷을 사용하지 않고 애플리케이션 토폴로지를 발견하기 위한 방법에 대해 결핍이 있었다.
본 출원은 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템을 설명하고, 버추얼 머신 간의 애플리케이션 토폴로지 관계를 구축하는 복잡도를 감소시키기 위해, 버추얼화 환경에 대한 애플리케이션 토폴로지 발견 해결수단을 제공한다.
일 측면에 따라, 이 출원은 애플리케이션 토폴로지 관계의 발견 방법을 제공하고, 상기 방법은, 적어도 두 세트의 애플리케이션 프로그래밍 인터페이스(application programming interface, API) 호출 정보를 수집하는 단계; 상기 적어도 두 세트의 API 호출 정보를 분석하고, 제1 조건을 만족하는 제1 API 호출 정보 및 제2 API 호출 정보를 결정하는 단계; 상기 제1 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 판정하는 단계; 및 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상기 상호작용 빈도가 상기 제2 조건을 만족하면, 애플리케이션 토폴로지 관계가 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신 간에 존재한다고 결정하는 단계 를 포함하고, API 호출 정보의 각 세트는 하나의 API 호출에 대응하고, API 호출 정보의 각 세트는, 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함하고, 상기 제1 API 호출 정보 및 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 제1 API 호출 정보 내의 패킷 흐름 방향 및 제2 API 호출 정보 내의 패킷 흐름 방향이 서로 반대인 것, 및 상기 제1 API 호출 정보 내의 API 호출의 발생 시간 및 상기 제2 API 호출 정보 내의 API 호출의 발생 시간 간의 차이가 현재 문턱값보다 작거나 같은 것을 포함한다.
본 출원의 이 실시예에 의해 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법에 따르면, 패킷 전송 과정 중의 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 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 결정하는 단계는, 상기 제1 버추얼 머신 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신 내의 적어도 두 세트의 API 호출 정보를 분석하는 단계; 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도를 결정하는 단계; 상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계; 및 상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하는 단계를 포함한다. 상기 기 설정된 빈도를 버추얼 머신 간에 애플리케이션 토폴로지 관계가 존재하는지 여부를 결정하기 위한 기초로서 사용함으로써, 이 기술분야의 통상의 기술자는 애플리케이션 토폴로지 관계 결정의 엄격성을 제어하기 위해 전술한 기 설정된 빈도를 조정할 수 있다. 상기 기 설정된 빈도는 세트 필요에 따라 설정될 수 있고, 이는 본 발명의 실시예에 의해 제한되지 않는다.
가능한 구현 방식에서, 상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계 이전에, 상기 방법은, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정하는 단계, 및 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하는 단계를 더 포함하고,
상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계는, 정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하는 단계; 또는 상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하는 단계를 포함한다.
가능한 구현 방식에서, 토폴로지 발견 서버는 적어도 하기 2개의 방식으로, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정할 수 있다:
방식 1: 상기 제1 버추얼 머신의 IP 주소 및 상기 제2 버추얼 머신의 IP 주소가 동일한 네트워크 세그먼트 내에 있는지 여부를 결정한다.
방식 2: 상기 제1 버추얼 머신의 VXLAN (Virtual eXtensible local area 네트워크) 식별자 및 상기 제2 버추얼 머신의 식별자가 동일한지 여부를 판단하고, 상기 2개의 식별자가 동일하면, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있다는 것을 나타낸다.
상이한 네트워크 세그먼트 내에 있는 버추얼 머신보다, 동일한 네트워크 세그먼트 내에 있는 버추얼 머신에 대해 애플리케이션 토폴로지 관계에 있을 가능성이 더 높다. 그러므로, 본 발명의 실시예에서, 애플리케이션 토폴로지 관계를 발견하는 정확성을 증가시키기 위해, 동일한 네트워크 세그먼트 내의 버추얼 머신의 상호작용 빈도에 대해 가중치 부여가 수행되거나 기 설정된 빈도가 감소된다.
가능한 구현 방식에서, 상기 제1 버추얼 머신로부터 상기 제2 버추얼 머신에 패킷을 전송하는 과정에서, API 호출 정보가 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 배치된 호스트 내의 로그 파일에 저장될 수 있고, 상기 토폴로지 발견 서버는 상기 로그 파일로부터 상기 API 호출 정보를 독출한다. 대안적으로, 에이전트 모듈이 각각의 호스트 내에 설치되고, 상기 토폴로지 발견 서버가 상기 호스트의 상기 에이전트 모듈이 보고하는 API 호출 정보를 수신한다.
가능한 구현 방식에서, 패킷 전송 과정에서, API 호출 정보가 하기 방식으로 로그 파일에 기록될 수 있다:
버추얼 머신이 API를 호출하여 상기 버추얼 머신이 위치한 VMM에 패킷을 송신할 때, 상기 버추얼 머신, 상기 VMM 내의 버추얼 스위치, 또는 상기 VMM이 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에 API 호출 정보를 기록한다;
버추얼 머신의 상기 배치된 호스트 내의 에이전트 모듈이, 상기 호스트 내의 패킷의 전송 과정을 감시하고, 상기 버추얼 머신의 상기 배치된 호스트 내의 로그 파일에 상기 전송 과정 내의 API 호출에 대응하는 API 호출 정보를 기록한다;
버추얼 머신의 상기 배치된 호스트 내의 에이전트 모듈이, 상기 버추얼 머신, 상기 VMM 내의 버추얼 스위치, 또는 상기 VMM이 송신하는, 상기 호스트 내의 패킷 전송 과정 내의 API 호출에 대응하는 API 호출 정보를 수신하고, 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에 상기 수신된 API 호출 정보를 기록한다; 또는
버추얼 머신의 VMM이 API를 호출하여 상기 버추얼 머신에 패킷을 송신할 때, 상기 버추얼 머신, 상기 VMM 내의 버추얼 스위치, 또는 상기 VMM 중 임의의 하나가 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에 상기 수신된 API 호출 정보를 기록한다.
구체적으로, 상기 버추얼 머신, 상기 버추얼 스위치, 또는 상기 호스트 내의 VMM 중 임의의 하나가, 토폴로지 정보 보고 API 함수를 호출함으로써 상기 에이전트 모듈에 상기 API 호출 정보를 보고할 수 있다.
가능한 구현 방식에서, 에이전트 모듈이 각각의 호스트 내에 설치되고, 상기 호스트 내의 API 호출 정보를 수집하도록 구성되고, 상기 에이전트 모듈은 감시 버추얼 머신, 버추얼 스위치, 및 상기 호스트 내의 VMM을 감시하고, API 호출 정보를 획득하고, 상기 획득된 API 호출 정보를 로그 파일에 기록할 수 있거나, 또는 API 호출 정보를 획득한 후, 상기 에이전트 모듈은 상기 토폴로지 발견 서버에 상기 API 호출 정보를 보고한다.
가능한 구현 방식에서, 상기 API 호출은 입력 API 함수 호출 및 출력 API 함수 호출을 포함한다. 구체적으로, 버추얼 머신이 위치한 VMM이 출력 API 함수를 호출하여 상기 버추얼 머신에 패킷을 송신하도록 하고, 상기 상기 버추얼 머신이 입력 API 함수를 호출하여 버추얼 머신이 위치한 VMM에 패킷을 송신하도록 한다.
가능한 구현 방식에서, 상기 API 호출 정보는 소스 버추얼 머신의 식별자 및 목적지 버추얼 머신의 식별자를 더 포함할 수 있고, 이 경우에, 한 세트의 API 호출 정보에 따라, 상기 소스 버추얼 머신 및 상기 목적지 버추얼 머신 간에 한 번의 상호작용이 존재함을 알 수 있다.
나아가, 시스템 내의 버추얼 머신 클러스터의 면에서, 상기 토폴로지 발견 서버가 상기 버추얼 머신 클러스터 내의 버추얼 머신 간의 애플리케이션 토폴로지 관계를 결정하고, 상기 버추얼 머신 클러스터의 애플리케이션 토폴로지 뷰를 생성한다.
상기 토폴로지 발견 서버는 독립적인 물리 서버이거나, 또는 상기 토폴로지 발견 서버가 상기 시스템 내의 다른 물리 서버와 기능적 모듈의 형태로 공동으로 배치된다.
가능한 구현 방식에서, 구체적 애플리케이션 토폴로지 관계 내의 버추얼 머신은 동일한 호스트 상에서 또는 상이한 호스트 상에서 실행될 수 있다. 상기 버추얼 머신이 상이한 호스트 상에서 실행될 때, 2개의 호스트가 외부 물리 네트워크를 통해 상기 패킷을 전송한다. 구체적 전송 방법에서, 다양한 종래의 네트워크 전송 프로토콜 및 전송 설정이 사용될 수 있고, 이 출원은 전송 네트워크 구조에 아무 제한을 두지 않는다.
다른 측면에서, 본 발명의 실시예는 애플리케이션 토폴로지 관계의 다른 방법을 제공한다. 애플리케이션 토폴로지 관계 발견을 위한 전술한 방법과의 차이는, 이 실시예 내에 기록된 각각의 세트 API 호출 정보 내의 버추얼 머신의 식별자가 패킷 전송 종단의 소스 버추얼 머신의 식별자 및 패킷 수신 종단의 목적지 버추얼 머신의 식별자 모두를 포함하는 것이다. 이 경우에, 한 세트의 API 호출 정보에 따라, 2개의 버추얼 머신 간에 한 번의 상호작용 존재하는 것이 결정된다. 구체적으로, API 호출 정보가 획득되고, 여기서 상기 API 호출 정보는 소스 버추얼 머신의 식별자 및 목적지 버추얼 머신의 식별자를 포함하고, 상기 API 호출 정보는 하나의 API 호출에 대응하고; 상기 소스 버추얼 머신 및 상기 목적지 버추얼 머신 간에 한 번의 상호작용이 존재하는지가 결정되고; 수집된 API 호출 정보가 분석되고; 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도에 따라, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신 간에 애플리케이션 토폴로지 관계가 존재하는지가 결정된다.
또 다른 측면에 따라, 본 발명의 실시예는 토폴로지 발견 서버를 제공하고, 상기 토폴로지 발견 서버는 전술한 방법의 기능을 구체적으로 구현한다. 상기 기능은 하드웨어를 사용하여 구현될 수 있거나, 또는 하드웨어를 사용하여 대응하는 소프트웨어를 실행함으로써 구현될 수 있다. 상기 하드웨어 또는 소프트웨어는 전술한 기능에 대응하는 하나 이상의 모듈을 포함한다.
가능한 설계에서, 상기 토폴로지 발견 서버의 구조는 프로세서 및 메모리를 포함하고, 상기 프로세서는 전술한 방법의 대응하는 기능을 구현함에 있어 상기 토폴로지 발견 서버를 지원하도록 구성된다. 상기 토폴로지 발견 서버는 상기 메모리를 더 포함할 수 있고, 상기 메모리는 프로세서와 결합하고, 상기 토폴로지 발견 서버가 전술한 기능을 구현하기 위해 필요로 하는 프로그램 명령 및 데이터를 저장하도록 구성된다.
또 다른 측면에 따라, 본 발명의 실시예는 애플리케이션 토폴로지 관계를 발견하기 위한 시스템을 제공하고, 상기 시스템은 토폴로지 발견 서버 및 적어도 하나의 호스트를 포함하고, 여기서 복수의 버추얼 머신은 상기 적어도 하나의 호스트 상에서 실행되고, 상기 토폴로지 발견 서버는, 패킷 전송 과정에서 API가 호출될 때 생성되는 API 호출 정보를 획득함으로써, 2개의 버추얼 머신 간에 애플리케이션 토폴로지 관계가 존재하는지 여부를 결정한다. 구체적으로, 상기 토폴로지 발견 서버, 상기 버추얼 머신, 에이전트 모듈, 및 등이 상기 제1 측면 내의 애플리케이션 토폴로지 관계를 발견하기 위한 방법 내의 기능을 구현한다. 상기 기능은 하드웨어를 사용하여 구현될 수 있거나, 또는 하드웨어를 사용하여 대응하는 소프트웨어를 실행함으로써 구현될 수 있다. 상기 하드웨어 또는 소프트웨어는 전술한 기능에 대응하는 하나 이상의 모듈을 포함한다.
선택적으로, 애플리케이션 토폴로지 관계를 발견하기 위한 방법을 실행하는 시스템은 데이터를 더 포함할 수 있고, 상기 데이터베이스는 상기 애플리케이션 토폴로지 관계 및 애플리케이션 토폴로지 뷰를 저장하도록 구성된다. 상기 시스템은 관리 노드를 더 포함할 수 있고, 상기 관리 노드는 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계에 따라 버추얼 머신을 관리하여, 관리 효율를 향상시킨다.
가능한 설계에서, 상기 호스트는 프로세서 및 메모리를 포함하고, 상기 프로세서는 전술한 시스템 내의 대응하는 기능을 구현하는 상기 호스트를 지원하도록 구성된다. 상기 호스트는 상기 메모리를 더 포함할 수 있고, 상기 메모리는 상기 프로세서에 연결되고, 프로세서가 전술한 기능을 구현하기 위해 필요로 하는 프로그램 명령을 저장하도록 구성된다.
또 다른 측면에 따라, 본 발명의 실시예는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체는 전술한 토폴로지 발견 서버에 의해 사용되는 컴퓨터 소프트웨어 명령을 저장하도록 구성되고, 전술한 기능을 구현하도록 설계되는 프로그램을 포함한다.
추가적인 측면에 따라, 본 발명의 실시예는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체는 전술한 호스트에 의해 사용되는 컴퓨터 소프트웨어 명령을 저장하도록 구성되고, 전술한 기능을 구현하도록 설계되는 프로그램을 포함한다.
본 발명의 이 실시예에 의해 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법, 장치, 및 시스템에 따르면, 패킷 전송 과정 중의 API 호출 정보가 수집되고, 2세트의 API 호출 정보에 대응하는 2개의 버추얼 머신 간의 상호작용이 존재하는지 여부가, 상기 2세트의 API 호출 정보가 제1 조건을 만족하는지 여부를 매칭함에 의해 결정된다. 전술한 방식을 사용하여, 토폴로지 발견 서버는 상기 수집된 API 호출 정보 내에 포함된, 버추얼 머신의 상호작용 빈도를 결정할 수 있고, 상기 버추얼 머신의 상호작용 빈도에 따라 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계가 결정된다. 전술한 해결수단은 버추얼화 시나리오 내의 버추얼 머신 간의 애플리케이션 토폴로지 관계를 발견하기 위한 방법을 제공하고, 여기서 여기서 버추얼 머신 간의 애플리케이션 토폴로지 관계는 패킷 전송 과정에서 생성되는 API 호출 정보를 분석함으로써 결정되어, 그러므로, 상기 해결수단의 복잡도는 비교적 낮다.
본 발명의 실시예 또는 종래 기술 내의 기술적 해결수단을 더욱 명확하게 설명하기 위해, 하기 내용은 실시예 또는 종래 기술을 설명하기 위해 필요한 첨부 도면을 간략하게 설명한다. 분명히, 하기 설명 내의 첨부 도면은 본 발명의 일부 실시예를 도시할 뿐이고, 이 기술분야의 통상의 기술자는 창조적인 노력을 들이지 않고 이러한 첨부 도면으로부터 다른 구현 방식들을 도출할 수 있다. 모든 다른 실시예 또는 구현 방식은 본 발명의 보호 범위 안에 포함되어야 한다.
도 1a는 본 발명의 실시예에 따른 가능한 버추얼화 시스템의 도식적 아키텍처 다이어그램이다.
도 1b는 본 발명의 실시예에 따른 다른 버추얼화 시스템의 도식적 아키텍처 다이어그램이다.
도 1c는 본 발명의 실시예에 따른 또 다른 버추얼화 시스템의 도식적 아키텍처 다이어그램이다.
도 2는 본 발명의 실시예에 따른 컴퓨터 장치의 도식적 다이어그램이다.
도 3a는 본 발명의 실시예에 따른 호스트 내의 버추얼화 구조의 도식적 다이어그램이다.
도 3b는 본 발명의 실시예에 따른 네트워크 인터페이스 카드 스트레이트-스루(straight-through) 시나리오 중 호스트 내의 버추얼화 구조의 도식적 다이어그램이다.
도 3c는 본 발명의 실시예에 따른 다른 네트워크 인터페이스 카드 스트레이트-스루(straight-through) 시나리오 중 호스트 내의 버추얼화 구조의 도식적 다이어그램이다.
도 4는 본 발명의 실시예에 따른 능동 발견에 의한 수집 에이전트에 의한 API 호출 정보 획득의 도식적 다이어그램이다.
도 5는 본 발명의 실시예에 따른 수동 발견에 의한 수집 에이전트에 의한 API 호출 정보 획득의 도식적 다이어그램이다.
도 6은 동일한 호스트 내의 2개의 버추얼 머신이 서로 통신할 때, 본 발명의 실시예에 따라 수집 에이전트가 API 호출 정보를 획득하는 도식적 플로우차트이다.
도 7은 상이한 호스트 내의 2개의 버추얼 머신이 서로 통신할 때, 본 발명의 실시예에 따라 수집 에이전트가 API 호출 정보를 획득하는 도식적 플로우차트이다.
도 8은 본 발명의 실시예에 따라 애플리케이션 토폴로지 관계를 발견하기 위한 시스템의 도식적 구조 다이어그램이다.
도 9는 본 발명의 실시예에 따른 토폴로지 발견 서버의 도식적 구조 다이어그램이다.
본 발명의 실시예에 따른 기술적 해결수단이 상기 첨부 도면을 참조하여 명확하고 완전하게 설명된다. 분명히, 설명된 실시예들은 본 발명의 실시예의 일부일 뿐이고 전부는 아니다. 창조적인 노력을 들이지 않고 본 발명의 실시예들에 기초하여 이 기술분야의 통상의 기술자에 의해 획득될 수 있는 모든 다른 실시예들은 본 발명의 보호 범위 내에 속하여야 한다.
본 발명의 실시예에 설명된 네트워크 아키텍처 및 서비스 시나리오는 본 발명의 실시예의 기술적 해결수단을 더 명확하게 설명하기 위해 사용되고 본 발명의 실시예에 의해 제공되는 기술적 해결수단에 제한이 되지 않는다. 본 기술분야의 통상의 기술자는, 상기 네트워크 아키텍처의 진화 및 새로운 서비스 시나리오의 발생에 따라, 본 발명의 실시예에 의해 제공되는 상기 기술적 해결수단은 유사한 기술적 문제에도 적용될 수 있다는 것을 알 수 있다.
상기 종래 기술에서는 버추얼화 수준에서 버추얼화 환경 전용의 애플리케이션 토폴로지 관계를 발견하기 위한 방법의 결핍이 있었으므로, 본 발명의 실시예는 버추얼화 환경에서 버추얼 머신 간의 애플리케이션 토폴로지 관계를 발견하기 위한 방법, 장치, 및 시스템을 제공하고, 이는 버추얼 머신 클러스터에서 버추얼 머신 간의 애플리케이션 토폴로지 관계를 정확하게 식별할 수 있다. 구체적으로, 본 발명의 실시예는 각각의 호스트 내의 버추얼 머신 간의 통신에 사용되는 API(애플리케이션 프로그래밍 인터페이스, Application Programming Interface) 호출 정보를 수집하도록 구성되는 토폴로지 발견 서버를 제공한다. 상기 토폴로지 발견 서버는 각각의 호스트로부터 수집된 상기 API 호출 정보를 분석하고 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계를 생성한다.
도 1a에 도시된 것처럼, 도 1a는 본 발명의 실시예에 따른 가능한 버추얼화 시스템의 도식적 아키텍처 다이어그램이다. 토폴로지 발견 서버는 각각의 호스트에 연결되고, 상기 호스트 상의 API 호출 정보를 수집하도록 구성된다. 상기 토폴로지 발견 서버는 데이터베이스 내의 버추얼 머신 간의 애플리케이션 토폴로지 관계를 더 저장할 수 있다. 관리 노드가 상기 버추얼 머신 간의 상기 애플리케이션 토폴로지 관계에 따라 관리 조작을 수행할 필요가 있을 때, 상기 관리 노드는 상기 버추얼 머신 간의 상기 애플리케이션 토폴로지 관계를 획득한다. 구체적으로, 도 1a에 도시된 각각의 구성요소의 기능은 다음과 같다:
각각의 호스트는 물리 서버, 및 상기 호스트 상에 실행되는 몇몇 버추얼 머신이다.
수집 에이전트: 수집 에이전트(Collect Agent)는 호스트 상에 배치되고, 상기 호스트 내의 각각의 버추얼 머신, 버추얼 스위치, 또는 버추얼 머신 감시(Virtual Machine Monitor, VMM)가 패킷을 전송할 때 생성되는 API 호출 정보를 수집하도록 구성된다. 상기 수집 에이전트는 상기 토폴로지 발견 서버(Topology Discovery Server)에 상기 수집된 API 호출 정보를 송신하고, 상기 토폴로지 발견 서버는, 버추얼 머신 간의 애플리케이션 토폴로지 관계를 최종적으로 획득하기 위해, 상기 수집된 API 호출 정보를 분석한다. 상기 수집 에이전트는 상기 호스트 내의 각각의 버추얼 머신, 버추얼 머신 스위치, 또는 버추얼 머신 감시(Virtual Machine Monitor, VMM)를 감시하고, 패킷이 송신되거나 수신되는 것이 발견될 때 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 Protocol), 전송 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol, TCP/IP Protocol) 등일 수 있다. 상기 버추얼 머신의 식별자는 상기 버추얼 머신의 IP 주소일 수 있다. 예를 들어, 상기 API 호출 정보는 (VM1, t1, P1, In)이고, 이는 VM1이 버추얼 스위치 V스위치 또는 VMM에 패킷을 전송하기 위해 프로토콜 P1을 사용하여 순간 t1에 입력 기능을 호출하는 것을 나타낸다. 상기 API 호출 정보는 (VM2, t2, P2, Out)이고, 이는 버추얼 스위치 또는 VMM이 VM2에 패킷을 전송하기 위해 프로토콜 P2를 사용하여 순간 t2에 출력 기능 을 호출하는 것을 나타낸다.
상기 호스트가 네트워크 인터페이스 카드 스트레이트-스루 해결수단을 사용할 때, 패킷이 버추얼 스위치를 통하기 보다 VMM에서 물리 네트워크 인터페이스 카드로 전송되는 것을 주의하여야 한다.
상기 토폴로지 발견 서버는 각각의 호스트로부터 수집된 상기 API 호출 정보를 분석하고, 버추얼 머신의 상호작용 빈도를 식별하고, 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계를 결정한다.
일 예에서, 상기 API 호출 정보에 의해 타케팅된 API는 입력 API 함수 및 출력 API 함수다.
일 예에서, 소스 버추얼 머신은 목적지 버추얼 머신에 패킷을 송신한다. 상기 소스 버추얼 머신이 상기 패킷을 송신하기 위해 사용하는 프로토콜이 상기 목적지 버추얼 머신이 상기 패킷을 수신하기 위해 사용하는 프로토콜과 동일하고, 상기 소스 버추얼 머신이 상기 패킷을 송신하기 위해 API를 호출하는 시간 Ts 및 상기 목적지 버추얼 머신이 상기 패킷의 API 호출을 수신하는 시간 Te가 수용가능한 맞춰진 기 설정된 문턱값 내에 있을 때, 상기 소스 버추얼 머신 및 상기 목적지 버추얼 머신 간에 한 번의 상호작용이 발생했다고 간주된다. 나아가, 하나의 시간 주기 동안, 2개의 버추얼 머신의 상호작용 빈도가 기 설정된 빈도보다 더 크면, 2개의 버추얼 머신 간에 애플리케이션 토폴로지 관계가 존재한다고 결정된다.
예시적으로, 하기 내용은 이 출원 내의 상기 토폴로지 발견 서버에 의해 수집된 API 호출 정보의 사례들을 도시한다.
VM1, 시간1, 프로토콜, In; VM1', Time1', 프로토콜, Out;
VM2, Time2, 프로토콜, In; VM2', Time2', 프로토콜, Out;
... ...
VMn, Timen, 프로토콜, In; VMn', Timen', 프로토콜, 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 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 && InOut)
그러면 한 번의 상호작용이 VM1 및 VM1' 간에 발생한다.
본 발명의 이 실시예는 상기 토폴로지 발견 서버가 전술한 3개의 결정 과정을 동시에 구현하는 것에 아무 제한을 두지 않고, 상기 토폴로지 발견 서버는 필요에 따라 상이한 순서로 전술한 3개의 결정을 구현할 수 있다는 것을 주의하여야 한다. 예시적으로, 아무 통신 프로토콜이 고려되지 않을 때, 수집된 API 호출 정보의 면에서, 상기 토폴로지 발견 서버는 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계를 결정하기 위해, 먼저 API 호출의 발생 시간에 따라 상기 API 호출 정보를 스크리닝하고, 결정의 방식 3을 만족하는 API 호출 정보를 선택하고, 나아가 결정의 방식 1을 만족하는 API 호출 정보를 스크리닝하고, 상기 최종적으로 스크리닝 아웃된 API 호출 정보 내에서, 상호작용 관계가 그 간에 존재하는 버추얼 머신의 상호작용 빈도를 결정한다.
더 나아가, 통신을 수행하기 위해 버추얼 머신 클러스터가 동일한 통신 프로토콜을 사용하거나, 버추얼 머신 클러스터 내의 대부분의 버추얼 머신들이 동일한 통신 프로토콜을 사용할 때, 전술한 API 호출 정보는 상기 통신 프로토콜을 포함하지 않을 수 있다. 이에 대응하여, 상기 토폴로지 발견 서버는 상기 2세트의 API 호출 정보 내의 통신 프로토콜이 동일한지 여부를 결정할 필요가 없다. 이 경우에, 애플리케이션 토폴로지 관계를 발견하는 효율이 향상되고, 정확도는 감소될 수 있다.
일 예에서, 결정의 방식 3 내의 상기 문턱값은 필요에 따라 설정될 수 있다. 구체적으로, 실제 네트워크 부하 상태가 고려될 수 있고, 이는 본 발명의 이 실시예에 제한되지 않는다.
상기 토폴로지 발견 서버는 임의의 2개의 버추얼 머신의 상호작용 빈도를 획득하기 위해, 상기 수집된 API 호출 정보를 검색한다. 상기 상호작용 빈도가 기 설정된 상호작용 빈도보다 크면, 상기 2개의 버추얼 머신 간에 애플리케이션 토폴로지 관계 존재한다고 간주된다. 상기 토폴로지 발견 서버는 데이터베이스 내에 상기 버추얼 머신 간의 상기 애플리케이션 토폴로지 관계를 저장한다. 상기 토폴로지 발견 서버는 하나의 시간 주기 동안 발생하는 API 호출의 API 호출 정보를 검색하고, 상기 버추얼 머신 간의 상호작용의 획득된 시간을 상기 상호작용 빈도로서 사용할 수 있고, 상기 시간 주기는 필요에 따라 설정될 수 있다는 것을 주의하여야 한다. 이에 대응하여, 상기 기 설정된 빈도는 필요에 따라 설정될 수 있고, 이는 본 발명의 이 실시예에 제한되지 않는다.
상기 버추얼 머신 간의 상호작용이 전술한 방식으로 계산될 때, 오류가 예측가능하게 생성될 수 있다는 것을 주의하여야 한다. 예를 들어, 상기 프로토콜이 고려되지 않는 경우에, 버추얼 머신 a가 패킷을 VMM에 송신하기 위해 순간 t1에 입력 API 함수를 호출하고, 상기 패킷의 목적지 버추얼 머신이 버추얼 머신 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 간에 한 번의 상호작용이 존재하고, 상기 버추얼 머신 a 및 상기 버추얼 머신 c 간에 한 번의 상호작용이 존재한다는 것을 알 수 있다. 명백하게, 이 경우에, 상기 버추얼 머신 c의 패킷이 상기 버추얼 머신 X로부터 온 것이기 때문에, 상기 버추얼 머신 a 및 상기 버추얼 머신 c 간에는 아무 상호작용이 존재하지 않는다.
실제 제품 구현 시나리오에서, 버추얼 머신 간에 다량의 패킷 교환이 있을 때, 전술한 오류는 비교적 작고, 막대한 버추얼 머신들 간의 애플리케이션 토폴로지 관계 상에 분명한 영향을 야기하지 않는다. 그러므로, 전술한 오류는 수용가능하다.
나아가 어떤 경우에는, 상기 API 호출 정보 내의 버추얼 머신의 식별자가 소스 버추얼 머신의 식별자 및 목적지 버추얼 머신의 식별자를 모두 포함할 수 있다는 것도 주의하여야 한다. 이 경우에, 이론적으로, 한 세트의 API 호출 정보를 기록함에 의해, 상기 소스 버추얼 머신 및 상기 목적지 버추얼 머신 간에 한 번의 상호작용 존재한다고 결정될 수 있다. 본 출원에서, 계산 효율을 보장하기 위해, 상기 API 호출 정보가 통신 내의 2개의 당사자의 식별자 또는 통신 내의 한 당사자만의 식별자를 포함하는지 여부, 버추얼 머신 간에 상호작용이 존재하는지 여부가 전술한 분석 방법에 따라 본 출원에서 결정될 수 있다. 즉, 패킷 흐름 방향이 입력인 API 호출 정보의 면에서, 상기 API 호출 정보 내의 상기 소스 버추얼 머신의 식별자만이 사용된다. 패킷 흐름 방향이 출력인 API 호출 정보의 면에서, 상기 API 호출 정보 내의 상기 목적지 버추얼 머신의 식별자만이 사용된다. 2개 형태의 API 호출 정보 포맷에 관하여, 상기 2개 형태의 API 호출 정보 포맷에 대해 별도로 계산을 수행할 필요 없이, 전술한 3개의 결정 과정에 따라 버추얼 머신 간에 상호작용이 존재하는지 여부가 결정된다.
관리 노드: 관리 노드는 VM웨어 V센터 및 퓨전관리자 같은 기능적 엔티티일 수 있고, 이는 버추얼 머신의 네트워크 토폴로지의 획득을 필요로 한다. 상기 관리 노드는 상기 토폴로지 발견 서버 또는 전술한 데이터베이스로부터 애플리케이션 토폴로지 관계를 독출한다.
일 예에서, 상기 토폴로지 발견 서버는 독립적인 물리 서버일 수 있거나, 또는 상기 토폴로지 발견 서버는 기능적 모듈로서 서빙하고, 상기 관리 노드 같은 다른 물리 서버와 공동으로 배치될 수 있다.
도 1b에 도시된 것처럼, 도 1b는 본 발명의 실시예에 따른 다른 버추얼화 시스템의 도식적 아키텍처 다이어그램이고, 도 1a와의 차이는, 호스트가 수집 에이전트를 포함하지 않고, API 호출 정보가 로그 파일 내에 저장되거나 VM, 버추얼 스위치, 또는 VMM 에 의해 토폴로지 발견 서버에 직접 송신된다.
도 1c에 도시된 것처럼, 도 1c는 본 발명의 실시예에 따른 또 다른 버추얼화 시스템의 도식적 아키텍처 다이어그램이다. 이 경우에, 토폴로지 발견 서버 및 관리 노드는 공동으로 배치되고, 전술한 토폴로지 발견 서버의 기능이 상기 관리 노드 내의 토폴로지 발견 모듈에 의해 구현된다.
도 1b 및 도 1c에서 제공되는 버추얼화 아키텍처는 도 1a의 것에 기초한 개선이다. 상기 버추얼화 아키텍처 내의 구성요소의 기능은 상기 아키텍처의 변경에 따라 적응적으로 수정될 수 있고, API 호출 정보를 보고 및 분석하는 기능을 구현할 수도 있다. 도 1b 및 도 1c의 상기 구성요소의 기능은 본 발명의 실시예에서 반복적으로 설명되지 않는다.
애플리케이션 토폴로지 관계는 광범위하게 적용되고, 예를 들어, 동일한 애플리케이션 토폴로지 클러스터에 속하는 버추얼 머신은 상호작용 시간을 줄이기 위해 동일한 스위치 또는 유사한 네트워크에 의해 커버되는 네트워크에 최적으로 배치되어야 한다. 시스템 내의 버추얼 머신 클러스터가 일괄적으로 업그레이드될 필요가 있으면, 동일한 애플리케이션 토폴로지 클러스터의 버추얼 머신이 동일한 배치(batch)로 최적으로 업그레이드되어야 한다. 애플리케이션 토폴로지 관계에 있는 버추얼 머신 클러스터가 동일한 서버 또는 인접한 서버에 최적으로 위치해야 한다. 애플리케이션 토폴로지 관계에 있는 상기 버추얼 머신 클러스터 및 대응하는 백업 클러스터는 상이한 서버에 최적으로 위치해야 한다. 전체 애플리케이션 토폴로지 클러스터에 대응하는 버추얼 머신도 이송(migration) 등의 동안 최적으로 이송되어야 한다. 전술한 기능을 구현하는 관리 노드가 버추얼 머신의 애플리케이션 토폴로지를 사용할 필요가 있을 때, 상기 애플리케이션 토폴로지가 상기 토폴로지 발견 서버로부터 획득될 수 있다.
수집 에이전트 및 토폴로지 발견 서버는 하드웨어/소프트웨어를 사용하여 구현될 수 있다. 예시적으로, 도 2에 도시된 바와 같이, 도 2는 본 발명의 실시예에 따른 컴퓨터 장치의 도식적 다이어그램이다. 컴퓨터 장치(200)는 적어도 하나의 프로세서(201), 통신 버스(202), 메모리(203), 및 적어도 하나의 통신 인터페이스(204)를 포함한다.
상기 프로세서(201)는 중앙 처리 유닛(CPU), 마이크로프로세서, 주문형 집적 회로(application-specific integrated circuit, ASIC), 또는 하나 이상의 본 발명의 해결수단 내의 프로그램 실행을 제어하기 위한 집적 회로일 수 있다.
상기 통신 버스(202)는 전술한 구성요소 간의 정보를 전송하기 위한 하나의 경로를 포함할 수 있다. 상기 통신 인터페이스(204)는 임의의 형태의 송수신기를 사용하는 장치이고, 다른 장치 또는 이더넷, 무선 액세스 네트워크(RAN), 또는 무선 근거리 통신망(Wireless Local Area Networks, WLAN) 같은 통신 네트워크와 통신하도록 구성된다.
상기 메모리(203)는 읽기-전용 기억장치(read-only memory, ROM), 또는 다른 형태의 정적 정보 및 명령을 저장할 수 있는 정적 저장 장치, 임의 접근 기억장치(random access memory, RAM), 또는 다른 형태의 정보 및 명령을 저장할 수 있는 동적 저장 장치일 수 있고, 또는 전기적 이피롬(Electrically Erasable Programmable Read-Only memory, EEPROM), 컴팩트 디스크 롬(Compact Disc Read-Only Memory, CD-ROM), 또는 다른 콤팩트 디스크 저장 장치, 광학 디스크 저장 장치(압축 광 디스크, 레이저 디스크, 광 디스크, 디지털 다기능 디스크, 블루-레이 디스크 등을 포함함), 자기 디스크 저장 매체 또는 다른 자기 저장 장치 또는 컴퓨터에 의해 액세스될 수 있는 명령 또는 데이터 구조의 형태의 기대하는 프로그램 코드를 운반 또는 저장하기 위해 사용될 수 있는 임의의 다른 매체일 수 있다. 상기 메모리는 독립적으로 존재할 수 있고, 상기 버스를 사용하여 상기 프로세서에 연결된다. 상기 메모리는 상기 프로세서와 함께 집성될 수 있다.
상기 메모리(203)는 본 발명의 해결수단을 실행하기 위한 애플리케이션 프로그램 코드를 저장하도록 구성될 수 있고, 상기 프로세서(201)의 제어에 의해 구현된다. 상기 프로세서(201)는 상기 메모리(203) 내에 저장된 상기 애플리케이션 프로그램 코드를 실행하도록 구성된다.
구체적 구현에서 상기 프로세서(201)는 예를 들어 도 2의 CPU0 및 CPU1 같은 하나 이상의 CPU를 포함할 수 있다.
구체적 구현에서, 일 실시예로서, 상기 컴퓨터 장치(200)는 복수의 프로세서, 예를 들어 도 2 내의 상기 프로세서(201) 및 프로세서(208)를 포함할 수 있다. 상기 프로세서의 각각은 단일-코더(단일-CPU) 프로세서, 또는 멀티-코더(멀티-CPU) 프로세서일 수 있다. 상기 프로세서는 여기서 하나 이상의, 데이터(예를 들어, 컴퓨터 프로그램 명령)를 처리하도록 구성되는 장치, 회로, 및/또는 프로세싱 코어를 지칭한다.
구체적 구현에서, 일 실시예로서, 상기 컴퓨터 장치(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에 도시된 장치일 수 있다. 하나 이상의 소프트웨어 모듈이 상기 수집 에이전트, 상기 호스트, 및 상기 토폴로지 발견 서버의 기능(예를 들어, 상기 토폴로지 발견 서버 내의 API 호출 정보를 분석하는 기능)을 구현하기 위해 상기 메모리 내에 저장된다. 상기 수집 에이전트, 상기 호스트, 및 상기 토폴로지 발견 서버는, 상기 메모리 내의 상기 프로세서 및 상기 프로그램 코드를 사용하여, 버추얼 머신 간의 애플리케이션 토폴로지를 발견하는 방법을 구현할 수 있다.
도 2에 도시된 상기 컴퓨터 장치는 애플리케이션 토폴로지를 발견하기 위한 시스템 내의 구성요소의 가능한 하드웨어 구현 방식을 제공할 뿐이고, 상기 컴퓨터 장치의 하드웨어 구성요소는 시스템 내의 구성요소의의 기능에 매칭되기 위해, 시스템 내의 구성요소의 기능의 차이 또는 변동에 따라 추가되거나 제거될 수 있다는 것을 주의하여야 한다.
도 3a에 도시된 것처럼, 도 3a는 본 발명의 실시예에 따른 호스트 내의 버추얼화 구조의 도식적 다이어그램이다. 상기 호스트는 물리 서버이고, 상기 물리 서버의 하부 계층은 하드웨어 계층이고, 상기 하드웨어 계층은 주로 중앙 처리 유닛(CPU, Central Processing Unit), 메모리, 하드 디스크 및 네트워크 인터페이스 카드 같은 하드웨어 자원을 포함한다. 서버 버추얼화는 버추얼화 소프트웨어(VMWare ESX 및 Citrix XEN 같은)를 사용하여 물리 서버 내의 복수의 버추얼 머신(Virtual Machine, VM)의 버추얼화된 실행 환경을 구현하는 것을 지칭한다. 버추얼화된 환경을 구현하기 위해 상기 서버 상에 설치된 소프트웨어 계층을 VMM이라 지칭된다. 상기 하드웨어 계층 상에서 실행되는 VMM은 상기 하드웨어 계층에서 상기 하드웨어 자원을 스케쥴링, 할당, 및 관리를 담당한다. 복수의 버추얼 머신 VM은 상기 VMM 상에서 실행되고, 상기 VMM은 각각의 버추얼 머신에 버추얼화된 CPU, 메모리, 저장장치, 입출력 장치(네트워크 인터페이스 카드 같은), 및 이더넷 스위치 같은 하드웨어 환경을 제공하여, 복수의 버추얼 머신이 서로 단절된 방식으로 실행될 수 있도록 한다.
버추얼화된 실행 환경에서, 상기 VMM은 각각의 버추얼 머신에 대해 버추얼 네트워크 인터페이스 카드(Virtual Network Interface Card, vNIC)를 생성하고, 버추얼 스위치 V스위치는 버추얼 머신 및 버추얼 머신 및 외부 네트워크 에 대해 통신 능력을 제공한다. 상기 VMM 내에서 실행되는 상기 V스위치에 대해, 각각의 버추얼 머신에 대한 버추얼 네트워크 인터페이스 카드는 상기 V스위치의 논리 포트에 대응하고, 상기 호스트의 물리 네트워크 인터페이스 카드는 상기 V스위치를 외부 물리 스위치로 연결하는 포트에 대응한다.
버추얼 머신이 패킷을 수신하는 과정은 다음과 같다: 상기 V스위치가 상기 물리 네트워크 인터페이스 카드로부터 이더넷 패킷을 수신하고, 버추얼 머신의 매체 액세스 제어(Media Access Control, MAC) 및 상기 V스위치의 논리 포트 간에 있고 VMM에 의해 운반되는 대응 테이블(즉, 정적 MAC 테이블)에 따라 상기 패킷을 포워딩한다.
버추얼 머신이 패킷을 송신하는 과정은 다음과 같다: 상기 패킷의 MAC 주소가 외부 네트워크에 있을 때, 상기 V스위치가 상기 물리 네트워크 인터페이스 카드에서 상기 외부 네트워크로 상기 패킷을 직접 송신하고, 상기 패킷의 목적지 MAC 주소가 동일한 V스위치의 버추얼 머신에 연결되어 있으면 상기 V스위치는 정적 MAC 테이블을 사용하여 상기 패킷을 포워딩한다.
도 3b에 도시된 것처럼, 도 3b는 본 발명의 실시예에 따른 네트워크 인터페이스 카드 스트레이트-스루(straight-through) 시나리오 중 호스트 내의 버추얼화 구조의 도식적 다이어그램이다. 이 경우에, 물리 네트워크 인터페이스 카드는 버추얼화되지 않고, 상기 물리 네트워크 인터페이스 카드의 각각의 출구 포트는 하나의 버추얼 머신에 할당된다. 도 3c에 도시된 것처럼, 도 3c는 본 발명의 실시예에 따른 다른 네트워크 인터페이스 카드 스트레이트-스루(straight-through) 시나리오 중 호스트 내의 버추얼화 구조의 도식적 다이어그램이다. 도 3b과의 차이는, 물리 네트워크 인터페이스 카드가 버추얼 머신을 사용하여 복수의 버추얼 기능 장치(Virtual Function, VF)로 버추얼화되고, 여기서 전술한 네트워크 인터페이스 카드 버추얼화 기술은 단일-루트 입출력 버추얼화(Single-Root I/O Virtualization, SR-IOV) 및 멀티-루트 입출력 버추얼화(Multi-Root I/O Virtualization, MR-IOV)일 수 있다. 상기 버추얼 기능 장치는 물리 네트워크 인터페이스 카드의 물리 자원(네트워크 인터페이스 카드 포트 같은)를 공유할 수 있고, 상기 버추얼 기능 장치는 상기 호스트 내의 버추얼 머신 시스템과 상관관계를 가질 수 있다.
본 발명의 실시예에서 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법이 도 3b 및 도 3c에 도시된 시나리오에도 적용될 수 있다. 이 경우에, 버추얼 머신은 패킷을 전송하기 위해 물리 네트워크 인터페이스 카드의 외향 인터페이스를 직접 호출하여, VMM 내의 버추얼 스위치를 생략할 수 있도록 한다. 에이전트 모듈은 버추얼 머신 또는 상기 VMM으로부터 API 호출 정보를 획득할 수 있다. 예를 들어, 네트워크 인터페이스 카드 스트레이트-스루 시나리오에서, 상기 버추얼 머신이 입력 API 함수를 호출하여 상기 VMM을 사용하여 상기 물리 네트워크 인터페이스 카드에 패킷을 전송하도록 했을 때, 상기 버추얼 머신 또는 상기 VMM은 로그 파일에 상기 API 호출 정보를 기록하거나 수집 에이전트로 상기 API 호출 정보를 직접 전송할 수 있다. 또는 수집 에이전트는 상기 버추얼 머신 간의 상기 패킷의 전송을 감시하고, 로그 파일에 상기 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)가 부가되고, 버추얼 머신이 VMM을 사용하여 패킷을 전송하기 위해 입력 API 함수(Port_Input API)을 호출할 때, 상기 버추얼 머신, 버추얼 스위치, 또는 상기 VMM이 토폴로지 정보 보고 API 함수를 호출하여 현재 호출된 API 호출 정보를 상기 수집 에이전트에 송신하도록 하거나, 또는 버추얼 스위치가 출력 API 함수(Port_Output API)를 호출할 때, 버추얼 머신, 상기 버추얼 스위치, 또는 VMM이 상기 토폴로지 정보 보고 API 함수를 호출하여 현재 호출된 API 호출 정보를 상기 수집 에이전트에 송신하도록 하는 것을 지칭한다.
상이한 운영 체계에 대해, 전술한 입력 API 함수, 출력 API 함수, 및 토폴로지 정보 보고 API 함수는 상이한 포맷일 수 있는 것을 주의하여야 하고, 이는 본 발명의 이 실시예에 제한되지 않는다. 이 기술분야의 통상의 기술자는 전술한 함수가 입력, 출력, 및 보고 함수를 각각 구현할 수 있다는 것을 이해할 수 있다. API 함수는 API 함수 참조 서적을 사용하여 검색될 수 있다. 예시적으로, Post & Telcom 프레스에서 발간한 윈도우 API 함수 참고 매뉴얼은 마이크로소프트 Win32 API 함수에 대한 참고 매뉴얼이고, 다른 버전 또는 유형의 운영체계에 대해, 대응하는 입력 API 함수 및 출력 API 함수도 참고 서적을 사용하여 검색될 수 있다.
나아가 API 호출 정보를 로그 파일에 저장하는 것은 하나의 예에 불과하다는 것도 주의하여야 한다. 상기 API 호출 정보는, 상기 수집 에이전트가 상기 API 호출 정보를 획득할 수 있는 다른 파일 또는 다른 위치에도 저장될 수 있다.
토폴로지 발견 서버는 호스트로부터 API 호출 정보를 수집하고, API 호출 정보의 각각의 세트는 하나의 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에 대응하는 버추얼 스위치 상의 포트는 포트 1이고, 상기 vNIC2에 대응하는 버추얼 스위치 상의 포트는 포트 2이다. 버추얼 네트워크 인터페이스 카드를 버추얼 머신에 할당하는 것 및 버추얼 네트워크 인터페이스 카드와 버추얼 스위치의 포트 간에 대응관계를 구축하는 것은 이 기술분야에서 통상의 기술적 수단인 것을 주의하여야 하고, 그 구체적 과정은 본 발명의 이 실시예에서 반복적으로 설명되지 않는다. 도 6에 도시된 방법은 다음 단계들을 포함한다:
단계 601: 상기 VM1이 상기 VM2에 패킷을 송신할 필요가 있을 때, 상기 VM1은 VMM의 입력 API 함수(Port_Input API)를 호출하고, 상기 vNIC1을 사용하여 상기 버추얼 스위치의 포트 1에 상기 패킷을 송신한다.
단계 602: 상기 버추얼 스위치가 정적 MAC 테이블을 검색하여, 상기 패킷의 목적지 MAC을 결정하고, 상기 VM2에 대응하는 버추얼 스위치의 포트는 상기 포트 2인 것을 결정한다.
가능한 방식에서, 상기 VM1가 상기 VM2의 주소를 알지 못하면, 상기 VM1이 상기 VM2로 송신하는 패킷이 상기 VM2의 주소를 운반하지 않는다. 이 경우에, 상기 버추얼 스위치는 상기 VM1의 패킷을 방송하고, 방송 방식으로 상기 VM1의 패킷을 상기 버추얼 스위치의 모든 VM에 송신하고, 그러면 상기 VM2가 상기 VM1을 수신하고 응답을 회신할 수 있다.
단계 603: 상기 버추얼 스위치가 출력 API 함수(Port_Output API)를 호출하고, 상기 포트 2를 통해 상기 버추얼 네트워크 인터페이스 카드 vNIC2에 상기 패킷을 송신하고, 그러면 상기 VM2는 상기 VM1가 송신한 상기 패킷을 수신한다.
단계 601에서, 상기 VM1이 상기 입력 API 함수를 호출할 필요가 있고 하나의 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 호출 정보를 주기적으로 독출하거나, 또는 상기 로그 파일에 상기 API 호출 정보를 기록한 후 상기 VM1이 상기 수집 에이전트를 명령하여 상기 API 호출 정보를 독출하게 한다.
더 나아가, VM이 상기 API 호출 정보를 기록하는 것에 추가하여, 버추얼 스위치 또는 상기 VMM도 상기 API 호출 정보를 기록할 수 있다. 구체적으로, 상기 버추얼 스위치 또는 상기 VMM이 상기 로그 파일에 상기 API 호출 정보를 기록하거나 상기 VM1이 상기 패킷을 수신할 때 상기 수집 에이전트에 상기 API 호출 정보를 송신한다.
상기 API 호출 정보는 버추얼 머신의 식별자, API 호출의 발생 시간, 통신 프로토콜, 및 패킷 흐름 방향을 포함한다. 선택적으로, 상기 API 호출 정보 내의 버추얼 머신의 식별자는 소스 버추얼 머신의 식별자 및 목적지 버추얼 머신의 식별자를 포함할 수 있다. 이 경우에, 한 편만의 API 호출 정보에 따라, 상기 소스 버추얼 머신 및 상기 목적지 버추얼 머신 간의 한 번의 상호작용이 발생한 것이 직접 식별될 수 있다. 상기 VM1이 상기 통신 피어(peer) 종단 M2의 주소를 알 때, 상기 기록된 API 호출 정보가 소스 버추얼 머신의 식별자 및 목적지 버추얼 머신의 식별자를 포함할 수 있다. 전술한 통신 프로토콜은 상기 HTTP 프로토콜, 상기 TCP/IP 프로토콜, 상기 UDP 프로토콜일 수 있다.
단계 603에서, 상기 버추얼 스위치가 상기 출력 API 함수(Port_Output API)를 호출하고 하나의 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이 VM2 및 버추얼 스위치 2(본 발명의 이 실시예의 설명에 대한 예시로서, 2개의 VM이 사용됨)가 호스트 2 상에서 실행되고, 상기 VM1의 버추얼 네트워크 인터페이스 카드는 vNIC1이고, 상기 VM2의 버추얼 네트워크 인터페이스 카드는 vNIC2이고, 상기 vNIC1에 대응하는 상기 버추얼 스위치 1상의 포트가 포트 1이고, 상기 vNIC2에 대응하는 상기 버추얼 스위치 2상의 포트가 포트 2이다. 버추얼 네트워크 인터페이스 카드를 버추얼 머신에 할당하는 것 및 버추얼 네트워크 인터페이스 카드와 버추얼 스위치의 포트 간에 대응관계를 구축하는 것은 이 기술분야에서 통상의 기술적 수단인 것을 주의하여야 하고, 그 구체적 과정은 본 발명의 이 실시예에서 반복적으로 설명되지 않는다. 도 7에 도시된 방법은 다음 단계들을 포함한다:
단계 701: 상기 VM1이 상기 VM2에 패킷을 송신할 필요가 있을 때, 상기 VM1은 VMM의 입력 API 함수(Port_Input API)를 호출하고, 상기 vNIC1을 사용하여 상기 버추얼 스위치 1의 포트 1에 상기 패킷을 송신한다.
단계 702: 상기 버추얼 스위치 1이 상기 포트 1 상의 상기 패킷을 수신하고, 상기 패킷의 목적지 MAC 주소 및 외부 네트워크를 결정하고, 상기 버추얼 스위치 1이 상기 호스트 1의 물리 네트워크 인터페이스 카드를 사용하여 상기 패킷을 상기 외부 네트워크에 송신한다.
단계 703: 종래의 패킷 포워딩 규칙에 따라, 상기 VM2가 위치한 상기 호스트 2의 물리 네트워크 인터페이스 카드에 라우팅된다.
단계 704: 상기 호스트 2가 상기 호스트 2의 상기 물리 네트워크 인터페이스 카드를 사용하여 상기 패킷을 수신한다.
단계 705: 상기 버추얼 스위치 2가 상기 VM2에 대응하는 포트는 포트 2인 것을 결정하고, 상기 버추얼 스위치 2는 상기 포트 포트 2를 통하여 상기 VM2의 상기 버추얼 네트워크 인터페이스 카드 vNIC2에 상기 패킷을 송신하고, 상기 VM2는 상기 VM1이 송신한 상기 패킷을 수신한다.
전술한 패킷 전송 과정에서, 상기 패킷은 종래 규칙에 따라 인캡슐레이팅 또는 디캡슐레이팅될 수 있음을 주의하여야 하고, 이는 본 발명의 이 실시예에서 반복적으로 설명되지 않는다.
단계 701에서, 상기 VM1은 단계 601에서 정의된 것과 유사한 방식으로 상기 API 호출 정보를 기록한다. 상기 호스트 1의 수집 에이전트는 상기 API 호출 정보를 획득한다.
단계 705에서, 상기 버추얼 스위치 2는 단계 603에서 정의된 것과 유사한 방식으로 상기 API 호출 정보를 기록한다. 상기 호스트 2의 수집 에이전트는 상기 API 호출 정보를 획득한다.
배치된 버추얼 스위치가 본 발명의 이 실시예에서 사용될 수 있고, 상기 분포된 버추얼 스위치가 복수의 호스트에 걸쳐 있을 수 있어서, 상기 복수의 호스트 상의 버추얼 머신이 비슷하게 동일한 버추얼 스위치에 연결되고, 상기 버추얼 머신이 전술한 복수의 호스트 상에 이송될 수 있도록 하거나, 또는 복수의 분포된된 버추얼 스위치가 하나의 호스트 내에 존재할 수 있도록 한다. 분포된 버추얼 스위치가 사용될 때, 수집 에이전트에 의해 API 호출 정보를 획득하는 방식은 전술한 내용 내의 것과 유사하고, 이는 본 출원에서 반복하여 설명되지 않는다.
도 6 및 도 7에 도시된 상기 방법 과정에 관하여, 호스트가 수집 에이전트를 포함하지 않을 때, 버추얼 머신 또는 버추얼 스위치가 도 6 및 도 7에 정의된 방식으로 토폴로지 발견 서버에 직접 API 호출 정보를 보고할 수 있다.
이 출원에 의해 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법에 따르면, 패킷 전송 과정에서 API 호출 정보가 기록되고, 2세트의 API 호출 정보에 대응하는 2개의 버추얼 머신 간에 상호작용이 존재하는지 여부가 상기 2세트의 API 호출 정보가 제1 조건을 만족하는지 매칭함에 의해 판정된다. 전술한 방식을 사용하여, 토폴로지 발견 서버가, 수집된 API 호출 정보에 포함된, 버추얼 머신의 상호작용 빈도를 결정할 수 있고, 상기 버추얼 머신의 상호작용 빈도에 따라 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계가 결정된다. 전술한 해결수단은 버추얼화 시나리오에서 버추얼 머신 간의 애플리케이션 토폴로지 관계를 발견하기 위한 방법을 제공하고, 여기서 API 호출 정보는 패킷 전송을 수행하는 2개의 종단만에 의해 기록될 필요가 있고, 그러므로, 상기 해결수단의 복잡도는 비교적 낮다.
도 8에 도시된 바와 같이, 도 8은 본 발명의 실시예에 따라 애플리케이션 토폴로지 관계를 발견하기 위한 시스템을 도시하고, 여기서 상기 시스템(80)은 토폴로지 발견 서버(81) 및 적어도 하나의 호스트(82), 및 상기 적어도 하나의 호스트(82) 상에서 실행되는 복수의 버추얼 머신을 포함한다.
상기 복수의 버추얼 머신의 한 버추얼 머신(822)이 패킷을 송신하거나, 또는 상기 적어도 하나의 호스트(82) 상의 VMM이 패킷을 상기 복수의 버추얼 머신의 한 버추얼 머신(822)에 포워딩할 때, 애플리케이션 프로그래밍 인터페이스 API 호출 정보가 생성된다.
상기 토폴로지 발견 서버(81)는 적어도 2세트의 애플리케이션 프로그래밍 인터페이스 API 호출 정보를 수집하도록 구성되고, 여기서 API 호출 정보의 각각의 세트는 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함한다.
상기 토폴로지 발견 서버(81)는 상기 적어도 두 세트의 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) 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신(822) 내의 적어도 두 세트의 API 호출 정보를 분석하고; 상기 제1 버추얼 머신(822) 및 상기 제2 버추얼 머신(822)의 상호작용 빈도를 결정하고; 상기 상호작용 빈도를 기 설정된 빈도와 비교하고; 상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하도록 구성된다.
상기 토폴로지 발견 서버(81)는 구체적으로 상기 제1 버추얼 머신(822) 및 상기 제2 버추얼 머신(822)이 동일한 네트워크 세그먼트 내에 있는지 결정하고, 상기 제1 버추얼 머신(822) 및 상기 제2 버추얼 머신(822)이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하고, 정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하거나, 또는 상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하도록 구성된다.
상기 토폴로지 발견 서버(81)는 구체적으로 상기 복수의 버추얼 머신의 배치된 호스트(82) 내의 로그 파일로부터 적어도 두 세트의 API 호출 정보를 개별적으로 독출하도록 구성되거나; 또는
상기 토폴로지 발견 서버(81)는 구체적으로 상기 복수의 버추얼 머신의 배치된 호스트 내의 에이전트 모듈이 보고하는 적어도 두 세트의 API 호출 정보를 수신하도록 구성된다.
나아가, 상기 API 호출은 입력 API 함수 호출 및 출력 API 함수 호출을 포함한다.
애플리케이션 토폴로지를 발견하기 위한 상기 시스템(80)은,
API가 호출되어 상기 버추얼 머신(822)이 위치한 상기 VMM에 패킷을 송신하거나 상기 VMM에 의해 포워딩된 패킷을 수신하도록 될 때, 상기 버추얼 머신(822)의 상기 배치된 호스트(82) 내의 로그 파일에 API 호출 정보를 기록하도록 구성되는 상기 버추얼 머신(822), 또는
패킷 전송 과정 중의 API 호출에 대응하는 API 호출 정보를, 상기 버추얼 머신(822)의 상기 배치된 호스트(82)의 로그 파일 내에 기록하도록 구성되는, 상기 버추얼 머신(822)의 상기 배치된 호스트 내의 에이전트 모듈을 더 포함한다.
전술한 시스템에 대응하여, 도 9에 도시된 바와 같이, 도 9는 본 발명의 실시예에 따른 토폴로지 발견 서버를 도시하고, 상기 토폴로지 발견 서버는,
적어도 두 세트의 API 호출 정보를 수집하도록 구성되는 획득 유닛(91); 및 상기 적어도 두 세트의 API 호출 정보를 분석하고, 제1 조건을 만족하는 제1 API 호출 정보 및 제2 API 호출 정보를 결정하도록 구성되는 분석 유닛(92) 을 포함하고, API 호출 정보의 각 세트는 하나의 API 호출에 대응하고, API 호출 정보의 각 세트는, 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함하고,
상기 제1 API 호출 정보 및 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 제1 API 호출 정보 내의 패킷 흐름 방향 및 제2 API 호출 정보 내의 패킷 흐름 방향이 서로 반대인 것, 및 상기 제1 API 호출 정보 내의 API 호출의 발생 시간 및 상기 제2 API 호출 정보 내의 API 호출의 발생 시간 간의 차이가 현재 문턱값보다 작거나 같은 것을 포함하고.
상기 분석 유닛(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 버추얼 머신 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신 내의 적어도 두 세트의 API 호출 정보를 분석하고; 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도를 결정하고; 상기 상호작용 빈도를 기 설정된 빈도와 비교하고; 상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하도록 구성된다.
상기 분석 유닛(92)은 구체적으로, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정하고, 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하도록 구성된다.
상기 분석 유닛(92)은 구체적으로, 정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하거나, 또는 상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하도록 구성된다.
상기 획득 유닛(91)은 구체적으로, 상기 복수의 버추얼 머신의 배치된 호스트 내의 로그 파일로부터 적어도 두 세트의 API 호출 정보를 개별적으로 독출하도록 구성되거나; 또는
상기 획득 유닛(91)은 구체적으로, 상기 복수의 버추얼 머신의 배치된 호스트 내의 에이전트 모듈이 보고하는 적어도 두 세트의 API 호출 정보를 수신하도록 구성된다.
상기 API 호출은 입력 API 함수 호출 및 출력 API 함수 호출을 포함한다.
본 발명의 이 실시예에 의해 제공되는 애플리케이션 토폴로지 관계를 발견하기 위한 방법, 장치, 및 시스템에 따르면, 패킷 전송 과정 중의 API 호출 정보가 수집되고, 2세트의 API 호출 정보에 대응하는 2개의 버추얼 머신 간의 상호작용이 존재하는지 여부가, 상기 2세트의 API 호출 정보가 제1 조건을 만족하는지 여부를 매칭함에 의해 결정된다. 전술한 방식을 사용하여, 토폴로지 발견 서버는 상기 수집된 API 호출 정보 내에 포함된, 버추얼 머신의 상호작용 빈도를 결정할 수 있고, 상기 버추얼 머신의 상호작용 빈도에 따라 상기 버추얼 머신 간의 애플리케이션 토폴로지 관계가 결정된다. 전술한 해결수단은 버추얼화 시나리오 내의 버추얼 머신 간의 애플리케이션 토폴로지 관계를 발견하기 위한 방법을 제공하고, 여기서 여기서 버추얼 머신 간의 애플리케이션 토폴로지 관계는 패킷 전송 과정에서 생성되는 API 호출 정보를 분석함으로써 결정되어, 그러므로, 상기 해결수단의 복잡도는 비교적 낮다.
도 8 및 도 9에 대응하는 상기 실시예에서, 상기 버추얼 머신, 수집 에이전트, 버추얼 스위치, 및 상기 토폴로지 발견 서버는 기능적 유닛/기능적 모듈의 형태로 나타내진다. 여기서 상기 "유닛/모듈"은 하나 이사의 소프트웨어를 실행하도록 구성되는 주문형 집적회로(application-specific integrated circuit, ASIC), 회로, 프로세서, 또는 펌웨어 프로그램 및 메모리, 집정 회로 및/또는 전술한 기능을 제공할 수 있는 다른 장치를 지칭할 수 있다. 단순한 실시예에서, 이 기술분야의 통상의 기술자는 버추얼 머신, 수집 에이전트, 버추얼 스위치, 및 토폴로지 발견 서버가 도 2에 도시된 형태를 사용할 수 있다고 간주할 수 있다. 예를 들어, 상기 획득 유닛(901) 및 분석 유닛(902)은 도 2의 상기 프로세서 및 상기 메모리를 사용하여 구현될 수 있다.
본 발명의 일 실시예는 컴퓨터 저장 매체를 더 제공하고, 여기서 상기 컴퓨터 저장 매체는 도 8 및 도 9에 도시된 장치에 의해 사용되는 컴퓨터 소프트웨어 명령을 저장하도록 구성될 수 있고, 전술한 방법 실시예를 실행하도록 설계된 프로그램을 포함한다. 애플리케이션 토폴로지 관계를 발견하기 위한 방법이 상기 저장된 프로그램을 실행함으로써 구현될 수 있다.
본 발명이 여기서는 상기 실시예에 관하여 설명되었지만, 보호될 필요가 있는 본 발명을 실시하는 과정에서, 이 기술분야의 통상의 기술자는 첨부 도면, 개시된 내용, 및 첨부된 청구항을 고려하여 개시된 실시예의 다른 변경을 이해하고 구현할 수 있다. 상기 청구항에서, 단어 "포함하는"은 다른 구성 요소 또는 단계를 배제하지 않고, '하나의' 또는 '한 개의'는 복수 경우를 배제하지 않는다. 단일의 프로세서 또는 다른 유닛이 상기 청구항에 열거된 수 개의 기능을 구현할 수 있다. 일부 수단들이 서로 상이한 종속항에 기재되나, 이러한 수단들이 유리한 효과를 발생하기 위해 결합될 수 없음을 의미하지는 않는다.
이 기술분야의 통상의 기술자는 본 발명의 실시예가 방법, 장치(장비), 또는 컴퓨터 프로그램 제품으로 제공될 수 있음을 이해하여야 한다. 그러므로, 본 발명은 하드웨어만의 실시예, 소프트웨어만의 실시예, 또는 소프트웨어 및 하드웨어의 조합을 구비한 실시예의 형태를 사용할 수 있다. 추가적으로, 본 발명은 컴퓨터 사용가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용가능 저장 매체(디스크 메모리, CD-ROM, 광 메모리 등을 포함하나 이에 제한되지 않음) 상에 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다. 컴퓨터 프로그램이 적절한 매체 내에 저장/배치되고, 다른 하드웨어에 제공되거나 하드웨어의 부분으로서 기여하고, 인터넷 또는 다른 유선 또는 무선 통신 시스템을 사용함으로써와 같이 다른 분배 방식을 사용할 수도 있다.
본 발명은 본 발명의 실시예들에 따라 방법, 장치, 및 컴퓨터 프로그램 제품의 플로우차트 및/또는 블록 다이어그램을 참조하여 설명된다. 컴퓨터 프로그램 명령어가 플로우차트 및/또는 블록 다이어그램 내의 각각의 프로세스 및/또는 각각의 블록; 및 플로우차트 및/또는 블록 다이어그램 내의 프로세스 및/또는 블록의 조합을 구현하기 위해 사용될 수 있음을 이해하여야 한다. 이러한 컴퓨터 프로그램 명령어는 일반 목적 컴퓨터, 전용 컴퓨터, 내장 프로세서, 또는 기계를 생성하기 위한 프로그램 가능한 임의의 다른 데이터 처리 기기의 프로세서에 대해 제공될 수 있어, 컴퓨터 또는 임의의 다른 프로그램 가능한 데이터 처리 기기의 프로세서에 의해 실행되는 명령어가 플로우차트 내의 하나 이상의 프로세스 및/또는 블록 다이어그램 내의 하나 이상의 블록 내의 특정 기능을 구현하기 위한 장치를 생성한다.
이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 임의의 다른 프로그램 가능한 데이터 처리 기기로 하여금 특정 방식으로 작동하도록 명령할 수 있는 컴퓨터 판독가능 메모리에 저장될 수 있어, 상기 컴퓨터 판독가능 메모리에 저장된 명령어가 명령 장치를 포함하는 제품을 생성한다. 상기 명령 장치는 플로우차트 내의 하나 이상의 프로세스 및/또는 블록 다이어그램 내의 하나 이상의 블록 내의 특정 기능을 구현한다.
이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 기기 상에 로딩될 수 있어, 일련의 동작 및 단계가 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 기기 상에서 실행되어, 컴퓨터 구현 처리를 생성한다. 그러므로, 컴퓨터 또는 다른 프로그램 가능한 기기 상에서 실행되는 명령어가 플로우차트 내의 하나 이상의 프로세스 및/또는 블록 다이어그램 내의 하나 이상의 블록 내의 특정 기능을 구현하기 위한 단계를 제공한다.
본 발명은 특정한 특징 및 그 실시예에 관하여 설명되었지만, 명백하게, 본 발명의 범주로부터 벗어나지 않으면서, 본 발명에 다양한 수정 및 조합을 할 수 있다. 이에 대응하여, 상기 명세서 및 첨부 도면은 단지 첨부된 청구항에 의해 정의된 본 발명의 예시적인 설명이고, 본 발명의 범주 내의 임의의 및 모든 수정, 변형, 조합 또는 균등물을 커버하는 것으로 간주된다. 명백하게, 이 기술분야의 통상의 기술자는 본 출원의 기술적 해결수단의 정신 및 범주로부터 벗어나지 않으면서, 본 발명에 다양한 변형 및 수정을 할 수 있다. 본 발명 실시예의 다양한 변형 및 수정이 하기 청구범위 및 그 균등한 기술에 의해 정의되는 보호의 범주 안에 속하면, 본 발명이 이러한 변형 및 수정을 포함하는 것으로 의도되었다.

Claims (21)

  1. 애플리케이션 토폴로지 관계의 발견 방법으로서,
    적어도 두 세트의 애플리케이션 프로그래밍 인터페이스(application programming interface, API) 호출 정보를 수집하는 단계;
    상기 적어도 두 세트의 API 호출 정보를 분석하고, 제1 API 호출 정보 및 제2 API 호출 정보가 제1 조건을 만족하는지 여부를 판정하며, 제1 API 호출 정보와 제2 API 호출 정보가 제1 조건을 만족하면, 제1 API 호출 정보가 나타내는 제1 버추얼 머신과 제2 API 호출 정보가 나타내는 제2 버추얼 머신 사이에 한 번의 상호작용이 있는 것으로 결정하는 단계;
    상기 제1 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 추가로 판정하는 단계 - 여기서, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족한다는 것은, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 미리 설정되어 있는 빈도보다 크다는 것을 포함함 - ; 및
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상기 상호작용 빈도가 상기 제2 조건을 만족하면, 애플리케이션 토폴로지 관계가 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신 간에 존재한다고 결정하는 단계
    를 포함하고,
    API 호출 정보의 각 세트는 하나의 API 호출에 대응하고,
    API 호출 정보의 각 세트는, 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함하고,
    상기 제1 API 호출 정보 및 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 제1 API 호출 정보 내의 패킷 흐름 방향 및 제2 API 호출 정보 내의 패킷 흐름 방향이 서로 반대인 것, 및 상기 제1 API 호출 정보 내의 API 호출의 발생 시간 및 상기 제2 API 호출 정보 내의 API 호출의 발생 시간 간의 차이가 현재 문턱값보다 작거나 같은 것을 포함하는, 애플리케이션 토폴로지 관계의 발견 방법.
  2. 제1항에 있어서,
    API 호출 정보의 각 세트는 통신 프로토콜을 더 포함하고,
    이에 대응하여, 상기 제1 API 호출 정보 및 상기 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 상기 제1 API 호출 정보 내의 통신 프로토콜 및 상기 제2 API 호출 정보 내의 통신 프로토콜이 동일한 것을 더 포함하는, 애플리케이션 토폴로지 관계의 발견 방법.
  3. 제1항에 있어서,
    상기 제1 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 결정하는 단계는,
    상기 제1 버추얼 머신 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신 내의 적어도 두 세트의 API 호출 정보를 분석하는 단계;
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도를 결정하는 단계;
    상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계; 및
    상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하는 단계
    를 포함하는, 애플리케이션 토폴로지 관계의 발견 방법.
  4. 제3항에 있어서,
    상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계 이전에, 상기 방법은,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정하는 단계, 및
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하는 단계
    를 더 포함하고,
    상기 상호작용 빈도를 기 설정된 빈도와 비교하는 단계는,
    정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하는 단계; 또는
    상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하는 단계
    를 포함하는, 애플리케이션 토폴로지 관계의 발견 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 적어도 두 세트의 API 호출 정보를 수집하는 단계는,
    호스트 내의 로그 파일로부터 적어도 두 세트의 API 호출 정보를 개별적으로 독출하는 단계 - 여기서 복수의 버추얼 머신이 상기 호스트 상에서 실행되고, 상기 복수의 버추얼 머신은 상기 제1 버추얼 머신과 상기 제2 버추얼 머신을 포함함 - ; 또는
    상기 복수의 버추얼 머신의 배치된 호스트 내의 에이전트 모듈이 보고하는 적어도 두 세트의 API 호출 정보를 수신하는 단계
    를 포함하는, 애플리케이션 토폴로지 관계의 발견 방법.
  6. 제5항에 있어서,
    상기 호스트 내의 로그 파일로부터 적어도 두 세트의 API 호출 정보를 개별적으로 독출하는 단계 이전에, 상기 방법은,
    버추얼 머신이 API를 호출하여 상기 버추얼 머신이 위치한 VMM에 패킷을 송신할 때, 상기 버추얼 머신 또는 상기 VMM 내의 버추얼 스위치 또는 상기 VMM 중 임의의 하나가, 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에 API 호출 정보를 기록하는 제1 방식; 또는
    상기 버추얼 머신의 상기 배치된 호스트 내의 에이전트 모듈이, 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에, 패킷 전송 과정 내의 API 호출에 대응하는 API 호출 정보를 기록하는 제2 방식; 또는
    버추얼 머신의 VMM이 API를 호출하여 상기 버추얼 머신에 패킷을 송신할 때, 상기 버추얼 머신 또는 상기 VMM 내의 버추얼 스위치 또는 상기 VMM 중 임의의 하나가, 상기 버추얼 머신의 상기 배치된 호스트 내의 상기 로그 파일에 API 호출 정보를 기록하는 제3 방식
    중 적어도 하나를 더 포함하는 애플리케이션 토폴로지 관계의 발견 방법.
  7. 제5항에 있어서,
    상기 복수의 버추얼 머신의 배치된 호스트 내의 에이전트 모듈이 보고하는 적어도 두 세트의 API 호출 정보를 수신하는 단계 이전에, 상기 방법은,
    버추얼 머신의 상기 배치된 호스트 내의 에이전트 모듈이, 상기 호스트 내의 패킷의 전송 과정을 감시하고, 상기 전송 과정 내의 API 호출에 대응하는 API 호출 정보를 기록하는 단계; 또는
    버추얼 머신의 상기 배치된 호스트 내의 에이전트 모듈이, 상기 호스트 내의 패킷의 전송 과정 내의 API 호출에 대응하고, 상기 버추얼 머신 또는 버추얼 스위치 또는 VMM가 송신하는 API 호출 정보를 수신하는 단계
    를 더 포함하는 애플리케이션 토폴로지 관계의 발견 방법.
  8. 토폴로지 발견 서버로서,
    적어도 두 세트의 API 호출 정보를 수집하도록 구성되는 획득 유닛; 및
    상기 적어도 두 세트의 API 호출 정보를 분석하고, 제1 API 호출 정보 및 제2 API 호출 정보가 제1 조건을 만족하는지 여부를 판정하며, 제1 API 호출 정보와 제2 API 호출 정보가 제1 조건을 만족하면, 제1 API 호출 정보가 나타내는 제1 버추얼 머신과 제2 API 호출 정보가 나타내는 제2 버추얼 머신 사이에 한 번의 상호작용이 있는 것으로 결정하도록 구성되는 분석 유닛
    을 포함하고,
    API 호출 정보의 각 세트는 하나의 API 호출에 대응하고,
    API 호출 정보의 각 세트는, 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함하고,
    상기 제1 API 호출 정보 및 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 제1 API 호출 정보 내의 패킷 흐름 방향 및 제2 API 호출 정보 내의 패킷 흐름 방향이 서로 반대인 것, 및 상기 제1 API 호출 정보 내의 API 호출의 발생 시간 및 상기 제2 API 호출 정보 내의 API 호출의 발생 시간 간의 차이가 현재 문턱값보다 작거나 같은 것을 포함하고,
    상기 분석 유닛은,
    상기 제1 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 판정하고 - 여기서, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족한다는 것은, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 미리 설정되어 있는 빈도보다 크다는 것을 포함함 -,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상기 상호작용 빈도가 상기 제2 조건을 만족하면, 애플리케이션 토폴로지 관계가 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신 간에 존재한다고 결정하도록 더 구성되는, 토폴로지 발견 서버.
  9. 제8항에 있어서,
    API 호출 정보의 각 세트는 통신 프로토콜을 더 포함하고,
    이에 대응하여, 상기 제1 API 호출 정보 및 상기 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 상기 제1 API 호출 정보 내의 통신 프로토콜 및 상기 제2 API 호출 정보 내의 통신 프로토콜이 동일한 것을 더 포함하는, 토폴로지 발견 서버.
  10. 제8항에 있어서,
    상기 분석 유닛은 구체적으로,
    상기 제1 버추얼 머신 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신 내의 적어도 두 세트의 API 호출 정보를 분석하고;
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도를 결정하고;
    상기 상호작용 빈도를 기 설정된 빈도와 비교하고;
    상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하도록 구성되는, 토폴로지 발견 서버.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 분석 유닛은 구체적으로,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정하고,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하도록 구성되고,
    상기 분석 유닛은 구체적으로,
    정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하거나, 또는
    상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하도록 구성되는, 토폴로지 발견 서버.
  12. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 획득 유닛은 구체적으로,
    호스트 내의 로그 파일로부터 적어도 두 세트의 API 호출 정보를 개별적으로 독출하도록 구성되거나 - 여기서 복수의 버추얼 머신이 상기 호스트 상에서 실행되고, 상기 복수의 버추얼 머신은 상기 제1 버추얼 머신과 상기 제2 버추얼 머신을 포함함 - ; 또는
    상기 획득 유닛은 구체적으로, 상기 복수의 버추얼 머신의 배치된 호스트 내의 에이전트 모듈이 보고하는 적어도 두 세트의 API 호출 정보를 수신하도록 구성되는, 토폴로지 발견 서버.
  13. 애플리케이션 토폴로지 관계의 발견 시스템으로서,
    상기 시스템은 토폴로지 발견 서버, 적어도 하나의 호스트, 및 상기 적어도 하나의 호스트 상에서 실행되는 복수의 버추얼 머신을 포함하고,
    상기 복수의 버추얼 머신 중 한 버추얼 머신이 패킷을 송신하거나 적어도 하나의 호스트의 VMM이 패킷을 상기 복수의 버추얼 머신 중 한 버추얼 머신에 포워딩할 때, 애플리케이션 프로그래밍 인터페이스(application programming interface, API)가 생성되고,
    상기 토폴로지 발견 서버는,
    적어도 두 세트의 API 호출 정보를 수집하도록 구성되고,
    API 호출 정보의 각 세트는 하나의 API 호출에 대응하고,
    API 호출 정보의 각 세트는, 상기 API 호출에 대응하는 버추얼 머신의 식별자, 상기 API 호출의 발생 시간, 및 상기 API 호출의 패킷 흐름 방향을 포함하고,
    상기 토폴로지 발견 서버는, 상기 적어도 두 세트의 API 호출 정보를 분석하고, 제1 API 호출 정보 및 제2 API 호출 정보가 제1 조건을 만족하는지 여부를 판정하며, 제1 API 호출 정보와 제2 API 호출 정보가 제1 조건을 만족하면, 제1 API 호출 정보가 나타내는 제1 버추얼 머신과 제2 API 호출 정보가 나타내는 제2 버추얼 머신 사이에 한 번의 상호작용이 있는 것으로 결정하도록 더 구성되고,
    상기 제1 API 호출 정보 및 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 제1 API 호출 정보 내의 패킷 흐름 방향 및 제2 API 호출 정보 내의 패킷 흐름 방향이 서로 반대인 것, 및 상기 제1 API 호출 정보 내의 API 호출의 발생 시간 및 상기 제2 API 호출 정보 내의 API 호출의 발생 시간 간의 차이가 현재 문턱값보다 작거나 같은 것을 포함하고,
    상기 토폴로지 발견 서버는,
    상기 제1 API 호출 정보가 나타내는 제1 버추얼 머신 및 상기 제2 API 호출 정보가 나타내는 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족하는지 여부를 판정하고 - 여기서, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 제2 조건을 만족한다는 것은, 제1 버추얼 머신과 제2 버추얼 머신의 상호작용 빈도가 미리 설정되어 있는 빈도보다 크다는 것을 포함함 -,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상기 상호작용 빈도가 상기 제2 조건을 만족하면, 애플리케이션 토폴로지 관계가 상기 제1 버추얼 머신 및 상기 제2 버추얼 머신 간에 존재한다고 결정하도록 더 구성되는, 발견 시스템.
  14. 제13항에 있어서,
    API 호출 정보의 각 세트는 통신 프로토콜을 더 포함하고,
    이에 대응하여, 상기 제1 API 호출 정보 및 상기 제2 API 호출 정보가 상기 제1 조건을 만족하는 것은, 상기 제1 API 호출 정보 내의 통신 프로토콜 및 상기 제2 API 호출 정보 내의 통신 프로토콜이 동일한 것을 더 포함하는, 발견 시스템.
  15. 제13항에 있어서,
    상기 토폴로지 발견 서버는 구체적으로,
    상기 제1 버추얼 머신 내의 적어도 두 세트의 API 호출 정보 및 상기 제2 버추얼 머신 내의 적어도 두 세트의 API 호출 정보를 분석하고,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신의 상호작용 빈도를 결정하고,
    상기 상호작용 빈도를 기 설정된 빈도와 비교하고,
    상기 상호작용 빈도가 상기 기 설정된 빈도보다 클 때, 상기 상호작용 빈도가 상기 제2 조건을 만족한다고 결정하도록 구성되는, 발견 시스템.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서,
    상기 토폴로지 발견 서버는 구체적으로,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있는지 결정하고,
    상기 제1 버추얼 머신 및 상기 제2 버추얼 머신이 동일한 네트워크 세그먼트 내에 있을 때, 기 설정된 가중치 계수에 따라 상기 상호작용 빈도 또는 상기 기 설정된 빈도 중 하나를 정정하고,
    정정된 상호작용 빈도를 상기 기 설정된 빈도와 비교하거나 또는 상기 상호작용 빈도를 정정된 기 설정된 빈도와 비교하도록 구성되는, 발견 시스템.
  17. 실행 시에, 컴퓨터로 하여금 제1항 내지 제4항 중 어느 한 항에 기재된 방법을 실행하도록 하는, 컴퓨터로 판독 가능한 기록 매체 내에 기록된 프로그램.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020177001923A 2015-12-21 2015-12-21 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템 KR101979363B1 (ko)

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
KR20180088577A KR20180088577A (ko) 2018-08-06
KR101979363B1 true KR101979363B1 (ko) 2019-05-16

Family

ID=58238289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177001923A KR101979363B1 (ko) 2015-12-21 2015-12-21 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템

Country Status (6)

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

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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130219057A1 (en) * 2013-03-15 2013-08-22 Concurix Corporation Relationships Derived from Trace Data
US20150127815A1 (en) * 2013-11-07 2015-05-07 International Business Machines Corporation Modeling computer network topology based on dynamic usage relationships

Family Cites Families (18)

* 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
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 北京星网锐捷网络技术有限公司 网络拓扑的发现方法、装置和系统
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虚拟化环境的网络拓扑发现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130219057A1 (en) * 2013-03-15 2013-08-22 Concurix Corporation Relationships Derived from Trace Data
US20150127815A1 (en) * 2013-11-07 2015-05-07 International Business Machines Corporation Modeling computer network topology based on dynamic usage relationships

Also Published As

Publication number Publication date
EP3226493A1 (en) 2017-10-04
BR112017000458A2 (pt) 2017-11-07
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
JP6571161B2 (ja) 2019-09-04
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
KR101979363B1 (ko) 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템
US10212063B2 (en) Network aware distributed business transaction anomaly detection
US9600319B2 (en) Computer-readable medium, apparatus, and method for offloading processing from a virtual switch to a physical switch
JP5458308B2 (ja) 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置
US11829797B1 (en) Dynamic configuration of virtual machines
US20130227566A1 (en) Data collection method and information processing system
US9043785B1 (en) Dynamic consolidation of virtual machines
US20170126789A1 (en) Automatic Software Controller Configuration based on Application and Network Data
US10423439B1 (en) Automatic determination of a virtual machine&#39;s dependencies on storage virtualization
US20110099273A1 (en) Monitoring apparatus, monitoring method, and a computer-readable recording medium storing a monitoring program
US9935853B2 (en) Application centric network experience monitoring
US20170126580A1 (en) Tracking Contention in a Distributed Business Transaction
US11562066B2 (en) Memory tracking for malware detection
US20170222893A1 (en) Distributed Business Transaction Path Network Metrics
US20170034030A1 (en) Monitoring single content page application transitions
US10216926B2 (en) Isolation of untrusted code in operating system without isolation capability
US20170222904A1 (en) Distributed Business Transaction Specific Network Data Capture
US11163600B2 (en) Providing physical host state information to virtual machines deployed on the physical host
BR112017000458B1 (pt) Método, aparelho e sistema para descobrir uma relação de topologia de aplicativo
CN115412921A (zh) 流量处理方法及系统、存储介质及电子设备
CN117421725A (zh) 用于恶意软件检测的存储器跟踪

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)