KR20190048924A - System and method for parallel processing flow-based data - Google Patents

System and method for parallel processing flow-based data Download PDF

Info

Publication number
KR20190048924A
KR20190048924A KR1020170144235A KR20170144235A KR20190048924A KR 20190048924 A KR20190048924 A KR 20190048924A KR 1020170144235 A KR1020170144235 A KR 1020170144235A KR 20170144235 A KR20170144235 A KR 20170144235A KR 20190048924 A KR20190048924 A KR 20190048924A
Authority
KR
South Korea
Prior art keywords
flow
queue
data
unit
parallel processing
Prior art date
Application number
KR1020170144235A
Other languages
Korean (ko)
Inventor
최강일
이정희
김선미
강세훈
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020170144235A priority Critical patent/KR20190048924A/en
Publication of KR20190048924A publication Critical patent/KR20190048924A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • G06F9/3855

Abstract

Provided are a data parallel processing system based on flow and an operation method thereof. Since the data parallel processing system based on flow includes a data reception unit, a flow table, a data management unit including a queue management unit, a kernel unit including at least one core, and an application unit, the data parallel processing system with high efficiency and high accuracy may maintain order of data and perform parallel processing, provide low latency and/or bandwidth guarantee for data with high priority by applying a priority of data, and may perform automatic core scaling depending on traffic conditions for data with low priority.

Description

플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법{SYSTEM AND METHOD FOR PARALLEL PROCESSING FLOW-BASED DATA}[0001] SYSTEM AND METHOD FOR PARALLEL PROCESSING FLOW-BASED DATA [0002]

본 발명은 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법에 관한 것으로, 더욱 상세하게는 멀티 코어 환경에서의 처리되는 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법에 관한 것이다.The present invention relates to a flow-based data parallel processing system and an operation method thereof, and more particularly, to a flow-based data parallel processing system that is processed in a multicore environment and a method of operating the same.

클라우드 컴퓨팅(Cloud Computing)은 인터넷을 통해 서버, 저장소, 소프트웨어, 데이터 분석 등의 컴퓨팅 서비스를 이용하는 방식이다. 다시 말하면, 클라우드 컴퓨팅은 자원을 이용자가 직접 소유·관리하는 기존의 컴퓨팅 서비스와 달리, 이용자가 필요한 만큼의 자원을 가상화된 형태로 인터넷을 통해 제공받는 특징을 가지고 있다.Cloud Computing is a method of using computing services such as server, storage, software, and data analysis over the Internet. In other words, unlike existing computing services, in which users own and manage resources, cloud computing has the characteristic that users are provided with the necessary resources in virtualized form over the Internet.

이에 따라, 클라우드 컴퓨팅은 컴퓨터의 가용률이 높고, 단말별로 개별 컨텐츠를 구축할 필요가 없어 다양한 플랫폼에서 서비스를 제공할 수 있으며, 실시간 데이터 관리가 가능하여 작업간 커뮤니케이션이 용이하다는 장점을 바탕으로, 다수의 사용자들에 의해 사용하고 있다.As a result, cloud computing is able to provide services on various platforms because the availability of computers is high and it is not necessary to construct individual contents for each terminal, and real-time data management is possible, Are used by users of the < / RTI >

그러나, 최근 사용자의 수가 증가함에 따라 클라우드 컴퓨팅에 요구되는 데이터 처리량이 증가하면서, 데이터의 분석 및 송수신 과정에서 데이터 처리 지연 문제가 발생하고 있다. However, as the number of users has increased recently, the amount of data processing required for cloud computing has increased, and data processing delays have arisen in data analysis and transmission and reception processes.

또한, 클라우드 컴퓨팅의 외부 공격에 의해 개인 정보 유출 사례가 발생하는 등 보안 문제가 대두되고 있다.In addition, security problems such as personal information leakage cases are emerging due to external attacks of cloud computing.

이에 따라, 최근 에지 클라우드 컴퓨팅이 부각되고 있다. 에지 클라우드 컴퓨팅은 기존의 컴퓨팅 서버가 클라우드 중앙 서버에 근접 위치되는 클라우드 컴퓨팅에 반해, 컴퓨팅 서버가 단말기와 가까운 네트워크부에 인접하여 위치함으로써, 데이터 지연 및 보안 문제를 예방하는 시스템을 연구하고 있다.As a result, edge cloud computing has recently emerged. Edge cloud computing is studying a system to prevent data latency and security problems by positioning a computing server close to a network close to a terminal, in contrast to cloud computing where existing computing servers are located close to the cloud central server.

그러나, 이러한 에지 클라우드 컴퓨팅 기술 또한, 실시간 IOT 서비스, 원격 진료 서비스, 고품질 영상 서비스, AR/VR 등과 같은 저지연/대역폭 보장을 요구하는 서비스들을 처리하기 위해, 멀티 코어 환경에서 순서를 가지는 데이터의 처리 시스템이 요구된다.However, this edge cloud computing technology also requires processing of sequential data in a multicore environment to handle services requiring low latency / bandwidth guarantees such as real-time IOT service, telemedicine service, high quality video service, AR / System is required.

여기서, 멀티 코어 환경에서의 데이터 처리 시스템은 네트워크 트래픽 성능을 고속화하는 처리 기술이다. 이러한 데이터 처리 시스템은 순서가 설정된 데이터를 하나 이상의 멀티 코어가 동시에 병렬로 처리하더라도 순서를 가진 데이터의 순서가 유지되어야 한다. Here, the data processing system in the multicore environment is a processing technology for speeding up the network traffic performance. Such a data processing system should maintain the order of the data in order even if the sequenced data is processed by one or more multicore cores in parallel at the same time.

또한, 데이터 병렬 처리 기술에 있어서, 데이터의 재배열(Re-Ordering)에 의한 처리 지연 문제 발생 및 네트워크 트래픽의 상황에 따라 프로세서의 코어를 스케일링하는 방법이 해결 과제로 요구되고 있다.In addition, in data parallel processing technology, a method for scaling a core of a processor according to the occurrence of a processing delay problem due to re-ordering of data and a situation of network traffic is required.

상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 데이터 처리 속도가 향상된 고성능의 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법을 제공하는 데 있다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a high-performance flow-based data parallel processing system with improved data processing speed and an operation method thereof.

상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은 데이터의 재배열(Re-Ordering)을 방지한 고효율의 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법을 제공하는 데 있다.Another object of the present invention is to provide a highly efficient flow-based data parallel processing system that prevents data re-ordering and an operation method thereof.

