KR20110139151A - 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법 - Google Patents

다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법 Download PDF

Info

Publication number
KR20110139151A
KR20110139151A KR1020110060373A KR20110060373A KR20110139151A KR 20110139151 A KR20110139151 A KR 20110139151A KR 1020110060373 A KR1020110060373 A KR 1020110060373A KR 20110060373 A KR20110060373 A KR 20110060373A KR 20110139151 A KR20110139151 A KR 20110139151A
Authority
KR
South Korea
Prior art keywords
customer
service
virtual
computing system
nic driver
Prior art date
Application number
KR1020110060373A
Other languages
English (en)
Other versions
KR101444984B1 (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 KR20110139151A publication Critical patent/KR20110139151A/ko
Application granted granted Critical
Publication of KR101444984B1 publication Critical patent/KR101444984B1/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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)

Abstract

컴퓨팅 시스템에서, 컴퓨팅 시스템 상의 고객 가상 머신 내에서 구동되는 고객 운영체계(OS)의 가상 네트워크 인터페이스 카드(NIC) 드라이버가 컴퓨팅 시스템에 결합된 네트워크 상에서 물리 NIC 드라이버에 의해 전송되기 위한 고객 OS 요구 패킷을 수신하고, 고객 OS 요구 패킷의 적어도 일부를 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하고 블록을 공유 메모리 내의 전송 대기열에 첨부함으로써, 다수의 가상 머신 사이의 물리 NIC 장치 공유가 고객 가상 머신에 의해 구현될 수 있다. 이어, 서비스 가상 머신은, 서비스 가상 머신 내에서 구동되는 서비스 OS의 가상 NIC 드라이버가 전송 대기열로부터 블록을 인출하고 일부를 서비스 OS 요구 패킷에 패키징하고, 서비스 OS 요구 패킷을 서비스 OS의 서비스 OS 네트워크 스택 컴포넌트에 넘겨주고, 서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버가 서비스 OS 요구 패킷을 물리 NIC 드라이버에 라우팅하며, 물리 NIC 드라이버가 서비스 OS 요구 패킷을 네트워크 상에서 송신함으로써, 구현을 지원할 수 있다.

Description

