KR102420606B1 - Method for packet data processing using cache path and electronic device for supporting the same - Google Patents

Method for packet data processing using cache path and electronic device for supporting the same Download PDF

Info

Publication number
KR102420606B1
KR102420606B1 KR1020220051640A KR20220051640A KR102420606B1 KR 102420606 B1 KR102420606 B1 KR 102420606B1 KR 1020220051640 A KR1020220051640 A KR 1020220051640A KR 20220051640 A KR20220051640 A KR 20220051640A KR 102420606 B1 KR102420606 B1 KR 102420606B1
Authority
KR
South Korea
Prior art keywords
packet
nic
data plane
tunnel
network
Prior art date
Application number
KR1020220051640A
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 넷록스 주식회사
Application granted granted Critical
Publication of KR102420606B1 publication Critical patent/KR102420606B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

In a method of an electronic device according to various embodiments, the method of the electronic device comprises: an operation of performing a control plane role for network functions including a virtualization function in an edge node CPU including at least one core; and an operation of offloading at least some operations for the network functions including the virtualization function on the at least one core by performing a data plane role for the network functions including the virtualization function in an intelligent network interface card (NIC), wherein the operation of performing the data plane role for the network functions including the virtualization may include: an operation of receiving a packet through a first interface of a data plane; an operation of parsing the packet through a parser table; an operation of checking a meta-cache table based on the parsed packet; and an operation of modifying a header and meta data of the packet and transmitting the modified header and meta data to a second interface when the parsed packet is checked in the meta-cache table. Other embodiments are also possible. A purpose of the present invention is to resolve a problem that may be raised in connection with a legacy system required for constructing a 5G-based edge computing in a 5G technology environment.

Description

캐시 경로를 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치{METHOD FOR PACKET DATA PROCESSING USING CACHE PATH AND ELECTRONIC DEVICE FOR SUPPORTING THE SAME}A method for processing packet data using a cache path and an electronic device using the same

본 발명의 다양한 실시 예는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치에 관한 것으로, 구체적으로, 엣지 플랫폼 네트워크 가속화 솔루션에 관한 것이다.Various embodiments of the present invention relate to a packet data processing method and an electronic device using the same, and more particularly, to an edge platform network acceleration solution.

오늘날 화두 되고 있는 4차 산업에서는 다양한 디바이스를 통해 방대한 양의 데이터가 초연결(hyper connected)될 수 있다. 이러한 환경에서 사용자 니즈를 반영한 혁신적인 융합 신제품 및 서비스 솔루션 시장이 확대될 수 있으며, 이를 위한 제품의 개발, 시험 및 실증이 가능한 인프라 확보가 필요할 수 있다.In the 4th industry, which is a hot topic today, vast amounts of data can be hyper-connected through various devices. In such an environment, the market for innovative convergence new products and service solutions reflecting user needs may expand, and for this, it may be necessary to secure an infrastructure for product development, testing, and demonstration.

사물 인터넷 (IoT) 트래픽은 지속적으로 증가하고 있으며 이러한 추세는 앞으로도 계속 될 수 있다. 이러한 추세의 성장은 사물 인터넷의 장치 수가 증가함에 기인할 수 있다. 예를 들어, 기존의 전화기, PC, 스마트 폰, 셋톱 박스, 가전, 웨어러블 기기, 커넥티드 카, 증강/가상 현실 장치 (AR/VR) 등과 같은 다양한 종류의 사물 인터넷 장치들이 등장하고 있다. Internet of Things (IoT) traffic continues to grow and this trend may continue. The growth of this trend can be attributed to the increasing number of devices in the Internet of Things. For example, various types of Internet of Things devices such as conventional phones, PCs, smart phones, set-top boxes, home appliances, wearable devices, connected cars, and augmented/virtual reality devices (AR/VR) are emerging.

5G는 eMBB(초광대역무선통신, enhanced mobile broadband), mMTC(대규모 사물 통신, massive machine-type communication), uRLLC(초고신뢰 저지연 통신, ultra-reliable and low latency communications) 기술 환경 속에서 다양한 서비스들을 가능하게 하는 Enabler로 데이터의 폭발적 증가와 관련된 산업 전반 및 다양한 전용망들이 하나의 망으로 통합되는 계기를 마련해 줄 수 있다. 다만, 5G 기반 엣지 컴퓨팅 구축 시 필요한 기존 레거시 시스템과의 문제가 대두될 수 있다. 예를 들어, 성능 면에 있어서, 기존 CPU 기반 네트워킹 시 초저지연/초고속 트래픽 전송이 불가할 수 있다. 예를 들어, 비용 면에 있어서, 네트워킹으로 인한 CPU 부하로, 서비스 직접도 저하 및 이로 인한 다수의 CPU 서버가 필요할 수 있다. 예를 들어, 유연성 면에 있어서, 신규 기능 및 서비스를 온디맨드(on-demand)로 제공할 수 없는 고정된(fixed) 네트워킹이 문제될 수 있다. 보안적인 면에 있어서, CPU 기반 처리시 다수의 보안 정책에 의한 성능저하와 디도스 공격과 같은 불특정 다수에 의한 임의 공격에 취약할 수 있다.5G provides a variety of services in the environment of eMBB (enhanced mobile broadband), mMTC (massive machine-type communication), and uRLLC (ultra-reliable and low latency communications) technology. As an enabler that makes it possible, it can provide an opportunity for the entire industry and various dedicated networks related to the explosive increase of data to be integrated into one network. However, problems with existing legacy systems that are necessary when building 5G-based edge computing may arise. For example, in terms of performance, ultra-low latency/ultra-high speed traffic transmission may not be possible in existing CPU-based networking. For example, in terms of cost, CPU load due to networking may reduce service directivity and thus require multiple CPU servers. For example, in terms of flexibility, fixed networking that cannot provide new functions and services on-demand may be a problem. In terms of security, CPU-based processing may be vulnerable to performance degradation due to multiple security policies and arbitrary attacks by unspecified numbers such as DDoS attacks.

다양한 실시 예에 따른 전자 장치의 방법에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및 지능형 NIC(network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함하고, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작은, 상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하는 동작; 상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하는 동작; 상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하는 동작; 및 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하는 동작을 포함할 수 있다.A method of an electronic device according to various embodiments of the present disclosure includes: performing, in an edge node CPU including at least one core, a control plane for a network function including a virtualization function; and in an intelligent network interface card (NIC), at least a portion of a network function including the virtualization function in the at least one core by performing a data plane role for the network function including the virtualization function. An operation of offloading an operation, and the operation of performing a data plane role for a network function including the virtualization function includes receiving a packet through a first interface of the data plane movement; parsing the packet through a parser table; checking a meta-cache table based on the parsed packet; and when the parsed packet is checked in the meta cache table, modifying the header and meta data of the packet and transmitting the modified packet to the second interface.

다양한 실시 예에 따른 전자 장치에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택; 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부를 포함하는 지능형 NIC; 및 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU;를 포함하고, 상기 지능형 NIC는, 상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하고, 상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하고, 상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하고, 및 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하여 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하도록 설정될 수 있다.In an electronic device according to various embodiments, there is provided an electronic device comprising: a software stack serving as a control plane for a network function including a virtualization function in an edge node CPU including at least one core; an intelligent NIC including a switch data plane unit serving as a data plane for network functions including the virtualization function; and an edge node CPU offloading at least some operations related to network functions including the virtualization function in the at least one core, wherein the intelligent NIC includes: packet), parses the packet through a parser table, checks a meta-cache table based on the parsed packet, and When it is confirmed in the meta cache table, it may be configured to modify the header and metadata of the packet and transmit it to the second interface to serve as a data plane for network functions including the virtualization function.

도 1a는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.
도 1b는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.
도 1c는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처과 지능형 NIC와의 포트 매핑 관계를 개략적으로 나타낸 도면이다.
도 2a 및 도 2b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
도 3a는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다.
도 3b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 패킷 플로우의 차이점을 나타낸 도면이다.
도 4a 및 도 4b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
도 5는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 알고리즘에 관한 흐름도이다.
도 6은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 방법을 개략적으로 나타낸 도면이다.
도 7은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제1 방법을 나타낸 도면이다.
도 8은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제2 방법을 나타낸 도면이다.
도 9는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제3 방법을 나타낸 도면이다.
1A is a diagram schematically illustrating an architecture of a software stack according to various embodiments of the present disclosure;
1B is a diagram schematically illustrating an architecture of a software stack according to various embodiments of the present invention.
1C is a diagram schematically illustrating a port mapping relationship between an architecture of a software stack and an intelligent NIC according to various embodiments of the present disclosure.
2A and 2B are diagrams illustrating differences between an intelligent NIC-based networking solution and other networking solutions according to various embodiments of the present disclosure.
3A is a diagram schematically illustrating a packet flow of an intelligent NIC-based networking solution according to various embodiments of the present disclosure.
3B is a diagram illustrating a difference between packet flows between an intelligent NIC-based networking solution and other networking solutions according to various embodiments of the present disclosure.
4A and 4B are diagrams illustrating differences between an intelligent NIC-based networking solution and other networking solutions according to various embodiments of the present disclosure.
5 is a flowchart of an algorithm of an intelligent NIC-based networking solution according to various embodiments of the present disclosure.
6 is a diagram schematically illustrating a method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.
7 is a diagram illustrating a first method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.
8 is a diagram illustrating a second method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.
9 is a diagram illustrating a third method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시 예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나,""A, B 또는 C," "A, B 및 C 중 적어도 하나,"및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.The various embodiments of this document and the terms used therein are not intended to limit the technical features described in this document to specific embodiments, and should be understood to include various modifications, equivalents, or substitutions of the embodiments. In connection with the description of the drawings, like reference numerals may be used for similar or related components. The singular form of the noun corresponding to the item may include one or more of the item, unless the relevant context clearly dictates otherwise. As used herein, "A or B", "at least one of A and B", "at least one of A or B," "A, B or C," "at least one of A, B and C," and "A , B, or C" each may include all possible combinations of items listed together in the corresponding one of the phrases. Terms such as "first", "second", or "first" or "second" may simply be used to distinguish an element from other elements in question, and may refer elements to other aspects (e.g., importance or order) is not limited. It is said that one (eg, first) component is “coupled” or “connected” to another (eg, second) component, with or without the terms “functionally” or “communicatively”. When referenced, it means that one component can be connected to the other component directly (eg by wire), wirelessly, or through a third component.

본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시 예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다. As used herein, the term “module” may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as, for example, logic, logic block, component, or circuit. A module may be an integrally formed part or a minimum unit or a part of the part that performs one or more functions. For example, according to an embodiment, the module may be implemented in the form of an application-specific integrated circuit (ASIC).

본 문서의 다양한 실시 예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서,'비일시적'은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.According to various embodiments of the present document, one or more instructions stored in a storage medium (eg, internal memory 136 or external memory 138) readable by a machine (eg, electronic device 101) may be implemented as software (eg, the program 140) including For example, the processor (eg, the processor 120 ) of the device (eg, the electronic device 101 ) may call at least one of the one or more instructions stored from the storage medium and execute it. This makes it possible for the device to be operated to perform at least one function according to the called at least one command. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The device-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' only means that the storage medium is a tangible device and does not contain a signal (eg, electromagnetic wave), and this term refers to the case where data is semi-permanently stored in the storage medium and It does not distinguish between temporary storage cases.

