KR20160073867A - Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same - Google Patents
Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same Download PDFInfo
- Publication number
- KR20160073867A KR20160073867A KR1020140182713A KR20140182713A KR20160073867A KR 20160073867 A KR20160073867 A KR 20160073867A KR 1020140182713 A KR1020140182713 A KR 1020140182713A KR 20140182713 A KR20140182713 A KR 20140182713A KR 20160073867 A KR20160073867 A KR 20160073867A
- Authority
- KR
- South Korea
- Prior art keywords
- network interface
- packet data
- input
- packet
- output
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 44
- 238000004590 computer program Methods 0.000 title claims description 15
- 238000012508 change request Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 37
- 238000007726 management method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000013070 change management Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007616 round robin method Methods 0.000 description 3
- 230000005484 gravity Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0894—Policy-based network configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
본 발명은 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램에 관한 것으로, 더욱 상세하게는 복수의 가상 네트워크 인터페이스 카드를 이용하여 패킷을 고속으로 처리할 수 있는 네트워크 인터페이스 가상화 장치 및 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a network interface virtualization apparatus and method, and a computer program for executing the same, and more particularly, to a network interface virtualization apparatus and method capable of processing packets at high speed using a plurality of virtual network interface cards .
가상화 기술분야에 있어서, 호스트 가상화 기술은 수년간 급격한 발전을 이루어 기술적으로 거의 완성 단계에 이르렀다. 그러나 네트워크 가상화에 있어서, 네트워크 장치는 대부분의 기능이 H/W에 의존적이기 때문에 가상화 하기 매우 어려우며, 패킷 데이터의 전송은 고속으로 이루어지는 특징상 S/W로 가상화 기능을 구현할 경우 가상화된 네트워크 장치의 성능이 매우 떨어진다. In the area of virtualization technology, host virtualization technology has undergone rapid development for many years and is almost technologically complete. However, in network virtualization, network devices are very difficult to virtualize because most of the functions are H / W dependent. When the virtualization function is implemented with high-speed S / W of packet data transmission, This is very low.
대한민국 등록특허 제10-1232211호 및 대한민국 등록특허 제10-1275293호와, 대한민국 공개특허 제10-2011-0046240호에서도 네트워크 장치의 가상화를 구현하고 있으나 가상 네트워크를 지원하는 장치의 구조에 초점을 맞추고 있다.Korean Patent No. 10-1232211 and Korean Patent No. 10-1275293 and Korean Patent Application No. 10-2011-0046240 also implement virtualization of a network device but focus on the structure of a device that supports a virtual network have.
본 발명의 목적은, 하나의 네트워크 어플리케이션이 점유하는 복수의 CPU코어가 하나의 가상 네트워크 인터페이스 카드로 접근할 때 발생하는 병목현상을 해결하기 위한 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램을 제공하는 데 있다.An object of the present invention is to provide a network interface virtualization apparatus and method for solving a bottleneck which occurs when a plurality of CPU cores occupied by one network application accesses one virtual network interface card, and a computer program for executing the method .
본 발명의 다른 목적은, 복수의 가상 네트워크 인터페이스 카드의 패킷 데이터 입출력을 효율적으로 제어할 수 있는, 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램을 제공하는 데 있다.It is another object of the present invention to provide a network interface virtualization apparatus and method capable of efficiently controlling packet data input / output of a plurality of virtual network interface cards, and a computer program for executing the same.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른, 네트워크 인터페이스 가상화 장치는, 컴퓨팅 디바이스의 메모리 상에 설정된 복수의 가상 네트워크 인터페이스 카드(VNIC)의 정보를 관리하는 가상화 정보부를 포함하되, 상기 가상화 정보부는, 상기 복수의 가상 네트워크 인터페이스 카드가, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와 일대일로 대응되도록 설정한다.According to an aspect of the present invention, there is provided a network interface virtualization apparatus including a virtualization information unit for managing information of a plurality of virtual network interface cards (VNICs) set on a memory of a computing device, The information unit sets the plurality of virtual network interface cards to correspond one-to-one with a plurality of CPU cores occupied in one network application executed in the computing device.
상기 가상 네트워크 인터페이스 카드로 전송되는 복수의 패킷 데이터의 입출력 설정값을 관리하는 패킷 관리부를 더 포함할 수 있다.And a packet management unit for managing input / output setting values of a plurality of packet data transmitted to the virtual network interface card.
상기 패킷 관리부는, 패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여할 수 있다.The packet management unit may assign a unique serial number to each of the plurality of packet data according to a packet input / output policy.
상기 패킷 관리부는, 상기 복수의 패킷 데이터가 상기 일련번호에 따라 순차적으로 상기 복수의 가상 네트워크 인터페이스 카드로 입력되도록 제어할 수 있다.The packet management unit may control the plurality of packet data to be sequentially input to the plurality of virtual network interface cards according to the serial number.
네트워크와 연결되어 상기 복수의 패킷 데이터를 송수신하는 입출력부를 더 포함하되, 상기 입출력부는 상기 일련번호에 따라 상기 복수의 패킷 데이터를 순차적으로 상기 네트워크로 출력할 수 있다.And an input / output unit connected to the network for transmitting and receiving the plurality of packet data, wherein the input / output unit sequentially outputs the plurality of packet data to the network according to the serial number.
상기 복수의 가상 네트워크 인터페이스 카드는 동일한 ID를 가질 수 있다.The plurality of virtual network interface cards may have the same ID.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법은, 컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(VNIC)를 생성하는 단계, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와, 상기 복수의 가상 네트워크 인터페이스 카드를 일대일로 대응시키는 단계를 포함한다.According to an aspect of the present invention, there is provided a network interface virtualization method comprising: generating a plurality of virtual network interface cards (VNIC) on a memory of a computing device; A plurality of CPU cores occupying the plurality of virtual network interface cards and a plurality of virtual network interface cards in a one-to-one correspondence manner.
상기 복수의 가상 네트워크 인터페이스 카드로 복수의 패킷 데이터를 제공하는 단계를 더 포함할 수 있다.The method may further include providing a plurality of packet data to the plurality of virtual network interface cards.
패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는 단계를 더 포함할 수 있다.And assigning a unique serial number to each of the plurality of packet data according to a packet input / output policy.
상기 일련번호에 따라 상기 복수의 가상 네트워크 인터페이스 카드로 상기 복수의 패킷 데이터를 제공하는 단계를 더 포함할 수 있다.And providing the plurality of packet data to the plurality of virtual network interface cards according to the serial number.
상기 복수의 가상 네트워크 인터페이스 카드로부터 상기 복수의 CPU코어에서 처리가 완료된 상기 복수의 패킷 데이터를 상기 일련번호에 따라 물리 네트워크 인터페이스 카드(NIC)로 제공하는 단계를 더 포함할 수 있다.And providing the plurality of packet data processed by the plurality of CPU cores from the plurality of virtual network interface cards to the physical network interface card (NIC) according to the serial number.
상기 복수의 CPU코어로부터 패킷 변경 요청을 수신하는 단계, 및 상기 패킷 변경 요청을 기초로 상기 복수의 가상 네트워크 인터페이스 카드 상에서의 상기 복수의 패킷 데이터의 입출력 순서를 변경하는 단계를 더 포함할 수 있다.Receiving a packet change request from the plurality of CPU cores, and changing an input / output order of the plurality of packet data on the plurality of virtual network interface cards based on the packet change request.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법을 실행하기 위한 컴퓨터 프로그램은, 컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(VNIC)를 생성하는 단계, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와, 상기 복수의 가상 네트워크 인터페이스 카드를 일대일로 대응시키는 단계를 포함한다.According to an aspect of the present invention, there is provided a computer program for executing a network interface virtualization method, comprising: generating a plurality of virtual network interface cards (VNIC) on a memory of a computing device; A plurality of CPU cores occupied by one network application to be executed, and a step of associating the plurality of virtual network interface cards with each other on a one-to-one basis.
본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램은 하나의 네트워크 어플리케이션 단위로 점유되는 복수의 CPU코어별로 가상 네트워크 인터페이스 카드를 생성하여, 패킷 처리 과정에서 발생할 수 있는 병목 현상을 방지할 수 있다.The network interface virtualization apparatus, method, and computer program for executing the same according to embodiments of the present invention generate a virtual network interface card for each of a plurality of CPU cores occupied by one network application unit, It is possible to prevent bottlenecks.
또한, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램은 복수의 CPU 코어별로 가상 네트워크 인터페이스 카드를 생성함으로써, 패킷 입출력을 고속으로 처리할 수 있다.In addition, the network interface virtualization apparatus, method, and computer program for executing the same according to embodiments of the present invention can process a packet input / output at a high speed by generating a virtual network interface card for each of a plurality of CPU cores.
뿐만 아니라, 본 발명의 실시예들에 따른 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램은 각각의 패킷에 소정의 일련번호를 부여함으로써, 복수의 가상 네트워크 인터페이스 카드를 통해 패킷을 분산처리하더라도 패킷 간의 입출력 순서를 그대로 유지할 수 있다.In addition, the network interface virtualization apparatus, method, and computer program for executing the same according to the embodiments of the present invention assign a predetermined serial number to each packet, so that even if a packet is distributedly processed through a plurality of virtual network interface cards The order of input / output between packets can be maintained.
도 1은 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 장치의 블록도이다.
도 2 내지 도 4는 도 1의 네트워크 인터페이스 가상화 장치의 병목 구조를 설명하기 위한 도면이다.
도 5 및 도 6은 본 발명의 다른 실시예에 따른 네트워크 인터페이스 가상화 장치의 블록도이다.
도 7은 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 장치를 통해 패킷 데이터가 분배되는 과정을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법을 나타내는 순서도이다.1 is a block diagram of a network interface virtualization apparatus according to an embodiment of the present invention.
2 to 4 are views for explaining a bottleneck structure of the network interface virtualization apparatus of FIG.
5 and 6 are block diagrams of a network interface virtualization apparatus according to another embodiment of the present invention.
7 is a diagram illustrating a process of distributing packet data through a network interface virtualization apparatus according to an embodiment of the present invention.
8 is a flowchart illustrating a network interface virtualization method according to an embodiment of the present invention.
이하의 실시예들은 본 발명의 구성 요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성 요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성 요소 또는 특징은 다른 구성 요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성 요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.The following embodiments are a combination of elements and features of the present invention in a predetermined form. Each component or characteristic may be considered optional unless otherwise expressly stated. Each component or feature may be implemented in a form that is not combined with other components or features. In addition, some of the elements and / or features may be combined to form an embodiment of the present invention. The order of the operations described in the embodiments of the present invention may be changed. Some configurations or features of certain embodiments may be included in other embodiments, or may be replaced with corresponding configurations or features of other embodiments.
본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.Embodiments of the present invention may be implemented by various means. For example, embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.For a hardware implementation, the method according to embodiments of the present invention may be implemented in one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs) , Field programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.In the case of an implementation by firmware or software, the method according to embodiments of the present invention may be implemented in the form of a module, a procedure or a function for performing the functions or operations described above. The software code can be stored in a memory unit and driven by the processor. The memory unit may be located inside or outside the processor, and may exchange data with the processor by various well-known means.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성 요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only a case directly connected but also a case where the part is electrically connected with another part in between. In addition, when a part includes an element, it means that the element may include other elements, not excluding other elements, unless specifically stated otherwise.
또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.Also, the term module as used herein refers to a unit for processing a specific function or operation, which can be implemented by hardware, software, or a combination of hardware and software.
이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention, and are not intended to limit the scope of the invention.
도 1 내지 도 4를 참조하면, 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 장치는, 컴퓨터 메모리(210) 상에 특별한 구조를 갖는 메모리 공간을 할당하여 그 공간과 구조를 VNIC(212)로 활용할 수 있으며, VNIC(212)는 복수로 생성될 수 있다. 복수로 생성된 VNIC(212)는 CPU(220)의 코어들(221)과 매칭되어, 코어(C_n, n은 정수)와 매칭될 수 있다. 본 명세서에서 메모리(210)와 CPU(220)는 물리적인 실제 리소스를 의미할 수 있으나, 이에 한정되는 것은 아니며 물리머신 상에 생성된 가상머신을 구성하는 가상 메모리와 가상 CPU를 의미할 수도 있다. Referring to FIGS. 1 to 4, a network interface virtualization apparatus according to an embodiment of the present invention allocates a memory space having a special structure on a
또한, 몇몇 다른 실시예에서 하나의 네트워크 어플리케이션(211)이 접근하는 CPU(220) 내 코어들(221)을 하나의 VNIC(212)와 매핑할 수 있다.In some other embodiments, the
즉, 도 3에 도시된 바와 같이, 하나의 네트워크 어플리케이션(211)이 각각 하나의 VNIC(212)와 매핑될 수 있다. 예를 들어, 메모리(210) 상에 로드된 어플리케이션_1(211_1)은 3개의 코어(C_1, C_2, C_3)로 구성된 제1 CPU그룹(221)을 점유하여 사용하고, 어플리케이션_2(211_2)와 어플리케이션 3(211_3)은 각각 2개의 코어(C_4, C_5)로 구성된 제2 CPU 그룹(222)와, 1개의 코어(C_6)로 구성된 제3 CPU 그룹(223)을 점유하여 사용한다고 할 때, 네트워크 어플리케이션(211) 단위로 독립적인 패킷 데이터 처리가 가능해지며, 독립적인 싱글코어의 경우에는 1개의 코어(C_6)가 하나의 VNIC(212)에 접근하게 되므로 순차적으로 패킷 데이터의 처리가 가능하다. That is, as shown in FIG. 3, one
다만, 도 2 및 도 4에서와 같이, 멀티코어를 사용하는 네트워크 어플리케이션의 경우, 즉, 특정한 네트워크 어플리케이션(211)이 복수의 코어들(221)을 점유하여 동시에 사용하는 경우 일시에 하나의 VNIC(212)에 패킷 데이터 처리를 위해 접근하게 되면, 교착 내지 병목 현상이 발생할 수도 있다.2 and 4, in the case of a network application using a multicore, that is, when a
도 5및 도 6를 참조하여, 본 발명의 다른 실시예에 따른 네트워크 인터페이스 가상화 장치에 대해 설명한다, 도 5를 참조하면, 본 발명의 다른 실시예예 따른 네트워크 인터페이스 가상화 장치는, 컴퓨팅 디바이스(200)의 메모리(210) 상에 설정된 복수의 가상 네트워크 인터페이스 카드(VNIC)가 네트워크 어플리케이션(211) 단위로 생성 및 관리되는 것이 아니라, 네트워크 어플리케이션(211)이 점유하는 복수의 CPU코어와 일대일로 대응된다. 예를 들어, 메모리(210) 상에 로드된 어플리케이션_1(211_1)은 3개의 코어(C_1, C_2, C_3)로 구성된 제1 CPU그룹(221)을 점유하여 사용하는데, 3개의 코어(C_1, C_2, C_3)는 각각 VNIC_1(212_1), VNIC_2(212_2), VNIC_3(212_3)와 연결되도록, NIC(100) 내의 가상화 정보부(110)에서 VNIC정보를 관리할 수 있다. 마찬가지로 어플리케이션_2(211_2)는2개의 코어(C_4, C_5)로 구성된 제2 CPU 그룹(222)을 점유하는데, 2개의 코어(C_4, C_5)가 각각 VNIC_4(212_4), VNIC_5(212_5)와 연결되도록, 가상화 정보부(110)에서 VNIC 정보를 관리할 수 있다.5, a network interface virtualization apparatus according to another embodiment of the present invention will be described with reference to FIG. 5. Referring to FIG. 5, a network interface virtualization apparatus according to another embodiment of the present invention includes a
몇몇 다른 실시에에서, 네트워크 어플리케이션(211)이 점유하는 복수의 CPU코어 1개당, VNIC가 2개 이상 배치될 수도 있다.In some other implementations, two or more VNICs may be arranged for each of a plurality of CPU cores occupied by the
또한, 몇몇 다른 실시에에서, 하나의 네트워크 어플리케이션(211)이 점유하는 복수의 코어와 대응되는 복수의 가상 네트워크 인터페이스 카드는 서로 동일한 ID예를 들어 동일한 MAC주소나 동일한 VLAN ID를 가질 수 있다.Further, in some other implementations, a plurality of virtual network interface cards corresponding to a plurality of cores occupied by one
도 6을 참조하면, 본 실시예에 따른 네트워크 인터페이스 가상화 장치는, 제어부(140), 가상화 정보부(110), DMA 입력부(121)와 DMA 출력부(122)를 구비한 DMA 입출력부(120), 입력 버퍼부(131)와 출력 버퍼부(132)를 구비한 입출력 버퍼부(130), 및 입력부(141)와 출력부(142)를 구비한 입출력부(140)를 포함한다. 여기서, 입출력 버퍼부(130)는, 각각 하나씩의 입력 버퍼부(131)와, 출력 버퍼부(132)를 구비할 수 있으며, 컴퓨팅 디바이스(200)의 메모리(210) 상에 생성 및 관리되는 복수의 가상 네트워크 인터페이스 카드(VNIC)(212)와 관련된 메타데이터를 생성, 저장 및 관리하는 메타데이터 관리부(150)를 더 포함할 수 있다.6, the network interface virtualization apparatus according to the present embodiment includes a
우선, 상기 가상화 장치가 장착되어 구현되거나 연동할 컴퓨터(200)는 적어도 CPU(220)와 메모리(210)를 구비하고, 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)(212)가 영역이 메모리(210) 상에 미리 설정된다. At first, the
가상화 정보부(110)는 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 포함하는 NIC 가상화 정보가 저정된다. 여기서, 가상화 정보부는 네트워크 인터페이스 카드에 탑재된 메모리로 구현될 수 있다. The
입력부(141)는 네트워크로부터 패킷 데이터를 전송받아 입력 버퍼부(131)에 상기 패킷 데이터를 쓰고, 저장 알림 신호를 생성하여 제어부(140)에 출력한다. 입력 버퍼부(131)는 입력부(141)에서 전송된 여러 개의 패킷 데이터를 임시로 보관한다. DMA 입력부(121)는 가상화 정보부(110)의 정보를 기반으로 입력 버퍼부(131)의 패킷 데이터를 컴퓨터의 메모리(210)로 전송한다. The input unit 141 receives packet data from the network, writes the packet data in the
DMA 출력부(122)는 가상화 정보부(110)의 정보를 기반으로 컴퓨터 메모리(210) 상의 패킷 데이터를 출력 버퍼부(132)로 복사하며, 출력 버퍼부(132)는 출력부(142)가 패킷 데이터를 출력하도록 상기 패킷 데이터를 임시로 보관한다. 출력부(142)는 출력 버퍼부(132)의 패킷 데이터를 네트워크로 전송한다. The
제어부(140)는 상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 가상화 정보부(110), DMA 입출력부(121,122), 입출력 버퍼부(131,132) 및 입출력부(141,142)를 제어하기 위한 제어신호를 출력한다.The
메타데이터 관리부(150)는, VNIC(212)로 입출력되는 복수의 패킷 데이터의 입출력 설정값을 관리하는 패킷 관리부(160)를 더 포함할 수 있으며, 복수의 VNIC(212) 중에서 하나의 네트워크 어플리케이션(211)에서 점유하는 코어들과 대응되는 VNIC(212)에 대한 목록을 관리하는 VNIC리스트관리부(170)를 더 포함할 수 있다. 즉, 이전 실시예에서는 네트워크 어플리케이션(211) 당 하나의 VNIC(212)만 존재하기 때문에 별도의 리스트를 관리할 필요가 없었으나, 본 실시예에서는 코어별로 1개 이상의 VNIC(212)가 할당될 수 있기 때문에 이에 대한 리스트를 관리할 수 있다.The metadata managing unit 150 may further include a packet managing unit 160 managing input and output setting values of a plurality of packet data input and output to and from the
패킷관리부(160)는, 패킷 입출력 정책에 따라 복수의 패킷 데이터 각각에 고유한 일련번호를 부여할 수 있으며, 복수의 패킷 데이터가 일련번호에 따라 순차적으로 복수의 VNIC(212)로 입력되도록 제어할 수 있다.The packet management unit 160 can assign a unique serial number to each of a plurality of packet data in accordance with the packet input / output policy, and controls the plurality of packet data to be sequentially input to the plurality of
입력정책정보부(161)는, 패킷 데이터가 입력되었을 때 어떤 정책에 따라 여러개의 VNIC에 분배하는지에 대한 정보를 저장할 수 있다. 입력순서관리부(162)는 패킷 데이터 입력시 패킷 데이터마다 부여하는 일련번호를 저장할 수 있다. The input policy information unit 161 may store information on how to distribute the packet data to a plurality of VNICs according to a policy when the packet data is input. The input sequence management unit 162 may store a serial number assigned to each packet data when the packet data is input.
패킷 데이터 입력 정책은 에를 들어, CPU코어를 순서대로 돌아가며 패킷 데이터를 입력하는 라운드 로빈(Round-robin) 방식, CPU 코어 각각에 비중을 두어서 해당 비중에 따라 순서대로 돌아가며 패킷 데이터를 입력하는 비중 라운드 로빈(Weighted Round-robin) 방식, CPU 코어의 입력버퍼나 출력버퍼 또는 이를 조합한 패킷의 개수 중 가장 적은 입력버퍼에 패킷 데이터를 집어넣는 버퍼 최소 패킷(Buffer Least Packet) 방식, 버퍼 최소 패킷 방식에 비중을 고려하는 비중 버퍼 최소 패킷(Weighted Buffer Least Packet)방식, 및 소스 MAC주소를 해싱(Hashing)된 값에 따라 CPU코어의 입력 버퍼에 패킷을 집어넣는 소스 해싱(Source Hashing)방식이 있을 수 있으나, 이에 한정되는 것은 아니며 패킷 데이터를 적절히 각각의 VNIC에 분산하는 다른 방법이 사용될 수도 있다.The packet data input policy is a round-robin method in which the CPU cores are sequentially turned on and the packet data is input, and a specific gravity round to input packet data, A weighted round-robin method, a buffered least packet method for inserting packet data into an input buffer having the smallest number of input or output buffers of the CPU core or a combination of the input and output buffers, and a buffer minimum packet method There may be a Weighted Buffer Least Packet scheme considering the specific gravity and a Source Hashing scheme for putting a packet in the input buffer of the CPU core according to the hashed value of the source MAC address , But other methods may be used to distribute the packet data appropriately to each VNIC.
출력정책정보부(163)는 CPU 코어에서 처리된 패킷 데이터를 VNIC(212)에서 NIC(100)로 출력할 때 어떤 정책에 따라 패킷 데이터를 출력하는지에 대한 정보를 저장할 수 있다. 출력순서관리부(164)는 패킷 데이터의 출력 정책이 순차출력 방식인 경우, 어떤 일련번호에 해당하는 패킷 데이터를 출력할 것인지에 대한 정보를 관리할 수 있다. 즉, 네트워크와 연결되어 복수의 패킷 데이터를 송수신하는 입출력부(140)는 출력 정책 및 일련번호에 따라 복수의 패킷 데이터를 순차적으로 네트워크로 출력할 수도 있다.The output policy information unit 163 may store information on which policy the packet data is output according to a policy when the packet data processed by the CPU core is output from the
패킷 데이터 출력 정책은 앞서 언급한 패킷 데이터 입력 정책과 유사하며, 이에 추가로 패킷 입출력을 담당하는 NIC장치에서 부여한 출력 시퀀스 번호(Output Sequence Number)에 해당하는 패킷을 찾아서 이를 NIC(100)에 출력하고, 시퀀스 번호를 1만큼 증가시켜 출력 시퀀스 번호에 맞도록 패킷을 출력하는 시퀀스(Sequence) 방식이 있을 수 있다.The packet data output policy is similar to the above-described packet data input policy. In addition, the packet data output policy finds a packet corresponding to an output sequence number assigned by the NIC apparatus responsible for packet input / output and outputs the packet to the
정책변경관리부(165)는 처리된 패킷 데이터를 VNIC(212)에서 NIC(100)로 출력할 때 정책이 변경될 경우 이에 대한 정보를 저장할 수 있다. 예를 들어, CPU코어가 패킷의 출력 시퀀스 번호(Output Sequence Number), 패킷 출력 정책(Packet Output Policy), 및 차기 출력 시퀀스 번호(Next Output Sequence Number)를 VNIC(212)에게 보내면, VNIC(212)는 해당 정보를 정책변경관리부(165)에 저장한다. 이어서, VNIC(212)는 출력 시퀀스 번호와 동일한 번호를 가진 패킷 데이터를 NIC(100)로 출력하고, 출력 이후 VNIC(212)의 정책을 해당 패킷 출력 정책으로 변경하고, 출력 시퀀스 번호를 수신한 차기 출력 시퀀스 번호로 변경할 수 있다. 이와 같은 정책변경관리부(165)는 순차적이지 않도록 패킷을 출력하는 도중에 순차적으로 새로운 무리의 패킷을 출력하는데 사용될 수 있다.The policy change management unit 165 may store information on the changed policy when the processed packet data is output from the
도 7을 참조하면, 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 장치를 통해 패킷 데이터가 분배되는 과정이 도시된다.Referring to FIG. 7, a process of distributing packet data through a network interface virtualization apparatus according to an embodiment of the present invention is illustrated.
도 7을 참조하면, 먼저, 입력부(141)를 통해 외부 네트워크로부터 입력된 패킷 데이터(P)는 입출력버퍼(130)에 입력되고, 상기한 패킷 데이터 입력 정책에 따라 패킷관리부(160)가 해당 패킷 데이터(P)에 입력 시퀀스 번호(P6)를 할당하고, 패킷 데이터 입력 정책에 따라 해당 어플리케이션(211_2)의 코어들(222)과 적어도 1대1로 매핑되는 복수의 VNIC(212_2, 212_3, 212_4)로 패킷 데이터를 입력할 수 있다. 도시된 예에서는, 라운드 로빈 방식이 패킷 입력 정책인 경우를 예로 들어, 입력 시퀀스 번호 6번인 패킷(P6)이 비어있는 VNIC_4(212_4)로 제공될 수 있다.7, the packet data P input from the external network through the input unit 141 is input to the input /
도시되지는 않았으나, 반대로 VNIC(212)로부터 NIC(100)로 출력되는 패킷 데이터도 패킷 출력 정책에 따라 패킷의 출력 시퀀스 번호 등을 기초로 출력 순서를 결정할 수도 있다.
Conversely, the packet data output from the
이하에서는, 도 8을 참고하여, 본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법에 대해 설명한다.Hereinafter, a network interface virtualization method according to an embodiment of the present invention will be described with reference to FIG.
본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법은, 컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(VNIC)를 생성하는 단계, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와, 상기 복수의 가상 네트워크 인터페이스 카드를 일대일로 대응시키는 단계를 포함한다.
A network interface virtualization method according to an embodiment of the present invention includes the steps of creating a plurality of virtual network interface cards (VNIC) on a memory of a computing device, a plurality of CPUs occupying one network application executed in the computing device Core, and the plurality of virtual network interface cards in a one-to-one correspondence.
NICNIC
가상화Virtualization
정보 생성 단계( Information generation step (
S100S100
))
앞서 언급한 바와 같이, 본 실시예에 따른 네트워크 인터페이스 가상화 방법은, 컴퓨팅 디바이스(200)의 메모리(210) 상에 설정된 복수의 가상 네트워크 인터페이스 카드(VNIC)가 네트워크 어플리케이션(211)이 점유하는 복수의 CPU코어(C_n)와 일대일로 대응될 수 있다. 즉, 메모리(210) 상에 복수 개의 VNIC(212)이 구현될 수 있으며, 이러한 VNIC의 개수는 컴퓨터에 구비된 CPU 코어(C_n)의 개수와 같을 수 있다. 즉, 컴퓨팅 디바이스(200)에 구현된 복수의 CPU 코어(221) 각각에 대응하여 메모리(210)상에 복수의 VNIC(212)이 구현될 수 있으며, 하나의 VNIC(212)에는 하나의 CPU 코어(C_n)가 매칭될 수 있다. 이러한 VNIC(212)은 NIC(110)로부터 수신된 데이터 패킷을 임시 저장하기 위한 입력버퍼부 및 해당 VNIC과 연동되는 CPU 코어(C_n)에 의해 처리된 데이터 패킷을 임시 저장하는 출력 버퍼부를 포함할 수 있다. NIC(110)는 예를 들어, CPU 코어의 0번이거나 VNIC를 지원하는 네트워크 인터페이스 카드일 수 있다.As described above, the network interface virtualization method according to the present embodiment is characterized in that a plurality of virtual network interface cards (VNIC) set on the
CPU(220)는 제어부(140)를 통하여 가상화 정보부(11)에 위와 같이 생성된 복수의 VNIC(212)의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 입력할 수 있다(S100).
The
패킷 데이터 입력 단계(Packet data input step ( S200S200 ))
NIC(100)에 구비된 입력부(131)는 네트워크로부터 패킷 데이터를 읽어 입력 버퍼부(121)에 쓰고 제어부(140) 알린다. 제어부(140)는 입력 버퍼부(121) 안에 있는 패킷 데이터의 Destination MAC 또는 VLAN 정보와 가상화 정보부(110)의 정보를 참고해 가상 NIC를 선택하고, 상기 선택된 가상 NIC의 입력 ring 버퍼 주소를 얻는다. 제어부(140)는 Destination MAC이 멀티캐스트(multicast)이면 기설정된 MAC 주소 또는 기설정된 VLAN ID를 갖는 가상 NIC를 선택한다. 여기서, 일예로 기설정된 MAC 주소는 ff:ff:ff:ff:ff:ff 이고, 기설정된 VLAN ID는 4095가 될 수 있다. The
제어부(140)는 여분의 패킷 ring 버퍼 주소가 없을 경우 패킷 데이터를 버린다. 또한, 제어부(140)는 Destination MAC 또는 VLAN 정보에 해당되는 가상 NIC이 없을 경우에도 패킷 데이터를 버린다. 또한, 제어부(140)는 가상 NIC의 입력 대역폭을 참고해 패킷 데이터의 대역폭이 할당된 가상 NIC의 입력 대역폭을 초과하는 경우에도 패킷 데이터를 버린다. 제어부(140)는 패킷 데이터에 포함된 MAC 주소가 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우에도 패킷 데이터를 버린다.The
제어부(140)는 DMA 출력부(122)를 통해 가상 NIC의 입력 ring 버퍼 주소에 패킷 데이터를 쓰고, 입력 버퍼부에서 해당 패킷 데이터를 삭제하고, VNIC의 입력 대역폭 정보를 갱신한다.The
이때, 메타데이터 관리부(150)에 포함된 패킷관리부(160)의 패킷 입출력 정책에 따라 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하고, 복수의 패킷 데이터가 일련번호에 따라 순차적으로 또는 특정한 순서에 따라 복수의 VNIC(212)로 입력될 수 있다.According to the packet input / output policy of the packet management unit 160 included in the metadata management unit 150, a unique serial number is assigned to each of a plurality of packet data, and a plurality of packet data are sequentially or sequentially To the plurality of
예를 들어, 입력정책정보부(161)에서 설정한 입력정책이 라운드로빈(round robin) 방식일 경우, 하나의 네트워크 어플리케이션(211)에서 점유하는CPU 코어들(221) 각각에 대응되는 복수의 VNIC(212)에 번갈아가면서 순차적으로 패킷을 입력할 수 있다. 이때, 입력순서관리부(162)에서 패킷 데이터마다 부여되는 일련번호를 저장하여 관리할 수 있으며, 서로 다른 네트워크 어플리케이션(211)에서 점유하는 다른 그룹의 CPU 코어(C_n) 사이에서는 위와 같은 입력정책이 적용되지 않을 수 있다. 예를 들어, 4개의 CPU 코어(C_1, C_2, C_3, C_4)가 라운드 로빈 방식으로 패킷 데이터를 입력받는 경우, 1번 패킷부터 4번 패킷까지 순서대로 입력되고, 그 이후에 다시 4개의 코어에 5번부터 8번 패킷까지 순서대로 입력될 수 있다.For example, when the input policy set in the input policy information unit 161 is a round robin scheme, a plurality of VNICs (hereinafter, referred to as " VNICs ") corresponding to
위와 같이, 복수의 가상 네트워크 인터페이스 카드(VNIC)로 복수의 패킷 데이터를 제공하고 중첩 할당되지 않도록 설정되어 각각에 할당된 VNIC(212)로 CPU 코어(C_n)가 접근하여 신속하게 소정의 작업을 처리할 수 있다. 또한, 본 과정에서 앞에서 상술한 바와 같이, 패킷 입출력 정책에 따라 복수의 패킷 데이터 각각에 고유한 일련번호를 부여할 수 있으며, 소정의 일련번호에 따라 복수의 가상 네트워크 인터페이스 카드(VNIC)로 복수의 패킷 데이터를 제공할 수 있다.
As described above, the plurality of virtual network interface cards (VNIC) provide a plurality of packet data, and are set so as not to be overlayed, and the CPU core (C_n) accesses each of the VNICs can do. As described above, in the present process, a unique serial number can be assigned to each of a plurality of packet data according to the packet input / output policy, and a plurality of virtual network interface cards (VNIC) Packet data can be provided.
패킷 데이터 출력 단계(Packet data output step ( S300S300 ))
제어부(140)는 모든 VNIC(212)에 대해 아래의 과정을 수행하며, VNIC(212)의 대역폭에 여유가 있을 경우 아래의 과정을 실행한다.The
제어부(140)는 DMA 출력부(122)를 통해 출력 ring 버퍼에서 패킷 데이터를 출력 버퍼(132)로 복사하고, CPU(220)에 패킷 데이터를 가져갔다는 정보를 전달한다. VNIC(212)로 제공된 패킷 데이터는 각각의 VNIC(212)와 일대일로 대응되는 CPU 코어(C_n)에서 작업을 완료하면, 출력정책정보부(163)에서 설정한 패킷 데이터 출력 정책에 따라 출력순서관리부(164)의 순서를 기초로 처리가 완료된 패킷 데이터에 대응하는 패킷을 각각의 VNIC(212)에서 NIC(100)로 전송할 수 있다. 예를 들어, 출력정책이 시퀀스(sequence) 방식인 경우, NIC(100)에서 부여한 출력 시퀀스 번호에 해당하는 패킷을 순차적으로 출력하고, 출력 시퀀스 번호를 하나씩 가산하여 출력 패킷 순서를 관리할 수 있다.The
제어부(140)는 패킷 데이터의 Destination MAC이 상기 입출력 가능한 MAC 주소 목록에 없으면 패킷 데이터를 버린다. 제어부(140)는 출력부(142)에 패킷 데이터를 출력하라고 명령하고, 가상 NIC의 출력 대역폭 정보를 갱신한다. 출력부(142)는 출력 버퍼부(132)의 패킷 데이터를 네트워크로 출력한 후 출력 버퍼부(132)에서 해당 패킷 데이터를 삭제한다.If the destination MAC of the packet data is not in the input / outputable MAC address list, the
또한 몇몇 다른 실시예에서, 복수의 VNIC로부터 복수의 CPU코어에서 처리가 완료된 복수의 패킷 데이터를 앞서 설정한 일련번호에 따라 물리 네트워크 인터페이스 카드(NIC)로 제공하는 단계를 더 포함할 수 있다.In yet another embodiment, the method may further include providing a plurality of processed packet data from the plurality of VNICs to the physical network interface card (NIC) according to the serial number set in advance.
또한, 패킷 정책을 변경하여 출력하고자 하는 경우, 복수의 CPU코어로부터 패킷 변경 요청을 수신하고, 패킷 변경 요청을 기초로 복수의 VNIC 상에서의 상기 복수의 패킷 데이터의 입출력 순서를 변경하는 단계를 더 포함할 수 있다. 구체적으로, CPU 코어(C_n)가 패킷의 출력 시퀀스 번호(output sequence number), 수정 패킷 출력 정책(next packet output policy) 및 수정 출력 시퀀스 번호(next packet sequence number)를 VNIC(212)에 보내면, VNIC(212)는 해당 정보를 정책 변경 큐(Policy Change Queue)에 추가할 수 있다. VNIC(212)는 정책 변경 큐의 첫번째 명령에 해당하는 패킷의 출력 시퀀스 번호와 동일한 패킷을 출력한 이후, VNIC(212)의 정책을 CPU 코어(C_n)로부터 수신한 수정 패킷 출력 정책으로 변경하여, VNIC(212)와 NIC(100) 사이의 패킷 입출력 순서를 설정할 수 있다. 이어서, VNIC(212)의 출력 시퀀스 번호를 수정 출력 시퀀스 번호로 변경하여 다음번 출력 패킷의 순서를 수정할 수 있다.
The method further includes the step of receiving a packet change request from a plurality of CPU cores and modifying the input / output order of the plurality of packet data on the plurality of VNICs based on the packet change request, when the packet policy is to be changed and output can do. Specifically, when the CPU core C_n sends the output sequence number of the packet, the next packet output policy, and the next packet sequence number to the
NICNIC 가상화Virtualization 정보 삭제 단계( Information deletion step ( S400S400 ))
CPU(220)는 가상화 정보부(110)에 생성한 NIC 가상화 정보를 삭제한다.
The
본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법을 실행하기 위한 컴퓨터 프로그램은, 컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(VNIC)를 생성하는 단계, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와, 상기 복수의 가상 네트워크 인터페이스 카드를 일대일로 대응시키는 단계를 포함한다.A computer program for executing a network interface virtualization method according to an embodiment of the present invention includes the steps of creating a plurality of virtual network interface cards (VNIC) on a memory of a computing device, A plurality of CPU cores occupying the plurality of virtual network interface cards and a plurality of virtual network interface cards in a one-to-one correspondence manner.
또한, 컴퓨터 프로그램은, 상기 복수의 가상 네트워크 인터페이스 카드로 복수의 패킷 데이터를 제공하는 단계를 더 포함할 수 있다.In addition, the computer program may further comprise providing a plurality of packet data to the plurality of virtual network interface cards.
또한, 컴퓨터 프로그램은, 패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는 단계를 더 포함할 수 있다.The computer program may further include a step of assigning a unique serial number to each of the plurality of packet data in accordance with the packet input / output policy.
또한, 컴퓨터 프로그램은, 상기 일련번호에 따라 상기 복수의 가상 네트워크 인터페이스 카드로 상기 복수의 패킷 데이터를 제공하는 단계를 더 포함할 수 있다.The computer program may further include providing the plurality of packet data to the plurality of virtual network interface cards according to the serial number.
또한, 컴퓨터 프로그램은, 상기 복수의 가상 네트워크 인터페이스 카드로부터 상기 복수의 CPU코어에서 처리가 완료된 상기 복수의 패킷 데이터를 상기 일련번호에 따라 물리 네트워크 인터페이스 카드(NIC)로 제공하는 단계를 더 포함할 수 있다.The computer program may further comprise the step of providing the plurality of packet data processed by the plurality of CPU cores from the plurality of virtual network interface cards to the physical network interface card (NIC) according to the serial number have.
또한, 컴퓨터 프로그램은, 상기 복수의 CPU코어로부터 패킷 변경 요청을 수신하는 단계, 및 상기 패킷 변경 요청을 기초로 상기 복수의 가상 네트워크 인터페이스 카드 상에서의 상기 복수의 패킷 데이터의 입출력 순서를 변경하는 단계를 더 포함할 수 있다.The computer program may further include the steps of receiving a packet change request from the plurality of CPU cores and changing an input / output order of the plurality of packet data on the plurality of virtual network interface cards based on the packet change request .
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있다.It will be apparent to those skilled in the art that various modifications, substitutions and substitutions are possible, without departing from the scope and spirit of the invention as disclosed in the accompanying claims. will be. Therefore, the embodiments disclosed in the present invention and the accompanying drawings are intended to illustrate and not to limit the technical spirit of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments and the accompanying drawings . The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention. In addition, claims that do not have an explicit citation in the claims may be combined to form an embodiment or included in a new claim by amendment after the application.
Claims (13)
상기 가상화 정보부는, 상기 복수의 가상 네트워크 인터페이스 카드가, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와 일대일로 대응되도록 설정하는, 네트워크 인터페이스 가상화 장치.And a virtualization information unit for managing information of a plurality of virtual network interface cards (VNICs) set on the memory of the computing device,
Wherein the virtualization information unit sets the plurality of virtual network interface cards to correspond one-to-one with a plurality of CPU cores occupied in one network application executed in the computing device.
상기 가상 네트워크 인터페이스 카드로 전송되는 복수의 패킷 데이터의 입출력 설정값을 관리하는 패킷 관리부를 더 포함하는, 네트워크 인터페이스 가상화 장치.The method according to claim 1,
Further comprising: a packet management unit for managing input / output setting values of a plurality of packet data transmitted to the virtual network interface card.
상기 패킷 관리부는, 패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는, 네트워크 인터페이스 가상화 장치.3. The method of claim 2,
Wherein the packet management unit assigns a unique serial number to each of the plurality of packet data in accordance with a packet input / output policy.
상기 패킷 관리부는, 상기 복수의 패킷 데이터가 상기 일련번호에 따라 순차적으로 상기 복수의 가상 네트워크 인터페이스 카드로 입력되도록 제어하는, 네트워크 인터페이스 가상화 장치.The method of claim 3,
Wherein the packet management unit controls the plurality of packet data to be sequentially input to the plurality of virtual network interface cards according to the serial number.
네트워크와 연결되어 상기 복수의 패킷 데이터를 송수신하는 입출력부를 더 포함하되,
상기 입출력부는 상기 일련번호에 따라 상기 복수의 패킷 데이터를 순차적으로 상기 네트워크로 출력하는, 네트워크 인터페이스 가상화 장치.The method of claim 3,
And an input / output unit connected to the network for transmitting / receiving the plurality of packet data,
And the input / output unit sequentially outputs the plurality of packet data to the network according to the serial number.
상기 복수의 가상 네트워크 인터페이스 카드는 동일한 ID를 가지는, 네트워크 인터페이스 가상화 장치.The method according to claim 1,
Wherein the plurality of virtual network interface cards have the same ID.
상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 CPU코어와, 상기 복수의 가상 네트워크 인터페이스 카드를 일대일로 대응시키는 단계를 포함하는, 네트워크 인터페이스 가상화 방법.Creating a plurality of virtual network interface cards (VNIC) on a memory of a computing device;
A plurality of CPU cores occupying one network application running on the computing device; and mapping the plurality of virtual network interface cards one-to-one.
상기 복수의 가상 네트워크 인터페이스 카드로 복수의 패킷 데이터를 제공하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.8. The method of claim 7,
Further comprising providing a plurality of packet data to the plurality of virtual network interface cards.
패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.9. The method of claim 8,
And assigning a unique serial number to each of the plurality of packet data in accordance with a packet input / output policy.
상기 일련번호에 따라 상기 복수의 가상 네트워크 인터페이스 카드로 상기 복수의 패킷 데이터를 제공하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.10. The method of claim 9,
And providing the plurality of packet data to the plurality of virtual network interface cards according to the serial number.
상기 복수의 가상 네트워크 인터페이스 카드로부터 상기 복수의 CPU코어에서 처리가 완료된 상기 복수의 패킷 데이터를 상기 일련번호에 따라 물리 네트워크 인터페이스 카드(NIC)로 제공하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.10. The method of claim 9,
And providing the plurality of packet data processed by the plurality of CPU cores from the plurality of virtual network interface cards to the physical network interface card (NIC) according to the serial number.
상기 복수의 CPU코어로부터 패킷 변경 요청을 수신하는 단계; 및
상기 패킷 변경 요청을 기초로 상기 복수의 가상 네트워크 인터페이스 카드 상에서의 상기 복수의 패킷 데이터의 입출력 순서를 변경하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.9. The method of claim 8,
Receiving a packet change request from the plurality of CPU cores; And
Further comprising changing an input / output order of the plurality of packet data on the plurality of virtual network interface cards based on the packet change request.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140182713A KR101634672B1 (en) | 2014-12-17 | 2014-12-17 | Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140182713A KR101634672B1 (en) | 2014-12-17 | 2014-12-17 | Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160073867A true KR20160073867A (en) | 2016-06-27 |
KR101634672B1 KR101634672B1 (en) | 2016-07-08 |
Family
ID=56344486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140182713A KR101634672B1 (en) | 2014-12-17 | 2014-12-17 | Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101634672B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060353A (en) * | 2016-11-29 | 2018-06-07 | 주식회사 에프아이시스 | System and Method for loseless load sharing acceleration and QoS guarantee of Virtual Machines |
CN118740754A (en) * | 2024-08-30 | 2024-10-01 | 苏州元脑智能科技有限公司 | Flow control method and device for server network port |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110046240A (en) | 2009-10-27 | 2011-05-04 | 한국전자통신연구원 | Virtualization Support Programmable Platform Devices and Packet Delivery Methods |
KR20110046895A (en) * | 2009-10-29 | 2011-05-06 | 주식회사 케이티 | Method for mapping network interface in mobile terminal having multi network interface |
KR101232211B1 (en) | 2008-12-05 | 2013-02-12 | 한국전자통신연구원 | System and method for network virtualization |
KR101275293B1 (en) | 2009-10-26 | 2013-06-14 | 한국전자통신연구원 | Network apparatus and Method for supporting network virtualization |
KR20130067906A (en) * | 2011-12-14 | 2013-06-25 | 한국전자통신연구원 | Method for supproting virtual network interface |
-
2014
- 2014-12-17 KR KR1020140182713A patent/KR101634672B1/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101232211B1 (en) | 2008-12-05 | 2013-02-12 | 한국전자통신연구원 | System and method for network virtualization |
KR101275293B1 (en) | 2009-10-26 | 2013-06-14 | 한국전자통신연구원 | Network apparatus and Method for supporting network virtualization |
KR20110046240A (en) | 2009-10-27 | 2011-05-04 | 한국전자통신연구원 | Virtualization Support Programmable Platform Devices and Packet Delivery Methods |
KR20110046895A (en) * | 2009-10-29 | 2011-05-06 | 주식회사 케이티 | Method for mapping network interface in mobile terminal having multi network interface |
KR20130067906A (en) * | 2011-12-14 | 2013-06-25 | 한국전자통신연구원 | Method for supproting virtual network interface |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060353A (en) * | 2016-11-29 | 2018-06-07 | 주식회사 에프아이시스 | System and Method for loseless load sharing acceleration and QoS guarantee of Virtual Machines |
CN118740754A (en) * | 2024-08-30 | 2024-10-01 | 苏州元脑智能科技有限公司 | Flow control method and device for server network port |
Also Published As
Publication number | Publication date |
---|---|
KR101634672B1 (en) | 2016-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3706394B1 (en) | Writes to multiple memory destinations | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US20220197685A1 (en) | Technologies for application-specific network acceleration with unified coherency domain | |
US10348830B1 (en) | Virtual non-volatile memory express drive | |
CN112217746B (en) | Message processing method, host and system in cloud computing system | |
CN105511954B (en) | Message processing method and device | |
US20160127492A1 (en) | Non-volatile memory express over ethernet | |
JP2018537006A (en) | Packet processing method, host, and system in cloud computing system | |
JP2016072963A (en) | Techniques for routing service chain flow packets between virtual machines | |
US10341264B2 (en) | Technologies for scalable packet reception and transmission | |
US10332235B1 (en) | Direct memory access for graphics processing unit packet processing | |
US9292462B2 (en) | Broadcast for a distributed switch network | |
CN111176829B (en) | Flexible resource allocation of physical and virtual functions in virtualized processing systems | |
US11487567B2 (en) | Techniques for network packet classification, transmission and receipt | |
US11343176B2 (en) | Interconnect address based QoS regulation | |
JP2022105146A (en) | Acceleration system, acceleration method, and computer program | |
US11301278B2 (en) | Packet handling based on multiprocessor architecture configuration | |
KR101572689B1 (en) | Apparatus for Virtualizing a Network Interface and Method thereof | |
KR101634672B1 (en) | Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same | |
US11575620B2 (en) | Queue-to-port allocation | |
US10103992B1 (en) | Network traffic load balancing using rotating hash | |
US12056072B1 (en) | Low latency memory notification | |
Wang et al. | High Performance Network Virtualization Architecture on FPGA SmartNIC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190622 Year of fee payment: 4 |