다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법{METHOD FOR NETWORK INTERFACE SHARING AMONG MULTIPLE VIRTUAL MACHINES}
본 발명의 실시예들은 일반적으로는 컴퓨팅 시스템에 관한 것이며, 더 구체적으로는 시스템 펌웨어 및 가상화에 관한 것이다.
많은 컴퓨팅 시스템이 네트워크 상에서 다른 시스템 및 장치들과의 통신을 제공하기 위해 네트워크 인터페이스 카드(NIC)를 포함한다. 다수의 가상 머신들 상에서 다수의 운영체계(OS)를 구동하는 컴퓨팅 시스템에서, 일반적으로 각각의 OS는 자신의 NIC와 통신해야 한다. 따라서 다수의 NIC는 가상 머신에서 구동되는 다수의 OS를 지원하도록 컴퓨팅 시스템 상에 설치되어야 한다. 하지만, 다수의 NIC를 설치하는 것은 비경제적이며, 실용성이 없을 수도 있다. 몇몇 예에서, 컴퓨팅 시스템은 추가의 NIC를 설치할 여분의 주변장치연결규격(PCI) 슬롯 또는 PCI 익스프레스(PCIE) 슬롯을 보유하고 있지 않거나, 컴퓨팅 시스템의 구체적인 폼팩터에 여유가 없다. 그 외의 경우에, 추가의 NIC의 비용으로 컴퓨팅 시스템의 전체 비용이 엄청나게 비싸질 수 있다.
본 발명의 특징 및 이점은 다음의 본 발명의 상세한 설명으로부터 명백해질 것이다.
도 1은 본 발명의 실시예에 따른 컴퓨팅 시스템 내의 보안 엔클레이브 세션의 도면이다.
도 2는 컴퓨팅 시스템의 도면으로서, 본 발명의 실시예에 따른 다수의 가상 머신들을 보여주는 도면이다.
도 3은 컴퓨팅 시스템의 도면으로서, 본 발명의 실시예에 따른 가상 머신들을 위한 네트워크 스택들을 보여주는 도면이다.
도 4는 본 발명의 실시예에 따른 네트워크 요구 패킷의 도면이다.
도 5는 본 발명의 실시예에 따른 가상 머신들 사이의 공유 메모리와 통신장치들의 도면이다.
도 6 내지 도 9는 본 발명의 실시예에 따른 네트워크 요구 패킷 처리의 순서도이다.
본 발명의 실시예들은 컴퓨팅 시스템에서 다수의 가상 머신(VM) 사이에 하나의 물리적인 네트워크 인터페이스 카드(NIC)를 공유하기 위한 시스템과 방법을 제공한다. 본 발명의 실시예에서, 제1 VM에서 구동되는 하나의 운영체계(OS)(서비스 OS라고 함)가 물리 NIC에 대한 접근을 제어하고, 하나 이상의 다른 OS들(고객 OS라고 함)로부터의 통신 요구를 서비스한다. 고객 OS는 또 다른 VM에서 구동되고 애플리케이션을 통해 컴퓨터 시스템의 사용자와 상호작용한다. 애플리케이션은 동일한 VM 내에서 고객 OS로서 구동된다. 고객 OS가 물리 NIC 장치를 통해 통신해야 하는 경우, 고객 OS는 네트워크 요구 패킷을 서비스 OS에 송신한다. 서비스 OS는 네트워크 요구 패킷을 해석하여 이 패킷을 물리 NIC로 전달한다. 따라서 서비스 OS는 컴퓨팅 시스템에게 각각의 고객 OS를 위해 물리 NIC를 포함하도록 요구하지 않으면서, 고객 OS를 위해 NIC를 가상화한다.
본 발명의 "하나의 실시예" 또는 "실시예"에 대한 명세서 내의 언급은 실시예와 연계되어 설명된 구체적인 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서 명세서의 여러 부분에 나타나는 "하나의 실시예에서"라는 어구는 반드시 동일한 실시예만을 언급하는 것은 아니다.
물리 NIC의 가상화를 보호하기 위해, 본 발명의 실시예들에서, 서비스 OS를 구동시키는 제1 VM은 컴퓨팅 시스템의 프로세서 패키지 내의 보안 엔클레이브(Secure Enclave; SE) 안에서 실행될 수 있다. 도 1은 본 발명의 실시예에 따른 컴퓨팅 시스템에서 보안 엔클레이브 세션의 도면이다. 설명을 위해, 컴퓨팅 시스템(100)의 일부는 단순화된 형태로 도 1에 도시된다. 프로세서 패키지(102)는 보안선(security perimeter) 내에 하나 이상의 처리 코어를 포함한다. 하나의 실시예에서, 보안선은 (도 1에 굵은 선으로 도시된) 프로세서 패키지 경계일 수 있다. 프로세서 패키지는 메모리(104) 및 플랫폼 제어 허브(PCH)(106)와 인터페이스로 접속한다. PCH(106)는 하나 이상의 I/O 장치(108)와 인터페이스로 접속한다. 보안 엔클레이브 능력의 구현은 보안 엔클레이브를 생성하고 격리를 강제하며 명령 실행과 데이터 접근의 보호를 제공하는 몇몇 프로세서 명령을 제공하는 것을 포함한다. 프로세서 패키지 외부의 데이터 및 코드는 암호화되거나 무결성 검사를 받을 수 있다. 프로세서 패키지 내부의 데이터 및 코드는 암호화되지 않고 모드 및 캐시 보호 메커니즘에 의해 보호될 수 있다. 실시예에서, 데이터는 보안 엔클레이브로부터 "누설"되지 않는다. 프로세서 패키지 내의 마이크로코드는 인터럽트, 예외, 트랩, 및 가상 머신 관리자(VMM) 종료를 위해 엔클레이브 내부에 엔클레이브 상태 정보를 저장한다. 보안 엔클레이브 능력은 미국특허청을 수리관청으로 하여 2009년 12월 22일에 출원된 PCT특허출원 PCT/US2009/069212(명칭: 보안 응용 실행을 제공하는 방법 및 장치(Method and Apparatus to Provide Secure Application Execution), Francis X. McKeen, et al.)에 기재되어 있으며, 본 명세서에 참조로서 포함된다.
도 2는 컴퓨팅 시스템의 도면으로, 본 발명의 실시예에 따른 다수의 가상 머신들을 보여주는 도면이다. 컴퓨팅 시스템은 프로세서 패키지(102), 메모리(104), PCH(106), 및 도 1의 I/O 장치(108) 뿐만 아니라 도시되지 않은 그 밖의 종래의 요소를 포함하는 컴퓨팅 플랫폼(200)을 포함한다. I/O 장치들 중 하나는 NIC일 수 있다. 기본 입출력 체계(BIOS)(202)로 알려진 시스템 펌웨어는 시스템 부팅 시간에 컴퓨팅 플랫폼 상에서 실행되기 시작하여, 컴퓨팅 플랫폼 컴포넌트들을 식별, 시험, 및 초기화하고 컴퓨팅 플랫폼 하드웨어에 대한 인터페이스를 컴퓨팅 시스템의 소프트웨어 컴포넌트에 제공한다. 공지된 가상화 기술을 지원하는 본 발명의 실시예들에서, BIOS가 컴퓨팅 플랫폼의 초기화를 완료한 직후 가상 머신 관리자(VMM)가 실행될 수 있다. VMM은 컴퓨팅 플랫폼에서 다수의 가상 머신의 동시 실행을 지원한다. VMM은 게스트 운영체계에 가상 플랫폼을 제공하고 게스트 운영체계의 실행을 감시한다. 이렇게 해서, 동일한 운영체계의 여러 가지 경우를 비롯한 다수의 운영체계가 하드웨어 자원을 공유할 수 있다. 애플리케이션들이 하드에어 자원을 공유하도록 하는 멀티태스킹과는 달리, VMM을 이용한 가상 머신 방식은 하나의 운영체계의 고장을 하드웨어를 공유하는 다른 운용체계로부터 격리시킨다. VMM은 시스템 내의 VM을 위한 실행환경을 준비한다. VMM은 요구되는 하나 이상의 VM을 시작한다.
본 발명의 실시예들에서, 다수의 VM이 동시에 시작 및 실행될 수 있고, VM은 적어도 2종일 수 있다. 한 종류의 VM은 서비스 OS(SOS)(216)를 구동시키는 서비스 VM(214)이다. 서비스 OS는 다른 VM에서 구동되는 다른 OS에 서비스를 제공함이 일반적이고, 이런 서비스를 제공하기 위해 VMM(204)와 상호 작용한다. 두 번째 종류의 VM은 고객 VM(206)에서 구동되는 고객 OS(COS)(210)이다. (게스트 OS라고도 한다.) 고객 OS는 컴퓨팅 시스템의 사용자와 상호 작용하는 애플리케이션(도 2에 도시 생략)을 지원한다. 고객 OS는 VMM(204)와 서비스 OS(216)에 의해 제공되는 서비스에 의존한다. 고객 VM 내부에서 구동되는 애플리케이션은 서비스 VM에서 구동되는 서비스 OS와 직접 상호 작용할 수 없다. 본 발명의 실시예에서, 다수의 고객 VM 1(206) 내지 VM N-1(208)이 시작되어, 각각 고객 OS 1(210) 내지 고객 OS N-1(212)을 구동시킬 수 있다.
도 3은 컴퓨팅 시스템의 도면으로서, 본 발명의 실시예에 따른 가상 머신들을 위한 네트워크 스택들을 보여주는 도면이다. 실시예에서, 네트워크 서비스를 고객 VM 1(206) 내에서 실행되는 COS 1(304)과 같은 고객 OS들 중의 하나에 의해 지원되는 애플리케이션(304)에 제공하기 위해, VMM(204)(도 3에 도시 생략)은 COS 가상 NIC 장치(310)를 생성한다. 고객 OS에게, 이 가상화된 NIC 장치는 물리 NIC 장치처럼 기능한다. COS 가상 NIC 드라이버 컴포넌트(308)가 고객 OS 1(304) 내에 형성될 수 있다. COS 가상 NIC 드라이버(308)는 상위 레벨 COS 네트워크 스택(306)으로부터의 네트워크 요구를 처리하고 요구 결과에 따라 응답한느 데에 책임이 있을 수 있다. 애플리케이션(304)이 물리 NIC 장치에 대한 I/O를 요구하는 경우, 요구는 COS 네트워크 스택(306), COS 가상 NIC 드라이버(308), 및 COS 가상 NIC 장치(310)에 의해 처리될 수 있다. COS 가상 NIC 장치(310)에 의해 처리되는 응답은 COS 가상 NIC 드라이버(308)와 COS 네트워크 스택(306)을 경유하여 애플리케이션에 도로 전달될 수 있다.
상응하는 서비스 OS(SOS) 가상 NIC 장치(320)가 서비스 VM(214)에 의한 접근을 위해 생성될 수 있다. 또한 상응하는 SOS 가상 NIC 드라이버(316)가 서비스 VM(214)에서 구동되는 서비스 OS(216) 내부에서 생성될 수 있다. 고객 VM(206)에 결합된 COS 가상 NIC 장치(310)에 의한 요구가 서비스 VM(214)에 결합된 SOS 가상 NIC 장치(320)에 전달되어 처리될 수 있다. 요구는 서비스 OS 내부에서 SOS 가상 NIC 장치(320)와 SOS 네트워크 스택(314)에 의해 처리될 수 있다. 서비스 OS가 물리 NIC 장치(322)와 상호 작용하므로, 서비스 OS는 물리 NIC 드라이버(318)와 물리 NIC 장치(322)에 의한 요구의 구현을 제어할 수 있다. 요구에 대한 응답은 물리 NIC 장치(322)로부터 물리 NIC 드라이버(318)로, 그리고 SOS 네트워크 스택(314), SOS 가상 NIC 드라이버(316), 및 SOS 가상 NIC 장치(320)를 통해 다시 서비스 OS로, 반대 방향으로 순환할 수 있다. 따라서 고객 OS(210)는 물리 NIC 장치(322)와 통신하고 있다고 착각하게 된다.
서비스 OS(216)가 보안 엔클레이브 세션 내에서 구동되는 경우, 물리 NIC 장치(322)를 수반하는 I/O 요구는 고객 VM 내의 애플리케이션이나 고객 OS 내에서 구동되는 다른 프로그램들에 의해 악의적인 처리로부터 보호될 수 있다. 시스템 초기화 시간에, 또는 물리 NIC 장치가 컴퓨팅 시스템에 추가될 때마다, 물리 NIC 장치에 대한 접근을 보호하도록 보안 엔클레이브 세션이 시작될 수 있다.
COS 네트워크 스택(306)을 경유해 애플리케이션(304)으로부터 COS 가상 NIC 드라이버(308)에 도달하는 네트워크 요구 패킷의 형태인 I/O 요구가 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 및 인터넷 프로토콜(IP)과 같은 네트워크 프로토콜 계층에 의해 처리되어 왔다. 네트워크 요구 패킷은 네트워크 상의 전송에 필요한 정보를 포함하므로, 패킷은 물리 NIC 장치 상에서 전송되도록 물리 NIC 드라이버에 제공될 수 있다. 도 4는 본 발명의 실시예에 따른 네트워크 요구 패킷의 도면이다. 네트워크 요구 패킷(400)은 OS 관련 정보(402)와 MAC(매체 접근 제어) 프레임 정보(404)를 포함한다. OS 관련 정보(402)는 네트워크 스택 드라이버 또는 NIC 장치 드라이버에 의해 사용되는 정보 및/또는 파라미터를 포함한다. 이 부분은 물리 NIC 장치의 네트워크 인터페이스 상에서 전송되지 않을 수 있고, 서비스 OS에 의해 이해되지 않아, 네트워크 요구 패킷의 이 부분은 무시될 수 있다. MAC 프레임 정보는 네트워크 인터페이스 상에서 송신되는 실제 콘텐츠(예컨대 이더넷 네트워크 매체 상의 기본 전송 단위)이다.
본 발명의 실시예들에 따르면, 고객 OS를 위해 직접 이용 가능한 물리 NIC 장치가 없으므로, COS 가상 NIC 드라이버(308)는 서비스 VM과 VMM의 컴포넌트에 의존하여 패킷을 송신한다. VMM은 처리할 패킷이 있는 경우 서비스 OS에 통보하고, 고객 VM과 서비스 VM들 사이의 데이터 교환에 사용하기 위한 공유 메모리 영역을 생성한다. 공유 메모리 영역은 고객 OS와 서비스 OS 양쪽에게 보이도록 구성될 수 있으므로, 각각의 VM 내의 가상 NIC 드라이버는 패킷에 접근하여 처리할 수 있다. 하나의 실시예에서, 공유 메모리는 메모리(104) 내에 구현될 수 있다.
도 5는 본 발명의 실시예에 따른 가상 머신들 사이의 공유 메모리와 통신장치들의 도면이다. COS 가상 NIC 드라이버(308)는 네트워크 요구 패킷으로부터 MAC 프레임(404)을 추출하고, 공유 메모리로부터 메모리 블록을 할당하고, MAC 프레임을 공유 메모리 블록에 복사하며, 이 블록을 지정된 전송(TX) 대기열(506)에 첨부할 수 있다. TX 대기열(506)은 전송 MAC 프레임 관리에 도움이 되도록 공유 메모리 내에 존재한다. 반대의 경로에서, 패킷이 서비스 OS에 의해 관리되는 물리 NIC 장치(322)에 의해 수신된 경우, 서비스 OS의 컴포넌트(즉, 물리 NIC 드라이버(318), SOS 네트워크 스택(314), 및 SOS 가상 NIC 드라이버(316))는 MAC 프레임을 추출하고, MAC 프레임 콘텐츠를 공유 메모리 내의 자유 메모리 블록에 복사하며, 블록을 수신(RX) 대기열(508)에 첨부한다.
COS 가상 NIC 드라이버(308)는 서비스 OS에게 하기의 방식으로 전송되어야 할 MAC 프레임이 있다는 것을 통지할 수 있다. 본 발명의 실시예들에서, 공지된 가상화 기술을 사용하는 메시지 통보 메커니즘이 사용될 수 있다. VMM(204)은 고객 OS와 서비스 OS 사이의 매개체로서 운영될 수 있고, 요구된 적절한 OS에게 통보할 수 있다.
예컨대, 고객 OS 1(210)이 서비스 OS(216)와 통신하고자 할 때, 고객 OS는 VMCALL(510)이란 명칭의 특권을 가진 명령을 실행할 수 있다. VMCALL 명령은 현재 VM 환경을 빠져나와 VMM(204) 내의 선택된 서비스를 호출하는데 사용된다. 이러한 서비스들은 VMM 내의 VMCALL 명령의 핸들러에 의해 제공될 수 있다. VMCALL 핸들러(도 5에 도시 생략)는 VMCALL의 입력 파라미터를 검사하여 VMM이 서비스 OS에 통지해야 하는 가의 여부를 결정할 수 있다. 결정하는 경우, VMM은 메시지를 기록하고, 제어를 고객 OS에 반환한다. VMM은 항상 컴퓨팅 시스템 내의 구동 프로세스이므로, VMM이 서비스 OS 실행을 위해 시간 슬롯으로 전환할 때 VMM은 인터럽트(516)를 이용하여 서비스 OS에 통지하려고 시도한다. 마찬가지로, 서비스 OS가 고객 OS와 통신하고자 할 때, 서비스 OS는 VMCALL(514)을 실행할 수 있고, VMM은 인터럽트(512)를 이용하여 고객 OS에 통보할 수 있다.
서비스 OS 측에서는, 서비스 OS가 네트워크 전송 및 수신을 위한 고객 OS의 에이전트이므로, 본 발명의 실시예들은 이 중개 장치를 지원하기 위해 두 개의 드라이버 컴포넌트를 제공한다. 하나의 컴포넌트는 SOS 가상 NIC 드라이버(316)이다. 나머지 하나는 브리지 드라이버 컴포넌트(502)이다. 서비스 OS 내의 SOS 가상 NIC 드라이버(316)는 공유 메모리(504) 내의 전송(TX) 대기열(506)을 경유해 고객 OS로부터 전송 MAC 프레임들을 수집하여 이들을 브리지 드라이버를 통해 물리 NIC 드라이버(318)에 넘겨주는 것을 담당한다. 브리지 드라이버는 또한 물리 NIC 드라이버(318)로부터 고객 OS용의 착신 패킷을 수신하여, 이들 패킷을 고객 OS에 의한 접근을 위해 공유 메모리(504) 내의 수신(RX) 대기열(508)에 넣는다. 구체적으로, SOS 가상 NIC 드라이버(316)가 전송 패킷이 전송(TX) 대기열(506)에 있다는 것을 VMM(204)에 의해 통지받는 경우, 서비스 OS 내의 SOS 가상 NIC 드라이버는 전송(TX) 대기열로부터 MAC 프레임을 추출하고, 프레임을 새로운 네트워크 요구 패킷에 재통합하며, 새 패킷을 SOS 네트워크 스택(314)에 인도한다. 한편, SOS 가상 NIC 드라이버(316)가 고객 OS로 향하는 패킷을 SOS 네트워크로 스택으로부터 수신하는 경우, SOS 가상 NIC 드라이버는 OS 관련 부분을 제거하고 MAC 프레임을 고객 OS에 의한 접근을 위해 수신(RX) 대기열(508)에 입력한다. 이와 같이 기재된 메시지 통보 방법은 착신 패킷을 처리하도록 고객 OS에 통지하기 위해 사용될 수 있다.
본 발명의 실시예들에서, 브리지 드라이버(502)는 IP 프로토콜 계층 내의 필터 드라이버를 구현하므로, 브리지 드라이버는 물리 NIC 드라이버(318)를 경유해 물리 NIC 장치로부터 들어오는 모든 패킷을 점검하여 정확한 목적지로 라우팅한다. 예컨대, 브리지 드라이버가 SOS 가상 NIC 드라이버(316)로부터 수신된 패킷을 발견하면, 브리지 드라이버는 패킷을 물리 NIC 드라이버(318)에 전달한다. 브리지 드라이버가 물리 NIC 드라이버(318)로부터 수신된 패킷을 발견하면, 브리지 드라이버는 이 패킷 내의 IP 주소 정보를 점검하여 패킷이 고객 OS(210) 또는 서비스 OS(216)로 향해야 하는지를 결정할 것이다. 브리지 드라이버가 이 패킷이 고객 OS(210)로 향해야 한다고 결정하면, 브리지 드라이버는 고객 OS로의 정보의 추가 전달을 위해 패킷을 SOS 가상 NIC 드라이버(308)에 전달한다.
물리 NIC 드라이버(318)로부터 수신된 패킷의 목적지는 고객 OS와 서비스 OS 사이에서 적어도 두 가지 방법으로 구별될 수 있다. 하나의 방법은 고객 OS와 서비스 OS가 서로 다른 IP 주소를 사용하는 것으로서, 브리지 드라이버(502)는 수신된 네트워크 패킷 내부의 IP 주소 정보를 조회하여 어느 OS가 패킷의 수신자인지 결정할 수 있다. 두 번째 방법에 따르면, 고객 OS와 서비스 OS는 동일한 IP 주소를 사용하지만, 서로 다른 범위의 TCP 또는 UDP 포트를 사용할 수 있다. 제1 방법은 패킷 라우팅 로직이 단순할 수 있지만 더 많은 IP 주소 자원을 요한다. 제2 방법은 IP 주소 자원을 절약할 수 있지만 브리지 드라이버 내부의 패킷 라우팅 로직이 더 복잡해진다. 이들 두 가지 방법 사이의 선택은 의도된 사용 모델에 의존하며, 실천적 결정이다.
도 6과 도 7은 본 발명의 실시예에 따른 네트워크 요구 패킷 전송 처리의 순서도이다. 블록(600)에서, 네트워크 요구 패킷이 물리 NIC 장치 상의 전송을 위해 고객 OS(COS) 네트워크 스택(306)으로부터 수신된다. 이때, 블록(602)에서, 서비스 OS(SOS)(216)와 VMM(204)가 준비되었는지를 COS 가상 NIC 드라이버(308)에 의해 결정하는 점검이 수행될 수 있다. 서비스 OS 또는 VMM(또는 둘 다)이 준비되지 않았다면, 블록(604)에서 처리과정이 계속되어, 오류 메시지가 보고되고 제어는 고객 OS에 반환될 수 있다. 블록(602)에서 서비스 OS와 VMM이 준비되어 있으면, 블록(612)에서, 공유 메모리 내에 이용 가능한 자유 블록이 있는지 점검할 수 있다. 이용 가능한 자유 블록이 없다면, 에러가 보고될 수 있는 블록(604)의 처리가 계속된다. 자유 블록이 이용 가능하면, 도 7의 블록(702)에서 처리과정이 계속된다.
도 7의 블록(702)에서, COS 가상 NIC 드라이버(308)가 네트워크 요구 패킷의 MAC 프레임을 공유 메모리(504) 내의 자유 블록에 복사한다. 블록(704)에서, 새로 채워진 블록이 전송(TX) 대기열(506)에 첨부될 수 있다. 이어서, 블록(706)에서, COS 가상 NIC 드라이버(308)는 VMCALL 명령(510)을 호출하여 VMM(204)을 경유하여 서비스 OS(216)에 통보한다. 블록(708)에서, VMM은 인터럽트(516)를 서비스 OS에 삽입한다. 이에 응답하여, 서비스 OS 내의 SOS 가상 NIC 드라이버(316)는 블록(710)에서 인터럽트를 수신하고, 블록(712)에서 전송(TX) 대기열(506) 내의 다음 노드를 인출한다. 블록(714)에서, SOS 가상 NIC 드라이버(316)는 전송(TX) 대기열 내의 다음 노드로부터의 MAC 프레임 정보를 새로운 서비스 OS 요구 패킷에 패키징한다. 이어, 블록(716)에서, SOS 가상 NIC 드라이버(316)는 새로운 서비스 OS 요구 패킷을 서비스 OS 네트워크 스택(314)에 넘겨준다. 이어서, 블록(718)에서, 브리지 드라이버(502)는 새로운 서비스 OS 요구 패킷을 물리 NIC 드라이버(318)에 라우팅한다. 블록(720)에서, 새로운 서비스 OS 요구 패킷은 물리 NIC 드라이버에 의해 네트워크 인터페이스 상에서 전송된다.
도 8과 도 9는 본 발명의 실시예에 따른 네트워크 요구 패킷 수신 처리의 순서도이다. 블록(800)에서, 물리 NIC 드라이버(318)가 적어도 하나의 네트워크 패킷을 물리 NIC 장치(322)로부터 수신하고 이 네트워크 패킷을 서비스 OS(216) 내부의 SOS 네트워크 스택(314)에 넘겨준다. 블록(802)에서, 네트워크 스택 내부의 브리지 드라이버(502)가 착신 패킷을 서비스 OS 내의 SOS 가상 NIC 드라이버(316)에 라우팅한다. 블록(804)에서, 고객 OS(COS)(210)와 VMM(204)이 준비되었는지를 SOS 가상 NIC 드라이버(316)에 의해 결정하는 점검이 수행될 수 있다. 고객 OS 또는 VMM(또는 둘 다)이 준비되지 않았다면, 블록(806)에서 처리과정을 계속하여, 오류 메시지가 보고되고 제어는 서비스 OS에 반환될 수 있다. 고객 OS와 VMM이 준비되었으면, 블록(814)에서, 공유 메모리 내에 이용 가능한 자유 블록이 있는지 점검할 수 있다. 이용 가능한 자유 블록이 없다면, 블록(806)에서 처리과정을 계속하고, 오류 메시지가 보고될 수 있다. 이용 가능한 자유 블록이 있다면, 도 9의 블록(902)에서 처리과정을 계속한다.
도 9의 블록(902)에서, SOS 가상 NIC 드라이버(316)는 수신된 네트워크 패킷의 MAC 프레임을 공유 메모리(504) 내의 자유 블록에 복사한다. 블록(904)에서, 새로 채워진 블록을 수신(RX) 대기열(508)에 첨부할 수 있다. 이어, 블록(906)에서, SOS 가상 NIC 드라이버(316)는 VMCALL 명령(514)을 호출하여 VMM(204)을 경유하여 고객 OS(210)에 통보한다. 블록(908)에서, VMM은 고객 OS에 인터럽트(512)를 삽입한다. 이에 응답하여, 고객 OS 내의 COS 가상 NIC 드라이버(308)는 블록(910)에서 인터럽트를 수신하고, 블록(912)에서 수신(RX) 대기열(508) 내의 다음 노드를 인출한다. 블록(914)에서, COS 가상 NIC 드라이버(308)는 수신(RX) 대기열 내의 다음 노드로부터의 MAC 프레임 정보를 새로운 고객 OS 응답 패킷에 패키징한다. 이어, 블록(916)에서, COS 가상 NIC 드라이버(308)는 새로운 응답 패킷을 고객 OS 네트워크 스택(306)에 넘겨주고, 나아가 애플리케이션(304)에 넘겨준다.
따라서 본 발명의 실시예들은 고객 OS에서 구동되는 사용자의 애플리케이션들이 네트워크에 대한 접근을 필요로 할 때 다수의 가상 머신들 사이에서 하나의 물리 NIC 장치를 공유할 수 있다. 추가의 물리 NIC 장치를 설치할 필요는 없다.
당업자라면, 본 발명의 범위에서 벗어나지 않으면서 단일의 물리 NIC 장치에 다수의 가상 머신의 안전한 접근을 제공하기 위해 서로 다른 방식을 선택적으로 구현할 수 있을 것이다. 또한 당업자는 개시된 발명을 컴퓨터 시스템 또는 프로그래밍 환경의 부분적인 또는 완전한 가상화를 이용할 수 있고 순수 소프트웨어 또는 하드웨어 지원되는 서로 다른 유형의 가상화된 환경 및 가상화 시스템에 적용할 수 있음을 알 것이다.
또한 당업자는 고객 OS 및 상응하는 고객 VM의 수가 2보다 크고 구현 종속적일 수 있음을 인식할 것이다. 아울러, 2 이상의 고객 VM이 동시에 구동될 때, 하나의 고객 VM이 (예컨대 Microsoft Windows 7과 같은) 한 종류의 OS를 구동하고 다른 고객 VM이 (예컨대 Linux와 같은) 다른 종류의 OS를 구동할 수 있다.
더욱이, 당업자는 본 발명의 실시예는 그 밖의 방식으로 다양한 프로그램 언어를 사용하여 구현될 수 있다는 것을 인식할 것이다.
본 명세서에 기재된 기술은 특정한 하드웨어 또는 소프트웨어 구성에 한정되지 않는다. 이들은 모든 컴퓨팅 또는 처리 환경에서 이용할 수 있다. 이 기술은 하드웨어, 소프트웨어, 펌웨어 컴포넌트, 또는 이들의 조합에 내장된 로직으로 구현될 수 있다. 이 기술은 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장요소를 포함하는) 이 프로세서가 판독할 수 있는 저장매체, 적어도 하나의 입력 장치, 및 하나 이상의 출력장치를 각각 포함하는 이동식 또는 고정식 컴퓨터, 개인 휴대 정보 단말기(PDA), 셋톱박스, 휴대전화 및 무선 호출기, 및 그 밖의 전자장치와 같은 프로그램 가능한 머신에서 실행되는 프로그램으로 구현될 수 있다. 프로그램 코드는 전술한 기능을 수행하고 출력 정보를 발생시키도록 입력장치를 사용하여 입력된 데이터에 적용된다. 출력 정보는 하나 이상의 출력장치에 적용될 수 있다. 당업자라면 본 발명이 멀티코어 프로세서, 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성으로 실행될 수 있다는 것을 알 수 있다. 또한 본 발명은 태스크가 통신 네트워크를 통해 연결된 원격 처리 장치에 의해 수행될 수 있는 분산형 컴퓨팅 환경에서 실행될 수 있다.
각각의 프로그램은 처리 시스템과 통신하는 고도의 절차적 또는 객체지향 프로그램 언어로 구현될 수 있다. 하지만, 프로그램은 요구된다면 어셈블리언어 또는 기계언어로 구현될 수 있다. 어느 경우라도, 언어는 컴파일되거나 해석될 수 있다.
프로그램 명령을 사용하여, 명령으로 프로그램된 범용 또는 전용 처리 시스템이 본 명세서에 기재된 동작을 수행하게 할 수 있다. 이와 달리, 동작을 수행하기 위한 배선에 의해 접속된 로직을 포함하는 특정한 하드웨어 컴포넌트에 의해, 또는 프로그램된 컴퓨터 컴포넌트와 고객 하드웨어 컴포넌트의 모든 조합에 의해 동작을 수행할 수 있다. 본 명세서에 기재된 방법은 이 방법을 수행하도록 처리 시스템 또는 그 밖의 전자 장치를 프로그램하는데 사용될 수 있는 명령이 저장된 머신 판독형 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 명세서에 사용된 "머신 판독형 매체"란 용어는 머신에 의해 실행되기 위한 일련의 명령을 저장하거나 인코딩할 수 있고 머신으로 하여금 본 명세서에 기재된 방법 중의 하나를 수행하게 하는 모든 매체를 포함한다. 따라서 "머신 판독형 매체"란 용어는 고체 상태 메모리와 광 및 자기디스크를 포함하지만 이들로 한정되는 것은 아니다. 또한, (예컨대, 프로그램, 절차, 과정, 애플리케이션, 모듈, 로직 등의) 여러 가지 형태의 소프트웨어는 동작을 수행하거나 결과를 야기하는 것으로 해당 분야에 일반적으로 알려져 있다. 그와 같은 표현은 프로세서로 하여금 동작을 수행하게 하거나 결과를 야기하게 하는 처리 시스템에 의한 소프트웨어의 실행을 나타내는 속기적 방식일 뿐이다.
예시적인 실시예를 참조하여 본 발명을 설명하였지만, 이 설명은 한정적인 의미로 이해하도록 의도된 것은 아니다. 예시적인 실시예뿐만 아니라 본 발명이 속한 분야의 당업자라면 알 수 있는 본 발명의 그 밖의 실시예의 다양한 수정도 본 발명의 범위에 속하는 것으로 간주된다.