일 실시 예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to an embodiment, the method according to various embodiments disclosed in this document may be provided by being included in a computer program product. Computer program products may be traded between sellers and buyers as commodities. The computer program product is distributed in the form of a machine-readable storage medium (eg compact disc read only memory (CD-ROM)), or through an application store (eg Play Store™) or on two user devices (eg, It can be distributed (eg downloaded or uploaded) directly, online between smartphones (eg: smartphones). In the case of online distribution, at least a portion of the computer program product may be temporarily stored or temporarily created in a machine-readable storage medium such as a memory of a server of a manufacturer, a server of an application store, or a relay server.

다양한 실시 예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시 예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.According to various embodiments, each component (eg, a module or a program) of the above-described components may include a singular or a plurality of entities. According to various embodiments, one or more components or operations among the above-described corresponding components may be omitted, or one or more other components or operations may be added. Alternatively or additionally, a plurality of components (eg, a module or a program) may be integrated into one component. In this case, the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. . According to various embodiments, operations performed by a module, program, or other component are executed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations are executed in a different order, omitted, or , or one or more other operations may be added.

도 1a는 본 발명의 다양한 실시 예에 전자장치의 아키텍처를 개략적으로 나타낸 도면이다.1A is a diagram schematically illustrating an architecture of an electronic device according to various embodiments of the present disclosure;

상기 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택(14000);a software stack 14000 serving as a control plane for network functions including virtualization functions in the edge node CPU including the at least one core;

상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부(21000)를 포함하는 지능형 NIC(20000); 및an intelligent NIC 20000 including a switch data plane 21000 serving as a data plane for network functions including the virtualization function; and

상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU(11000);를 포함할 수 있다.The edge node CPU 11000 offloads at least some operations related to the network function including the virtualization function in the at least one core.

상기 스위치 데이터 평면부(21000)로부터 상기 엣지 노드 CPU(11000)에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러(15000)를 더 포함할 수 있다.The virtualization function offloaded from the switch data plane unit 21000 to the edge node CPU 11000 may further include a compiler 15000 for generating binary codes performed by the switch data plane unit.

본 발명의 일 실시예는, 상기 바이너리 코드를 상기 스위치 데이터 평면부(21000)에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈(13000)을 더 포함할 수 있다.An embodiment of the present invention may further include a data plane unit management module 13000 that transmits the binary code to the switch data plane unit 21000 and requests execution.

상기 전자 장치는 운영체제 커널(12000)을 더 포함할 수 있다.The electronic device may further include an operating system kernel 12000 .

상기 데이터 평면부 관리 모듈(13000)은 운영체제 커널(12000)에 포함될 수 있다.The data plane management module 13000 may be included in the operating system kernel 12000 .

상기 데이터 평면부 관리 모듈(13000)은 데이터 평면부를 처리하는 라이브러리, 및/또는 지능형 NIC(20000) 또는 일반 NIC(30000)를 제어하는 제어 드라이버를 포함할 수 있다. 또한, 상기 데이터 평면부 관리 모듈(13000)은 지능형 NIC(20000) 또는 일반 NIC(30000)를 제어할 수 있는 인터페이스, 예를 들어, API(application programming interface) 또는 어플리케이션(application)을 포함할 수 있다. 상기 데이터 평면부 관리 모듈(13000)은 예를 들어, 데이터 평면부 개발도구(data plane development kit, DPDK)일 수 있다.The data plane part management module 13000 may include a library that processes the data plane part and/or a control driver that controls the intelligent NIC 20000 or the general NIC 30000 . In addition, the data plane management module 13000 may include an interface capable of controlling the intelligent NIC 20000 or the general NIC 30000, for example, an application programming interface (API) or an application. . The data plane management module 13000 may be, for example, a data plane development kit (DPDK).

본 발명의 일 실시예는, 상기 일반 NIC(30000)를 더 포함하며, 상기 데이터 평면부 관리 모듈(13000)은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청하는 것일 수 있다.An embodiment of the present invention further includes the general NIC 30000, and the data plane management module 13000 may request the general NIC to perform a non-virtualized network function.

본 발명의 일 실시예는, 상기 가상화 기능을 상기 스위치 데이터 평면부(21000)로부터 상기 엣지 노드 CPU(11000)에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크(12100)를 더 포함할 수 있다.An embodiment of the present invention may further include a high-speed data path framework 12100 that offloads the virtualization function from the switch data plane unit 21000 to the edge node CPU 11000. .

상기 고속 데이터 경로 프레임워크(12100)는 RX 경로에 초기 후크를 추가하고 상기 가상화 기능이 패킷의 처리를 제어하는 것일 수 있다. 상기 후크는 인터럽트 처리 직후와 네트워크 스택 자체에 필요한 메모리 할당 전에 상기 데이터 평면부 관리 모듈에 포함된 NIC 드라이버에 배치될 수 있다.The high-speed data path framework 12100 may add an initial hook to the RX path, and the virtualization function may control packet processing. The hook may be disposed in the NIC driver included in the data plane management module immediately after interrupt processing and before memory allocation required for the network stack itself.

상기 고속 데이터 경로 프레임워크(12100)는 상기 운영체제 커널(12000)에 포함 될 수 있다.The high-speed data path framework 12100 may be included in the operating system kernel 12000 .

상기 지능형 NIC은 필드 프로그래머블 게이트 어레이(FPGA, Field Programable Gate Array, 22400)를 더 포함할 수 있다.The intelligent NIC may further include a Field Programmable Gate Array (FPGA) 22400.

상기 지능형 NIC은 주문형 반도체(Application Specific Integrated Circuit, ASIC, 22200)를 더 포함할 수 있다.The intelligent NIC may further include an application specific integrated circuit (ASIC, 22200).

다양한 실시 예에 따르면, 가상 라우터(virtual router)는 네트워크 기능 가상화 (network function virtualization, NFV)의 컨트롤 플레인(control plane)의 역할을 수행하고, 오픈 플랫폼 전송 개체(open-platform forwarding entities, OFE)는 데이터 플레인(data plane)의 역할을 수행할 수 있다.According to various embodiments, a virtual router serves as a control plane of network function virtualization (NFV), and open-platform forwarding entities (OFE) It may serve as a data plane.

도 1b는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.1B is a diagram schematically illustrating an architecture of a software stack according to various embodiments of the present disclosure;

소프트웨어 스택(14000)은 네트워크 서비스를 관리 및/또는 설정하는 작업을 수행하는 관리/설정 모듈(14100)을 더 포함 수 있다. 상기 관리/설정 모듈(14100)은 컨테이너 자동 배포 작업, 예를 들어, Puppet, Ansible 등, 원격 프로시저 호출 작업, 예를 들어, gRPC, HTTP API 등, 오픈플로우(Openflow) 작업, 유저 플레인(user plane)-데이터 플레인(data plane) 브릿지 인터페이스(bridge interface), 예를 들어, 3GPP N4, 커맨드 라인 인터페이스(command line interface), SMTP(Simple Mail Transfer Protocol) 등의 작업을 수행하는 것일 수 있다.The software stack 14000 may further include a management/setting module 14100 configured to manage and/or configure network services. The management/configuration module 14100 is a container automatic deployment operation, for example, Puppet, Ansible, etc., remote procedure call operation, for example, gRPC, HTTP API, etc., Openflow operation, user plane (user plane)-data plane (data plane) bridge interface (bridge interface), for example, 3GPP N4, command line interface (command line interface), may be to perform tasks such as SMTP (Simple Mail Transfer Protocol).

소프트웨어 스택(14000)은 네트워크 서비스를 제공 및/또는 제어하는 작업을 수행하는 서비스 모듈(14200)을 더 포함 수 있다. 상기 서비스 모듈(14200)은 상태 성비스(state service), MEC(Multi-Access Edge Computing)-DP(Data Plane) 서비스, 라우팅 서비스, 예를 들어, Quagga/FRR, 5G UPF(User Plane Function), 플랫폼(Platform) 서비스, LAG(Link aggregation), Connection Tracking, Monitoring 서비스 등을 제공하는 것일 수 있다.The software stack 14000 may further include a service module 14200 that provides and/or controls a network service. The service module 14200 is a state service (state service), MEC (Multi-Access Edge Computing)-DP (Data Plane) service, routing service, for example, Quagga / FRR, 5G UPF (User Plane Function), It may be to provide a platform service, link aggregation (LAG), connection tracking, monitoring service, and the like.

소프트웨어 스택(14000)은 지능형 NIC(20000) 또는 일반 NIC(30000)와 엣지 노드 CPU에서 수행되는 네트워크 기능의 입출력 작업을 수행하는 인터페이스 모듈(14300)을 더 포함할 수 있다. 상기 인터페이스 모듈(14300)은 상기 데이터 평면부 관리 모듈(13000)을 포함하거나, 입출력에 필요한 전부 또는 일부 작업을 수행하는 것일 수 있다. 상기 서비스 모듈(14200)은 상기 지능형 NIC(20000) 또는 일반 NIC(30000)과 입출력을 직접 접근을 모사하여 수행하는 스위치 추상 인터페이스(21100)을 포함하거나, 외부에서 호출하여 이를 수행할 수 있다. 상기 인터페이스 모듈(14300)은 상기 바이너리를 생성하는 전부 또는 일부 작업을 수행하는 컴파일러(15000)을 포함하거나, 외부에서 호출하여 이를 수행할 수 있다.The software stack 14000 may further include an interface module 14300 that performs input/output operations of the intelligent NIC 20000 or the general NIC 30000 and the network function performed by the edge node CPU. The interface module 14300 may include the data plane part management module 13000 or perform all or part of tasks required for input/output. The service module 14200 may include a switch abstract interface 21100 that simulates direct access to the intelligent NIC 20000 or the general NIC 30000 and performs input/output, or may perform this by calling from the outside. The interface module 14300 may include a compiler 15000 that performs all or part of the operation of generating the binary, or may perform this by calling it from the outside.

상기 인터페이스 모듈(14300)은 컴파일러 기반 하드웨어 추상 레이어(13100)를 포함하며, 상기 서비스 모듈(14200)에서 수행되는 서비스 작업은 상기 컴파일러(15000)에서 빌드(build)된 바이너리가 지능형 NIC(20000)의 하드웨어에서 실행됨으로써, 상기 지능형 NIC(20000) 또는 일반 NIC(30000)과 입출력을 직접 접근을 모사하여 수행하는 스위치 추상 인터페이스(21100)를 통하여, 상기 서비스 모듈이 지능형 NIC(20000)에 접근 및 제어가 가능하게 할 수 있다. 상기 인터페이스 모듈(14300)은 상기 지능형 NIC(20000) 또는 일반 NIC(30000)의 물리 포트 또는 가상 포트에 맵핑되어 조작이 가능한 하나 이상의 채널(14310)을 포함할 수 있다.The interface module 14300 includes a compiler-based hardware abstraction layer 13100, and the service operation performed by the service module 14200 is performed by the binary built in the compiler 15000 of the intelligent NIC 20000. By executing in hardware, the service module accesses and controls the intelligent NIC 20000 through the switch abstract interface 21100 that simulates direct access to the intelligent NIC 20000 or the general NIC 30000 and performs input/output. can make it possible The interface module 14300 may include one or more channels 14310 that are mapped to a physical port or a virtual port of the intelligent NIC 20000 or the general NIC 30000 and can be manipulated.

상기 인터페이스 모듈(14300)은 소프트웨어 스택(14000)에 모두 포함되거나, 외부 모듈을 호출할 수 있는 인터페이스로써 포함될 수 있다.The interface module 14300 may be all included in the software stack 14000 or may be included as an interface capable of calling an external module.

도 1c는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처과 지능형 NIC와의 포트 매핑 관계를 개략적으로 나타낸 도면이다.1C is a diagram schematically illustrating a port mapping relationship between an architecture of a software stack and an intelligent NIC according to various embodiments of the present disclosure.

상기 전자장치는 메모리를 더 포함할수 있으며, 상기 메모리에는 상기 전자장치의 자원을 할당 및/또는 제어하는 운영체제(Operating System)가 할당되어 있을 수 있으며, 상기 메모리는 상기 운영체제가 직접 상기 전자 장치를 제어하기 위한 작업을 수행하는 운영체제 커널(12000) 및 상기 전자장치를 이용하는 유저(user)가 상기 전자 징치를 제어하기 위한 작업을 수행하는 운영체제 사용자영역(15000)을 포함할 수 있다.The electronic device may further include a memory, and an operating system for allocating and/or controlling the resources of the electronic device may be allocated to the memory, and the memory may be where the operating system directly controls the electronic device It may include an operating system kernel 12000 that performs a task for performing a task, and an operating system user area 15000 that performs a task for a user who uses the electronic device to control the electronic device.

상기 운영체제 커널(12000)은 상기 지능형 NIC(20000) 또는 상기 일반 NIC(30000)의 자원을 직접적으로 접근(direct access)할 수 있으며, 상기 CPU(11000)에 직접적으로 접근(direct access)할 수 있다.The operating system kernel 12000 may directly access the resources of the intelligent NIC 20000 or the general NIC 30000, and may directly access the CPU 11000. .

상기 고속 데이터 경로 프레임워크(12100)은 상기 운영체제 커널(12000)을 통하여 상기 지능형 NIC(20000) 또는 상기 일반 NIC(30000)의 포트(22000)에 접근 및/또는 제어 작업을 수행할 수 있으며, 물리적으로 존재하지 않으나, 실제 물리 포트와 동일하게 패킷을 입출력할 수 있는 가상화 기능(virtual function) 포트(22300)를 생성 및/또는 제거할 수 있다.The high-speed data path framework 12100 can access and/or control the port 22000 of the intelligent NIC 20000 or the general NIC 30000 through the operating system kernel 12000, and does not exist, but a virtual function port 22300 capable of inputting and outputting packets in the same way as an actual physical port may be created and/or removed.

상기 운영체제 사용자영역(15000)은 상기 운영체제 커널(12000)로부터 상기 전자 장치의 일부 자원을 할당 받아, 상기 운영체제 사용자영역(15000)에서 단일의 가상 운영체제 또는 운영체제의 일부를 실행하는 하나 이상의 앱 컨테이너(15100)가 실행되어 이를 포함할 수 있으며, 상기 앱 컨테이너(15100)는 네트워크 서비스앱(15120)을 포함할 수 있다. 또한, 상기 앱 컨테이너(15100) 중에는 상기 소프트웨어 스택(14000)이 상기 소프트웨어 스택(14000)으로서 실행되는 상기 소프트웨어 스택 컨테이너(15200)일 수 있다. 상기 네트워크 서비스앱(15120)은 MEC(Multi-Access Edge Computing)에 대하여, 인공지능(Artificial Intelligence) 서비스, 컨텐츠 전송 네트워크(Contents Delivery Network), AR(augmented reality) 서비스, VR(virtual reality) 서비스 등을 제공하는 어플리케이션일 수 있다. The operating system user area 15000 receives some resources of the electronic device from the operating system kernel 12000 and executes a single virtual operating system or a part of the operating system in the operating system user area 15000. One or more app containers 15100 ) may be executed and include it, and the app container 15100 may include a network service app 15120 . Also, among the app containers 15100 , the software stack 14000 may be the software stack container 15200 in which the software stack 14000 is executed. The network service app 15120 for Multi-Access Edge Computing (MEC), artificial intelligence (Artificial Intelligence) service, content delivery network (Contents Delivery Network), AR (augmented reality) service, VR (virtual reality) service, etc. It may be an application that provides

