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

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

Info

Publication number
WO2015102372A1
WO2015102372A1 PCT/KR2014/013042 KR2014013042W WO2015102372A1 WO 2015102372 A1 WO2015102372 A1 WO 2015102372A1 KR 2014013042 W KR2014013042 W KR 2014013042W WO 2015102372 A1 WO2015102372 A1 WO 2015102372A1
Authority
WO
WIPO (PCT)
Prior art keywords
input
packet data
output
unit
information
Prior art date
Application number
PCT/KR2014/013042
Other languages
English (en)
French (fr)
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 US15/108,229 priority Critical patent/US10108566B2/en
Publication of WO2015102372A1 publication Critical patent/WO2015102372A1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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

Definitions

  • the present invention relates to a network interface virtualization apparatus and method, and more particularly to a network interface virtualization apparatus and method using a network interface card.
  • Korean Patent Registration No. 10-1232211 and Korean Patent Registration No. 10-1275293 and Korean Patent Application Publication No. 10-2011-0046240 also implement virtualization of network devices, but focus on the structure of devices that support virtual networks. have.
  • Patent Document 1 Republic of Korea Patent No. 10-1232211
  • Patent Document 2 Republic of Korea Patent No. 10-1275293
  • Patent Document 3 Republic of Korea Patent Publication No. 10-2011-0046240
  • the input and output buffer unit for temporarily storing the packet data;
  • An input / output unit which transmits packet data between a network and the input / output buffer unit, and generates and outputs a storage notification signal when the packet data from the network is stored in the input / output buffer unit;
  • a DMA input / output unit for transmitting packet data between the input / output buffer unit and the computer memory according to a control signal;
  • a virtualization information unit configured to store virtual NIC information for implementing a plurality of preset Network Interface Cards (NICs) on the computer memory;
  • a controller configured to output the control signal for controlling the input / output buffer unit, the input / output unit, the DMA input / output unit, and the virtualization information unit based on the storage notification signal and the NIC virtualization information.
  • the input / output buffer unit includes one input buffer unit for temporarily receiving packet data from the input / output unit and one output buffer unit for temporarily storing packet data to be transmitted to the input / output unit.
  • the input and output unit an input unit for receiving the packet data from the network and storing it in the input buffer unit, generates the storage notification signal and outputs it to the control unit, and the packet data from the output buffer unit to the network After outputting the output unit for deleting,
  • the DMA input / output unit includes a DMA input unit for transmitting the packet data received from the input / output buffer unit to the computer memory based on the virtualization information, and a DMA output unit for transmitting the packet data on the computer memory to the output buffer unit.
  • the NIC virtualization information of the virtualization information unit includes the MAC address or VLAN information of the virtual NIC, the address list of the input ring buffer, the input / output bandwidth, the input / output MAC address list, and the status information of the NIC.
  • the controller selects the virtual NIC according to the destination MAC or VLAN information of the packet data of the input buffer unit and the NIC virtualization information, and obtains an input ring buffer address of the virtual NIC.
  • the controller writes the packet data to the input ring buffer address of the virtual NIC through the DMA input / output unit, deletes the packet data from the input buffer unit, and updates the input bandwidth information of the virtual NIC.
  • the controller selects a virtual NIC having a predetermined MAC address or a predetermined VLAN ID.
  • the controller discards the packet data of the input buffer unit when there is no extra input ring buffer address or there is no virtual NIC corresponding to the destination MAC or VLAN information.
  • control unit discards the packet data of the input buffer unit when the bandwidth of the packet data exceeds the input bandwidth of the virtual NIC.
  • control unit discards the packet data of the input buffer unit when the destination MAC of the packet data is not in the input / output MAC address list of the virtual NIC.
  • control unit copies the packet data from the output ring buffer of the virtual NIC to the output buffer unit through the DMA input / output unit and delivers information that the packet is taken to the CPU of the computer.
  • the controller instructs the corresponding virtual NIC to output packet data to the input / output unit, and updates the output bandwidth information.
  • the input / output unit outputs the packet data of the output buffer unit to the network and then deletes the packet data.
  • a network interface virtualization method may include: generating, by a computer CPU, virtual NIC information on a memory of a network interface card (NIC); Inputting, by the controller of the NIC, packet data to a plurality of preset virtual NICs on a computer memory based on the virtual NIC information; Outputting packet data from a virtual NIC to a network, and updating output bandwidth information of the virtual NIC; And deleting, by the computer CPU, the virtual NIC information generated on the memory of the NIC.
  • NIC network interface card
  • the CPU of the computer on the memory of the NIC the MAC address or VLAN information of the virtual NIC, the address list of the input ring buffer, the input and output bandwidth, the list of MAC addresses that can be input and output And generate status information of the NIC.
  • inputting packet data to the virtual NIC may include selecting a virtual NIC according to the destination MAC or VLAN information of the packet data and the virtual NIC information, and obtaining an input ring buffer address of the selected virtual NIC. step; And writing the packet data into an input ring buffer of the virtual NIC and updating the input bandwidth information of the virtual NIC.
  • the virtual NIC having a predetermined MAC address or a predetermined VLAN ID is selected.
  • the packet data is discarded when the bandwidth of the packet data exceeds the input bandwidth of the virtual NIC.
  • the packet data is discarded if the destination MAC of the packet data is not in the input / output MAC address list of the virtual NIC.
  • the control unit copies the packet data of the output ring buffer of the virtual NIC to the output buffer through the DMA output unit of the NIC, and transmits packet data transmission information to the CPU of the computer. To pass.
  • the controller in the updating of the output bandwidth information, if the destination MAC of the packet data is not in the input / output MAC address list, the controller discards the packet data.
  • the controller instructs the output of the packet data to the output of the NIC, and updates the output bandwidth information of the virtual NIC.
  • the output unit of the NIC in the updating of the output bandwidth information, the output unit of the NIC outputs the packet data of the output buffer to the network and then deletes the packet data from the output buffer.
  • Network interface virtualization apparatus and method allocates a memory space having a special structure on the memory of the virtual network interface computer using a minimum of H / W, and the space and structure of the virtual network interface Can be used as a card.
  • the network interface virtualization apparatus and method according to the embodiments of the present invention may distinguish the virtual network interface cards by using different MAC addresses in order to use a plurality of virtual network interface cards.
  • the network interface virtualization apparatus and method according to the embodiments of the present invention by setting the virtual network interface space information in the Peripheral Component Interconnect (PCI) supporting the virtual network interface card by direct memory between the PCI device and the memory of the computer Access) function can be utilized.
  • PCI Peripheral Component Interconnect
  • the network interface virtualization apparatus and method according to the embodiments of the present invention can improve the transmission speed by writing the packet data directly to the virtual network interface card when the packet arrives using the DMA function.
  • the network interface virtualization apparatus and method according to the embodiments of the present invention may allow the CPU to copy packets at high speed by using a separate multicast Rx buffer in the case of a multicast packet.
  • the network interface virtualization apparatus and method according to embodiments of the present invention may control the bandwidth of packet data in Rx and Tx by setting the bandwidth of the virtual network interface guard.
  • the network interface virtualization apparatus and method according to embodiments of the present invention can remove unnecessary packet data by using Destination MAC Masking.
  • the network interface virtualization apparatus and method according to embodiments of the present invention may generate packet data into an Rx buffer of a virtual network interface card in a computer.
  • FIG. 1 is a block diagram of a network interface virtualization apparatus according to an embodiment of the present invention
  • FIGS. 2 to 4 are flowcharts of a network interface virtualization method according to an embodiment of the present invention.
  • FIG. 5 is a block diagram of a packet engine structure for H / W processing of network interface virtualization.
  • FIG. 6 is a block diagram of a packet engine structure for processing network interface virtualization by S / W,
  • FIG. 7 is a block diagram of a virtual network interface system to which an embodiment of the present invention is applied.
  • FIG. 8 is a performance comparison diagram of a network interface virtualization method to which an embodiment of the present invention is applied and a conventional network virtualization method in several systems.
  • each component or feature may be considered to be optional unless otherwise stated.
  • Each component or feature may be embodied in a form that is not combined with other components or features.
  • some components and / or features may be combined to form embodiments of the present invention.
  • the order of the operations described in the embodiments of the present invention may be changed. Some components or features of one embodiment may be included in another embodiment or may be replaced with corresponding components or features of another embodiment.
  • Embodiments of the invention may be implemented through various means.
  • embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
  • the method according to embodiments of the present invention may include one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs). It may be implemented by field programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • processors controllers, microcontrollers, microprocessors, and the like.
  • the method according to the embodiments of the present invention may be implemented in the form of a module, procedure, or function that performs the functions or operations described above.
  • the software code may be stored in a memory unit and driven by a processor.
  • the memory unit may be located inside or outside the processor, and may exchange data with the processor by various known means.
  • module described herein refers to a unit for processing a specific function or operation, which may be implemented in hardware or software, or a combination of hardware and software.
  • FIGS. 2 to 4 are flowcharts of a network interface virtualization method according to an embodiment of the present invention.
  • a DMA input / output unit having a network interface virtualization device control unit 140, a virtualization information unit 110, a DMA input unit 121, and a DMA output unit 122 according to an embodiment of the present invention ( 120, an input / output buffer unit 130 including an input buffer unit 131 and an output buffer unit 132, and an input / output unit 150 including an input unit 151 and an output unit 152.
  • the input / output buffer unit 130 preferably includes one input buffer unit 131 and one output buffer unit 132.
  • the computer 160 to which the virtualization apparatus is mounted and implemented or interworked has at least a CPU 161 and a memory 162, and a plurality of virtual network interface cards (NICs) have a memory 162 area. Is set in advance.
  • NICs virtual network interface cards
  • the virtualization information unit 11 stores the NIC virtualization information including the MAC address or VLAN information of the virtual NIC, the address list of the input ring buffer, the input / output bandwidth, the input / output MAC address list, and the status information of the NIC.
  • the virtualization information unit may be implemented as a memory mounted on the network interface card.
  • the input unit 151 receives the packet data from the network, writes the packet data to the input buffer unit 131, generates a storage notification signal, and outputs the signal to the controller 140.
  • the input buffer unit 131 temporarily stores a plurality of packet data transmitted from the input unit 151.
  • the DMA input unit 121 transmits the packet data of the input buffer unit 131 to the memory 162 of the computer based on the information of the virtualization information unit 110.
  • the DMA output unit 122 copies the packet data on the computer memory 162 to the output buffer unit 132 based on the information of the virtualization information unit 110, and the output buffer unit 132 outputs the packet.
  • the packet data is temporarily stored to output data.
  • the output unit 152 transmits the packet data of the output buffer unit 132 to the network.
  • the controller 140 outputs a control signal for controlling the virtualization information unit 110, the DMA input / output units 121 and 122, the input / output buffer units 131 and 132, and the input / output units 151 and 152 based on the storage notification signal and the NIC virtualization information. do.
  • the CPU 161 transmits the MAC address or VLAN information of the virtual NIC, which is the NIC virtualization information, the address list of the input ring buffer, the input / output bandwidth, the input / output MAC address list, and the status information of the NIC to the virtualization information unit 11 through the control unit 140. Enter (S100).
  • the input unit 131 reads the packet data from the network and writes it to the input buffer unit 121 to inform the controller 140.
  • the control unit 140 destination MAC or VLAN of the packet data in the input buffer unit 121.
  • the virtual NIC is selected by referring to the information and the information of the virtualization information unit 110, and an input ring buffer address of the selected virtual NIC is obtained. If the destination MAC is multicast, the controller 140 selects a virtual NIC having a predetermined MAC address or a predetermined VLAN ID.
  • the predetermined MAC address is ff: ff: ff: ff. : ff: ff and the preset VLAN ID may be 4095.
  • the controller 140 discards the packet data when there is no spare packet ring buffer address. In addition, the controller 140 discards the packet data even when there is no virtual NIC corresponding to the destination MAC or VLAN information. In addition, the controller 140 discards the packet data even when the bandwidth of the packet data exceeds the input bandwidth of the allocated virtual NIC by referring to the input bandwidth of the virtual NIC. The controller 140 discards the packet data even when the MAC address included in the packet data is not in the list of MAC addresses that can be input / output of the virtual NIC.
  • the controller 140 writes packet data to the input ring buffer address of the virtual NIC through the DMA output unit 122, deletes the packet data from the input buffer unit, and updates the input bandwidth information of the virtual NIC (S240).
  • the controller 140 performs the following process for all virtual NICs, and executes the following process when the bandwidth of the virtual NIC is free.
  • the controller 140 copies the packet data from the output ring buffer to the output buffer 132 through the DMA output unit 122 (S310), and transmits the information that the packet data is taken to the CPU 160 (S320). If the destination MAC of the packet data is not in the input / output MAC address list, the controller 140 discards the packet data.
  • the control unit 140 instructs the output unit 152 to output packet data, and updates the output bandwidth information of the virtual NIC.
  • the output unit 152 outputs the packet data of the output buffer unit 132 to the network and then deletes the corresponding packet data from the output buffer unit 132 (S330).
  • the CPU 161 deletes the NIC virtualization information generated in the virtualization information unit 110.
  • a memory space having a special structure is allocated on the computer memory 162, and the space and the structure are utilized as a virtual NIC.
  • virtual NICs are distinguished by using different MAC addresses in an area allocated to the virtual NIC space.
  • the spatial information of the virtual NIC is pre-set in a Peripheral Component Interconnect (PCI) supporting the virtual NIC to utilize a direct memory access (DMA) function between the memory of the PCI device and the computer.
  • PCI Peripheral Component Interconnect
  • DMA direct memory access
  • the DMA function improves transmission speed by writing packet data directly to the virtual NIC when packet data arrives.
  • a separate multicast Rx buffer is used to allow the CPU to copy the packet data at high speed, and the bandwidth can be preset to control the bandwidth in Rx and Tx.
  • the destination MAC masking of the packet data is used to remove unnecessary packet data, and the computer 160 can generate packet data in the Rx buffer of the virtual NIC.
  • embodiments of the present invention proposed a virtual network interface card by using only one input buffer and one output buffer, and managing the virtual network interface information area separately, and referring to the destination MAC, a separate area (different area) Packet data can be copied to the virtual NIC area.
  • Embodiments of the present invention can be utilized in the network virtualization portion in cloud computing, network virtualization, deep packet inspection, host virtualization.
  • One physical network interface device can be used to create multiple virtual network interface cards, and the use of virtual network interface cards enables stable transmission of packet data by minimizing computer memory copy and separating network bandwidth. .
  • FIG. 5 is a block diagram of a packet engine structure for processing network interface virtualization in H / W
  • FIG. 6 is a block diagram of a packet engine structure for processing network interface virtualization in S / W
  • a packet engine is a deep packet inspection (DPI) engine that supports virtual networks. It is a real-time operating system (RTOS) based on the x86_64 architecture, which is a H / W architecture used in PCs. Packet engine is a specialized O / S for driving S / W routers. Instead of sharing CPU cores among multiple S / W routers, the packet engine exclusively allocates multiple cores to one S / W router and provides network bandwidth. It is an operating system that enables real-time traffic processing by separating resources. Packet engines enable S / W router developers to easily write DPI applications (or S / W routers) by directly accessing Level 2 (Ethernet level) packet information using the C language. Packet engines allow you to write DPI applications more easily than using general-purpose operating systems such as Linux, and run multiple S / W routers that support real-time on a single physical hardware.
  • DPI deep packet inspection
  • RTOS real-time operating system
  • Packet engine is a specialized O
  • the packet engine has two types of structure, the type 1 structure that processes the network virtualization S / W, and the type 2 structure that processes the network virtualization H / W have.
  • the packet engine Type 1 structure shown in FIG. 5 is a S / W processing of the network virtualization function in Core 0.
  • FIG. 5 When the network virtualization function is processed by S / W, a network interface card (NIC) that does not support virtualization function can be used to configure the packet engine platform at low cost, while at least one core (Core 0) is network virtualized. By assigning functions, the number of cores that can run user S / W routers (user S / W routers) is reduced.
  • NIC network interface card
  • the packet engine type 2 structure illustrated in FIG. 6 is a structure to which the present invention is applicable, and is a method for S / W processing only the minimum functions related to network virtualization, depending on H / W.
  • the number of cores allocated to network virtualization can be reduced to 1
  • a larger number of cores can be allocated to a user S / W router, whereas a separate H / W supporting virtualization needs to be produced.
  • High cost is incurred compared to the Packet Engine Type 1 structure when building an engine platform.
  • FIG. 7 is a block diagram of a packet engine virtual machine to which a network interface virtualization method according to an embodiment of the present invention is applied.
  • a user's S / W router operates on a virtual machine (VM) generated by a packet engine.
  • VM virtual machine
  • One VM consists of multiple Virtual Network Interface Cards (VNICs), one Virtual CPU, and memory.
  • VNICs Virtual Network Interface Cards
  • the VCPU consists of several physical cores.
  • S / W routers operate in the form of threads on multiple cores. One thread has a local memory, and all threads share a global memory.
  • FIG. 8 is a performance comparison diagram of a network interface virtualization method to which an embodiment of the present invention is applied and a conventional network virtualization method in several systems.
  • the response time was 2.7 times and 4.8 times faster.
  • the network interface virtualization apparatus and method according to the embodiments of the present invention focuses on NIC virtualization, not a technology related to the structure of the virtual network apparatus, and has a single input / output buffer in terms of hardware. Therefore, NIC manufacturing cost is hardly increased in that it uses a network interface card similar to the existing NIC. That is, the present invention is similar to the structure of a NIC that does not support virtualization, but proposes a structure and method for a NIC that supports virtualization at a low price by supporting a virtualization function.
  • the network interface virtualization apparatus and method according to the embodiments of the present invention can make a plurality of virtual network interface cards using one physical network interface card, and furthermore, memory copying can be avoided in using the virtual network interface card. By minimizing and separating network bandwidth, stable packet data transmission is possible.

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

네트워크 인터페이스 가상화 장치 및 방법
본 발명은 네트워크 인터페이스 가상화 장치 및 방법에 관한 것으로, 더욱 상세하게는 네트워크 인터페이스 카드를 이용한 네트워크 인터페이스 가상화 장치 및 방법에 관한 것이다.
가상화 기술분야에 있어서, 호스트 가상화 기술은 수년간 급격한 발전을 이루어 기술적으로 거의 완성 단계에 이르렀다. 그러나 네트워크 가상화에 있어서, 네트워크 장치는 대부분의 기능이 H/W에 의존적이기 때문에 가상화 하기 매우 어려우며, 패킷 데이터의 전송은 고속으로 이루어지는 특징상 S/W로 가상화 기능을 구현할 경우 가상화된 네트워크 장치의 성능이 매우 떨어진다.
대한민국 등록특허 제10-1232211호 및 대한민국 등록특허 제10-1275293호와, 대한민국 공개특허 제10-2011-0046240호에서도 네트워크 장치의 가상화를 구현하고 있으나 가상 네트워크를 지원하는 장치의 구조에 초점을 맞추고 있다.
[선행기술문헌]
[특허문헌]
(특허문헌 1) 대한민국 등록특허 제10-1232211호
(특허문헌 2) 대한민국 등록특허 제10-1275293호
(특허문헌 3) 대한민국 공개특허 제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에 대한 구조와 방법을 제시하고 있다.
따라서, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치 및 방법은 하나의 물리적인 네트워크 인터페이스 카드를 이용하여 다수의 가상 네트워크 인터페이스 카드를 만들 수 있고, 또한 가상 네트워크 인터페이스 카드를 사용함에 있어 메모리 복사를 최소화하고, 네트워크 대역폭을 분리함으로써 안정적인 패킷 데이터의 전송이 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있다.

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의 출력부는 출력 버퍼의 패킷 데이터를 상기 네트워크로 출력한 후 상기 출력 버퍼에서 해당 패킷 데이터를 삭제하는 것을 특징으로 하는 네트워크 인터페이스 가상화 방법.
PCT/KR2014/013042 2014-01-06 2014-12-30 네트워크 인터페이스 가상화 장치 및 방법 WO2015102372A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/108,229 US10108566B2 (en) 2014-01-06 2014-12-30 Apparatus and method for virtualizing network interface

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2015102372A1 true WO2015102372A1 (ko) 2015-07-09

Family

ID=53493654

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/013042 WO2015102372A1 (ko) 2014-01-06 2014-12-30 네트워크 인터페이스 가상화 장치 및 방법

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333837B2 (en) * 2016-10-31 2019-06-25 Hongfujin Precision Electronics(Tianjin)Co., Ltd. Virtual network switch system and method of constructing the same

Families Citing this family (5)

* 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
KR101741433B1 (ko) 2015-06-09 2017-05-30 엘지전자 주식회사 운전자 보조 장치 및 그 제어방법
CN108718268B (zh) * 2017-04-07 2022-01-28 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
KR102383782B1 (ko) 2020-12-14 2022-04-06 주식회사 에프아이시스 데이터 통신에서의 터널 데이터 업데이트 처리방법
KR20230103044A (ko) 2021-12-31 2023-07-07 주식회사 에프아이시스 터널 Ctrl 쓰레드를 이용한 데이터 통신에서의 터널 데이터 업데이트 처리방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2466476A1 (en) * 2010-12-20 2012-06-20 Solarflare Communications Inc Network interface device with multiple physical ports and unified buffer memory
JP2013038715A (ja) * 2011-08-10 2013-02-21 Ntt Communications Kk 仮想ネットワーク制御装置、仮想ネットワーク制御方法、仮想ネットワーク制御システム、及びプログラム
KR20130060563A (ko) * 2011-11-30 2013-06-10 삼성에스디에스 주식회사 가상 네트워크 할당 시스템 및 방법
KR20130067906A (ko) * 2011-12-14 2013-06-25 한국전자통신연구원 가상 네트워크 인터페이스 지원 방법

Family Cites Families (3)

* 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
US8634415B2 (en) * 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
US9250954B2 (en) * 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2466476A1 (en) * 2010-12-20 2012-06-20 Solarflare Communications Inc Network interface device with multiple physical ports and unified buffer memory
JP2013038715A (ja) * 2011-08-10 2013-02-21 Ntt Communications Kk 仮想ネットワーク制御装置、仮想ネットワーク制御方法、仮想ネットワーク制御システム、及びプログラム
KR20130060563A (ko) * 2011-11-30 2013-06-10 삼성에스디에스 주식회사 가상 네트워크 할당 시스템 및 방법
KR20130067906A (ko) * 2011-12-14 2013-06-25 한국전자통신연구원 가상 네트워크 인터페이스 지원 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333837B2 (en) * 2016-10-31 2019-06-25 Hongfujin Precision Electronics(Tianjin)Co., Ltd. Virtual network switch system and method of constructing the same

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2015102372A1 (ko) 네트워크 인터페이스 가상화 장치 및 방법
US11102117B2 (en) In NIC flow switching
US8806025B2 (en) Systems and methods for input/output virtualization
US11599490B1 (en) Packet queueing for network device
WO2018086014A1 (zh) 云计算系统中报文处理的方法、主机和系统
US8752051B2 (en) Performing an allreduce operation using shared memory
US8014413B2 (en) Shared input-output device
US10872056B2 (en) Remote memory access using memory mapped addressing among multiple compute nodes
JP2007109040A (ja) 情報処理装置、情報処理システム、通信中継装置および通信制御方法
US10191865B1 (en) Consolidating write transactions for a network device
US10228869B1 (en) Controlling shared resources and context data
JP2013041409A (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
WO2016064158A1 (ko) 재구성 가능 프로세서 및 그 동작 방법
US11086801B1 (en) Dynamic resource management of network device
JP2018185624A (ja) スイッチプログラム、スイッチング方法及び情報処理装置
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
US9246792B2 (en) Providing point to point communications among compute nodes in a global combining network of a parallel computer
WO2015023144A1 (ko) 메모리 공유 환경에서 데이터 무결성 감시 장치 및 방법
US20200403909A1 (en) Interconnect address based qos regulation
US11467998B1 (en) Low-latency packet processing for network device
US11513987B2 (en) Remote direct memory access based networking gateway
WO2014137008A1 (ko) 그래픽 자원 공유 시스템 및 방법
WO2013151376A1 (ko) 듀얼 os를 이용한 보안 시스템 및 그 방법
US11899969B1 (en) Re-order buffer for in-order execution of dependent write transactions
WO2020013422A1 (ko) 광대역저전력 통신을 위한 상호 공존 통신 방법 및 시스템

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14875913

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15108229

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14875913

Country of ref document: EP

Kind code of ref document: A1