Claims (33)

  1. 다수의 가상 머신 사이에서 물리 네트워크 인터페이스 카드(NIC) 장치를 공유하는 방법으로서,
    컴퓨팅 시스템 상의 고객 가상 머신 내에서 구동되는 고객 운영체계(OS)의 가상 NIC 드라이버가 상기 컴퓨팅 시스템에 결합된 네트워크 상에서 물리 NIC 드라이버에 의해 전송되기 위한 고객 OS 요구 패킷을 수신하는 단계;
    상기 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하고 상기 블록을 상기 공유 메모리 내의 전송 대기열에 첨부하는 단계;
    서비스 가상 머신 내에서 구동되는 서비스 OS의 가상 NIC 드라이버가 상기 전송 대기열로부터 상기 블록을 인출하고 상기 일부를 서비스 OS 요구 패킷에 패키징하는 단계;
    상기 서비스 OS 요구 패킷을 상기 서비스 OS의 서비스 OS 네트워크 스택 컴포넌트에 넘겨주는 단계;
    상기 서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버가 상기 서비스 OS 요구 패킷을 상기 물리 NIC 드라이버에 라우팅하는 단계; 및
    상기 물리 NIC 드라이버가 상기 서비스 OS 요구 패킷을 상기 물리 NIC 장치를 경유해 상기 네트워크 상에서 송신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 고객 OS 가상 NIC 드라이버가 VMCALL 명령을 호출하여 상기 컴퓨팅 시스템의 가상 머신 관리자(VMM)로 하여금 상기 서비스 OS 가상 NIC 드라이버에게 고객 OS 요구 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM으로 하여금 인터럽트를 상기 서비스 OS 가상 NIC 드라이버에 삽입하게 하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 서비스 OS는 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 방법.
  4. 제1항에 있어서,
    상기 컴퓨팅 시스템 상의 제2 고객 가상 머신 내에서 구동되는 제2 고객 OS의 제2 가상 NIC 드라이버가 상기 물리 NIC 드라이버에 의해 전송되기 위한 제2 고객 OS 요구 패킷을 수신하고 상기 제2 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하며 상기 블록을 상기 공유 메모리 내의 상기 전송 대기열에 첨부하는 단계를 더 포함하고,
    상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되는 방법.
  5. 제4항에 있어서,
    상기 제1 고객 OS와 상기 제2 고객 OS는 서로 다른 OS인 방법.
  6. 제1항에 있어서,
    상기 일부는 매체 접근 제어 프레임 정보인 방법.
  7. 제2항에 있어서,
    상기 VMM은 상기 고객 OS와 상기 서비스 OS에 의해 접근 가능한 상기 전송 대기열을 위한 공유 메모리의 영역을 할당하는 방법.
  8. 복수의 머신 명령을 갖는 머신 판독가능한 매체를 포함하는 물품으로서,
    상기 명령들이 컴퓨팅 시스템 내부의 프로세서에 의해 실행될 때, 상기 명령들은,
    컴퓨팅 시스템 상의 고객 가상 머신 내에서 구동되는 고객 운영체계(OS)의 가상 네트워크 인터페이스 카드(NIC) 드라이버가 상기 컴퓨팅 시스템에 결합된 네트워크 상에서 물리 NIC 드라이버에 의해 전송되기 위한 고객 OS 요구 패킷을 수신하고;
    상기 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하고 상기 블록을 상기 공유 메모리 내의 전송 대기열에 첨부하고;
    서비스 가상 머신 내에서 구동되는 서비스 OS의 가상 NIC 드라이버가 상기 전송 대기열로부터 상기 블록을 인출하고 상기 일부를 서비스 OS 요구 패킷에 패키징하고;
    상기 서비스 OS 요구 패킷을 상기 서비스 OS의 서비스 OS 네트워크 스택 컴포넌트에 넘겨주고;
    상기 서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버가 상기 서비스 OS 요구 패킷을 상기 물리 NIC 드라이버에 라우팅하고;
    상기 물리 NIC 드라이버가 상기 서비스 OS 요구 패킷을 상기 물리 NIC 장치를 경유해 상기 네트워크 상에서 송신함으로써,
    다수의 가상 머신 사이에서 물리 NIC 장치를 공유하게 하는 물품.
  9. 제8항에 있어서,
    상기 고객 OS 가상 NIC 드라이버가 VMCALL 명령을 호출하여 상기 컴퓨팅 시스템의 가상 머신 관리자(VMM)로 하여금 상기 서비스 OS 가상 NIC 드라이버에게 고객 OS 요구 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM으로 하여금 인터럽트를 상기 서비스 OS 가상 NIC 드라이버에 삽입하게 하는 명령들을 더 포함하는 물품.
  10. 제8항에 있어서,
    상기 서비스 OS를 위한 상기 명령들은 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 물품.
  11. 제8항에 있어서,
    상기 컴퓨팅 시스템 상의 제2 고객 가상 머신 내에서 구동되는 제2 고객 OS의 제2 가상 NIC 드라이버가 상기 물리 NIC 드라이버에 의해 전송되기 위한 제2 고객 OS 요구 패킷을 수신하고 상기 제2 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하며 상기 블록을 상기 공유 메모리 내의 상기 전송 대기열에 첨부하게 하는 명령들을 더 포함하며,
    상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되는 물품.
  12. 다수의 가상 머신 사이에서 물리 네트워크 인터페이스 카드(NIC) 장치를 공유하기 위한 컴퓨팅 시스템으로서,
    고객 운영체계(OS)를 구동하는 고객 가상 머신 - 상기 고객 OS는 상기 컴퓨팅 시스템에 결합된 네트워크 상에서 상기 물리 NIC 장치에 의해 전송되기 위한 고객 OS 요구 패킷을 수신하고, 상기 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하며, 상기 블록을 상기 공유 메모리 내의 전송 대기열에 첨부하는 고객 OS 가상 NIC 드라이버를 포함함 -, 및
    서비스 OS를 구동하는 서비스 가상 머신
    을 포함하며,
    상기 서비스 OS는,
    상기 전송 대기열로부터 상기 블록을 인출하고 상기 일부를 서비스 OS 요구 패킷에 패키징하는 서비스 OS 가상 NIC 드라이버,
    상기 서비스 OS 가상 NIC 드라이버로부터 상기 서비스 OS 요구 패킷을 수신하는 서비스 OS 네트워크 스택 컴포넌트, 및
    상기 서비스 OS 네트워크 스택 컴포넌트로부터 상기 서비스 OS 요구 패킷을 수신하고 상기 서비스 OS 요구 패킷을 상기 물리 NIC 장치에 송신하는 물리 NIC 드라이버
    를 포함하는 컴퓨팅 시스템.
  13. 제12항에 있어서,
    가상 머신 관리자(VMM)를 더 포함하며, 상기 고객 OS 가상 NIC 드라이버는 VMCALL 명령을 호출하여 상기 VMM으로 하여금 상기 서비스 OS 가상 NIC 드라이버에게 고객 OS 요구 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM은 인터럽트를 상기 서비스 OS 가상 NIC 드라이버에 삽입하는 컴퓨팅 시스템.
  14. 제12항에 있어서,
    상기 서비스 OS는 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 컴퓨팅 시스템.
  15. 제12항에 있어서,
    상기 컴퓨팅 시스템 상의 제2 고객 가상 머신 내에서 구동되는 제2 고객 OS를 더 포함하며, 상기 제2 고객 OS는 제2 가상 NIC 드라이버를 포함하고, 상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되고, 상기 제2 가상 NIC 드라이버는 상기 물리 NIC 드라이버에 의해 전송되기 위한 제2 고객 OS 요구 패킷을 수신하고 상기 제2 고객 OS 요구 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하며 상기 블록을 상기 공유 메모리 내의 상기 전송 대기열에 첨부하는 컴퓨팅 시스템.
  16. 제15항에 있어서,
    상기 제1 고객 OS와 상기 제2 고객 OS는 서로 다른 OS인 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 VMM은 상기 고객 OS와 상기 서비스 OS에 의해 접근 가능한 상기 전송 대기열을 위한 공유 메모리의 영역을 할당하는 컴퓨팅 시스템.
  18. 다수의 가상 머신 사이에서 물리 네트워크 인터페이스 카드(NIC) 장치를 공유하는 방법으로서,
    컴퓨팅 시스템 상의 서비스 가상 머신 내에서 구동되는 서비스 운영체계(OS)의 물리 NIC 드라이버가 상기 컴퓨팅 시스템에 결합된 네트워크 상에서 상기 물리 NIC 장치에 의해 수신되는 네트워크 패킷을 수신하는 단계;
    서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버 컴포넌트가 상기 네트워크 패킷을 서비스 OS 가상 NIC 드라이버에 라우팅하는 단계;
    상기 서비스 OS 가상 NIC 드라이버가 상기 네트워크 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하고 상기 블록을 상기 공유 메모리 내의 수신 대기열에 첨부하는 단계;
    고객 가상 머신 내에서 구동되는 고객 OS의 가상 NIC 드라이버가 상기 수신 대기열로부터 상기 블록을 인출하고 상기 일부를 고객 OS 요구 패킷에 패키징하는 단계; 및
    상기 고객 OS 가상 NIC 드라이버가 상기 고객 OS 요구 패킷을 고객 OS 네트워크 스택 컴포넌트에 넘겨주는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    상기 서비스 OS 가상 NIC 드라이버가 VMCALL 명령을 호출하여 상기 컴퓨팅 시스템의 가상 머신 관리자(VMM)로 하여금 상기 고객 OS 가상 NIC 드라이버에게 네트워크 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM으로 하여금 인터럽트를 상기 고객 OS 가상 NIC 드라이버에 삽입하게 하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서,
    상기 서비스 OS는 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 방법.
  21. 제18항에 있어서,
    제2 고객 가상 머신 내에서 구동되는 제2 고객 OS의 가상 NIC 드라이버가 상기 수신 대기열로부터 상기 블록을 인출하고 상기 일부를 제2 고객 OS 요구 패킷에 패키징하는 단계; 및 상기 제2 고객 OS 가상 NIC 드라이버가 상기 제2 고객 OS 요구 패킷을 제2 고객 OS 네트워크 스택 컴포넌트에 넘겨주는 단계를 더 포함하며, 상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되는 방법.
  22. 제21항에 있어서,
    상기 제1 고객 OS와 상기 제2 고객 OS는 서로 다른 OS인 방법.
  23. 제18항에 있어서,
    상기 일부는 매체 접근 제어 프레임 정보인 방법.
  24. 제16항에 있어서,
    상기 VMM은 상기 고객 OS와 상기 서비스 OS에 의해 접근 가능한 상기 전송 대기열을 위한 공유 메모리의 영역을 할당하는, 방법.
  25. 복수의 머신 명령을 갖는 머신 판독가능한 매체를 포함하는 물품으로서,
    상기 명령들이 컴퓨팅 시스템 내부의 프로세서에 의해 실행될 때, 상기 명령들은,
    컴퓨팅 시스템 상의 서비스 가상 머신 내에서 구동되는 서비스 운영체계(OS)의 물리 네트워크 인터페이스 카드(NIC) 드라이버가 상기 컴퓨팅 시스템에 결합된 네트워크 상에서 물리 NIC 장치에 의해 수신되는 네트워크 패킷을 수신하고;
    서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버 컴포넌트가 상기 네트워크 패킷을 서비스 OS 가상 NIC 드라이버에 라우팅하고;
    상기 서비스 OS 가상 NIC 드라이버가 상기 네트워크 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하고 상기 블록을 상기 공유 메모리 내의 수신 대기열에 첨부하고;
    고객 가상 머신 내에서 구동되는 고객 OS의 가상 NIC 드라이버가 상기 수신 대기열로부터 상기 블록을 인출하고 상기 일부를 고객 OS 요구 패킷에 패키징하고;
    상기 고객 OS 가상 NIC 드라이버가 상기 고객 OS 요구 패킷을 고객 OS 네트워크 스택 컴포넌트에 넘겨줌으로써
    다수의 가상 머신 사이에서 물리 NIC 장치를 공유하게 하는 물품.
  26. 제25항에 있어서,
    상기 서비스 OS 가상 NIC 드라이버가 VMCALL 명령을 호출하여 상기 컴퓨팅 시스템의 가상 머신 관리자(VMM)로 하여금 상기 고객 OS 가상 NIC 드라이버에게 네트워크 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM으로 하여금 인터럽트를 상기 고객 OS 가상 NIC 드라이버에 삽입하게 하는 명령들을 더 포함하는 물품.
  27. 제25항에 있어서,
    상기 서비스 OS는 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 물품.
  28. 제25항에 있어서,
    제2 고객 가상 머신 내에서 구동되는 제2 고객 OS의 가상 NIC 드라이버가 상기 수신 대기열로부터 상기 블록을 인출하고 상기 일부를 제2 고객 OS 요구 패킷에 패키징하고; 상기 제2 고객 OS 가상 NIC 드라이버가 상기 제2 고객 OS 요구 패킷을 제2 고객 OS 네트워크 스택 컴포넌트에 넘겨주게 하는 명령들을 더 포함하며, 상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되는 물품.
  29. 다수의 가상 머신 사이에서 물리 네트워크 인터페이스 카드(NIC) 장치를 공유하기 위한 컴퓨팅 시스템으로서,
    서비스 운영체계(OS)을 구동하는 서비스 가상 머신 - 상기 서비스 OS는,
    상기 컴퓨팅 시스템에 결합된 네트워크 상에서 상기 물리 NIC 장치에 의해 수신되는 네트워크 패킷을 수신하는 물리 NIC 드라이버,
    상기 네트워크 패킷을 라우팅하는 서비스 OS 네트워크 스택 컴포넌트의 브리지 드라이버 컴포넌트, 및
    상기 브리지 드라이버 컴포넌트로부터 상기 네트워크 패킷을 수신하고, 상기 네트워크 패킷의 적어도 일부를 상기 컴퓨팅 시스템의 공유 메모리의 자유 블록에 복사하며, 상기 블록을 상기 공유 메모리 내의 수신 대기열에 첨부하는 서비스 OS 가상 NIC 드라이버
    를 포함함 - ; 및
    고객 OS를 구동하는 고객 가상 머신 - 상기 고객 OS는,
    상기 수신 대기열로부터 상기 블록을 인출하고 상기 일부를 고객 OS 요구 패킷에 패키징하는 고객 OS 가상 NIC 드라이버, 및
    상기 고객 OS 가상 NIC 드라이버로부터 상기 고객 OS 요구 패킷을 수신하는 고객 OS 네트워크 스택 컴포넌트
    를 포함함 -
    을 포함하는 컴퓨팅 시스템.
  30. 제29항에 있어서,
    가상 머신 관리자(VMM)를 더 포함하며, 상기 서비스 OS 가상 NIC 드라이버는 VMCALL 명령을 호출하여 상기 VMM으로 하여금 상기 고객 OS 가상 NIC 드라이버에게 요구 패킷이 이용 가능하다는 것을 통보하게 하며, 상기 VMM은 인터럽트를 상기 고객 OS 가상 NIC 드라이버에 삽입하는 컴퓨팅 시스템.
  31. 제29항에 있어서,
    상기 서비스 OS는 상기 컴퓨팅 시스템의 프로세서에 의해 제공된 보안 엔클레이브 세션 내에서 실행되는 컴퓨팅 시스템.
  32. 제29항에 있어서,
    상기 컴퓨팅 시스템 상의 제2 고객 가상 머신 내에서 구동되는 제2 고객 OS를 더 포함하며, 상기 제2 고객 OS는 제2 가상 NIC 드라이버와 제2 고객 OS 네트워크 스택 컴포넌트를 포함하고, 상기 제2 고객 가상 머신은 상기 제1 고객 가상 머신과 동시에 상기 컴퓨팅 시스템 상에서 구동되고, 상기 제2 가상 NIC 드라이버는 상기 수신 대기열로부터 블록을 인출하고 상기 일부를 고객 OS 요구 패킷에 패키징하며, 상기 고객 OS 네트워크 스택 컴포넌트는 상기 고객 OS 요구 패킷을 수신하는 컴퓨팅 시스템.
  33. 제32항에 있어서,
    상기 제1 고객 OS와 상기 제2 고객 OS는 서로 다른 OS인 컴퓨팅 시스템.
