KR101977850B1 - 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 - Google Patents

네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 Download PDF

Info

Publication number
KR101977850B1
KR101977850B1 KR1020170118551A KR20170118551A KR101977850B1 KR 101977850 B1 KR101977850 B1 KR 101977850B1 KR 1020170118551 A KR1020170118551 A KR 1020170118551A KR 20170118551 A KR20170118551 A KR 20170118551A KR 101977850 B1 KR101977850 B1 KR 101977850B1
Authority
KR
South Korea
Prior art keywords
accelerator
data
application
setting
received
Prior art date
Application number
KR1020170118551A
Other languages
English (en)
Other versions
KR20190030915A (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 KR1020170118551A priority Critical patent/KR101977850B1/ko
Publication of KR20190030915A publication Critical patent/KR20190030915A/ko
Application granted granted Critical
Publication of KR101977850B1 publication Critical patent/KR101977850B1/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/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • H04L67/2861
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신하는 수신부, 상기 수신된 데이터가 상기 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단부, 어플리케이션 및 운영체계에 기초하여 상기 가속기를 설정(Set up)하는 메인 가속기 설정부, 상기 설정된 가속기를 활성화시켜 상기 수신된 데이터를 처리하는 데이터 처리부, 상기 처리된 데이터의 전송 여부를 상기 어플리케이션 및 상기 운영체계의 커널을 기초로 결정하는 결정부를 포함할 수 있다. 이를 통해 간단한 처리만을 필요로 하는 데이터인 경우 가속기에서 처리하여 시스템 성능을 향상시킬 수 있는 효과를 가진다. 또한 가속기 설정을 통해 커널에서의 복잡한 패킷처리 및 프로세서의 데이터 엑세스를 줄여 시스템의 성능을 향상시킬 수 있는 효과를 가진다. 또한 가속화 기술을 재구성 하드웨어 기반으로 제공하여 소프트웨어 기반의 방법에 비해 시스템 성능을 향상시킬 수 있는 효과를 가진다.

Description

네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법{Application offloading device and method for network interface}
본 발명은 어플리케이션 오프로딩에 관한 것으로, 더욱 상세하게는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법에 관한 것이다.
네트워크에 연결되는 노드의 수가 증가하고, 사물인터넷(IoT : Internet of Thing) 환경이 활성화됨에 따라, 패킷화 되어 입력되는 데이터들은 단순한 형태가 많아지고 있다. 사물인터넷 소자의 기능상 실제 호스트와 연결 및 단순 데이터를 주고받는 경우가 많게 되는데, 이 때 패킷을 역패킷화(Depacketization) 후에 매우 간단한 연산만을 수행하기 위한 여러 과정을 거치는 것은 호스트 시스템의 심각한 성능 저하를 가져오게 된다. 또한 네트워크 속도가 100Gbps 시대를 앞두고 있음에 따라 NIC에 다양한 기능이 포함될 수밖에 없다.
기존에는 데이터를 컴퓨터 시스템의 버스를 통해 네트워크 인터페이스 컨트롤러(NIC : Network Interface Controller)로 유입하여 시스템 메모리의 버퍼 영역에 저장한다. 저장된 데이터는 프로세서의 인터럽트 처리와 커널 처리 및 어플리케이션 영역으로의 처리와 이동을 통해 해당 연산을 수행할 수 있다. 매우 간단한 연산이 필요한 경우에도 모든 데이터는 어플리케이션의 형태와 그 요구와는 상관없이 어플리케이션 영역으로 이동되는 많은 데이터 이동이 필요하다. 이 과정은 패킷 형태로 유입되는 데이터에 대해서 패킷 버퍼 영역으로 이동하고, 패킷을 까는(Depecketization) 데에 필요한 연산을 수행하기 위한 커널 영역으로의 이동을 포함한다. 이는 어플리케이션 영역의 메모리로 이동하는 과정이 모두 필요하기 때문이다. 이에 이 과정은 매우 복잡하고 많은 메모리 간의 데이터 이동을 포함하므로, 단순한 데이터의 저장 또는 연산을 수행하는 데에 많은 컴퓨팅 리소스를 사용하게 된다.
기존 기술은 주로 헤더의 데이터 처리를 NIC에서 하드웨어적으로 가속화하는 TCP/IP 헤더의 처리 일부분을 위한 오프로딩 및 페이로드 영역에 있는 특정 프로토콜과 연산을 처리하기 위한 네트워크 프로세서 기반의 소프트웨어 방식을 주로 사용한다. 다만 이러한 방식은 (1) 하드웨어 기반의 방식이 아니기 때문에 성능이 만족스럽지 못하다는 한계가 있다. 또한 (2) 수행 도중에 가속기의 기능을 바꾸어야할 필요가 있는 경우에 대한 해결책이 없는 한계가 있다. 또한 (3) 매우 간단한 처리만을 필요로 하는 페이로드 데이터인 경우에도 어플리케이션의 요구에 상관없이 어플리케이션 영역으로 데이터 이동이 필요하다. 이에 네트워크 노드의 숫자가 늘어남에 따라 더 많은 네트워크 노드들이 연결될 시에 늘어나는 단순한 페이로드 데이터 처리 방법이 고려되지 않고 있다.
미국등록특허공보 제8103785호 미국등록특허공보 제7930422호
이에 본 발명은 상기와 같은 제반 사항을 고려하여 제안된 것으로, 간단한 처리만을 필요로 하는 데이터인 경우 가속기에서 처리하여 시스템 성능을 향상시키는 것을 목적으로 한다.
또한 가속기를 시스템 동작 도중에 설정함으로써 커널에서의 복잡한 패킷처리 및 프로세서의 데이터 엑세스를 줄여 시스템의 성능을 향상시키는 것을 목적으로 한다.
또한 가속화 기술을 재구성 하드웨어 기반으로 제공하여 소프트웨어 기반의 방법에 비해 시스템 성능을 향상시키는 것을 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자가 명확하게 이해할 수 있을 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치는 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신하는 수신부, 수신된 데이터가 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단부, 어플리케이션 및 운영체계에 기초하여 가속기를 설정(Set up)하는 메인 가속기 설정부, 설정된 가속기를 활성화시켜 수신된 데이터를 처리하는 데이터 처리부, 처리된 데이터의 전송 여부를 어플리케이션 및 운영체계의 커널을 기초로 결정하는 결정부를 포함할 수 있다.
메인 가속기 설정부는 설정된 가속기 정보를 상기 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함할 수 있다.
메인 가속기 설정부는 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정하는 특정 데이터 설정부, 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성하는 정보 생성부, 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정하는 서브 가속기 설정부를 포함할 수 있다.
정보 생성부는 어플리케이션을 사용하는 사용자의 설정에 따라 시스템 프로세서 내 소프트웨어에 의해 자동으로 생성되거나 또는 어플리케이션의 사용자가 직접 생성할 수 있다.
메인 가속기 설정부는 외부 네트워크로부터 수신된 어플리케이션 데이터를 특정 가속할 경우 수신부 이전에 수행할 수 있다.
결정부는 생성된 특정 데이터 정보와 처리된 데이터를 비교하여 처리된 데이터가 생성된 특정 데이터 정보와 일치할 경우 처리된 데이터를 시스템 내부 또는 외부로 전송하고, 처리된 데이터가 생성된 특정 데이터 정보와 일치하지 않을 경우 처리된 데이터를 전송하지 않을 수 있다.
이 때 처리된 데이터를 시스템 내부 또는 외부로의 전송은 처리된 데이터 내 패킷에 특정한 문자열이 섞여있을 경우 룰셋(Rule set)에 따라 매칭 결과만을 전송하거나, 또는 소켓(Socket) 통신의 경우 해당 소켓의 개폐 여부를 확인한 후 전송하거나, 또는 시스템 버스로의 전송을 통해 주 메모리(Main memory)의 특정 영역에 저장하거나, 또는 시스템 버스로의 전송을 통해 대용량 저장소(Mass storage)에 저장할 수 있다.
주 메모리의 특정 영역은 어플리케이션을 사용하는 사용자 설정에 따라 선택이 가능할 수 있다.
수신부 내지 결정부는 외부 네트워크로부터 데이터가 수신될 때마다 반복될 수 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법은 메인 가속기 설정부가 가속기를 설정(Set up)하는 메인 가속기 설정 단계, 수신부가 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신하는 수신 단계, 판단부가 수신된 데이터가 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단 단계, 데이터 처리부는 설정된 가속기를 활성화시켜 수신된 데이터를 처리하는 데이터 처리 단계, 결정부는 처리된 데이터의 전송 여부를 어플리케이션 및 운영체계의 커널을 기초로 결정하는 결정 단계를 포함할 수 있다.
수신 단계는 수신된 어플리케이션 데이터를 기초로 가속기를 재설정하는 단계를 더 포함할 수 있다.
메인 가속기 설정 단계는 설정된 가속기 정보를 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함할 수 있다.
메인 가속기 설정 단계는 특정 데이터 설정부가 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정하는 특정 데이터 설정 단계, 정보 생성부가 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성하는 정보 생성 단계, 서브 가속기 설정부가 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정하는 서브 가속기 설정 단계를 포함할 수 있다.
정보 생성 단계는 어플리케이션을 사용하는 사용자의 설정에 따라 시스템 프로세서 내 소프트웨어에 의해 자동으로 생성되거나 또는 어플리케이션의 사용자가 직접 생성할 수 있다.
결정 단계는 생성된 특정 데이터 정보와 처리된 데이터를 비교하여 처리된 데이터가 생성된 특정 데이터 정보와 일치할 경우 처리된 데이터를 시스템 내부 또는 외부로 전송하고, 처리된 데이터가 생성된 특정 데이터 정보와 일치하지 않을 경우 처리된 데이터를 전송하지 않을 수 있다.
이 때 처리된 데이터를 시스템 내부 또는 외부로의 전송은 처리된 데이터 내 패킷에 특정한 문자열이 섞여있을 경우 룰셋(Rule set)에 따라 매칭 결과만을 전송하거나, 또는 소켓(Socket) 통신의 경우 해당 소켓의 개폐 여부를 확인한 후 전송하거나, 또는 시스템 버스로의 전송을 통해 주 메모리(Main memory)의 특정 영역에 저장하거나, 또는 시스템 버스로의 전송을 통해 대용량 저장소(Mass storage)에 저장할 수 있다.
주 메모리의 특정 영역은 어플리케이션을 사용하는 사용자 설정에 따라 선택이 가능할 수 있다.
수신 단계 내지 결정 단계는 외부 네트워크로부터 데이터가 수신될 때마다 반복될 수 있다.
이상에서 설명한 바와 같은 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법에 따르면,
첫째, 간단한 처리만을 필요로 하는 데이터인 경우 가속기에서 처리하여 시스템 성능을 향상시킬 수 있는 효과를 가진다.
둘째, 가속기를 시스템 동작 도중에 설정함으로써 커널에서의 복잡한 패킷처리 및 프로세서의 데이터 엑세스를 줄여 시스템의 성능을 향상시킬 수 있는 효과를 가진다.
셋째, 가속화 기술을 재구성 하드웨어 기반으로 제공하여 소프트웨어 기반의 방법에 비해 시스템 성능을 향상시킬 수 있는 효과를 가진다.
도 1은 본 발명의 일 실시예에 따른 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치를 나타낸 블록도.
도 2는 도 1에서 메인 가속기 설정부를 나타낸 블록도.
도 3은 본 발명의 일 실시예에 따른 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법을 나타낸 순서도.
도 4는 도 3에서 메인 가속기 설정 단계를 나타낸 순서도.
도 5는 본 발명의 일 실시예에 따른 특정 어플리케이션에 의해 NIC 내의 가속기를 설정하는 것을 설명하기 위한 블록도.
도 6은 본 발명의 일 실시예에 따른 NIC 내에 설정된 가속기의 동작을 설명하기 위한 블록도.
도 7은 본 발명의 일 실시예에 따른 NIC 내에 설정된 가속기로부터 처리된 데이터의 주 메모리 저장을 설명하기 위한 블록도.
도 8은 본 발명의 일 실시예에 따른 오프로딩된 결과물을 어플리케이션에서 이용하는 경우를 설명하기 위한 블록도.
도 9는 본 발명의 일 실시예에 따른 오프로딩된 결과물의 DMA(Direct memory access) 등을 이용한 대용량 저장소 저장을 설명하기 위한 블록도.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. 본 발명의 특징 및 이점들은 첨부 도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 발명자가 그 자신의 발명의 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 할 것이다. 또한 본 발명과 관련된 공지 기능 및 그 구성에 대한 구체적인 설명은 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 구체적인 설명을 생략하였음에 유의해야할 것이다.
도 1은 본 발명의 일 실시예에 따른 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치를 나타낸 블록도이고, 도 2는 도 1에서 메인 가속기 설정부(300)를 나타낸 블록도이다. 도 1 및 도 2를 참조하면 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치는 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신하는 수신부(100), 수신된 데이터가 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단부(200), 어플리케이션 및 운영체계에 기초하여 가속기를 설정(Set up)하는 메인 가속기 설정부(300), 설정된 가속기를 활성화시켜 수신된 데이터를 처리하는 데이터 처리부(400), 처리된 데이터의 전송 여부를 어플리케이션 및 운영체계의 커널을 기초로 결정하는 결정부(500)를 포함할 수 있다.
메인 가속기 설정부(300)는 설정된 가속기 정보를 상기 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함할 수 있다.
메인 가속기 설정부(300)는 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정하는 특정 데이터 설정부(310), 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성하는 정보 생성부(330), 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정하는 서브 가속기 설정부(350)를 포함할 수 있다.
정보 생성부(330)는 어플리케이션을 사용하는 사용자의 설정에 따라 시스템 프로세서 내 소프트웨어에 의해 자동으로 생성되거나 또는 어플리케이션의 사용자가 직접 생성할 수 있다.
메인 가속기 설정부(300)는 외부 네트워크로부터 수신된 어플리케이션 데이터를 특정 가속할 경우 수신부(100) 이전에 수행할 수 있다.
결정부(500)는 생성된 특정 데이터 정보와 처리된 데이터를 비교하여 처리된 데이터가 생성된 특정 데이터 정보와 일치할 경우 처리된 데이터를 시스템 내부 또는 외부로 전송할 수 있다. 반면 처리된 데이터가 생성된 특정 데이터 정보와 일치하지 않을 경우 처리된 데이터를 전송하지 않을 수 있다.
이 때 처리된 데이터를 시스템 내부 또는 외부로의 전송은 처리된 데이터 내 패킷에 특정한 문자열이 섞여있을 경우 룰셋(Rule set)에 따라 매칭 결과만을 전송할 수 있다. 또는 소켓(Socket) 통신의 경우 해당 소켓의 개폐 여부를 확인한 후 처리된 데이터를 전송할 수 있다. 또는 시스템 버스로의 전송을 통해 처리된 데이터를 주 메모리(Main memory)의 특정 영역에 저장할 수 있다. 또는 시스템 버스로의 전송을 통해 처리된 데이터를 대용량 저장소(Mass storage)에 저장할 수 있다.
주 메모리의 특정 영역은 어플리케이션을 사용하는 사용자 설정에 따라 선택이 가능할 수 있다.
수신부(100) 내지 결정부(500)는 외부 네트워크로부터 데이터가 수신될 때마다 반복될 수 있다.
본 발명을 보다 구체적으로 설명하면 다음과 같다.
도 1 및 도 2를 참조하면 본 발명은 수신부(100) 내지 결정부(500)를 포함하여 구성된다. 이는 설정(Set up) 구조 및 임베디드 코어를 내장할 수 있다.
NIC 내에서는 어플리케이션 데이터를 받아 가속기(Accelerator) 내에 기 설정된 필터를 가지고 어플리케이션의 데이터의 헤더 데이터와 페이로드 데이터를 분석하여 이를 가속기에서 처리할 수 있는지 여부를 판단할 수 있다. 만약 어플리케이션 데이터가 가속기에서 처리할 수 있을 경우, 어플리케이션 데이터는 가속기를 설정하는 데에 사용할 수 있다.
보다 상세하게는 어플리케이션 데이터의 패킷 내 헤더 데이터와, 어플리케이션 데이터인 페이로드 데이터가 가속기에서 처리할 수 있는 형태일 경우 가속기를 설정하고, 설정한 가속기를 통해 데이터를 처리할 수 있다. 가속기에서 처리할 수 있는 형태는 특정 헤더 데이터를 포함하는 경우 또는 호스트 프로세서의 연산이 필요하지 않는 경우 또는 오프로딩이 필요한 어플리케이션에 특화된 데이터 연산 처리의 경우를 포함할 수 있다. 이는 본 발명이 단순 데이터 연산만이 요구되는 경우에는 항상 어플리케이션 메모리 영역으로 데이터를 이동하지 않고, 가속기에서 해당 데이터를 처리할 수 있다는 것을 의미한다.
가속기를 설정하는 데에 사용 가능한 어플리케이션 데이터에서 가속화시킬 부분(특정 데이터)은 어플리케이션을 사용하는 사용자에 의해 설정될 수 있다. 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성할 수 있다.
특정 데이터 정보는 시스템 상에 상주하는 시스템 소프트웨어에 의해 자동으로 생성되거나 또는 사전에 어플리케이션의 사용자가 직접 생성할 수 있다. 특정 데이터 정보 생성 방법은 어플리케이션을 사용하는 사용자의 설정에 따라 변경 가능하다.
어플리케이션 데이터가 가속기에서 처리할 수 있는 것으로 판단될 경우, 생성된 특정 데이터 정보는 시스템 버스를 통해 프로세서의 메모리에서 가속기 내의 메모리에 잠시 저장되어 가속기를 필요한 설정 구조로 완전히 설정할 수 있다. 설정된 가속기는 활성화되어 어플리케이션 데이터를 처리할 수 있다.
어플리케이션 데이터는 시스템 동작 초기에 가속기를 거치지 않을 수 있다. 또는 어플리케이션 데이터는 특정 데이터를 미리 가속기 내 메모리에 저장하여 특정 가속을 초기에 수행할 수 있다.
또는 어플리케이션은 시스템 동작 도중(패킷 형태의 어플리케이션 데이터가 가속기로 전송되는 도중) 어플리케이션과 운영체계에 기초하여 가속기 구조와 기능을 바꿀 수 있다. 이는 어플리케이션 데이터에 따라 가속기가 다른 역할을 할 수 있다는 것을 의미할 수 있다.
가속기 설정에는 설정 가능 구조의 구성화(configuration) 및 이와 연관된 프로세서 내 관련 임베디드 코어 프로세서 등의 시스템 온 칩의 코어(Core)에 프로그램을 업로드(Upload)하는 것도 포함되어있다. 패킷 내의 데이터 특징 값에 대해 거리 등을 연산하는 시스템 수준에서의 연산을 수행할 수 있다.
설정된 가속기는 데이터를 처리하는 데에 이용된다. 처리된 데이터의 경우 어플리케이션과 운영체계의 커널을 기초로 전송 여부가 결정된다. 도 1에 도시된 바와 같이 처리된 데이터는 다시 외부로 전송(Tx)하거나, 시스템 버스를 통해 시스템 내부로 전송하거나 또는 전송할 필요가 없다고 결정될 경우 드롭(Drop)되는 경우를 포함할 수 있다.
보다 상세하게는 처리된 데이터와 생성된 특정 데이터 정보를 비교하여 처리된 데이터와 생성된 특정 데이터 정보가 일치할 경우, 처리된 데이터를 시스템 내부 또는 외부로 전송할 수 있다. 반면 처리된 데이터와 생성된 특정 데이터 정보가 일치하지 않을 경우, 처리된 데이터를 전송하지 않을 수 있다.
예를 들어 더 이상 어플리케이션 데이터가 필요 없거나 또는 어플리케이션 데이터가 수신될 때 시스템에 해가 될 수 있는 판단이 있을 경우, 어플리케이션 데이터를 프로세서 내 어플리케이션이 접근하지 못하게 하기 위해 드롭(Drop)한다.
반면 어플리케이션 데이터를 다른 호스트(Host)로 보내야 하는 작업을 수행하기 위해 가속기가 설정된 경우는 해당 어플리케이션 데이터 패킷을 해당 어플리케이션에서 사용하지 않고 시스템 내부가 아닌 외부로 패킷화하여 전송하도록 결정한다.
도 3은 본 발명의 일 실시예에 따른 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법을 나타낸 순서도이고, 도 4는 도 3에서 메인 가속기 설정 단계를 나타낸 순서도이다. 도 3 및 도 4를 참조하면 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법은 메인 가속기 설정부(300)가 가속기를 설정(Set up)할 수 있다(S100). S100은 설정된 가속기 정보를 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함할 수 있다.
S100은 S110 내지 S150을 포함한다.
특정 데이터 설정부(310)가 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정할 수 있다(S110).
정보 생성부(330)가 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성할 수 있다(S130). S130은 어플리케이션을 사용하는 사용자의 설정에 따라 시스템 프로세서 내 소프트웨어에 의해 자동으로 생성되거나 또는 어플리케이션의 사용자가 직접 생성할 수 있다.
서브 가속기 설정부(350)가 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정할 수 있다(S150).
수신부(100)가 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신할 수 있다(S200). S200은 수신된 어플리케이션 데이터를 기초로 가속기를 재설정하는 단계를 더 포함할 수 있다.
판단부(200)가 수신된 데이터가 가속기에서 처리할 수 있는 형태인지 여부를 판단할 수 있다(S300).
데이터 처리부(300)는 설정된 가속기를 활성화시켜 수신된 데이터를 처리할 수 있다(S400).
결정부(500)는 처리된 데이터의 전송 여부를 어플리케이션 및 운영체계의 커널을 기초로 결정할 수 있다(S500). S500은 생성된 특정 데이터 정보와 처리된 데이터를 비교하여 처리된 데이터가 생성된 특정 데이터 정보와 일치할 경우 처리된 데이터를 시스템 내부 또는 외부로 전송할 수 있다. 반면 처리된 데이터가 생성된 특정 데이터 정보와 일치하지 않을 경우 처리된 데이터를 전송하지 않을 수 있다.
이 때 처리된 데이터를 시스템 내부 또는 외부로의 전송은 처리된 데이터 내 패킷에 특정한 문자열이 섞여있을 경우 룰셋(Rule set)에 따라 매칭 결과만을 전송할 수 있다. 또는 소켓(Socket) 통신의 경우 해당 소켓의 개폐 여부를 확인한 후 처리된 데이터를 전송할 수 있다. 또는 시스템 버스로의 전송을 통해 처리된 데이터를 주 메모리(Main memory)의 특정 영역에 저장할 수 있다. 또는 시스템 버스로의 전송을 통해 처리된 데이터를 대용량 저장소(Mass storage)에 저장할 수 있다.
주 메모리의 특정 영역은 어플리케이션을 사용하는 사용자 설정에 따라 선택이 가능할 수 있다.
S100 내지 S500은 외부 네트워크로부터 데이터가 수신될 때마다 반복될 수 있다.
도 5는 본 발명의 일 실시예에 따른 특정 어플리케이션에 의해 NIC 내의 가속기를 설정하는 것을 설명하기 위한 블록도이고, 도 6은 본 발명의 일 실시예에 따른 NIC 내에 설정된 가속기의 동작을 설명하기 위한 블록도이고, 도 7은 본 발명의 일 실시예에 따른 NIC 내에 설정된 가속기로부터 처리된 데이터의 주 메모리 저장을 설명하기 위한 블록도이다. 도 5 내지 도 7을 참조하면 프로세서 내 특정 어플리케이션은 시스템 버스(System bus)를 통해 설정(Set up) 정보를 포함하는 어플리케이션 데이터를 NIC 내의 가속기로 보내어 가속기를 설정할 수 있다. 설정된 가속기는 NIC 내에서 어플리케이션 오프로딩 처리를 수행할 수 있다. 이 때 도 6에서 수행되는 오프로딩 처리는 다양할 수 있다. 예를 들어 어플리케이션 패킷에 특정 문자열이 섞여있는 경우에는 룰셋(Rule set)에 따라 매칭 결과만을 시스템 버스에 전달할 수 있다. 또는 소켓 통신의 경우에는 해당 소켓이 열렸는지를 확인하고 그 결과를 시스템 버스에 전달할 수 있다. 또는 도 7에 도시된 바와 같이 시스템 버스를 통해 설정된 가속기의 결과물을 주 메모리 특정 영역에 저장할 수 있다. 이 때 특정 영역은 커널 영역 또는 패킷을 역패킷화(Depacketization) 후의 어플리케이션 영역 등 설정에 의해 영역 선택이 가능할 수 있다.
도 8은 본 발명의 일 실시예에 따른 오프로딩된 결과물을 어플리케이션에서 이용하는 경우를 설명하기 위한 블록도이고, 도 9는 본 발명의 일 실시예에 따른 오프로딩된 결과물의 DMA(Direct memory access) 등을 이용한 대용량 저장소 저장을 설명하기 위한 블록도이다. 도 8을 참조하면 특정 어플리케이션에 있는 영역의 처리된 결과 데이터를 필요 시, 다시 특정 어플리케이션에서 이용할 수 있다. 또는 도 9에 도시된 바와 같이 처리된 결과 데이터가 특정 어플리케이션에서 따로 이용될 필요가 없다면 DMA 등을 통해 대용량 저장소에 저장할 수 있다.
이상에서 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및
작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서 그러한 모든 적절한 변경 및 수정들도 본 발명의 범위에 속하는 것으로 간주되어야할 것이다.
100 : 수신부 200 : 판단부
310 : 특정 데이터 설정부 330 : 정보 생성부
350 : 서브 가속기 설정부 400 : 데이터 처리부
500 : 결정부

Claims (18)

  1. 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 가속기로 수신하는 수신부;
    상기 수신된 데이터가 상기 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단부;
    어플리케이션 및 운영체계에 기초하여 상기 가속기를 설정(Set up)하는 메인 가속기 설정부;
    상기 설정된 가속기를 활성화시켜 상기 수신된 데이터를 처리하는 데이터 처리부; 및
    상기 처리된 데이터의 전송 여부를 상기 어플리케이션 및 상기 운영체계의 커널을 기초로 결정하는 결정부;를 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치.
  2. 제 1 항에 있어서, 상기 메인 가속기 설정부는,
    상기 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정하는 특정 데이터 설정부;
    상기 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성하는 정보 생성부; 및
    상기 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정하는 서브 가속기 설정부;를 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치.
  3. 삭제
  4. 제 1 항에 있어서, 상기 메인 가속기 설정부는,
    상기 외부 네트워크로부터 수신된 어플리케이션 데이터를 특정 가속할 경우 상기 수신부 이전에 수행하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치.
  5. 제 1 항에 있어서, 상기 메인 가속기 설정부는,
    상기 설정된 가속기 정보를 상기 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 제 2 항에 있어서, 상기 수신부 내지 결정부는,
    상기 외부 네트워크로부터 데이터가 수신될 때마다 반복되는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치.
  10. 메인 가속기 설정부가 가속기를 설정(Set up)하는 메인 가속기 설정 단계;
    수신부가 외부 네트워크로부터 수신된 패킷 형태의 어플리케이션 데이터를 상기 가속기로 수신하는 수신 단계;
    판단부가 상기 수신된 데이터가 상기 가속기에서 처리할 수 있는 형태인지 여부를 판단하는 판단 단계;
    데이터 처리부는 상기 설정된 가속기를 활성화시켜 상기 수신된 데이터를 처리하는 데이터 처리 단계; 및
    결정부는 상기 처리된 데이터의 전송 여부를 상기 어플리케이션 및 운영체계의 커널을 기초로 결정하는 결정 단계;를 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법.
  11. 제 10 항에 있어서, 상기 메인 가속기 설정 단계는,
    특정 데이터 설정부가 상기 수신된 어플리케이션 데이터에서 가속하고자 하는 특정 데이터를 설정하는 특정 데이터 설정 단계;
    정보 생성부가 상기 설정된 특정 데이터를 기초로 특정 데이터 정보를 생성하는 정보 생성 단계; 및
    서브 가속기 설정부가 상기 생성된 특정 데이터 정보를 가속기 내 메모리에 저장하여 가속기를 설정하는 서브 가속기 설정 단계;를 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법.
  12. 삭제
  13. 제 10 항에 있어서, 상기 수신 단계는,
    상기 수신된 어플리케이션 데이터를 기초로 상기 가속기를 재설정하는 단계를 더 포함 가능한 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법.
  14. 제 10 항에 있어서, 상기 메인 가속기 설정 단계는,
    상기 설정된 가속기 정보를 상기 가속기 내 프로세서에 업로드(Upload)하는 것을 더 포함하는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 제 11 항에 있어서, 상기 수신 단계 내지 결정 단계는,
    상기 외부 네트워크로부터 데이터가 수신될 때마다 반복되는 네트워크 인터페이스를 위한 어플리케이션 오프로딩 방법.
KR1020170118551A 2017-09-15 2017-09-15 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 KR101977850B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170118551A KR101977850B1 (ko) 2017-09-15 2017-09-15 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170118551A KR101977850B1 (ko) 2017-09-15 2017-09-15 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20190030915A KR20190030915A (ko) 2019-03-25
KR101977850B1 true KR101977850B1 (ko) 2019-05-13

Family

ID=65907700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170118551A KR101977850B1 (ko) 2017-09-15 2017-09-15 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101977850B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002524005A (ja) 1998-08-28 2002-07-30 アラクリテック・インコーポレイテッド 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム
JP2010517152A (ja) 2007-01-30 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・インターフェース・カード伝送制御プロトコル・アクセラレーション・オフロード障害の検出および回復の機構
US20150319250A1 (en) 2014-04-30 2015-11-05 Anil Vasudevan Technologies for accelerating network virtualization

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930422B2 (en) 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US8103785B2 (en) 2007-12-03 2012-01-24 Seafire Micros, Inc. Network acceleration techniques

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002524005A (ja) 1998-08-28 2002-07-30 アラクリテック・インコーポレイテッド 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム
JP2010517152A (ja) 2007-01-30 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・インターフェース・カード伝送制御プロトコル・アクセラレーション・オフロード障害の検出および回復の機構
US20150319250A1 (en) 2014-04-30 2015-11-05 Anil Vasudevan Technologies for accelerating network virtualization

Also Published As

Publication number Publication date
KR20190030915A (ko) 2019-03-25

Similar Documents

Publication Publication Date Title
US9973472B2 (en) Methods and systems for orchestrating physical and virtual switches to enforce security boundaries
CN112543925B (zh) 用于使用专用低延迟链路的多个硬件加速器的统一地址空间
CN108028833B (zh) 一种nas数据访问的方法、系统及相关设备
EP3119062B1 (en) Network transfer of large files in unstable network environments
CN109992405B (zh) 一种处理数据报文的方法和网卡
EP3159803B1 (en) Data storage method and network interface card
US9864606B2 (en) Methods for configurable hardware logic device reloading and devices thereof
CA3159619C (en) Packet processing method and apparatus, device, and computer-readable storage medium
US9009332B1 (en) Protection against network-based malicious activity utilizing transparent proxy services
US10701041B2 (en) Calculation device, calculation method, communication apparatus, and storage medium
JP2020004009A (ja) 異常検知装置、および、異常検知方法
CN115714679A (zh) 网络数据包处理方法、装置、电子设备及存储介质
US8832499B2 (en) Methods and structure for trapping requests directed to hardware registers of an electronic circuit
US10536481B2 (en) Mitigating TCP SYN DDOS attacks using TCP reset
JP5479710B2 (ja) データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法
CN106815128A (zh) 日志输出方法及装置、电子设备
KR101977850B1 (ko) 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법
US20050144290A1 (en) Arbitrary java logic deployed transparently in a network
WO2015169053A1 (zh) 一种报文数据处理方法、装置及系统
CN108282454B (zh) 用于使用内联模式匹配加速安全检查的装置、系统和方法
CN115604070A (zh) 基于mctp协议的消息传输方法、装置、设备及介质
KR102212512B1 (ko) 가상화기술에서 뮤텍스 객체를 이용한 소프트웨어 기반 은닉채널 구성 시스템
EP3136251A1 (en) Flit transmission method and device of network on chip
KR102128832B1 (ko) 네트워크 인터페이스 장치 및 그 네트워크 인터페이스 장치의 데이터 처리 방법
CN110545256A (zh) 数据传输方法、系统、电子设备、中转服务器及存储介质

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