상기 앱 컨테이너(15100) 또는 상기 소프트웨어 스택 컨테이너(15200)는 SRIOV(Single Root I/O Virtualization)과 상기 가상화 기능 포트(22300) 간에 상기 고속 데이터 경로 프레임워크(12100)을 통하여 서비스에 필요한 패킷을 처리할 수 있다.The app container 15100 or the software stack container 15200 processes a packet required for a service through the high-speed data path framework 12100 between a Single Root I/O Virtualization (SRIOV) and the virtualization function port 22300 can do.

상기 소프트웨어 스택(14000)에 연결된 채널(14310)을 상기 물리 포트(22000) 또는 상기 가상화 기능 포트(22300)에 소프트웨어적으로 맵핑될 수 있다.A channel 14310 connected to the software stack 14000 may be mapped to the physical port 22000 or the virtualization function port 22300 in software.

다양한 실시 예에 따르면, 네트워크, 특히, 클라우드와 결합된 지능형 커넥티드 차량 (intelligent connected vehicle, ICV)은 보다 안전하고 환경 친화적인 교통 시스템을 제공할 수 있다. 그러나, 기존 네트워크의 경우, 짧은 지연 응답 시간을 제공하는 것에 제한되며 고유한 지연, 중단 및 동적 변경에 대한 비 유연성으로 인해 제한적일 수 있다. According to various embodiments, a network, particularly, an intelligent connected vehicle (ICV) coupled with a cloud may provide a safer and more environmentally friendly transportation system. However, for existing networks, they are limited to providing low latency response times and may be limited due to inherent delays, disruptions, and inflexibility to dynamic changes.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 5G 시스템 아키텍처 기반 ICV 통신용 플랫폼을 제공할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 기존 CPU 기반 네트워크 기능의 포워딩 성능 문제를 해결할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 소프트웨어 정의 네트워크 (software defined network, SDN) 컴파일러의 개념을 도입하여 네트워크 기능 가상화 (network function virtualization, NFV)를 수행할 수 있다.According to various embodiments, the intelligent NIC-based networking solution may provide a platform for ICV communication based on a 5G system architecture. An intelligent NIC-based networking solution can solve the forwarding performance problem of existing CPU-based network functions. An intelligent NIC-based networking solution can perform network function virtualization (NFV) by introducing the concept of a software defined network (SDN) compiler.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 초지연의 스위칭이 필요한 서비스 제공 시스템, 예를 들어, 금융 트레이딩 시스템, 대용량 콘텐츠 전송 시스템, 예를 들어, AR/VR 콘텐츠 전송 시스템, 스트리밍 게임 시스템을 수행할 수 있다.According to various embodiments, the intelligent NIC-based networking solution provides a service providing system requiring ultra-delay switching, for example, a financial trading system, a large-capacity content transmission system, for example, an AR/VR content transmission system, and a streaming game system. can be done

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 소프트웨어 정의 네트워크 방법을 통해 ICV 트래픽 전송을 하드웨어로 오프로드 할 수 있다. 또한, 지능형 NIC 기반 네트워킹 솔루션은 이기종 네트워크 슬라이스의 서비스 수준 계약 (service level agreement, SLA)을 보장하고 상호 운용 할 수있는 시스템을 제공할 수 있다.According to various embodiments, an intelligent NIC-based networking solution may offload ICV traffic transmission to hardware through a software-defined network method. In addition, intelligent NIC-based networking solutions can ensure service level agreements (SLAs) of heterogeneous network slices and provide interoperable systems.

다양한 실시 예에 따르면, 하드웨어 오프로딩을 통해 디도스 어택으로 인한 CPU 부하 최소화 및 이를 통한 서비스의 안정성과 보안성 문제를 해결할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 네트워킹과 CPU 기반의 애플리케이션 간 엄격한 분리를 통해 네트워킹 기반의 외부 해킹 및 공격으로부터 CPU 를 사전에 차단하여 서비스의 안정성과 보안성이 향상된 시스템을 제공할 수 있다.According to various embodiments, it is possible to minimize the CPU load due to the DDoS attack through hardware offloading and solve the problem of service stability and security through this. The intelligent NIC-based networking solution can provide a system with improved service stability and security by blocking the CPU from external hacking and attacks based on networking through strict separation between networking and CPU-based applications.

도 2a 및 도 2b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.2A and 2B are diagrams illustrating differences between an intelligent NIC-based networking solution and other networking solutions according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 도 2a를 참조하면, 종래의 경우, 가상 네트워크 기능(virtual network function, VNF, 313)을 전적으로 엣지 노드 CPU(edge node CPU)에서 수행할 수 있다. 이후, PCIE(PCI express)를 통해 전통 NIC (traditional NIC, 예: 하드웨어 기반 NIC, 311)와 통신하고 데이터를 전달할 수 있다. 예를 들어, 종래의 경우, 가상 네트워크 기능(VNF)의 수행을 위해 엣지 노드 CPU의 코어(core)를 16개를 사용하기에 엣지 노드 CPU의 과부하를 초래할 수 있다. 예를 들어, 종래의 SRIOV(Single Root I/O Virtualization)의 경우, 가상화 기능(virtual function)을 16개만 생성 가능하다는 제약이 있을 수 있다.According to various embodiments, referring to FIG. 2A , in the conventional case, a virtual network function (VNF) 313 may be entirely performed by an edge node CPU. Thereafter, it can communicate with a traditional NIC (eg, a hardware-based NIC, 311) and pass data via PCIE (PCI express). For example, in the conventional case, since 16 cores of the edge node CPU are used to perform a virtual network function (VNF), an overload of the edge node CPU may occur. For example, in the case of the conventional Single Root I/O Virtualization (SRIOV), there may be a restriction that only 16 virtual functions can be created.

다양한 실시 예에 따르면, 도 2b를 참조하면, 지능형 NIC 기반 네트워킹 솔루션의 경우, 가상 네트워크 기능(virtual network function, VNF)을 VNF CP(control plane, 323) 및 VNF DP(data plane, 325)로 구분할 수 있고, VNF CP는 엣지 노드 CPU(edge node CPU)에서 수행하고, VNF DP는 지능형 NIC(예: 소프트웨어 기반 NIC, 321)에서 수행할 수 있다. 예를 들어, 지능형 NIC 기반 네트워킹솔루션의 경우, 가상 네트워크 기능(VNF)의 수행을 위해 엣지 노드 CPU의 코어(core)를 4개를 사용하기에 엣지 노드 CPU의 부하를 상대적으로 경감시킬 수 있다. 예를 들어, 지능형 NIC을 이용하여, 종래 CPU에서 패킷 처리하는 가상화 기능(virtual function)을 NIC 단계에서 컴파일러로 기능을 컴파일하여 대체할 수 있다. 즉, 지능형 NIC를 소프트웨어 컴파일러로 정의할 수 있고, 가상화 기능의 오프로딩을 수행할 수 있다. According to various embodiments, referring to FIG. 2B , in the case of an intelligent NIC-based networking solution, a virtual network function (VNF) is divided into a VNF CP (control plane, 323) and a VNF DP (data plane, 325). VNF CP can be performed on an edge node CPU (edge node CPU), and VNF DP can be performed on an intelligent NIC (eg, software-based NIC, 321). For example, in the case of an intelligent NIC-based networking solution, since 4 cores of the edge node CPU are used to perform a virtual network function (VNF), the load on the edge node CPU can be relatively reduced. For example, by using an intelligent NIC, a virtual function for processing packets in a conventional CPU may be substituted by compiling a function with a compiler at the NIC stage. That is, an intelligent NIC can be defined as a software compiler and offloading of virtualization functions can be performed.

도 3a는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다. CPU(11000)에 로딩된 NFV(11100)들이, 각각 지능형 NIC(20000)의 ASIC(22200), NPU(22300), FPGA(22400)에 오프로드되어, CPU(11000)의 부하가 분산되고, 지능형 NIC의 다양한 하드웨어 기능을 활용할 수 있음을 확인할 수 있다.3A is a diagram schematically illustrating a packet flow of an intelligent NIC-based networking solution according to various embodiments of the present disclosure. The NFVs 11100 loaded on the CPU 11000 are offloaded to the ASIC 22200, NPU 22300, and FPGA 22400 of the intelligent NIC 20000, respectively, so that the load of the CPU 11000 is distributed, intelligent It can be seen that various hardware functions of the NIC can be utilized.