KR1020110060373A 2010-06-21 2011-06-21 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법 KR101444984B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/819,948 2010-06-21
US12/819,948 US8739177B2 (en) 2010-06-21 2010-06-21 Method for network interface sharing among multiple virtual machines

Publications (2)

Publication Number Publication Date
KR20110139151A true KR20110139151A (ko) 2011-12-28
KR101444984B1 KR101444984B1 (ko) 2014-09-26

Family

ID=44484884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110060373A KR101444984B1 (ko) 2010-06-21 2011-06-21 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법

Country Status (5)

Country Link
US (1) US8739177B2 (ko)
EP (1) EP2398199B1 (ko)
JP (1) JP5275407B2 (ko)
KR (1) KR101444984B1 (ko)
CN (1) CN102291428B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10902112B2 (en) 2015-08-25 2021-01-26 Sekisui House, Ltd. System including a hypervisor
WO2023136373A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2601776B1 (en) * 2010-08-06 2015-10-28 Citrix Systems, Inc. Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device
JP5548095B2 (ja) * 2010-10-26 2014-07-16 日本電信電話株式会社 仮想制御プログラム、情報処理装置及び仮想制御方法
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags in a virtual networking environment
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US9021475B2 (en) * 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
US8769533B2 (en) * 2011-07-18 2014-07-01 International Business Machines Corporation Check-point based high availability: network packet buffering in hardware
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US8863124B1 (en) * 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
CN102609298B (zh) * 2012-01-11 2016-01-13 中国科学技术大学苏州研究院 基于硬件队列扩展的网卡虚拟化系统及其方法
EP2811403A4 (en) * 2012-02-03 2015-10-07 Fujitsu Ltd CONTROL PROGRAM FOR A VIRTUAL MACHINE, VIRTUAL MACHINE CONTROL METHOD AND INFORMATION PROCESSING DEVICE
US8930690B2 (en) 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
US9092269B2 (en) 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US9912517B1 (en) 2012-08-23 2018-03-06 Amazon Technologies, Inc. Optimized deployment and execution of programs in a distributed computing environment
US9588788B1 (en) * 2012-08-23 2017-03-07 Amazon Technologies, Inc. Optimized communication between program components executing in virtual machines
JP5977430B2 (ja) 2012-10-19 2016-08-24 株式会社日立製作所 ストレージシステム、ストレージシステムの制御方法及びストレージコントローラ
US9519803B2 (en) * 2012-11-30 2016-12-13 Intel Corporation Secure environment for graphics processing units
US9009854B2 (en) 2012-12-19 2015-04-14 Intel Corporation Platform-hardened digital rights management key provisioning
US20140201383A1 (en) * 2013-01-16 2014-07-17 Microsoft Corporation Distributed description over multiple links
US9141416B2 (en) 2013-03-15 2015-09-22 Centurylink Intellectual Property Llc Virtualization congestion control framework for modifying execution of applications on virtual machine based on mass congestion indicator in host computing system
JP6050528B2 (ja) * 2013-03-15 2016-12-21 インテル コーポレイション セキュリティ・コプロセッサ・ブート性能
US9430259B2 (en) 2013-03-15 2016-08-30 Centurylink Intellectual Property Llc Virtualization congestion control framework for modifying execution of applications on virtual machine based on mass congestion indicator in host computing system
CN103236988B (zh) * 2013-05-15 2016-02-03 华为技术有限公司 Sr-iov网卡缓冲资源的分配方法及装置
US10389577B2 (en) 2013-08-14 2019-08-20 Centurylink Intellectual Property Llc Ethernet carrier group alarm (CGA)
US9843540B2 (en) * 2013-08-26 2017-12-12 Vmware, Inc. Traffic and load aware dynamic queue management
US11038954B2 (en) * 2013-09-18 2021-06-15 Verizon Patent And Licensing Inc. Secure public connectivity to virtual machines of a cloud computing environment
JP6117068B2 (ja) 2013-09-20 2017-04-19 株式会社東芝 情報処理装置、およびプログラム
US9864623B2 (en) 2013-11-21 2018-01-09 Centurylink Intellectual Property Llc Physical to virtual network transport function abstraction
US9288135B2 (en) * 2013-12-13 2016-03-15 International Business Machines Corporation Managing data flows in software-defined network using network interface card
EP3087696B1 (en) * 2013-12-23 2019-09-04 Netlinkz Technology PTY Ltd System and method for multiple concurrent virtual networks
IN2013CH05983A (ko) * 2013-12-23 2015-06-26 Ineda Systems Pvt Ltd
JP5960186B2 (ja) * 2014-04-03 2016-08-02 日本電信電話株式会社 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム
US10356225B2 (en) 2014-04-03 2019-07-16 Centurylink Intellectual Property Llc System and method for implementing isolated service overlays between provider network service point and customer premises
US9998320B2 (en) 2014-04-03 2018-06-12 Centurylink Intellectual Property Llc Customer environment network functions virtualization (NFV)
US9501222B2 (en) * 2014-05-09 2016-11-22 Micron Technology, Inc. Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9912787B2 (en) 2014-08-12 2018-03-06 Red Hat Israel, Ltd. Zero-copy multiplexing using copy-on-write
US10225327B2 (en) 2014-08-13 2019-03-05 Centurylink Intellectual Property Llc Remoting application servers
US9898318B2 (en) 2014-08-15 2018-02-20 Centurylink Intellectual Property Llc Multi-line/multi-state virtualized OAM transponder
CN104298546A (zh) * 2014-08-25 2015-01-21 宇龙计算机通信科技(深圳)有限公司 一种硬件通信装置的共享方法及终端
US9367343B2 (en) 2014-08-29 2016-06-14 Red Hat Israel, Ltd. Dynamic batch management of shared buffers for virtual machines
WO2016065643A1 (zh) 2014-10-31 2016-05-06 华为技术有限公司 一种网卡配置方法及资源管理中心
CN104598294B (zh) * 2015-01-07 2021-11-26 乾云数创(山东)信息技术研究院有限公司 用于移动设备的高效安全的虚拟化方法及其设备
US9948579B1 (en) * 2015-03-30 2018-04-17 Juniper Networks, Inc. NIC-based packet assignment for virtual networks
WO2016171739A1 (en) 2015-04-23 2016-10-27 Hewlett-Packard Development Company, L.P. Multi-processor computing systems
US10673978B2 (en) 2015-05-06 2020-06-02 Centurylink Intellectual Property Llc Method and system for implementing network experience shifting using shared objects
US10481938B2 (en) 2015-05-06 2019-11-19 Centurylink Intellectual Property Llc System and method for implementing network experience shifting
US9838277B2 (en) * 2015-06-25 2017-12-05 Keysight Technologies Singapore (Holdings) Pte Ltd Packet copy management for service chain processing within virtual processing systems
US9870248B2 (en) * 2015-08-13 2018-01-16 Red Hat Israel, Ltd. Page table based dirty page tracking
CN105141684A (zh) * 2015-08-18 2015-12-09 北京汉柏科技有限公司 一种云计算操作系统及其部署架构
US9882833B2 (en) 2015-09-28 2018-01-30 Centurylink Intellectual Property Llc Intent-based services orchestration
US10078528B2 (en) 2015-10-06 2018-09-18 Centurylink Intellectual Property Llc Virtual machine-to-port peripheral device driver for implementing communications between virtual machines and client devices
US10185679B2 (en) 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
US9985827B2 (en) * 2016-05-24 2018-05-29 Futurewei Technologies, Inc. Automated generation of deployment workflows for cloud platforms based on logical stacks
WO2018008605A1 (ja) * 2016-07-04 2018-01-11 株式会社Seltech 人工知能を有するシステム
CN108228309B (zh) * 2016-12-21 2021-11-23 腾讯科技(深圳)有限公司 基于虚拟机的数据包发送和接收方法及装置
US10263832B1 (en) 2016-12-29 2019-04-16 Juniper Networks, Inc. Physical interface to virtual interface fault propagation
WO2018221118A1 (ja) * 2017-06-01 2018-12-06 株式会社Seltech 仮想ネットワークシステム、および仮想ネットワークシステムの通信方法
US10505758B2 (en) 2017-07-06 2019-12-10 Huawei Technologies Co., Ltd. Systems and methods for sharing network interfaces between containers in an embedded computing device
CN107682162A (zh) * 2017-10-13 2018-02-09 广州视源电子科技股份有限公司 电子设备、网络共享方法及装置
US10872145B2 (en) * 2017-10-25 2020-12-22 International Business Machines Corporation Secure processor-based control plane function virtualization in cloud systems
US10901809B2 (en) 2018-01-16 2021-01-26 Qsc, Llc Audio, video and control system implementing virtual machines
CN111630494B (zh) * 2018-01-16 2023-04-21 Qsc公司 基于云的音频/视频操作系统
US10990374B2 (en) * 2018-09-14 2021-04-27 Microsofttechnology Licensing, Llc Virtual machine update while keeping devices attached to the virtual machine
US10833949B2 (en) 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
CN110442431A (zh) * 2019-08-12 2019-11-12 安徽赛福贝特信息技术有限公司 一种云计算系统中虚拟机的创建方法
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11520530B2 (en) * 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
EP3872634A1 (en) * 2020-02-27 2021-09-01 Mitsubishi Electric R&D Centre Europe B.V. Multicore system on chip architecture
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
GB2594534B (en) * 2020-04-30 2022-09-21 Metaswitch Networks Ltd Processing user traffic in a virtualised network
US11856097B2 (en) * 2020-12-23 2023-12-26 Oracle International Corporation Mechanism to provide customer VCN network encryption using customer-managed keys in network virtualization device
US11848918B2 (en) 2020-12-23 2023-12-19 Oracle International Corporation End-to-end network encryption from customer on-premise network to customer virtual cloud network using customer-managed keys
US12005719B2 (en) 2021-10-28 2024-06-11 Hewlett-Packard Development Company, L.P. Printing system
CN114398156B (zh) * 2022-03-24 2022-09-09 阿里云计算有限公司 数据通道构建方法及装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620955B1 (en) 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US20060069828A1 (en) * 2004-06-30 2006-03-30 Goldsmith Michael A Sharing a physical device among multiple clients
GB0425181D0 (en) 2004-11-15 2004-12-15 Unilever Plc Fabric treatment composition
US7865908B2 (en) 2005-03-11 2011-01-04 Microsoft Corporation VM network traffic monitoring and filtering on the host
JP4622835B2 (ja) 2005-12-07 2011-02-02 株式会社日立製作所 仮想計算機システム及びそのネットワーク通信方法
CN100428164C (zh) 2006-01-23 2008-10-22 联想(北京)有限公司 一种虚拟机系统及其设备访问方法
US7917750B2 (en) 2006-07-25 2011-03-29 Hewlett-Packard Development Company, L.P. Virtual user authentication system and method
US7876765B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Method for supporting IP network interconnectivity between partitions in a virtualized environment
WO2008077628A2 (en) 2006-12-22 2008-07-03 Virtuallogix Sa System for enabling multiple execution environments to share a device
CN101241445B (zh) 2007-02-08 2011-07-27 联想(北京)有限公司 虚拟机系统及其访问显卡的方法
JP4488077B2 (ja) 2008-02-29 2010-06-23 日本電気株式会社 仮想化システム、仮想化方法、及び仮想化用プログラム
JP4854710B2 (ja) 2008-06-23 2012-01-18 株式会社東芝 仮想計算機システム及びネットワークデバイス共有方法
JP2010039626A (ja) 2008-08-01 2010-02-18 Fujitsu Ltd ネットワーク設定プログラム,ネットワーク設定方法及びネットワーク設定装置
WO2011078855A1 (en) 2009-12-22 2011-06-30 Intel Corporation Method and apparatus to provide secure application execution

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10902112B2 (en) 2015-08-25 2021-01-26 Sekisui House, Ltd. System including a hypervisor
WO2023136373A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Also Published As

