KR20150081497A - 네트워크 인터페이스 가상화 장치 및 방법 - Google Patents

네트워크 인터페이스 가상화 장치 및 방법 Download PDF

Info

Publication number
KR20150081497A
KR20150081497A KR1020140001033A KR20140001033A KR20150081497A KR 20150081497 A KR20150081497 A KR 20150081497A KR 1020140001033 A KR1020140001033 A KR 1020140001033A KR 20140001033 A KR20140001033 A KR 20140001033A KR 20150081497 A KR20150081497 A KR 20150081497A
Authority
KR
South Korea
Prior art keywords
input
packet data
output
unit
information
Prior art date
Application number
KR1020140001033A
Other languages
English (en)
Other versions
KR101572689B1 (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 (주)구름네트웍스
Priority to KR1020140001033A priority Critical patent/KR101572689B1/ko
Priority to US15/108,229 priority patent/US10108566B2/en
Priority to PCT/KR2014/013042 priority patent/WO2015102372A1/ko
Publication of KR20150081497A publication Critical patent/KR20150081497A/ko
Application granted granted Critical
Publication of KR101572689B1 publication Critical patent/KR101572689B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Human Computer Interaction (AREA)

Abstract

본 발명의 실시예에 따른 네트워크 인터페이스 가상화 장치는, 패킷 데이터를 임시 저장하는 입출력 버퍼부; 네트워크와 상기 입출력 버퍼부 간의 패킷 데이터를 전송하고, 상기 네트워크로부터의 패킷 데이터를 상기 입출력 버퍼부에 저장한 경우 저장 알림 신호를 생성 출력하는 입출력부; 제어신호에 따라 상기 입출력 버퍼부와 컴퓨터 메모리 간에 패킷 데이터를 전송하는 DMA 입출력부; 상기 컴퓨터 메모리 상에 기설정된 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)를 구현하는 가상 NIC 정보가 저장된 가상화 정보부; 및 상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 상기 입출력 버퍼부, 상기 입출력부, 상기 DMA 입출력부 및 상기 가상화 정보부를 제어하는 상기 제어신호를 출력하는 제어부를 포함함으로써, 하나의 물리적인 네트워크 인터페이스 카드를 이용하여 다수의 가상 네트워크 인터페이스 카드를 만들 수 있고, 또한 가상 네트워크 인터페이스 카드를 사용함에 있어 메모리 복사를 최소화하고, 네트워크 대역폭을 분리함으로써 안정적인 패킷 데이터의 전송이 가능하다.

Description

