KR20080051022A - Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법 - Google Patents

Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법 Download PDF

Info

Publication number
KR20080051022A
KR20080051022A KR1020070098193A KR20070098193A KR20080051022A KR 20080051022 A KR20080051022 A KR 20080051022A KR 1020070098193 A KR1020070098193 A KR 1020070098193A KR 20070098193 A KR20070098193 A KR 20070098193A KR 20080051022 A KR20080051022 A KR 20080051022A
Authority
KR
South Korea
Prior art keywords
packet
memory
information
processor
header
Prior art date
Application number
KR1020070098193A
Other languages
English (en)
Other versions
KR100898345B1 (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 US11/949,738 priority Critical patent/US7849214B2/en
Publication of KR20080051022A publication Critical patent/KR20080051022A/ko
Application granted granted Critical
Publication of KR100898345B1 publication Critical patent/KR100898345B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

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

Abstract

본 발명은 TOE(TCP Offload Engine)의 패킷 수신 하드웨어 장치 및 TOE 패킷 수신 하드웨어를 이용한 수신 시스템 및 방법에 관한 것으로, 더욱 상세하게는 IP 계층으로부터 수신되는 패킷의 종류를 분석하여 프로세서에서 직접 처리하기 위해 필요한 정보는 패킷 수신 하드웨어에 내장된 큐에 저장하여 프로세서가 직접 이용할 수 있도록 하고, 호스트메모리에 저장할 정보는 외부 메모리에 저장하여 프로세서에 의해 프로토콜 처리가 완료된 후에 호스트메모리로 전달하는 기술적 구성을 통해 프로세서가 실제 패킷의 수신시간과 비동기적으로 움직일 수 있고, 불필요한 정보를 처리하는 오버헤드를 줄일 수 있는 효과가 있다.
TOE(TCP Offload Engine), 큐, 패킷 수신 하드웨어

Description

TOE의 패킷 수신 하드웨어 장치 및 TOE 패킷 수신 하드웨어를 이용한 수신 시스템 및 수신 방법{PACKET RECEIVER HARDWARE APPARATUS FOR TCP OFFLOAD ENGINE AND SYSTEM AND METHOD BASED ON TOE PACKET RECEIVE HARDWARE}
본 발명은 TOE의 패킷 수신 장치에 관한 것으로, 더욱 상세하게는 IP 계층으로부터 수신되는 패킷의 종류를 분석하여 프로세서에서 직접 처리하기 위해 필요한 정보와 호스트메모리에 저장할 정보를 별도로 관리하여 프로세서가 실제 패킷의 수신시간과 비동기적으로 움직일 수 있고, 불필요한 정보를 처리하는 오버헤드를 줄일 수 있는 TOE의 패킷 수신 하드웨어 장치 및 이를 이용한 TOE 수신 시스템 및 수신 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-405-02, 과제명: 차세대 인터넷 서버 기술개발].
종래 대부분의 프로토콜 처리는 CPU에서 소프트웨어를 사용하여 처리하였다. 구체적으로, 패킷 수신시의 처리는 버퍼에 저장된 패킷에서 헤더 부분을 읽어 와 프로토콜 관련 작업을 한 후에 사용자 메모리 영역으로 남은 페이로드 부분을 복사해 주는 방식으로 처리되었다.
이후에, 프로토콜 처리 속도를 향상시키기 위해 TOE가 사용되면서 CPU의 일부 작업을 TOE 카드에 내장되어 있는 프로세서가 처리하게 되었다. 이 경우에, 패킷이 수신되면 먼저 이 패킷이 정상적인 패킷인가를 MAC의 지원을 받거나 혹은 프로세서가 직접 패킷을 읽어서 체크섬(Checksum)을 계산하여 판단하였다.
패킷이 정상적인 경우라면 어떠한 종류의 패킷인지를 판단하고, TCP/UDP 의 경우라면 패킷의 IP와 Port 정보를 이용하여 소켓을 찾은 후, 소켓의 정보에 따라서 해당 프로토콜 처리하고 필요하다면 페이로드 데이터를 사용자의 메모리 영역에 복사해 주어야 한다. 기타 다른 패킷이라면 패킷의 종류에 따른 처리를 해주게 된다. 예를들어 ICMP Echo 같은 패킷이라면 응답 패킷을 전송해주어야 한다.
상기의 방법에 의하면 패킷이 계속해서 들어오는 경우 해당 프로세서는 수신버퍼가 가득 차기 전에 빨리빨리 처리를 마쳐야 하지만, 프로세서가 다른 작업을 하는 경우나 혹은 버퍼의 크기가 충분하지 않은 경우에는 버퍼가 가득 차서 패킷의 분실이 발생하는 문제가 발생하였다.
따라서, 상술한 바와 같은 문제점을 해결하기 위해 수신되는 패킷을 분석하여 실제로 프로세서에서 필요한 정보와 외부메모리에 저장할 정보를 분리하여 관리함으로써 내장프로세서가 다른 작업을 수행하여 수신 패킷 버퍼를 처리하지 못하는 경우에도 계속해서 패킷의 수신이 가능하도록 하여 패킷을 효율적으로 수신하는 수단이 필요하게 되었다.
상기와 같은 문제를 해결하기 위해, 본 발명의 TOE의 패킷 수신 하드웨어 장치는 IP 계층으로부터 전달된 패킷의 헤더를 분석하여, 상기 패킷의 종류를 분류하고, 프로세서에 전달되어야 할 정보를 추출하여 큐에 저장하는 헤더처리부, 상기 헤더처리부의 분석결과에 따라 호스트 메모리에 저장할 정보를 상기 패킷으로부터 추출하여 외부메모리에 저장하는 메모리 인터페이스부, 상기 외부메모리 주소를 할당하여 상기 메모리 인터페이스부에 전달하는 메모리 테이블을 포함하여 이루어지는 것을 특징으로 한다.
한편, 상기 메모리 테이블은
상기 메모리 인터페이스부와 프로세서로부터 전달되는 할당요청 혹은 해제요청에 대하여 메모리 영역의 할당과 해제를 수행하는 할당 테이블과 상기 메모리 인터페이스부와 상기 프로세서의 요청을 중재하는 메모리 테이블 컨트롤러를 포함하여 이루어지는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한, 본 발명의 TOE 패킷 수신 하드웨어를 이용한 수신 시스템은 IP 계층으로부터 수신된 패킷을 분석하여 프로세서에 전달되어야 할 정보는 내부의 큐에 저장하고, 호스트메모리에 전달되어야 할 부분은 외부메모리에 저장하는 패킷 수신 하드웨어부, 상기 큐에 저장된 정보를 이용하여 프로토콜 처리를 수행하는 수신프로세서부 그리고 상기 수신프로세서의 프로토콜 처리가 종료되면 상기 외부메모리에 저장된 정보를 상기 호스트메모리에 전송하는 DMA제어부를 포함하여 이루어지는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한, 본 발명의 TOE 패킷 수신 하드웨어를 이용한 수신 방법은 헤더처리부가 IP 계층으로부터 수신된 패킷을 분석하는 1 단계, 메모리 인터페이스부가 상기 분석결과에 따라 호스트 메모리에 전달되어야 할 부분을 외부메모리에 저장하는 2 단계, 상기 헤더처리부가 상기 분석결과에 따라 프로세서에 전달되어야 할 패킷으로부터 추출한 정보를 큐에 저장하는 3 단계, 상기 큐에 저장된 정보를 이용하여 프로세서가 프로토콜 처리를 수행하는 4 단계 그 리고 상기 프로토콜 처리가 종료되면 상기 외부메모리에 저장된 정보를 상기 호스트 메모리에 전송하는 5단계를 포함하여 이루어지는 것을 특징으로 한다.
한편, 상기 1 단계는
상기 IP 계층으로부터 패킷을 수신하는 단계, 상기 수신된 패킷으로부터 헤더정보를 추출하는 단계, 상기 헤더정보를 분석하는 단계를 포함하여 이루어지는 것을 특징으로 하고,
상기 2 단계는
상기 분석결과에 따라 상기 패킷으로부터 호스트 메모리에 전달될 부분을 추출하는 단계, 메모리테이블로부터 할당된 메모리 영역에 대한 인덱스 정보를 이용하여 상기 추출된 정보를 외부 메모리의 할당된 영역에 저장하는 단계를 포함하여 이루어지는 것을 특징으로 한다.
이때, 상기 외부 메모리의 할당된 영역에 저장하는 단계는
상기 메모리 인터페이스부가 상기 메모리테이블에 메모리 영역의 할당을 요청하는 단계, 상기 요청에 따라 상기 메모리테이블이 외부 메모리의 빈 영역의 인덱스 값을 추출하여 상기 메모리 인터페이스부에 전달하는 단계를 포함하여 이루어지는 것을 특징으로 한다.
상기와 같은 본 발명의 수단에 의한 TOE의 패킷 수신 하드웨어 장치는 내장프로세서가 실제 패킷의 수신타임과 비동기적으로 움직이는 경우에도 정상적인 패킷의 수신이 가능하도록 하는 효과가 있다.
또한, 본 발명에 의한 TOE의 패킷 수신 하드웨어 장치는 패킷의 종류에 따라 처리의 주체를 결정하여 데이터들을 분산시켜 수신프로세서가 실제로 처리하지 않을 데이터를 읽어서 다른 처리 주체에게 넘겨주는 오버헤드를 줄일 수 있는 효과가 있다.
또한, 본 발명에 의한 TOE의 패킷 수신 하드웨어 장치 및 이를 이용한 TOE 수신시스템 및 수신 방법은 외부메모리를 관리하는 별도의 메모리테이블을 구비하여 수신프로세서가 담당해야할 오버헤드를 줄이는 동시에 프로세서보다 빠른 메모리 관리를 수행하고, 수신프로세서의 도움없이 외부메모리의 접근을 가능하도록 하여 칩 내부에 충분한 메모리가 없는 경우에도 패킷 처리를 신속하게 수행할 수 있는 효과가 있다.
이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어서 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 1 은 본 발명에 의한 TOE 패킷 수신 하드웨어를 이용한 수신 시스템의 구성을 나타내는 도면이다.
도 1 을 참조하면, 본 발명에 의한 수신시스템은 IP 계층으로부터 패킷을 수신하여 패킷 수신 하드웨어(100)에서 패킷의 종류를 분석하여 프로세서가 처리하기 위해 필요한 정보를 내부의 큐에 저장하고, TCP 및 UDP 패킷의 페이로드(Payload)와 같이 호스트 메모리(600)에 전달할 정보는 외부메모리(800)에 저장하는 과정을 수행한다. 이러한 과정을 통해 프로토콜의 처리는 큐에 저장된 정보를 이용하여 처리하고, 외부메모리(800)에 저장된 정보는 호스트 메모리(600)에 전달한다.
구체적으로 살펴보면, 패킷 수신 하드웨어(100)는 IP 계층 인터페이스(900)를 통해 패킷을 수신한다. 패킷 수신 하드웨어(100)는 이렇게 수신된 패킷을 분석하여 패킷의 종류에 따라 분류한다. 패킷의 종류는 크게 외부메모리(800)에 저장할 정보를 가지고 있는 패킷과 저장할 필요가 없는 패킷으로 분류한다.
예를 들어, 패킷이 페이로드를 포함한 TCP/UDP 로 분류되는 경우에는 프로세서의 처리가 필요한 정보를 패킷의 헤더로부터 추출하여 내부의 큐에 저장하고, 페이로드는 DDR 컨트롤러(700)를 통해 외부메모리(800)에 저장한다.
수신프로세서(400)는 프로세서버스(200)를 통해 패킷 수신 하드웨어(100)의 큐에 저장되어 있는 정보를 읽어서 필요한 프로토콜을 처리한다. 또한, 수신프로세서(400)는 DMA 컨트롤러(500)를 제어하여 외부메모리(800)에 저장되어 있는 정보를 호스트 메모리로 전송하게 한다. 또한, 패킷 수신 하드웨어(100)는 패킷의 종류에 따라 송신부(300)로 일부분의 정보를 전달하기도 하고, 수신 프로세서(400)도 프로 토콜 처리 과정에서 송신부와 정보를 교환하기도 한다.
도 2 는 본 발명에 의한 TOE 수신시스템의 패킷 수신 하드웨어 장치의 구성을 나타내는 도면이다.
도 2를 참조하면, 본 발명에 의한 TOE 수신시스템의 패킷 수신 하드웨어(100)는 IP 계층으로부터 패킷을 수신하는 IP 인터페이스부(110), 수신된 패킷을 분석하는 헤더처리부(120), 프로세서의 처리에 필요한 정보를 저장하는 큐(130), 호스트 메모리에 전달할 정보를 외부메모리에 저장하는 메모리 인터페이스부(160), 외부메모리를 관리하는 메모리테이블(170), 패킷의 체크섬을 계산하는 체크섬 계산부(140) 그리고 헤더처리부(120), 메모리인터페이스부(160), 체크섬 계산부(140) 등을 제어하는 패킷수신제어부(150)를 포함하여 이루어진다.
구체적으로 살펴보면, IP 인터페이스부(110)는 IP 계층과의 인터페이스를 통해 패킷을 읽어온다. IP 인터페이스(110)는 IP 계층에 패킷이 준비되면 패킷의 IP 헤더 부분을 먼저 읽어온다. 이렇게 입력된 IP 헤더 부분은 헤더처리부(120)로 전달된다.
헤더처리부(120)는 IP 헤더로부터 필요한 정보를 추출하고, 프로토콜 종류에 따라서 다음에 몇 워드를 읽을 것인지를 판단하여 IP 인터페이스부(110)에 알려준다. 패킷이 TCT/UDP 패킷인 경우에는 Pseudo 헤더 정보를 체크섬 계산부(140)에 전달하여 체크섬 계산을 수행한다. 헤더처리부(120)는 헤더를 모두 읽어오면 패킷수신제어부(150)에 헤더의 처리가 완료되었음을 알려준다.
헤더처리 결과 ICMP 패킷 중 TOE 카드에서 처리가능한 3종류의 패킷(Echo Request, timestamp, redirect)과 TCP/UDP 패킷 중 페이로드가 존재하지 않는 패킷 (TCP SYN/ACK 등)의 경우는 메모리 인터페이스부(160)가 동작하지 않는다. 하지만 그 이외의 경우에는 외부메모리(800)에 패킷 전체 혹은 페이로드를 저장해야 하므로 패킷수신제어부(150)는 메모리 인터페이스부(160)를 동작시킨다.
메모리 인터페이스부(160)는 먼저 데이터를 저장할 외부메모리 주소를 메모리테이블(170)로부터 할당받는다. 그리고 IP 계층으로부터 외부메모리에 저장할 데이터를 읽어와 이를 DDR 컨트롤러(700)를 통해 외부메모리에 저장한다.
헤더처리부(120)에 의해 패킷을 분석한 결과 TCP/UDP 패킷 그리고 ICMP 패킷 중 TOE 카드에서 처리가능한 패킷 3종류를 제외한 다른 패킷은 헤더를 포함하여 전체 패킷을 호스트메모리로 전달하여 호스트메모리에서 처리하도록 한다. 이러한 패킷들은 Raw 패킷으로 분류하고, 헤더처리부(120)에서 헤더 정보를 임시로 저장해 두었다가 메모리 인터페이스부(160)가 헤더 정보를 읽어와서 외부메모리에 저장한다. 그 이후에, 메모리 인터페이스부(160)는 IP 인터페이스부(110)를 통해서 패킷의 남은 부분을 읽어와 외부메모리에 저장하게 된다.
메모리 인터페이스부(160)의 동작이 완료되면 체크섬계산부(140)에서 최종결과가 나오게 된다. 물론, 메모리 인터페이스부(160)의 동작이 필요없는 패킷의 경우에는 헤더처리부(120)의 동작만 완료되면 최종결과를 얻게 된다.
체크섬 계산부(140)에 의해 계산된 체크섬이 정상적인 경우에 이를 헤더처리부(120)에 알려 주면 헤더처리부(120)는 프로세서가 필요로 하는 정보들을 큐(130)에 저장한 후 이를 패킷수신제어부(150)에게 알려준다. 만일, 체크섬이 비정상적인 경우라면 헤더처리부(120)는 임시로 저장해두었던 정보를 모두 지워서 초기상태로 돌아가고, 외부메모리에 데이터를 저장한 경우라면 메모리 인터페이스부(160)에도 이를 알려주어 메모리테이블(170)을 통해 할당받았던 메모리 영역을 해제하여 다른 데이터가 메모리 영역을 할당받을 수 있게 한다. 이렇게 하나의 패킷처리가 완료되면 다시 IP 계층에 수신된 패킷이 있는지 점검하여 처음부터 다시 처리를 하게 된다.
큐(130)는 프로세서에서 읽어갈 수 있도록 버스인터페이스(200)를 가지고 있다. 또한 이 큐(130)는 2 개로 이루어져 하나는 수신프로세서 버스에 연결되고 다른 하나는 송신프로세서 버스에 연결된다.
도 3 은 본 발명에 의한 수신 프로세서 버스에 연결된 큐의 포맷 종류를 나타내는 도면이다.
도 3을 참조하면, 수신프로세서(201)는 큐를 수시로 Polling 한다. 이때 읽은 값의 최하위 바이트가 0x00 이면(304) 패킷이 수신되지 않은 경우이므로 더 이상 패킷을 읽지 않고 다른 작업을 하게 된다.
만일 최하위 바이트가 0x30, 0x31, 0x32 라면 수신된 패킷이 있는 경우이므로 다음과 같이 처리된다.
최하위 바이트가 0x30(301)인 경우에는 패킷 전체를 호스트로 전달해야 하는 종류의 패킷이 수신된 경우이다. 이때는 한 워드를 더 읽어서 PAT(Payload Allocation Table) index 값과 Data length 값을 읽어온다. PAT index 값은 메모리테이블(170)이 할당해준 메모리의 인덱스 값이다. 외부메모리 한블럭의 크기를 1.5K 로 사용하고 있다면 인덱스에 1.5K 를 곱한 값이 패킷이 저장된 외부메모리의 시작주소가 된다. Data Length 값은 시작주소로부터 몇 바이트의 데이터가 저장되어 있는지 알려주는 값이다.
최하위 바이트가 0x31(302)인 경우에는 UDP 패킷이 수신된 경우이다. 이때는 (IP option Length 값 + 4) 워드만큼의 데이터를 더 읽어오게 된다. Payload exist 필드는 패킷에 페이로드가 포함되어 있는지를 나타내는 값인데 UDP 의 경우에는 항상 1이 된다.
최하위 바이트가 0x32(304)인 경우에는 TCP 패킷이 수신된 경우이다. 이때는 (IP option Length 값 + TCP Option Length 값 + 6) 워드만큼의 데이터를 더 읽어오게 된다. Payload exist 필드의 값이 1이라면 PAT index 와 Data length 값을 읽어오기 위해 한 워드를 더 읽어야 한다.
도 4 는 본 발명에 의한 송신 프로세서 버스에 연결된 큐의 포맷의 종류를 나타내는 도면이다.
도 4를 참조하면, 송신프로세서 역시 큐를 수시로 Polling 하는 방식으로 패킷을 읽어간다. 즉 최하위 바이트가 0x00 이 아니면 Length 필드의 값만큼 데이터를 더 읽어서 처리한다. ICMP 패킷 중 echo request 패킷과 Timestamp 패킷은 곧바로 송신프로세서가 응답 패킷을 만들어 전송한다. Redirect 패킷 역시 송신프로세 서가 Routing Table을 관리하고 있으므로 이를 이용해서 Update 한다. Echo request 패킷은 Ping 프로그램에 자주 사용되는데 일반적으로 32bytes 의 데이터를 이용한다. 하지만 데이터의 양이 상당히 큰 경우에는 송신프로세서가 읽는 오버헤드를 줄이기 위해 데이터부분을 따로 Response Buffer 라는 곳에 저장해두고 있다. 이 데이터는 송신부에서 패킷을 송신하면서 바로 붙여서 보냄으로써 빠른 처리를 가능하게 한다. 송신프로세서에 연결된 큐는 수신되는 패킷 중 송신부가 처리해야할 패킷을 수신프로세서(400)를 거치지 않고 곧바로 송신부로 전달함으로써 처리속도를 높이기 위해 설계되었다.
도 5 는 본 발명에 의한 메모리 테이블의 구성을 나타내는 도면이다.
메모리 테이블(170)은 메모리 인터페이스부(160)에 연결되는 메모리테이블 컨트롤러(172), 외부메모리의 일정 개수의 영역을 관리하면서 외부메모리를 할당하는 할당테이블(173) 그리고 수신 프로세서용 명령 상태 레지스터(171)를 포함하여 이루어진다.
할당테이블(173)은 메모리테이블의 핵심기능을 수행하는 부분이다. 할당테이블(173)에 의해 수행되는 핵심기능은 외부메모리를 일정 개수의 영역으로 나누어 관리하면서 메모리 인터페이스부(160)로부터 할당 요청이 들어오면 외부메모리의 빈 영역의 인덱스를 알려주고, 인덱스와 함께 해제요청이 들어오면 해당 인덱스 영역을 사용 가능하도록 해제하는 기능을 한다.
수신프로세서(400)는 프로세서버스(200)를 통하여 수신 프로세서용 명령 상 태 레지스터(171)에 할당/해제 요청을 할 수 있다.
메모리테이블 컨트롤러(172)는 할당테이블(173)을 메모리 인터페이스부(160)과 수신프로세서(400)가 같이 사용할 수 있도록 중재하는 역할을 한다. 일반적으로 메모리 인터페이스부(160)에서는 할당 요청이, 수신프로세서(400)로부터는 해제요청이 들어오지만, 체크섬 에러 같은 경우는 메모리 인터페이스부(160)에서도 해제요청이 들어올 수 있다.
도 6 은 본 발명에 의한 수신 프로세서용 명령상태 레지스터의 포맷을 나타내는 도면이다.
수신프로세서(400)는 명령코드로 0x01을 할당요청으로, 0x02을 해제요청으로 사용할 수 있으나 실제로는 해제요청만을 사용한다. 명령이 전달되면 수신 프로세서용 명령 상태 레지스터(171)는 결과코드 0x01을 표시하게 된다. 이는 명령이 수행중이라는 뜻이다. 그리고 명령의 수행이 완료되면 수신 프로세서용 명령 상태 레지스터(602)에는 0x02 가 표시된다. 이때의 인덱스 필드(604)는 무의미하다. 프로토콜 처리중에 사용할 일은 없으나 명령레지스터(601)에 할당요청을 위한 명령코드 0x01이 들어오면, 상태레지스터(602)의 결과코드에 0x02(성공), 혹은 0x03(실패)가 표시된다. 성공시에는 인덱스(604)의 영역을 할당받은 것이고, 더 이상 사용가능한 공간이 없는 경우에 실패한 것으로 0x03 코드가 표시된다.
도 7 은 본 발명에 의한 할당테이블의 세부 구성을 나타내는 도면이다.
도 7에 의한 할당테이블(173)은 커다란 메모리 영역을 작은 사이즈의 여러 블록으로 나누어서 동적으로 메모리를 사용하고자 할 때, malloc() 과 같은 기능을 구현하기 위한 하드웨어이다. malloc() 함수를 사용할 수 없는 경우나, malloc() 함수로 관리할 수 없는 메모리 영역에도 이 하드웨어를 사용하면 메모리의 관리를 할 수 있다. 또한, 이러한 하드웨어를 사용하는 경우에 malloc() 함수 등을 사용하는 것보다 훨씬 빠르게 메모리를 관리할 수 있다.
도 7을 참조하면, 할당테이블(173)은 외부메모리를 총 16384개의 영역을 관리하고 있다. 하나의 영역에 한 패킷이 들어갈 수 있는 1.5 Kbytes를 사용하고 있으므로 총 24Mbytes의 외부메모리를 사용하고 있다. 외부메모리가 작은 경우는 할당테이블의 크기를 줄여서 더 적은 개수를 관리할 수도 있고, 또는 하나의 영역으로 사용하는 메모리 크기를 줄일 수도 있다. 패킷은 항상 1.5 Kbytes 의 사이즈를 가지는 것은 아니므로 하나의 영역을 더 작은 사이즈로 잘라서 관리하게 되면 메모리를 좀더 효율적으로 사용할 수 있다. 그러나, 한 패킷이 여러 개의 메모리 영역에 나뉘어 들어가게 될 수도 있으므로 메모리 인터페이스부(160)에서 메모리테이블(170)로 여러 번 메모리 할당요청을 해야 하고, 헤더처리부(120)가 큐(130)에 정보를 기록할 때 여러 개의 외부메모리 할당정보가 필요하게 된다. 이와 같은 오버헤드는 약간의 성능저하를 가져올 수 있다.
메모리블럭(702)은 한 워드당 64bit 씩 256워드로 이루어져 있다. 따라서 총 16384 bit 를 가지며 각각의 bit 가 해당 index 의 메모리가 사용되고 있는지 아닌지 알려준다. 상위태그_L1(703)은 256 bit 의 레지스터이다. 각각의 bit 는 메모리블럭(702)의 해당 워드 64bit 가 모두 1일 때 1이된다. 상위태그_L2(704)는 상위태그_L1 (703)을 16bit 씩 잘라서 그 16bit가 모두 1일 때 1이된다. 예를 들어, 상위태그_L2 [3]는 상위태그_L1[63:48]이 모두 1일 때 1이 된다. 이 상위태그_L2(704) 16bit 가 Priority Encoder(705)에서 연산되면 할당될 주소의 상위 4bit [13:10]가 된다. Priority Encoder(705)는 입력되는 16bit 의 신호 값 중 그 값이 0이고 가장 낮은 위치의 bit를 찾아내는 인코더이다. 만일 상위태그_L2 의 모든 bit 가 1인 경우에는 더 이상 할당 가능한 메모리영역이 없으므로 할당테이블 컨트롤러(701)에게 메모리가 더 이상 할당될 수 없음을 알린다.
계산된 할당주소[13:10]는 16Mux(706)의 선택신호로 입력되어 할당주소[13:10]를 만드는데 기여한 상위태그_L2 를 생성시킨 상위태그_L1 16bit 를 선택한다. 이렇게 선택된 상위태그_L1 16bit는 마찬가지로 16 Priority Encoder(707)를 통과하여 할당주소[9:6]으로 결정된다. 이 주소는 미리 계산된 상위bit 와 결합하여 할당주소[13:6]을 만들어낸다.
할당주소[13:6]은 메모리블럭(702)의 데이터를 읽어내기 위한 주소로 사용된다. 이렇게 읽혀진 데이터는 하위태그_L1[63:0] (709)이 된다. 이 64bit 데이터는 16개씩 4개로 나뉘어져 하위태그_L2[3:0] (710)을 생성시킨다. 이는 상위태그와 마찬가지로 16개 bit 가 모두 1인 경우에 1이 된다. 이 하위태그_L2(710)는 4 Priority Encoder (711)를 거쳐 할당주소[5:4]로 결정된다. 그리고 마찬가지 방식으로 이 할당주소는 4Mux(712)의 선택신호로 입력되어 선택된 하위태그_L1 중 16bit 가 16 Priority Encoder(713)를 거쳐 할당주소[3:0] 로 결정된다. 이들이 미리 결정된 할당주소[13:6]과 결합하여 최종적으로 할당될 주소를 만들어낸다.
할당주소[5:0]는 기록데이터생성부(714)로 입력된다. 기록데이터생성부(714)는 하위태그_L1(709)의 값에 Mask를 씌워 메모리블럭(702)에 기록할 데이터를 생성한다. 즉 할당의 경우에는 할당주소[5:0]를 이용하여 64bit 의 하위태그_L1 값 중 해당되는 bit 를 1로 바꾸어준다. 그러면 이 데이터를 할당테이블 컨트롤러(701) 가 메모리블럭702)의 해당 어드레스에 기록하게 된다. 이 해당 어드레스는 할당주소[13:6] 에 의하여 결정된다. 또한 이렇게 1로 바꾸었을 때 모든 64bit 가 1이 된다면 이를 할당테이블 컨트롤러(701)에게 알려서 메모리 블록(702)에 데이터를 기록할 때 상위태그_L1(703)의 해당 bit 도 1로 기록하게 된다.
상술한 한번의 사이클이 주소를 할당하는 절차이다. 현재 구현된 하드웨어는 각각의 단계마다 레지스터를 사용하여 7클럭을 소요하고 있지만 클럭 주파수와 디바이스의 속도에 따라서 소요되는 클럭의 개수를 줄일 수 있다. 또한, 입력이 없는 상태에서 비어있는 할당주소는 이미 계산되어 있게 되므로 메모리 요청이 있는 경우 기다림 없이 바로 해당 주소를 알려줄 수 있다. 단 연이은 다음 할당명령을 처리하기 위해서는 한번의 사이클을 완료할 클럭 개수가 필요하다.
메모리 해제의 절차는 다음과 같다. 메모리 해제명령이 수신되면 Mux(708)는 해제요청이 들어온 해제주소[13:6]을 선택하여 메모리블럭(702)에서 데이터를 읽어온다. 이렇게 읽어온 하위태그_L1(709)는 기록데이터생성부(714)에 입력되고, 해제주소[5:0]가 가르키는 bit 가 0으로 Clear 된다. 이 결과는 할당테이블 컨트롤러(701)에 의하여 메모리블럭(702)에 다시 저장되고, 상위태그_L1(703)의 해당bit 또한 클리어된다. 상위태그_L1(703)의 변화가 생겼다면 할당주소의 변화가 생길 수도 있으며 이를 위하여 또 몇 클럭이 소모될 수 있다. 그러나 할당과 마찬가지로 해제명령이 들어온 후 그 처리를 기다릴 필요는 없으며 다음 할당이나 해제 명령을 처리하기 위해 몇 클럭의 준비기간이 필요할 뿐이다.
할당테이블은 항상 사용되고 있지 않은 가장 낮은 인덱스의 메모리를 할당하는 구조이다. 보유하고 있는 메모리가 빠른 메모리와 느린 메모리로 구분되는 경우 낮은 인덱스에 빠른 메모리를 할당한다면 빠른 메모리의 사용 빈도를 높이고 느린 메모리의 사용빈도를 낮추는 효과도 얻을 수 있다.
도 8 은 본 발명에 의한 TOE 패킷 수신 하드웨어를 이용한 수신 방법의 흐름을 나타내는 도면이다.
도 8을 참조하면, IP 계층에 패킷이 준비되면 IP 인터페이스부(110)를 이용하여 패킷을 수신한다.(S810)
패킷이 수신되면 패킷의 헤더 정보를 추출한다.(S820) 패킷의 헤더정보는 패킷이 어떤 종류의 패킷인지 알려주는 정보가 있다. 다만, 도 8에서는 패킷을 IP 계층으로부터 수신한 후에 헤더정보를 추출하는 것으로 도시되어 있지만, 실제로 패킷 중 헤더정보 수신 및 추출이 먼저 이루어지며, 헤더 이외의 부분은 헤더정보 추 출후 수신하게 된다.
패킷의 헤더정보가 추출되면, 헤더정보를 분석한다.(S830) 헤더 정보를 분석하여 수신된 패킷의 종류를 분류한다. 패킷의 페이로드를 호스트메모리에 전달해야 하는 TCP 패킷 또는 UDP 패킷, 아니면 패킷 전체를 호스트메모리로 전달해야하는 패킷 또는 호스트메모리로 전달할 필요가 없는 패킷 중에서 어떤 종류의 패킷인지를 판단한다.
패킷으로부터 호스트 메모리에 전달할 정보를 추출하여 외부메모리에 저장한다.(S840) 수신된 패킷이 TCP/UDP 패킷인 경우에는 패킷의 페이로드를 외부메모리에 저장한다. 그리고 패킷 전체를 호스트 메모리에 전달할 필요가 있는 경우에는 헤더처리부(120)에서 처리하기 위해 패킷으로부터 추출한 정보를 외부메모리에 저장하고, 그 후에 패킷의 나머지 부분을 전달받아 외부메모리에 저장한다.
외부 메모리에 저장하는 정보는 메모리테이블에 의해 메모리 영역을 할당하여 저장한다.
수신된 패킷이 정상인 경우, 프로토콜 처리를 위해 프로세서에 전달해야할 정보를 패킷 헤더로부터 추출하여 큐에 저장한다.(S850)
프로세서에 전달해야할 정보가 큐에 저장되면, 프로세서는 큐에 저장된 정보를 전달받아 프로토콜 처리를 수행한다.(S860)
프로세서에 의한 프로토콜 처리가 완료되면 외부메모리에 저장된 정보를 호스트 메모리에 전달하여 저장한다.(S870)
이러한 과정을 통해 하나의 패킷에 대한 수신이 완료된 후, IP 계층에 다른 패킷이 저장되어 있으면 동일한 과정을 계속하여 진행한다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
도 1 은 본 발명에 의한 TOE 패킷 수신 하드웨어를 이용한 수신 시스템의 구성을 나타내는 도면이다.
도 2 는 본 발명에 의한 수신 시스템의 TOE 패킷 수신 하드웨어의 구성을 나타내는 도면이다.
도 3 은 본 발명에서 수신 프로세서 버스에 연결된 큐의 포맷을 나타내는 도면이다.
도 4 는 본 발명에서 송신 프로세서 버스에 연결된 큐의 포맷을 나타내는 도면이다.
도 5 는 본 발명에 의한 메모리 테이블의 구성을 나타내는 도면이다.
도 6 은 본 발명에 의한 메모리 테이블의 수신 프로세서용 명령 및 상태 레지스터의 포맷을 나타내는 도면이다.
도 7 은 본 발명에 의한 메모리 테이블 구성요소 중 할당테이블의 세부 구성을 나타내는 도면이다.
도 8 은 본 발명에 의한 TOE 패킷 수신 하드웨어를 이용한 수신 방법의 흐름을 나타내는 도면이다.
<도면의 주요부분에 대한 부호의 설명>
100 : 패킷 수신 하드웨어 110 : IP 인터페이스부
120 : 헤더처리부 130 : 큐
140 : 체크섬 계산부 150 : 패킷 수신 제어부
160 : 메모리 인터페이스부 170 : 메모리테이블
171 : 수신 프로세서용 명령 상태 레지스터
172 : 메모리테이블컨트롤러 173 : 할당테이블
174 : 할당 인덱스(Created Index) 175 : 삭제 인덱스(Delete Index)