도 3b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다. 통상적인 가상 스위치 기능을 사용하는 전자 장치(100000)의 경우 지연율이 높고, 대역폭이 낮고, CPU에 부하가 집중되어, 패킷 처리가 늦어질 수도 있으나, 본 발명의 실시 예에 따른 전자 장치(200000)는 지능형 NIC에 패킷이 오프로드되어, 지연율이 낮고, 대역폭이 높아지며, CPU에 부하가 분산되어, 패킷 처리의 가속화가 가능하다.3B is a diagram schematically illustrating a packet flow of an intelligent NIC-based networking solution according to various embodiments of the present disclosure. In the case of the electronic device 100000 using a typical virtual switch function, packet processing may be delayed due to a high delay rate, a low bandwidth, and a concentrated load on the CPU, but the electronic device 200000 according to an embodiment of the present invention Packets are offloaded to the intelligent NIC, resulting in low latency, high bandwidth, and distributed load on the CPU, enabling acceleration of packet processing.

도 4a 및 도 4b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.4A and 4B are diagrams illustrating differences between an intelligent NIC-based networking solution and other networking solutions according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 소프트웨어 네트워킹 기반 솔루션(410) 및 SRIOV 기반 네트워킹 솔루션(420) 대비 아키텍처 상의 차이점이 존재할 수 있다. 예를 들어, 지능형 NIC 기반 네트워킹 솔루션(430)은 컨트롤 플레인(CP, 431)과 데이터 플레인(DP, 433)을 분리하여 포워딩을 수행할 수 있다. 예를 들어, 데이터 플레인(433)은 하드웨어 레벨의 포워딩 테이블 및 제어 플레인(431)을 위한 에이전트로 구성될 수 있다. 예를 들어, 컨트롤 플레인(431)은 NFV 기반 사용자 애플리케이션, 에이전트, 컴파일러 애플리케이션으로 구성될 수 있다. 예를 들어, 지능형 NIC 기반 네트워킹 솔루션(430)은 데이터 플레인(433)의 NFV를 하드웨어 스위치로 오프로드하고, 네트워크 슬라이스를 수행함에 있어서 하드웨어 레벨의 QoS(quality of service)를 보장할 수 있다. 즉, 가상화 네트워크(예: 스위치, 라우터 등)를 가속화하여 초저비용(very low cost) 및 실시간 응답에 근접한(near-real-time response) 통신을 수행할 수 있다.According to various embodiments, the intelligent NIC-based networking solution 430 may be different in architecture from the software networking-based solution 410 and the SRIOV-based networking solution 420 . For example, the intelligent NIC-based networking solution 430 may perform forwarding by separating the control plane (CP, 431) and the data plane (DP, 433). For example, the data plane 433 may consist of a hardware-level forwarding table and an agent for the control plane 431 . For example, the control plane 431 may include an NFV-based user application, an agent, and a compiler application. For example, the intelligent NIC-based networking solution 430 may offload the NFV of the data plane 433 to a hardware switch and guarantee hardware-level quality of service (QoS) in performing network slicing. In other words, it is possible to perform communication with very low cost and near-real-time response by accelerating virtualized networks (eg, switches, routers, etc.).

다양한 실시 예에 따르면, 소프트웨어 네트워킹 기반 솔루션(410) 및 SRIOV 기반 네트워킹 솔루션(420)은 컨트롤 플레인(411, 421) 및 데이터 플레인(413, 423)이 게스트 유저로부터 호스트 커널까지의 동작을 모두 수행할 수 있다. 다만, 지능형 NIC 기반 네트워킹 솔루션(430)은 게스트 유저로부터 호스트 커널까지의 동작은 컨트롤 플레인(431)에서 수행하고, 이후 가상화 기능은 데이터 플레인(433)에서 수행할 수 있다.According to various embodiments, in the software networking-based solution 410 and the SRIOV-based networking solution 420, the control planes 411 and 421 and the data planes 413 and 423 perform all operations from the guest user to the host kernel. can However, in the intelligent NIC-based networking solution 430 , the operation from the guest user to the host kernel may be performed in the control plane 431 , and virtualization functions thereafter may be performed in the data plane 433 .

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 소프트웨어 스택(software stack), 예를 들어, 넷록스 사(NetLOX)의 상표명 록시라이트(Loxilight) 소프트웨어 스택을 포함할 수 있다. 상기 소프트웨어 스택은 P4 코어 컴파일러(P4 core compiler), 오프로드 컨플릭트 리졸버(offload conflict resolver) 및 기능 로더(function loader)를 모두 또는 일부로써 포함할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 430 may include a software stack, for example, a Loxilight software stack from NetLOX. The software stack may include all or part of a P4 core compiler, an offload conflict resolver, and a function loader.

상기 P4 코어 컴파일러(P4 core compiler)는 높은 수준의 P4 중간 표현(intermediate representation)을 이해 할 수 있고, Verilog, Micro-Code, eBPF, 또는 vendor SDK C code와 같은 형태의 다양한 로직으로 출력할 수 있다.The P4 core compiler can understand the high-level P4 intermediate representation, and can output various types of logic such as Verilog, Micro-Code, eBPF, or vendor SDK C code. .

상기 오프로드 컨플릭트 리졸버는 P4 언어의 중간 표현이 지능형 NIC의 하드웨어 또는 일반 NIC의 하드웨어 자원과 충돌이 발생하는 경우, 충돌이 발생하지 않는 형태의 로직으로 상기 P4 코어 컴파일러의 출력 형태를 변경할 수 있다.The offload conflict resolver may change the output form of the P4 core compiler to logic in a form in which no conflict occurs when the intermediate representation of the P4 language conflicts with the hardware of the intelligent NIC or the hardware resource of the general NIC.

상기 기능 로더는 상기 컴파일러에서 출력한 로직 데이터, 예를 들어, eBPF(Extended Berkeley Packet Filter) 사용자 프로그램을 eBPF 바이트 코드로 컴파일하여 데이터 플레인으로 로드할 수 있다. 상기 기능 로드는 상기 컴파일러에서 출력한 로직 데이터를, 예를 들어, 지능형 NIC의 하드웨어 블록 또는 일반 NIC의 하드웨어 블록에 LLVM(Low Level Virtual Machine) 및/또는 Clang 컴파일러를 사용하여 상기 전자장치의 운영체제 커널 영역에 XDP로 로드하거나, 독점적 인터페이스(Proprietary Interface)로 지능형 NIC의 FPGA로 로드하거나, 독점적 인터페이스로 지능형 NIC의 네트워크 프로세서로 로드할 수 있다.The function loader may compile logic data output from the compiler, for example, an extended Berkeley Packet Filter (eBPF) user program into eBPF byte code and load it into the data plane. The function load is the operating system kernel of the electronic device by using, for example, a low level virtual machine (LLVM) and/or a Clang compiler in a hardware block of an intelligent NIC or a hardware block of a general NIC by using the logic data output from the compiler. It can be loaded into a realm as XDP, as a proprietary interface to the intelligent NIC's FPGA, or as a proprietary interface to the intelligent NIC's network processor.

도 5는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 알고리즘에 관한 흐름도이다. 5 is a flowchart of an algorithm of an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 510 동작에서, MA(match-action) 페어 형태의 네트워크 기능(network function)들을 확인할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 may check network functions in the form of a match-action (MA) pair in operation 510 .

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하는지 확인할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 may determine whether more network functions exist in operation 520 .

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하지 않는 경우, 525 동작으로 분기하여, 생성된 로직을 다양한 오프로드 블록의 형태로 로드할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 branches to operation 525 when more network functions do not exist in operation 520 , and converts the generated logic in the form of various offload blocks. can be loaded

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하는 경우, 530 동작으로 분기하여, eBPF(BPF 가상머신) 및 XDP (eXpress Data Path)를 위한 베이스라인 폴백을 생성할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 branches to operation 530 when there are more network functions in operation 520, eBPF (BPF virtual machine) and XDP (eXpress Data Path) ) can create a baseline fallback for

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 되었는지 확인할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 may determine whether it is sufficiently offloaded in operation 540 .

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 되지 않은 경우, 545 동작으로 분기하여, 가장 최적화된 블록을 위한 오프로드 로직을 생성하고, 560 동작으로 분기하여, XDP & 지능형 NIC 하이브리드 모드에서 오프로드 로직을 끼워 넣기 위한 메타데이터를 삽입할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 500 branches to operation 545 when it is not sufficiently offloaded in operation 540, generates offload logic for the most optimized block, and branches to operation 560. , XDP & intelligent NIC can insert metadata to embed offload logic in hybrid mode.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 된 경우, 550 동작으로 분기하여, 가장 충분한 네트워크 기능을 위한 오프로드 로직을 생성하고, 560 동작으로 분기하여, XDP & 지능형 NIC 하이브리드 모드에서 오프로드 로직을 끼워 넣기 위한 메타데이터를 삽입할 수 있다.According to various embodiments, the intelligent NIC-based networking solution 500 branches to operation 540, when sufficiently offloaded, to operation 550 to generate offload logic for the most sufficient network function, and branch to operation 560, In XDP & intelligent NIC hybrid mode, you can insert metadata to embed offload logic.

하기 표 1은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 GTP 터널 관리 휴리스틱 알고리즘을 나타낸 것이다.Table 1 below shows the GTP tunnel management heuristic algorithm of the intelligent NIC-based networking solution according to various embodiments of the present invention.

Algorithm 1 GTP Tunnel Management HeuristicAlgorithm 1 GTP Tunnel Management Heuristic Procedure: gtp_tunnel_add():
in-args: tunnel_name, tunnel src-ip, tunnel dst-ip, ingress tunnel-id, egress tunnel-id, vrf-id
out-args: Error Code or 0 for success.
Description: Create a new GTP tunnel interface with a terminating end-point.
1. Prepare tunnel hash key with ingress tunnel-id, egress tunnel-id, vrf-id.
2. Lookup the Tunnel hash table for existing tunnel element
3. If present then return with error ALREADY_EXIST else continue.
4. Allocate tunnel element and copy tunnel key, tunnel src-ip, tunnel dst-ip, ingress tunnel-id and egress tunnel-id.
5. Store tunnel element in tunnel hash table.
6. Install incoming GTP tunnel flow with Match dst ip as tunnel src-ip, src ip as tunnel dst-ip, ingress tunnel-id, gtp udp dst port with actions DECAP_GTP_TUNNEL.
7. Return 0

Procedure: gtp_tunnel_del():
in-args: tunnel_name, ingress tunnel-id, egress tunnel-id, vrf-id
out-args: Error Code or 0 for success.
Description: Delete a existing GTP tunnel interface.
1. Prepare tunnel hash key with ingress tunnel-id, egress tunnel-id, vrf-id.
2. Lookup the Tunnel hash table for existing tunnel element.
3. If not present then return with error NOT_EXIST else continue.
4. Uninstall Incoming GTP tunnel flows with match tunnel src-ip, tunnel dst-ip, ingress tunnel-id, gtp udp dst port.
5. Remove tunnel element from tunnel hash table.
6. Return 0
Procedure : gtp_tunnel_add():
in-args : tunnel_name, tunnel src-ip, tunnel dst-ip, ingress tunnel-id, egress tunnel-id, vrf-id
out-args : Error Code or 0 for success.
Description : Create a new GTP tunnel interface with a terminating end-point.
1. Prepare tunnel hash key with ingress tunnel-id, egress tunnel-id, vrf-id.
2. Lookup the Tunnel hash table for existing tunnel element
3. If present then return with error ALREADY_EXIST else continue.
4. Allocate tunnel element and copy tunnel key, tunnel src-ip, tunnel dst-ip, ingress tunnel-id and egress tunnel-id.
5. Store tunnel element in tunnel hash table.
6. Install incoming GTP tunnel flow with Match dst ip as tunnel src-ip, src ip as tunnel dst-ip, ingress tunnel-id, gtp udp dst port with actions DECAP_GTP_TUNNEL.
7. Return 0

