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 PDF

Info

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
Application number
KR1020140182713A
Other languages
Korean (ko)
Other versions
KR101634672B1 (en
Inventor
김성민
Original Assignee
(주)구름네트웍스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)구름네트웍스 filed Critical (주)구름네트웍스
Priority to KR1020140182713A priority Critical patent/KR101634672B1/en
Publication of KR20160073867A publication Critical patent/KR20160073867A/en
Application granted granted Critical
Publication of KR101634672B1 publication Critical patent/KR101634672B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements 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

The present invention provides an apparatus for virtualizing a network interface which resolves a bottleneck phenomenon occurring when a plurality of CPU cores occupied by a single network application access a single virtual interface card. According to an embodiment of the present invention, the apparatus for virtualizing a network interface comprises a virtualization information unit which manages information of a plurality of virtual network interface cards (VNICs) configured on a memory of a computing device. The virtualization information unit configures the virtual network interface cards to correspond to a plurality of CPU cores, occupied by a single network application executed in the computing device, in a one-to-one manner.

Description

네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램{APPARATUS FOR VIRTUALIZING A NETWORK INTERFACE, METHOD THEREOF AND COMPUTER PROGRAM FOR EXCUTING THE SAME}TECHNICAL FIELD [0001] The present invention relates to a network interface virtualization apparatus, a method thereof, and a computer program for executing the same. BACKGROUND OF THE INVENTION 1. Field of the Invention [0002]

본 발명은 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램에 관한 것으로, 더욱 상세하게는 복수의 가상 네트워크 인터페이스 카드를 이용하여 패킷을 고속으로 처리할 수 있는 네트워크 인터페이스 가상화 장치 및 방법에 관한 것이다.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.

대한민국 등록특허 제10-1232211호Korean Patent No. 10-1232211 대한민국 등록특허 제10-1275293호Korean Patent No. 10-1275293 대한민국 공개특허 제10-2011-0046240호Korean Patent Publication No. 10-2011-0046240

본 발명의 목적은, 하나의 네트워크 어플리케이션이 점유하는 복수의 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 computer memory 210, and uses the space and the structure as a VNIC 212 And the VNIC 212 may be generated in plurality. The plurality of VNICs 212 generated may be matched with the cores 221 of the CPU 220 and may be matched with the cores C_n and n are integers. In this specification, the memory 210 and the CPU 220 may mean a physical physical resource, but the present invention is not limited thereto and may refer to a virtual memory and a virtual CPU constituting a virtual machine created on a physical machine.

또한, 몇몇 다른 실시예에서 하나의 네트워크 어플리케이션(211)이 접근하는 CPU(220) 내 코어들(221)을 하나의 VNIC(212)와 매핑할 수 있다.In some other embodiments, the core 221 in the CPU 220 to which one network application 211 accesses can be mapped to one VNIC 212.

즉, 도 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 network application 211 can be mapped to one VNIC 212, respectively. For example, the application_1 211_1 loaded on the memory 210 occupies and uses the first CPU group 221 composed of the three cores C_1, C_2, and C_3, and the application_2 211_2, And the application 3 211_3 occupy and use the second CPU group 222 composed of two cores C_4 and C_5 and the third CPU group 223 composed of one core C_6, Independent packet data can be processed in units of network applications 211. In case of an independent single core, one core (C_6) accesses one VNIC 212, so that packet data can be sequentially processed.

다만, 도 2 및 도 4에서와 같이, 멀티코어를 사용하는 네트워크 어플리케이션의 경우, 즉, 특정한 네트워크 어플리케이션(211)이 복수의 코어들(221)을 점유하여 동시에 사용하는 경우 일시에 하나의 VNIC(212)에 패킷 데이터 처리를 위해 접근하게 되면, 교착 내지 병목 현상이 발생할 수도 있다.2 and 4, in the case of a network application using a multicore, that is, when a specific network application 211 occupies a plurality of cores 221 and uses the same at the same time, one VNIC 212 are accessed for packet data processing, a deadlock or a bottleneck may occur.

도 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 computing device 200, A plurality of virtual network interface cards VNIC set on the memory 210 of the network application 211 are not generated and managed in units of the network applications 211 but are corresponded one to one with a plurality of CPU cores occupied by the network application 211. For example, the application_1 211_1 loaded on the memory 210 occupies and uses the first CPU group 221 composed of the three cores C_1, C_2, and C_3. The three cores C_1, C_2 and C_3 may manage VNIC information in the virtualization information unit 110 in the NIC 100 so as to be connected to VNIC_1 212_1, VNIC_2 212_2 and VNIC_3 212_3, respectively. Similarly, the application_2 211_2 occupies the second CPU group 222 composed of the two cores C_4 and C_5, and the two cores C_4 and C_5 are connected to the VNIC_4 212_4 and the VNIC_5 212_5, The virtualization information unit 110 may manage the VNIC information.

몇몇 다른 실시에에서, 네트워크 어플리케이션(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 network application 211.

또한, 몇몇 다른 실시에에서, 하나의 네트워크 어플리케이션(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 network application 211 may have the same ID, for example, the same MAC address or the same VLAN ID.

도 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 control unit 140, a virtualization information unit 110, a DMA input / output unit 120 having a DMA input unit 121 and a DMA output unit 122, Output buffer unit 130 having an input buffer unit 131 and an output buffer unit 132 and an input and output unit 140 having an input unit 141 and an output unit 142. The input / output buffer unit 130 may include one input buffer unit 131 and one output buffer unit 132. The input buffer unit 130 may include a plurality of input / output buffer units 131 and 132, which are generated and managed on the memory 210 of the computing device 200, And a metadata management unit 150 for generating, storing, and managing metadata related to the virtual network interface card (VNIC) 212 of the virtual network interface card (VNIC) 212.

우선, 상기 가상화 장치가 장착되어 구현되거나 연동할 컴퓨터(200)는 적어도 CPU(220)와 메모리(210)를 구비하고, 복수 개의 가상 네트워크 인터페이스 카드(Network Interface Card, NIC)(212)가 영역이 메모리(210) 상에 미리 설정된다. At first, the computer 200 to which the virtualization apparatus is mounted or to be interlocked includes at least a CPU 220 and a memory 210, and a plurality of virtual network interface cards (NIC) And is set in advance on the memory 210.

가상화 정보부(110)는 가상 NIC의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 포함하는 NIC 가상화 정보가 저정된다. 여기서, 가상화 정보부는 네트워크 인터페이스 카드에 탑재된 메모리로 구현될 수 있다. The virtualization information unit 110 stores 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 / outputable MAC address list, and the status information of the NIC. Here, the virtualization information unit may be implemented as a memory mounted on the network interface card.

입력부(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 input buffer unit 131, generates a storage notification signal, and outputs the storage notification signal to the control unit 140. The input buffer unit 131 temporarily stores a plurality of packet data transmitted from the input unit 141. The DMA input unit 121 transmits the packet data of the input buffer unit 131 to the memory 210 of the computer based on the information of the virtualization information unit 110.

DMA 출력부(122)는 가상화 정보부(110)의 정보를 기반으로 컴퓨터 메모리(210) 상의 패킷 데이터를 출력 버퍼부(132)로 복사하며, 출력 버퍼부(132)는 출력부(142)가 패킷 데이터를 출력하도록 상기 패킷 데이터를 임시로 보관한다. 출력부(142)는 출력 버퍼부(132)의 패킷 데이터를 네트워크로 전송한다. The DMA output unit 122 copies the packet data on the computer memory 210 to the output buffer unit 132 based on the information of the virtualization information unit 110. The output buffer unit 132 outputs the packet data to the output buffer unit 132, And temporarily stores the packet data to output data. The output unit 142 transmits the packet data of the output buffer unit 132 to the network.

제어부(140)는 상기 저장 알림 신호와 상기 NIC 가상화 정보에 기반하여 가상화 정보부(110), DMA 입출력부(121,122), 입출력 버퍼부(131,132) 및 입출력부(141,142)를 제어하기 위한 제어신호를 출력한다.The control unit 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 141 and 142 based on the storage notification signal and the NIC virtualization information do.

메타데이터 관리부(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 VNIC 212. One of the plurality of VNICs 212 And a VNIC list management unit 170 for managing the list of VNICs 212 corresponding to the cores occupied by the VNICs 211 in the VNICs 211. In other words, in the previous embodiment, since there is only one VNIC 212 per network application 211, it is not necessary to manage a separate list. However, in the present embodiment, one or more VNICs 212 may be allocated to each core You can manage the list because there is.

패킷관리부(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 VNICs 212 according to the serial number .

입력정책정보부(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 VNIC 212 to the NIC 100. [ When the output policy of the packet data is a sequential output method, the output order management unit 164 can manage information on which packet data corresponding to which serial number is to be output. That is, the input / output unit 140 connected to the network and transmitting / receiving a plurality of packet data may sequentially output a plurality of packet data to the network according to the output policy and the serial number.

패킷 데이터 출력 정책은 앞서 언급한 패킷 데이터 입력 정책과 유사하며, 이에 추가로 패킷 입출력을 담당하는 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 NIC 100 , There may be a sequence method of increasing the sequence number by 1 and outputting the packet so as to match the output sequence number.

정책변경관리부(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 VNIC 212 to the NIC 100. [ For example, if the CPU core sends an Output Sequence Number, a Packet Output Policy, and a Next Output Sequence Number to the VNIC 212, And stores the information in the policy change management unit 165. Then, the VNIC 212 outputs the packet data having the same number as the output sequence number to the NIC 100, changes the policy of the VNIC 212 to the corresponding packet output policy after the output, The output sequence number can be changed. The policy change management unit 165 may be used to sequentially output a new batch of packets while outputting the packets so that they are not sequential.

도 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 / output buffer 130. The packet management unit 160 controls the packet management unit 160 The input sequence number P6 is assigned to the data P and the plurality of VNICs 212_2, 212_3 and 212_4 mapped at least one to one with the cores 222 of the application 211-2 according to the packet data input policy, The packet data can be input. In the illustrated example, a case where the round robin method is a packet input policy is exemplified, and a packet P6 having an input sequence number 6 can be provided as an empty VNIC_4 212_4.

도시되지는 않았으나, 반대로 VNIC(212)로부터 NIC(100)로 출력되는 패킷 데이터도 패킷 출력 정책에 따라 패킷의 출력 시퀀스 번호 등을 기초로 출력 순서를 결정할 수도 있다.
Conversely, the packet data output from the VNIC 212 to the NIC 100 may also determine the output order based on the output sequence number of the packet or the like in accordance with the packet output policy.

이하에서는, 도 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 memory 210 of the computing device 200 are connected to a plurality of One-to-one correspondence with the CPU core C_n. That is, a plurality of VNICs 212 may be implemented on the memory 210, and the number of the VNICs 212 may be equal to the number of the CPU cores C_n provided in the computer. That is, a plurality of VNICs 212 may be implemented on the memory 210 corresponding to each of the plurality of CPU cores 221 implemented in the computing device 200, and one VNIC 212 may include one CPU core (C_n) may be matched. The VNIC 212 may include an input buffer unit for temporarily storing the data packet received from the NIC 110 and an output buffer unit for temporarily storing the data packet processed by the CPU core C_n interlocked with the VNIC have. The NIC 110 may be, for example, the number 0 of the CPU core or a network interface card supporting the VNIC.

CPU(220)는 제어부(140)를 통하여 가상화 정보부(11)에 위와 같이 생성된 복수의 VNIC(212)의 MAC 주소 또는 VLAN 정보, 입력 ring 버퍼의 주소 목록, 입출력 대역폭, 입출력 가능한 MAC 주소 목록 및 NIC의 상태 정보를 입력할 수 있다(S100).
The CPU 220 transmits the MAC address or VLAN information of the plurality of VNICs 212 generated as described above to the virtualization information unit 11 through the control unit 140, the address list of the input ring buffer, the input / output bandwidth, State information of the NIC can be input (S100).

패킷 데이터 입력 단계(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 input unit 131 provided in the NIC 100 reads the packet data from the network, writes the packet data in the input buffer unit 121, and notifies the control unit 140 of the packet data. The control unit 140 selects the virtual NIC by referring to the destination MAC or VLAN information of the packet data in the input buffer unit 121 and information of the virtualization information unit 110 and obtains the input ring buffer address of the selected virtual NIC. If the destination MAC is multicast, the controller 140 selects a virtual NIC having a predetermined MAC address or a predetermined VLAN ID. Here, for example, the predetermined MAC address is ff: ff: ff: ff: ff, and the predetermined VLAN ID may be 4095. [

제어부(140)는 여분의 패킷 ring 버퍼 주소가 없을 경우 패킷 데이터를 버린다. 또한, 제어부(140)는 Destination MAC 또는 VLAN 정보에 해당되는 가상 NIC이 없을 경우에도 패킷 데이터를 버린다. 또한, 제어부(140)는 가상 NIC의 입력 대역폭을 참고해 패킷 데이터의 대역폭이 할당된 가상 NIC의 입력 대역폭을 초과하는 경우에도 패킷 데이터를 버린다. 제어부(140)는 패킷 데이터에 포함된 MAC 주소가 가상 NIC의 입출력 가능한 MAC 주소 목록에 없는 경우에도 패킷 데이터를 버린다.The control unit 140 discards the packet data if there is no spare packet ring buffer address. Also, the control unit 140 discards the packet data even when there is no virtual NIC corresponding to the Destination MAC or VLAN information. Also, the control unit 140 discards the packet data even when the input bandwidth of the virtual NIC exceeds the input bandwidth of the virtual NIC to which the bandwidth of the packet data is allocated. The control unit 140 discards the packet data even if the MAC address included in the packet data is not in the input / outputable MAC address list of the virtual NIC.

제어부(140)는 DMA 출력부(122)를 통해 가상 NIC의 입력 ring 버퍼 주소에 패킷 데이터를 쓰고, 입력 버퍼부에서 해당 패킷 데이터를 삭제하고, VNIC의 입력 대역폭 정보를 갱신한다.The control unit 140 writes packet data to the input ring buffer address of the virtual NIC through the DMA output unit 122, deletes the corresponding packet data from the input buffer unit, and updates the input bandwidth information of the VNIC.

이때, 메타데이터 관리부(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 VNICs 212 in accordance with the control information.

예를 들어, 입력정책정보부(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 CPU cores 221 occupied by one network application 211 212, the packets can be sequentially input. At this time, the input sequence management unit 162 can store and manage the serial numbers assigned to each packet data, and the above-described input policy is applied between CPU cores C_n of other groups occupied by different network applications 211 . For example, when four CPU cores (C_1, C_2, C_3, C_4) receive packet data in a round-robin fashion, they are input sequentially from the first packet to the fourth packet, From 5th to 8th packets can be input in order.

위와 같이, 복수의 가상 네트워크 인터페이스 카드(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 control unit 140 performs the following process for all the VNICs 212 and performs the following process when the bandwidth of the VNIC 212 is large.

제어부(140)는 DMA 출력부(122)를 통해 출력 ring 버퍼에서 패킷 데이터를 출력 버퍼(132)로 복사하고, CPU(220)에 패킷 데이터를 가져갔다는 정보를 전달한다. VNIC(212)로 제공된 패킷 데이터는 각각의 VNIC(212)와 일대일로 대응되는 CPU 코어(C_n)에서 작업을 완료하면, 출력정책정보부(163)에서 설정한 패킷 데이터 출력 정책에 따라 출력순서관리부(164)의 순서를 기초로 처리가 완료된 패킷 데이터에 대응하는 패킷을 각각의 VNIC(212)에서 NIC(100)로 전송할 수 있다. 예를 들어, 출력정책이 시퀀스(sequence) 방식인 경우, NIC(100)에서 부여한 출력 시퀀스 번호에 해당하는 패킷을 순차적으로 출력하고, 출력 시퀀스 번호를 하나씩 가산하여 출력 패킷 순서를 관리할 수 있다.The control unit 140 copies the packet data from the output ring buffer to the output buffer 132 through the DMA output unit 122 and transfers information indicating that the packet data is taken to the CPU 220. [ The packet data provided to the VNIC 212 is output to the output order management unit (not shown) according to the packet data output policy set by the output policy information unit 163, when the CPU core C_n corresponding to the VNIC 212 has one- 164 to the NIC 100 from the respective VNIC 212 to the packet corresponding to the processed packet data. For example, when the output policy is a sequence scheme, packets corresponding to the output sequence numbers assigned by the NIC 100 are sequentially output, and output sequence numbers are added one by one to manage the output packet sequence.

제어부(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 control unit 140 discards the packet data. The control unit 140 instructs the output unit 142 to output the packet data, and updates the output bandwidth information of the virtual NIC. The output unit 142 outputs the packet data of the output buffer unit 132 to the network and then deletes the corresponding packet data in the output buffer unit 132.

또한 몇몇 다른 실시예에서, 복수의 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 VNIC 212, the VNIC The control unit 212 may add the information to the policy change queue. The VNIC 212 changes the policy of the VNIC 212 to the modified packet output policy received from the CPU core C_n after outputting the same packet as the output sequence number of the packet corresponding to the first command of the policy change queue, The order of packet input / output between the VNIC 212 and the NIC 100 can be set. Subsequently, the order of the next output packet can be modified by changing the output sequence number of the VNIC 212 to the modified output sequence number.

NICNIC 가상화Virtualization 정보 삭제 단계( Information deletion step ( S400S400 ))

CPU(220)는 가상화 정보부(110)에 생성한 NIC 가상화 정보를 삭제한다.
The CPU 220 deletes the NIC virtualization information generated in the virtualization information unit 110. [

본 발명의 일 실시예에 따른 네트워크 인터페이스 가상화 방법을 실행하기 위한 컴퓨터 프로그램은, 컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(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)

컴퓨팅 디바이스의 메모리 상에 설정된 복수의 가상 네트워크 인터페이스 카드(VNIC)의 정보를 관리하는 가상화 정보부를 포함하되,
상기 가상화 정보부는, 상기 복수의 가상 네트워크 인터페이스 카드가, 상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 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.
제1항에 있어서,
상기 가상 네트워크 인터페이스 카드로 전송되는 복수의 패킷 데이터의 입출력 설정값을 관리하는 패킷 관리부를 더 포함하는, 네트워크 인터페이스 가상화 장치.
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.
제2항에 있어서,
상기 패킷 관리부는, 패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는, 네트워크 인터페이스 가상화 장치.
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.
제3항에 있어서,
상기 패킷 관리부는, 상기 복수의 패킷 데이터가 상기 일련번호에 따라 순차적으로 상기 복수의 가상 네트워크 인터페이스 카드로 입력되도록 제어하는, 네트워크 인터페이스 가상화 장치.
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.
제3항에 있어서,
네트워크와 연결되어 상기 복수의 패킷 데이터를 송수신하는 입출력부를 더 포함하되,
상기 입출력부는 상기 일련번호에 따라 상기 복수의 패킷 데이터를 순차적으로 상기 네트워크로 출력하는, 네트워크 인터페이스 가상화 장치.
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.
제1항에 있어서,
상기 복수의 가상 네트워크 인터페이스 카드는 동일한 ID를 가지는, 네트워크 인터페이스 가상화 장치.
The method according to claim 1,
Wherein the plurality of virtual network interface cards have the same ID.
컴퓨팅 디바이스의 메모리 상에 복수의 가상 네트워크 인터페이스 카드(VNIC)를 생성하는 단계;
상기 컴퓨팅 디바이스에서 실행되는 하나의 네트워크 어플리케이션에서 점유하는 복수의 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.
제7항에 있어서,
상기 복수의 가상 네트워크 인터페이스 카드로 복수의 패킷 데이터를 제공하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.
8. The method of claim 7,
Further comprising providing a plurality of packet data to the plurality of virtual network interface cards.
제8항에 있어서,
패킷 입출력 정책에 따라 상기 복수의 패킷 데이터 각각에 고유한 일련번호를 부여하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.
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.
제9항에 있어서,
상기 일련번호에 따라 상기 복수의 가상 네트워크 인터페이스 카드로 상기 복수의 패킷 데이터를 제공하는 단계를 더 포함하는, 네트워크 인터페이스 가상화 방법.
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.
제9항에 있어서,
상기 복수의 가상 네트워크 인터페이스 카드로부터 상기 복수의 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.
제8항에 있어서,
상기 복수의 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.
제7항 내지 제12항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램.13. A computer program for carrying out the method according to any one of claims 7 to 12.
KR1020140182713A 2014-12-17 2014-12-17 Apparatus for virtualizing a network interface, method thereof and computer program for excuting the same KR101634672B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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