네트워크 인터페이스 가상화 장치 및 방법{Apparatus for Virtualizing a Network Interface and Method thereof}
본 발명은 네트워크 인터페이스 가상화 장치 및 방법에 관한 것으로, 더욱 상세하게는 네트워크 인터페이스 카드를 이용한 네트워크 인터페이스 가상화 장치 및 방법에 관한 것이다.
가상화 기술분야에 있어서, 호스트 가상화 기술은 수년간 급격한 발전을 이루어 기술적으로 거의 완성 단계에 이르렀다. 그러나 네트워크 가상화에 있어서, 네트워크 장치는 대부분의 기능이 H/W에 의존적이기 때문에 가상화 하기 매우 어려우며, 패킷 데이터의 전송은 고속으로 이루어지는 특징상 S/W로 가상화 기능을 구현할 경우 가상화된 네트워크 장치의 성능이 매우 떨어진다.
대한민국 등록특허 제10-1232211호 및 대한민국 등록특허 제10-1275293호와, 대한민국 공개특허 제10-2011-0046240호에서도 네트워크 장치의 가상화를 구현하고 있으나 가상 네트워크를 지원하는 장치의 구조에 초점을 맞추고 있다.
대한민국 등록특허 제10-1232211호 대한민국 등록특허 제10-1275293호 대한민국 공개특허 제10-2011-0046240호
본 발명의 목적은, 하나의 물리적인 네트워크 인터페이스 카드를 가상화시켜 복수 개의 가상 네트워크 인터페이스 카드를 구현하는 네트워크 인터페이스 가상화 장치 및 방법을 제공하는 데 있다.
본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 장치는, 패킷 데이터를 임시 저장하는 입출력 버퍼부; 네트워크와 상기 입출력 버퍼부 간의 패킷 데이터를 전송하고, 상기 네트워크로부터의 패킷 데이터를 상기 입출력 버퍼부에 저장한 경우 저장 알림 신호를 생성 출력하는 입출력부; 제어신호에 따라 상기 입출력 버퍼부와 컴퓨터 메모리 간에 패킷 데이터를 전송하는 DMA 입출력부; 상기 컴퓨터 메모리 상에 기설정된 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)를 구현하는 가상 NIC 정보가 저장된 가상화 정보부; 및 상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 상기 입출력 버퍼부, 상기 입출력부, 상기 DMA 입출력부 및 상기 가상화 정보부를 제어하는 상기 제어신호를 출력하는 제어부를 포함한다.
본 실시예에서, 상기 입출력 버퍼부는, 상기 입출력부로부터 패킷 데이터를 전송받아 임시 저장하는 하나의 입력 버퍼부와, 상기 입출력부로 전송할 패킷 데이터를 임시 저장하고 있는 하나의 출력 버퍼부를 포함한다.
본 실시예에서, 상기 입출력부는, 상기 네트워크로부터 패킷 데이터를 수신하여 상기 입력 버퍼부에 저장하고, 상기 저장 알림 신호를 생성하여 상기 제어부로 출력하는 입력부와, 상기 출력 버퍼부로부터 상기 네트워크로 패킷 데이터를 출력한 후 삭제하는 출력부를 포함하고,
상기 DMA 입출력부는, 상기 가상화 정보에 기반하여, 상기 입출력 버퍼부에서 전송받은 패킷 데이터를 컴퓨터 메모리로 전송하는 DMA 입력부와, 상기 컴퓨터 메모리 상의 패킷 데이터를 상기 출력 버퍼부로 전송하는 DMA 출력부를 포함한다.
본 실시예에서, 상기 가상화 정보부의 NIC 가상화 정보는, 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 포함한다.
본 실시예에서, 상기 제어부는 상기 입력 버퍼부의 패킷 데이터의 Destination MAC 또는 VLAN 정보와 상기 NIC 가상화 정보에 따라 상기 가상 NIC을 선택하고, 상기 가상 NIC의 입력 ring 버퍼 주소를 얻는다.
본 실시예에서, 상기 제어부는 상기 DMA 입출력부를 통해 상기 가상 NIC의 입력 ring 버퍼 주소에 상기 패킷 데이터을 쓰고, 상기 입력 버퍼부에서 해당 패킷 데이터를 삭제하고, 상기 가상 NIC의 입력 대역폭 정보를 갱신한다.
본 실시예에서, 상기 제어부는 Destination MAC이 멀티캐스트(multicsat)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC를 선택한다.
본 실시예에서, 상기 제어부는 여분의 입력 ring 버퍼 주소가 없거나, Destination MAC 또는 VLAN 정보에 해당되는 가상 NIC이 없을 경우, 상기 입력 버퍼부의 패킷 데이터를 버린다.
본 실시예에서, 상기 제어부는 상기 패킷 데이터의 대역폭이 상기 가상 NIC의 입력 대역폭을 초과할 경우 상기 입력 버퍼부의 패킷 데이터를 버린다.
본 실시예에서, 상기 제어부는 상기 패킷 데이터의 Destination MAC이 상기 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우 상기 입력 버퍼부의 패킷 데이터를 버린다.
본 실시예에서, 상기 제어부는 상기 DMA 입출력부를 통해 가상 NIC의 출력 ring 버퍼에서 패킷 데이터를 상기 출력 버퍼부로 복사하고 컴퓨터의 CPU에 패킷을 가져갔다는 정보를 전달한다.
본 실시예에서, 상기 제어부는 상기 입출력부로 패킷 데이터를 출력하라고 해당 가상 NIC에 명령하고, 출력 대역폭 정보를 갱신한다.
본 실시예에서, 상기 입출력부는 상기 출력 버퍼부의 패킷 데이터를 상기 네트워크로 출력한 후 해당 패킷데이터를 삭제한다.
본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 방법은, 컴퓨터 CPU가 네트워크 인터페이스 카드(Network Interface Card, NIC)의 메모리 상에 가상 NIC 정보를 생성하는 단계; 상기 가상 NIC 정보에 기반하여, NIC의 제어부가 단일 입출력 버퍼부를 이용하여 컴퓨터 메모리 상에 기설정된 복수 개의 가상 NIC으로 패킷 데이터를 입력하는 단계; 가상 NIC에서 패킷 데이터를 네트워크로 출력하고, 상기 가상 NIC의 출력 대역폭 정보를 갱신하는 단계; 및 상기 컴퓨터 CPU가 상기 NIC의 메모리 상에 생성된 상기 가상 NIC 정보를 삭제하는 단계를 포함한다.
본 실시예에서, 상기 가상 NIC 정보를 생성하는 단계에서는, 상기 컴퓨터의 CPU가 상기 NIC의 메모리 상에 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 생성한다.
본 실시예에서, 상기 가상 NIC으로 패킷 데이터를 입력하는 단계는, 상기 패킷 데이터의 Destination MAC 또는 VLAN 정보와 상기 가상 NIC 정보에 따라 가상 NIC을 선택하고, 상기 선택된 가상 NIC의 입력 ring 버퍼 주소를 얻는 단계; 및 상기 가상 NIC의 입력 ring 버퍼에 상기 패킷 데이터을 쓰고, 상기 가상 NIC의 입력 대역폭 정보를 갱신하는 단계를 포함한다.
본 실시예에서, 상기 입력 ring 버퍼 주소를 얻는 단계에서는, Destination MAC이 멀티캐스트(multicsat)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC을 선택한다.
본 실시예에서, 상기 입력 ring 버퍼 주소를 얻는 단계에서는, 상기 패킷 데이터의 대역폭이 상기 가상 NIC의 입력 대역폭을 초과할 경우 상기 패킷 데이터를 버린다.
본 실시예에서, 상기 입력 ring 버퍼 주소를 얻는 단계에서는, 상기 패킷 데이터의 Destination MAC이 상기 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우 상기 패킷 데이터를 버린다.
본 실시예에서, 상기 출력 대역폭 정보를 갱신하는 단계에서는, 상기 제어부가 가상 NIC의 출력 ring 버퍼의 패킷 데이터를 상기 NIC의 DMA 출력부를 통해 출력 버퍼로 복사하고, 상기 컴퓨터의 CPU에 패킷 데이터 전송 정보를 전달한다.
본 실시예에서, 상기 출력 대역폭 정보를 갱신하는 단계에서는, 상기 제어부는 상기 패킷 데이터의 Destination MAC이 상기 입출력 가능한 MAC 주소 목록에 없으면 상기 패킷데이터를 버린다.
본 실시예에서, 상기 출력 대역폭 정보를 갱신하는 단계에서는, 상기 제어부는 NIC의 출력부에 패킷 데이터의 출력을 명령하고, 상기 가상 NIC의 출력 대역폭 정보를 갱신한다.
본 실시예에서, 상기 출력 대역폭 정보를 갱신하는 단계에서는, 상기 NIC의 출력부는 출력 버퍼의 패킷 데이터를 상기 네트워크로 출력한 후 상기 출력 버퍼에서 해당 패킷 데이터를 삭제한다.
본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 최소의 H/W를 이용하여 가상 네트워크 인터페이스 컴퓨터의 메모리 상에 특별한 구조를 갖는 메모리 공간을 할당하고, 그 공간과 구조를 가상의 네트워크 인터페이스 카드로 활용할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 다수의 가상 네트워크 인터페이스 카드를 사용하기 위해 서로 다른 MAC 주소를 사용해 가상 네트워크 인터페이스 카드를 구분할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 가상 네트워크 인터페이스 카드를 지원하는 PCI(Peripheral Component Interconnect)에 가상 네트워크 인터페이스 공간 정보를 설정함으로써 PCI 장치와 컴퓨터의 메모리 간 DMA(Direct Memory Access) 기능을 활용할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 DMA 기능을 이용해 패킷 도착 시 가상 네트워크 인터페이스 카드로 바로 패킷 데이터를 씀으로써 전송 속도를 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 Multicast 패킷인 경우 별도의 멀티케스트 Rx 버퍼를 사용함으로써 CPU가 고속으로 패킷을 복사하게 할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 가상 네트워크 인터페이스 가드의 대역폭을 설정함으로써 Rx와 Tx에서 패킷 데이터의 대역폭을 제어할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 Destination MAC Masking을 사용함으로써 불필요한 패킷 데이터를 제거할 수 있다.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 컴퓨터에서 가상 네트워크 인터페이스 카드의 Rx 버퍼에 패킷 데이터를 생성해 넣을 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 장치의 블록도 이고,
도 2 내지 4는 본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 방법의 흐름도이고,
도 5는 네트워크 인터페이스 가상화를 H/W적으로 처리하는 패킷 엔진 구조의 블록도이고,
도 6은 네트워크 인터페이스 가상화를 S/W적으로 처리하는 패킷 엔진 구조의 블록도이고,
도 7은 본 발명의 실시예가 적용된 가상 네트워크 인터페이스 시스템의 블록도이고,
도 8는 몇개의 시스템에서 본 발명의 실시예가 적용된 네트워크 인터페이스 가상화 방법과 기존의 네트워크 가상화 방법의 성능 비교도이다
이하의 실시예들은 본 발명의 구성 요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성 요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성 요소 또는 특징은 다른 구성 요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성 요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.
본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성 요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.
이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 장치의 블록도 이고, 도 2 내지 4는 본 발명의 일실시예에 따른 네트워크 인터페이스 가상화 방법의 흐름도이다.
도 1 내지 도 4를 참조하면, 본 발명의 실시예에 따른 네트워크 인터페이스 가상화 장치 제어부(140), 가상화 정보부(110), DMA 입력부(121)와 DMA 출력부(122)를 구비한 DMA 입출력부(120), 입력 버퍼부(131)와 출력 버퍼부(132)를 구비한 입출력 버퍼부(130), 및 입력부(151)와 출력부(152)를 구비한 입출력부(150)를 포함한다. 여기서, 입출력 버퍼부(130)는, 각각 하나씩의 입력 버퍼부(131)와, 출력 버퍼부(132)를 구비하는 것이 바람직하다.
우선, 상기 가상화 장치가 장착되어 구현되거나 연동할 컴퓨터(160)는 적어도 CPU(161)와 메모리(162)를 구비하고, 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)가 영역이 메모리(162) 상에 미리 설정된다.
가상화 정보부(11)는 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 포함하는 NIC 가상화 정보가 저정된다. 여기서, 가상화 정보부는 네트워크 인터페이스 카드에 탑재된 메모리로 구현될 수 있다.
입력부(151)는 네트워크로부터 패킷 데이터를 전송받아 입력 버퍼부(131)에 상기 패킷 데이터를 쓰고, 저장 알림 신호를 생성하여 제어부(140)에 출력한다. 입력 버퍼부(131)는 입력부(151)에서 전송된 여러 개의 패킷 데이터를 임시로 보관한다. DMA 입력부(121)는 가상화 정보부(110)의 정보를 기반으로 입력 버퍼부(131)의 패킷 데이터를 컴퓨터의 메모리(162)로 전송한다.
DMA 출력부(122)는 가상화 정보부(110)의 정보를 기반으로 컴퓨터 메모리(162) 상의 패킷 데이터를 출력 버퍼부(132)로 복사하며, 출력 버퍼부(132)는 출력부(152)가 패킷 데이터를 출력하도록 상기 패킷 데이터를 임시로 보관한다. 출력부(152)는 출력 버퍼부(132)의 패킷 데이터를 네트워크로 전송한다.
제어부(140)는 상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 가상화 정보부(110), DMA 입출력부(121,122), 입출력 버퍼부(131,132) 및 입출력부(151,152)를 제어하기 위한 제어신호를 출력한다.
NIC 가상화 정보 생성 단계(S100)
CPU(161)는 제어부(140)를 통하여 가상화 정보부(11)에 NIC 가상화 정보인 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 입력한다.(S100)
패킷 데이터 입력 단계(S200)
입력부(131)는 네트워크로부터 패킷 데이터를 읽어 입력 버퍼부(121)에 쓰고 제어부(140) 알린다.(S210,220) 제어부(140)는 입력 버퍼부(121) 안에 있는 패킷 데이터의 Destination MAC 또는 VLAN 정보와 가상화 정보부(110)의 정보를 참고해 가상 NIC를 선택하고, 상기 선택된 가상 NIC의 입력 ring 버퍼 주소를 얻는다. 제어부(140)는 Destination MAC이 멀티캐스트(multicast)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC를 선택한다.(S230) 여기서, 일예로 기설정된 MAC 주소는 ff:ff:ff:ff:ff:ff 이고, 기설정된 VLAN ID는 4095가 될 수 있다.
제어부(140)는 여분의 패킷 ring 버퍼 주소가 없을 경우 패킷 데이터를 버린다. 또한, 제어부(140)는 Destination MAC 또는 VLAN 정보에 해당되는 가상 NIC이 없을 경우에도 패킷 데이터를 버린다. 또한, 제어부(140)는 가상 NIC의 입력 대역폭을 참고해 패킷 데이터의 대역폭이 할당된 가상 NIC의 입력 대역폭을 초과하는 경우에도 패킷 데이터를 버린다. 제어부(140)는 패킷 데이터에 포함된 MAC 주소가 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우에도 패킷 데이터를 버린다.
제어부(140)는 DMA 출력부(122)를 통해 가상 NIC의 입력 ring 버퍼 주소에 패킷 데이터를 쓰고, 입력 버퍼부에서 해당 패킷 데이터를 삭제하고, 가상 NIC의 입력 대역폭 정보를 갱신한다.(S240)
패킷 데이터 출력 단계(S300)
제어부(140)는 모든 가상 NIC에 대해 아래의 과정을 수행하며, 가상 NIC의 대역폭에 여유가 있을 경우 아래의 과정을 실행한다.
제어부(140)는 DMA 출력부(122)를 통해 출력 ring 버퍼에서 패킷 데이터를 출력 버퍼(132)로 복사하고(S310), CPU(160)에 패킷 데이터를 가져갔다는 정보를 전달한다.(S320) 제어부(140)는 패킷 데이터의 Destination MAC이 상기 입출력 가능한 MAC 주소 목록에 없으면 패킷 데이터를 버린다.
제어부(140)는 출력부(152)에 패킷 데이터를 출력하라고 명령하고, 가상 NIC의 출력 대역폭 정보를 갱신한다. 출력부(152)는 출력 버퍼부(132)의 패킷 데이터를 네트워크로 출력한 후 출력 버퍼부(132)에서 해당 패킷 데이터를 삭제한다.(S330)
NIC 가상화 정보 삭제 단계(S400)
CPU(161)는 가상화 정보부(110)에 생성한 NIC 가상화 정보를 삭제한다.
본 발명의 실시예들에서는 컴퓨터 메모리(162) 상에 특별한 구조를 갖는 메모리 공간을 할당하여 그 공간과 구조를 가상 NIC로 활용한다. 다수의 가상 NIC을 사용하기 위해 상기 가상 NIC 공간으로 할당된 영역에 서로 다른 MAC 주소를 사용해 가상 NIC을 구분하였다.
또한, 본 발명의 실시예들에서는 가상 NIC을 지원하는 PCI(Peripheral Component Interconnect)에 가상 NIC의 공간 정보를 미리 설정하여 PCI 장치와 컴퓨터의 메모리 간 DMA(Direct Memory Access) 기능을 활용할 수 있도록 하는 구조를 제안하고 있다. DMA 기능을 이용해 패킷 데이터 도착 시 가상 NIC로 바로 패킷 데이터를 씀으로써 전송 속도를 향상시켰다.
또한, 본 발명의 실시예들에서는 Multicast 패킷 데이터인 경우 별도의 멀티캐스트 Rx 버퍼를 사용함으로써 CPU가 고속으로 패킷 데이터를 복사하게 하였고, 대역폭을 미리 설정하여 Rx와 Tx에서 대역폭을 제어할 수 있도록 하였다. 패킷 데이터의 Destination MAC Masking을 사용하여 불필요한 패킷 데이터를 제거하고, 컴퓨터(160)에서 가상 NIC의 Rx 버퍼에 패킷 데이터를 생성해 넣을 수 있도록 하였다.
또한, 본 발명의 실시예들에서는 1개의 입력 버퍼, 1개의 출력 버퍼만 사용하고, 가상 네트워크 인터페이스 정보 영역을 따로 관리함으로써 가상 네트워크 이터페이스 카드를 제안하였고, Destination MAC을 참고해 별도의 영역(서로 다른 가상 NIC 영역)에 패킷 데이터를 복사 가능도록 하였다.
본 발명의 실시예들은 클라우드 컴퓨팅, 네트워크 가상화, Deep Packet Inspection, 호스트 가상화에서 네트워크 가상화 부분에 활용 가능하다. 하나의 물리적인 네트워크 인터페이스 장치를 이용하여 다수의 가상 네트워크 인터페이스 카드로 만들 수 있고, 가상 네트워크 인터페이스 카드를 사용함에 있어 컴퓨터의 메모리 복사를 최소화하고, 네트워크 대역폭을 분리함으로써 안정적인 패킷 데이터의 전송이 가능하다.
도 5는 네트워크 인터페이스 가상화를 H/W적으로 처리하는 패킷 엔진 구조의 블록도이고, 도 6은 네트워크 인터페이스 가상화를 S/W적으로 처리하는 패킷 엔진 구조의 블록도이고, 도 7은 본 발명의 실시예가 적용된 가상 네트워크 인터페이스 시스템의 블록도이다.
이하에서는 도 5 내지 7을 참조하여 본 발명의 실시예가 적용되는 시스템의 신호 및 패킷 데이터의 흐름도를 설명하겠다.
우선, 패킷엔진이란 가상네트워크를 지원하는 DPI(Deep Packet Inspection) 엔진으로 PC에서 사용하는 H/W 아키텍처인 x86_64 아키텍처에 기반한 RTOS(Real-Time Operating System)이다. 패킷엔진은 S/W 라우터를 구동하기 위해 특화된 O/S로 CPU의 코어를 여러 S/W 라우터가 공유하는 방식이 아닌, 하나의 S/W 라우터에 다수의 코어를 독점적으로 할당 하고, 네트워크 대역폭 자원을 분리해 사용함으로써 실시간 트레픽 처리를 가능하게 하는 O/S이다. 패킷엔진은 S/W 라우터 개발자에게 C 언어를 이용해 Level 2(Ethernet 수준)의 패킷 정보에 바로 접근하게 함으로써 손쉽게 DPI 어플리케이션(또는 S/W 라우터)을 작성할 수 있도록 한다. 패킷엔진을 이용하면 Linux와 같은 범용 O/S를 활용하는 것보다 쉽게 DPI 어플리케이션을 작성할 수 있고, 하나의 물리적인 H/W 상에 실시간성을 지원하는 다수의 S/W 라우터을 구동할 수 있다.
도 5 및 6을 참조하여 패킷엔진의 구조를 살펴보면, 패킷엔진은 네트워크 가상화를 S/W적으로 처리하는 Type 1 구조와, 네트워크 가상화를 H/W적으로 처리하는 Type 2 구조의 두 가지 구조가 있다.
도 5에 도시된 패킷 엔진 Type 1 구조는 네트워크 가상화 기능을 Core 0에서 S/W적으로 처리하는 것이다. 네트워크 가상화 기능을 S/W로 처리했을 때 가상화 기능을 지원하지 않는 NIC(Network Interface Card)를 이용할 수 있어 저렴하게 패킷 엔진 플랫폼을 구성할 수 있는 반면, 1개 이상의 Core(Core 0)를 네트워크 가상화 기능 할당 함으로써 사용자 S/W 라우터(사용자 S/W 라우터)을 구동할 수 있는 Core의 개수가 줄어든다.
도 6에 도시된 패킷엔진 Type 2 구조는 본 발명이 적용가능한 구조이며, 네트워크 가상화 기능을 H/W에 의존하고, 네트워크 가상화와 관련된 최소한의 기능만 S/W적으로 처리하는 방법이다. 이 경우 네트워크 가상화에 할당하는 Core의 개수를 1개로 줄일 수 있기 때문에 보다 많은 수의 Core를 사용자 S/W 라우터에 할당할 수 있는 반면, 가상화를 지원하는 별도의 H/W를 제작해야 하기 때문에 패킷엔진 플랫폼 구축시 패킷엔진 Type 1 구조와 비교하여 높은 비용이 발생한다.
도 7은 본 발명의 실시예에 따른 네트워크 인터페이스 가상화 방법이 적용되는 패킷엔진 가상 머신의 블록도를 도시한 것이다.
도 7을 참조하면, 사용자의 S/W 라우터은 패킷엔진이 생성하는 가상머신(Virtual Machine: VM) 상에서 동작한다. 하나의 VM은 다수의 Virtual Network Interface Card(VNIC), 하나의 Virtual CPU 그리고 메모리로 구성된다. VCPU는 여러 개의 Physical Core로 구성되는데, S/W 라우터는 여러 개의 Core 상에서 각각 Thread 형식으로 동작하는데 하나의 Thread는 Local memory를 가지고 있고, 모든 Thread가 서로 공유하는 Global 메모리가 있다.
도 8는 몇개의 시스템에서 본 발명의 실시예가 적용된 네트워크 인터페이스 가상화 방법과 기존의 네트워크 가상화 방법의 성능 비교도이다
도 8을 참조하면, Type 1 패킷 엔진을 구현하였을 경우 Intel Core i7 3.4GHz에서 동작하는 패킷 엔진과 D-Link사의 DIR-850L Access Point 그리고 Intel Core i5 1.7GHz에서 동작하는 Windows 8과의 Ping에 대한 response time을 비교하였을 경우 각각 2.7배, 4.8배 빠른 응답 시간을 보이는 것으로 나타났다.
상술한 바와 같이, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 가상 네트워크 장치의 구조에 관한 기술이 아니라 NIC 가상화에 초점을 맞추고 있고, H/W 적으로도 단일의 입출력 버퍼를 구비하여 기존의 NIC과 유사한 네트워크 인터페이스 카드를 이용한다는 점에서 NIC 제조 비용이 거의 증가하지 않는다. 즉, 본 발명은 가상화를 지원하지 않는 NIC의 구조와 유사하지만 가상화 기능을 지원함으로써 저렴한 가격에 가상화를 지원하는 NIC에 대한 구조와 방법을 제시하고 있다.
따라서, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 하나의 물리적인 네트워크 인터페이스 카드를 이용하여 다수의 가상 네트워크 인터페이스 카드를 만들 수 있고, 또한 가상 네트워크 인터페이스 카드를 사용함에 있어 메모리 복사를 최소화하고, 네트워크 대역폭을 분리함으로써 안정적인 패킷 데이터의 전송이 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있다.
110 : 가상화 정보부
120 : DMA 입출력부
130 : 입출력 버퍼
140 : 제어부
150 : 입출력부
160 : 컴퓨터