Procedure : gtp_tunnel_del():
in-args : tunnel_name, ingress tunnel-id, egress tunnel-id, vrf-id
out-args : Error Code or 0 for success.
Description : Delete a existing GTP tunnel interface.
1. Prepare tunnel hash key with ingress tunnel-id, egress tunnel-id, vrf-id.
2. Lookup the Tunnel hash table for existing tunnel element.
3. If not present then return with error NOT_EXIST else continue.
4. Uninstall Incoming GTP tunnel flows with match tunnel src-ip, tunnel dst-ip, ingress tunnel-id, gtp udp dst port.
5. Remove tunnel element from tunnel hash table.
6. Return 0

다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 단말 지점을 사용하여 신규 GTP 터널 인터페이스를 생성하는 단계(S100)를 포함하며, 상기 GTP 터널 인터페이스를 생성하는 단계(S100)는 아래 단계들을 포함할 수 있다:인입 터널 ID, 유출 터널 ID, VRF(Virtual Routing and Forwarding) ID를 사용하여 터널 해시키를 준비하는 단계(S110);According to various embodiments, the GTP tunnel management heuristic algorithm may include generating a new GTP tunnel interface using a terminal point (S100), and creating the GTP tunnel interface (S100) may include the following steps. There is: preparing a tunnel hash using an ingress tunnel ID, an outgoing tunnel ID, and a VRF (Virtual Routing and Forwarding) ID (S110);

기존 터널 요소를 터널 해시 테이블에서 조회하는 단계(S120);Inquiring an existing tunnel element in the tunnel hash table (S120);

상기 기존 터널 요소가 터널 해시 테이블에 존재하는 경우, GTP 터널 인터페이스 생성을 종료하는 단계 (S130);terminating generation of the GTP tunnel interface when the existing tunnel element exists in the tunnel hash table (S130);

터널 요소를 할당 및 터널 키, 터널 출발 IP, 터널 도착 IP, 인인 터널 ID 및 유출 터널 ID를 할당된 터널 요소에 복사하는 단계(S140);copying the assignment and tunnel key of the tunnel element, the tunnel departure IP, the tunnel arrival IP, the in-tunnel ID, and the outgoing tunnel ID to the assigned tunnel element (S140);

터널 해시 테이블에 터널 요소를 저장하는 단계(S150); 및storing the tunnel element in the tunnel hash table (S150); and

도착 IP로서 터널 출발 IP, 출발 IP로서 터널 도착 IP, 인입 터널 ID 및 GTP UDP 도착 포트와 DECAP_GTP_TUNNEL 동작을 사용하여 유입 GTP 터널 플로우를 설치하는 단계(S160);installing an incoming GTP tunnel flow using the tunnel departure IP as the arrival IP, the tunnel arrival IP as the departure IP, the incoming tunnel ID, and the GTP UDP arrival port and the DECAP_GTP_TUNNEL operation (S160);

다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 단말 지점을 사용하여 GTP 터널 인터페이스를 제거하는 단계(S200)를 포함하며, 상기 GTP 터널 인터페이스를 제거하는 단계(S200)는 아래 단계들을 포함할 수 있다:According to various embodiments, the GTP tunnel management heuristic algorithm may include removing the GTP tunnel interface using a terminal point (S200), and removing the GTP tunnel interface (S200) may include the following steps. :

인입 터널 ID, 유출 터널 ID, VRF(Virtual Routing and Forwarding) ID를 사용하여 터널 해시키를 준비하는 단계(S210);preparing a tunnel hash using an ingress tunnel ID, an outgoing tunnel ID, and a virtual routing and forwarding (VRF) ID (S210);

기존 터널 요소를 터널 해시 테이블에서 조회하는 단계(S220);Inquiring an existing tunnel element in the tunnel hash table (S220);

상기 기존 터널 요소가 터널 해시 테이블에 존재하는 경우, GTP 터널 인터페이스 제거를 종료하는 단계 (S230);terminating the removal of the GTP tunnel interface when the existing tunnel element exists in the tunnel hash table (S230);

도착 IP로서 터널 출발 IP, 출발 IP로서 터널 도착 IP, 인입 터널 ID 및 GTP UDP 도착 포트와 DECAP_GTP_TUNNEL 동작을 사용하여 유입 GTP 터널 플로우를 제거하는 단계(S240); 및removing the incoming GTP tunnel flow by using the tunnel departure IP as the arrival IP, the tunnel arrival IP as the departure IP, the incoming tunnel ID, and the GTP UDP arrival port and the DECAP_GTP_TUNNEL operation (S240); and

터널 해시 테이블에서 터널 요소를 제거하는 단계(S250);removing the tunnel element from the tunnel hash table (S250);

하기 표 2는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 GTP 유저플로우 매니지먼트 휴리스틱 알고리즘의 예시이다.Table 2 below is an example of a GTP user flow management heuristic algorithm of an intelligent NIC-based networking solution according to various embodiments of the present invention.

Algorithm 2 GTP User Flow Management HeuristicAlgorithm 2 GTP User Flow Management Heuristic Procedure: gtp_user_flow_add():
in-args: src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port, tunnel-name
out-args: Error Code or 0 for success
Description: Create a new GTP User flow
1. Prepare user flow hash key with src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port.
2. Lookup the user flow hash table for existing user flow element.
3. If present then return with error ALREADY_EXIST else continue.
4. Lookup the tunnel element with tunnel name as auxiliary key.
5. Allocate user flow element and copy user flow key and tunnel elem.
6. Store user flow element in user flow hash table.
7. Install ingress user flow with match tunnel attributes for outer header and user flow attributes for inner header with actions DECAP_GTP_TUNNEL.
8. Install egress user flow with match user flow attributes and action as ENCAP_GTP_TUNNEL with gtp tunnel attributes.
9. Return 0

Procedure: gtp_user_flow_del():
in-args: tunnel_name, ingress tunnel-id, egress tunnel-id, vrf-id
out-args: Error Code or 0 for success
Description: Delete a existing GTP User flow
1. Prepare user flow hash key with src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port.
2. Lookup the user flow hash table for existing user flow element.
3. If not present then return with error NOT_EXIST else continue.
4. Uninstall egress user flow with match user flow attributes.
5. Uninstall ingress user flow with match tunnel attributes for outer header and user flow attributes for inner header.
6. Remove user flow element from user flow hash table.
7. Return 0
Procedure : gtp_user_flow_add():
in-args : src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port, tunnel-name
out-args : Error Code or 0 for success
Description : Create a new GTP User flow
1. Prepare user flow hash key with src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port.
2. Lookup the user flow hash table for existing user flow element.
3. If present then return with error ALREADY_EXIST else continue.
4. Lookup the tunnel element with tunnel name as auxiliary key.
5. Allocate user flow element and copy user flow key and tunnel elem.
6. Store user flow element in user flow hash table.
7. Install ingress user flow with match tunnel attributes for outer header and user flow attributes for inner header with actions DECAP_GTP_TUNNEL.
8. Install egress user flow with match user flow attributes and action as ENCAP_GTP_TUNNEL with gtp tunnel attributes.
9. Return 0

Procedure : gtp_user_flow_del():
in-args : tunnel_name, ingress tunnel-id, egress tunnel-id, vrf-id
out-args : Error Code or 0 for success
Description : Delete a existing GTP User flow
1. Prepare user flow hash key with src-ip, dst-ip, ip-proto, l4 src port, l4 dst port, in-port.
2. Lookup the user flow hash table for existing user flow element.
3. If not present then return with error NOT_EXIST else continue.
4. Uninstall egress user flow with match user flow attributes.
5. Uninstall ingress user flow with match tunnel attributes for outer header and user flow attributes for inner header.
6. Remove user flow element from user flow hash table.
7. Return 0

다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 신규 GTP 유저 플로우를 생성하는 단계(S300)를 포함하며, 상기 신규 GTP 유저 플로우를 생성하는 단계(S300)는 아래 단계들을 포함할 수 있다:출발 IP, 도착 IP, IP 프로토, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S310);According to various embodiments, the GTP tunnel management heuristic algorithm includes generating a new GTP user flow (S300), and generating the new GTP user flow (S300) may include the following steps: Departure IP , preparing a user flow hash using the arrival IP, IP protocol, I4 departure port, I4 arrival port and in-port (S310);

기존 유저플로우 요소를 유저 플로우 해시 테이블에서 조회하는 단계(S320);Inquiring an existing user flow element in the user flow hash table (S320);

기존 유저 플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, 신규 GTP 유저 플로우 생성을 종료하는 단계(S330);If the existing user flow element exists in the user flow hash table, terminating the creation of a new GTP user flow (S330);

터널 이름을 보조 키로 사용하여 터널 요소를 조회하는 단계(S340);inquiring a tunnel element using the tunnel name as a secondary key (S340);

유저 플로우 요소를 할당하고 할당된 유저 플로우 요소를 사용자 흐름 키와 터널 요소를 복사하는 단계(S350);.Allocating a user flow element and copying the assigned user flow element with the user flow key and the tunnel element (S350);

유저 플로우 해시 테이블에 유저 플로우 요소를 저장하는 단계(S360);Storing the user flow element in the user flow hash table (S360);

외부 헤더의 터널 속성과 내부 헤더의 유저 플로우 속성이 일치하는 수신 유저 플로우를 설치하는 단계(S370); 및 installing a receiving user flow in which the tunnel attribute of the outer header and the user flow attribute of the inner header match (S370); and

GTP 터널 속성이있는 ENCAP_GTP_TUNNEL로 일치하는 유저 플로우 속성 및 액션이 있는 송신 유저 플로우를 설치하는 단계(S380).Installing a sending user flow with matching user flow attributes and actions as ENCAP_GTP_TUNNEL with GTP tunnel attributes (S380).

다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 GTP 유저 플로우를 제거하는 단계(S400)를 포함하며, 상기 GTP 유저 플로우를 제거하는 단계(S400)는 아래 단계들을 포함할 수 있다:According to various embodiments, the GTP tunnel management heuristic algorithm includes the step of removing the GTP user flow (S400), and the step of removing the GTP user flow (S400) may include the following steps:

출발 IP, 도착 IP, IP 프로토, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S410);Preparing a user flow hash using the departure IP, arrival IP, IP protocol, I4 departure port, I4 arrival port and in-port (S410);

기존 유저플로우 요소를 유저 플로우 해시 테이블에서 조회하는 단계(S420);Inquiring an existing user flow element in the user flow hash table (S420);

기존 유저 플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, GTP 유저 플로우 제거를 종료하는 단계(S430);If the existing user flow element exists in the user flow hash table, terminating the removal of the GTP user flow (S430);

일치하는 유저 플로우 속성을 사용하여 송신 유저 플로우를 제거하는 단계(S440); removing the sending user flow by using the matching user flow attribute (S440);

외부 헤더의 터널 속성과 내부 헤더의 유저 플로우 속성이 일치하는 수신 유저 플로우를 제치하는 단계(S450); 및Replacing the receiving user flow in which the tunnel attribute of the outer header and the user flow attribute of the inner header match (S450); and

유저 플로우 해시 테이블에 유저 플로우 요소를 제거하는 단계(S460)Step of removing the user flow element in the user flow hash table (S460)

다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 GTP 유저 플로우를 제거하는 단계(S400)를 포함하며, 상기 신규 GTP 유저 플로우를 제거하는 단계(S400)는 아래 단계들을 포함할 수 있다: According to various embodiments, the GTP tunnel management heuristic algorithm may include the step of removing the GTP user flow (S400), and the step of removing the new GTP user flow (S400) may include the following steps:

출발 IP, 도착 IP, IP 프로토콜, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S410); preparing a user flow hash by using a departure IP, an arrival IP, an IP protocol, an I4 departure port, an I4 arrival port, and an in-port (S410);

기존 유저플로우 요소를 유저플로우 해시 테이블에서 조회하는 단계(S420); Inquiring an existing user flow element in the user flow hash table (S420);

기존 유저플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, 신규 GTP 유저 플로우 제거를 종료하는 단계(S430); If the existing user flow element exists in the user flow hash table, terminating the removal of the new GTP user flow (S430);