Claims (23)

  1. IP 계층으로부터 전달된 패킷의 헤더를 분석하여, 상기 패킷의 종류를 분류하고, 프로세서에 전달되어야 할 정보를 추출하여 큐에 저장하는 헤더처리부;
    상기 헤더처리부의 분석결과에 따라 호스트 메모리에 저장할 정보를 상기 패킷으로부터 추출하여, 메모리 테이블로부터 할당된 주소를 이용해 상기 호스트 메모리에 저장할 정보를 외부메모리에 저장하는 메모리 인터페이스부를 포함하여 이루어지는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  2. 제 1 항에 있어서, 상기 헤더처리부는
    상기 큐가 수신프로세서와 송신프로세서가 각각 접근할 수 있도록 적어도 두 개의 큐로 이루어지는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  3. 제 1 항에 있어서, 상기 헤더처리부는
    상기 분석결과 전달된 패킷이 페이로드를 가지는 TCP 패킷 또는 UDP 패킷인 경우에 상기 메모리 인터페이스를 이용하여 페이로드를 외부 메모리에 저장하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  4. 제 1 항에 있어서,
    상기 헤더처리부에 의한 상기 분석결과 전달된 패킷이 에코 리케스트(Echo Request), 타임스탬프(Time Stamp), 리디렉트(Redirect), TCP SYN 또는 TCP ACK 인 경우에 상기 메모리 인터페이스부의 동작이 중단되는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  5. 제 1 항에 있어서, 상기 헤더처리부의 분석결과 전달된 패킷 전체를 상기 외부메모리에 전달해야 하는 경우,
    상기 헤더처리부는 헤더 정보를 임시로 저장하고, 상기 메모리 인터페이스부는 상기 저장된 헤더 정보를 가져와 외부 메모리에 전달한 후에 상기 IP 계층으로부터 패킷의 남은 부분을 수신하여 저장하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  6. 제 1 항에 있어서, 상기 메모리 테이블은
    상기 메모리 인터페이스로부터 할당요청이 수신되면 빈 영역의 인덱스를 전달하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  7. 제 6 항에 있어서, 상기 메모리 테이블은
    상기 메모리 인터페이스부 또는 프로세서로부터 전달되는 할당요청 혹은 해제요청에 대하여 메모리 영역의 할당과 해제를 수행하는 할당 테이블;
    상기 메모리 인터페이스부와 상기 프로세서의 요청을 중재하는 메모리 테이블 컨트롤러를 포함하여 이루어지는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  8. 제 1 항 또는 제 7 항에 있어서,
    상기 헤더처리부로부터 전달된 헤더정보를 이용하여 체크섬을 계산하는 체크섬 계산부를 더 구비하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  9. 제 8 항에 있어서,
    상기 체크섬계산부에 의해 계산된 체크섬에 에러가 발생하는 경우에 상기 메모리 인터페이스부가 해제요청을 상기 할당 테이블에 전달하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  10. 제 7 항에 있어서, 상기 할당테이블은
    메모리 영역을 작은 크기의 블록으로 나누어 외부 메모리를 관리하는 것을 특징으로 하는 TOE의 패킷 수신 하드웨어 장치.
  11. IP 계층으로부터 수신된 패킷을 분석하여 프로세서에 전달되어야 할 정보는 내부의 큐에 저장하고, 호스트메모리에 전달되어야 할 부분은 외부메모리에 저장하는 패킷 수신 하드웨어부;
    상기 큐에 저장된 정보를 이용하여 프로토콜 처리를 수행하는 수신프로세서부;
    상기 수신프로세서의 프로토콜 처리가 종료되면 상기 외부메모리에 저장된 정보를 상기 호스트메모리에 전송하는 메모리제어부를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 시스템.
  12. 제 11 항에 있어서, 상기 패킷 수신 하드웨어는
    IP 계층으로부터 전달된 패킷의 헤더를 분석하여, 상기 패킷의 종류를 분류하고, 프로세서에 전달되어야 할 정보를 추출하여 큐에 저장하는 헤더처리부;
    상기 헤더처리부의 분석결과에 따라 호스트 메모리에 저장할 정보를 상기 패킷으로부터 추출하여 외부메모리에 저장하는 메모리 인터페이스부;
    상기 외부메모리 주소를 할당하여 상기 메모리 인터페이스부에 전달하는 메모리 테이블을 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  13. 제 12 항에 있어서, 상기 패킷 수신 하드웨어는
    상기 헤더처리부로부터 전달된 헤더정보를 이용하여 체크섬을 계산하는 체크섬 계산부를 더 구비하는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  14. 제 11 항에 있어서, 상기 패킷 수신 하드웨어부는
    상기 수신된 패킷의 종류에 따라 송신프로세서로 정보를 전송하는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  15. 제 14 항에 있어서,
    상기 수신된 패킷이 에코 리케스트(Echo Request), 타임스탬프(Time Stamp), 리디렉트(Redirect), TCP SYN 또는 TCP ACK 인 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  16. 제 12 항에 있어서, 상기 메모리테이블은
    상기 메모리 인터페이스부와 프로세서로부터 전달되는 할당요청 혹은 해제요청에 대하여 메모리 영역의 할당과 해제를 수행하는 할당 테이블;
    상기 메모리 인터페이스부와 상기 프로세서의 요청을 중재하는 메모리 테이블 컨트롤러를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  17. 제 12 항에 있어서, 상기 메모리 테이블은
    상기 메모리 인터페이스로부터 할당요청이 들어오면 빈 영역의 인덱스를 전달하는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  18. 제 11 항에 있어서,
    상기 수신된 패킷이 TCP 또는 UDP 패킷이면, 상기 패킷의 페이로드를 외부메모리에 저장하는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신시스템.
  19. IP 계층으로부터 수신된 패킷을 분석하는 1 단계;
    상기 분석결과에 따라 호스트 메모리에 전달되어야 할 부분을 외부메모리에 저장하는 2 단계;
    상기 분석결과에 따라 프로세서에 전달되어야 할 정보를 추출하여 큐에 저장하는 3 단계;
    상기 큐에 저장된 정보를 이용하여 프로세서가 프로토콜 처리를 수행하는 4 단계;
    상기 프로토콜 처리가 종료되면 상기 외부메모리에 저장된 정보를 상기 호스트 메모리에 전송하는 5단계를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 방법.
  20. 제 19 항에 있어서, 상기 1 단계는
    상기 IP 계층으로부터 패킷을 수신하는 단계;
    상기 수신된 패킷으로부터 헤더정보를 추출하는 단계;
    상기 헤더정보를 분석하는 단계를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 방법.
  21. 제 19 항에 있어서,
    상기 수신된 패킷의 체크섬을 계산하는 단계를 더 포함하는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 방법.
  22. 제 19 항에 있어서, 상기 2 단계는
    상기 분석결과에 따라 상기 패킷으로부터 호스트 메모리에 전달될 부분을 추출하는 단계;
    메모리테이블로부터 할당된 메모리 영역에 대한 인덱스 정보를 이용하여 상기 추출된 정보를 외부 메모리의 할당된 영역에 저장하는 단계를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 방법.
  23. 제 22 항에 있어서, 상기 외부 메모리의 할당된 영역에 저장하는 단계는
    상기 메모리 인터페이스부가 상기 메모리테이블에 메모리 영역의 할당을 요청하는 단계;
    상기 요청에 따라 상기 메모리테이블이 외부 메모리의 빈 영역의 인덱스 값을 추출하여 상기 메모리 인터페이스부에 전달하는 단계를 포함하여 이루어지는 것을 특징으로 하는 TOE 패킷 수신 하드웨어를 이용한 수신 방법.
