KR20140035970A - 네트워크 사용 제어 기법 - Google Patents

네트워크 사용 제어 기법 Download PDF

Info

Publication number
KR20140035970A
KR20140035970A KR1020137034651A KR20137034651A KR20140035970A KR 20140035970 A KR20140035970 A KR 20140035970A KR 1020137034651 A KR1020137034651 A KR 1020137034651A KR 20137034651 A KR20137034651 A KR 20137034651A KR 20140035970 A KR20140035970 A KR 20140035970A
Authority
KR
South Korea
Prior art keywords
network
application
bandwidth
vms
requirements
Prior art date
Application number
KR1020137034651A
Other languages
English (en)
Other versions
KR101906632B1 (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 KR20140035970A publication Critical patent/KR20140035970A/ko
Application granted granted Critical
Publication of KR101906632B1 publication Critical patent/KR101906632B1/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/3433Recording 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 for load management
    • 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

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

Abstract

가상 머신(VM), 가령, 적어도 애플리케이션의 일부를 호스팅하는 VM의 네트워크 사용 통계치를 추적함으로써, 임의의 애플리케이션의 네트워크 활용도가 제어된다. 네트워크 활용도 제어를 위해, VM은 애플리케이션의 요소를 위한 네트워크 프록시로서 기능한다. 애플리케이션의 네트워크 요건을 위한 명세가 네트워크 사용 통계치에 비교하여 평가된다. 애플리케이션의 요소로의/로부터의/를 통한 네트워크 용량 요건이 만족되지 않을 때, 하나 이상의 VM이 요건을 만족시키도록 적응된다. 예를 들어, VM이 과도한 네트워크 대역폭을 갖는 호스트 또는 네트워크 위치로부터 이주될 수 있다. 또는, 예를 들어, 요건-이하(under-requirement) VM에 대한 네트워크 대역폭 가용성이 증가될 수 있고, 적절한 호스트 또는 네트워크 위치에서의 VM에 대한 대역폭 가용성이 감소될 수 있다. 따라서 애플리케이션-레벨의 통신 경로 요건이 VM 적응화를 이용해 만족될 수 있다.

Description

네트워크 사용 제어 기법{CONTROLLING NETWORK UTILIZATION}
현대의 컴퓨팅 환경에서, 분산 애플리케이션(distributed application)은 네트워크를 통해 협업하고, 클라이언트, 가령, 브라우저와 인터페이싱하고, 데이터베이스 서버를 액세스하는 등의 서로 다른 호스트 상에서 실행되는 많은 자율 유닛(autonomous unit)으로 구성될 수 있다. 피어-투-피어 애플리케이션(peer-to-peer application), 멀티-티어 웹 애플리케이션, 분산 해시 테이블, 서버 풀 또는 클러스터가 분산 애플리케이션의 예시이다. 이러한 분산 애플리케이션은 클라우드, 데이터 센터, 등에서 실행될 수 있다.
이러한 애플리케이션의 효율적인 운영을 위해서 네트워크 통신이 필요하다. 일부 경우, 애플리케이션이 다양한 네트워크 성능 특성, 가령, 구성요소들 간 대역폭, 인터넷 또는 인터넷 상의 클라이언트로의 평균 처리율, 애플리케이션 인스턴스당 평균 대역폭 등을 갖는 것이 바람직할 수 있다. 다시 말하면, 애플리케이션-레벨 네트워크 성능 보장(application-level network performance guarantee)을 갖는 것이 바람직할 수 있다는 것이다.
그러나, 지금까지, 이러한 보장은 가능하지 않았다. 네트워크 성능 보장은 네트워크 레벨에서 제공됐었다. 라우터가 서비스 품질(QoS: Quality of Service) 보장을 제공하기 위해 사용되었지만, 이들 보장은 전적으로 분산 애플리케이션 중심이 아니었다. 즉, 대역폭 또는 용량 레벨을 보장하기 위한 통상의 수단은 애플리케이션이 아니라 데이터 네트워크 자체에 관한 것이었다. 덧붙여, 분산 애플리케이션이 실행될 수 있는 환경에서, 서로 다른 애플리케이션들 간 자원을 공유하는 것과 같은 문제가 분산 애플리케이션을 통과하는 통신 경로(communication pathway)를 따라 네트워크 자원을 보장하기 어렵게 만든다.
네트워크 자원 프로비저닝이 애플리케이션 레벨에서 제공될 수 있는 경우라도, 네트워크 자원 요건(network resource requirement)을 획득 또는 유지하기 위해 사용되는 기법이 전송 속도 제어, 억제(throttling), 및 그 밖의 다른 네트워크-중심 트래픽 제어 메커니즘 등의 기법을 포함했다. 종종 분산 애플리케이션 요소가 가상 머신(VM: virtual machine)에 호스팅되더라도, VM 기법은 애플리케이션-레벨 네트워크 요건을 보장하는 것을 보조하기 위해 활용되지 않았다.
가상 머신(VM) 기법을 이용해 분산 애플리케이션을 위한 네트워크 자원을 제어하는 것과 관련된 기법이 이하에서 기재된다.
개요
지금부터의 개요는 이하의 구체적인 내용에서 설명될 일부 개념들을 소개하기 위해 포함된 것에 불과하다. 이 개요는 특허청구범위에서 제시되는 청구항에 의해 제공되는 본 발명의 범위를 포괄하는 것이 아니며, 상세히 기술하려는 것도 아니다.
가상 머신(VM), 가령, 적어도 애플리케이션의 일부를 호스팅하는 VM의 네트워크 사용 통계치를 추적함으로써, 임의의 애플리케이션의 네트워크 활용도가 제어된다. 네트워크 활용도 제어를 위해, VM은 애플리케이션의 요소를 위한 네트워크 프록시로서 기능한다. 애플리케이션의 네트워크 요건을 위한 명세가 네트워크 사용 통계치에 비교하여 평가된다. 애플리케이션의 요소로의/로부터의/를 통한 네트워크 용량 요건이 만족되지 않을 때, 하나 이상의 VM이 요건을 만족시키도록 적응된다. 예를 들어, VM이 과도한 네트워크 대역폭을 갖는 호스트 또는 네트워크 위치로부터 이주될 수 있다. 또는, 예를 들어, 요건-이하(under-requirement) VM에 대한 네트워크 대역폭 가용성이 증가될 수 있고, 적절한 호스트 또는 네트워크 위치에서의 VM에 대한 대역폭 가용성이 감소될 수 있다. 따라서 애플리케이션-레벨의 통신 경로 요건이 VM 적응화를 이용해 만족될 수 있다.
수반되는 특징들 중 다수가 첨부된 도면과 함께 이하의 구체적인 내용에서 설명될 것이다.
본 발명은 첨부된 도면과 관련하여 이하의 구체적인 내용을 읽음으로써 더 잘 이해될 것이며, 여기서, 유사한 도면부호가 유사한 부분을 지정하기 위해 사용된다.
도 1은 예시적 가상화 계층을 도시한다.
도 2는 가상 머신 및 가상 머신 이미지와 관련된 가상화 계층의 프로세스 및 상호대화를 도시한다.
도 3은 분산 애플리케이션의 일례를 도시한다.
도 4는 또 다른 예시적 분산 애플리케이션을 도시한다.
도 5는 가상 머신(VM) 적응화를 이용해 분산 애플리케이션에 대한 네트워크 용량을 특정하고 네트워크 용량을 프로비저닝하기 위한 시스템을 도시한다.
도 6은 VM 네트워크 리포팅과 네트워크 사용성 조작을 촉진하기 위한 가상화 개선을 갖는 호스트의 일례를 도시한다.
도 7은 도 3의 예시적 분산 애플리케이션과 관련하여 도 5의 시스템을 도시한다.
도 8은 VM에서 실행되는 분산 애플리케이션을 호스팅하는 호스트를 도시한다.
도 9는 도 8의 일부분의 상세한 도시를 도시한다.
도 10 및 11은 예시적 애플리케이션 네트워크 명세를 도시한다.
이하에서 언급되는 실시예는 동적 네트워크 상태 하에서 네트워크 용량(network capacity)을 제공하기 위해 VM 기법을 이용하는 것과 관련된다. 가상화 기법, 가령, 가상화 구성요소, 가령, 하이퍼바이저에 대한 개요로 기재가 시작될 것이다. 그 후 분산 애플리케이션 및 이의 예시가 기재될 것이다. 네트워크 프로비저닝을 위해 VM 기법을 이용하는 것에 대한 개요가 기재되고, 그 후, 관련 VM 개선(VM enhancement) 및 이러한 개선이 사용되는 방식에 대한 상세한 설명이 이어질 것이다.
도 1은 예시적 가상화 계층(virtualization layer)(100)을 도시한다. 컴퓨터(102)는 하드웨어(104), 가령, 중앙 처리 유닛(CPU(106), 메모리(108), 네트워크 인터페이스(110), 비-휘발성 저장장치(112), 및 그 밖의 다른 도시되지 않은 구성요소, 가령, 버스, 디스플레이 어댑터, 등을 포함한다. 상기 가상화 계층(100)은 가상 머신(114)의 실행을 관리 및 촉진시킨다. 도 1에 도시되어 있지 않지만, 일반적으로 각각의 가상 머신(114)은 연관된 가상 디스크 이미지(virtual disk image) 및 게스트 운영 체제(guest operating system)를 가진다. 간략하게, 종종 가상 머신(114)의 운영 체제, 그리고 아마도, 애플리케이션 소프트웨어는 가상 머신(114)과 연관된 가상 디스크 이미지로부터 저장되고 실행되는 게스트로서 일컬어질 것이다. 편의상, 다양한 형태의 가상화 계층을 지칭하기 위해 본원에서 용어 "하이퍼바이저(hypervisor)"가 사용될 것이다. 덧붙여, 이하에서 설명될 바와 같이, 가상 머신(114)은 분산된 애플리케이션의 요소들을 호스팅하도록 사용된다.
가상화 계층(100)은 임의의 다양한 종래의 또는 미래의 구현예, 가령, Hyper-V Server (TM), VMWare ESX Server (TM), Xen, Oracle VM (TM) 등을 가질 수 있다. 가상화 계층의 아키텍처는 운영 체제 상에서 가상 머신 모니터(VMM)가 실행되는 호스팅되는 유형(hosted type)이거나, 컴퓨터(102)의 하드웨어(104) 상에서 하이퍼바이저 또는 이와 유사한 것이 직접 실행되는 베어-메탈 유형(bare-metal type)일 수 있다. 본원에서 사용될 때, "가상 머신"은 임의의 특정 하드웨어 아키텍처(가령, x86)를 시뮬레이트하는 시스템형 가상 머신을 지칭하며 상기 가상 머신은 상기 하드웨어 아키텍처를 위한 원시 코드(native code)를 실행시킬 수 있고, 게스트에게, 상기 가상 머신은 하드웨어 머신과 거의 구별 불가능할 수 있다. 본원에 기재된 가상 머신은 자바 가상 머신(Java Virtual Machine)과 같은 추상(abstract) 또는 프로세스(process)형 가상 머신이 아니다.
가상화 계층(100)은 가상 머신(114)을 관리하고 자신과 가상 머신(114) 모두에 의해 하드웨어(104)의 공유를 관리하는 기본 기능을 수행한다. 다양한 기법들 중 임의의 것이 하드웨어(104)로부터 가상 머신(114)을 고립하도록 사용될 수 있다. 하나의 실시예에서, 가상화 계층은 가상 머신(114)에 대응하는 서로 다른 고립된 환경(즉, 파티션(partition) 또는 도메인(domain))을 제공할 수 있다. 가상화 계층(100)의 일부, 가령, 가상 머신 통신 설비 간 공유되는 가상 장치 드라이버 및 가상 머신 관리 API(애플리케이션 프로그래밍 인터페이스)가 특수한 특권 파티션 또는 도메인에서 실행될 수 있음으로써, 컴팩트(compact)하고 효율적인 하이퍼바이저를 가능하게 한다. 그 밖의 다른 실시예에서, 가상 머신 관리 및 하드웨어(104)의 동기 공유(coherent sharing)를 위한 기능부가 모놀리식 온-더-메탈(monolithic on-the-metal) 하이퍼바이저에 위치할 수 있다.
도 2는 가상 머신(114) 및 가상 머신 이미지(140)와 관련된 가상화 계층(100)의 프로세스 및 상호대화를 도시한다. 상기 가상화 계층(100)은 가상 머신(114)을 시동시키고 실행하는 프로세스(142)를 수행하며, 이는 대응하는 가상 머신 설정 파라미터(configuration parameter)에 따라 이뤄질 수 있다. 가상 머신(114)(VM)이 시동될 때, 상기 가상화 계층은 연관된 가상 머신 이미지(140)를 식별한다. 실제로, 임의의 가상 머신 이미지(140)는 임의의 가상 머신(114)에 의해 사용될 수 있다. 상기 가상 머신 이미지(140)는 가상화 계층(100)의 파일 시스템(141) 상의 특수 포맷의 파일(가령, VHD)일 수 있다. 상기 가상화 계층(100)은 식별된 가상 머신 이미지(140)를 로딩한다. 상기 시동된 가상 머신(114)은 가상 머신 이미지(140)를 탑재하고 판독하여, 아마도, 마스터 부트 레코드(master boot record) 또는 그 밖의 다른 부트 정보를 찾고, 실행을 시작하는 게스트 운영 체제를 부팅할 수 있다.
가상화 계층(100)은 가상 머신(114)의 실행을 관리하여, 게스트의 커널(kernel), 하이퍼콜(hypercall) 등으로의 특정 호출(call)을 핸들링하고, 기저 하드웨어(104)로의 가상 머신(114)의 액세스를 조정한다. 게스트 및 이의 소프트웨어가 실행될 때, 상기 가상화 계층(100)은 가상 디스크 이미지(140) 상에 게스트의 상태를 유지할 수 있고, 게스트 또는 게스트에 의해 실행되는 애플리케이션이 데이터를 "디스크"에 쓸(write) 때, 상기 가상화 계층(100)은 상기 데이터를 가상 디스크 이미지(140)의 포맷으로 번역하고 이미지에 쓴다.
상기 가상화 계층(100)은 가상 머시ㅈ(114)을 셧 다운하기 위한 프로세스(144)를 수행할 수 있다. 가상 머신(114)을 중단시키기 위한 명령이 수신될 때, 상기 가상 머신(114) 및 이의 게스트의 상태가 가상 디스크 이미지(140)에 저장되고, 실행되는 가상 머신(114) 프로세스(또는 파티션)가 삭제된다. 가상 머신(114)의 명세(specification)가 상기 가상 머신(114)의 차후의 재시동(restart)을 위해 유지될 수 있다.
분산 애플리케이션
도 3은 분산 애플리케이션(160)의 일례를 도시한다. 도 3의 예는 표시-티어(presentation-tier)(162), 애플리케이션-티어(application-tier)(164), 및 데이터-티어(data-tier)(166)를 갖는 멀티-티어 애플리케이션이다. 도시되지 않았지만, 분산 애플리케이션은 요소들이 통신 노드, 가령, 라우터(router), 브리지(bridge), 스위치(switche), 게이트웨이(gateway), 로드 밸런서(load balancer) 등을 통해 통신하는 데이터 네트워크에서 실행된다. 상기 표시-티어(162)는 분산 애플리케이션(160)을 이용하는 클라이언트와 인터페이싱하는 웹 서버 인스턴스(168) 또는 그 밖의 다른 서버 또는 애플리케이션으로 구성된다. 분산 애플리케이션(160)의 메인 로직을 구현할 수 있고, 데이터베이스에서 객체와 데이터 간 번역을 할 수 있고, 클라이언트 요청을 데이터베이스 질의로 번역할 수 있는 등의 미들-티어(middle-tier)(164)가 애플리케이션 인스턴스(170)에 의해 형성된다. 데이터-티어(164)는 복수의 데이터베이스 서버(172), 데이터베이스 인터페이스, 데이터저장소(datastore), 또는 그 밖의 다른 형태의 영속적(persistent)이고 효율적인 데이터 저장장치를 가질 수 있다. 로드 밸런서(174)는 각각의 계층에서의 요소들 간 로드(load)의 균형을 조정할 수 있다. 각각의 티어에서의 요소들, 가령, 웹 서버 인스턴스(168)는 서로 다른 실행 상태를 갖는 복제된(duplicate) 실행 파일 또는 소프트웨어 스택이다.
동작 중에, 분산 애플리케이션(160)은 예를 들어 클라이언트, 그 밖의 다른 애플리케이션, 서비스 등으로부터 요청을 수신한다. 상기 요청은 웹 서버 인스턴스(168)에 의해 핸들링되고, 상기 웹 서버 인스턴스(168)는 트랜잭션(transaction)을 개시하거나, 그 밖의 다른 방식으로 애플리케이션 인스턴스(170)와 통신할 수 있다. 그 후, 애플리케이션 인스턴스(170)는 데이터베이스 서버(172)와의 상호대화를 가질 수 있다.
도 3의 각각의 실선은 네트워크 통신의 가능한 경로를 나타낸다. 분산 애플리케이션(160)의 네트워크 요건(network requirement)과 관련하여, 임의의 실선(가령, 경로(176)) 또는 요소들 간 임의의 다양한 선 세트(가령, 경로 세트(178)(가령, 웹 서버(168)와 로드 밸런서(174) 간의 모든 선), 또는 이들의 조합이 네트워크 요건이 특정, 평가 및 프로비저닝(provision)될 수 있는 가능한 포인트이다.
도 4는 또 다른 예시적 분산 애플리케이션, 피어-투-피어 애플리케이션(200)을 도시한다. 피어(202)들은 서로 다른 호스트 상에서(또는 서로 다른 게스트에서) 실행된다. 일반적으로 각각의 피어(202)는, 차이나는 동작 상태를 가짐에도, 동일하게 거동하고, 동일한 기능을 수행한다. 피어-투-피어 애플리케이션(200)은 분산 해시 테이블, 분산 저장 시스템, 네트워크 서비스 등일 수 있다. 상기 피어-투-피어 애플리케이션은 피어(202)들 간 연결을 가질 수 있다. 상기 피어(202)는 인터넷(204)을 통해 외부 개체와 통신할 수 있다. 또한 상기 피어(202)는 다양한 서비스, 가령, 데이터베이스 서버(206)가 관계 데이터베이스(relational database)(208)를 제공하는 서비스를 이용할 수 있다. 피어(202)는 외부 요청의 실질적인 서비싱(servising)뿐 아니라 피어-레벨 상호연결성(peer-level interconnectivity)의 내부 유지관리를 위해서도 통신할 수 있다. 외부 요청이 피어(202)에 의해 직접 핸들링될 수 있거나, 상기 피어가 요청을, 상기 요청을 서비스하고 응답을 반환(return)하는 다른 피어(202)에게 전달할 수 있도록 하는 정보를 가질 수 있다.
도 3에 도시된 것처럼, 실선은 요소들 간 네트워크 경로를 나타낸다. 피어(02)들 사이의 선이 피어간(inter-peer) 네트워크 경로를 나타내고, 피어-투-피어 애플리케이션(200)까지의 선이 임의의 또는 복수의 피어(202)로의 경로를 나타낸다. 도 3에 도시된 것처럼, 선들 중 임의의 선(가령, 경로(210, 212)) 또는 선의 세트(가령, 경로(214))가 네트워크 용량 또는 대역폭 요건을 특정하고, 측정된 상태에 비교하여 상기 요건을 평가하며, 요건을 만족시키도록 VM을 조절하기 위한 후보 타깃(candidate target)일 수 있다.
애플리케이션-레벨 네트워크 프로비저닝
도 5는 분산 애플리케이션(230)을 위한 네트워크 용량을 특정하고, 가상 머신(VM) 적응화(virtual machine adaptation)를 이용해 네트워크 용량을 프로비저닝하기 위한 시스템을 도시한다. 네트워크 제어기(232)는, 이하에서 설명되겠지만, 네트워크 상태 및 분산 애플리케이션(232)의 수요(need)를 평가하기 위한 프로세스를 수행한다. 분산 애플리케이션(230)에 대해 네트워크 요건(또는 선호도)을 특정하는 네트워크 명세(network specification)(234)가 제공된다. 네트워크 명세(234)는 분산 애플리케이션(230)에 대한 네트워크 요건(236)을 포함한다.
네트워크 요건(236)은 분산 애플리케이션(230)의 요소들 간 애플리케이션-레벨 네트워크 경로 또는 연결(가령, 연결성을 제공하는 기저 라우터(underlying router) 등에 무관한 요소들 간 연결성)을 식별할 수 있다. 예를 들어, 도 3의 예시에서, 네트워크 요건(236)은 경로(176) 또는 경로 세트(178)를 특정할 수 있다. 도 4의 예시에서, 네트워크 요건은 경로(210, 212) 또는 경로(214)를 식별할 수 있다. 이러한 경로 또는 연결이, 개략적으로, 분산 애플리케이션의 애플리케이션 요소(238) 및/또는 상기 분산 애플리케이션(230)과 연결되는 외부 요소(240)의 관점에서 식별된다(애플리케이션 요소는 서로 다른 호스트 또는 VM 게스트, 가령, 피어(202), 웹 서버(168), 네트워크 서비스 등 상에서 실행되는 분산 애플리케이션(230)의 일부일 수 있다). 도 5의 예에서, 경로(242 및 244)는 대응하는 네트워크 요건(236)을 가진다. 네트워크 요건(236)은 또한, 자신의 경로(또는 경로들, 또는 경로들의 클래스)에 대응하는 네트워크 자원 요건을 특정한다. 예를 들어, 경로(242)에 대한 네트워크 요건(236)은 구체적(즉, 동적으로 계산된) 대역폭 요건, 가령, 초당 50 킬로바이트(50 KBS)를 특정할 수 있다. 네트워크 명세의 상세사항이 도 10 및 11을 참조하여 이하에서 기재된다.
도 5는 또한 네트워크 통계 데이터(network statistics data)(246)를 도시한다. 상기 네트워크 통계 데이터(246)는 애플리케이션 요소(238) 및/또는 네트워크 통신 노드(가령, 라우터, 집합기(aggregator), 게이트웨이 등)로부터 리포트되는 네트워크 통계치(248)를 저장한다. 상기 네트워크 통계치는 또한, 네트워크 제어기(232)가 기저 데이터 네트워크의 현 토폴로지의 모델을 구축할 때 사용하는 네트워크 토폴로지 정보를 포함할 수 있다. 이러한 토폴로지 정보는 수집된 BGP(border gateway protocol) 라우팅 데이터 또는 OSPF(open shortest path first) 라우팅 데이터로부터 얻어질 수 있다. 네트워크 토폴로지 정보 및 토폴로지 모델은 네트워크 프로비저닝을 위해 필수인 것은 아니다.
더 구체적으로, 네트워크 통계 데이터(246)가 애플리케이션 요소(238), 이들을 호스팅하는 호스트, 애플리케이션 요소를 호스팅하는 VM 등에 의해 소비되는 현재 또는 과거의 네트워크 대역폭에 대한 정보를 포함할 수 있다. 하나의 실시예에서, 애플리케이션 요소(238)가 실행되는 VM을 관리하는 하이퍼바이저가 개별 VM의 네트워크 사용성(network usage)과, 아마도, 사용성(가령, 대역폭 값)을 VM의 신원을 연관시키는 정보까지 모니터링하고 리포트하는 구성요소(도 6의 미터(meter)(270) 참조)를 가질 수 있다. 하나의 실시예에서, 분산 애플리케이션(230)의 요소를 호스팅하는 각각의 VM의 네트워크 활동 또는 소비량이 리포트되고 추적된다. 이 경우, 시스템은 어느 VM이 어느 애플리케이션 요소(238)를 호스팅하는지를 계속 주시한다. 실제로, VM은 애플리케이션 요소(238)의 네트워크-추적 프록시 역할을 한다. 네트워크 통계치(248) 및 네트워크 통계 데이터(246)의 상세사항과 추가 예시는 이하에서 언급된다.
다시 도 5를 참조하여, 네트워크 제어기(232)는 분산 애플리케이션(230)의 네트워크 요건(236)에 비교하여 네트워크 통계 데이터(246)를 평가한다. 네트워크 제어기(232)는 네트워크 요건(236)에서 특정된 일부 경로 또는 경로들의 세트 또는 클래스(또는 이들의 조합)가 만족스럽지 않은지(또는 만족스럽지 않을 가능성이 높은지) 여부를 결정할 수 있다. 그 후 상기 네트워크 제어기(232)는 애플리케이션 요소(238)가 실행 중인 VM을 호스팅하는 하나 또는 그 이상의 호스트에게 발행하는 VM 적응화(VM adaptation)(250)를 결정한다.
VM 적응화(250)는, 제 1 호스트 상에서 VM을 중단시키고, (필요한 경우) VM의 디스크 이미지를 제 2 호스트로 전송하며, 이를 제 2 호스트에서 시동시킴으로써, 하나 이상의 VM 관리 구성요소(도 6의 관리(mgmt) 구성요소(274))가 VM(또는 복수의 VM)을 제 1 호스트에서 제 2 호스트로 이주(migrate)시키라는 명령(instruction)일 수 있다. VM 적응화(250)는 하이퍼바이저에 의해 관리되는 VM들 중 하나 이상에 대한 네트워크 용량을 증가 또는 감소시키라는 하이퍼바이저로의 명령일 수 있다. 하나의 실시예에서, 하이퍼바이저는 개별 VM에 대한 네트워크 처리율을 제어하기 위한 로직(도 6의 레귤레이터(272) 참조)을 가진다. 억제(throttling) 및 이주(migration)는 네트워크 사용성을 제어하기 위한 효과적이고 간단한 기법이지만, 그 밖의 다른 기법이 사용될 수도 있다. 예를 들어, 하나의 실시예에서, 애플리케이션 티어에서의 인스턴스의 개수를 감소시킴으로써, 전체 대역폭(global bandwidth)이 감소될 수 있다. 또 다른 실시예에서, 예를 들어, 네트워크 포화 상태를 게스트 운영 체제의 TCP(Transmission Control Protocol) 속도 제어 알고리즘(rate control algorithm)을 스푸핑(spoof)함으로써, 네트워크 사용성을 조정하기 위해 게스트 운영 체제가 시그널링된다.
네트워크 제어기(232)의 구현과 무관하게, 상기 네트워크 제어기(232)는 다양한 컴퓨터에서 구현될 수 있다. 하나의 실시예에서, 네트워크 제어기(232)가 네트워크에 걸쳐 VM을 관리하는 가상 머신 관리 시스템에 포함된다. 예를 들어, System Center Virtual Machine Manager (TM), VMWare VirtualCenter (TM) 등이 있다. 또 다른 실시예에서, 네트워크 제어기(232)는 네트워크 연결성을 갖는 임의의 호스트 상에서 실행되는 자립형 애플리케이션이다. 또 다른 실시예에서, 네트워크 제어기(232) 자체가 분산 애플리케이션이다. 네트워크 제어기(232)는 (대역폭이 관리될 수 있는 방식에 대한 가능한 한계를 갖고) 분산 애플리케이션(230)의 일부로서 구현될 수 있다. 하나의 실시예에서, 네트워크 제어기(232)는 동일한 네트워크 및 호스트를 공유하는 다수의 서로 다른 분산 애플리케이션을 관리한다. 어느 경우라도, 네트워크 제어기는, 하나의 애플리케이션에게 가용한 대역폭을 증가 또는 감소시켜, 또 다른 애플리케이션의 요건을 충족시키는 데 도움이 되도록 하는 능력을 가질 수 있다.
도 6은 VM 네트워크 리포팅 및 네트워크 사용성 조작(manipulation)을 촉진시키기 위한 가상화 개선(virtualization enhancement)을 갖는 호스트(268)의 일례를 도시한다. 앞서 언급된 바와 같이, 하이퍼바이저(274)는 VM(276, 278)을 실행시키기 위해 알려진 가상화 기능을 수행한다. 덧붙여, 하이퍼바이저(274)는 레귤레이터(regulator)(272) 및 미터(meter)(270)를 가진다. 상기 미터(270)는 호스트(268) 상의 VM으로/VM으로부터 전송되는 네트워크 데이터의 양(volume)(및/또는 속도(rate))에 대한 통계치를 수집한다. 하나의 실싱예에서, 하이퍼바이저는 각각의 VM에 대한 가상 NIC(network interface card) 장치를 가질 수 있고, 통계치가 상기 가상 NIC 장치를 통해 생성된다.
상기 레귤레이터(272)는 하이퍼바이저(274)가 자신이 관리하는 VM의 네트워크 처리율(network throughput)을 제어할 수 있게 해준다. 다양한 제어 알고리즘이 사용될 수 있다. (예를 들어, 전송 전에 큐잉(queue)된 패킷을 지연시킴으로써) 알려진 네트워크 속도 제어 알고리즘이 사용될 수 있다. 일부 경우, 일부 VM(예를 들어, 분산 애플리케이션의 일부가 아닌 VM(278))에 대한 대역폭이 감소되어, 애플리케이션 요소(238)를 호스팅하는 VM(276)에 대한 대역폭의 증가를 가능하게 할 수 있다. 하이퍼바이저 또는 가상 NIC는 패킷이 이를 통과할 때 패킷을 검사하여, 대응하는 실제 네트워크 경로를 이해하고 어느 네트워크 세션이 억제(throttle)될지를 결정할 수 있다.
또한 호스트(268)는 네트워크 관리를 촉진시키기 위한 관리(mgmt) 구성요소(280)를 가질 수 있다. 하나의 실시예에서, 관리 구성요소(280)는 미터(270)로부터 통계치를 수집하고 네트워크 통계 데이터(246)에 저장되도록 상기 통계치를 전송한다. 관리 구성요소(280)는 또한 네트워크 제어기(232)로부터의 명령에 따라 레귤레이터(272)를 제어할 수 있다. 상기 관리 구성요소(280)는 또한 네트워크 제어기(232)로부터의 VM 적응화에 응답하여 VM을 이주하기 위한 명령을 수행할 수 있다.
또한 관리 구성요소(280)는 네트워크 제어기(232)가 서로 다른 가상화 구현과 인터페이싱할 수 있게 해주는 편리한 수단일 수 있으며, 서로 다른 관리 구성요소(280) 구현이 각각의 가상화 구현에 대해 제공될 수 있다. 각각은 동일한 제어기-측 API(controller-facing API)를 구현할 수 있고, 서로 다른 가상화 구현을 위해 적합한 서로 다른 가상화-측 로직(virtualization-facing logic)을 가질 수 있다.
관리 구성요소(280), 레귤레이터(272), 및 미터(270)의 기능부는 사용 중인 특정 가상화 구현 대해 적합한 가상화 계층의 임의의 곳에 포함될 수 있다. 덧붙여, 이들 구성요소는 실제로 이산 유닛으로서 존재할 필요는 없고, 대응하는 기능부는 다양한 설계를 갖고 수행될 수 있다.
도 7은 도 3의 예시적 분산 애플리케이션(160)과 관련하여 도 5의 시스템을 도시한다. 호스트(268)는 앞서 기재되었고, 애플리케이션 요소, 가령, 웹 서버(168), 애플리케이션 인스턴스(170) 및 데이터베이스 서버(172)를 호스팅할 수 있는 VM(276)을 가진다. 미터(270)와 레귤레이터(272)는 가정되지만 도시되지 않는다. 더 작은 버전의 호스트(268)는 더 큰 버전의 호스트(268)와 동일하다. 도 8에 도시된 더 큰 버전은 호스트(268)의 상세사항을 도시한다. 도 8은 VM(276)에서 실행되는 분산 애플리케이션(160)을 호스팅하는 호스트(268)를 도시한다. 호스트들 중 일부가 특정 경로의 구성요소일 수 있는 서브네트워크(subnetwork)(300) 내에 위치한다. 네트워크 제어기(232)는 VM(276)을 애플리케이션 요소, 가령, 데이터베이스 서버(172), 애플리케이션 인스턴스(170) 등으로 매핑하는 정보를 유지한다. VM(276)의 네트워크 통계치가 네트워크 통계 데이터저장소(246)에 누적된다. 하나의 실시예에서, 네트워크 통신 노드(302)(가령, 라우터, 게이트웨이, 집합기(aggregator))가 VM(276)을 위한 네트워크 통신을 제공한다.
도 9는 도 8의 임의의 부분의 상세도를 도시한다. 호스트(268B)의 미터(270)가, 전송되고 네트워크 통계 데이터(246)에 저장되는 VM(276)의 미터 통계치(320)를 누적한다. 네트워크 통신 노드(302)는 네트워크 통계치, 가령, 링크 대역폭 속도(link bandwidth rate), 인터페이스 통계치 등을 제출할 수도 있고, 제출하지 않을 수도 있다. 네트워크 제어기(332)는 임의의 네트워크 통계치를 저장하기 위한 프로세스(334)를 수행할 수 있으며, 상기 프로세스는 통계치를 수신하고 이들을 네트워크 통계 데이터(246)에 저장하는 것을 포함할 수 있다.
네트워크 제어기(232)는 네트워크 내에서 네트워크 트래픽 로드를 이동(shift)시키기 위한 프로세스를 수행한다. 상기 네트워크 제어기(232)는, 네트워크 명세의 집합(collection)(336) 중에서, 분산 애플리케이션에 대응하는 네트워크 명세(234A)를 선택한다. 그 후, 상기 명세는 분산 애플리케이션과 관련된 네트워크 통계치에 비교하여 반복적으로 평가된다. 실제 상태가 (네트워크 명세(234A)에 따르는) 분산 애플리케이션의 요건 또는 선호에 부합하도록, 네트워크 제어기(232)가 조정이 필요하다고 판단할 때마다, 상기 네트워크 제어기는 상기 네트워크로부터의 현재 또는 최근의 트래픽 통계치를 분석하여, 아마도 어느 VM이 어느 애플리케이션 요소를 호스팅하는지를 고려하여, 네트워크 트래픽 로드를 이동시키기 위한 하나 이상의 타깃을 식별할 수 있다. 따라서 네트워크 제어기(232)는 상기 타깃에 대해 VM 적응화를 수행한다.
VM 적응화와 관련하여, 하나의 실시예에서, 호스트(268A) 상의 VM(276A)을 타깃으로서 식별한 네트워크 제어기(232)는 상기 VM(172A), 출발지 호스트(268A) 및 도착지 호스트(268B)를 식별할 수 있는 "이주 수행" 명령(338)을 전송한다. 이에 응답하여, 호스트(268A, 168B)는 VM(172A)을 호스트(268B)로 이주한다. VM 이주를 위한 기법은 다른 곳에서 공지 및 기재된 바 있다. 일반적으로, VM(276A)은 호스트(268A) 상에서 정지되고, 정지된 VM의 디스크 이미지(338)가 호스트(268B)로 전송되거나 호스트(268B)에 의해 이용 가능해지고, 그 후 호스트(268B)의 가상화 구성요소가 수신된/액세스된 디스크 이미지(338)로부터 VM(276A)을 재시동시킬 수 있다.
동일한 또는 그 밖의 다른 실시예에서, 네트워크 제어기(232)는 타깃 VM의 네트워크 용량을 조정함(가령, 다양한 VM 전송 속도를 낮춤 또는 높임)으로써, 네트워크 트래픽이 이동되어야 한다고 결정할 수 있다. 예를 들어, 제어기(232)는 특정된 경로 요건(가령, VM(276B)을 포함하는 경로)이 만족되지 않는다고 결정할 수 있다. 그 후 네트워크 제어기(232)는 적합한 호스트(들)에서 현재 감소된 대역폭을 가질 수 있는 하나 이상의 VM(가령, 종종 호스트(268B)가 아닌 다른 호스트 상에 있을 수 있는 또 다른 애플리케이션을 위한 VM(340))을 식별할 수 있고, 그 후 상기 타깃 VM에 대한 네트워크 속도 또는 대역폭 할당을 증가/감소시키라는 명령(342)을 전송한다. 그 후, 수신자 호스트(들) - 이 예시에서는 호스트(268B) - 의 레귤레이터(272)가 타깃 VM의 할당을 변경시킴으로써 응답한다.
또 다른 실시예에서, 네트워크 제어기가 서로 다른 로드 하에서의 전송의 대기시간(latency)를 모니터링함으로써, 호스트 외부의 네트워크 요소(가령, 라우터)의 성능 능력(performance capability)을 추론한다. 예를 들어, 대기시간은 대역폭의 함수이고, 시간의 흐름에 따라, 대기시간/대역폭 곡선이 구축되면, 곡선(또는 대기시간과 대역폭을 상관(correlate)시키는 그 밖의 다른 정보)을 이용해 VM 배치(VM placement)의 조절을 알려줄 수 있다. 또한 가상 NIC에서 네트워크 성능을 탐지(probe)하기 위해 추가 패킷을 투입하는 것도 가능하다. 이러한 탐지 패킷은 출발지(source)에서 투입될 것이고, 도착지(destination)에서 제거될 것이다.
VM 속도 조절(VM rate regulation)과 VM 이주(VM migration)(또는 생서으, 삭제, 또는 중지) 중 하나 이상이 사용될 수 있음을 알 것이다. 네트워크 통신 노드(302)에 의해 리포트되는 네트워크 토폴로지 또는 통계치가 네트워크 제어기(232)의 결정 프로세스에게 정보가 되거나 되지 않을 수 있다. 네트워크 명세가 애플리케이션 요소의 관점에서 경로를 특정하고, 네트워크 통계치가 이들 요소에 대해 리포트되고 이들 요소와 상관되며, 상기 애플리케이션 요소와 관련하여 분석과 조절이 수행되기 때문에, 실제로 네트워크 명세 및 프로비저닝이 애플리케이션 레벨에서 발생함을 알 것이다. 따라서 네트워크 레벨에 반드시 도달할 필요 없이(그리고 네트워크 레벨에 도달하기 위해 필요한 특권 없이도), 분산 애플리케이션을 통과하는(그리고 분산 애플리케이션으로/으로부터) 경로에 대한 속도/대역폭을 보장하도록 시도하는 것이 가능하다. 즉, 하나의 실시예에서, 네트워크 제어기(232)가 추가 수단으로서 네트워크 통신 노드(302)에게 네트워크 용량(network capacity)을 필요한 곳으로 이동시키라는 명령을 발행할 수 있다. 일부 클라우드 또는 데이터 센터에서, 네트워크 대역폭은 서로 다른 시간대(가령, 하루중 서로 다른 시간대, 일주일 중 서로 다른 요일, 등)에 서로 다른 비용을 가질 수 있고, 시스템은 전체적인 비용 한계 또는 최소화 함수(minimization function)를 충족하도록 네트워크 사용성을 조절하도록 구성될 수 있다.
도 10 및 11은 예시적 애플리케이션 네트워크 명세(234A, 234B)를 도시한다. 상기 네트워크 명세(234A, 234B)는 XML(Extensible Markup Language)로 써질 수 있다. 예시 내 XML 요소는 따로 설명이 필요 없다. 대응하는 분산 애플리케이션의 구성요소 또는 요소가 예를 들어,"Internet Gateway", "Tier1 App" 등으로 정의될 수 있음을 고려하자. 그 후 경로에 대한 용량 명세가 구성요소에 관하여 정의된다. 예를 들어, 네트워크 명세(234A)에서, 용량 명세는 Tier1 App에서 InternetGateway로의 경로의 평균 대역폭이 1.5 MBS (megabytes per second)이어야 한다. 또 다른 명세는 모든 Tier1-Tier2 경로의 합(sum)이 .5 MBS을 초과해야 함을 나타낸다. 하나의 실시예에서, 명세문(specification statement) 내 파라미터의 순서로 나타내어지는 바와 같이, 명세는 방향에 민감(direction-sensitive)할 수 있다. 네트워크 명세는 풍부한 표현 언어를 정의할 수 있어서, 복잡한 경로 및 상태가 특정될 수 있게 할 수 있다. 복잡한 상태가 특정될 수 있다. 또한 교정적 동작(corrective action)이 특정될 수 있다. 예를 들어, 요건이 상태를 만족시키기 위해 타깃될 첫 번째 경로 상태 및 또 다른 경로를 특정할 수 있다. 요건이 하나의 경로 내 복수의 요소를 특정할 수 있다. 예를 들어, 구성요소 C를 통과하는 구성요소 A에서 B까지의 대역폭이 있다.
결론
앞서 언급된 실시예 및 특징이 휘발성 또는 비휘발성 컴퓨터 또는 장치 판독형 매체에 저장된 정보의 형태로 실현될 수 있다. 이는 적어도 매체, 가령 광학 저장장치(가령, 컴팩트-디스크 리드-온리 메모리(CD-ROM)), 자기 매체, 플래시 리드-온리 메모리(ROM), 또는 디지털 정보를 저장하기 위한 임의의 현재 또는 미래의 수단을 포함하는 것으로 여겨진다. 저장된 정보는 기계 실행형 명령(가령, 컴파일된 실행형 2진 코드), 소스 코드, 바이트코드, 또는 앞서 기재된 다양한 실시예를 수행하도록 컴퓨팅 장치를 활성화하거나 구성하기 위해 사용될 수 있는 그 밖의 다른 임의의 정보의 형태를 가질 수 있다. 이는 또한 적어도 휘발성 메모리, 가령, 랜덤-액세스 메모리(RAM) 및/또는 실시예를 수행하는 프로그램의 실행 중에 중앙 처리 장치(CPU) 명령 같은 정보를 저장하는 가상 메모리뿐 아니라, 프로그램 또는 실행 파일이 로딩 및 실행되게 하는 정보를 저장하는 비휘발성 매체를 포함하는 것으로도 여겨진다. 실시예 및 특징은 임의의 유형의 컴퓨팅 장치, 가령, 휴대용 장치, 워크스테이션, 서버, 모바일 무선 장치 등에서 수행될 수 있다.

Claims (15)

  1. 가상 머신(VM)(virtual machine) 상의 네트워크 내에서 실행되는 분산 애플리케이션(distributed application)들에 대해 네트워크 대역폭을 특정하고 할당하기 위한 방법으로서,
    상기 방법은
    애플리케이션 네트워크 명세(application network specification)를 저장하는 단계 - 각각의 애플리케이션 네트워크 명세는 복수의 호스트 상의 복수의 VM 상에서 실행되는 애플리케이션 요소를 갖는 분산 애플리케이션의 네트워크 요건을 특정함 - ,
    상기 네트워크에서 네트워크 사용(network usage)을 모니터링하는 단계,
    상기 애플리케이션 네트워크 명세와 모니터링을 기초로, 네트워크 대역폭 요건(network bandwidth requirement)을 결정하는 단계, 및
    상기 네트워크 내 VM 중 하나 이상을 이주시킴으로써, 및/또는 상기 복수의 호스트 중 하나의 호스트 상의 하이퍼바이저(hypervisor)가 자신이 관리하는 VM의 네트워크 전송을 증가 또는 감소시킴으로써, 상기 네트워크 대역폭 요건을 만족시키는 단계를 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  2. 제1항에 있어서,
    애플리케이션 네트워크 명세가 대응하는 분산 애플리케이션의 요소들을 통과하는 복수의 통신 경로를 특정하며, 상기 방법은 상기 복수의 경로 중 하나의 경로의 네트워크 요건을 만족시키기 위해 VM을 제 1 호스트에서 제 2 호스트로 이주시키는 단계를 더 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  3. 제1항에 있어서,
    상기 모니터링하는 단계는 호스트 상의 하이퍼바이저(hypervisor)에서 VM의 네트워크 통계치를 캡처하는 단계 및 상기 네트워크 통계치를 저장되도록 전송하는 단계를 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  4. 제3항에 있어서,
    상기 모니터링하는 단계는 상기 네트워크의 하나 이상의 라우터, 스위치, 또는 로드 밸런서(load balancer)에 의해 리포트되는 네트워크 통계치를 수신하는 단계를 더 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  5. 제3항에 있어서,
    상기 모니터링하는 단계는 하이퍼바이저가 전송할 탐지 패킷(probe packet)을 생성 및 삽입하는 단계, 상기 탐지 패킷을 수신하는 단계, 상기 탐지 패킷에 따라 네트워크 통계치를 측정하는 단계, 상기 탐지 패킷이 가상 머신에 전달되지 않도록 상기 탐지 패킷을 제거(stripping)하는 단계를 더 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  6. 제1항에 있어서,
    비용 최소화 함수(cost minimization function)를 동적으로 기초로 하여 네트워크 대역폭 요건을 계산하는 단계 - 상기 비용 최소화 함수에 따라, 대역폭 코스트(bandwidth cost)가 시간에 따라 변함 - 를 더 포함하는
    네트워크 대역폭을 특정하고 할당하기 위한 방법.
  7. 네트워크를 통해 통신하는 가상 머신(VM)을 호스팅하는 복수의 호스트 간에 네트워크 사용을 분산시키는 방법으로서,
    각각의 호스트는 자신 상에서 실행 중인 VM을 관리하는 하이퍼바이저를 갖고,
    상기 방법은
    하나 이상의 컴퓨터에 의해 저장되는 네트워크 정보를 액세스하는 단계 - 상기 네트워크 정보는 VM 상에서 실행 중인 각각의 분산 애플리케이션(distributed application)의 네트워크 요건(network requirement)을 특정하는 정보를 포함하고, 각각의 분산 애플리케이션은 복수의 VM 상에서 실행됨 - , 및
    호스트들 간에 VM을 이주시킴으로써, 또는 하이퍼바이저가 자신이 관리하는 VM에 가용한 네트워크 용량을 증가 또는 감소시킴으로써, 애플리케이션의 네트워크 요건을 만족시키도록 시도하는 단계를 포함하는
    네트워크 사용을 분산시키는 방법.
  8. 제7항에 있어서,
    상기 네트워크는 라우터, 스위치, 및 로드 밸런서를 포함하고, 보장하는 단계는 모든 라우터, 스위치, 또는 로드 밸런서에서의 네트워크 할당량을 증가 또는 감소시키는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
  9. 제8항에 있어서,
    라우터, 스위치, 및 로드 밸런서의 성능 특성의 모델을 구성하는 단계 및 네트워크 할당량의 증가 또는 감소를 위해 상기 모델을 이용하는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
  10. 제7항에 있어서,
    네트워크 정보는 특정 분산 애플리케이션에 대한 애플리케이션 명세(application specification)를 포함하고, 상기 애플리케이션 명세는 분산 애플리케이션의 애플리케이션 요소를 각각 나타내는 2개의 구성요소를 포함하는 네트워크 통신 경로를 특정하며, 상기 애플리케이션 명세는 상기 통신 경로에 대한 네트워크 요건을 더 특정하는
    네트워크 사용을 분산시키는 방법.
  11. 제7항에 있어서,
    상기 분산 애플리케이션은 제 1 구성요소에 대응하는 애플리케이션 인스턴스의 제 1 세트와, 제 2 구성요소에 대응하는 애플리케이션 인스턴스의 제 2 세트를 포함하는
    네트워크 사용을 분산시키는 방법.
  12. 제11항에 있어서,
    상기 제 1 세트 내 애플리케이션 인스턴스 중 하나 이상과 상기 제 2 세트 내 애플리케이션 인스턴스 중 하나 이상 간의 단일 대역폭 요건을 보장하는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
  13. 제7항에 있어서,
    개별 VM의 VM 네트워크 사용 통계치를 저장하는 단계 및 이주될 또는 가용 네트워크 용량이 증가 또는 감소될 하나 이상의 VM을 선택하기 위해 VM 네트워크 사용 통계치를 이용하는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
  14. 제13항에 있어서,
    VM을 중지시킴으로써, 상기 VM의 네트워크 용량을 감소시키는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
  15. 제7항에 있어서,
    네트워크 요건 중 하나에 따라 특정 VM을 식별하는 단계, 특정 VM을 호스팅하는 호스트에 의해 보고된 특정 VM의 네트워크 통계치를 선택하는 단계, 및 네트워크 통계치를 상기 네트워크 요건 중 상기 하나에 비교하는 단계를 더 포함하는
    네트워크 사용을 분산시키는 방법.
KR1020137034651A 2011-06-29 2012-05-30 네트워크 사용 제어 기법 KR101906632B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/171,445 US10013281B2 (en) 2011-06-29 2011-06-29 Controlling network utilization
US13/171,445 2011-06-29
PCT/US2012/039961 WO2013002936A1 (en) 2011-06-29 2012-05-30 Controlling network utilization

Publications (2)

Publication Number Publication Date
KR20140035970A true KR20140035970A (ko) 2014-03-24
KR101906632B1 KR101906632B1 (ko) 2018-10-10

Family

ID=47391801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034651A KR101906632B1 (ko) 2011-06-29 2012-05-30 네트워크 사용 제어 기법

Country Status (7)

Country Link
US (1) US10013281B2 (ko)
EP (1) EP2726984B1 (ko)
JP (1) JP5984926B2 (ko)
KR (1) KR101906632B1 (ko)
CN (1) CN103635882B (ko)
ES (1) ES2765032T3 (ko)
WO (1) WO2013002936A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101665461B1 (ko) * 2015-06-26 2016-10-19 건국대학교 산학협력단 실시간성이 요구되는 어플리케이션이 탑재된 머신의 가상화 장치 및 방법

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5772395B2 (ja) * 2011-08-29 2015-09-02 富士通株式会社 送信レート制御のためのプログラム、制御方法及び情報処理装置
US8914515B2 (en) * 2011-10-28 2014-12-16 International Business Machines Corporation Cloud optimization using workload analysis
US20130227164A1 (en) * 2012-02-23 2013-08-29 Yahoo! Inc. Method and system for distributed layer seven traffic shaping and scheduling
US10031782B2 (en) * 2012-06-26 2018-07-24 Juniper Networks, Inc. Distributed processing of network device tasks
US9256473B1 (en) * 2012-09-26 2016-02-09 Emc Corporation Provision a virtual environment based on topology of virtual nodes, node dependencies and base node configuration information
KR101539496B1 (ko) * 2013-02-18 2015-07-24 단국대학교 산학협력단 가상 머신 모니터링 장치 및 그 방법
US9251115B2 (en) * 2013-03-07 2016-02-02 Citrix Systems, Inc. Dynamic configuration in cloud computing environments
US9843624B1 (en) * 2013-06-13 2017-12-12 Pouya Taaghol Distributed software defined networking
US9307018B2 (en) * 2013-09-11 2016-04-05 International Business Machines Corporation Workload deployment with real-time consideration of global network congestion
US9807014B2 (en) * 2013-09-27 2017-10-31 International Business Machines Corporation Reactive throttling of heterogeneous migration sessions in a virtualized cloud environment
JP6213303B2 (ja) * 2014-02-26 2017-10-18 富士通株式会社 情報処理システム、制御装置及び制御プログラム
US9628363B2 (en) * 2014-05-08 2017-04-18 Accenture Global Services Limited Network usage monitoring and analytics for differentiated data services
US11182185B2 (en) * 2014-06-27 2021-11-23 Vmware, Inc. Network-based signaling to control virtual machine placement
US10067800B2 (en) * 2014-11-06 2018-09-04 Vmware, Inc. Peripheral device sharing across virtual machines running on different host computing systems
EP3021521A1 (en) * 2014-11-11 2016-05-18 Alcatel Lucent A method and system for scaling, telecommunications network and computer program product
EP3035619B1 (en) * 2014-12-15 2019-02-13 Alcatel Lucent A method and system for scaling and a telecommunications network
US9923965B2 (en) 2015-06-05 2018-03-20 International Business Machines Corporation Storage mirroring over wide area network circuits with dynamic on-demand capacity
US9923839B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Configuring resources to exploit elastic network capability
US9923784B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Data transfer using flexible dynamic elastic network service provider relationships
US10581680B2 (en) 2015-11-25 2020-03-03 International Business Machines Corporation Dynamic configuration of network features
US10177993B2 (en) * 2015-11-25 2019-01-08 International Business Machines Corporation Event-based data transfer scheduling using elastic network optimization criteria
US10057327B2 (en) 2015-11-25 2018-08-21 International Business Machines Corporation Controlled transfer of data over an elastic network
US10216441B2 (en) 2015-11-25 2019-02-26 International Business Machines Corporation Dynamic quality of service for storage I/O port allocation
US10114702B2 (en) * 2016-01-06 2018-10-30 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
US10257043B2 (en) * 2016-01-11 2019-04-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Balancing utilization of infrastructure in a networked computing environment
US10812588B2 (en) 2016-01-13 2020-10-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Storage performance based on data placement
US10623330B2 (en) 2016-09-23 2020-04-14 Google Llc Distributed bandwidth allocation and throttling
US10942758B2 (en) 2017-04-17 2021-03-09 Hewlett Packard Enterprise Development Lp Migrating virtual host bus adaptors between sets of host bus adaptors of a target device in order to reallocate bandwidth to enable virtual machine migration
US10795583B2 (en) 2017-07-19 2020-10-06 Samsung Electronics Co., Ltd. Automatic data placement manager in multi-tier all-flash datacenter
US10496541B2 (en) 2017-11-29 2019-12-03 Samsung Electronics Co., Ltd. Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
JP7259203B2 (ja) * 2018-03-16 2023-04-18 株式会社リコー 情報処理装置、情報処理システムおよび方法
JP7081514B2 (ja) * 2019-01-30 2022-06-07 日本電信電話株式会社 オートスケール型性能保証システム及びオートスケール型性能保証方法
JP7400587B2 (ja) * 2020-03-30 2023-12-19 横河電機株式会社 通信処理装置、プログラム、及び通信処理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002016599A (ja) * 1999-12-02 2002-01-18 Hitachi Ltd ネットワーク計測制御システムとネットワーク計測制御方法
US20100050172A1 (en) * 2008-08-22 2010-02-25 James Michael Ferris Methods and systems for optimizing resource usage for cloud-based networks
JP2011503713A (ja) * 2007-11-06 2011-01-27 クレディ スイス セキュリティーズ (ユーエスエイ) エルエルシー サービスレベル契約に従ったリソース割り振りの予測及び管理
KR20110030447A (ko) * 2008-06-13 2011-03-23 마이크로소프트 코포레이션 가상 머신 및 애플리케이션 수명들의 동기화
US20110138384A1 (en) * 2009-12-03 2011-06-09 International Business Machines Corporation Dynamically provisioning virtual machines

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896531A (en) 1993-02-26 1999-04-20 International Business Machines Corporation Method and system for managing environments with a data processing system
US6732139B1 (en) 1999-08-16 2004-05-04 International Business Machines Corporation Method to distribute programs using remote java objects
US6674717B1 (en) * 2000-03-30 2004-01-06 Network Physics, Inc. Method for reducing packet loss and increasing internet flow by feedback control
US20020032754A1 (en) * 2000-04-05 2002-03-14 Gary Logston Method and apparatus for profiling in a distributed application environment
WO2002003220A2 (en) * 2000-07-05 2002-01-10 Ernst & Young Llp Method and apparatus for providing computer services
US6823382B2 (en) * 2001-08-20 2004-11-23 Altaworks Corporation Monitoring and control engine for multi-tiered service-level management of distributed web-application servers
US6976134B1 (en) * 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
US7668966B2 (en) * 2001-11-02 2010-02-23 Internap Network Services Corporation Data network controller
US20030154236A1 (en) * 2002-01-22 2003-08-14 Shaul Dar Database Switch enabling a database area network
US6968535B2 (en) * 2002-03-21 2005-11-22 Sun Microsystems, Inc. Service mapping method of enterprise application modeling and development for multi-tier service environments
US7167915B2 (en) 2002-10-18 2007-01-23 International Business Machines Corporation Monitoring storage resources used by computer applications distributed across a network
US20040181589A1 (en) * 2003-03-14 2004-09-16 Sun Microsystems,Inc. Storage virtual channels and method for using the same
JP4457581B2 (ja) * 2003-05-28 2010-04-28 日本電気株式会社 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム
US20040267897A1 (en) * 2003-06-24 2004-12-30 Sychron Inc. Distributed System Providing Scalable Methodology for Real-Time Control of Server Pools and Data Centers
US7934020B1 (en) * 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US7496661B1 (en) 2004-03-29 2009-02-24 Packeteer, Inc. Adaptive, application-aware selection of differentiated network services
US8489720B1 (en) * 2004-03-31 2013-07-16 Blue Coat Systems, Inc. Cost-aware, bandwidth management systems adaptive to network conditions
US7957266B2 (en) * 2004-05-28 2011-06-07 Alcatel-Lucent Usa Inc. Efficient and robust routing independent of traffic pattern variability
US7702779B1 (en) 2004-06-30 2010-04-20 Symantec Operating Corporation System and method for metering of application services in utility computing environments
US7554983B1 (en) * 2004-12-20 2009-06-30 Packeteer, Inc. Probing hosts against network application profiles to facilitate classification of network traffic
WO2006078953A2 (en) 2005-01-21 2006-07-27 Internap Network Services Corporation System and method for application acceleration on a distributed computer network
US7644162B1 (en) * 2005-06-07 2010-01-05 Hewlett-Packard Development Company, L.P. Resource entitlement control system
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US20070118653A1 (en) 2005-11-22 2007-05-24 Sabre Inc. System, method, and computer program product for throttling client traffic
US8161475B2 (en) 2006-09-29 2012-04-17 Microsoft Corporation Automatic load and balancing for virtual machines to meet resource requirements
JP4871174B2 (ja) * 2007-03-09 2012-02-08 株式会社日立製作所 仮想計算機システム
US7970903B2 (en) * 2007-08-20 2011-06-28 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers
US9086901B2 (en) * 2008-03-07 2015-07-21 Sap Se Migration of applications from physical machines to virtual machines
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8102781B2 (en) * 2008-07-31 2012-01-24 Cisco Technology, Inc. Dynamic distribution of virtual machines in a communication network
US20100036903A1 (en) * 2008-08-11 2010-02-11 Microsoft Corporation Distributed load balancer
US9143554B2 (en) * 2008-10-13 2015-09-22 Hewlett-Packard Development Company, L.P. Control of a computing system having adjustable inputs
CN101419558A (zh) 2008-11-13 2009-04-29 湖南大学 Cuda图形子系统虚拟化方法
US8214829B2 (en) * 2009-01-15 2012-07-03 International Business Machines Corporation Techniques for placing applications in heterogeneous virtualized systems while minimizing power and migration cost
US20100281478A1 (en) * 2009-05-01 2010-11-04 Microsoft Corporation Multiphase virtual machine host capacity planning
US8751627B2 (en) * 2009-05-05 2014-06-10 Accenture Global Services Limited Method and system for application migration in a cloud
US8335943B2 (en) * 2009-06-22 2012-12-18 Citrix Systems, Inc. Systems and methods for stateful session failover between multi-core appliances
US8914511B1 (en) * 2009-06-26 2014-12-16 VMTurbo, Inc. Managing resources in virtualization systems
US8285681B2 (en) * 2009-06-30 2012-10-09 Commvault Systems, Inc. Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites
CN101626598B (zh) 2009-07-23 2013-08-07 华为技术有限公司 传输资源管理的方法和系统
US8359374B2 (en) * 2009-09-09 2013-01-22 Vmware, Inc. Fast determination of compatibility of virtual machines and hosts
US8253588B2 (en) * 2009-11-02 2012-08-28 Oracle America, Inc. Facilitating power supply unit management using telemetry data analysis
US8537860B2 (en) * 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8250213B2 (en) * 2009-11-16 2012-08-21 At&T Intellectual Property I, L.P. Methods and apparatus to allocate resources associated with a distributive computing network
US9036504B1 (en) * 2009-12-07 2015-05-19 Amazon Technologies, Inc. Using virtual networking devices and routing information to associate network addresses with computing nodes
US9098335B2 (en) * 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
US8224971B1 (en) * 2009-12-28 2012-07-17 Amazon Technologies, Inc. Using virtual networking devices and routing information to initiate external actions
US8719804B2 (en) * 2010-05-05 2014-05-06 Microsoft Corporation Managing runtime execution of applications on cloud computing systems
US8606897B2 (en) * 2010-05-28 2013-12-10 Red Hat, Inc. Systems and methods for exporting usage history data as input to a management platform of a target cloud-based network
US8417812B1 (en) * 2010-07-12 2013-04-09 Vmware, Inc. Methods and systems for detecting anomalies during IO accesses
US20120317249A1 (en) * 2011-06-13 2012-12-13 Salsburg Michael A Methods and systems for extreme capacity management
US8694400B1 (en) * 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
US8418185B2 (en) * 2010-10-19 2013-04-09 International Business Machines Corporation Memory maximization in a high input/output virtual machine environment
US8824286B2 (en) * 2010-10-29 2014-09-02 Futurewei Technologies, Inc. Network aware global load balancing system and method
US8924539B2 (en) * 2010-11-24 2014-12-30 Red Hat, Inc. Combinatorial optimization of multiple resources across a set of cloud-based networks
US8745734B1 (en) * 2010-12-29 2014-06-03 Amazon Technologies, Inc. Managing virtual computing testing
US9467507B2 (en) * 2011-01-03 2016-10-11 Verizon Patent And Licensing Inc. Wireless network cloud computing resource management
CN102082830B (zh) 2011-01-18 2013-03-06 浙江大学 面向不稳定网络的基于品质感知的分布式文件存储方法
US9055003B2 (en) * 2011-03-03 2015-06-09 International Business Machines Corporation Regulating network bandwidth in a virtualized environment
US8949931B2 (en) * 2012-05-02 2015-02-03 Cisco Technology, Inc. System and method for monitoring application security in a network environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002016599A (ja) * 1999-12-02 2002-01-18 Hitachi Ltd ネットワーク計測制御システムとネットワーク計測制御方法
JP2011503713A (ja) * 2007-11-06 2011-01-27 クレディ スイス セキュリティーズ (ユーエスエイ) エルエルシー サービスレベル契約に従ったリソース割り振りの予測及び管理
KR20110030447A (ko) * 2008-06-13 2011-03-23 마이크로소프트 코포레이션 가상 머신 및 애플리케이션 수명들의 동기화
US20100050172A1 (en) * 2008-08-22 2010-02-25 James Michael Ferris Methods and systems for optimizing resource usage for cloud-based networks
US20110138384A1 (en) * 2009-12-03 2011-06-09 International Business Machines Corporation Dynamically provisioning virtual machines

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101665461B1 (ko) * 2015-06-26 2016-10-19 건국대학교 산학협력단 실시간성이 요구되는 어플리케이션이 탑재된 머신의 가상화 장치 및 방법

Also Published As

Publication number Publication date
EP2726984A1 (en) 2014-05-07
US10013281B2 (en) 2018-07-03
EP2726984A4 (en) 2015-03-11
KR101906632B1 (ko) 2018-10-10
JP2014526083A (ja) 2014-10-02
CN103635882A (zh) 2014-03-12
JP5984926B2 (ja) 2016-09-06
US20130007254A1 (en) 2013-01-03
CN103635882B (zh) 2017-07-18
WO2013002936A1 (en) 2013-01-03
ES2765032T3 (es) 2020-06-05
EP2726984B1 (en) 2019-10-30

Similar Documents

Publication Publication Date Title
KR101906632B1 (ko) 네트워크 사용 제어 기법
US11870702B1 (en) Dynamic resource allocation of cloud instances and enterprise application migration to cloud architecture
US10530678B2 (en) Methods and apparatus to optimize packet flow among virtualized servers
US10841235B2 (en) Methods and apparatus to optimize memory allocation in response to a storage rebalancing event
US9934073B2 (en) Extension of resource constraints for service-defined containers
US9183016B2 (en) Adaptive task scheduling of Hadoop in a virtualized environment
He et al. Performance evaluation of live virtual machine migration in SDN-enabled cloud data centers
US11714668B2 (en) Supporting quality-of-service for virtual machines based on operational events
US11513721B2 (en) Method and system for performance control in a cloud computing environment
US11599821B2 (en) Attached accelerator based inference service
EP2425339A1 (en) Methods and apparatus to get feedback information in virtual environment for server load balancing
US10616319B2 (en) Methods and apparatus to allocate temporary protocol ports to control network load balancing
US11652708B2 (en) Policies for analytics frameworks in telecommunication clouds
US11422863B2 (en) Attached accelerator scaling
Bartolomeo et al. Oakestra: A lightweight hierarchical orchestration framework for edge computing
US11960935B2 (en) Fault-tolerant accelerator based inference service
Bhaskar et al. Dynamic allocation method for efficient load balancing in virtual machines for cloud computing environment
US11765098B1 (en) Customized cross-premise resource selection for containerized applications
US11403130B2 (en) Method and apparatus for workload volatility management in cloud computing
Serra et al. Enhancing the Availability of Web Services in the IoT-to-Edge-to-Cloud Compute Continuum: A WordPress Case Study
Cotroneo et al. DRACO: Distributed Resource-aware Admission Control for Large-Scale, Multi-Tier Systems
Ao Framework and Platform Support for General Purpose Serverless Computing
Wen Improving Data Access Performance of Applications in IT Infrastructure
KADOURA QUEUEING THEORY BASED KUBERNETES AUTOSCALER
Buchner From the Cloud to the Edge: An Infrastructure for Cloud & Edge Computing/submitted by Patrick Buchner, BSc

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant