KR101150928B1 - 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법 - Google Patents

네트워크 아키텍처 및 이를 이용한 패킷 처리 방법 Download PDF

Info

Publication number
KR101150928B1
KR101150928B1 KR1020100083088A KR20100083088A KR101150928B1 KR 101150928 B1 KR101150928 B1 KR 101150928B1 KR 1020100083088 A KR1020100083088 A KR 1020100083088A KR 20100083088 A KR20100083088 A KR 20100083088A KR 101150928 B1 KR101150928 B1 KR 101150928B1
Authority
KR
South Korea
Prior art keywords
packet
processing unit
processing
memory
network architecture
Prior art date
Application number
KR1020100083088A
Other languages
English (en)
Other versions
KR20120019711A (ko
Inventor
박경수
문수복
한상진
장건
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020100083088A priority Critical patent/KR101150928B1/ko
Publication of KR20120019711A publication Critical patent/KR20120019711A/ko
Application granted granted Critical
Publication of KR101150928B1 publication Critical patent/KR101150928B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본원에는 그래픽처리장치(Graphic Processing Unit)가 장착된 네트워크 아키텍처에 있어서, 패킷 처리와 관련하여 제1 동작을 수행하도록 구성된 중앙처리장치; 및 상기 패킷 처리와 관련하여 제2 동작을 수행하도록 구성된 그래픽처리장치를 포함하는 네트워크 아키텍처가 개시된다. 본 발명에 따르면, 그래픽처리장치를 이용하여 중앙처리장치(CPU)의 사용률을 낮추어 중앙처리장치(CPU)의 과부하를 피할 수 있고, 아울러 단위 비용당 패킷 처리 성능을 향상시킬 수 있다.

Description

네트워크 아키텍처 및 이를 이용한 패킷 처리 방법{NETWORK ARCHITECTURE AND METHOD FOR PROCESSING PACKET DATA USING THE SAME}
본 발명은 그래픽처리장치(GPU)를 이용하여 패킷 처리를 수행하는 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법에 관한 것으로, 더욱 상세하게는 패킷 처리로 인한 중앙처리장치에서의 병목 현상을 피하기 위해서 그래픽처리장치를 이용하여 패킷 처리를 수행하는 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법에 관한 것이다.
라우터(Router)는 서로 다른 네트워크를 서로 연결하는 핵심장비로서, 라우터는 라우팅 테이블에 따라서 패킷의 전송을 결정하는 장비이며, 라우터의 처리속도가 네트워크 속도를 결정하는 요인의 하나이다. 네트워크 내의 자료를 각각의 패킷(packet)으로 나누는데, 이런 패킷의 목적지는 라우터에 의해서 결정하며, 라우터는 데이터의 목적지에 따라 정확한 경로를 가리키며, 제일 간편하고 효율적인 경로를 계산하여 자료를 전송한다.
컴퓨터 기반의 소프트웨어 라우터는 우수한 확장성과 프로그램가능성을 가지고 저렴한 패킷 처리 플랫폼을 제공한다. 이와 같이 소프트웨어 라우터는 하드웨어 기반 라우터에 비해 저렴한 가격으로 유연하게 패킷처리를 할 수 있다는 장점이 있지만, 중앙처리장치 (CPU)에 집중되는 부하로 인해 초고속 네트워크를 위한 장비로 활용되기 어려운 측면이 있다. 특히, 컴퓨팅이 많은 응용에서는 CPU가 곧 병목현상을 보이고, CPU를 추가해서 복수의 CPU로 처리해도 여전히 단위 비용당 성능이 저하되는 한계가 있다.
본 발명은 상술한 종래 기술의 문제점을 해결하기 위한 것으로, 본 발명의 하나의 목적은 컴퓨터에 내장된 그래픽처리장치(GPU)를 이용하여 CPU에서의 패킷 처리를 분산시킴으로써 고속 패킷 처리(high throughput)가 가능한 네트워크 아키텍처를 제공하는 것이다.
본 발명의 다른 목적은 저렴하고 이용하기 쉬운 그래픽처리장치를 이용하여 패킷 처리를 행함으로써 CPU에서의 과부하로 인한 병목현상을 극복하여 고속 라우팅을 실현할 수 있는 네트워크 아키텍처를 이용한 패킷 처리 방법을 제공하는 것이다.
상술한 목적을 달성하기 위한 본 발명의 하나의 양상은
그래픽처리장치(Graphic Processing Unit)가 장착된 네트워크 아키텍처에 있어서,
패킷 처리와 관련하여 제1 동작을 수행하도록 구성된 중앙처리장치; 및
입출력 허브를 통해서 상기 중앙처리장치와 연결되고, 상기 패킷 처리와 관련하여 제2 동작을 수행하도록 구성된 그래픽처리장치를 포함하는 네트워크 아키텍처에 관한 것이다.
상술한 목적을 달성하기 위한 본 발명의 다른 양상은 입력된 패킷을 중앙처리장치의 메모리로 이동시켜 패킷 처리와 관련하여 제1 단계 처리를 수행하는 단계;
상기 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시키는 단계;
상기 그래픽처리장치에서 패킷 처리와 관련하여 제2단계 처리를 수행하는 단계;
상기 처리된 패킷을 중앙처리장치로 전송하여 출력하는 단계를 포함하는 패킷 처리방법에 관한 것이다.
본 발명에 따르면, 컴퓨터나 노트북에 내장된 그래픽처리장치(GPU)를 이용하여 패킷 처리(라우팅)를 패킷 처리를 분산시킴으로써 저렴한 비용으로 구현이 가능하고 우수한 프로그램성을 제공하며, 최대한의 처리능력을 제공하면서도 높은 전송률을 유지할 수 있다. 구체적으로, 기존 최고 성능의 소프트웨어 라우터의 경우 IPv4 전송 성능이 8.7Gbps 정도에 머무는 반면에, 본 발명의 네트워크 아키텍처는 같은 하드웨어 사양으로 40 Gbps에 가까운 성능을 시현하고, IPsec과 같은 계산 부하가 심한 응용프로그램에서도 10-20 Gbps 정도의 성능을 시현하여 하드웨어기반의 라우터에 필적하는 뛰어난 성능을 시현한다.
또한 상기 그래픽처리장치에 의한 패킷 처리는 소프트웨어적으로 구현되어 소프트웨어 라우터의 기능을 행하므로, 상기 소프트웨어의 수정만으로 다양한 규격의 패킷을 처리할 수 있다.
도 1은 본 발명의 일구현예의 네트워크 아키텍처를 포함하는 컴퓨터 시스템의 블록도이다.
도2a는 기존의 패킷 버퍼 할당 스킴을 도시한 모식도이고, 도 2b는 본 발명의 일구현예의 네트워크 아키텍처에서의 패킷 버퍼 할당 스킴을 도시한 모식도이다.
도 3은 본 발명의 일구현예에 의한 패킷 처리를 분담하는 그래픽처리장치의 소프트웨어 아키텍처를 도시한 도면이다.
도 4a는 기존의 per-NIC 대기열 처리 스킴을 도시한 것이고, 도 4b는 본 발명에 의한 배치처리를 위한 패킷 입출력 스킴을 도시한 모식도이다.
도 5는 본 발명의 일구현예에 의한 패킷 처리를 분담하는 그래픽처리장치에서의 패킷 처리 방식을 설명하기 위한 모식도이다.
도 6a는 본 발명에서의 그래픽처리장치에 의한 패킷 처리 가속화를 위한 청크 파이프라이닝(chunk pipelining) 개념을 설명하기 위한 모식도이고, 도 6b는 대기열의 집합(Gather)/분산(Scatter) 방식을 설명하기 위한 모식도이고, 도 6c는 데이터의 복사 및 실행을 동시에 수행하는 방식을 설명하기 위한 모식도이다.
도 7은 본 발명의 일실시예에 의한 패킷 처리 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 다른 실시예에 의한 패킷 처리 방법을 설명하기 위한 흐름도이다.
이하에서 첨부 도면을 참조하여 본 발명의 다양한 실시예에 대하여 상세하게 설명한다. 본 발명의 기타의 다른 목적들, 이점들, 그리고 동작상의 이점들은 이하의 발명의 상세한 설명에 의해서 더욱 자명해질 것이다. 하기에서 본 발명을 설명함에 있어, 관련된 공지의 기능 또는 구성에 대한 구체적인 설명은 생략한다.
본 명세서에 있어서 사용된 여러 용어들에 대한 정의를 아래에 제공한다.
본원에서 “라우팅(Routing)”이라는 용어는 통신 네트워크에 있어서 데이터 유닛을 전송하는 행위를 의미한다. 구체적으로 수신한 패킷의 헤더 정보에 기초하여, 라우팅 테이블을 참조하고 각 패킷을 출력해야 할 출력 회선 중 하나를 특정하여 출력하는 과정을 의미한다. 본 명세서에서 사용되는 "라우팅"이라는 용어는 데이터 유닛을 전송하기 위한 특정한 기술에만 한정되지는 않는다. 따라서 상기한 "라우팅"이라는 용어는, 예를 들면, 레벨 3 네트워크 레벨의 패킷 라우팅 또는 레벨 2 링크 레벨 스위칭을 포함하는 광의로 해석되어야 한다.
본 발명에서 “청크(chunk)"라는 용어는 수신된 하나의 배치의 패킷에서 인출(fetch)되는 패킷의 그룹을 의미하고, 그래픽처리장치에서의 병렬처리를 위한 최소 처리 단위로 기능한다.
본 발명에서 “그래픽처리장치(GPU)"라는 용어는 컴퓨터 그래픽스를 위한 계산을 다루는 그래픽처리장치는 물론 범용 그래픽처리장치(GPGPU, General-Purpose computing on Graphics Processing Units)를 포함하고, 더 나아가 중앙처리장치가 전통적으로 취급했던 응용 프로그램들의 계산을 담당하고, 많은 코어를 병렬처리할 수 있는 임의의 종류의 보조프로세서 유닛을 포함하는 광의의 장치를 의미한다.
본 발명은 초고속 네트워크 상에서의 패킷 라우팅에 있어서, 중앙처리장치에 집중되는 부하를 그래픽처리장치(GPU)로 분산시켜 GPU에서 패킷 처리의 핵심적인 부분을 처리하도록 하여 초당 수십기가비트 수준의 라우팅 속도를 제공하는 것이다. 일반적으로, 그래픽처리장치(GPU)는 컴퓨터의 3차원 영상정보를 처리하거나 화면 출력을 담당하는 역할만을 수행하지만, 본 발명에서 그래픽처리장치(GPU)는 패킷 처리에 필요한 기능의 일부 또한 수행하도록 구성된다.
도 1은 본 발명의 일 실시예에 따른 그래픽처리장치를 이용하여 패킷 처리를 행하는 네트워크 아키텍처를 구비하는 컴퓨터 시스템을 도시한 것이다.
패킷 통신은 다수의 컴퓨터 사이에서 이루어지는데, 도 1은 다수의 상호 접속된 노드를 포함하는 비균등 메모리 액세스(Non-Uniform Memory Access, NUMA) 컴퓨터 시스템의 일례를 도시한 것이다. 도 1에 도시된 바와 같이, NUMA 컴퓨터 시스템(10)은 복수의 NUMA 노드로 구성되고, 각각의 노드는 중앙처리장치(CPU)(11), 주변기기들을 중앙처리장치에 연결하는 입출력 허브(IOH)(12), 그래픽처리장치(GPU)(13), 랜덤 액세스 메모리(RAM)(15), 네트워크 인터페이스 제어기(NIC)(14)를 포함한다.
본 발명이 이러한 NUMA 컴퓨터 시스템에서 구현되는 경우에, 본 발명의 일구현예의 네트워크 아키텍처(100)는, 도 1에 도시된 바와 같이, 패킷 처리와 관련하여 제1 동작을 수행하도록 구성된 중앙처리장치(11)와 상기 입출력 허브(12)를 통해서 상기 중앙처리장치(11)와 연결되고 패킷 처리와 관련하여 제2 동작을 수행하도록 구성된 그래픽처리장치(13)를 포함한다.
고속 소프트웨어 라우터는 일반적으로 많은 비율의 CPU 사이클을 네트워크 인터페이스를 통해서 패킷을 송수신하는데 소비한다. 따라서 그래픽처리장치에 의한 라우팅의 고속화를 달성함에 있어서 입출력 성능을 개선하지 않으면 상당한 성과를 거둘 수 없기 때문에, 본 발명에서는 패킷 입출력 성능을 제공하기 위해서 파이프라인닝(pipelining) 및 배치처리(bactch processing)를 개발하였다. 즉, 한 번에 여러 개의 패킷을 그룹 단위로 처리하고, 중앙처리장치와 그래픽처리장치의 역할을 구분하여 분담시킴으로써 동시에 두 가지를 모두 활용한다.
상기 네트워크 아키텍처의 그래픽처리장치는 입력되는 패킷들을 병렬처리하도록 병렬 방식(parallel manner)으로 구현되고, 하드웨어 레벨, 장치 드라이버(device driver) 레벨 및 어플리케이션 레벨에서 배치 처리(batch processing)를 행하도록 구성된다.
본 발명의 패킷 라우팅을 위한 네트워크 아키텍처는 패키 처리의 전 과정의 작업을 여러 개의 짧은 단계로 나누어서(예컨대, 입력, 처리, 출력), 각 단계를 분업형식으로 처리하는 파이프라이닝 방식으로 처리하다. 이러한 파이프라이닝에 의해서 패킷을 처리할 때, 다음 패킷들을 동시에 읽을 수 있어, CPU와 GPU 둘다 유휴 상태로 두지 않고 모두 다 사용한다.
그래픽처리장치(13)는 프로그래머가 작성한 소프트웨어를 구동할 수 있는 능력을 가지고 있으며, 본 발명에서는 네트워크 상에서 패킷을 라우팅하는 소프트웨어를 탑재하여 패킷 처리를 행한다. 따라서 상기 그래픽처리장치 (GPU)(13)는 일반적인 기능인 영상을 디스플레이 하도록 제어함과 동시에 패킷처리를 처리한다. 상기 그래픽처리장치(GPU)(13)는 IP 테이블 룩업,IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우(Open Flow) 매칭 테이블 룩업, 침입 탐지 문자열 검색 등 패킷 처리의 핵심적인 부분을 처리한다.
여기서, 상기 그래픽처리장치(GPU)(13)는 3차원 그래픽 가속기로 구현될 수 있다. 그래픽처리장치(GPU)는 수백의 슬림 코어(slim cores)에 의해서 최고의 스레드-레벨 병렬 처리(thread-level parallelism)를 제공한다. 그래픽처리장치 (GPU)의 이러한 데이터 병행 실행 모델(data-parallel execution model)은 대부분의 라우터에서의 병행 처리 특성에 적합하다. 그래픽처리장치 (GPU)의 메모리 액세스 지연(memory access latency) 및 충분한 메모리 대역폭은 주로 방대한 테이블을 탐색하는 것으로 인한 메모리-집중 라우터 어플리케이션 (memory-intensive router application)을 부스트한다. 그래픽처리장치(GPU)는 다수의 GPU 코어 어레이를 가지고 있어 CPU에 비해서 훨씬 큰 연산력을 제공하여 연산밀도(computing density)도 높고 저렴하고 구하기 쉬운 이점을 갖는다.
그래픽처리장치(GPU)는 수백 개의 코어를 포함하는데, 예를 들어 NVIDIA GPU (GTX 480)는 15개의 스트리밍 멀티프로세서로 구성되는데, 각각의 스트리밍 프로세서는 32개의 스트림 프로세서로 구성되고, 이는 총 480개의 코어에 해당한다. 모든 스레드는 커널(kernel)로 불리우는 동일한 프로그램을 공유하는 스트림 프로세서에서 실행된다. 스트리밍 멀티프로세서의 기본 실행 단위는 32개의 스레드로 그룹인 웝(warp)이다.
CPU는 소수의 스레드를 가속화하기 위해서 명령-레벨 병렬처리를 최대화하는데 반해서, 그래픽처리장치는 스레드-레벨 병렬처리를 최대화해서 그들의 대부분의 다이 면적은 산술 로직 유니트(Arithmetic Logic Unit)의 큰 어레이가 차지한다. 대부분의 네트워크 어플리케이션의 경우, 메모리 동작 세트는 너무 커서 CPU 캐쉬에 맞지 않는다. 메모리 액세스 지연(memory access latency)는 아웃-오브-오더 실행 및 중복 메모리 레퍼런스에 의해서 잠재적으로 숨겨질 수 있다. 지연숨김 (latency hiding)은 CPU 리소스로는 상당히 제한되는데 반해서, 그래픽처리장치는 CPU와 달리 수백 개 또는 수천 개의 스레드에 의해서 메모리 액세스 지연을 효과적으로 숨길 수 있다.
네트워크 어플리케이션은 해쉬 테이블 룩업과 같은 랜덤 메모리 액세스를 나타내어 이용가능한 대역폭이 신속하게 소진되는 경향이 있다. 그래픽처리장치에 대한 오프로딩 메모리-집중 연산에 의해서 그래픽처리장치의 큰 메모리 대역폭의 이익을 얻을 수 있다. 또한 그래픽처리장치의 추가 메모리 대역폭은 CPU의 메모리 대역폭의 상당 부분이 패킷 입출력에 의해 소비된 경우에 특히 유리하다.
운영시스템(OS) 커널에서 네트워크 스택은 패킷 버퍼를 유지한다. 패킷마다 버퍼를 할당하는 도2a에 도시된 바와 같은 기존의 방식은 잦은 버퍼 할당 및 회수(deallocation)로 인해서 커널 내의 메모리 서브시스템에 스트레스를 주고, 여러 층의 모든 프로토콜들에 의해서 요구되는 정보를 다 저장해야 하기 때문에 데이터 사이즈가 너무 커지는 문제점이 있다. 따라서 패킷 마다 버퍼를 할당하는 방식(per-packet buffer allocation)은 상당한 CPU 오버헤드를 초래한다.
본 발명의 일구현예의 네트워크 아키텍처에서는, 도 2b에 도시된 바와 같이, 패킷별로 버퍼가 할당되는 것이 아니고 미리 거대한 패킷 버퍼(huge packet buffer)를 할당해서 메모리 할당 CPU 부하를 줄인다. 일례로 입력되는 전체 패킷에 대한 패킷 데이터를 저장하기 위한 두 개의 거대 패킷 버퍼(huge packet buffer)를 포함할 수 있고, 하나의 거대 패킷 버퍼는 메타데이터(metadata)를 위한 버퍼이고, 다른 하나의 거대 패킷 버퍼는 패킷 데이터(packet data)를 저장하기 위한 버퍼이다.
이러한 거대 패킷 버퍼에서는 장치 드라이버가 skb 데이터 및 패킷 데이터를 매 패킷마다 할당하지 않는다. 버퍼는 고정된 크기의 셀들로 구성되고, 각 셀은 수신 큐에서의 하나의 패킷에 해당한다. 셀들은 순환되는 수신 큐가 끝나면 재사용된다. 이러한 구성은 패킷마다 버퍼를 할당하는 비용을 절감하게 하고, 패킷 마다의 DMA(Direct Memory Access) 매핑 비용을 경감시킨다. 상기 DMA 매핑은 호스트 메모리 어드레스를 입출력 드라이브 메모리 어드레스로 번역해서 네트워크 인터페이스 제어기가 패킷 데이터 버퍼에 접근할 수 있게 하는 것이다. 본 발명에서는 효과적인 DMA 연산을 위해서 패킷 도착시마다 작은 버퍼를 매핑하는 대신에, 장치 드라이버로 하여금 거대 패키 버퍼를 매핑하게 한다.
본 발명에서는 메타 데이터 구조의 초기화 비용을 줄이기 위해서 메타데이터를 가능한 최대한으로 압축하였는데, 불필요한 필드를 제거하여 208 바이트 대신에 8 바이트의 메타데이터 셀을 만들었다,
다수의 패킷의 배치 처리(batch processing)는 패킷마다 처리하는 오퍼헤드를 상당히 감소시킨다. 배치처리는 패킷 처리의 모든 레벨에 적용되는데, NIC 및 장치 드라이버에서 뿐만 아니라 어플리케이션 레벨에서도 배치처리한다.: (1) 하드웨어에서, 네트워크 인터페이스 제어기는 보다 나은 입출력 대역폭 이용을 위해서 다수의 패킷들을 하나의 PCIe 트랙젝션으로 모은다. (2) 장치 드라이버에서 per-packet bookkeeping operation을 위한 비용을 감소시킨다. (3) 어플리케이션에서, 다수의 패킷을 동시에 처리하면 펑션 콜 오버헤드(function call overhead) 및 동기화 작동(synchronization operations)을 줄여서 더 적은 명령 풋프린트(smaller instruction footprint)를 달성한다.
거대 패킷 버퍼의 이점을 극대화하기 위해서, 또한 중앙처리장치로부터 패킷 데이터를 수신할 때 선인출(prefetch) 방식으로 입력받는다. 그래픽처리장치(13)의 장치 드라이버(device driver)가 패킷을 처리함과 동시에 다음 패킷의 패킷 기술자(packet descriptor) 및 패킷 데이터(packet data)를 중앙처리장치(11)의 캐시에 병렬로 선인출한다. 이러한 일련의 패킷들의 선인출은 캐시 미스 지연(cache miss latency)을 제거한다.
배치된 수신 패킷을 사용자-레벨 어플리케이션(user-level application)으로 전달할 때, 거대 패킷 버퍼의 데이터를 각 패킷의 오프셋 어레이 및 길이에 따라서 순차적으로 사용자-레벨 버퍼로 복사한다. 이러한 복사는 거대 패킷 버퍼의 재활용 및 사용자 버퍼의 유연한 사용을 가능하게 한다. 배치된 패킷의 조작 및 네트워크 인터페이스 제어기(NIC) 포트로의 분할 전송을 유연하게 할 수 있다.
그래픽처리장치의 가속화( GPU ACCELERATION )
본 발명에서 그래픽처리장치의 패킷 처리 어플리케이션(110)은, 도 3에 도시된 바와 같이, 수신큐의 패킷들을 그래픽처리장치에 입력 데이터로 제공하기 위해 데이터 구조를 형성하는 프리-쉐이더(pre-shader)(30); 중앙처리장치의 호스트메모리로부터 입력데이터를 복사하여 패킷을 처리한 후 그 결과를 호스트 메모리로 전송하는 쉐이더(shader)(70); 및 청크 내의 패킷들을 패킷 전송을 위해서 목적지 포트로 분할하는 포스트-쉐이더(post-shader)(50)를 포함한다.
상기 패킷 처리 어플리케이션(110)은 사용자 모드에서 실행되는 멀티-스레드 프로그램이다. 패킷 입출력의 경우, 랩 함수(wrap function)로 구성되는 패킷 API는 커널-레벨 패킷 입출력 엔진(kernel-level packet I/O engine)(140)을 자극한다. 패킷 처리 어플리케이션은 그래픽처리 가속화 프레임워크(120) 위에서 실행되고 세 개의 콜백 함수(callback functions)에 의해서 구동된다.
현재 CUDA 프로그램의 성능은 잦은 구문 스위칭 오버헤드(context switching overhead)로 인해서 다수의 CPU 스레드가 동일한 그래픽처리장치에 액세스할 때 심각하게 저하된다. 본 발명에서는 CPU 스레드가 매스터 스레드(master thread)와 워커 스레드로 구분된다. 매스터 스레드는 동일한 노드에서 그래픽처리장치하고만 통신하지만, 워커 스레드는 패킷 입출력을 담당하고 매스터에게 그래픽처리장치와의 통신을 위한 프록시로 기능하도록 요구한다. 각각의 스레드는 CPU 코어에 일대일로 매핑되고, 구문 스위칭 및 프로세스 이동비용을 피하기 위해서 코어에 하드-친화된다(hard-affinitized).
본 발명에서는 시스템을 NUMA 노드별로 구분하고 각 NUMA 노드가 패킷을 독립적으로 처리한다. 각각의 노드에서 쿼드 코어 CPU는 세 개의 워커 스레드(worker thread)와 하나의 매스터 스레드(master thread)를 실행한다. 워커 스레드는 비싼 노드-크로싱 통신을 피하기 위해서 로컬 매스터하고만 통신한다. 워커 스레드가 일단 패킷을 수신하면, 모든 처리는 동일한 노드의 CPU 및 GPU에 의해서 행해진다. 유일한 예외는 패킷을 다른 노드의 그래픽처리장치로 보내는 경우인데, 이때에도 CPU가 아니라 DMA에 의해서 행해진다.
본 발명의 네크워크 아키텍처는 친화적인 개발 환경, 폴트 분리(fault isolation)에 의한 신뢰성, 및 제3자 라이브러리에의 무난한 통합(seamless integration)과 같은 사용자-레벨 프로그래밍을 이용하기 위해서 커널 레벨이 아닌 사용자 레벨에서 실행된다. 커널 레벨은 운영체계 (OS)안에 있는데 반해서, 사용자 모드는 운영체계(OS) 위의 어플리케이션 레벨을 의미한다. 본 발명에서는 패킷처리가 사용자 레벨에서 이루어지는데, 이것은 그래픽장치에 의한 패킷 처리가 웹 브라우저나 웹서버와 같은 어플리케이션으로 구현된다는 것을 의미한다. 커널 레벨에서 패킷을 처리하는 기존의 소프트웨어 라우터는 속도는 빠르지만, 프로그래밍이 어려운 문제가 있는데, 본 발명의 장치는 사용자 레벨에서 구현되어
프로그램밍/디버깅이 용이하다.
사용자-레벨 패킷 처리는 커널 스페이스에서 보다 성능이 떨어지는 문제가 있는데, 본 발명에서는 다음의 세 가지 점에서 주된 문제를 해결한다 (1) 본 발명은 per-packet system call overhead의 비용을 경감하기 위해서 하나의 시스템에서 다수의 패킷들을 배치처리한다. (2) 본 발명에서는 개개의 큐에 대한 명백한 인터페이스를 이용한다. 가상 인터페이스가 사용자-레벨 스레드에 할당되어 스레드가 직접 다수의 코어에 액세스한다. 큐(queue)가 존재할 경우(per-NIC shared queue), 기존에는 도 4a에 도시한 바와 같이, 여러 CPU 코어에서 동시에 액세스하는 경우 그 큐에 락(lock)을 걸어 한 번에 하나의 코어만 액세스하게 하는 식으로 동작하고, 이와 같이, 락이 걸려 있으면 다른 코어들은 큐 액세스를 못하고 놀아야 하는 경우가 많이 생기고(lock contention), 따라서 자원낭비로 인한 성능저하가 초래된다. 이를 방지하기 위해서 본 발명에서는 공유 큐(shared queue)를 없애고, 기존의 NIC ID 뿐만 아니라 그 NIC의 큐 ID를 명시적으로 제공해주는 방식으로 특정 큐를 사용한다.
가상 인터페이스는 다수의 코어에 의해 공유되지 않기 때문에 단일 큐의 공유(sharing) 및 동기화(synchronization)가 필요 없게 된다. 사용자 스레드는 공정성을 위해서 라운드-로빈 방식으로 다수의 큐들로부터 패킷들을 인출한다. (3) 본 발명에서는 사용자 상황에서 라이브록 문제(livelock problem)를 피하기 위해서 인터럽트와 폴링 사이의 스위칭을 능동적으로 제어한다. 인터럽트-디스에이블 상태에서는 패킷을 반복적으로 인출하고, 수신 큐에서 패킷들이 비워지면 스레드는 차단되고 큐의 수신 인터럽트가 활성화된다. 패킷 수신시 인터럽트 핸들러가 스레드를 깨우고나서 인터럽트는 다시 불활성화된다.
본 발명의 네트워크 아키텍처에서는 워커 스레드에서 청크 처리를 파이프라이닝해서 다수의 패킷들을 일괄적으로 처리한다. 그래픽처리장치 병행 처리를 위한 최소 처리 단위로 기능하는 청크(chunk)의 크기는 고정된 것이 아니고 캡이 있을 뿐이다. 수신 큐의 다수의 패킷들을 처리함으로써 제공된 로드의 레벨에 따라서 낮은 지연을 위한 작은 병행처리와 높은 스루풋을 위한 큰 병행처리 사이를 적절하게 균형을 잡는다.
본 발명에서는 패킷 처리를 세 단계로 진행한다: pre-shading, shading, post-shading. 프리쉐이딩 및 포스트-쉐이딩은 워커 스레드에서 실행되고 실제적인 패킷 입출력 및 기타의 일들을 담당한다. 쉐이딩은 매스터 스레드에서 일어나고 그래픽처리장치와 관련된 업무를 수행한다. 각 단계는 다음과 같다:
프리-쉐이딩(Pre-shading): 각각의 워커 스레드는 자신의 수신 큐로부터 패킷들의 청크를 인출한다. 워커 스레드는 잘못 생성된 패킷을 드롭하고 그래픽처리장치에 의해서 처리되어야 하는 정상적인 패킷들을 구분한다. 이어서 그래픽처리장치에 입력 데이터로 제공하기 위해 데이터 구조를 형성한다. IPv4의 경우를 예로 들면, 패킷 헤더로부터 목적지 IP 주소를 수집해서 수집 주소의 어레이를 형성한다. 그리고나서 입력 데이터를 매스터 스레드의 입력 큐(input queue)로 전달한다.
쉐이딩(Shading): 매스터 스레드는 입력 데이터를 호스트 메모리로부터 그래픽처리장치의 메모리로 옮기고, 그래픽처리장치의 커널을 런칭하고 그래픽처리장치로부터 처리결과를 호스트 메모리로 옮긴다. 이어서 결과를 포스트-쉐이딩을 위해서 워커 스레드의 출력 큐에 반환한다.
포스트-쉐이딩(Post-Shading): 워커 스레드는 그의 출력 큐에서 결과를 픽업해서 처리결과에 따라서 청크 내의 패킷을 변형하거나, 드롭하거나 복제한다. 끝으로 워커 스레드는 청크 내의 패킷들을 패킷 전송을 위해서 목적지 포트로 분할한다.
도 6은 그래픽처리장치에 의한 라우팅 가속화에 있어서 매스터 스레드와 워커 스레드가 어떻게 협력하는지를 보여준다. 스레드 사이의 통신은 매스터 스레드의 입력 큐와 워커 스레드의 출력 큐를 통해서 이루어진다. 도 6에 도시된 바와 같이 매 워커 스레드에 대해 출력 큐가 연결되는 per-worker output queues에 의해 1-대-N 공유를 피함으로써 캐시 바운싱(cache bouncing) 및 락 컨텐션(lock contention)을 완화할 수 있다.
본 발명에서는 매스터 스레드가 입력 데이터 자체에 액세스 하지 않는다. 매스트 스레드는 워커 스레드에 의해서 입력 데이터를 통보받고, 입력 데이터를 터치하지 않고 DMA를 개시하여 바로 그래픽처리장치로 전송한다. 이러한 과정은 데이터의 출력 시에도 동일하게 적용된다. 패킷의 순서는 RSS(Receive-Side Scaling: RSS)와 함께 흐른다. RSS는 수신된 패킷을 플로우-기반으로 워커 스레드에 분산시킨다. 동일한 플로우 내의 패킷들은 동일한 워커 스레드에 의해서 처리되고, 청크 내에서의 패킷의 순서는 그대로 유지된다. 모든 큐들은 선입력선출력(FIFO) 순서로 처리된다.
Optimization Strategies (최적화 전략)
본 발명에서는 기본적인 워크플로우를 최적화한다. 첫 째로 각각의 워커 스레드를 최대한 이용하기 위해서 처리 스텝을 파이프라이닝한다. 둘 째로 그래픽처리장치에 의한 병렬처리를 용이하게 하기 위해서 매스터 스레드 프로세스 멀티플 청크들을 한 번에 워커 스레드로부터 공급한다. 세 째로, 그래픽처리장치 커널 실행을 위해서 PCIe 데이터 전송을 병렬로 실행한다.
워커 스레드가 프리-쉐이딩을 행하고 나서 입력 데이터를 그의 매스터에게 전달하고나면, 워커 스레드는 매스터 프로세스가 쉐이딩 단계를 완료할 때까지 기다린다. 이렇게 되면 워커 스레드가 이용되지 않기 때문에 입력 트래픽이 많은 경우에 특히 시스템의 성능이 저하될 수 있다. 본 발명에서는 이러한 문제를 극복하기 위해서 도 6a에 도시한 바와 같이, 워커 스레드에서의 청크 프로세스를 파이프라이닝해서 묶어서 처리한다. 즉, 일단 워커 스레드가 입력 데이터를 매스터에 전달하면, 워커 스레드는 매스터가 제1 청크의 출력 데이터를 반환할 때까지 즉시 다른 청크를 위한 프리-쉐이딩을 수행한다.
본 발명에서는 하나의 매스터 스레드에 대해서 복수의 워커 스레드가 존재하므로, 그래픽처리장치가 오버로드되면 입력 큐들은 청크로 채워질 수 있다. 도 6b는 본 발명에서 쉐이딩 단계에서 큐 내의 다수의 청크들을 처리하는 과정을 도시한 것이다. 도 6b를 참조하면 매스터 스레드가 입력 큐들로부터 다수의 입력 데이터들을 디큐(dequeue)하고 입력 데이터의 사본들을 파이프라이닝하고( gatehr), 그래픽처리장치로 한 번에 처리한 후에, 결과물을 워커의 출력 큐들로 분할하고, 워커로부터 청크가 나온다 (scatter). 이와 같이 집합(gather)/분산(scatter) 메카니즘은 그래픽처리장치의 병렬처리를 보다 효율적으로 만들어 전체 시스템의 성능을 향상시킨다.
쉐이딩 단계에서는 데이터의 전송과 청크의 그래픽처리장치 커널 실행이 서로 종속되어 시리얼하게 진행된다. 그래픽처리장치의 커널 함수가 실행되는 동안에 호스트와 장치 메모리 사이의 데이터 복사가 진행된다. 도 6c에 도시된 바와 같이, 데이터 전송과 일련의 청크에 대한 커널 런칭이 중복될 수 있는데, 이러한 복사와 실행을 동시에 진행하는 동시 복사 및 실행(Concurrent Copy and Execution)은 데이터 전송과 그래픽처리장치 커널 실행이 중복되는 경우에 그래픽처리장치의 성능을 향상시킨다.
본 발명의 네트워크 아키텍처에서는 패킷처리량이 비교적 작을 때는 CPU만을 사용해서 패킷처리를 행하고, 대용량을 처리해야 하는 경우는 GPU로 패키 처리의 일부를 오프로딩할 수 있다. 이러한 구성에 의하면 패킷 처리 속도와 쓰루풋을 모두 향상시킬 수 있다. 따라서 패킷이 입력되면 패키 처리량을 소정의 임계값과 비교하여 패킷처리량이 상기 임계값을 초과하는 경우에만 그래픽처리장치에 의해서 패킷을 처리하도록 구현될 수 있다.
본 발명의 네트워크 아키텍처에서 중앙처리장치(11)는 패킷의 입출력을 담당하고, 그래픽처리장치(13)는 패킷 처리의 핵심 요소를 담당할 수 있다. 따라서 중앙처리장치에 의해서 행해지는 제1동작은 패킷의 입출력이 되고, 그래픽처리장치에 의해서 행해지는 제2동작은 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색 등일 수 있다. 그러나 반드시 이와 같이 제한되는 것은 아니고 패킷을 우선순위에 따라 처리하는 동작인 우선순위 대기열 처리(priority queuing)은 중앙처리장치에 의해서 처리될 수도 있다.
따라서 예시된 실시예의 패킷 처리를 위한 네트워크 아키텍처는 패킷 처리를 CPU와 그래픽처리장치에서 동시에 처리할 수 있게 함으로써 고성능을 제공한다. 더욱이, 그래픽처리장치에서 쓰레드 레벨 병렬처리(thread-level parallelism)를 가능하게 하여 고성능을 제공한다. 이러한 이점들 모두는 통신 링크 용량의 전부가 이용될 수 있도록 하여 10 Gbps 이상의 고속 매체 대역폭을 포함하는 고속 매체 응용에 적합하도록 만든다.
본 발명의 다른 양상은 중앙처리장치; 그래픽처리장치; 및 데이터 패킷 처리 어플리케이션을 포함하고, 상기 패킷 처리 어플리케이션은 상기 중앙처리장치에게 패킷 처리와 관련하여 제1 동작을 수행할 것을 지시하고, 상기 그래픽처리장치에게 상기 패킷 처리와 관련하여 제2 동작을 수행할 것을 지시하도록 구성된 시스템에 관한 것이다. 이때 중앙처리장치에 의해서 수행되는 상기 제1 동작은 패킷의 입출력일 수 있고, 그래픽처리장치에 의해서 수행되는 상기 제2 동작은 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색 등의 패킷 처리의 핵심적인 작업일 수 있다.
본 발명의 또 다른 양상은 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터-판독가능 매체로서, 상기 컴퓨터 실행가능 명령어가 실행될 때, 컴퓨팅 시스템에게 수신된 패킷을 중앙처리장치를 이용하여 입력받거나 출력할 것을 지시하고, 그래픽처리장치를 이용하여 상기 패킷에 대해서 프로세싱을 수행할 것을 지시하는 하나 이상의 컴퓨터-판독가능 매체에 관한 것이다.
본 발명의 예시적인 실시예의 메커니즘은 그래픽처리장치에 제공되는 소프트웨어에 의해서 구현되는데, 소프트웨어는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함하지만 반드시 이들로 한정되지는 않는다.
본 발명의 또 다른 양상은 이상에서 설명한 네트워크 아키텍처를 이용해서 패킷을 처리하는 방법에 관계한다. 본 발명의 방법에 의해서 패킷을 처리하는 경우에는, 도 7에 도시된 바와 같이, 입력된 패킷을 중앙처리장치의 메모리로 이동시켜(S11), 패킷 처리와 관련하여 제1 단계 처리를 수행하고(S12), 상기 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시킨다(S13). 이어서 상기 그래픽처리장치에서 패킷 처리와 관련하여 제2단계 처리를 수행하고(S14), 상기 처리된 패킷을 중앙처리장치로 전송하여 출력한다(S15)
다른 구현예로서, 도 8에 도시된 바와 같이, 입력된 패킷을 중앙처리장치의 메모리로 이동시켜(S21), 입력된 패킷의 패킷 처리량을 소정의 임계값과 비교하여(S22), 상기 패킷 처리량이 상기 임계값 미만인 경우에는 S27 단계로 진행하여 패킷을 중앙처리장치에 의해서 처리한다. 한편, 상기 처리량이 상기 임계값 이상인 경우에는 S23 단계로 진행하여 중앙처리장치에 의해서 패킷 처리와 관련하여 제1 단계 처리를 수행하고, 그래픽처리장치에 의한 패킷처리를 위해서 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시킨다(S24). 이어서 상기 그래픽처리장치에서 패킷 처리와 관련하여 제2단계 처리를 수행하고(S25), 상기 처리된 패킷을 중앙처리장치로 전송하여 출력한다(S26)
상기 입력 패킷을 중앙처리장치의 메모리로 이동시키는 단계는 패킷을 커널 레벨 중앙처리장치 메모리(Kernel-level CPU memory로 이동)로 이동시키는 단계와 패킷을 사용자 -레벨 중앙처리장치 메모리(User-levelCPU memory)로 이동시키는 단계를 포함한다.
상기 커널-레벨 중앙처리장치의 메모리로 이동시키는 단계는 거대 패킷 버퍼에 큰 메모리를 할당하여 하나의 버퍼에 여러 개의 패킷을 저장한다. 상기 사용자-레벨 중앙처리장치의 메모리로 이동시키는 단계는 패킷을 선인출 방식(prefetching)으로 처리한다.
중앙처리장치에 의한 패킷 입출력 단계는 패킷들을 모아서 한꺼번에 배치로 처리하고, 상기 그래픽처리장치에 의한 패킷처리는 입력된 패킷들을 병렬처리한다.
중앙처리장치에 의해서 수행되는 상기 제1 단계는 패킷의 입출력일 수 있고, 실시예에 따라서 그래픽처리장치에 의해서 행할 수 있는 패킷 처리의 다른 작업들도 포함될 수 있다. 그래픽처리장치에 의해서 수행되는 상기 제2단계 처리는 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색단계 등일 수 있으나, 이러한 단계 중 일부는 중앙처리장치에 의해서 처리할 수도 있다.
상기 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시키는 단계에서는 패키의 내용 전체를 복사하는 대신에 라우팅 테이블 룩업에 필요한 일부분 만을 복사할 수 있다. 예를 들어, 패킷들이 호스트 메모리로 올라왔을 때 IP 테이블 룩업과 같은 경우, 패킷의 내용을 모두 GPU에 복사하지 않고, 일부분만 (예컨대, IP 헤더의 목적지 IP 주소 부분 (IPv4= 4바이트, IPv6=16바이트)만) 복사할 수 있다. 이러한 구성에 의해서 라우팅 테이블 룩업과 같은 특정 IP 처리 단계에서, 호스트 메모리에서 GPU로 복사하는 데이터 양을 줄일 수 있어, 패킷 내용을 모두 복사하는 방식에 비해서, 짧은 시간에 더 많은 오퍼레이션을 할 수 있다. 일례로, 1500 byte의 IP 패킷들이 입력되는 경우 1500 바이트 전체를 GPU로 이동시키는 것에 비해서, 본 발명에서와 같이 패킷의 양이 4 바이트가 되면 시스템의 성능을 현저하게 향상시킬 수 있다.
이상에서 본 발명의 바람직한 구현예를 예로 들어 상세하게 설명하였으나, 이러한 설명은 단순히 본 발명의 예시적인 실시예를 설명 및 개시하는 것이다. 당업자는 본 발명의 범위 및 정신으로부터 벗어남이 없이 상기 설명 및 첨부 도면으로부터 다양한 변경, 수정 및 변형예가 가능함을 용이하게 인식할 것이며, 그러한 변형이나 변경은 본 발명의 특허청구범위에 속하는 것으로 해석되어야 한다.
10, 10‘ : 비균등 메모리 아키텍처 (NUMA)
11 : 중앙처리장치 12: 입출력 허브 13: 그래픽처리장치
14 : 네트워크 인터페이스 제어기 15: 랜덤 액세스 메모리
110: 패킷 처리 어플리케이션쉐이더
120: 그래픽처리장치 가속화 프레임워크
30: 프리-쉐이더 50: 포스트-쉐이더 70: 쉐이더
130: 패킷 API 140: 패킷 입출력(I/O) 엔진
150: 네트워크 인터페이스 제어기(NIC)

Claims (24)

  1. 그래픽처리장치(Graphic Processing Unit)가 장착된 네트워크 아키텍처에 있어서, 패킷 처리와 관련하여 패킷의 입출력 제1 동작을 수행하도록 구성된 중앙처리장치; 및
    입출력 허브를 통해서 상기 중앙처리장치와 연결되고, 상기 패킷 처리와 관련하여 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색가운데 하나 이상인 제2 동작을 수행하도록 구성된 그래픽처리장치, 및
    입력되는 전체 패킷에 대한 패킷 데이터를 저장하기 위한 두 개의 거대 패킷 버퍼(huge packet buffer)를 포함하고, 하나의 거대 패킷 버퍼는 메타데이터를 위한 버퍼이고, 다른 하나의 거대 패킷 버퍼는 패킷 데이터를 저장하기 위한 버퍼인 네트워크 아키텍처.
  2. 삭제
  3. 제1항에 있어서, 상기 네트워크 아키텍처의 그래픽처리장치는 입력되는 패킷들을 병렬처리하도록 병렬 방식(parallel manner)으로 구현되고, 하드웨어 레벨, 장치 드라이버(device driver) 레벨 및 어플리케이션 레벨에서 배치 처리(batch processing)를 행하도록 구성되는 것을 특징으로 하는 네트워크 아키텍처.
  4. 제 1항에 있어서, 상기 네트워크 아키텍처는 상기 중앙처리장치로부터 패킷 데이터를 수신할 때 선인출(prefetch) 방식으로 입력받도록 되어 있어, 그래픽처리장치의 장치 드라이버가 패킷을 처리함과 동시에 다음 패킷의 패킷 기술자(packet descriptor) 및 패킷 데이터(packet data)를 중앙처리장치의 캐시에 병렬로 선인출하도록 되어 있는 네트워크 아키텍처.
  5. 제1항에 있어서, 상기 그래픽처리장치의 어플리케이션은
    수신큐의 패킷들을 그래픽처리장치에 입력 데이터로 제공하기 위해 데이터 구조를 형성하는 프리-쉐이더(pre-shader);
    중앙처리장치의 호스트메모리로부터 입력데이터를 복사하여 패킷을 처리한 후 그 결과를 호스트 메모리로 전송하는 쉐이더(shader); 및
    청크 내의 패킷들을 패킷 전송을 위해서 목적지 포트로 분할하는 포스트-쉐이더(post-shader)를 포함하는 네트워크 아키텍처.
  6. 제1항에 있어서, 상기 중앙처리장치의 스레드는 그래픽장치에 의한 패킷처리의 가속화를 위해서 같은 노드에서 그래픽처리장치하고만 통신하는 매스터 스레드(master thread)와 패킷입출력을 담당하고 매스터 스레드로 하여금 그래픽처리장치와의 통신을 위한 프록시로 기능하도록 하는 워커 스레드(worker thread)로 구분되어 있는 것을 특징으로 하는 네트워크 아키텍처.
  7. 제6항에 있어서, 상기 네트워크 아키텍처는 워커 스레드에서 청크 처리를 파이프라이닝해서 다수의 패킷들을 일괄적으로 처리하도록 되어 있는 것을 특징으로 하는 네트워크 아키텍처.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 중앙처리장치; 그래픽처리장치; 및 데이터 패킷 처리 어플리케이션을 포함하고, 상기 패킷 처리 어플리케이션은 상기 중앙처리장치에게 패킷 처리와 관련하여 패킷의 입출력인 제1 동작을 수행할 것을 지시하고, 상기 그래픽처리장치에게 상기 패킷 처리와 관련하여 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색가운데 하나 이상인 제2 동작을 수행할 것을 지시하도록 구성된 제 1항 및 제3항 내지 제7항 중 어느 하나의 항의 네트워크 아키텍처를 포함하는 시스템.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 입력된 패킷을 중앙처리장치의 메모리로 이동시켜 패킷 처리와 관련하여 패킷의 입출력인 제1 단계 처리를 수행하는 단계;
    상기 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시키는 단계;
    상기 그래픽처리장치에서 패킷 처리와 관련하여 IP 테이블 룩업, IPsec 암호화/복호화, 우선순위 대기열 처리, 오픈플로우 매칭 테이블 룩업, 침입 탐지 문자열 검색단계 가운데 하나 이상인 제2단계 처리를 수행하는 단계;
    상기 처리된 패킷을 중앙처리장치로 전송하여 출력하는 단계를 포함하고,
    여기서 상기 입력 패킷을 중앙처리장치의 메모리로 이동시키는 단계는 패킷을 커널 레벨 중앙처리장치 메모리(Kernel-level CPU memory로 이동)로 이동시키는 단계와 패킷을 사용자 -레벨 중앙처리장치 메모리(User-level CPU memory)로 이동시키는 단계를 포함하는 것을 특징으로 하는 패킷 처리 방법.
  16. 제15항에 있어서, 상기 방법이
    패킷 데이터 입력시 패킷 처리량을 소정의 임계값과 비교하여 상기 패킷 처리량이 상기 임계값 미만인 경우에는 패킷을 중앙처리장치에서 처리하고, 상기 패킷 처리량이 상기 임계값 이상인 경우에는 그래픽처리장치에 의한 패킷처리를 위해서 패킷데이터를 그래픽장치로 전송하는 단계를 추가로 포함하는 패킷 처리 방법.
  17. 삭제
  18. 제15항에 있어서, 상기 커널-레벨 중앙처리장치의 메모리로 이동시키는 단계는 거대 패킷 버퍼에 큰 메모리를 할당하여 하나의 버퍼에 여러 개의 패킷을 저장하는 단계를 포함하는 것을 특징으로 하는 패킷 처리 방법.
  19. 제15항에 있어서, 상기 사용자-레벨 중앙처리장치의 메모리로 이동시키는 단계는 패킷을 선인출 방식(prefetching)으로 처리하는 과정을 포함하는 패킷 처리 방법.
  20. 제15항에 있어서, 상기 중앙처리장치에 의한 패킷 입출력 단계는 패킷들을 모아서 한꺼번에 배치로 처리하는 단계임을 특징으로 하는 패킷 처리 방법.
  21. 제15항에 있어서, 상기 그래픽처리장치에 의한 패킷처리는 입력된 패킷들 병렬처리하는 단계임을 특징으로 하는 패킷 처리 방법.
  22. 삭제
  23. 삭제
  24. 제15항에 있어서, 상기 중앙처리장치의 메모리로부터 그래픽처리장치의 메모리로 패킷을 이동시키는 단계는 패키의 내용 전체를 복사하는 대신에 라우팅 테이블 룩업에 필요한 일부분 만을 복사하는 단계임을 특징으로 하는 패킷 처리 방법.
KR1020100083088A 2010-08-26 2010-08-26 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법 KR101150928B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100083088A KR101150928B1 (ko) 2010-08-26 2010-08-26 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100083088A KR101150928B1 (ko) 2010-08-26 2010-08-26 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법

Publications (2)

Publication Number Publication Date
KR20120019711A KR20120019711A (ko) 2012-03-07
KR101150928B1 true KR101150928B1 (ko) 2012-05-29

Family

ID=46128534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100083088A KR101150928B1 (ko) 2010-08-26 2010-08-26 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법

Country Status (1)

Country Link
KR (1) KR101150928B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101770038B1 (ko) 2014-12-24 2017-08-21 인텔 코포레이션 네트워킹 디바이스에 대한 전력 및 성능을 관리하기 위한 기술
US10795840B2 (en) 2018-11-12 2020-10-06 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing
US11455703B2 (en) 2017-11-06 2022-09-27 SK Hynix Inc. Semiconductor device and semiconductor system including the same

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101429682B1 (ko) * 2012-09-27 2014-08-13 주식회사 시큐아이 네트워크 장비 및 그것의 동작 방법
KR101435500B1 (ko) * 2012-10-09 2014-09-11 주식회사 시큐아이 프록시 장치를 제어하는 방법 및 프록시 장치
KR101537996B1 (ko) * 2012-10-17 2015-07-23 한국전자통신연구원 트래픽 상황에 따른 cpu와 gpu간의 로드 밸런스를 가지는 침입 탐지 장치 및 방법
US9342366B2 (en) 2012-10-17 2016-05-17 Electronics And Telecommunications Research Institute Intrusion detection apparatus and method using load balancer responsive to traffic conditions between central processing unit and graphics processing unit
KR101374533B1 (ko) * 2013-04-17 2014-03-14 주식회사 엔써티 대용량 데이터에 대한 고성능 복제 및 백업 시스템과, 고성능 복제 방법
KR102232900B1 (ko) 2014-10-02 2021-03-26 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 시스템, 최적 gpu를 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR101590098B1 (ko) * 2015-01-27 2016-01-29 홍익대학교 산학협력단 버퍼링 장치 및 방법
US10462059B2 (en) 2016-10-19 2019-10-29 Intel Corporation Hash table entries insertion method and apparatus using virtual buckets
KR102461039B1 (ko) * 2021-02-24 2022-11-01 성균관대학교산학협력단 상용 이더넷 장비 기반의 gpu 내부 패킷 입출력 방법 및 장치
KR102353036B1 (ko) * 2021-08-30 2022-01-20 주식회사 페블 그래픽 메모리 기반의 2차원 그래픽 명령어를 처리하는 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242710A1 (en) * 2005-03-08 2006-10-26 Thomas Alexander System and method for a fast, programmable packet processing system
US7383352B2 (en) * 2002-05-13 2008-06-03 Nvidia Corporation Method and apparatus for providing an integrated network of processors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383352B2 (en) * 2002-05-13 2008-06-03 Nvidia Corporation Method and apparatus for providing an integrated network of processors
US20060242710A1 (en) * 2005-03-08 2006-10-26 Thomas Alexander System and method for a fast, programmable packet processing system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101770038B1 (ko) 2014-12-24 2017-08-21 인텔 코포레이션 네트워킹 디바이스에 대한 전력 및 성능을 관리하기 위한 기술
US11455703B2 (en) 2017-11-06 2022-09-27 SK Hynix Inc. Semiconductor device and semiconductor system including the same
US10795840B2 (en) 2018-11-12 2020-10-06 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing
US11321256B2 (en) 2018-11-12 2022-05-03 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing

Also Published As

Publication number Publication date
KR20120019711A (ko) 2012-03-07

Similar Documents

Publication Publication Date Title
KR101150928B1 (ko) 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법
US10841245B2 (en) Work unit stack data structures in multiple core processor system for stream data processing
Han et al. PacketShader: a GPU-accelerated software router
US8839267B2 (en) Method and middleware for efficient messaging on clusters of multi-core processors
US8250164B2 (en) Query performance data on parallel computer system having compute nodes
Liao et al. A new server I/O architecture for high speed networks
WO2019014265A1 (en) DATA PROCESSING UNIT FOR CALCULATION NODES AND STORAGE NODES
US8316220B2 (en) Operating processors over a network
WO2014166404A1 (zh) 一种网络数据包处理方法和装置
US9965187B2 (en) Near-memory data reorganization engine
KR101908341B1 (ko) Cpu와 gpu간에 동기화를 가속화하여 수행하는 데이터 프로세서
WO2022055627A1 (en) Dynamic offline end-to-end packet processing based on traffic class
KR20240004315A (ko) Smartnic들 내의 네트워크 연결형 mpi 프로세싱 아키텍처
Ren et al. irdma: Efficient use of rdma in distributed deep learning systems
Jang et al. A low-overhead networking mechanism for virtualized high-performance computing systems
Potluri et al. Mvapich2-mic: A high performance mpi library for xeon phi clusters with infiniband
Chu et al. Dynamic kernel fusion for bulk non-contiguous data transfer on GPU clusters
Chu et al. High-performance adaptive MPI derived datatype communication for modern Multi-GPU systems
US11789790B2 (en) Mechanism to trigger early termination of cooperating processes
CN109743350B (zh) 一种科学计算应用影像区交换通信模式的卸载实现方法
US20220224605A1 (en) Simulating network flow control
Jung et al. Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet
CN116136790A (zh) 任务处理方法和装置
Ortiz et al. Network interfaces for programmable NICs and multicore platforms
Wong et al. Push-Pull Messaging: a high-performance communication mechanism for commodity SMP clusters

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180123

Year of fee payment: 6

R401 Registration of restoration
FPAY Annual fee payment

Payment date: 20180425

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191226

Year of fee payment: 8

R401 Registration of restoration