상기와 같은 문제점을 해결하기 위한 본 발명의 또다른 목적은 네트워크 트래픽의 상황에 따라 프로세서의 코어 스케일링이 가능한 고효율의 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법을 제공하는 데 있다.Another object of the present invention is to provide a highly efficient flow-based data parallel processing system capable of performing core scaling of a processor according to a network traffic situation and a method of operating the same.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 멀티 코어 환경에서 수행되는 플로우 기반 데이터 병렬 처리 시스템의 동작 방법에 있어서, 수신한 데이터를 속성에 따라 분류하여 적어도 하나의 플로우를 생성하는 단계, 특정 플로우에 대응하는 적어도 하나의 특정 큐에 대한 정보를 포함하는 플로우 테이블을 참조하여, 우선 순위별로 매핑된 적어도 하나의 상기 큐에 생성된 상기 플로우를 큐잉하는 단계, 상기 적어도 하나의 큐에 대해 상기 큐에 저장된 상기 플로우의 우선 순위에 따라 코어를 다르게 할당하는 단계를 포함한다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system in a multicore environment, the method comprising: generating at least one flow by classifying received data according to attributes; Queuing the flow generated in at least one of the queues mapped on a priority basis with reference to a flow table including information on at least one specific queue corresponding to the flow, And allocating cores differently according to the priority of the flow stored in the core.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 우선순위별로 매핑된 적어도 하나의 상기 큐에 생성된 상기 플로우를 큐잉하는 단계는 높은 우선순위를 갖는 플로우를 상기 플로우 테이블 상의 높은 우선순위를 갖는 제1 큐에 큐잉하는 단계를 포함할 수 있다.According to an aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: queuing the generated flows in at least one queue mapped according to a priority order, To a first queue having a higher priority on the flow table.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 상기 플로우를 우선순위별로 분류하여 적어도 하나의 상기 큐에 큐잉하는 단계는 낮은 우선순위를 갖는 플로우를 상기 플로우 테이블 상의 낮은 우선순위를 갖는 제2 큐에 큐잉하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising the steps of: classifying the flows according to a priority order and queuing the flows in at least one queue, And queuing to a second queue having a lower priority on the flow table.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 상기 코어를 다르게 할당하는 단계는 상기 높은 우선순위 플로우에 매핑되는 상기 제1 큐에 전용 코어를 할당하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: allocating a dedicated core to the first queue mapped to the high- Step < / RTI >

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 상기 코어를 다르게 할당하는 단계는 상기 낮은 우선순위 플로우에 매핑되는 적어도 하나의 상기 제2 큐에 대해 트래픽 상황에 따라 상기 코어를 동적으로 할당할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: allocating cores differently to at least one second queue mapped to the low- The core can be dynamically allocated according to the situation.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법은 상기 생성된 플로우가 상기 플로우 테이블 상에 매핑되지 않은 신규 플로우일 경우, 적어도 하나의 상기 큐의 사용률 정보를 실시간으로 제공하는 큐 테이블을 참조하여, 상기 신규 플로우를 큐잉하는 단계를 더 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: when the generated flow is a new flow not mapped on the flow table, And queuing the new flow with reference to a queue table providing real-time information.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 상기 신규 플로우를 큐잉하는 단계는 상기 큐 테이블 상에 임계치 미만의 사용률을 가진 적어도 하나의 제2 큐가 존재할 경우, 설정 모드에 따라 상기 신규 플로우를 적어도 하나의 상기 제2 큐에 큐잉하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: queuing the new flow of at least one second queue having a utilization rate below a threshold on the queue table; And if so, queuing the new flow to at least one of the second queues according to the set mode.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 동작 방법의 상기 신규 플로우를 큐잉하는 단계는 상기 큐 테이블 상에 임계치 미만의 사용률을 갖는 큐가 존재하지 않을 경우, 상기 신규 플로우를 새로 생성된 신규 큐에 큐잉하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a flow-based data parallel processing system, the method comprising: queuing the new flow, when a queue having a usage ratio lower than a threshold value does not exist on the queue table, And queuing the new flow to a newly created new queue.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 상기 설정 모드가 파워 절약 모드일 경우, 상기 신규 플로우를 임계치 미만의 사용률을 가진 적어도 하나의 상기 제2 큐 중 가장 많은 데이터가 큐잉된 제1 서브 큐에 할당할 수 있다.According to another aspect of the present invention, there is provided a flow-based data parallel processing system including a power saving mode, A large amount of data can be allocated to the queued first sub-queue.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 상기 플로우 기반 데이터 병렬 처리 시스템의 상기 설정 모드가 공정 모드일 경우, 상기 신규 플로우를 임계치 미만의 사용률을 가진 적어도 하나의 상기 제2 큐 중 가장 적은 데이터가 큐잉된 제2 서브 큐에 할당할 수 있다.In order to achieve the above object, in the flow-based data parallel processing system according to an embodiment of the present invention, when the set mode is a process mode, the new flow is divided into a smallest of the at least one second queue Data can be allocated to the queued second sub-queue.

상기 목적을 달성하기 위한 본 발명의 실시예에 따른 멀티 코어 환경에서 수행되는 플로우 기반 데이터 병렬 처리 시스템에 있어서, 순서를 갖는 데이터를 수신하고, 수신된 상기 데이터를 상기 데이터의 속성을 기준으로 분류 및 저장하여 적어도 하나의 플로우를 생성하는 데이터 수신부 및 특정 플로우 대응하는 적어도 하나의 특정 큐에 대한 정보를 우선순위 별로 제공하는 플로우 테이블을 포함하는 데이터 관리부를 포함하고, 상기 데이터 관리부는 상기 데이터 수신부로부터 분류 및 저장된 적어도 하나의 상기 플로우를 상기 플로우 테이블에 매핑되는 적어도 하나의 큐에 큐잉한다.According to an aspect of the present invention, there is provided a flow-based data parallel processing system for performing a multi-core environment in a multi-core environment, the system including: a processor for receiving ordered data and classifying the received data according to an attribute of the data; And a data management unit including a data receiving unit for storing at least one flow and a flow table for providing information on at least one specific queue corresponding to a specific flow in order of priority, And queues the stored at least one flow in at least one queue that is mapped to the flow table.

본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 데이터 수신부에 의해, 외부로부터 수신된 순서를 갖는 적어도 하나의 데이터를 특정 기준의 플로우로 분류 및 저장함으로써, 순서를 유지한 상태로 데이터 처리가 가능한 플로우 기반의 데이터 병렬 처리 시스템 및 이의 동작 방법이 제공될 수 있다.A flow-based data parallel processing system and an operation method thereof according to an embodiment of the present invention classify and store at least one data having an order received from the outside into a flow of a specific criterion by a data receiving unit, A flow-based data parallel processing system capable of performing data processing by using a data processing method and an operation method thereof.

또한, 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 플로우 테이블을 참조하여 상기 플로우의 우선 순위 별로 매핑되는 큐를 동적으로 할당함으로써, 지연이 방지되고 대역폭이 보장된 고성능의 플로우 기반의 데이터 병렬 처리 시스템 및 이의 동작 방법이 제공될 수 있다.In addition, the flow-based data parallel processing system and the operation method thereof according to the embodiment of the present invention dynamically allocate a queue mapped according to the priority of the flow with reference to a flow table, thereby achieving a high- A flow-based data parallel processing system and an operation method thereof can be provided.

또한, 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 신규 플로우의 경우, 큐 테이블에 의해 제2 집합부 내 트래픽 상황에 따라 코어를 할당함으로써, 자동 코어 스케일링이 가능한 고효율의 플로우 기반의 데이터 병렬 처리 시스템 및 이의 동작 방법이 제공될 수 있다.In the flow-based data parallel processing system and the operation method thereof according to an embodiment of the present invention, in the case of a new flow, a core is allocated according to a traffic situation in a second aggregation unit by a queue table, A flow-based data parallel processing system and an operation method thereof can be provided.

또한, 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 커널부 내 코어의 병렬 동작으로, 고속의 데이터 병렬 처리가 가능한 플로우 기반의 데이터 병렬 처리 시스템 및 이의 동작 방법이 제공될 수 있다.In addition, a flow-based data parallel processing system and an operation method thereof according to an embodiment of the present invention are provided with a flow-based data parallel processing system capable of high-speed data parallel processing by parallel operation of cores in a kernel unit .