Claims (23)

  1. 패킷 데이터를 임시 저장하는 입출력 버퍼부;
    네트워크와 상기 입출력 버퍼부 간의 패킷 데이터를 전송하고, 상기 네트워크로부터의 패킷 데이터를 상기 입출력 버퍼부에 저장한 경우 저장 알림 신호를 생성 출력하는 입출력부;
    제어신호에 따라 상기 입출력 버퍼부와 컴퓨터 메모리 간에 패킷 데이터를 전송하는 DMA 입출력부;
    상기 컴퓨터 메모리 상에 기설정된 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)를 구현하는 가상 NIC 정보가 저장된 가상화 정보부; 및
    상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 상기 입출력 버퍼부, 상기 입출력부, 상기 DMA 입출력부 및 상기 가상화 정보부를 제어하는 상기 제어신호를 출력하는 제어부;를 포함하는 네트워크 인터페이스 가상화 장치.
  2. 제1항에 있어서,
    상기 입출력 버퍼부는, 상기 입출력부로부터 패킷 데이터를 전송받아 임시 저장하는 하나의 입력 버퍼부와, 상기 입출력부로 전송할 패킷 데이터를 임시 저장하고 있는 하나의 출력 버퍼부를 포함하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  3. 제2항에 있어서,
    상기 입출력부는, 상기 네트워크로부터 패킷 데이터를 수신하여 상기 입력 버퍼부에 저장하고, 상기 저장 알림 신호를 생성하여 상기 제어부로 출력하는 입력부와, 상기 출력 버퍼부로부터 상기 네트워크로 패킷 데이터를 출력한 후 삭제하는 출력부를 포함하고,
    상기 DMA 입출력부는, 상기 가상화 정보에 기반하여, 상기 입출력 버퍼부에서 전송받은 패킷 데이터를 컴퓨터 메모리로 전송하는 DMA 입력부와, 상기 컴퓨터 메모리 상의 패킷 데이터를 상기 출력 버퍼부로 전송하는 DMA 출력부를 포함하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  4. 제1항에 있어서,
    상기 가상화 정보부의 NIC 가상화 정보는, 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 포함하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  5. 제4항에 있어서,
    상기 제어부는 상기 입력 버퍼부의 패킷 데이터의 Destination MAC 또는 VLAN 정보와 상기 NIC 가상화 정보에 따라 상기 가상 NIC을 선택하고, 상기 가상 NIC의 입력 ring 버퍼 주소를 얻는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  6. 제5항에 있어서,
    상기 제어부는 상기 DMA 입출력부를 통해 상기 가상 NIC의 입력 ring 버퍼 주소에 상기 패킷 데이터을 쓰고, 상기 입력 버퍼부에서 해당 패킷 데이터를 삭제하고, 상기 가상 NIC의 입력 대역폭 정보를 갱신하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  7. 제5항에 있어서,
    상기 제어부는 Destination MAC이 멀티캐스트(multicsat)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC를 선택하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  8. 제5항에 있어서,
    상기 제어부는 여분의 입력 ring 버퍼 주소가 없거나, Destination MAC 또는 VLAN 정보에 해당되는 가상 NIC이 없을 경우, 상기 입력 버퍼부의 패킷 데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  9. 제5항에 있어서,
    상기 제어부는 상기 패킷 데이터의 대역폭이 상기 가상 NIC의 입력 대역폭을 초과할 경우 상기 입력 버퍼부의 패킷 데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  10. 제5항에 있어서,
    상기 제어부는 상기 패킷 데이터의 Destination MAC이 상기 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우 상기 입력 버퍼부의 패킷 데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  11. 제6항에 있어서,
    상기 제어부는 상기 DMA 입출력부를 통해 가상 NIC의 출력 ring 버퍼에서 패킷 데이터를 상기 출력 버퍼부로 복사하고 컴퓨터의 CPU에 패킷을 가져갔다는 정보를 전달하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  12. 제11항에 있어서,
    상기 제어부는 상기 입출력부로 패킷 데이터를 출력하라고 해당 가상 NIC에 명령하고, 출력 대역폭 정보를 갱신하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  13. 제12항에 있어서,
    상기 입출력부는 상기 출력 버퍼부의 패킷 데이터를 상기 네트워크로 출력한 후 해당 패킷데이터를 삭제하는 것을 특징으로 하는 네트워크 인터페이스 가상화 장치.
  14. 컴퓨터 CPU가 네트워크 인터페이스 카드(Network Interface Card, NIC)의 메모리 상에 가상 NIC 정보를 생성하는 단계;
    상기 가상 NIC 정보에 기반하여, NIC의 제어부가 단일 입출력 버퍼부를 이용하여 컴퓨터 메모리 상에 기설정된 복수 개의 가상 NIC으로 패킷 데이터를 입력하는 단계;
    가상 NIC에서 패킷 데이터를 네트워크로 출력하고, 상기 가상 NIC의 출력 대역폭 정보를 갱신하는 단계; 및
    상기 컴퓨터 CPU가 상기 NIC의 메모리 상에 생성된 상기 가상 NIC 정보를 삭제하는 단계를 포함하는 네트워크 인터페이스 가상화 방법.
  15. 제14항에 있어서,
    상기 가상 NIC 정보를 생성하는 단계에서는, 상기 컴퓨터의 CPU가 상기 NIC의 메모리 상에 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 생성하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  16. 제14항에 있어서,
    상기 가상 NIC으로 패킷 데이터를 입력하는 단계는,
    상기 패킷 데이터의 Destination MAC 또는 VLAN 정보와 상기 가상 NIC 정보에 따라 가상 NIC을 선택하고, 상기 선택된 가상 NIC의 입력 ring 버퍼 주소를 얻는 단계; 및
    상기 가상 NIC의 입력 ring 버퍼에 상기 패킷 데이터을 쓰고, 상기 가상 NIC의 입력 대역폭 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  17. 제16항에 있어서,
    상기 입력 ring 버퍼 주소를 얻는 단계에서는, Destination MAC이 멀티캐스트(multicsat)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC를 선택하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  18. 제16항에 있어서,
    상기 입력 ring 버퍼 주소를 얻는 단계에서는, 상기 패킷 데이터의 대역폭이 상기 가상 NIC의 입력 대역폭을 초과할 경우 상기 패킷 데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  19. 제16항에 있어서,
    상기 입력 ring 버퍼 주소를 얻는 단계에서는, 상기 패킷 데이터의 Destination MAC이 상기 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우 상기 패킷 데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  20. 제14항에 있어서,
    상기 출력 대역폭 정보를 갱신하는 단계에서는,
    상기 제어부가 가상 NIC의 출력 ring 버퍼의 패킷 데이터를 상기 NIC의 DMA 출력부를 통해 출력 버퍼로 복사하고, 상기 컴퓨터의 CPU에 패킷 데이터 전송 정보를 전달하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  21. 제20항에 있어서,
    상기 출력 대역폭 정보를 갱신하는 단계에서는,
    상기 제어부는 상기 패킷 데이터의 Destination MAC이 상기 입출력 가능한 MAC 주소 목록에 없으면 상기 패킷데이터를 버리는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  22. 제20항에 있어서,
    상기 출력 대역폭 정보를 갱신하는 단계에서는,
    상기 제어부는 NIC의 출력부에 패킷 데이터의 출력을 명령하고, 상기 가상 NIC의 출력 대역폭 정보를 갱신하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
  23. 제20항에 있어서,
    상기 출력 대역폭 정보를 갱신하는 단계에서는,
    상기 NIC의 출력부는 출력 버퍼의 패킷 데이터를 상기 네트워크로 출력한 후 상기 출력 버퍼에서 해당 패킷 데이터를 삭제하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