Publication number Publication date
CN102291428A (zh) 2011-12-21
KR101444984B1 (ko) 2014-09-26
JP2012003747A (ja) 2012-01-05
JP5275407B2 (ja) 2013-08-28
EP2398199B1 (en) 2013-07-10
CN102291428B (zh) 2014-07-09
EP2398199A1 (en) 2011-12-21
US8739177B2 (en) 2014-05-27
US20110314469A1 (en) 2011-12-22

Similar Documents

Publication Publication Date Title
KR101444984B1 (ko) 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법
US10938784B2 (en) Dedicating hardware devices to virtual machines in a computer system
US9213567B2 (en) System and method for controlling the input/output of a virtualized network
EP3281146B1 (en) Isolating guest code and data using multiple nested page tables
EP2831732B1 (en) System and method for supporting live migration of virtual machines in an infiniband network
Liu et al. High Performance VMM-Bypass I/O in Virtual Machines.
US8537706B2 (en) Preserving traffic class priority QoS with self-virtualizing input/output device
US10768958B2 (en) Using virtual local area networks in a virtual computer system
US8091086B1 (en) System and method for virtualization using an open bus hypervisor
Kadav et al. Live migration of direct-access devices
US10579412B2 (en) Method for operating virtual machines on a virtualization platform and corresponding virtualization platform
Shea et al. Network interface virtualization: challenges and solutions
US20120198542A1 (en) Shared Security Device
Imada Mirageos unikernel with network acceleration for iot cloud environments
US20220156103A1 (en) Securing virtual machines in computer systems
Jin et al. Virtual switching without a hypervisor for a more secure cloud
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
CN108875360A (zh) 基于kvm虚拟化的网络服务隔离设计
US9043792B1 (en) Virtual local area network (vlan) coordinator providing access to vlans
Ren et al. Residency-aware virtual machine communication optimization: Design choices and techniques
Gebhardt et al. Challenges for inter virtual machine communication
US10659391B1 (en) Methods and apparatus to preserve packet order in a multi-fabric virtual network
Ning et al. Virtualization I/O optimization based on shared memory
Nakajima et al. High-performance vNIC framework for hypervisor-based NFV with userspace vSwitch
Koh et al. Improving virtualized windows network performance by delegating network processing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee