KR101716715B1 - 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 - Google Patents

가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 Download PDF

Info

Publication number
KR101716715B1
KR101716715B1 KR1020160180464A KR20160180464A KR101716715B1 KR 101716715 B1 KR101716715 B1 KR 101716715B1 KR 1020160180464 A KR1020160180464 A KR 1020160180464A KR 20160180464 A KR20160180464 A KR 20160180464A KR 101716715 B1 KR101716715 B1 KR 101716715B1
Authority
KR
South Korea
Prior art keywords
virtual machine
device driver
input
emulator
virtual
Prior art date
Application number
KR1020160180464A
Other languages
English (en)
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 주식회사 티맥스클라우드
Priority to KR1020160180464A priority Critical patent/KR101716715B1/ko
Application granted granted Critical
Publication of KR101716715B1 publication Critical patent/KR101716715B1/ko
Priority to US15/853,298 priority patent/US10754679B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3045Virtual queuing
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2596Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
    • 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/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45583Memory management, e.g. access or allocation

Abstract

본 발명에 의한 가상 머신 환경에서 네트워크 입출력 장치의 가상화 방법은, 복수의 가상 머신들 중 적어도 하나의 가상 머신으로부터의 입출력 요청에 응답하여 가상 머신 모니터가 가상 머신의 게스트 물리 주소(Guest Physical Address)를 호스트 물리 주소(Host Physical Address)로 변환하는 단계, 가상 머신 에뮬레이터가 입출력 요청을 전달한 가상 머신과 연계된 확장 장치 드라이버로 변환된 주소 정보를 포함하는 명령 요청을 전송하는 단계, 확장 장치 드라이버가 변환된 주소를 송신 큐(Queue)에 삽입하는 단계, 및 송신 큐에 따라 물리 입출력 장치를 이용하여 입출력 요청에 대한 직접 메모리 접근을 수행하는 단계를 포함한다.

Description

가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 {Method and apparatus for handling network I/O apparatus virtualization}
본 발명은 가상 머신 환경에서의 네트워크 입출력 장치의 가상화 방법 및 장치에 관한 것이다.
가상화 기술은 다양한 물리적인 자원을 사용자에게 추상화하여 보여주는 기술로, 클라우드 컴퓨팅 환경을 구성할 때 가장 핵심이 되는 기술이다. 가상화 기술은 중앙처리장치(Central Processor Unit), 메모리, 입출력 장치 등 물리 서버에 존재하는 하드웨어 장치에 대한 가상화 기술인 시스템 가상화 기술, 커널을 공유하면서 컨테이너를 기반으로 공유 자원들을 격리시키거나 분배하는 기술인 운영체제 가상화 기술 등 다양한 가상화 기술이 존재한다.
다양한 가상화 기술 중에서 시스템 가상화 기술은 클라우드의 인프라에 대한 유연성을 제공하며, 물리 서버의 성능에 가장 중요한 영향을 미치는 기술이다. 시스템 가상화 기술에서는 '하이퍼바이저(Hypervisor)'또는 '가상 머신 모니터(Virtual machine monitor)'라는 시스템 소프트웨어를 통하여 중앙처리장치, 메모리, 입출력 장치 등에 대한 가상화를 수행한다. 시스템 가상화 기술에 따르면, 가상화된 자원들을 가상 머신이라는 논리적인 공간에 할당하여 하나의 물리적인 장치에 다수의 논리 장치를 운영할 수 있는 환경을 제공할 수 있다.
시스템 가상화 기술은 게스트 운영체제의 명령어 집합의 수정을 통하여 성능을 향상시키는 반 가상화(Para-Virtualization) 기술과 명령어 집합을 수정하지 않고 모든 명령어에 대하여 에뮬레이션을 수행하는 전 가상화(Full Virtualization) 기술로 분류할 수 있다. 최근에는 인텔의 VT(Virtualization Technology), AMD의 SVM(Secure Virtual Machine) 기술과 같은 하드웨어의 도움을 받아 중앙처리장치와 메모리의 가상화로 인하여 발생하는 비용을 최소화하는 기술이 널리 사용되고 있다.
그러나 종래의 가상화 기술을 사용하는 경우에 여러 한계가 있어 이를 개선하기 위한 새로운 가상화 방법이 필요하다.
한국등록특허 제10-1017451호 (2011. 2. 17. 등록)
본 발명은 다수의 가상 머신들로부터 제공되는 패킷을 제어 채널과 데이터 채널로 분리하여 처리하는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공한다.
본 발명은 가상 머신 단위로 분리된 리매핑 컨텍스트 엔트리를 사용하여 메모리 매핑을 수행하는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공한다.
본 발명은 복수의 가상 머신들의 장치 드라이버에 각각 매칭된 확장 장치 드라이버를 호스트 머신에 구비하고, 확장 장치 드라이버를 가상 머신 내에 노출시키는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공한다.
본 발명의 일 실시 예에 의한 가상 머신 환경에서 네트워크 입출력 장치의 가상화 방법은, 복수의 가상 머신들 중 적어도 하나의 가상 머신으로부터의 입출력 요청에 응답하여 가상 머신 모니터가 상기 가상 머신의 게스트 물리 주소(Guest Physical Address)를 호스트 물리 주소(Host Physical Address)로 변환하는 단계, 가상 머신 에뮬레이터가 상기 입출력 요청을 전달한 가상 머신과 연계된 확장 장치 드라이버로 상기 변환된 주소 정보를 포함하는 명령 요청을 전송하는 단계, 상기 확장 장치 드라이버가 상기 변환된 주소를 송신 큐(Queue)에 삽입하는 단계, 및 상기 송신 큐에 따라 물리 입출력 장치를 이용하여 상기 입출력 요청에 대한 직접 메모리 접근을 수행하는 단계를 포함한다.
일 실시 예에 있어서, 상기 주소를 변환하는 단계는, 상기 가상 머신 에뮬레이터가 상기 입출력 요청을 수신하여 상기 가상 머신 모니터로 주소 변환을 요청하는 단계를 포함할 수 있다. 예를 들어, 상기 네트워크 입출력 장치의 가상화 방법은 커널 인터페이스를 이용해 상기 가상 머신 에뮬레이터 내의 장치 모델과 상기 확장 장치 드라이버 사이의 제어 채널을 형성하는 단계를 더 포함할 수 있다.
일 실시 예에 있어서, 상기 명령 요청을 전송하는 단계는, 상기 가상 머신의 장치 모델과 연계된 상기 확장 장치 드라이버와의 제어 채널을 통하여 상기 명령 요청을 전송하는 단계를 포함할 수 있다.
일 실시 예에 있어서, 상기 확장 장치 드라이버는 상기 가상 머신 내에 노출될 수 있다.
본 발명의 일 실시 예에 따른 가상 머신 환경에서 네트워크 입출력 장치의 가상화 방법은, 복수의 가상 머신들 중 적어도 하나의 가상 머신으로부터의 입출력 요청 인터럽트를 핸들링하여 가상 머신 에뮬레이터로 송신 명령을 전달하는 단계, 상기 가상 머신 에뮬레이터가 상기 입출력 요청을 전달한 가상 머신의 정보를 삽입하여, 상기 가상 머신과 연계된 확장 장치 드라이버로 명령 요청을 전송하는 단계, 상기 확장 장치 드라이버가 상기 입출력 요청의 주소를 송신 큐(Queue)에 삽입하는 단계, 및 상기 인터럽트를 발생한 가상 머신의 식별자에 기초하여, 직접 메모리 접근 매핑 하드웨어가 상기 송신 큐에 포함된 주소의 게스트 물리 주소를 호스트 물리 주소로 변환하는 단계를 포함한다.
일 실시 예에 있어서, 상기 네트워크 입출력 장치의 가상화 방법은 상기 복수의 가상 머신 별로 분할한 컨텍스트 엔트리를 포함하는 리매핑 컨텍스트 엔트리를 생성하는 단계를 더 포함할 수 있다.
일 실시 예에 있어서, 상기 직접 메모리 접근 매핑 하드웨어는 상기 송신 큐에 포함된 상기 가상 머신 식별자에 기초하여 상기 리매핑 컨텍스트 엔트리로부터 도메인을 매핑함에 따라 상기 주소 변환을 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 가상 머신 환경에서의 네트워크 입출력 장치의 가상화 방법은 커널 인터페이스를 이용해 상기 가상 머신 에뮬레이터 내의 장치 모델과 상기 확장 장치 드라이버 사이의 제어 채널을 형성하는 단계를 더 포함할 수 있다.
일 실시 예에 있어서, 상기 명령 요청을 전송하는 단계는, 상기 가상 머신의 장치 모델과 연계된 상기 확장 장치 드라이버와의 제어 채널을 통하여 상기 명령 요청을 전송하는 단계를 포함할 수 있다.
일 실시 예에 있어서, 상기 가상 머신 에뮬레이터는 상기 입출력 요청에 대한 에뮬레이션을 수행하지 않을 수 있다.
본 발명의 일 실시 예에 따른 네트워크 입출력 장치의 가상화 방법은, 복수의 가상 머신들에 매핑되는 확장 장치 드라이버를 호스트 머신 내에 생성하는 단계, 상기 가상 머신에, 상기 확장 장치 드라이버의 접근 설정을 수행하여, 상기 매핑된 확장 장치 드라이버를 노출시키는 단계, 상기 노출된 확장 장치 드라이버에 대하여 상기 가상 머신이 생성한 입출력 요청에 포함된 게스트 물리 주소(Guest Physical Address)를, 호스트 물리 주소(Host Physical Address)로 변환하여 송신 큐에 삽입하는 단계, 및 상기 노출된 확장 장치 드라이버를 통하여 상기 송신 큐에 기초한 직접 메모리 접근을 수행하는 단계를 포함한다.
일 실시 예에 있어서, 상기 송신 큐에 삽입하는 단계는, 상기 입출력 요청을 수신한 가상 머신 에뮬레이터의 요청에 응답하여, 가상 머신 모니터가 상기 게스트 물리 주소를 상기 호스트 물리 주소로 변환하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 네트워크 입출력 장치의 가상화 방법은, 상기 가상 머신 에뮬레이터의 장치 모델과 상기 노출된 확장 장치 드라이버 사이의 제어 채널을 설정하는 단계를 더 포함할 수 있다.
본 발명은, 본 발명의 일 실시예에 의한 방법을 컴퓨터에서 실행시키기 위하여 기록매체에 저장된 프로그램을 포함한다.
본 발명은, 본 발명의 일 실시예에 의한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함한다.
본 발명에 의하면, 가상 머신 별로 컨텍스트 엔트리를 할당함에 따라 하나의 물리 입출력 장치를 활용하여 복수의 가상 머신들에 대해 유연하게 주소 변환을 수행할 수 있는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공할 수 있다.
본 발명에 의하면, 가상 머신 별로 호스트 머신 내에 확장 장치 드라이버를 구비하고 확장 장치 드라이버를 가상 머신 내에 노출시켜 가상 머신 내의 장치 드라이버를 본래의(native) 장치 드라이버처럼 사용할 수 있는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공할 수 있다.
본 발명에 의하면 가상 머신의 입출력 동작을 수행하는 과정에서 데이터를 호스트 머신에 복사(copy)하지 않고, 곧바로 외부와 입출력함에 따라 데이터 복사의 부담을 줄여 성능을 향상시킬 수 있는 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치를 제공할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이고, 도 2는 도 1의 컴퓨팅 플랫폼에서 수행되는 동작을 설명하기 위한 시퀀스 도면이다.
도 3은 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이다.
도 4는 본 발명의 일 실시 예에 따른 직접 메모리 접근 매핑 하드웨어의 주소 변환을 설명하기 위한 도면이다.
도 5 및 도 6은 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼의 송신 과정 및 수신 과정을 설명하기 위한 시퀀스 도면들이다.
도 7은 본 발명의 다른 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이다.
이하에서 본 발명의 기술적 사상을 명확하게 하기 위하여 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하도록 한다. 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성요소에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략할 것이다. 도면들 중 실질적으로 동일한 기능구성을 갖는 구성요소들에 대하여는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호들 및 부호들을 부여하였다. 설명의 편의를 위하여 필요한 경우에는 장치와 방법을 함께 서술하도록 한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이고, 도 2는 도 1의 컴퓨팅 플랫폼에서 수행되는 동작을 설명하기 위한 시퀀스 도면이다. 이하에서는 도 1 및 도 2를 참조하여 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼의 구성 및 동작을 함께 설명하도록 한다.
본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100a)은 가상 머신 환경에서 구현된 복수의 가상 머신들(110_1, 110_2, ..., 110_n; 이하 "110")과 호스트 머신(120), 그리고 물리 입출력 장치(130)를 포함할 수 있다. 복수의 가상 머신들(110)은 호스트 머신(120)을 통하여 다수의 장치들(도시되지 않음)과 입출력 동작을 수행하며, 이러한 입출력은 하나의 물리 입출력 장치(130)를 통해 이루어진다. 본 명세서에 있어서 '컴퓨팅 플랫폼'은 가상 머신 환경에서 네트워크 입출력 장치를 구현하기 위한 가상화 방법을 수행하며, 가상화 장치로 일컬어질 수도 있다.
복수의 가상 머신들(110)은 각각 입출력 등의 동작을 수행하는 어플리케이션(111_1, 111_2, ..., 111_n; 이하 "111")과 게스트 운영체제 커널 내에 존재하는 네트워크 스택(113_1, 113_2, ..., 113_n; 이하 "113"), 및 네트워크 입출력을 수행하는 장치 드라이버(115_1, 115_2, ..., 115_n; 이하 "115")를 포함할 수 있다.
각 가상 머신(110)은 게스트 운영체제에 의해 동작하며, 게스트 운영체제 커널에 존재하는 네트워크 스택(113)을 통과하여 패킷이 생성된다. 생성된 패킷은 장치 드라이버(115)를 통하여 가상으로 생성된 장치에 입력을 시도한다. 예를 들어, 가상 머신(110)은 트랩 형태로 입출력 요청 신호를 생성하여 호스트 머신(120)으로 전달할 수 있다(단계 210).
호스트 머신(120)은 가상 머신들(110_1, 110_2, ..., 110_n)을 생성 및/또는 관리하는 가상 머신 모니터(121), 가상 머신의 접근을 제어하는 가상 머신 에뮬레이터(123), 및 각 가상 머신들(110_1, 110_2, ..., 110_n) 각각에 대응되는 확장 장치 드라이버들(125_1, 125_2, ..., 125_n)을 포함한다.
가상 머신 모니터(121)는 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼으로 하이퍼바이저(hypervisor)라고도 일컫는다. 가상 머신 모니터(121)는 복수의 가상 머신들(110)에 할당된 스케줄링이나 처리 방법을 지원한다. 예를 들어, 가상 머신 모니터(121)는 Xen, Citrix의 XenServer, VMware의 ESX Server, L4 마이크로 커널, TRANGO, IBM의 POWER 하이퍼바이저(PR/SM), 마이크로소프트의 하이퍼-V, 패러럴 서버, Oracle(SUN)의 로지컬 도메인 하이퍼바이저, VMware Server, VMware Workstation, VMware Fusion, QEMU, 마이크로소프트의 버추얼 PC와 버추얼 서버, Oracle(SUN)의 버추얼박스, SWsoft의 Parallels Workstation과 Parallels Desktop을 포함할 수 있다.
본 발명의 일 실시 예에 따른 가상 머신 모니터(121)가 가상 머신(110)으로부터 입출력 요청을 포함하는 인터럽트를 수신하면(예를 들어, 가상 모드의 종료를 나타내는 VMexit), 내부의 트랩 핸들러에서 가상 머신에 할당된 가상 중앙처리장치(CPU)에 대한 스케줄링 정책을 조정하고(단계 220), 가상 머신 에뮬레이터(123)로 송신 명령을 전달한다(단계 230).
가상 머신 에뮬레이터(123)는 장치 모델을 구비한다. 본 발명의 일 실시 예에 따른 가상 머신 에뮬레이터(123)는 가상 머신 모니터(121)로부터 수신한 송신 명령에 포함된 입출력에 대한 에뮬레이션을 수행하지 않고, 가상 머신 모니터(121)로 송신 명령에 포함된 게스트 물리 주소(Guest Physical Addresses, GPA)에 대한 주소 변환을 요청한다(단계 240).
본 발명의 일 실시 예에 따른 가상 머신 에뮬레이터(123)는 패킷 정보를 복사하여 처리하지 않으므로 패킷 정보의 복사에 따른 오버헤드(overhead)를 줄일 수 있다. 이에 따라 컴퓨팅 플랫폼(100a)에서 호스트 머신(120)이 입출력을 위하여 패킷 정보를 복사하는 과정에서 발생할 수 있는 입출력 성능 저하를 줄일 수 있다. 또한 본 발명의 일 실시 예에 따른 가상 머신 에뮬레이터(123)는 입출력 요청에 대한 에뮬레이션을 수행하지 않고 가상 머신 모니터(121)로의 주소 변환만을 요청하고 가상 머신과 연계된 확장 장치 드라이버(125)와의 통신만을 수행하므로 가상 머신 에뮬레이터(123) 자체의 처리 부담도 줄어들 수 있다.
가상 머신 에뮬레이터(123)로부터의 주소 변환 요청에 응답하여, 가상 머신 모니터(121)는 게스트 물리 주소를 호스트 물리 주소(Host Physical Address, HPA)로 변환하고(단계 250) 변환된 주소를 다시 가상 머신 에뮬레이터(123)로 전달한다(단계 255).
가상 머신 모니터(121)는 각 가상 머신들(110_1, 110_2, ..., 110_n)에 따라 상이한 방식으로 주소 변환을 수행할 수 있으며, 이러한 가상 머신들에 대한 메모리 매핑 정보를 관리할 수 있다. 예를 들어, 가상 머신 모니터(121)는 가상 머신들(110)에 따라서 상이한 메모리 매핑을 수행할 수 있다.
가상 머신 에뮬레이터(123)는 변환된 주소를 포함하는 명령 요청을 확장 장치 드라이버(125)로 전송한다. 본 발명의 일 실시 예에 있어서, 호스트 머신(120)은 복수의 가상 머신들(110_1, 110_2, ..., 110_n) 각각에 매핑된 확장 장치 드라이버들(125_1, 125_2, ..., 125_n)을 구비하고 있으며, 가상 머신 에뮬레이터(123)는 입출력 요청을 보낸 가상 머신(110)과 연계된 확장 장치 드라이버(125)로 변환된 주소 정보를 전달한다(단계 260).
본 발명의 일 실시 예에 있어서, 가상 머신 에뮬레이터(123)는 가상 머신(110_1, 110_2, ..., 110_n) 내의 각 장치 드라이버(115_1, 115_2, ..., 115_n)와 확장 장치 드라이버(125_1, 125_2, ..., 125_n)를 매핑하기 위해 PCI 및 메모리 맵 입출력(Memory Mapped Input Output; MMIO) 접근 설정을 수행하여 가상 머신(110)에 확장 장치 드라이버(125)가 노출될 수 있도록 설정할 수 있다.
가상 머신(110_1, 110_2, ..., 110_n)에 호스트 머신(120)의 확장 장치 드라이버(125_1, 125_2, ..., 125_n)가 노출됨에 따라 가상 머신(110)과 호스트 머신(120)에서 관리하는 장치 드라이버가 동일하게 되고, 결과적으로 가상 머신(110)은 가상 머신 내에 노출된 확장 장치 드라이버를 본래 가상 머신에 내장된 장치 드라이버처럼 사용할 수 있게 된다.
실시 예에 따라, IOCTL과 같은 커널 인터페이스를 이용하여 가상 머신 에뮬레이터(123)의 장치 모델과 확장 장치 드라이버(125) 사이의 추가적인 제어 채널을 설정하고, 가상 머신 에뮬레이터(123)는 설정된 제어 채널을 통하여 변환된 주소 정보를 확장 장치 드라이버(125)로 전달할 수 있다.
가상 머신(110)에 확장 장치 드라이버가 노출되어 있기 때문에, 가상 머신이 입출력 요청을 발생할 때부터 가상 머신과 연계된 확장 장치 드라이버의 정보가 포함되어 가상 머신 에뮬레이터(123)에 제공될 수 있다. 다른 실시 예에 있어서, 가상 머신 에뮬레이터(123)는 가상 머신으로부터 제공된 입출력 요청에 포함된 가상 머신의 정보에 기초하여 해당 가상 머신과 연계된 확장 장치 드라이버(125)를 식별하여 제어 채널을 통해 변환된 주소 정보를 전달할 수 있다.
확장 장치 드라이버(125)는 변환된 주소 정보를 송신 큐에 삽입하여 송신을 완료한다(단계 270). 이렇게 송신 큐를 전송함에 따라 가상 머신(110) 내의 장치 드라이버(115)로부터 생성된 입출력 요청에 있어서 제어 채널을 통해서는 주소와 명령만 처리되고, 데이터 채널을 통해서는 변환된 명령 및 주소를 통해 데이터가 곧바로 직접 메모리 접근을 통해 물리 입출력 장치(130)로 전달된다.
본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100a)에서는 제어 채널과 데이터 채널이 분리되어 호스트 머신(120)의 가상 머신 모니터(121) 및 가상 머신 에뮬레이터(123)를 따라 제어 채널이 형성되고, 데이터 채널은 가상 머신(110)의 장치 드라이버(115)로부터 확장 장치 드라이버(125)로 형성된다. 이에 따라 입출력 요청에 수반되는 데이터가 호스트 머신(120) 내에 복사되는 동작이 불필요하다. 즉 제어 채널과 데이터 채널의 분리는 장치 드라이버(115)에서 생성된 패킷을 분리하여 처리됨으로써 달성될 수 있다.
본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100a)은 가상 머신 별로 확장 장치 드라이버를 구비함에 따라 각 가상 머신들이 본래의(native) 장치 드라이버를 통해 입출력을 수행하는 것과 같은 효과를 얻을 수 있으며, 또한 하나의 물리 입출력 장치(130)를 활용하여 다중의 가상 머신들을 접근할 수 있도록 하되 SR-IOV(Single Root Input/Output Virtualization)과 같이 별도의 하드웨어를 요구하지 않기 때문에 저렴한 비용으로 구현이 가능하다.
그런데 컴퓨팅 플랫폼(100a)에 포함된 가상 머신 모니터(121)에서 입출력 요청에 대한 주소 변환을 수행하므로 입출력 요청이 발생할 때마다 중앙처리 장치의 낭비를 초래할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이다.
도 3의 컴퓨팅 플랫폼(100b)은, 도 1의 컴퓨팅 플랫폼(100a)과 비교하였을 경우, 직접 메모리 접근 매핑 하드웨어(140)를 더 포함한다. 동일한 참조부호는 동일한 구성요소를 나타내며 실질적으로 동일한 동작을 수행하기 때문에 도 1의 컴퓨팅 플랫폼(100a)과 중복되는 설명은 생략하도록 한다.
도 3을 참조하면, 컴퓨팅 플랫폼(100b)은 직접 메모리 접근 매핑 하드웨어(140)를 구비하여 가상 머신(110)으로부터 전달된 입출력 요청에 포함된 게스트 물리 어드레스를 호스트 물리 어드레스로 변환한다. 도 1 및 도 2를 참조하여 설명한 컴퓨팅 플랫폼(100a)에서 가상 머신 모니터(121)가 주소 변환을 수행하는 것과는 달리, 도 3의 컴퓨팅 플랫폼(100b)은 복수의 가상 머신들(110)이 모두 하나의 직접 메모리 접근 매핑 하드웨어(140)를 공유하면서 직접 메모리 접근 매핑 하드웨어(140)가 주소 변환을 수행할 수 있어 입출력 요청이 있을 때마다 메모리 매핑을 수행하지 않아도 된다.
구체적으로, 직접 메모리 접근 매핑 하드웨어(140)는 가상 머신 단위로 분할된 리매핑 컨텍스트 엔트리를 구비한다.
도 4는 본 발명의 일 실시 예에 따른 직접 메모리 접근 매핑 하드웨어의 주소 변환을 설명하기 위한 도면이다.
장치에 대한 도메인 매핑은, 루트 엔트리 테이블로부터 컨텍스트 테이블 포인터를 도출하고 컨텍스트 엔트리 테이블의 장치 및 기능 정보를 토대로 도메인을 매핑하는 2-레벨(level)로 이루어진다. 본 발명의 일 실시 예에 따른 직접 메모리 접근 매핑 하드웨어(140)는, 컨텍스트 엔트리 테이블 내의 일부 공간을 가상 머신 단위로 논리적으로 분할하여 분할된 공간에 가상 머신 주소를 매핑한 리매핑 컨텍스트 엔트리를 구비한다.
리매핑 컨텍스트 엔트리를 구비함에 따라, PCI 정보를 기반으로 어드레스를 매핑하지 않고 가상 머신 식별자를 통해 어드레스 리매핑을 수행할 수 있다. 따라서 특정한 가상 머신이 하나의 물리 입출력 장치를 독점으로 사용하지 않고 다수의 가상 머신들이 하나의 물리 입출력 장치를 공유할 수 있다.
도 5 및 도 6은 도 3 및 도 4를 참조하여 설명한 컴퓨팅 플랫폼의 동작을 설명하기 위한 시퀀스 도면들이다. 구체적으로 도 5는 가상 머신의 송신 과정을 나타낸 시퀀스 도면이고, 도 6은 가상 머신의 수신 과정을 나타낸 시퀀스 도면이다.
도 5를 참조하면, 가상 머신(110) 내의 장치 드라이버(115)에서 입출력 요청을 발생하여(단계 210) 호스트 머신(120') 내의 가상 머신 모니터(121')가 입출력 요청을 캡쳐한다. 가상 머신 모니터(121')는 입출력 요청을 전달한 가상 머신(110)에 할당된 가상 중앙처리장치에 대한 스케줄링 정책을 조정하는 등의 인터럽트 핸들러를 수행하고(단계 220), 가상 머신 에뮬레이터(123')에 송신 명령을 전달한다(단계 230).
여기서, 가상 머신 모니터(121')와 가상 머신 에뮬레이터(123')는 주소 변환을 요청하는 동작을 수행하지 않고, 가상 머신 에뮬레이터(123')가 곧바로 입출력 요청을 전달한 가상 머신(110)의 정보를 삽입하여(단계 510), 해당 가상 머신(110)과 연계된 확장 장치 드라이버(125')로 명령 요청을 전송한다(단계 520).
상술한 바와 같이 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100b)은, 가상 머신(110) 각각에 대응되는 확장 장치 드라이버(125')를 호스트 머신(120') 내에 구비하고 있으며, 호스트 머신(120')에 구비된 확장 장치 드라이버(125')는 가상 머신(110) 내에서 노출되어 가상 머신(110)의 본래의 장치 드라이버와 같이 동작할 수 있다. 따라서 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100b)에 포함된 가상 머신 에뮬레이터(123')는, 가상 머신(110)으로부터 제공된 정보에 기초하여 가상 머신(110)과 연계된 확장 장치 드라이버(125')에 명령 요청을 전송할 수 있으며, 이러한 전송은 가상 머신 에뮬레이터(123') 내의 장치 모델과 확장 장치 드라이버(125') 사이의 제어 채널을 통하여 이루어질 수 있다.
확장 장치 드라이버(125')는 송신 큐에 게스트 물리 어드레스를 삽입함에 따라(단계 530), 가상 머신(110) 내의 장치 드라이버(115)로부터 데이터를 포함한 직접 메모리 접근이 수행된다. 이 과정에서 직접 메모리 접근 매핑 하드웨어(140)에 포함된 리매핑 컨텍스트 엔트리의 가상 머신에 할당된 엔트리를 도출하여 게스트 물리 어드레스를 호스트 물리 어드레스로 변환한다(단계 540). 이렇게 변환된 주소에 기초하여 물리 입출력 장치(130)를 통한 직접 메모리 접근이 완료된다.
도 6은 물리 입출력 장치(130)로부터 발생한 인터럽트가 가상 머신(110) 내의 장치 드라이버(115)로 전달되는 과정을 설명하는 시퀀스 도면이다. 도 6에서 외부 장치로부터 가상 머신(110)으로의 접근 요청에 따라 인터럽트가 발생한다(단계 610). 발생된 인터럽트에는 접근하고자 하는 가상 머신의 정보가 포함되어 있으며, 이에 기초하여 해당 가상 머신(110)에 연계된 확장 장치 드라이버(125)로 인터럽트가 전송된다.
확장 장치 드라이버(125)는 제어 채널을 통하여 연결된 가상 머신 에뮬레이터(123')로 인터럽트 정보를 전송하고(단계 630), 가상 머신 에뮬레이터(123')는 인터럽트 요청 파일 지시자(IRQ FD)를 가상 머신 모니터(121')에 전송한다(단계 640). 가상 머신 모니터(121)는 인터럽트가 제공될 가상 머신(110)에 할당된 중앙처리장치의 스케줄링에 따라 장치 드라이버(115)로 인터럽트를 주입한다(단계 650).
이러한 제어 채널의 동작과 동시에 또는 그 전후로 데이터 채널을 통해 주소 변환이 이루어질 수 있다. 직접 메모리 접근 매핑 하드웨어(140)는 인터럽트 발생에 따라, 인터럽트에 포함된 가상 머신 식별 정보에 기초하여 리매핑 컨텍스트 엔트리를 도출하여 호스트 물리 어드레스를 게스트 물리 어드레스로 변환한다(단계 620).
변환된 주소에 따라 물리 입출력 장치(130)에 제공된 데이터가 가상 머신(110) 내의 장치 드라이버(115)를 통해 게스트 물리 어드레스로 전달된다.
상술한 바와 같이 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100b)은 직접 메모리 접근 매핑 하드웨어(140)가 가상 머신 별로 할당된 컨텍스트 엔트리를 구비함에 따라 PCI 기반이 아닌 가상 머신 기반으로 상이한 어드레스 변환을 수행할 수 있다. 따라서 하나의 물리 입출력 장치(130)를 다수의 가상 머신들(110)이 공유할 수 있다.
결국 본 발명의 일 실시 예에 따른 컴퓨팅 플랫폼(100b)은 하나의 물리 입출력 장치(130)를 통하여 다수의 가상 머신들(110)에 대한 주소 변환을 수행함에 따라 호스트 머신(120') 내의 가상 머신 모니터(121')의 주소 변환에 따른 부담을 줄일 수 있을 뿐만 아니라 컴퓨팅 플랫폼(100a)을 참조하여 설명하였던 효과 또한 가질 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 컴퓨팅 플랫폼을 나타내는 도면이다.
도 7의 컴퓨팅 플랫폼(700)은 하나의 네트워크 인터페이스 칩(Network Interface Chip; NIC)을 구비하는 경우에도 입출력 가상화 기반으로 공유기 환경을 구성하고 무선 채널을 설정함에 따라 듀얼 밴드 환경을 구성할 수 있다.
구체적으로, 도 7의 컴퓨팅 플랫폼(700)은 복수의 게스트 OS가 가상 머신 에뮬레이터와 가상 머신 모니터를 통하여 복수의 가상 매체 접근 제어(Virtual Medium Access Control)과 통신 가능하도록 네트워크 인터페이스 칩과의 명령을 재할당(re-assign)한다.
이러한 과정을 통해 듀얼 밴드의 경우에는 하나의 무선 액세스 포인트 내에 2개 이상의 네트워크 인터페이스 칩을 내장하여야 하는 문제를 해결할 수 있다.
본 발명의 다양한 실시 예들은 하드웨어, 펌웨어, 소프트웨어 또는 이들 중 적어도 하나의 조합으로 구현될 수 있다. 본 발명의 다양한 실시 예들은 하나 이상의 프로세서에 의해 판독되어 실행될 수 있는 컴퓨터로 판독가능한 기록매체에 저장된 명령어로 구현될 수 있다. 컴퓨터로 판독가능한 기록매체는 정보를 저장하는 물리적 매체로, 휘발성 메모리, 비휘발성 메모리, 광학 저장 매체, 자기 디스크 저장 매체 등을 포함할 수 있다. 또한 본 발명의 다양한 실시 예들은 상술한 방법들을 수행하는 명령어들이 기록된 컴퓨터로 판독가능한 기록매체를 포함할 수 있다.
지금까지 본 발명에 대하여 도면에 도시된 바람직한 실시예들을 중심으로 상세히 살펴보았다. 이러한 실시예들은 이 발명을 한정하려는 것이 아니라 예시적인 것에 불과하며, 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 진정한 기술적 보호범위는 전술한 설명이 아니라 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다. 비록 본 명세서에 특정한 용어들이 사용되었으나 이는 단지 본 발명의 개념을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 본 발명의 각 단계는 반드시 기재된 순서대로 수행되어야 할 필요는 없으며, 병렬적, 선택적 또는 개별적으로 수행될 수 있다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 특허청구범위에서 청구하는 본 발명의 본질적인 기술사상에서 벗어나지 않는 범위에서 다양한 변형 형태 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 균등물은 현재 공지된 균등물뿐만 아니라 장래에 개발될 균등물 즉 구조와 무관하게 동일한 기능을 수행하도록 발명된 모든 구성요소를 포함하는 것으로 이해되어야 한다.
100a, 100b: 컴퓨팅 플랫폼
110, 110_1, 110_2, 110_n: 가상 머신
120: 호스트 머신
121: 가상 머신 모니터
123: 가상 머신 에뮬레이터
125: 확장 장치 드라이버
130: 물리 입출력 장치
140: 직접 메모리 접근 매핑 하드웨어

Claims (18)

  1. 가상 머신 환경에서 네트워크 입출력 장치의 가상화 방법에 있어서,
    복수의 가상 머신들 중 적어도 하나의 가상 머신으로부터의 입출력 요청에 응답하여 가상 머신 모니터가 상기 가상 머신의 게스트 물리 주소(Guest Physical Address)를 호스트 물리 주소(Host Physical Address)로 변환하는 단계;
    가상 머신 에뮬레이터가 상기 복수의 가상 머신 내의 각 장치 드라이버와 확장 장치 드라이버를 매핑하는 단계;
    상기 입출력 요청을 전달한 가상 머신과 상기 매핑을 통하여 연계된 확장 장치 드라이버로, 상기 가상 머신 에뮬레이터가 상기 변환된 주소 정보를 포함하는 명령 요청을 전송하는 단계;
    상기 확장 장치 드라이버가 상기 변환된 주소를 송신 큐(Queue)에 삽입하는 단계; 및
    상기 송신 큐에 따라 물리 입출력 장치를 이용하여 상기 입출력 요청에 대한 직접 메모리 접근을 수행하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  2. 제1 항에 있어서,
    상기 주소를 변환하는 단계는,
    상기 가상 머신 에뮬레이터가 상기 입출력 요청을 수신하여 상기 가상 머신 모니터로 주소 변환을 요청하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  3. 제2 항에 있어서,
    커널 인터페이스를 이용해 상기 가상 머신 에뮬레이터 내의 장치 모델과 상기 확장 장치 드라이버 사이의 제어 채널을 형성하는 단계를 더 포함하는, 네트워크 입출력 장치의 가상화 방법.
  4. 제3 항에 있어서,
    상기 명령 요청을 전송하는 단계는,
    상기 가상 머신의 장치 모델과 연계된 상기 확장 장치 드라이버와의 제어 채널을 통하여 상기 명령 요청을 전송하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  5. 제3 항에 있어서,
    상기 확장 장치 드라이버는 상기 가상 머신 에뮬레이터에 따른 매핑에 의해 PCI 및 메모리 맵 입출력(Memory Mapped Input Output; MMIO) 접근 설정을 수행하여 상기 가상 머신 내에 노출되는, 네트워크 입출력 장치의 가상화 방법.
  6. 가상 머신 환경에서 네트워크 입출력 장치의 가상화 방법에 있어서,
    복수의 가상 머신들 중 적어도 하나의 가상 머신으로부터의 입출력 요청 인터럽트를 핸들링하여 가상 머신 에뮬레이터로 송신 명령을 전달하는 단계;
    상기 가상 머신 에뮬레이터가 상기 복수의 가상 머신들 내의 각 장치 드라이버와 확장 장치 드라이버를 매핑하는 단계;
    상기 가상 머신 에뮬레이터가 상기 입출력 요청을 전달한 가상 머신의 정보를 삽입하여, 상기 가상 머신과 상기 매핑을 통하여 연계된 확장 장치 드라이버로 명령 요청을 전송하는 단계;
    상기 확장 장치 드라이버가 상기 입출력 요청의 주소를 송신 큐(Queue)에 삽입하는 단계; 및
    상기 인터럽트를 발생한 가상 머신의 식별자에 기초하여, 직접 메모리 접근 매핑 하드웨어가 상기 송신 큐에 포함된 주소의 게스트 물리 주소를 호스트 물리 주소로 변환하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  7. 제6 항에 있어서,
    상기 복수의 가상 머신 별로 분할한 컨텍스트 엔트리를 포함하는 리매핑 컨텍스트 엔트리를 생성하는 단계를 더 포함하는, 네트워크 입출력 장치의 가상화 방법.
  8. 제7 항에 있어서,
    상기 직접 메모리 접근 매핑 하드웨어는 상기 송신 큐에 포함된 상기 가상 머신 식별자에 기초하여 상기 리매핑 컨텍스트 엔트리로부터 도메인을 매핑함에 따라 상기 주소 변환을 수행하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  9. 제7 항에 있어서,
    커널 인터페이스를 이용해 상기 가상 머신 에뮬레이터 내의 장치 모델과 상기 확장 장치 드라이버 사이의 제어 채널을 형성하는 단계를 더 포함하는, 네트워크 입출력 장치의 가상화 방법.
  10. 제9 항에 있어서,
    상기 명령 요청을 전송하는 단계는,
    상기 가상 머신의 장치 모델과 연계된 상기 확장 장치 드라이버와의 제어 채널을 통하여 상기 명령 요청을 전송하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  11. 제1 항 또는 제6 항에 있어서,
    상기 가상 머신 에뮬레이터는 상기 입출력 요청에 대한 에뮬레이션을 수행하지 않는, 네트워크 입출력 장치의 가상화 방법.
  12. 복수의 가상 머신들에 매핑되는 확장 장치 드라이버를 호스트 머신 내에 복수 개 생성하는 단계;
    상기 가상 머신에, 상기 확장 장치 드라이버의 접근 설정을 수행하여, 상기 매핑된 확장 장치 드라이버를 노출시키는 단계;
    상기 가상 머신들 각각에 할당된 리매핑 컨텍스트 엔트리에 기초하여 상기 노출된 확장 장치 드라이버에 대하여 상기 가상 머신이 생성한 입출력 요청에 포함된 게스트 물리 주소(Guest Physical Address)를, 호스트 물리 주소(Host Physical Address)로 변환하여 송신 큐에 삽입하는 단계; 및
    상기 노출된 확장 장치 드라이버를 통하여 상기 송신 큐에 기초한 직접 메모리 접근을 수행하는 단계를 포함하는, 네트워크 입출력 장치의 가상화 방법.
  13. 제12 항에 있어서,
    상기 송신 큐에 삽입하는 단계는,
    상기 입출력 요청을 수신한 가상 머신 에뮬레이터의 요청에 응답하여, 가상 머신 모니터가 상기 게스트 물리 주소를 상기 호스트 물리 주소로 변환하는, 네트워크 입출력 장치의 가상화 방법.
  14. 제13 항에 있어서,
    상기 가상 머신 에뮬레이터의 장치 모델과 상기 노출된 확장 장치 드라이버 사이의 제어 채널을 설정하는 단계를 더 포함하는, 네트워크 입출력 장치의 가상화 방법.
  15. 제1 항 내지 제10 항, 제12 항 내지 제14 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  16. 제1 항 내지 제10 항, 제12 항 내지 제14 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위하여 기록매체에 저장된 프로그램.
  17. 컨텍스트 엔트리 테이블 내의 공간을 가상 머신 단위로 논리적으로 분할하여 분할된 공간을 복수의 가상 머신들에 대하여 각각 할당한 컨텍스트 엔트리를 포함하는 리매핑 컨텍스트 엔트리를 관리하는 직접 메모리 접근 매핑 하드웨어; 및
    상기 복수의 가상 머신들에 각각의 확장 장치 드라이버를 할당하고, 상기 복수의 가상 머신들 중 적어도 하나로부터 생성된 입출력 요청을 상기 할당된 확장 장치 드라이버를 통해 송신 큐로 전달하여 상기 리매핑 컨텍스트 엔트리에 기초해 주소 변환을 수행함에 따라, 직접 메모리 접근을 수행하는 프로세서를 포함하는, 네트워크 입출력 장치의 가상화 장치.
  18. 제17 항에 있어서,
    상기 프로세서는,
    상기 가상 머신에 할당된 상기 확장 장치 드라이버와 가상 장치 에뮬레이터 내의 장치 모델 사이의 제어 채널을 형성하는, 네트워크 입출력 장치의 가상화 장치.
KR1020160180464A 2016-12-27 2016-12-27 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 KR101716715B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160180464A KR101716715B1 (ko) 2016-12-27 2016-12-27 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US15/853,298 US10754679B2 (en) 2016-12-27 2017-12-22 Method and apparatus for handling network I/O device virtualization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160180464A KR101716715B1 (ko) 2016-12-27 2016-12-27 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101716715B1 true KR101716715B1 (ko) 2017-03-15

Family

ID=58403161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160180464A KR101716715B1 (ko) 2016-12-27 2016-12-27 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치

Country Status (2)

Country Link
US (1) US10754679B2 (ko)
KR (1) KR101716715B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102032521B1 (ko) * 2018-12-26 2019-10-15 래블업(주) 컨테이너 기반의 gpu 가상화 방법 및 시스템
CN114844833A (zh) * 2022-03-30 2022-08-02 阿里云计算有限公司 报文处理方法和系统,存储介质及计算机终端

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156607A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 無線通信装置、無線通信方法、コンピュータ装置および情報処理方法
CN110750367B (zh) * 2019-09-30 2023-03-17 超聚变数字技术有限公司 一种队列通信的方法、系统及相关设备
CN113098774B (zh) * 2021-03-25 2023-01-03 北京金山云网络技术有限公司 一种报文转发方法及装置
CN116841691A (zh) * 2023-06-15 2023-10-03 海光信息技术股份有限公司 加密硬件的配置方法、数据机密计算方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100871743B1 (ko) * 2004-09-30 2008-12-05 인텔 코오퍼레이션 직접 메모리 액세스 주소 변환을 위한 캐싱 지원
KR101017451B1 (ko) 2006-06-30 2011-02-25 인텔 코오퍼레이션 그래픽 데이터의 메모리 어드레스 리맵핑을 위한 장치 및 방법
KR20110064539A (ko) * 2009-12-08 2011-06-15 주식회사 케이티 다수의 가상머신을 이용한 네트워크 시뮬레이션 장치 및 그 방법
KR101387971B1 (ko) * 2013-08-05 2014-04-22 주식회사 파이오링크 가상 머신 사이의 통신을 지원하기 위한 방법, 가상 머신, 시스템 및 컴퓨터 판독 가능한 기록 매체

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8706942B2 (en) * 2004-12-29 2014-04-22 Intel Corporation Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices
US7499057B2 (en) * 2005-09-09 2009-03-03 Microsoft Corporation Address translation in an integrated graphics environment
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
AU2009357325B2 (en) 2009-12-24 2014-04-10 Intel Corporation Method and apparatus for handling an I/O operation in a virtualization environment
TW201235946A (en) * 2011-02-18 2012-09-01 Hon Hai Prec Ind Co Ltd Method and system for configuring USB device in virtual environment
US8719464B2 (en) 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
CN102591702B (zh) 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US10261814B2 (en) 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9836421B1 (en) * 2015-11-12 2017-12-05 Amazon Technologies, Inc. Standardized interface for network using an input/output (I/O) adapter device
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100871743B1 (ko) * 2004-09-30 2008-12-05 인텔 코오퍼레이션 직접 메모리 액세스 주소 변환을 위한 캐싱 지원
KR101017451B1 (ko) 2006-06-30 2011-02-25 인텔 코오퍼레이션 그래픽 데이터의 메모리 어드레스 리맵핑을 위한 장치 및 방법
KR20110064539A (ko) * 2009-12-08 2011-06-15 주식회사 케이티 다수의 가상머신을 이용한 네트워크 시뮬레이션 장치 및 그 방법
KR101387971B1 (ko) * 2013-08-05 2014-04-22 주식회사 파이오링크 가상 머신 사이의 통신을 지원하기 위한 방법, 가상 머신, 시스템 및 컴퓨터 판독 가능한 기록 매체

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102032521B1 (ko) * 2018-12-26 2019-10-15 래블업(주) 컨테이너 기반의 gpu 가상화 방법 및 시스템
WO2020075919A1 (ko) * 2018-12-26 2020-04-16 래블업 주식회사 컨테이너 기반의 gpu 가상화 방법 및 시스템
US11221888B2 (en) 2018-12-26 2022-01-11 Lablup Inc. Method and system for GPU virtualization based on container
CN114844833A (zh) * 2022-03-30 2022-08-02 阿里云计算有限公司 报文处理方法和系统,存储介质及计算机终端

Also Published As

Publication number Publication date
US10754679B2 (en) 2020-08-25
US20180181425A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
KR101716715B1 (ko) 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US10768862B2 (en) Extending existing storage devices in virtualized environments
AU2009357325B2 (en) Method and apparatus for handling an I/O operation in a virtualization environment
EP2339462A1 (en) Efficient nested virtualization
US20110167422A1 (en) Virtualization apparatus
US20190243757A1 (en) Systems and methods for input/output computing resource control
US11194735B2 (en) Technologies for flexible virtual function queue assignment
US11016817B2 (en) Multi root I/O virtualization system
EP4170492A1 (en) System and interrupt processing method
EP4053706A1 (en) Cross address-space bridging
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
US10164911B2 (en) Shim layer used with a virtual machine virtual NIC and a hardware platform physical NIC
WO2023221847A1 (zh) 基于虚拟机设备直通的数据访问方法、设备以及系统
US11954198B2 (en) Unifying hardware trusted execution environment technologies using virtual secure enclave device
US11513832B2 (en) Low-latency shared memory channel across address spaces in a computing system
WO2017026931A1 (en) Implementing input/output in a virtualized environment

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200302

Year of fee payment: 4