KR1020070098193A 2006-12-04 2007-09-28 Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법 KR100898345B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/949,738 US7849214B2 (en) 2006-12-04 2007-12-03 Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060121317 2006-12-04
KR20060121317 2006-12-04

Publications (2)

Publication Number Publication Date
KR20080051022A true KR20080051022A (ko) 2008-06-10
KR100898345B1 KR100898345B1 (ko) 2009-05-20

Family

ID=39806166

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070098193A KR100898345B1 (ko) 2006-12-04 2007-09-28 Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법

Country Status (1)

Country Link
KR (1) KR100898345B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3110088A1 (en) * 2014-05-08 2016-12-28 Huawei Technologies Co., Ltd. Packet data processing method, device and system
WO2022257587A1 (zh) * 2021-06-08 2022-12-15 中兴通讯股份有限公司 数据处理方法、toe硬件及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996070B2 (en) 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7668165B2 (en) 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3110088A1 (en) * 2014-05-08 2016-12-28 Huawei Technologies Co., Ltd. Packet data processing method, device and system
EP3110088A4 (en) * 2014-05-08 2017-04-26 Huawei Technologies Co. Ltd. Packet data processing method, device and system
US10339091B2 (en) 2014-05-08 2019-07-02 Huawei Technologies Co., Ltd. Packet data processing method, apparatus, and system
WO2022257587A1 (zh) * 2021-06-08 2022-12-15 中兴通讯股份有限公司 数据处理方法、toe硬件及计算机可读存储介质

Also Published As

Publication number Publication date
KR100898345B1 (ko) 2009-05-20

Similar Documents

Publication Publication Date Title
US7849214B2 (en) Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same
US20220046117A1 (en) Methods and apparatus for memory allocation and reallocation in networking stack infrastructures
US11210148B2 (en) Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US7561573B2 (en) Network adaptor, communication system and communication method
US5752078A (en) System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
US6625671B1 (en) Compression of buffered data
US6667920B2 (en) Scratchpad memory
US7472205B2 (en) Communication control apparatus which has descriptor cache controller that builds list of descriptors
RU2477930C2 (ru) Способ и система для передачи потоковых мультимедийных данных с нулевым копированием
US6822959B2 (en) Enhancing performance by pre-fetching and caching data directly in a communication processor&#39;s register set
US7307998B1 (en) Computer system and network interface supporting dynamically optimized receive buffer queues
US8606976B2 (en) Data stream flow controller and computing system architecture comprising such a flow controller
KR100640515B1 (ko) 주변장치로부터 호스트 컴퓨터 시스템에 인터럽트를전달하기 위한 방법 및 장치
US8943507B2 (en) Packet assembly module for multi-core, multi-thread network processors
US7457845B2 (en) Method and system for TCP/IP using generic buffers for non-posting TCP applications
US20020174316A1 (en) Dynamic resource management and allocation in a distributed processing device
US20120110397A1 (en) Data transmission system, storage medium and data transmission program
US10284672B2 (en) Network interface
JP5094482B2 (ja) 処理装置及びその処理方法
US9239796B2 (en) Methods, systems, and computer readable media for caching and using scatter list metadata to control direct memory access (DMA) receiving of network protocol data
US20050091390A1 (en) Speculative method and system for rapid data communications
KR100898345B1 (ko) Toe의 패킷 수신 하드웨어 장치 및 toe 패킷 수신하드웨어를 이용한 수신 시스템 및 수신 방법
US6108694A (en) Memory disk sharing method and its implementing apparatus
KR20090099734A (ko) 스트림 기반의 인터페이스 시스템 및 그 제어 방법
JP2004054419A (ja) ノード間トランザクション処理装置

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
LAPS Lapse due to unpaid annual fee