WO2022019720A1 - 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치 - Google Patents

엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치 Download PDF

Info

Publication number
WO2022019720A1
WO2022019720A1 PCT/KR2021/009589 KR2021009589W WO2022019720A1 WO 2022019720 A1 WO2022019720 A1 WO 2022019720A1 KR 2021009589 W KR2021009589 W KR 2021009589W WO 2022019720 A1 WO2022019720 A1 WO 2022019720A1
Authority
WO
WIPO (PCT)
Prior art keywords
nic
electronic device
network
tunnel
function
Prior art date
Application number
PCT/KR2021/009589
Other languages
English (en)
French (fr)
Inventor
공석환
사이키아딥죠이티
Original Assignee
넷록스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 넷록스 주식회사 filed Critical 넷록스 주식회사
Publication of WO2022019720A1 publication Critical patent/WO2022019720A1/ko

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/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Abstract

다양한 실시 예에 따른 전자 장치의 방법에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작 및 지능형 NIC(network interface card)에서 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작을 포함할 수 있다. 이 밖의 다른 실시 예도 가능하다.

Description

엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
본 발명의 다양한 실시 예는 네트워크 제어 방법 및 이를 사용하는 전자 장치에 관한 것으로, 구체적으로, 엣지 플랫폼 네트워크 가속화 솔루션에 관한 것이다.
오늘날 화두되고 있는 4차 산업에서는 다양한 디바이스를 통해 방대한 양의 데이터가 초연결(hyper connected)될 수 있다. 이러한 환경에서 사용자 니즈를 반영한 혁신적인 융합 신제품 및 서비스 솔루션 시장이 확대될 수 있으며, 이를 위한 제품의 개발, 시험 및 실증이 가능한 인프라 확보가 필요할 수 있다.
사물 인터넷 (IoT) 트래픽은 지속적으로 증가하고 있으며 이러한 추세는 앞으로도 계속 될 수 있다. 이러한 추세의 성장은 사물 인터넷의 장치 수가 증가함에 기인할 수 있다. 예를 들어, 기존의 전화기, PC, 스마트폰, 셋톱 박스, 가전, 웨어러블 기기, 커넥티드 카, 증강/가상 현실 장치 (AR/VR) 등과 같은 다양한 종류의 사물 인터넷 장치들이 등장하고 있다.
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 기반 처리시 다수의 보안 정책에 의한 성능저하와 디도스 공격과 같은 불특정 다수에 의한 임의 공격에 취약할 수 있다.
다양한 실시 예에 따른 전자 장치의 방법에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및 지능형 NIC(smart network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함할 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능은 하드웨어 자원을 직접 할당하여 수행되는 물리적 네트워크 기능을 더 포함할 수 있다.
상기 엣지 노드 CPU는 x86 아키텍쳐에 기반하여 오프로드된 기능을 수행하도록 설정될 수 있다.
상기 적어도 하나의 코어는 24개 코어를 포함할 수 있다.
상기 컨트롤 플레인 역할을 수행하는 동작은, 상기 24개 코어 중 4개의 코어를 활성화하는 동작을 포함할 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작은 상기 적어도 하나의 코어 중 12개 코어를 비활성화 하도록 하는 동작을 포함할 수 있다.
상기 지능형 NIC는 소프트웨어 기반 NIC일 수 있다.
상기 지능형 NIC는 소프트웨어 정의 네트워크(SDN, Software Defined Network)로 구현된 NIC일 수 있다.
상기 지능형 NIC는 컴파일러로 동작하도록 설정될 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작은 소프트웨어 스택에서 컴파일러를 사용하는 동작을 포함할 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작과 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작이 상기 엣지 노드 CPU에서 함께 실행되지 않도록 설정될 수 있다.
다양한 실시 예에 따른 전자 장치에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택;
상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부를 포함하는 지능형 NIC; 및
상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU;를 포함할 수 있다.
상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러를 더 포함할 수 있다.
상기 바이너리 코드를 상기 스위치 데이터 평면부에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈을 더 포함할 수 있다.
상기 일반 NIC를 더 포함하며,
상기 데이터 평면부 관리 모듈은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청하는 것일 수 있다.
상기 가상화 기능을 상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크를 더 포함할 수 있다.
상기 가상화 기능을 상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크를 더 포함할 수 있다.
도 1은 본 발명의 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치의 블록도이다.
도 2a는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.
도 2b는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.
도 2c는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처과 지능형 NIC와의 포트 매핑 관계를 개략적으로 나타낸 도면이다.
도 3a 및 도 3b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
도 4a는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다.
도 4b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 패킷 플로우의 차이점을 나타낸 도면이다.
도 5a 및 도 5b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
도 6은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 알고리즘에 관한 흐름도이다.
도 1은, 다양한 실시 예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시 예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에 서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시 예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시 예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비 휘발성 메모리(134)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)은 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비 휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)은, 예를 들면, 마이크, 마우스, 또는 키보드를 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시 예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시 예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시 예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시 예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)이 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시 예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시 예에 따르면, 연결 단자(178)은, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시 예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시 예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시 예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시 예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제 1 네트워크(198)(예: 블루투스, Wi-Fi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 하나 이상의 안테나들을 포함할 수 있고, 이로부터, 제 1 네트워크 198 또는 제 2 네트워크 199와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
본 발명의 일 실시 예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시 예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시 예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나,""A, B 또는 C," "A, B 및 C 중 적어도 하나,"및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시 예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시 예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서,'비일시적'은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
본 발명의 일 실시 예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시 예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2a는 본 발명의 다양한 실시 예에 전자장치의 아키텍처를 개략적으로 나타낸 도면이다.
상기 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택(14000);
상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부(21000)를 포함하는 지능형 NIC(20000); 및
상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU(11000);를 포함할 수 있다.
상기 스위치 데이터 평면부(21000)로부터 상기 엣지 노드 CPU(11000)에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러(15000)를 더 포함할 수 있다.
본 발명의 일 실시예는, 상기 바이너리 코드를 상기 스위치 데이터 평면부(21000)에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈(13000)을 더 포함할 수 있다.
상기 전자 장치는 운영체제 커널(12000)을 더 포함할 수 있다.
상기 데이터 평면부 관리 모듈(13000)은 운영체제 커널(12000)에 포함될 수 있다.
상기 데이터 평면부 관리 모듈(13000)은 데이터 평면부를 처리하는 라이브러리, 및/또는 지능형 NIC(20000) 또는 일반 NIC(30000)를 제어하는 제어 드라이버를 포함할 수 있다. 또한, 상기 데이터 평면부 관리 모듈(13000)은 지능형 NIC(20000) 또는 일반 NIC(30000)를 제어할 수 있는 인터페이스, 예를 들어, API(application programming interface) 또는 어플리케이션(application)을 포함할 수 있다. 상기 데이터 평면부 관리 모듈(13000)은 예를 들어, 데이터 평면부 개발도구(data plane development kit, DPDK)일 수 있다.
본 발명의 일 실시예는, 상기 일반 NIC(30000)를 더 포함하며, 상기 데이터 평면부 관리 모듈(13000)은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청하는 것일 수 있다.
본 발명의 일 실시예는, 상기 가상화 기능을 상기 스위치 데이터 평면부(21000)로부터 상기 엣지 노드 CPU(11000)에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크(12100)를 더 포함할 수 있다.
본 발명의 일 실시예는, 상기 가상화 기능을 상기 스위치 데이터 평면부(21000)로부터 상기 엣지 노드 CPU(11000)에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크(12100)를 더 포함할 수 있다.
상기 고속 데이터 경로 프레임워크(12100)는 RX 경로에 초기 후크를 추가하고 상기 가상화 기능이 패킷의 처리를 제어하는 것일 수 있다. 상기 후크는 인터럽트 처리 직후와 네트워크 스택 자체에 필요한 메모리 할당 전에 상기 데이터 평면부 관리 모듈에 포함된 NIC 드라이버에 배치될 수 있다.
상기 고속 데이터 경로 프레임워크(12100)는 상기 운영체제 커널(12000)에 포함 될 수 있다.
상기 지능형 NIC은 필드 프로그래머블 게이트 어레이(FPGA, Field Programable Gate Array, 22400)를 더 포함할 수 있다.
상기 지능형 NIC은 주문형 반도체(Application Specific Integrated Circuit, ASIC, 22200)를 더 포함할 수 있다.
상기 지능형 NIC은 뉴럴 프로세싱 유닛(Neural Processing Unit, NPU, 22300)을 더 포함할 수 있다.
상기 지능형 NIC은 그래픽 프로세싱 유닛(graphics processing unit)을 더 포함할 수 있다.
다양한 실시 예에 따르면, 가상 라우터(virtual router)는 네트워크 기능 가상화 (network function virtualization, NFV)의 컨트롤 플레인(control plane)의 역할을 수행하고, 오픈 플랫폼 전송 개체(open-platform forwarding entities, OFE)는 데이터 플레인(data plane)의 역할을 수행할 수 있다.
도 2b는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처를 개략적으로 나타낸 도면이다.
소프트웨어 스택(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) 등의 작업을 수행하는 것일 수 있다.
소프트웨어 스택(14000)은 네트워크 서비스를 제공 및/또는 제어하는 작업을 수행하는 서비스 모듈(14200)을 더 포함 수 있다. 상기 서비스 모듈(14200)은 상태 성비스(state service), MEC(Multi-Access Edge Computing)-DP(Data Plane) 서비스, 라우팅 서비스, 예를 들어, Quagga/FRR, 5G UPF(User Plane Function), 플랫폼(Platform) 서비스, LAG(Link aggregation) 서비스 등을 제공하는 것일 수 있다.
소프트웨어 스택(14000)은 지능형 NIC(20000) 또는 일반 NIC(30000)와 엣지 노드 CPU에서 수행되는 네트워크 기능의 입출력 작업을 수행하는 인터페이스 모듈(14300)을 더 포함할 수 있다. 상기 인터페이스 모듈(14300)은 상기 데이터 평면부 관리 모듈(13000)을 포함하거나, 입출력에 필요한 전부 또는 일부 작업을 수행하는 것일 수 있다. 상기 서비스 모듈(14200)은 상기 지능형 NIC(20000) 또는 일반 NIC(30000)과 입출력을 직접 접근을 모사하여 수행하는 스위치 추상 인터페이스(21100)을 포함하거나, 외부에서 호출하여 이를 수행할 수 있다. 상기 인터페이스 모듈(14300)은 상기 바이너리를 생성하는 전부 또는 일부 작업을 수행하는 컴파일러(15000)을 포함하거나, 외부에서 호출하여 이를 수행할 수 있다.
상기 인터페이스 모듈(14300)은 컴파일러 기반 하드웨어 추상 레이어(13100)를 포함하며, 상기 서비스 모듈(14200)에서 수행되는 서비스 작업은 상기 컴파일러(15000)에서 빌드(build)된 바이너리가 지능형 NIC(20000)의 하드웨어에서 실행됨으로써, 상기 지능형 NIC(20000) 또는 일반 NIC(30000)과 입출력을 직접 접근을 모사하여 수행하는 스위치 추상 인터페이스(21100)를 통하여, 상기 서비스 모듈이 지능형 NIC(20000)에 접근 및 제어가 가능하게 할 수 있다. 상기 인터페이스 모듈(14300)은 상기 지능형 NIC(20000) 또는 일반 NIC(30000)의 물리 포트 또는 가상 포트에 맵핑되어 조작이 가능한 하나 이상의 채널(14310)을 포함할 수 있다.
상기 인터페이스 모듈(14300)은 소프트웨어 스택(14000)에 모두 포함되거나, 외부 모듈을 호출할 수 있는 인터페이스로써 포함될 수 있다.
도 2c는 본 발명의 다양한 실시 예에 소프트웨어 스택의 아키텍처과 지능형 NIC와의 포트 매핑 관계를 개략적으로 나타낸 도면이다.
상기 전자장치는 메모리를 더 포함할수 있으며, 상기 메모리에는 상기 전자장치의 자원을 할당 및/또는 제어하는 운영체제(Operating System)가 할당되어 있을 수 있으며, 상기 메모리는 상기 운영체제가 직접 상기 전자 장치를 제어하기 위한 작업을 수행하는 운영체제 커널(12000) 및 상기 전자장치를 이용하는 유저(user)가 상기 전자 징치를 제어하기 위한 작업을 수행하는 운영체제 사용자영역(15000)을 포함할 수 있다.
상기 운영체제 커널(12000)은 상기 지능형 NIC(20000) 또는 상기 일반 NIC(30000)의 자원을 직접적으로 접근(direct access)할 수 있으며, 상기 CPU(11000)에 직접적으로 접근(direct access)할 수 있다.
상기 고속 데이터 경로 프레임워크(12100)은 상기 운영체제 커널(12000)을 통하여 상기 지능형 NIC(20000) 또는 상기 일반 NIC(30000)의 포트(22000)에 접근 및/또는 제어 작업을 수행할 수 있으며, 물리적으로 존재하지 않으나, 실제 물리 포트와 동일하게 패킷을 입출력할 수 있는 가상화 기능(virtual function) 포트(22300)를 생성 및/또는 제거할 수 있다.
상기 운영체제 사용자영역(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) 서비스 등을 제공하는 어플리케이션일 수 있다.
상기 앱 컨테이너(15100) 또는 상기 소프트웨어 스택 컨테이너(15200)는 SRIOV(Single Root I/O Virtualization)과 상기 가상화 기능 포트(22300) 간에 상기 고속 데이터 경로 프레임워크(12100)을 통하여 서비스에 필요한 패킷을 처리할 수 있다.
상기 소프트웨어 스택(14000)에 연결된 채널(14310)을 상기 물리 포트(22000) 또는 상기 가상화 기능 포트(22300)에 소프트웨어적으로 맵핑될 수 있다.
다양한 실시 예에 따르면, 네트워크, 특히, 클라우드와 결합된 지능형 커넥티드 차량 (intelligent connected vehicle, ICV)은 보다 안전하고 환경 친화적인 교통 시스템을 제공할 수 있다. 그러나, 기존 네트워크의 경우, 짧은 지연 응답 시간을 제공하는 것에 제한되며 고유한 지연, 중단 및 동적 변경에 대한 비 유연성으로 인해 제한적일 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 5G 시스템 아키텍처 기반 ICV 통신용 플랫폼을 제공할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 기존 CPU 기반 네트워크 기능의 포워딩 성능 문제를 해결할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 소프트웨어 정의 네트워크 (software defined network, SDN) 컴파일러의 개념을 도입하여 네트워크 기능 가상화 (network function virtualization, NFV)를 수행할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 초지연의 스위칭이 필요한 서비스 제공 시스템, 예를 들어, 금융 트레이딩 시스템, 대용량 콘텐츠 전송 시스템, 예를 들어, AR/VR 콘텐츠 전송 시스템, 스트리밍 게임 시스템을 수행할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션은 소프트웨어 정의 네트워크 방법을 통해 ICV 트래픽 전송을 하드웨어로 오프로드 할 수 있다. 또한, 지능형 NIC 기반 네트워킹 솔루션은 이기종 네트워크 슬라이스의 서비스 수준 계약 (service level agreement, SLA)을 보장하고 상호 운용 할 수있는 시스템을 제공할 수 있다.
다양한 실시 예에 따르면, 하드웨어 오프로딩을 통해 디도스 어택으로 인한 CPU 부하 최소화 및 이를 통한 서비스의 안정성과 보안성 문제를 해결할 수 있다. 지능형 NIC 기반 네트워킹 솔루션은 네트워킹과 CPU 기반의 애플리케이션 간 엄격한 분리를 통해 네트워킹 기반의 외부 해킹 및 공격으로부터 CPU 를 사전에 차단하여 서비스의 안정성과 보안성이 향상된 시스템을 제공할 수 있다.
도 3a 및 도 3b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
다양한 실시 예에 따르면, 도 3a를 참조하면, 종래의 경우, 가상 네트워크 기능(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개만 생성 가능하다는 제약이 있을 수 있다.
다양한 실시 예에 따르면, 도 3b를 참조하면, 지능형 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를 소프트웨어 컴파일러로 정의할 수 있고, 가상화 기능의 오프로딩을 수행할 수 있다.
도 5a 및 도 5b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션과 타 네트워킹 솔루션의 차이점을 나타낸 도면이다.
다양한 실시 예에 따르면, 지능형 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) 통신을 수행할 수 있다.
다양한 실시 예에 따르면, 소프트웨어 네트워킹 기반 솔루션(410) 및 SRIOV 기반 네트워킹 솔루션(420)은 컨트롤 플레인(411, 421) 및 데이터 플레인(413, 423)이 게스트 유저로부터 호스트 커널까지의 동작을 모두 수행할 수 있다. 다만, 지능형 NIC 기반 네트워킹 솔루션(430)은 게스트 유저로부터 호스트 커널까지의 동작은 컨트롤 플레인(431)에서 수행하고, 이후 가상화 기능은 데이터 플레인(433)에서 수행할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(430)은 소프트웨어 스택(software stack), 예를 들어, 넷록스 사(NetLOX)의 상표명 록시라이트(Loxilight) 소프트웨어 스택을 포함할 수 있다. 상기 소프트웨어 스택은 P4 코어 컴파일러(P4 core compiler), 오프로드 컨플릭트 리졸버(offload conflict resolver) 및 기능 로더(function loader)를 모두 또는 일부로써 포함할 수 있다.
상기 P4 코어 컴파일러(P4 core compiler)는 높은 수준의 P4 중간 표현(intermediate representation)을 이해 할 수 있고, Verilog, Micro-Code, eBPF, 또는 vendor SDK C code와 같은 형태의 다양한 로직으로 출력할 수 있다.
상기 오프로드 컨플릭트 리졸버는 P4 언어의 중간 표현이 지능형 NIC의 하드웨어 또는 일반 NIC의 하드웨어 자원과 충돌이 발생하는 경우, 충돌이 발생하지 않는 형태의 로직으로 상기 P4 코어 컴파일러의 출력 형태를 변경할 수 있다.
상기 기능 로더는 상기 컴파일러에서 출력한 로직 데이터, 예를 들어, eBPF(Extended Berkeley Packet Filter) 사용자 프로그램을 eBPF 바이트 코드로 컴파일하여 데이터 플레인으로 로드할 수 있다. 상기 기능 로드는 상기 컴파일러에서 출력한 로직 데이터를, 예를 들어, 지능형 NIC의 하드웨어 블록 또는 일반 NIC의 하드웨어 블록에 LLVM(Low Level Virtual Machine) 및/또는 Clang 컴파일러를 사용하여 상기 전자장치의 운영체제 커널 영역에 XDP로 로드하거나, 독점적 인터페이스(Proprietary Interface)로 지능형 NIC의 FPGA로 로드하거나, 독점적 인터페이스로 지능형 NIC의 네트워크 프로세서로 로드할 수 있다.
도 4a는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다. CPU(11000)에 로딩된 NFV(11100)들이, 각각 지능형 NIC(20000)의 ASIC(22200), NPU(22300), FPGA(22400)에 오프로드되어, CPU(11000)의 부하가 분산되고, 지능형 NIC의 다양한 하드웨어 기능을 활용할 수 있음을 확인할 수 있다.
도 4b는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 플로우를 개략적으로 나타낸 도면이다. 통상적인 가상 스위치 기능을 사용하는 전자 장치(100000)의 경우 지연율이 높고, 대역폭이 낮고, CPU에 부하가 집중되어, 패킷 처리가 늦어질 수도 있으나, 본 발명의 실시 예에 따른 전자 장치(200000)는 지능형 NIC에 패킷이 오프로드되어, 지연율이 낮고, 대역폭이 높아지며, CPU에 부하가 분산되어, 패킷 처리의 가속화가 가능하다.
도 6은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 알고리즘에 관한 흐름도이다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 510 동작에서, MA(match-action) 페어 형태의 네트워크 기능(network function)들을 확인할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하는지 확인할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하지 않는 경우, 525 동작으로 분기하여, 생성된 로직을 다양한 오프로드 블록의 형태로 로드할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 520 동작에서, 더 많은 네트워크 기능(network function)들이 존재하는 경우, 530 동작으로 분기하여, eBPF(BPF 가상머신) 및 XDP (eXpress Data Path)를 위한 베이스라인 폴백을 생성할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 되었는지 확인할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 되지 않은 경우, 545 동작으로 분기하여, 가장 최적화된 블록을 위한 오프로드 로직을 생성하고, 560 동작으로 분기하여, XDP & 지능형 NIC 하이브리드 모드에서 오프로드 로직을 끼워 넣기 위한 메타데이터를 삽입할 수 있다.
다양한 실시 예에 따르면, 지능형 NIC 기반 네트워킹 솔루션(500)은 540 동작에서, 충분히 오프로드 된 경우, 550 동작으로 분기하여, 가장 충분한 네트워크 기능을 위한 오프로드 로직을 생성하고, 560 동작으로 분기하여, XDP & 지능형 NIC 하이브리드 모드에서 오프로드 로직을 끼워 넣기 위한 메타데이터를 삽입할 수 있다.
하기 표 1은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 GTP 터널 관리 휴리스틱 알고리즘을 나타낸 것이다.
Algorithm 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
다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 단말 지점을 사용하여 신규 GTP 터널 인터페이스를 생성하는 단계(S100)를 포함하며, 상기 GTP 터널 인터페이스를 생성하는 단계(S100)는 아래 단계들을 포함할 수 있다:인입 터널 ID, 유출 터널 ID, VRF(Virtual Routing and Forwarding) ID를 사용하여 터널 해시키를 준비하는 단계(S110);
기존 터널 요소를 터널 해시 테이블에서 조회하는 단계(S120);
상기 기존 터널 요소가 터널 해시 테이블에 존재하는 경우, GTP 터널 인터페이스 생성을 종료하는 단계 (S130);
터널 요소를 할당 및 터널 키, 터널 출발 IP, 터널 도착 IP, 인인 터널 ID 및 유출 터널 ID를 할당된 터널 요소에 복사하는 단계(S140);
터널 해시 테이블에 터널 요소를 저장하는 단계(S150); 및
도착 IP로서 터널 출발 IP, 출발 IP로서 터널 도착 IP, 인입 터널 ID 및 GTP UDP 도착 포트와 DECAP_GTP_TUNNEL 동작을 사용하여 유입 GTP 터널 플로우를 설치하는 단계(S160);
다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 단말 지점을 사용하여 GTP 터널 인터페이스를 제거하는 단계(S200)를 포함하며, 상기 GTP 터널 인터페이스를 제거하는 단계(S200)는 아래 단계들을 포함할 수 있다:
인입 터널 ID, 유출 터널 ID, VRF(Virtual Routing and Forwarding) ID를 사용하여 터널 해시키를 준비하는 단계(S210);
기존 터널 요소를 터널 해시 테이블에서 조회하는 단계(S220);
상기 기존 터널 요소가 터널 해시 테이블에 존재하는 경우, GTP 터널 인터페이스 제거를 종료하는 단계 (S230);
도착 IP로서 터널 출발 IP, 출발 IP로서 터널 도착 IP, 인입 터널 ID 및 GTP UDP 도착 포트와 DECAP_GTP_TUNNEL 동작을 사용하여 유입 GTP 터널 플로우를 제거하는 단계(S240); 및
터널 해시 테이블에서 터널 요소를 제거하는 단계(S250);
하기 표 2는 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 GTP 유저플로우 매니지먼트 휴리스틱 알고리즘의 예시이다.
Algorithm 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
다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 신규 GTP 유저 플로우를 생성하는 단계(S300)를 포함하며, 상기 신규 GTP 유저 플로우를 생성하는 단계(S300)는 아래 단계들을 포함할 수 있다:출발 IP, 도착 IP, IP 프로토, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S310);
기존 유저플로우 요소를 유저 플로우 해시 테이블에서 조회하는 단계(S320);
기존 유저 플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, 신규 GTP 유저 플로우 생성을 종료하는 단계(S330);
터널 이름을 보조 키로 사용하여 터널 요소를 조회하는 단계(S340);
유저 플로우 요소를 할당하고 할당된 유저 플로우 요소를 사용자 흐름 키와 터널 요소를 복사하는 단계(S350);.
유저 플로우 해시 테이블에 유저 플로우 요소를 저장하는 단계(S360);
외부 헤더의 터널 속성과 내부 헤더의 유저 플로우 속성이 일치하는 수신 유저 플로우를 설치하는 단계(S370); 및
GTP 터널 속성이있는 ENCAP_GTP_TUNNEL로 일치하는 유저 플로우 속성 및 액션이 있는 송신 유저 플로우를 설치하는 단계(S380).
다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 GTP 유저 플로우를 제거하는 단계(S400)를 포함하며, 상기 GTP 유저 플로우를 제거하는 단계(S400)는 아래 단계들을 포함할 수 있다:
출발 IP, 도착 IP, IP 프로토, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S410);
기존 유저플로우 요소를 유저 플로우 해시 테이블에서 조회하는 단계(S420);
기존 유저 플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, GTP 유저 플로우 제거를 종료하는 단계(S430);
일치하는 유저 플로우 속성을 사용하여 송신 유저 플로우를 제거하는 단계(S440);
외부 헤더의 터널 속성과 내부 헤더의 유저 플로우 속성이 일치하는 수신 유저 플로우를 제치하는 단계(S450); 및
유저 플로우 해시 테이블에 유저 플로우 요소를 제거하는 단계(S460)
다양한 실시 예에 따르면, GTP 터널 관리 휴리스틱 알고리즘은 GTP 유저 플로우를 제거하는 단계(S400)를 포함하며, 상기 신규 GTP 유저 플로우를 제거하는 단계(S400)는 아래 단계들을 포함할 수 있다:
출발 IP, 도착 IP, IP 프로토콜, I4 출발 포트, I4 도착 포트 및 인포트(in-port)를 사용하여 유저플로우 해시키를 준비하는 단계(S410);
기존 유저플로우 요소를 유저플로우 해시 테이블에서 조회하는 단계(S420);
기존 유저플로우 요소가 유저플로우 해시 테이블에 존재하는 경우, 신규 GTP 유저 플로우 제거를 종료하는 단계(S430);
일치하는 유저 플로우 속성을 사용하여 송신 플로우 요소를 제거하는 단계(S440);
외부 헤더의 터널 속성과 내부 헤더의 사용자 흐름유저 플로우 속성이 일치하는 수신 사용자 흐름 유저 플로우를 제거하는 단계(S450); 및
기존 유저플로우 요소를 유저플로우 해시 테이블에서 조회하는 단계(S460).
하기 표 3은 본 발명의 다양한 실시 예에 따른 지능형 NIC 기반 네트워킹 솔루션의 패킷 입출력 이벤트 핸들러 휴리스틱 알고리즘의 예시이다.
Algorithm 3 Packet I/O event handler Heuristic
Procedure: cp-hls-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 (“”
1. Create a RAW socket, sock with ETH_TYPE_HLS 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-hls-rx():
in-args: Packet buffer
out-args: Error Code or 0 for success
Description: cp-hls-rx () will called by a poll event whenever a packet from SmartNIC is ready to be received by helios application.
1. Read the SHIM hdr (HLS header) from the packet.
2. Derive the front port (incoming port) information from the HLS 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-hls-tx ():
in-args: Packet buffer
out-args: Error Code or 0 for success
Description: cp-hls-tx () will called by a poll event whenever a packet is to be sent to SmartNIC is by helios application.
1. Derive the data path port, dp_port from front port (outgoing vif).
2. Prepare the SHIM hdr (HLS 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)는 아래 단계들을 포함할 수 있다:
ETH_TYPE_HLS 패밀리을 사용하여 RAW 소켓을 생성하는 단계(S510) ;
SmartNIC 컨트롤 플레인 장치의 인덱스를 수신하는 단계(S520);
소켓을 상기 수신된 인덱스에 바인딩하는 단계(S530); 및
상기 소켓에 모든 패킷을 읽는 폴 이벤트를 추가하는 단계(S540).
다양한 실시 예에 따르면, 패킷 입출력 이벤트 핸들러 휴리스틱 알고리즘은 폴 이벤트 및 스마트 NIC의 컨트롤 플래인 장치("vf0_0")로 전송되는 모든 패킷을 수신하기 위한 RAW 소켓을 생성하는 단계(S500)를 포함하며, 상기 RAW 소켓을 생성하는 단계(S500)는 아래 단계들을 포함할 수 있다:
헬리오스 응용 프로그램에서 수신될 준비가 될 때마다 폴 이벤트에 의하여 호출되는 스마트 NIC의 패킷 수신 단계(S600)를 포함하며, 상기 스마트 NIC의 패킷 수신 단계 (S600)는 아래 단계들을 포함할 수 있다:
패킷에서 SHIM 헤더(HLS 헤더)를 읽는 단계(S610);
HLS 헤더에서 전면 포트 (수신 포트) 정보를 가져오는 단계(S620);
전면 포트 (수신 포트) 정보가 존재하지 않는 경우, 스마트 NIC의 패킷 수신을 종료하는 단계(S630);
패킷의 원본 헤더에서 플로우를 읽은 단계(S640); 및
등록된 모든 응용 프로그램에 패킷 및 플로우 정보를 전송하는 단계(S650).
헬리오스 응용 프로그램에서 스마트 NIC로 패킷을 전송할 때마다 폴 이벤트에 의해 호출되는 스마트 NIC의 패킷 전송 단계(S700)를 포함하며, 상기 스마트 NIC의 패킷 전송 단계 (S700)는 아래 단계들을 포함할 수 있다:
전면 포트 (발신 vif)에서 데이터 경로 포트 dp_port를 가져오는 단계(S710);
아웃포트(outport)를 dp_port로 사용하여 SHIM 헤더 (HLS 헤더)를 준비하는 단계(S720);
SHIM 헤더와 패킷을 로컬 버퍼에 병합하는 단계(S730);
컨트롤 플레인 장치 ( "vf0_0")에서 cp_fd를 얻는 단계(S740); 및
병합된 로컬 버퍼의 내용을 cp_fd 에 MAX_BUF_LEN 만큼 기록하는 전달 단계(S750).
다양한 실시 예에 따른 전자 장치의 방법에 있어서, 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및 지능형 NIC(network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함할 수 있다.
상기 엣지 노드 CPU는 CISC(Complex Instruction Set Computer) 아키텍처, 예를 들어, Cx86 아키텍처에 기반하여 가상화 기능을 수행하도록 설정될 수 있다.
상기 엣지 노드 CPU는 Reduced instruction set computer(RISC) 아키텍처, 예를 들어, ARM 아키텍처에 기반하여 가상화 기능을 수행하도록 설정될 수 있다.
상기 엣지 노드 CPU는 24개 코어를 포함할 수 있다.
상기 컨트롤 플레인 역할을 수행하는 동작은, 상기 24개 코어 중 4개의 코어를 활성화하는 동작을 포함할 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작은 상기 적어도 하나의 코어 중 12개 코어를 비활성화 하도록 하는 동작을 포함할 수 있다.
상기 지능형 NIC는 소프트웨어 기반 NIC일 수 있다.
상기 지능형 NIC는 소프트웨어 정의 네트워크(SDN)로 구현된 NIC일 수 있다.
상기 지능형 NIC는 컴파일러로 동작하도록 설정될 수 있다.
상기 일반 NIC는 소프트웨어 기반 NIC가 아닌 물리적인 네트워크 인터페이스 카드일 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작은 소프트웨어 스택에서 컴파일러를 사용하는 동작을 포함할 수 있다. 예를 들어, 상기 컴파일러는 헬리오스 P4 코어일 수 있다.
상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작과 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작이 상기 엣지 노드 CPU에서 함께 실행되지 않도록 설정될 수 있다.

Claims (15)

  1. 전자 장치의 방법에 있어서,
    적어도 하나의 코어를 포함하는 엣지 노드 CPU에서, 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작; 및
    지능형 NIC(network interface card)에서, 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하여 상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작;을 포함하는 전자 장치의 방법.
  2. 제1 항에 있어서,
    상기 엣지 노드 CPU는 24개 코어를 포함하는 전자 장치의 방법.
  3. 제1 항에 있어서,
    상기 컨트롤 플레인 역할을 수행하는 동작은,
    상기 엣지 노드 CPU의 코어 중 적어도 일부의 코어를 활성화하는 동작을 포함하는 전자 장치의 방법.
  4. 제3 항에 있어서,
    상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드 하는 동작은 상기 적어도 일부의 코어를 비활성화 하도록 하는 동작을 포함하는 전자 장치의 방법.
  5. 제1 항에 있어서,
    상기 지능형 NIC는 소프트웨어 기반 NIC인 전자 장치의 방법.
  6. 제5 항에 있어서,
    상기 지능형 NIC는 소프트웨어 정의 네트워크(SDN)로 구현된 NIC인 전자 장치의 방법.
  7. 제6 항에 있어서,
    상기 지능형 NIC는 컴파일러로 동작하도록 설정된 전자 장치의 방법.
  8. 제1 항에 있어서,
    상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작은 소프트웨어 스택에서 컴파일러를 사용하는 동작을 포함하는 전자 장치의 방법.
  9. 제1 항에 있어서,
    상기 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 동작과 상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 동작이 상기 엣지 노드 CPU에서 함께 실행되지 않도록 설정된 전자 장치의 방법.
  10. 적어도 하나의 코어를 포함하는 엣지 노드 CPU에서 가상화 기능을 포함하는 네트워크 기능에 관한 컨트롤 플레인(control plane) 역할을 수행하는 소프트웨어 스택;
    상기 가상화 기능을 포함하는 네트워크 기능에 관한 데이터 플레인(data plane) 역할을 수행하는 스위치 데이터 평면부를 포함하는 지능형 NIC; 및
    상기 적어도 하나의 코어에서의 상기 가상화 기능을 포함하는 네트워크 기능에 관한 적어도 일부의 동작을 오프로드하는 엣지 노드 CPU;
    을 포함하는 전자장치.
  11. 제10 항에 있어서,
    상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드되는 상기 가상화 기능이 상기 스위치 데이터 평면부에서 수행하는 바이너리 코드를 생성하는 컴파일러를 더 포함하는, 전자장치.
  12. 제10 항에 있어서,
    상기 바이너리 코드를 상기 스위치 데이터 평면부에 전송하여 실행 요청하는 작업을 수행하는 데이터 평면부 관리 모듈을 더 포함하는, 전자장치.
  13. 제12 항에 있어서,
    상기 일반 NIC를 더 포함하며,
    상기 데이터 평면부 관리 모듈은 상기 일반 NIC에 가상화되지 않은 네트워크 기능의 수행을 요청하는 것인, 전자장치.
  14. 제10 항에 있어서,
    상기 가상화 기능을 상기 스위치 데이터 평면부로부터 상기 엣지 노드 CPU에 오프로드하는 작업을 수행하는 고속 데이터 경로 프레임워크를 더 포함하는, 전자장치.
  15. 제10 항에 있어서,
    상기 지능형 NIC은 필드 프로그래머블 게이트 어레이를 더 포함하는, 전자장치.
PCT/KR2021/009589 2020-07-24 2021-07-23 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치 WO2022019720A1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR20200092244 2020-07-24
KR10-2020-0092231 2020-07-24
KR10-2020-0092244 2020-07-24
KR20200092231 2020-07-24
KR1020200169985A KR102217114B1 (ko) 2020-07-24 2020-12-08 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
KR10-2020-0169985 2021-02-10

Publications (1)

Publication Number Publication Date
WO2022019720A1 true WO2022019720A1 (ko) 2022-01-27

Family

ID=74688729

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/009589 WO2022019720A1 (ko) 2020-07-24 2021-07-23 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치

Country Status (3)

Country Link
US (1) US20220027208A1 (ko)
KR (1) KR102217114B1 (ko)
WO (1) WO2022019720A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102217114B1 (ko) * 2020-07-24 2021-02-18 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
US11552904B2 (en) * 2021-01-19 2023-01-10 Reliance Jio Infocomm Usa, Inc. Architecture for high performing data plane applications with smart network interface on compute servers
US20230004786A1 (en) * 2021-06-30 2023-01-05 Micron Technology, Inc. Artificial neural networks on a deep learning accelerator
US11902160B2 (en) * 2021-09-30 2024-02-13 Juniper Networks, Inc. EVPN host routed bridging (HRB) and EVPN cloud native data center
KR102420606B1 (ko) * 2021-11-19 2022-07-13 넷록스 주식회사 캐시 경로를 이용하는 패킷 데이터 처리 방법 및 이를 사용하는 전자 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122870A (ko) * 2009-05-13 2010-11-23 아바야 인코포레이티드 네트워크 소자의 전송 평면에서 포트 상태 테이블들을 유지하기 위한 방법 및 장치
US20100333189A1 (en) * 2009-06-30 2010-12-30 Sun Microsystems, Inc. Method and system for enforcing security policies on network traffic
US8693374B1 (en) * 2012-12-18 2014-04-08 Juniper Networks, Inc. Centralized control of an aggregation network with a reduced control plane
KR20140143155A (ko) * 2012-03-21 2014-12-15 마이크로소프트 코포레이션 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법
JP6487979B2 (ja) * 2011-03-30 2019-03-20 アマゾン テクノロジーズ インコーポレイテッド オフロードデバイスベースのパケット処理のためのフレームワークおよびインターフェース
KR102217114B1 (ko) * 2020-07-24 2021-02-18 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150963B2 (en) * 2019-02-28 2021-10-19 Cisco Technology, Inc. Remote smart NIC-based service acceleration

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122870A (ko) * 2009-05-13 2010-11-23 아바야 인코포레이티드 네트워크 소자의 전송 평면에서 포트 상태 테이블들을 유지하기 위한 방법 및 장치
US20100333189A1 (en) * 2009-06-30 2010-12-30 Sun Microsystems, Inc. Method and system for enforcing security policies on network traffic
JP6487979B2 (ja) * 2011-03-30 2019-03-20 アマゾン テクノロジーズ インコーポレイテッド オフロードデバイスベースのパケット処理のためのフレームワークおよびインターフェース
KR20140143155A (ko) * 2012-03-21 2014-12-15 마이크로소프트 코포레이션 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법
US8693374B1 (en) * 2012-12-18 2014-04-08 Juniper Networks, Inc. Centralized control of an aggregation network with a reduced control plane
KR102217114B1 (ko) * 2020-07-24 2021-02-18 넷록스 주식회사 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치

Also Published As

Publication number Publication date
KR102217114B1 (ko) 2021-02-18
US20220027208A1 (en) 2022-01-27

Similar Documents

Publication Publication Date Title
WO2022019720A1 (ko) 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
AU2019271627B2 (en) Electronic device for performing network connection based on data transmission of application and method thereof
WO2020180042A1 (en) Electronic device for transmitting response message in bluetooth network environment and method thereof
WO2020149564A1 (en) Electronic device for requesting nssai in wireless communication network and method thereof
WO2020213989A1 (en) Electronic device and method for controlling data transmission
WO2020032449A1 (en) Electronic device for supporting data communication and method therefor
WO2021230589A1 (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2019108001A1 (ko) 무선 통신 시스템에서 데이터를 송수신하는 전자 장치 및 이를 위한 방법
WO2019235813A1 (en) Electronic device supporting multiple wireless communication protocols and method therefor
WO2020111572A1 (en) Electronic device for managing bearer and operation method thereof
WO2021049748A1 (en) Electronic device for receiving data packet in bluetooth network environment and method thereof
WO2020067677A1 (ko) 외부 장치와 통신이 필요한 어플리케이션의 운영 방법 및 전자 장치
WO2020256497A1 (ko) 블루투스 통신 연결 방법 및 그 전자 장치
WO2020180056A1 (ko) 블루투스 네트워크 환경에서 응답 메시지를 전송하기 위한 전자 장치 및 그에 관한 방법
WO2020197339A1 (en) Method for processing network packets and electronic device therefor
WO2021118158A1 (en) Electronic device for controlling interface between a plurality of integrated circuits and operation method thereof
EP3777113A1 (en) Apparatus and method for adjusting network parameter
WO2022092824A1 (ko) 캐리어 네트워크를 이용하는 전자 장치 및 그 동작 방법
WO2021101014A1 (ko) 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법
AU2019360681B2 (en) Method and electronic device processing data
WO2020180072A1 (ko) 엣지 컴퓨팅 환경에서 어플리케이션 재배치를 제어하기 위한 장치 및 방법
WO2020180113A1 (ko) 블루투스 네트워크에서 채널 정보를 공유하기 위한 방법 및 이를 위한 전자 장치
WO2022215871A1 (ko) 네트워크 슬라이스를 통하여 패킷을 송신 및/또는 수신하는 전자 장치 및 그 동작 방법
WO2022191437A1 (ko) 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
WO2022215941A1 (ko) 전자 장치의 네트워크 보안 정책 처리 방법

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 23/06/2023Y)

122 Ep: pct application non-entry in european phase

Ref document number: 21846326

Country of ref document: EP

Kind code of ref document: A1