일치하는 유저 플로우 속성을 사용하여 송신 플로우 요소를 제거하는 단계(S440); removing the transmission flow element by using the matching user flow attribute (S440);

외부 헤더의 터널 속성과 내부 헤더의 사용자 흐름유저 플로우 속성이 일치하는 수신 사용자 흐름 유저 플로우를 제거하는 단계(S450); 및 removing the received user flow user flow in which the tunnel attribute of the outer header and the user flow user flow attribute of the inner header match (S450); and

기존 유저플로우 요소를 유저플로우 해시 테이블에서 조회하는 단계(S460).Inquiring the existing user flow elements in the user flow hash table (S460).

하기 표 3은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 입출력 이벤트 핸들러 휴리스틱 알고리즘의 예시이다.Table 3 below is an example of a packet input/output event handler heuristic algorithm of an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

Algorithm 3 Packet I/O event handler HeuristicAlgorithm 3 Packet I/O event handler Heuristic Procedure: cp-lox-vif-init():
in-args: SmartNIC Control Plane device name
out-args: Error Code or 0 for success
Description: Creating a RAW Socket for poll event and listening to all the packets sent on the SmartNIC's control plane device ("vf0_0").
1. Create a RAW socket, sock with ETH_TYPE_LOX family.(All the packets sent from the SmartNIC will be having a SHIM Header comprising of the metadata like incoming port, outgoing port, table missed)
2. Get the SmartNIC control plane device index
ifidx = if_nametoindex("vf0_0")
3. Bind sock to ifidx using bind()
4. Add a poll event to read all the packets on this socket using vif-rx().
Procedure: cp-lox-rx():
in-args: Packet buffer
out-args: Error Code or 0 for success
Description: cp-lox-rx () will called by a poll event whenever a packet from SmartNIC is ready to be received by Loxilight application.
1. Read the SHIM hdr (LOX header) from the packet.
2. Derive the front port (incoming port) information from the LOX header.
3. If no present then return with error NOT_EXIST else continue.
4. Derive a flow from packet's original headers.
5. Send the packet and flow information to all the registered applications.
6. Return 0
Procedure: cp-lox-tx ():
in-args: Packet buffer
out-args: Error Code or 0 for success
Description: cp-lox-tx () will called by a poll event whenever a packet is to be sent to SmartNIC is by Loxilight application.
1. Derive the data path port, dp_port from front port (outgoing vif).
2. Prepare the SHIM hdr (LOX header) with outport as dp_port.
3. Concatenate the SHIM header and packet into a local buffer, buff.
4. Get the cp_fd for the control plane device ("vf0_0")
5. Issue write(cp_fd, buff, MAX_BUF_LEN)
6. Return 0
Procedure : cp-lox-vif-init():
in-args : SmartNIC Control Plane device name
out-args : Error Code or 0 for success
Description : Creating a RAW Socket for poll event and listening to all the packets sent on the SmartNIC's control plane device ("vf0_0").
1. Create a RAW socket, sock with ETH_TYPE_LOX family.(All the packets sent from the SmartNIC will be having a SHIM Header comprising of the metadata like incoming port, outgoing port, table missed)
2. Get the SmartNIC control plane device index
ifidx = if_nametoindex("vf0_0")
3. Bind sock to ifidx using bind()
4. Add a poll event to read all the packets on this socket using vif-rx().
Procedure : cp-lox-rx():
in-args : Packet buffer
out-args : Error Code or 0 for success
Description : cp-lox-rx () will called by a poll event whenever a packet from SmartNIC is ready to be received by Loxilight application.
1. Read the SHIM hdr (LOX header) from the packet.
2. Derive the front port (incoming port) information from the LOX header.
3. If no present then return with error NOT_EXIST else continue.
4. Derive a flow from packet's original headers.
5. Send the packet and flow information to all the registered applications.
6. Return 0
Procedure : cp-lox-tx():
in-args : Packet buffer
out-args : Error Code or 0 for success
Description : cp-lox-tx () will called by a poll event whenever a packet is to be sent to SmartNIC is by Loxilight application.
1. Derive the data path port, dp_port from front port (outgoing vif).
2. Prepare the SHIM hdr (LOX header) with outport as dp_port.
3. Concatenate the SHIM header and packet into a local buffer, buff.
4. Get the cp_fd for the control plane device ("vf0_0")
5. Issue write(cp_fd, buff, MAX_BUF_LEN)
6. Return 0

다양한 실시 예에 따르면, 패킷 입출력 이벤트 핸들러 휴리스틱 알고리즘은 폴 이벤트 및 스마트 NIC의 컨트롤 플래인 장치("vf0_0")로 전송되는 모든 패킷을 수신하기 위한 RAW 소켓을 생성하는 단계(S500)를 포함하며, 상기 RAW 소켓을 생성하는 단계(S500)는 아래 단계들을 포함할 수 있다:According to various embodiments, the packet input/output event handler heuristic algorithm includes a step (S500) of creating a RAW socket for receiving a poll event and all packets transmitted to the control plane device (“vf0_0”) of the smart NIC (S500), The step of creating the RAW socket ( S500 ) may include the following steps:

ETH_TYPE_LOX 패밀리을 사용하여 RAW 소켓을 생성하는 단계(S510) ;Creating a RAW socket using the ETH_TYPE_LOX family (S510);

SmartNIC 컨트롤 플레인 장치의 인덱스를 수신하는 단계(S520);Receiving the index of the SmartNIC control plane device (S520);

소켓을 상기 수신된 인덱스에 바인딩하는 단계(S530); 및binding a socket to the received index (S530); and

상기 소켓에 모든 패킷을 읽는 폴 이벤트를 추가하는 단계(S540).Adding a poll event for reading all packets to the socket (S540).

다양한 실시 예에 따르면, 패킷 입출력 이벤트 핸들러 휴리스틱 알고리즘은 폴 이벤트 및 스마트 NIC의 컨트롤 플래인 장치("vf0_0")로 전송되는 모든 패킷을 수신하기 위한 RAW 소켓을 생성하는 단계(S500)를 포함하며, 상기 RAW 소켓을 생성하는 단계(S500)는 아래 단계들을 포함할 수 있다:According to various embodiments, the packet input/output event handler heuristic algorithm includes a step (S500) of creating a RAW socket for receiving a poll event and all packets transmitted to the control plane device (“vf0_0”) of the smart NIC (S500), The step of creating the RAW socket ( S500 ) may include the following steps:

록시라이트 응용 프로그램에서 수신될 준비가 될 때마다 폴 이벤트에 의하여 호출되는 스마트 NIC의 패킷 수신 단계(S600)를 포함하며, 상기 스마트 NIC의 패킷 수신 단계 (S600)는 아래 단계들을 포함할 수 있다:A packet reception step (S600) of the smart NIC that is called by a poll event whenever it is ready to be received by the Roxylite application, and the step (S600) of the packet reception of the smart NIC may include the following steps:

패킷에서 SHIM 헤더(LOX 헤더)를 읽는 단계(S610);Reading the SHIM header (LOX header) from the packet (S610);

LOX 헤더에서 전면 포트 (수신 포트) 정보를 가져오는 단계(S620);Getting front port (receiving port) information from the LOX header (S620);

전면 포트 (수신 포트) 정보가 존재하지 않는 경우, 스마트 NIC의 패킷 수신을 종료하는 단계(S630);If the front port (receiving port) information does not exist, terminating the packet reception of the smart NIC (S630);

패킷의 원본 헤더에서 플로우를 읽은 단계(S640); 및reading the flow from the original header of the packet (S640); and

등록된 모든 응용 프로그램에 패킷 및 플로우 정보를 전송하는 단계(S650).Sending packet and flow information to all registered applications (S650).

록시라이트 응용 프로그램에서 스마트 NIC로 패킷을 전송할 때마다 폴 이벤트에 의해 호출되는 스마트 NIC의 패킷 전송 단계(S700)를 포함하며, 상기 스마트 NIC의 패킷 전송 단계 (S700)는 아래 단계들을 포함할 수 있다:Each time the Roxylite application transmits a packet to the smart NIC, the smart NIC transmits a packet (S700), which is called by a poll event, and the smart NIC transmits a packet (S700) may include the following steps :

전면 포트 (발신 vif)에서 데이터 경로 포트 dp_port를 가져오는 단계(S710);obtaining the data path port dp_port from the front port (outgoing vif) (S710);

아웃포트(outport)를 dp_port로 사용하여 SHIM 헤더 (LOX 헤더)를 준비하는 단계(S720);preparing a SHIM header (LOX header) using an outport as dp_port (S720);

SHIM 헤더와 패킷을 로컬 버퍼에 병합하는 단계(S730);merging the SHIM header and the packet into a local buffer (S730);

컨트롤 플레인 장치 ( "vf0_0")에서 cp_fd를 얻는 단계(S740); 및obtaining cp_fd from the control plane device (“vf0_0”) (S740); and

병합된 로컬 버퍼의 내용을 cp_fd 에 MAX_BUF_LEN 만큼 기록하는 전달 단계(S750).A delivery step of writing the contents of the merged local buffer to cp_fd as much as MAX_BUF_LEN (S750).

도 6은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 방법을 개략적으로 나타낸 도면이다.6 is a diagram schematically illustrating a method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 소프트웨어 스택(software stack, 14000), 예를 들어, 넷록스 사(NetLOX)의 상표명 록시라이트(Loxilight) 소프트웨어 스택(14000)을 포함할 수 있다. 상기 소프트웨어 스택(14000)은 P4 코어 컴파일러(P4 core compiler), 오프로드 컨플릭트 리졸버(offload conflict resolver) 및 기능 로더(function loader)를 모두 또는 일부로써 포함할 수 있다. According to various embodiments, the intelligent NIC-based networking solution 430 may include a software stack 14000, for example, a Loxilight software stack 14000 from NetLOX. have. The software stack 14000 may include all or a part of a P4 core compiler, an offload conflict resolver, and a function loader.

다양한 실시 예에 따르면, 상기 기능 로더는 상기 컴파일러에서 출력한 로직 데이터, 예를 들어, eBPF(Extended Berkeley Packet Filter) 사용자 프로그램을 eBPF 바이트 코드로 컴파일하여 데이터 플레인으로 로드할 수 있다. 상기 기능 로드는 상기 컴파일러에서 출력한 로직 데이터를, 예를 들어, 지능형 NIC의 하드웨어 블록 또는 일반 NIC의 하드웨어 블록에 LLVM(Low Level Virtual Machine) 및/또는 Clang 컴파일러를 사용하여 상기 전자장치의 운영체제 커널 영역에 XDP로 로드하거나, 독점적 인터페이스(Proprietary Interface)로 지능형 NIC의 FPGA로 로드하거나, 독점적 인터페이스로 지능형 NIC의 네트워크 프로세서로 로드할 수 있다.According to various embodiments, the function loader may compile logic data output from the compiler, for example, an extended Berkeley Packet Filter (eBPF) user program into eBPF bytecodes and load it into the data plane. The function load is the operating system kernel of the electronic device by using, for example, a low level virtual machine (LLVM) and/or a Clang compiler in a hardware block of an intelligent NIC or a hardware block of a general NIC by using the logic data output from the compiler. It can be loaded into a realm with XDP, loaded into the intelligent NIC's FPGA with a proprietary interface, or loaded into the intelligent NIC's network processor with a proprietary interface.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 TC 또는 XDP 레이어에서 후크를 추가하고 패킷의 처리를 제어할 수 있다. 예를 들어, 후크는 인터럽트 처리 직후와 네트워크 스택 자체에 필요한 메모리 할당 전에 상기 데이터 평면부 관리 모듈에 포함된 NIC 드라이버에 배치될 수 있다.According to various embodiments, the intelligent NIC-based networking solution 430 may add a hook in the TC or XDP layer and control packet processing. For example, the hook may be placed in the NIC driver included in the data plane management module immediately after interrupt handling and before allocating memory required for the network stack itself.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)이 POD to POD 또는 POD to 외부 트래픽(outside traffic)을 위해 XDP 레이어를 통해 후크 업을 실행하는 경우, 성능 이득(performance gain)을 제공하지 않을 수 있다.According to various embodiments, when the intelligent NIC-based networking solution 430 executes a hook-up through the XDP layer for POD to POD or POD to outside traffic, it may not provide a performance gain. can

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 phy-port to phy-port의 로드 밸런싱(load balancing)을 XDP 레이어를 통해 원활하게 수행할 수 있다.According to various embodiments, the intelligent NIC-based networking solution 430 may smoothly perform load balancing of phy-port to phy-port through the XDP layer.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 TC 레이어에서 eBPF 후크를 추가하여 패킷 처리 성능을 부스트 할 수 있다.According to various embodiments, the intelligent NIC-based networking solution 430 may boost packet processing performance by adding an eBPF hook in the TC layer.