도 1은 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템을 설명하기 위한 개념도이다.
도 2는 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템을 설명하기 위한 개념도이다.
도 3은 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템을 설명하기 위한 개념도이다.
도 4은 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 5은 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템의 동작 방법을 설명하기 위한 순서도이다.
1 is a conceptual diagram for explaining a flow-based data parallel processing system according to an embodiment of the present invention.
2 is a conceptual diagram for explaining a flow-based data parallel processing system according to an embodiment of the present invention.
3 is a conceptual diagram for explaining a flow-based data parallel processing system according to an embodiment of the present invention.
4 is a flowchart illustrating an operation method of a flow-based data parallel processing system according to an embodiment of the present invention.
5 is a flowchart illustrating an operation method of a flow-based data parallel processing system according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. The terms first, second, A, B, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. The term " and / or " includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted. Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

본 발명은 네트워크 가상화를 제공하는 시스템 및 방법에 관한 것으로, 더 상세하게는 멀티 코어 기반의 에지 클라우드 시스템 환경에서 네트워크 가상화를 제공하기 위한 플로우 기반 데이터 병렬 처리 시스템 및 장치에 관한 것이다.The present invention relates to a system and method for providing network virtualization, and more particularly, to a flow-based data parallel processing system and apparatus for providing network virtualization in a multi-core based edge cloud system environment.

도 1 및 도 2는 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템의 구성도들이다. 보다 구체적으로, 도 1은 플로우 기반 데이터 병렬 처리 시스템의 전체 구성도이며, 도 2는 플로우 기반 데이터 병렬 처리 시스템 중 데이터 관리부를 설명하기 위한 부분 구성도이다.1 and 2 are block diagrams of a flow-based data parallel processing system according to an embodiment of the present invention. More specifically, FIG. 1 is an overall configuration diagram of a flow-based data parallel processing system, and FIG. 2 is a partial configuration diagram for explaining a data management unit of a flow-based data parallel processing system.

도 1 및 도 2를 참조하면, 플로우 기반 데이터 병렬 처리 시스템은 데이터 관리부(1000), 커널부(2000) 및 응용부(3000)를 포함할 수 있다.Referring to FIGS. 1 and 2, the flow-based data parallel processing system may include a data management unit 1000, a kernel unit 2000, and an application unit 3000.

데이터 관리부(1000)는 외부로부터 수신된 데이터를 후술될 코어에 할당하기 까지의 일련의 과정을 처리하는 구성일 수 있다. The data management unit 1000 may be configured to process a series of processes from the externally received data to the core to be described later.

보다 구체적으로 설명하면, 데이터 관리부(1000)는 데이터 수신부(1100), 플로우 테이블(1300) 및 큐 관리부(1500)를 포함할 수 있다. 실시예에 따르면, 데이터 관리부(1000)는 네트워크 인터페이스 카드(NIC)일 수 있다.More specifically, the data management unit 1000 may include a data receiving unit 1100, a flow table 1300, and a queue management unit 1500. According to an embodiment, the data management unit 1000 may be a network interface card (NIC).

데이터 수신부(1100)는 외부로부터 입력되는 적어도 하나의 데이터를 수신할 수 있다. 이때, 수신되는 상기 데이터는 순서를 갖는 데이터로, 패킷 형태로 제공될 수 있다.The data receiving unit 1100 can receive at least one data input from the outside. At this time, the received data may be provided in the form of a packet with data having an order.

데이터 수신부(1100)는 수신된 상기 데이터를 속성에 따라 분류하여, 플로우(flow)에 저장할 수 있다.The data receiving unit 1100 may classify the received data according to an attribute and store the classified data in a flow.

실시 예에 따르면, 데이터 수신부(1100)는 수신된 상기 데이터로부터 각각 헤더 정보를 추출할 수 있다. 예를 들어, 헤더 정보는 SIP(Source Internet Protocol), DIP(Destination Internet Protocol), SPORT(Source Port), DPORT(Destination Port) 또는 PROTOCOL 중 어느 하나일 수 있다.According to the embodiment, the data receiving unit 1100 may extract header information from the received data. For example, the header information may be any one of SIP (Source Internet Protocol), DIP (Destination Internet Protocol), SPORT (Source Port), DPORT (Destination Port) or PROTOCOL.

이후, 데이터 수신부(1100)는 추출된 헤더 정보를 이용하여 적어도 하나의 상기 데이터를 특정 기준으로 분류할 수 있다.Thereafter, the data receiving unit 1100 may classify the at least one data into specific criteria using the extracted header information.

데이터 수신부(1100)는 특정 기준으로 분류된 적어도 하나의 상기 데이터를 특정 기준에 의해 적어도 하나의 플로우(flow)에 개별 저장할 수 있다. 다시 말하면, 플로우(flow)는 특정 기준에 의해 동일 속성을 갖는 데이터의 순서 집합일 수 있다.The data receiving unit 1100 may separately store at least one data classified into a specific criterion into at least one flow according to a specific criterion. In other words, the flow may be an ordered set of data having the same attributes by a certain criterion.

일 실시예에 따르면, 데이터 수신부(1100)는 추출된 적어도 하나의 헤더 정보를 비트 마스킹한 값을 기준으로 플로우(flow)를 생성할 수 있다.According to an exemplary embodiment, the data receiver 1100 may generate a flow based on a bit masking value of the extracted at least one header information.

다른 실시예에 따르면, 데이터 수신부(1100)는 추출된 각각의 헤더 정보를 해시 함수를 사용하여 일정한 크기로 매핑할 수 있다. 이후, 상기 매핑 값을 기준으로 데이터를 분류하여 플로우(flow)를 생성할 수 있다.According to another embodiment, the data receiving unit 1100 may map each extracted header information to a predetermined size using a hash function. Thereafter, a flow may be generated by classifying data based on the mapping value.

이후, 데이터 수신부(1100)는 후술될 플로우 테이블(1300)로부터 해당 플로우(flow)에 대한 매핑 정보를 요청할 수 있다.Thereafter, the data receiving unit 1100 can request mapping information for the flow from the flow table 1300 to be described later.

제1 실시예에 따르면, 데이터 수신부(1100)는 특정 플로우(flow)의 매핑 값에 의해 후술될 플로우 테이블(1300)을 호출할 수 있다. According to the first embodiment, the data receiving unit 1100 can call the flow table 1300, which will be described later, according to a mapping value of a specific flow.

제2 실시예에 따르면, 데이터 수신부(1100)는 특정 플로우(flow)의 매핑 값 및 특정 플로우(flow)에 저장된 데이터의 테넌트 정보를 결합한 값을 후술될 플로우 테이블(1300)의 주소로 사용할 수 있다. According to the second embodiment, the data receiving unit 1100 can use a value obtained by combining a mapping value of a specific flow and tenant information of data stored in a specific flow as an address of a flow table 1300 to be described later .

제3 실시예에 따르면, 데이터 수신부(1100)는 특정 플로우(flow)의 매핑 값 및 가상 네트워크 기능의 종류별 특징 정보를 결합한 값을 후술될 플로우 테이블(1300)의 주소로 사용할 수 있다. According to the third embodiment, the data receiving unit 1100 may use a value obtained by combining the mapping value of a specific flow and the characteristic information of each type of the virtual network function as an address of a flow table 1300 to be described later.

제 4 실시예에 따르면, 데이터 수신부(1100)는 특정 플로우(flow)의 매핑 값 및 특정 플로우(flow)에 저장된 데이터가 처리되는 가상 서비스 기능의 QOS 클래스 정보를 결합한 값을 후술될 플로우 테이블(1300)의 주소로 사용할 수 있다.According to the fourth embodiment, the data receiving unit 1100 receives a mapping value of a specific flow and a value obtained by combining QOS class information of a virtual service function in which data stored in a specific flow is processed, with a flow table 1300 ) Can be used as the address.

데이터 수신부(1100)는 후술될 플로우 테이블(1300)의 정보에 따라, 해당 플로우(flow)에 매칭되는 적어도 하나 이상의 큐에 데이터를 큐잉(quing)할 수 있다. 다시 말하면, 데이터 수신부(1100)는 후술될 플로우 테이블(1300)을 참조하여, 특정 플로우(flow)에 매핑되는 큐 정보를 제공받아, 해당 큐로 큐잉시킬 수 있다. The data receiving unit 1100 may quench data to at least one or more queues matching the flow according to the information of the flow table 1300 to be described later. In other words, the data receiving unit 1100 can receive the queue information mapped to a specific flow by referring to the flow table 1300 to be described later, and queue it to the queue.

반면, 후술될 플로우 테이블(1300)에 특정 플로우(flow)에 대해 대응되는 정보가 없을 경우, 데이터 수신부(1100)는 특정 플로우(flow)에 저장된 순서를 가진 데이터를 후술될 큐 관리부(1500) 내 큐 대기부(1530)에 송신할 수 있다. 큐 관리부(1500) 및 큐 대기부(1530)는 하기에서 보다 구체적으로 설명하겠다.On the other hand, when there is no information corresponding to a specific flow in the flow table 1300 to be described later, the data receiving unit 1100 transmits the data having the order stored in the specific flow to the queue management unit 1500 To the queue queuing unit 1530. [ The queue management unit 1500 and the queue queuing unit 1530 will be described in more detail below.

데이터 수신부(1100)는 모드 설정부(1110)를 포함할 수 있다. 모드 설정부(1110)는 파워 절약 모드 및 공정 모드를 포함할 수 있다.The data receiving unit 1100 may include a mode setting unit 1110. The mode setting unit 1110 may include a power saving mode and a process mode.

모드 설정부(1110)는 후술될 큐 처리부(1570)에서의 특정 플로우(flow)에 대한 큐 할당을 제어할 수 있다. 이는 후술될 큐 처리부(1570)의 설명 시 보다 자세히 설명하겠다.The mode setting unit 1110 can control a queue allocation for a specific flow in a queue processing unit 1570 to be described later. This will be described in more detail in the description of the queue processor 1570 to be described later.

플로우 테이블(1300)은 앞서 설명된 바와 같이, 각각의 특정 플로우(flow)에 매핑(mapping)되는 적어도 하나의 큐 정보를 포함할 수 있다. The flow table 1300 may include at least one queue information mapped to each particular flow, as described above.

보다 구체적으로 설명하면, 플로우 테이블(1300)은 우선순위에 따라 플로우(flow) 정보를 분류하며, 해당 플로우(flow) 별 할당되는 큐 정보를 제공할 수 있다. 실시 예에 따르면, 플로우 테이블(1300)은 적어도 하나의 플로우(flow)를 우선순위를 기준으로 정렬할 수 있다. 예를 들어, 상기 우선순위는 저지연 및 대역폭의 동시 보장 필요 여부, 저지연 제공 필요 여부 및 대역폭 보장 필요 여부에 따라 순차적으로 우선순위를 결정할 수 있다.More specifically, the flow table 1300 classifies flow information according to a priority order and can provide queue information allocated for each flow. According to an embodiment, the flow table 1300 may arrange at least one flow on a priority basis. For example, the priorities can be sequentially prioritized according to whether low latency and bandwidth need simultaneous assurance, whether low latency is needed, and whether bandwidth assurance is needed.

일 실시예에 따라, 특정 플로우(flow)가 플로우 테이블(1300) 상에 우선순위가 높은 플로우(flow)로 분류될 경우, 해당 플로우(flow)는 트래픽을 전담 처리하는 높은 우선순위를 갖는 전용 큐인 제1 큐로 큐잉될 수 있다. 이때, 해당 플로우(flow)는 데이터 속성에 따라, 저지연 및 대역폭이 보장될 수 있다.According to one embodiment, when a specific flow is classified as a flow having a high priority on the flow table 1300, the flow is a dedicated queue having a high priority And may be queued to the first queue. At this time, the flow may be guaranteed to have low delay and bandwidth depending on the data attribute.

다른 실시예에 따라, 특정 플로우(flow)가 플로우 테이블(1300) 상에 우선순위가 낮은 플로우(flow)로 분류될 경우, 해당 플로우(flow)는 트래픽 상황에 따라 제2 큐 중 적어도 하나의 큐로 큐잉될 수 있다. 이에 따라, 트래픽 상황에 맞는 자동 코어 스케일이 제공될 수 있다. 플로우(flow)의 우선순위에 따른 큐 할당은 하기에서 보다 구체적으로 설명하겠다.According to another embodiment, when a specific flow is classified as a flow having a low priority on the flow table 1300, the flow may be classified into at least one queue among the second queues Can be queued. Accordingly, an automatic core scale corresponding to the traffic situation can be provided. The queue allocation according to the priority of the flow will be described in more detail below.

플로우 테이블(1300)은 특정 플로우(flow)에 대한 큐 할당 정보를 설정 초기화를 통해 정적으로 설정하거나 또는 새로운 우선순위 플로우(flow)를 추가 또는 삭제함으로써 동적으로 설정할 수 있다. 실시 예에 따르면, 플로우 테이블(1300)은 일정 주기로 비활성화된 낮은 순위의 플로우(flow) 정보를 초기화 시킬 수 있다.The flow table 1300 can be set dynamically by statically setting queue allocation information for a specific flow through setting initialization or by adding or deleting a new priority flow. According to an embodiment, the flow table 1300 may initialize low-order flow information deactivated at regular intervals.

도 3은 본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템의 큐 관리부를 설명하기 위한 구성도이다.3 is a block diagram illustrating a queue management unit of a flow-based data parallel processing system according to an embodiment of the present invention.

도 1 내지 도 3을 참조하면, 큐 관리부(1500)는 데이터 수신부(1100)로부터 전송된 순서를 가진 적어도 하나의 데이터가 저장되는 적어도 하나의 큐를 관리할 수 있다. 큐 관리부(1500)는 큐 집합부(1510), 큐 대기부(1530), 큐 생성부(1550), 큐 처리부(1570) 및 큐 설정부(1590)를 포함할 수 있다. 1 to 3, the queue management unit 1500 may manage at least one queue in which at least one data having a sequence transmitted from the data reception unit 1100 is stored. The queue management unit 1500 may include a queue set unit 1510, a queue waiting unit 1530, a queue generating unit 1550, a queue processing unit 1570, and a queue setting unit 1590.

큐 집합부(1510)는 제1 집합부(1511) 및 제2 집합부(1515)를 포함할 수 있다.  The queue aggregation unit 1510 may include a first aggregation unit 1511 and a second aggregation unit 1515.

제1 집합부(1511)는 적어도 하나의 제1 큐를 포함할 수 있다. 여기서 제1 큐는 높은 우선순위를 갖는 큐로써, 높은 우선순위의 플로우(flow)가 큐잉될 수 있다. 예를 들어, 제1 큐는 해당 플로우(flow)의 트래픽을 전담 처리하는 전용 큐일 수 있다.The first gathering unit 1511 may include at least one first queue. Here, the first queue is a queue having a high priority, and a high priority flow can be queued. For example, the first queue may be a dedicated queue dedicated to traffic of the flow.

제2 집합부(1515)는 적어도 하나의 제2 큐를 포함할 수 있다. 여기서 제2 큐는 낮은 우선순위를 갖는 큐로써, 낮은 우선순위의 플로우(flow)가 큐잉될 수 있다. 이때, 적어도 하나의 제2 큐는 사용량에 대한 임계치를 포함할 수 있다. 제2 큐의 임계치는 하기에서 보다 구체적으로 설명하겠다.The second gathering unit 1515 may include at least one second queue. Here, the second queue is a queue having a low priority, and a low priority flow can be queued. At this time, the at least one second queue may include a threshold value for the usage amount. The threshold of the second queue will be described in more detail below.

큐 집합부(1510)는 앞서 설명된 제1 실시예 및 제6 실시예에 따른 데이터 수신부(1100)의 플로우(flow) 환경에 따라 다른 속성의 큐를 포함할 수 있다.The queue aggregation unit 1510 may include queues having different attributes according to the flow environment of the data receiving unit 1100 according to the first and sixth embodiments described above.

일 실시예에 따르면, 데이터 수신부(1100)가 테넌트 정보를 결합한 값을 플로우 테이블(1300)의 주소로 사용할 경우, 큐 집합부(1510)는 테넌트 별로 독립된 적어도 하나의 큐를 포함할 수 있다.According to an embodiment, when the data receiving unit 1100 uses a value obtained by combining tenant information as an address of the flow table 1300, the queue set unit 1510 may include at least one queue independent of each tenant.

다른 실시예에 따르면, 데이터 수신부(1100)가 가상 네트워크 기능의 종류별 특징 정보를 결합한 값을 플로우 테이블(1300)의 주소로 사용할 경우, 큐 집합부(1510)는 가상 네트워크 기능의 종류별로 독립된 적어도 하나의 큐를 포함할 수 있다. 이때, 큐의 개수는 가상 네트워크 기능의 종류 별로 서로 다르게 제공될 수 있다.According to another embodiment, when the data receiving unit 1100 uses a value obtained by combining characteristic information of each type of virtual network function as an address of the flow table 1300, the queue aggregating unit 1510 may allocate at least one independent Lt; / RTI > At this time, the number of queues can be provided differently according to the types of virtual network functions.

또다른 실시예에 따르면, 데이터 수신부(1100)가 가상 서비스 기능의 QOS 클래스 정보를 결합한 값을 플로우 테이블(1300)의 주소로 사용할 경우, 큐 집합부(1510)는 가상 서비스 기능의 QOS 클래스 별로 독립된 적어도 하나의 큐를 포함할 수 있다. 이때, 상기 큐의 개수는 가상 서비스 기능의 QOS 클래스 별로 서로 다르게 제공될 수 있다.According to another embodiment, when the data receiver 1100 uses a value obtained by combining the QOS class information of the virtual service function as the address of the flow table 1300, the queue aggregator 1510 allocates the QOS class information of the virtual service function, And may include at least one queue. At this time, the number of queues may be differently provided for each QOS class of the virtual service function.

큐 대기부(1530)는 큐가 할당되지 않은 신규 플로우(flow)를 잠시 대기시키는 공간일 수 있다. 여기서, 신규 플로우(flow)는 데이터 수신부(1100)에 수신된 특정 플로우(flow) 중 플로우 테이블(1300)에 매핑되지 않는 플로우(flow)일 수 있다. 다시 말하면, 신규 플로우(flow)는 낮은 우선순위를 갖는 플로우(flow)일 수 있다.The queue queuing unit 1530 may be a space for temporarily waiting for a new flow to which the queue is not allocated. Here, the new flow may be a flow not mapped to the flow table 1300 among the specific flows received by the data receiving unit 1100. In other words, the new flow may be a flow having a lower priority.

큐 생성부(1550)는 앞서 설명한 바와 같이, 큐 대기부(1530)에 임시 저장된 신규 플로우(flow)가 존재할 경우, 큐 대기부(1530)로부터 송신된 신호에 의해 신규 큐를 생성할 수 있다. As described above, when there is a new flow temporarily stored in the queue waiting unit 1530, the queue generating unit 1550 can generate a new queue by the signal transmitted from the queue waiting unit 1530. [

큐 처리부(1570)는 큐 테이블을 참조하여, 큐 대기부(1530)에 임시 저장된 적어도 하나의 데이터에 큐를 할당할 수 있다. 이때, 큐 테이블은 큐 집합부(1510) 내 포함된 큐의 실시간 활성화 정보를 포함할 수 있다.The queue processing unit 1570 can refer to the queue table and allocate a queue to at least one piece of data temporarily stored in the queue waiting unit 1530. [ At this time, the queue table may include real-time activation information of a queue included in the queue set unit 1510.

보다 구체적으로 설명하면, 큐 처리부(1570)는 임시 저장된 플로우(flow)에 큐를 할당하기 전, 낮은 우선순위를 갖는 제2 큐의 사용률 임계치(threshold)를 확인할 수 있다. 임계치(threshold)는 해당 큐의 길이를 중심으로 설정될 수 있다.More specifically, the queue processor 1570 may check the utilization threshold of the second queue having a low priority before allocating the queue to the temporarily stored flow. The threshold may be set around the length of the queue.

일 실시예에 따르면, 적어도 하나의 제2 큐의 사용률이 임계치 미만일 경우, 큐 처리부(1570)는 신규 플로우(flow)를 모드 설정부(1110)에 따라, 제1 서브 큐 및/또는 제2 서브 큐에 선택적으로 매핑할 수 있다.According to one embodiment, when the usage rate of at least one second queue is less than the threshold value, the queue processing unit 1570 sets a new flow according to the mode setting unit 1110 to the first sub-queue and / You can optionally map to a queue.

여기서, 제1 서브 큐는 임계치 미만의 사용률을 가진 제2 큐 중 가장 많은 데이터가 큐잉된 큐일 수 있으며, 제2 서브 큐는 임계치 미만의 사용률을 가진 제2 큐 중 가장 적은 데이터가 큐잉된 큐일 수 있다. Here, the first sub-queue may be a queue in which the largest amount of data among the second queues having a usage rate lower than the threshold value is queued, and the second sub-queue may be a queue in which the smallest data among the second queues having a usage rate below the threshold is queued have.

예를 들어, 모드 설정부(1110)가 파워 절약 모드일 경우, 큐 처리부(1570)는 낮은 우선순위를 갖는 신규 플로우(flow)를 제1 서브 큐에 매핑할 수 있다. For example, when the mode setting unit 1110 is in the power save mode, the queue processing unit 1570 may map a new flow having a low priority to the first sub-queue.

반면, 모드 설정부(1110)가 공정 모드일 경우, 큐 처리부(1570)는 낮은 우선순위를 갖는 신규 플로우(flow)를 제2 서브 큐에 매핑할 수 있다.On the other hand, when the mode setting unit 1110 is in the process mode, the queue processing unit 1570 can map a new flow having a low priority to the second sub-queue.

다른 실시예에 따르면, 큐 집합부(1510)의 모든 큐가 임계치 이상의 사용률을 나타낼 경우, 큐 처리부(1570)는 후술될 큐 생성부(1550)에 의해 생성된 신규 큐에 매핑될 수 있다.According to another embodiment, when all the queues of the queue set section 1510 indicate a usage ratio higher than the threshold value, the queue processing section 1570 can be mapped to the new queue generated by the queue generating section 1550, which will be described later.

또한, 큐 처리부(1570)는 큐 집합부(1510) 내 큐에 각각 대응하는 후술될 코어를 할당할 수 있다. 보다 구체적으로 설명하면, 큐 처리부(1570)는 큐 집합부(1510) 내 각각의 큐에 큐잉된 적어도 하나의 데이터를 처리하기 위해, 각각의 큐에 대응하는 코어를 할당할 수 있다. 다시 말하면, 큐 처리부(1570)는 코어 스케일링을 제공할 수 있다. 여기서, 코어는 적어도 하나의 큐를 전담하여 처리하는 프로세서로써, 처리 결과물을 후술될 응용부(3000)로 송신할 수 있다.In addition, the queue processor 1570 can allocate a core to be described later corresponding to a queue in the queue set 1510, respectively. More specifically, the queue processing unit 1570 can allocate cores corresponding to the respective queues in order to process at least one data queued in each queue in the queue set unit 1510. In other words, the queue processing unit 1570 can provide core scaling. Here, the core is a processor dedicated to at least one queue, and can transmit the processing result to the application unit 3000 to be described later.

큐 처리부(1570)는 동일 플로우(flow)에 속하는 순서를 갖는 데이터를 단일 코어에 할당할 수 있다. 이에 따라, 코어에 의한 데이터의 처리 시 데이터의 순서가 유지될 수 있다. The queue processing unit 1570 can allocate data having a sequence belonging to the same flow to a single core. Thus, the order of data can be maintained when processing data by the core.

또한, 큐 처리부(1570)는 적어도 하나의 상기 코어를 병렬 동작함으로써, 적어도 하나의 플로우(flow) 정보를 갖는 데이터를 병렬 처리할 수 있다. In addition, the queue processing unit 1570 can parallel-process data having at least one flow information by operating at least one of the cores in parallel.

이때, 큐 처리부(1570)는 제1 집합부(1511)인 제1 큐에 큐잉된 적어도 하나의 데이터의 경우, 데이터 처리 목적에 따라 코어를 할당할 수 있다. At this time, in the case of at least one data queued in the first queue as the first gathering unit 1511, the queue processing unit 1570 can allocate cores according to the data processing purpose.

일 실시예에 따르면, 제1 집합부(1511)의 제1 큐에 매핑된 적어도 하나의 데이터가 저지연 및 대역폭을 동시에 보장해야 할 경우, 큐 처리부(1570)는 해당 전용 큐를 전담하여 처리하는 적어도 하나의 전용 코어를 할당할 수 있다.According to one embodiment, when at least one piece of data mapped to the first queue of the first gathering unit 1511 needs to guarantee both low latency and bandwidth, the queue processing unit 1570 exclusively processes the dedicated queue At least one dedicated core may be allocated.

다른 실시예에 따라, 제1 집합부(1511)의 제1 큐에 매핑된 적어도 하나의 데이터가 저지연을 제공해야 할 경우, 큐 처리부(1570)는 해당 제1 큐를 전담하여 처리하는 적어도 하나의 전용 코어를 할당하거나 또는 복수개의 전용 큐를 처리하는 단일 전용 처리 코어를 할당할 수 있다.According to another embodiment, if at least one piece of data mapped to the first queue of the first aggregation unit 1511 is to provide low latency, then the queue processing unit 1570 may perform at least one Lt; / RTI > dedicated core or a single dedicated processing core that handles a plurality of dedicated queues.

또다른 실시예에 따라, 제1 집합부(1511)의 전용 큐에 매핑된 적어도 하나의 데이터가 대역폭을 보장해야 할 경우, 큐 처리부(1570)는 해당 제1 큐를 각각 전담하여 처리하는 적어도 하나의 전용 코어를 할당하거나 또는 복수개의 전용 큐를 처리하는 단일 전용 처리 코어를 할당할 수 있다. 상기 제1 큐는 앞서 설명한 바와 같이, 전용 큐일 수 있다.According to another embodiment, when at least one piece of data mapped to a dedicated queue of the first aggregation unit 1511 needs to guarantee the bandwidth, the queue processing unit 1570 allocates at least one Lt; / RTI > dedicated core or a single dedicated processing core that handles a plurality of dedicated queues. The first queue may be a dedicated queue, as described above.

큐 설정부(1590)는 큐 집합부(1510) 내 큐의 활성화 여부를 제어할 수 있다. 보다 구체적으로 설명하면, 큐 설정부(1590)는 플로우 테이블(1300) 및 큐 테이블을 일정 주기로 확인함으로써, 큐의 활성화 여부를 동적으로 제어할 수 있다. The queue setting unit 1590 can control whether a queue in the queue set unit 1510 is activated or not. More specifically, the queue setting unit 1590 can dynamically control whether the queue is activated by checking the flow table 1300 and the queue table at regular intervals.

실시예에 따르면, 큐 설정부(1590)는 플로우 테이블(1300) 및 큐 테이블을 참조하여, 비활성화가 가능한 큐를 선정한 후, 해당 큐를 동적으로 비활성화할 수 있다. 이때, 해당 큐뿐 만 아니라, 해당 큐를 처리하는 코어 또한 동적으로 비활성화할 수 있다. According to the embodiment, the queue setting unit 1590 may refer to the flow table 1300 and the queue table to select a queue that can be deactivated, and then dynamically deactivate the queue. At this time, not only the queue but also the core processing the corresponding queue can be dynamically deactivated.

다시 도 1을 참조하면, 커널부(2000)는 적어도 하나의 코어를 포함할 수 있다. 앞서 설명된 바와 같이, 코어는 큐 설정부(1590)에 의해, 특정 큐에 큐잉된 적어도 하나의 데이터를 처리할 수 있다. Referring again to FIG. 1, the kernel unit 2000 may include at least one core. As described above, the core can process at least one piece of data queued in a particular queue by the queue setting unit 1590. [

응용부(3000)는 하나 이상의 사용자 애플리케이션을 포함할 수 있다. 응용부(3000)는 앞서 설명된 바와 같이, 커널부(2000) 내 적어도 하나의 코어로부터 처리된 데이터 처리 결과물을 수신할 수 있다. 예를 들어, 응용부(3000)는 적어도 하나의 장치(application)을 포함할 수 있다.Application 3000 may include one or more user applications. The application unit 3000 can receive the processed data processing result from at least one core in the kernel unit 2000, as described above. For example, the application unit 3000 may include at least one application.

이상 본 발명의 실시예에 따른 플로우 기반의 데이터 병렬 처리 시스템을 살펴보았다. The flow-based data parallel processing system according to the embodiment of the present invention has been described above.

이하에서는 상기 플로우 기반의 데이터 병렬 처리 시스템의 동작 방법을 설명하겠다.Hereinafter, an operation method of the flow-based data parallel processing system will be described.

도 4는 본 발명의 실시예에 따른 플로우 기반의 데이터 병렬 처리 시스템을 설명하기 위한 순서도이다. 4 is a flowchart illustrating a flow-based data parallel processing system according to an embodiment of the present invention.

도 1 내지 도 4를 참조하면, 플로우 기반의 데이터 병렬 처리 시스템이 동작될 수 있다. 플로우 기반의 데이터 병렬 처리 시스템은 외부로부터 적어도 하나의 데이터를 수신할 수 있다(S1000). 이때, 상기 데이터는 순서를 가지는 데이터로, 패킷 형태로 제공될 수 있다. 1 to 4, a flow-based data parallel processing system may be operated. The flow-based data parallel processing system can receive at least one data from the outside (S1000). At this time, the data may be provided in the form of a packet, with data having an order.

이후, 상기 데이터를 큐잉할 수 있다(S2000). 상기 데이터를 큐잉하는 단계는 후술될 도 5를 참조하여 보다 자세히 설명하겠다.Thereafter, the data may be queued (S2000). The step of queuing the data will be described in more detail with reference to FIG. 5 to be described later.

도 5는 본 발명의 실시예에 따른 플로우 기반의 데이터 병렬 시스템의 동작 방법 중 데이터를 큐잉하는 단계를 설명하기 위한 순서도이다. FIG. 5 is a flowchart illustrating a method of queuing data among operation methods of a flow-based data parallel system according to an embodiment of the present invention.

도 1 내지 도 5를 참조하면, 데이터 수신부(1100)는 데이터로부터 플로우(flow)를 생성할 수 있다(S2100). 1 to 5, the data receiving unit 1100 may generate a flow from data (S2100).

앞서 상술한 바와 같이, 데이터 수신부(1100)는 수신된 상기 데이터로부터 각각 헤 이때, 신규 플로우(flow)는 플로우 테이블(1300) 상에 매칭되는 정보가 없는 플로우(flow)일 수 있다.As described above, the data receiving unit 1100 may be a flow in which the new flow does not have any information matched on the flow table 1300 from the received data.

일 실시예에 따르면, 데이터 수신부(1100)는 추출된 적어도 하나의 헤더 정보를 비트 마스킹한 값을 기준으로 플로우(flow)를 생성될 수 있다.According to an embodiment, the data receiving unit 1100 may generate a flow based on a bit masking value of the extracted at least one header information.

다른 실시예에 따르면, 데이터 수신부(1100)는 해시 함수에 의해 추출된 각각의 헤더 정보를 일정한 크기로 매핑(mapping)하여 플로우(flow)를 생성할 수 있다.According to another embodiment, the data receiving unit 1100 may generate a flow by mapping each header information extracted by the hash function to a predetermined size.

이후, 플로우 테이블(1300)을 참조하여, 생성된 플로우(flow)에 대응되는 큐 정보가 있는지 확인할 수 있다(S2200). Thereafter, referring to the flow table 1300, it is possible to check whether there is queue information corresponding to the generated flow (S2200).

생성된 플로우(flow)가 플로우 테이블(1300) 상에 높은 우선순위의 플로우(flow)에 속할 경우(S2300), 상기 플로우(flow)는 플로우 테이블(1300) 상에 높은 우선순위 플로우(1310)에 매핑된 높은 우선순위인 제1 큐에 큐잉될 수 있다(S2310).If the generated flow belongs to a high priority flow on the flow table 1300 (S2300), the flow is transferred to the high priority flow 1310 on the flow table 1300 May be queued in the first queue which is the mapped high priority (S2310).

반면, 생성된 플로우(flow)가 플로우 테이블 상에 높은 우선순위의 플로우(1310)에 속하지 않을 경우, 신규 플로우(flow)인지 확인할 수 있다(S2350).On the other hand, if the generated flow does not belong to the high priority flow 1310 on the flow table, it can be confirmed whether the flow is a new flow (S2350).

생성된 플로우(flow)가 신규 플로우(flow)가 아닐 경우, 높은 우선순위 플로우와 마찬가지로, 상기 플로우(flow)는 플로우 테이블(1300) 상에 낮은 우선순위 플로우(1350)에 매핑된 낮은 우선순위인 제2큐에 큐잉될 수 있다(S2355).If the generated flow is not a new flow, as with the high priority flow, the flow may be a low priority flow mapped to the low priority flow 1350 on the flow table 1300 May be queued in the second queue (S2355).

생성된 플로우(flow)가 플로우 테이블(1300) 상에 존재하지 않는 신규 플로우(flow)일 경우, 생성된 상기 신규 플로우(flow)는 큐 대기부(1530)에 임시 저장될 수 있다.If the generated flow is a new flow that does not exist on the flow table 1300, the generated new flow can be temporarily stored in the queue waiting unit 1530.

이후, 큐 대기부(1530)에 저장된 신규 플로우(flow)에 큐를 할당하기 위해, 큐 테이블을 참조할 수 있다(S2500).Then, in order to allocate a queue to a new flow stored in the queue queuing unit 1530, the queue table may be referred to (S2500).

큐 테이블 상의 적어도 하나의 큐가 임계치를 초과할 경우(S2600), 신규 플로우(flow)는 큐 생성부(1550)에 의해 생성된 신규 큐에 큐잉될 수 있다(S2610). 이후, 플로우 테이블(1300) 상에 상기 신규 플로우(flow) 정보를 갱신(update)할 수 있다(S2615). If at least one queue on the queue table exceeds the threshold value (S2600), a new flow may be queued to the new queue generated by the queue generating unit 1550 (S2610). Thereafter, the new flow information may be updated on the flow table 1300 (S2615).

반면, 큐 테이블 상의 적어도 하나의 큐가 임계치를 초과하지 않을 경우, 모드 설정부(1110)의 설정 모드를 확인할 수 있다(S2650). 큐 테이블은 큐 집합부(1510)에 포함된 큐들의 실시간 큐잉 정보를 제공할 수 있다. On the other hand, if at least one queue on the queue table does not exceed the threshold value, the setting mode of the mode setting unit 1110 can be confirmed (S2650). The queue table can provide real-time queuing information of the queues included in the queue set unit 1510.

일 실시예에 따라, 모드 설정부(1110)가 파워 절약 모드일 경우, 상기 신규 플로우(flow)는 제1 서브 큐에 큐잉될 수 있다(S2651). 이때, 제1 서브 큐는 적어도 하나의 제2 큐 중 가장 많은 데이터가 큐잉된 큐일 수 있다.According to one embodiment, when the mode setting unit 1110 is in the power save mode, the new flow may be queued to the first sub-queue (S2651). At this time, the first sub-queue may be a queue in which the most data among the at least one second queue is queued.

다른 실시예에 따라, 모드 설정부(1110)가 공정 모드일 경우, 상기 신규 플로우(flow)는 제2 서브 큐에 큐잉될 수 있다(S2655). 이때, 제2 서브 큐는 적어도 하나의 제2 큐 중 가장 적은 데이터가 큐잉된 큐일 수 있다.According to another embodiment, when the mode setting unit 1110 is in the process mode, the new flow may be queued to the second sub-queue (S2655). At this time, the second sub-queue may be a queue in which the least data among the at least one second queue is queued.

이후, 플로우 테이블(1300) 상에 상기 신규 플로우(flow) 정보를 갱신(update)할 수 있다(S2700).Thereafter, the new flow information may be updated on the flow table 1300 (S2700).

다시 도 4를 참조하면, 큐잉된 상기 플로우(flow) 내 적어도 하나의 데이터를 처리하기 위해, 적어도 하나의 큐에 각각 코어가 할당될 수 있다(S3000). Referring again to FIG. 4, in order to process at least one data in the queued flow, each core may be assigned to at least one queue (S3000).

이때, 상기 코어는 플로우의 우선 순위 및/또는 데이터의 처리 목적에 따라 다르게 할당될 수 있다. 다시 말하면, 코어 스케일링이 제공될 수 있다. At this time, the core may be allocated differently according to the priority of the flow and / or the processing purpose of the data. In other words, core scaling can be provided.

또한, 적어도 하나의 코어는 병렬 동작할 수 있다. 이에 따라, 적어도 하나의 플로우(flow) 내 데이터가 병렬 처리할 수 있다.Also, at least one core may operate in parallel. Thus, data in at least one flow can be processed in parallel.

이후, 처리된 데이터는 후술될 응용부(3000)로 송신될 수 있다(S4000). Thereafter, the processed data may be transmitted to the application unit 3000 to be described later (S4000).

이상, 본 발명의 실시 에에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법을 살펴보았다.The flow-based data parallel processing system and its operation method according to the present invention have been described above.

상기 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 데이터 수신부, 플로우 테이블, 큐 관리부를 포함하는 데이터 관리부, 적어도 하나의 코어를 포함하는 커널부 및 응용부를 포함함으로써, 데이터의 순서를 유지하면서 병렬 처리가 가능하고, 데이터에 우선순위를 적용하여 높은 우선순위를 갖는 데이터의 경우 저지연 및/또는 대역폭 보장을 제공하며, 낮은 우선순위를 갖는 데이터의 경우 트래픽 상황에 따라 자동 코어 스케일링이 가능한 고효율 및 고정밀의 플로우 기반의 데이터 병렬 처리 시스템을 제공할 수 있다. The flow-based data parallel processing system and its operation method include a data receiving unit, a flow table, a data managing unit including a queue managing unit, a kernel unit including at least one core, and an application unit, It is possible to apply low priority data to high priority data by applying priority to data and to provide low latency and / or bandwidth guarantee for high priority data. A flow-based data parallel processing system can be provided.

본 발명의 실시예에 따른 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다. The flow-based data parallel processing system and its operation method according to an embodiment of the present invention can be implemented as a computer-readable program or code in a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. The computer-readable recording medium may also be distributed and distributed in a networked computer system so that a computer-readable program or code can be stored and executed in a distributed manner.

또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.Also, the computer-readable recording medium may include a hardware device specially configured to store and execute program instructions, such as a ROM, a RAM, a flash memory, and the like. Program instructions may include machine language code such as those produced by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like.

본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다. While some aspects of the invention have been described in the context of an apparatus, it may also represent a description according to a corresponding method, wherein the block or apparatus corresponds to a feature of the method step or method step. Similarly, aspects described in the context of a method may also be represented by features of the corresponding block or item or corresponding device. Some or all of the method steps may be performed (e.g., by a microprocessor, a programmable computer or a hardware device such as an electronic circuit). In some embodiments, one or more of the most important method steps may be performed by such an apparatus.

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.In embodiments, a programmable logic device (e.g., a field programmable gate array) may be used to perform some or all of the functions of the methods described herein. In embodiments, the field programmable gate array may operate in conjunction with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by some hardware device.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the present invention as defined by the following claims It can be understood that

1000: 데이터 관리부 1100: 데이터 수신부
1150: 모드 설정부 1300: 플로우 테이블
1310: 높은 우선순위 플로우 1350: 낮은 우선순위 플로우
1500: 큐 관리부 1510: 큐 집합부
1511: 제1 집합부 1515: 제2 집합부
1530: 큐 대기부 1550: 큐 생성부
1570: 큐 처리부 1590: 큐 설정부
2000: 커널부 3000: 응용부dddd
1000: Data management unit 1100: Data receiving unit
1150: Mode setting section 1300: Flow table
1310: High Priority Flow 1350: Low Priority Flow
1500: queue management unit 1510:
1511: First set part 1515: Second set part
1530: queue queuing 1550:
1570: a queue processing unit 1590: a queue setting unit
2000: Kernel part 3000: Application part dddd

Claims (1)

멀티 코어 환경에서 수행되는 플로우 기반 데이터 병렬 처리 시스템의 동작 방법에 있어서,
수신한 데이터를 속성에 따라 분류하여 적어도 하나의 플로우를 생성하는 단계;
특정 플로우에 대응하는 적어도 하나의 특정 큐에 대한 정보를 포함하는 플로우 테이블을 참조하여, 우선 순위별로 매핑된 적어도 하나의 상기 큐에 생성된 상기 플로우를 큐잉하는 단계;
상기 적어도 하나의 큐에 대해 상기 큐에 저장된 상기 플로우의 우선 순위에 따라 코어를 다르게 할당하는 단계를 포함하는 플로우 기반 데이터 병렬 처리 시스템의 동작 방법.
A method of operating a flow-based data parallel processing system in a multi-core environment,
Classifying the received data according to an attribute to generate at least one flow;
Queuing the generated flow in at least one queue mapped on a priority basis with reference to a flow table containing information about at least one specific queue corresponding to a particular flow;
And allocating cores differently according to the priority of the flow stored in the queue for the at least one queue.
KR1020170144235A 2017-10-31 2017-10-31 System and method for parallel processing flow-based data KR20190048924A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170144235A KR20190048924A (en) 2017-10-31 2017-10-31 System and method for parallel processing flow-based data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170144235A KR20190048924A (en) 2017-10-31 2017-10-31 System and method for parallel processing flow-based data

Publications (1)

Publication Number Publication Date
KR20190048924A true KR20190048924A (en) 2019-05-09

Family

ID=66546545

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170144235A KR20190048924A (en) 2017-10-31 2017-10-31 System and method for parallel processing flow-based data

Country Status (1)

Country Link
KR (1) KR20190048924A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220093774A (en) * 2020-12-28 2022-07-05 주식회사 에스투더블유 Method for storing files through multi-process and apparatus therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220093774A (en) * 2020-12-28 2022-07-05 주식회사 에스투더블유 Method for storing files through multi-process and apparatus therefor

Similar Documents

Publication Publication Date Title
CN107113290B (en) Method and system for bandwidth management
KR101583325B1 (en) Network interface apparatus and method for processing virtual packets
KR102008551B1 (en) Offloading virtual machine flows to physical queues
EP3005129B1 (en) Adaptive interrupt coalescing in a converged network
US11729108B2 (en) Queue management in a forwarder
EP4002804A1 (en) Software distributed, hardware aggregated hierarchical traffic management
KR101639797B1 (en) Network interface apparatus and method for processing virtual machine packets
US11831550B2 (en) Fine grain traffic shaping offload for a network interface card
EP3588879A1 (en) Technologies for buffering received network packet data
CN110278104A (en) The technology that service quality for optimization accelerates
US11671382B2 (en) Technologies for coordinating access to data packets in a memory
US10616116B1 (en) Network traffic load balancing using rotating hash
KR20190048924A (en) System and method for parallel processing flow-based data
US20180091447A1 (en) Technologies for dynamically transitioning network traffic host buffer queues
US11038819B2 (en) Technologies for extracting extrinsic entropy for workload distribution
KR20180134219A (en) The method for processing virtual packets and apparatus therefore
US7583678B1 (en) Methods and apparatus for scheduling entities using a primary scheduling mechanism such as calendar scheduling filled in with entities from a secondary scheduling mechanism
US10142245B2 (en) Apparatus and method for parallel processing
KR101773528B1 (en) Network interface apparatus and method for processing virtual machine packets
US11743134B2 (en) Programmable traffic management engine
EP3716549A1 (en) Bandwidth management
US20190007318A1 (en) Technologies for inflight packet count limiting in a queue manager environment
KR20190069032A (en) The method for identifying virtual flow and apparatus therefore
WO2022089715A1 (en) Method of managing data transmission for ensuring per-flow fair bandwidth sharing
Chiru Resource based analysis of ethernet communication between software partitions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application