KR1020140001033A 2014-01-06 2014-01-06 네트워크 인터페이스 가상화 장치 및 방법 KR101572689B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140001033A KR101572689B1 (ko) 2014-01-06 2014-01-06 네트워크 인터페이스 가상화 장치 및 방법
US15/108,229 US10108566B2 (en) 2014-01-06 2014-12-30 Apparatus and method for virtualizing network interface
PCT/KR2014/013042 WO2015102372A1 (ko) 2014-01-06 2014-12-30 네트워크 인터페이스 가상화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140001033A KR101572689B1 (ko) 2014-01-06 2014-01-06 네트워크 인터페이스 가상화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150081497A true KR20150081497A (ko) 2015-07-15
KR101572689B1 KR101572689B1 (ko) 2015-11-27

Family

ID=53493654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140001033A KR101572689B1 (ko) 2014-01-06 2014-01-06 네트워크 인터페이스 가상화 장치 및 방법

Country Status (3)

Country Link
US (1) US10108566B2 (ko)
KR (1) KR101572689B1 (ko)
WO (1) WO2015102372A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3326865A1 (en) 2015-06-09 2018-05-30 LG Electronics Inc. Driver assistance apparatus and control method for the same
KR102383782B1 (ko) 2020-12-14 2022-04-06 주식회사 에프아이시스 데이터 통신에서의 터널 데이터 업데이트 처리방법
KR20230103044A (ko) 2021-12-31 2023-07-07 주식회사 에프아이시스 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016116939A1 (en) 2015-01-19 2016-07-28 Hewlett-Packard Development Company, L.P. Engines to prune overlay network traffic
CN108023837B (zh) * 2016-10-31 2020-11-20 鸿富锦精密电子(天津)有限公司 虚拟网络交换机系统及其建立方法
CN108718268B (zh) * 2017-04-07 2022-01-28 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496699B2 (en) * 2005-06-17 2009-02-24 Level 5 Networks, Inc. DMA descriptor queue read and cache write pointer arrangement
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US8634415B2 (en) * 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
JP5670279B2 (ja) * 2011-08-10 2015-02-18 エヌ・ティ・ティ・コミュニケーションズ株式会社 仮想ネットワーク制御装置、仮想ネットワーク制御方法、仮想ネットワーク制御システム、及びプログラム
KR101308649B1 (ko) * 2011-11-30 2013-09-23 삼성에스디에스 주식회사 가상 네트워크 할당 시스템 및 방법
KR20130067906A (ko) * 2011-12-14 2013-06-25 한국전자통신연구원 가상 네트워크 인터페이스 지원 방법
US9250954B2 (en) * 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3326865A1 (en) 2015-06-09 2018-05-30 LG Electronics Inc. Driver assistance apparatus and control method for the same
KR102383782B1 (ko) 2020-12-14 2022-04-06 주식회사 에프아이시스 데이터 통신에서의 터널 데이터 업데이트 처리방법
KR20230103044A (ko) 2021-12-31 2023-07-07 주식회사 에프아이시스 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법

Also Published As

Publication number Publication date
US20160328342A1 (en) 2016-11-10
KR101572689B1 (ko) 2015-11-27
US10108566B2 (en) 2018-10-23
WO2015102372A1 (ko) 2015-07-09

Similar Documents

Publication Publication Date Title
US11102117B2 (en) In NIC flow switching
US11409465B2 (en) Systems and methods for managing communication between NVMe-SSD storage device(s) and NVMe-of host unit
JP6328134B2 (ja) クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム
KR101572689B1 (ko) 네트워크 인터페이스 가상화 장치 및 방법
EP3042297B1 (en) Universal pci express port
WO2018086014A1 (zh) 云计算系统中报文处理的方法、主机和系统
US9916269B1 (en) Packet queueing for network device
US10333865B2 (en) Transformation of peripheral component interconnect express compliant virtual devices in a network environment
WO2018086013A1 (zh) 云计算系统中报文处理的方法、主机和系统
US9996484B1 (en) Hardware acceleration for software emulation of PCI express compliant devices
US8312197B2 (en) Method of routing an interrupt signal directly to a virtual processing unit in a system with one or more physical processing units
US10911405B1 (en) Secure environment on a server
US10754797B1 (en) Consolidating write transactions for a network device
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
EP3163452B1 (en) Efficient virtual i/o address translation
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
US20150370582A1 (en) At least one user space resident interface between at least one user space resident virtual appliance and at least one virtual data plane
US9292462B2 (en) Broadcast for a distributed switch network
US10228869B1 (en) Controlling shared resources and context data
US11863469B2 (en) Utilizing coherently attached interfaces in a network stack framework
US20210019261A1 (en) Memory cache-line bounce reduction for pointer ring structures
US9344376B2 (en) Quality of service in multi-tenant network
US11003618B1 (en) Out-of-band interconnect control and isolation
US10700978B2 (en) Offloading at a virtual switch in a load-balanced group
US10802828B1 (en) Instruction memory

Legal Events

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

Payment date: 20181120

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191202

Year of fee payment: 5