도 7은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제1 방법을 나타낸 도면이다.7 is a diagram illustrating a first method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 패킷을 처리하기 위한 느린 경로(slow-path)를 이용할 수 있다. 예를 들어, 느린 경로는 eBPF 데이터 플레인의 멀티 스테이지 파이프라인을 진행하는 것을 의미할 수 있다. 예를 들어, 느린 경로는 매우 유연하지만 복수의 메모리 룩업들(memory lookups)을 요구할 수 있기에 성능 저하로 이어질 수 있다. According to various embodiments, the intelligent NIC-based networking solution may use a slow-path for processing a packet. For example, a slow path may mean going through a multi-stage pipeline of the eBPF data plane. For example, a slow path is very flexible, but can require multiple memory lookups and can lead to performance degradation.

다양한 실시 예에 다르면, 지능형 NIC 기반 네트워킹 솔루션의 느린 경로는 하기 흐름과 같을 수 있다. 예를 들어, 도 7을 참조하면, 느린 경로에서, 인터페이스(interface)에 패킷이 도착될 수 있다. Parser 테이블을 통한 파싱을 수행할 수 있다. meta-cache 테이블에서 미스(miss)가 발생되는 경우, SMAC, TMAC, RTV 테이블까지 진행할 수 있다. 이후, CT/FW4 테이블에서 미스(miss)가 발생되는 경우, 유저스페이스(user space)의 ConnTrack Mgr 로 패킷을 전달할 수 있다. ConnTrack Mgr를 통해 프로토콜 별로 라이프 사이클(life cycle)을 업데이트하고, CT/FW4 테이블로 전달할 수 있다. 예를 들어, ConnTrack Mgr은 연결 테이블에 기반하여 10-tuple을 유지할 수 있다. ConnTrack Mgr은 연결이 설립된 경우, CT/FW4 테이블을 양방향 트래픽(bidirectional traffic)으로 채울 수 있다. 이후, NH, DMAC, INTERFACE 테이블까지 진행하여 패킷을 처리할 수 있다.According to various embodiments, the slow path of the intelligent NIC-based networking solution may be as the following flow. For example, referring to FIG. 7 , in a slow path, a packet may arrive at an interface. Parsing can be performed through the Parser table. If a miss occurs in the meta-cache table, the SMAC, TMAC, and RTV tables may be progressed. Thereafter, when a miss occurs in the CT/FW4 table, the packet may be transferred to ConnTrack Mgr in user space. Through ConnTrack Mgr, the life cycle can be updated for each protocol and transmitted to the CT/FW4 table. For example, ConnTrack Mgr can maintain a 10-tuple based on a link table. ConnTrack Mgr may fill the CT/FW4 table with bidirectional traffic when a connection is established. Thereafter, the packet may be processed by proceeding to the NH, DMAC, and INTERFACE tables.

도 8은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제2 방법을 나타낸 도면이다.8 is a diagram illustrating a second method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 패킷을 처리하기 위한 빠른 경로(fast-path)를 이용할 수 있다. 예를 들어, 빠른 경로는 유저스페이스로 패킷 전달 없이 데이터 플레인의 멀티 스트에지 파이프라인만을 경유하여 패킷을 처리하는 것을 의미할 수 있다.According to various embodiments, the intelligent NIC-based networking solution may use a fast-path for processing a packet. For example, the fast path may mean processing a packet through only a multi-edge pipeline of the data plane without forwarding the packet to the user space.

다양한 실시 예에 다르면, 지능형 NIC 기반 네트워킹 솔루션의 빠른 경로는 하기 흐름과 같을 수 있다. 예를 들어, 도 8을 참조하면, 빠른 경로에서, 인터페이스(interface)에 패킷이 도착될 수 있다. Parser 테이블을 통한 파싱을 수행할 수 있다. meta-cache 테이블에서 미스(miss)가 발생되는 경우, SMAC, TMAC, RTV 테이블까지 진행할 수 있다. 이후, CT/FW4 테이블에서 히트(hit)가 발생되는 경우, 유저스페이스(user space)의 ConnTrack Mgr 로 패킷 전달 없이 NH, DMAC, INTERFACE 테이블까지 진행하여 패킷을 처리할 수 있다.According to various embodiments, a fast path of an intelligent NIC-based networking solution may be as follows. For example, referring to FIG. 8 , in a fast path, a packet may arrive at an interface. Parsing can be performed through the Parser table. If a miss occurs in the meta-cache table, the SMAC, TMAC, and RTV tables may be progressed. Thereafter, when a hit occurs in the CT/FW4 table, the packet may be processed by proceeding to the NH, DMAC, and INTERFACE tables without forwarding the packet to the ConnTrack Mgr of the user space.

도 9는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션을 통해 패킷을 처리하는 제3 방법을 나타낸 도면이다.9 is a diagram illustrating a third method of processing a packet through an intelligent NIC-based networking solution according to various embodiments of the present disclosure.

다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 패킷을 처리하기 위한 캐시 경로(cache-path)를 이용할 수 있다. 예를 들어, 캐시 경로는 SMAC, TMAC, RTV, NH, DMAC 테이블을 경유하지 않고 곧바로 INTERFACE 테이블까지 진행하여 패킷을 처리하는 것을 의미할 수 있다.According to various embodiments, the intelligent NIC-based networking solution may use a cache-path for processing a packet. For example, the cache path may mean processing a packet by proceeding directly to the INTERFACE table without passing through the SMAC, TMAC, RTV, NH, and DMAC tables.

다양한 실시 예에 다르면, 지능형 NIC 기반 네트워킹 솔루션의 캐시 경로는 하기 흐름과 같을 수 있다. 예를 들어, 도 9를 참조하면, 캐시 경로에서, 인터페이스(interface)에 패킷이 도착될 수 있다. Parser 테이블을 통한 파싱을 수행할 수 있다. meta-cache 테이블에서 히트(hit)가 발생되는 경우, 패킷 헤더와 메타데이터를 수정할 수 있고, 이후, INTERFACE 테이블까지 진행하여 패킷을 처리할 수 있다. According to various embodiments, the cache path of the intelligent NIC-based networking solution may be as follows. For example, referring to FIG. 9 , in a cache path, a packet may arrive at an interface. Parsing can be performed through the Parser table. When a hit occurs in the meta-cache table, the packet header and metadata can be modified, and then, the packet can be processed by proceeding to the INTERFACE table.

다양한 실시 예에 따른 전자 장치의 방법에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및 지능형 NIC(network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함하고, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작은, 상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하는 동작; 상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하는 동작; 상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하는 동작; 및 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하는 동작을 포함할 수 있다.A method of an electronic device according to various embodiments of the present disclosure includes: performing, in an edge node CPU including at least one core, a control plane for a network function including a virtualization function; and in an intelligent network interface card (NIC), at least a portion of a network function including the virtualization function in the at least one core by performing a data plane role for the network function including the virtualization function. An operation of offloading an operation, and the operation of performing a data plane role for a network function including the virtualization function includes receiving a packet through a first interface of the data plane movement; parsing the packet through a parser table; checking a meta-cache table based on the parsed packet; and when the parsed packet is checked in the meta cache table, modifying the header and meta data of the packet and transmitting the modified packet to the second interface.

상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작은, 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되지 않는 경우, 상기 패킷이 SMAC 프로토콜, TMAC 프로토콜, RTV 테이블, 및 CT/FW 테이블을 경유하도록 전송하는 동작; 및 상기 패킷이 상기 CT/FW 테이블에 확인되지 않는 경우, 사용자 영역으로 상기 패킷을 전송하는 동작을 포함할 수 있다.When the parsed packet is not checked in the meta cache table, the operation of performing the role of a data plane for a network function including the virtualization function may include: SMAC protocol, TMAC protocol, RTV table, and transmitting via the CT/FW table; and transmitting the packet to a user area when the packet is not identified in the CT/FW table.

상기 패킷이 상기 CT/FW 테이블에 확인되는 경우, 사용자 영역으로 상기 패킷을 전송하지 않고, 상기 패킷이 NH, DMAC, 및 상기 제2 인터페이스를 경유하도록 전송하는 동작을 포함할 수 있다.When the packet is checked in the CT/FW table, the method may include transmitting the packet through NH, DMAC, and the second interface without transmitting the packet to the user area.

상기 엣지 노드 CPU는 24개 코어를 포함하고, 상기 컨트롤 플레인 역할을 수행하는 동작은, 상기 엣지 노드 CPU의 코어 중 적어도 일부의 코어를 활성화하는 동작을 포함하고, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작은 상기 적어도 일부의 코어를 비활성화 하도록 하는 동작을 포함할 수 있다.The edge node CPU includes 24 cores, and the operation of performing the control plane role includes an operation of activating at least some of the cores of the edge node CPU, and the network function including the virtualization function. The operation of offloading at least a part of the operation may include an operation of inactivating the at least part of the core.

상기 지능형 NIC는 소프트웨어 기반 NIC일 수 있다.The intelligent NIC may be a software-based NIC.

상기 지능형 NIC는 소프트웨어 정의 네트워크(SDN)로 구현된 NIC일 수 있다.The intelligent NIC may be a NIC implemented as a software defined network (SDN).

상기 지능형 NIC는 컴파일러로 동작하도록 설정될 수 있다.The intelligent NIC may be configured to operate as a compiler.

상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작은 소프트웨어 스택에서 컴파일러를 사용하는 동작을 포함할 수 있다.The operation of serving as a control plane for a network function including the virtualization function may include an operation of using a compiler in a software stack.

상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작과 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작이 상기 엣지 노드 CPU에서 함께 실행되지 않도록 설정될 수 있다.The operation of performing the role of a control plane for the network function including the virtualization function and the operation of performing the role of the data plane regarding the network function including the virtualization function are performed together in the edge node CPU It can be set not to run.

다양한 실시 예에 따른 전자 장치에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택; 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부를 포함하는 지능형 NIC; 및 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU;를 포함하고, 상기 지능형 NIC는, 상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하고, 상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하고, 상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하고, 및 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하여 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하도록 설정될 수 있다.An electronic device according to various embodiments of the present disclosure includes: a software stack serving as a control plane for a network function including a virtualization function in an edge node CPU including at least one core; an intelligent NIC including a switch data plane unit serving as a data plane for network functions including the virtualization function; and an edge node CPU that offloads at least some operations related to network functions including the virtualization function in the at least one core, wherein the intelligent NIC includes: packet), parses the packet through a parser table, checks a meta-cache table based on the parsed packet, and When it is confirmed in the meta cache table, it may be configured to modify the header and metadata of the packet and transmit it to the second interface to serve as a data plane for network functions including the virtualization function.

상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러를 더 포함할 수 있다.The virtualization function offloaded from the switch data plane unit to the edge node CPU may further include a compiler for generating a binary code performed by the switch data plane unit.

상기 바이너리 코드를 상기 스위치 데이터 평면부에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈을 더 포함할 수 있다.The method may further include a data plane unit management module that transmits the binary code to the switch data plane unit to request execution.

상기 일반 NIC를 더 포함하며, 상기 데이터 평면부 관리 모듈은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청할 수 있다.The apparatus further includes the general NIC, wherein the data plane management module may request the general NIC to perform a non-virtualized network function.

상기 가상화 기능을 상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크를 더 포함할 수 있다.A high-speed data path framework for offloading the virtualization function from the switch data plane unit to the edge node CPU may be further included.

상기 지능형 NIC은 필드 프로그래머블 게이트 어레이를 더 포함할 수 있다.The intelligent NIC may further include a field programmable gate array.

Claims (15)

전자 장치의 방법에 있어서,
적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및
지능형 NIC(network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함하고,
상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작은,
상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하는 동작;
상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하는 동작;
상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하는 동작;
상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하는 동작;
상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되지 않는 경우, 상기 패킷이 SMAC 프로토콜, TMAC 프로토콜, RTV 테이블, 및 CT/FW 테이블을 경유하도록 전송하는 동작;
상기 패킷이 상기 CT/FW 테이블에 확인되지 않는 경우, 사용자 영역으로 상기 패킷을 전송하는 동작; 및
상기 패킷이 상기 CT/FW 테이블에 확인되는 경우, 사용자 영역으로 상기 패킷을 전송하지 않고, 상기 패킷이 NH, DMAC, 및 상기 제2 인터페이스를 경유하도록 전송하는 동작을 포함하는 전자 장치의 방법.
A method for an electronic device, comprising:
In the edge node CPU including at least one core, the operation of performing a control plane (control plane) role with respect to a network function including a virtualization function; and
In an intelligent network interface card (NIC), at least some operations related to the network function including the virtualization function in the at least one core by serving as a data plane for the network function including the virtualization function Including;
The operation to serve as a data plane for a network function including the virtualization function is,
receiving a packet through a first interface of the data plane;
parsing the packet through a parser table;
checking a meta-cache table based on the parsed packet;
when the parsed packet is checked in the meta cache table, modifying a header and meta data of the packet and transmitting it to a second interface;
if the parsed packet is not checked in the meta cache table, transmitting the packet through a SMAC protocol, a TMAC protocol, an RTV table, and a CT/FW table;
transmitting the packet to a user area when the packet is not identified in the CT/FW table; and
and transmitting the packet through NH, DMAC, and the second interface without transmitting the packet to a user area when the packet is checked in the CT/FW table.
삭제delete 삭제delete 제1 항에 있어서,
상기 엣지 노드 CPU는 24개 코어를 포함하고,
상기 컨트롤 플레인 역할을 수행하는 동작은,
상기 엣지 노드 CPU의 코어 중 적어도 일부의 코어를 활성화하는 동작을 포함하고,
상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작은 상기 적어도 일부의 코어를 비활성화 하도록 하는 동작을 포함하는 전자 장치의 방법.
The method of claim 1,
The edge node CPU includes 24 cores,
The operation of performing the control plane role is,
activating at least some of the cores of the edge node CPU,
The operation of offloading at least a part of an operation related to a network function including the virtualization function includes an operation of inactivating the at least part of the core.
제1 항에 있어서,
상기 지능형 NIC는 소프트웨어 기반 NIC인 전자 장치의 방법.
The method of claim 1,
wherein the intelligent NIC is a software-based NIC.
제5 항에 있어서,
상기 지능형 NIC는 소프트웨어 정의 네트워크(SDN)로 구현된 NIC인 전자 장치의 방법.
6. The method of claim 5,
The method of the electronic device, wherein the intelligent NIC is a NIC implemented with a software defined network (SDN).
제6 항에 있어서,
상기 지능형 NIC는 컴파일러로 동작하도록 설정된 전자 장치의 방법.
7. The method of claim 6,
The intelligent NIC is a method of an electronic device configured to operate as a compiler.
제1 항에 있어서,
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작은 소프트웨어 스택에서 컴파일러를 사용하는 동작을 포함하는 전자 장치의 방법.
The method of claim 1,
The operation of performing the role of a control plane for a network function including the virtualization function includes using a compiler in a software stack.
제1 항에 있어서,
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작과 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작이 상기 엣지 노드 CPU에서 함께 실행되지 않도록 설정된 전자 장치의 방법.
The method of claim 1,
The operation of performing the role of a control plane for the network function including the virtualization function and the operation of performing the role of the data plane regarding the network function including the virtualization function are performed together in the edge node CPU A method for an electronic device that is set to not run.
적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택;
상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부를 포함하는 지능형 NIC; 및
상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU;를 포함하고,
상기 지능형 NIC는,
상기 데이터 플레인의 제1 인터페이스를 통해 패킷(packet)을 수신하고, 상기 패킷을 파서 테이블(parser table)을 통해 파싱(parsing)하고, 상기 파싱된 패킷을 기반으로 메타 캐시 테이블(meta-cache table)을 확인하고, 및 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되는 경우, 상기 패킷의 헤더와 메타 데이터를 수정하여 제2 인터페이스로 전송하고, 상기 파싱된 패킷이 상기 메타 캐시 테이블에 확인되지 않는 경우, 상기 패킷이 SMAC 프로토콜, TMAC 프로토콜, RTV 테이블, 및 CT/FW 테이블을 경유하도록 전송하며,
상기 패킷이 상기 CT/FW 테이블에 확인되지 않는 경우, 사용자 영역으로 상기 패킷을 전송하고,
상기 패킷이 상기 CT/FW 테이블에 확인되는 경우, 사용자 영역으로 상기 패킷을 전송하지 않고, 상기 패킷이 NH, DMAC, 및 상기 제2 인터페이스를 경유하도록 전송하여, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하도록 설정된 전자장치.
a software stack serving as a control plane for network functions including virtualization functions in an edge node CPU including at least one core;
an intelligent NIC including a switch data plane unit serving as a data plane for network functions including the virtualization function; and
An edge node CPU for offloading at least some operations related to a network function including the virtualization function in the at least one core;
The intelligent NIC,
Receives a packet through the first interface of the data plane, parses the packet through a parser table, and a meta-cache table based on the parsed packet , and when the parsed packet is checked in the meta cache table, the header and meta data of the packet are modified and transmitted to the second interface, and when the parsed packet is not checked in the meta cache table , the packet is transmitted through the SMAC protocol, the TMAC protocol, the RTV table, and the CT/FW table,
If the packet is not identified in the CT/FW table, the packet is transmitted to the user area;
When the packet is checked in the CT/FW table, the packet is transmitted through NH, DMAC, and the second interface without transmitting the packet to the user area, so that the network function including the virtualization function An electronic device configured to act as a data plane for
제10 항에 있어서,
상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러를 더 포함하는, 전자장치.
11. The method of claim 10,
The electronic device further comprising a compiler that generates a binary code performed by the virtualization function offloaded to the edge node CPU from the switch data plane part in the switch data plane part.
제11 항에 있어서,
상기 바이너리 코드를 상기 스위치 데이터 평면부에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈을 더 포함하는, 전자장치.
12. The method of claim 11,
The electronic device further comprising: a data plane part management module that transmits the binary code to the switch data plane part and requests execution.
제12 항에 있어서,
일반 NIC를 더 포함하며,
상기 데이터 평면부 관리 모듈은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청하는 것인, 전자장치.
13. The method of claim 12,
It includes more general NICs,
The data plane management module will request the general NIC to perform a non-virtualized network function.
제10 항에 있어서,
상기 가상화 기능을 상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크를 더 포함하는, 전자장치.
11. The method of claim 10,
The electronic device further comprising a high-speed data path framework for offloading the virtualization function from the switch data plane unit to the edge node CPU.
제10 항에 있어서,
상기 지능형 NIC은 필드 프로그래머블 게이트 어레이를 더 포함하는, 전자장치.
11. The method of claim 10,
wherein the intelligent NIC further comprises a field programmable gate array.
KR1020220051640A 2021-11-19 2022-04-26 Method for packet data processing using cache path and electronic device for supporting the same KR102420606B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210160388 2021-11-19
KR1020210160388 2021-11-19

Publications (1)

Publication Number Publication Date
KR102420606B1 true KR102420606B1 (en) 2022-07-13

Family

ID=82401358

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020220051640A KR102420606B1 (en) 2021-11-19 2022-04-26 Method for packet data processing using cache path and electronic device for supporting the same
KR1020220051646A KR102420610B1 (en) 2021-11-19 2022-04-26 Method for packet data processing using multi layer caching strategy and electronic device for supporting the same

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220051646A KR102420610B1 (en) 2021-11-19 2022-04-26 Method for packet data processing using multi layer caching strategy and electronic device for supporting the same

Country Status (1)

Country Link
KR (2) KR102420606B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116010130B (en) * 2023-01-30 2024-04-19 中科驭数(北京)科技有限公司 Cross-card link aggregation method, device, equipment and medium for DPU virtual port

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8693374B1 (en) * 2012-12-18 2014-04-08 Juniper Networks, Inc. Centralized control of an aggregation network with a reduced control plane
KR20140143155A (en) * 2012-03-21 2014-12-15 마이크로소프트 코포레이션 Offloading packet processing for networking device virtualization
US20200265005A1 (en) * 2017-09-14 2020-08-20 Microsoft Technology Licensing, Llc Network traffic routing in distributed computing systems
KR102217114B1 (en) * 2020-07-24 2021-02-18 넷록스 주식회사 Method for controlling of accelerating edge platform network and electronic device using the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140143155A (en) * 2012-03-21 2014-12-15 마이크로소프트 코포레이션 Offloading packet processing for networking device virtualization
US8693374B1 (en) * 2012-12-18 2014-04-08 Juniper Networks, Inc. Centralized control of an aggregation network with a reduced control plane
US20200265005A1 (en) * 2017-09-14 2020-08-20 Microsoft Technology Licensing, Llc Network traffic routing in distributed computing systems
KR102217114B1 (en) * 2020-07-24 2021-02-18 넷록스 주식회사 Method for controlling of accelerating edge platform network and electronic device using the same

Also Published As

Publication number Publication date
KR102420610B1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
KR102217114B1 (en) Method for controlling of accelerating edge platform network and electronic device using the same
US8913613B2 (en) Method and system for classification and management of inter-blade network traffic in a blade server
US8634415B2 (en) Method and system for routing network traffic for a blade server
EP2318926B1 (en) Method and system for low-overhead data transfer
EP3225014B1 (en) Source ip address transparency systems and methods
US20160301603A1 (en) Integrated routing method based on software-defined network and system thereof
CN110022264B (en) Method for controlling network congestion, access device and computer readable storage medium
EP2250772B1 (en) Method and system for offloading network processing
US20130346585A1 (en) Network system, and policy route setting method
CN113326228B (en) Message forwarding method, device and equipment based on remote direct data storage
US9270600B2 (en) Low-latency lossless switch fabric for use in a data center
US7970951B2 (en) Method and system for media-based data transfer
US7944923B2 (en) Method and system for classifying network traffic
US20160028860A1 (en) Method for parsing network packets having future defined tags
EP4221141A1 (en) Network congestion control method and apparatus
CN114301868B (en) Method for quickly generating virtual container floating IP and method and device for network direct connection
WO2022068756A1 (en) Service mesh system employing microservice, and service governance method
US8953607B2 (en) Internet group membership protocol group membership synchronization in virtual link aggregation
US20120140640A1 (en) Apparatus and method for dynamically processing packets having various characteristics
KR102420606B1 (en) Method for packet data processing using cache path and electronic device for supporting the same
CN106789993B (en) TCP agent method and device
WO2022111372A1 (en) Message transmission method and apparatus, device, and computer-readable storage medium
WO2022068744A1 (en) Method for obtaining message header information and generating message, device, and storage medium
CN110545230A (en) method and device for forwarding VXLAN message
US8832332B2 (en) Packet processing apparatus

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant