[go: up one dir, main page]

KR20010076328A - 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법 - Google Patents

티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법 Download PDF

Info

Publication number
KR20010076328A
KR20010076328A KR1020010002812A KR20010002812A KR20010076328A KR 20010076328 A KR20010076328 A KR 20010076328A KR 1020010002812 A KR1020010002812 A KR 1020010002812A KR 20010002812 A KR20010002812 A KR 20010002812A KR 20010076328 A KR20010076328 A KR 20010076328A
Authority
KR
South Korea
Prior art keywords
data
header
checksum
transmission
processing
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
KR1020010002812A
Other languages
English (en)
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 KR20010076328A publication Critical patent/KR20010076328A/ko
Ceased legal-status Critical Current

Links

Classifications

    • 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]
    • 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/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 티씨피/아이피의 처리가 하드웨어적으로 행해지도록 구성한 장치에 관한 것으로, 하드웨어적인 티씨피/아이피(TCP/IP) 처리 장치를 구성하는데 있어서, 송수신되는 사용자 데이타를 처리하여 송수신하는 정보평면과, 데이타의 송수신과 관련된 제어처리를 행하는 제어평면을 분리형성하여 제어 정보 처리와 관계없이 데이타 전송이 이루어지도록 하고, 그 내부에 송신할 데이타와 수신된 데이타를 저장하는 버퍼를 구비하여 메모리 액세스 횟수를 줄이고, 세그먼트 전송시 그 다음 순번인 예측가능한 헤더 및 데이타에 대한 체크섬 계산이 동시에 이루어지도록 하여 체크섬 계산에 따른 오버헤드를 줄이고, 전송할 데이타의 어드레스를 시퀀스넘버(시퀀스넘버) 필드에 삽입하여 전송하고 재조립시 시퀀스넘버(시퀀스넘버) 필드의 값을 메모리에 데이타를 저장하기 위한 포인터로 이용하여 메모리 어드레싱에 따른 오버헤드를 개선한 것이다.

Description

티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그 동작방법{APARATUS FOR PROCESSING TCP/IP BY HARDWARE, AND OPERATING METHOD THEREOF}
본 발명은 보다 향상된 성능으로 사용자 데이타를 인터넷을 통해 TCP 세그먼트로 송수신할 수 있도록 하는 티씨피/아이피(TCP/IP)를 하드웨어적을 처리하는 장치 및 그 동작방법에 관한 것이다.
인터넷을 이용하기 위해서는 정보를 교환하고자 하는 양쪽 단말기간에 동일한 통신 프로토콜을 사용하여야 하는데, 현재 전송제어프로토콜(Transmission Control Protocol)과 인터넷프로토콜(Internet Protocol)로 이루어진 티씨피/아이피가 가장 일반적으로 사용되고 있다. 이 티씨피/아이피는 현재 소프트웨어로 구현되어 운용시스템에 구비된다.
TCP는 도 15에 도시한 바와 같은 표준화된 세그먼트 포멧을 사용하는데, 상기 도 15에서 송신측 포트와 수신측 포트는 각각 데이타를 교환하는 송신측과 수신측의 포트를 나타내는 필드로서, TCP에서는 각 응용프로그램별로 호설정을 할 수 있으므로 포트번호를 이용하여 호설정을 한 응용프로그램을 구별한다.
그리고, 시퀀스넘버(시퀀스넘버) 필드는 송신측에서 보낸 데이타의 바이트 위치를 표시하는 필드이고, acknowledgement number 필드는 다음에 수신할 바이트의 위치를 나타내는 필드이고, HLEN 필드는 헤더의 길이를 32비트 단위로 나타내는 필드이고, 윈도우(WINDOW) 필드는 수신측 버퍼의 여유공간을 표시하는 필드이고, 코드비트(CODE BIT) 필드는 6비트로 구성된 것으로 다음의 표 1과 같은 용도로 쓰이고, 어전트포인터(URGENT POINTER) 필드는 데이타 필드내에서 어전트(urgent 데이타)가 포함될 경우, 그 데이타가 끝나는 위치를 가르키는 필드이고, 옵션 필드는 여러 종류의 옵션을 추가하기 위한 필드로서 그 옵션의 종류는 도 16과 같이 다양하다.
코드 비트(code bit) 1로 설정되었을 때의 의미
URG Urgent Pointer 필드가 유효
ACK Acknowledgement 필드가 유효
PSH 지금까지 보낸 데이타를 버퍼링하지 않고 사용자에게 즉시 전달
SYN 호설정 요구 및 허가
FIN 연결해제 요구 및 허가
RESET 연결설정을 초기화
상기 도 16에 도시된 바와 같이, 옵션 필드는 종류(kind), 길이(length) 및 옵션데이타(option 데이타)로 이루어지며, 상기 도 16에서 end of option list는 옵션의 마지막을 표시하는 용도로 사용되며, no operation은 다음 옵션들을 4바이트 단위로 패딩(padding)하기 위한 목적으로 사용되고, maximum segument size option은 호설정(call connection)시에 서로 간에 송수신할 때의 최대 세그먼트 크기(MSS)를 협상하는 용도로 사용되고, window scale factor는 현재 사용되는 TCP의 WINDOW 필드를 확장하여 사용하기 위한 option이고, timestamp option은 송수신측간에 시간정보를 교환하여 RTT를 계산하는데 사용되는 option이다.
그리고, 도 15에서 체크섬 필드는 헤더와 데이타에 대한 전송에러를 체크하기 위하여 사용되는 필드로서, 이때 체크섬 계산은 도 17과 같은 의사헤더를 포함시켜 계산한다. 즉, TCP 체크섬은 데이타의 체크섬과, TCP 헤더의 체크섬과, 의사헤더의 체크섬을 통합하여 하나의 최종 체크섬을 계산하게 된다. TCP에서의 체크섬 계산은 16비트 단위로 데이타를 모두 더하여 1의 보수를 취하여 계산하는 방식으로 되어 있다. 이와 같은 계산은 TCP에서는 헤더와 데이타에 대해서 실행되며, IP에서는 헤더에 대해서만 실행된다.
그리고, 상기 도 17에 도시된 바와 같이, 의사 헤더는 송신측의 IP 주소, 수신측의 IP 주소, 사용되는 상위계층 프로토콜의 값을 표시하기 위한 프로토콜 필드 및 TCP 길이 필드 등으로 구성되어 있다. 예를 들어, IP계층에서 TCP 세그먼트를 전송하는 경우에는 프로토콜 필드가 6으로 지정된다. 상기 TCP 길이는 TCP 헤더와 데이타를 모두 포함한 값이다.
그런데, 현재 인터넷에서 사용되는 TCP는 소프트웨어로 구현되어 있는데, 이러한 종래의 소프트웨어 TCP는 첫 번째로 그 구조적인 문제에 의한 오버헤드, 두 번째로 메모리 액세스 문제에 의한 오버헤드, 세 번째로 체크섬 계산에 따른 오버헤드등의 문제로 인하여, 하위계층에서 제공해주는 성능을 제대로 사용자 응용에 제공해 주지 못하는 문제점이 있다.
상기 문제점을 더 구체적으로 설명하면, 첫 번째로, 종래의 TCP 소프트웨어는 제어정보와 데이타정보를 구분하지 않고 함께 처리하고 있기 때문에, 데이타의전송도중에도 제어정보처리로 인하여 TCP의 처리시간이 일정하지 않게 되며, 성능도 크게 저하된다. 특히, 일정한 처리시간을 보장해 주어야 하는 멀티미디어 응용에서는 이러한 단점이 치명적인 영향을 미친다.
두번째로, TCP 구현시에는 다음의 표 2에 도시된 바와 같이, 메모리에 저장된 데이타를 네트워크카드로 전달하거나, 네트워크 카드로 수신된 데이타를 메모리의 사용자 영역으로 전달하는데 걸리는 시간이 가장 길다. 따라서, 메모리 액세스 횟수가 많아질 수 록 그 만큼 오버헤드가 커지게 된다.
처리내용 처리시간 [㎲]
사용자 - 시스템 복사 200
TCP 체크섬 185
네트워크-메모리 복사 386
이더넷 드라이버 100
TCP+IP+ARP 프로토콜 100
운용시스템의 오버헤드 240
그런데, 기존의 TCP 구현 수단은 도 18에 도시한 바와 같이, 데이타를 송신하는 경우에는, 메모리(820)의 사용자영역에 저장된 데이타를 커널버퍼로 옮기고(①,②), CPU(810)에서 상기 메모리(820)의 커널영역으로 옮겨진 데이타를 읽어들여 체크섬을 계산한 후(③), 다시 상기 커널버퍼의 데이타를 DMA방식으로 네트워크 카드(830)에 전달한다(④). 수신하는 경우에도 마찬가지로, 수신된 데이타는 먼저 네트워크카드(830)내에 저장되고, 이 데이타가 우선 커널버퍼로 전달된 후(④), 이를 CPU(810)가 읽어 에러를 검사하고(③), 에러가 없을 때, 커널버퍼에서 사용자버퍼로 전달된다(②,①). 즉, 어떤 한 데이타를 대상으로 총 4번의 메모리엑세스가 발생되므로, 이에 따른 오버헤드가 큰 문제가 된다.
세번째로, TCP에서는 상기 도 15에 도시된 바와 같이, 체크섬 필드가 헤더에 위치하고 있기 때문에, 기존의 체크섬계산방식으로는 체크섬 계산이 완료된 후에야 해당 세그먼트가 전송될 수 있다. 예를 들어 설명하면, 1460 바이트의 데이타를 전송하는 경우, 우선 메모리로부터 TCP 헤더 데이타 20바이트와 의사헤더 데이타 12바이트를 읽어 체크섬을 계산하고, 계속해서 1460바이트의 데이타를 읽어 체크섬을 계산한 후에야, 비로소 TCP 세그먼트를 전송할 수 있게 된다. 따라서, 체크섬을 계산하는 동안에 데이타를 전송하지 못함으로서, 그 만큼의 전송지연이 발생한다. IP 프로토콜의 경우에는 헤더의 크기가 일반적으로 20바이트이므로, 16비트로 계산한다고 할 때 10개의 명령만으로 체크섬이 계산되므로 큰 오버헤드가 아니지만, TCP 프로토콜에서는, TCP헤더 뿐만아니라 전체 데이타에 대해서도 체크섬을 계산하여야 하므로, 오버헤드가 크다는 문제점이 있다.
네번째로, TCP는 응용계층의 데이타를 전송하기 위하여, 송신측에서는 데이타를 일정한 크기의 세그먼트 단위로 잘라서 전송하게 되고, 수신측에서는 이를 재조립하게 된다. 이때, 기존에는 수신측에서 세그먼트의 조립시 데이타 위치가 바뀌지 않도록 링크 리스트형태의 데이타구조를 사용하여 메모리에 저장하는데, 이러한 기존의 방식은, 모든 데이타가 수신된 후 재조립하도록 되어있기 때문에, 이에 따른 오버헤드가 문제가 된다.
본 발명은 상술한 종래의 문제점들을 해결하기 위하여 제안된 것으로서, 그 목적은 송수신되는 사용자 데이타를 처리하여 정보 평면과 데이타의 송수신과 관련된 제어처리를 행하는 제어평면을 분리 형성하여 제어정보처리에 관계없이 데이타 전송이 이루어지도록 한 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그 동작방법을 제공하는 것이다.
본 발명의 다른 목적은 그 내부에 송신할 데이타와 수신된 데이타를 저장하는 버퍼를 구비하여, 메모리 액세스 횟수를 줄인 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그 동작방법을 제공하는 것이다.
본 발명의 또 다른 목적은 세그먼트 전송시, 그 다음 순번인 예측가능한 헤더 및 데이타에 대한 체크섬 계산이 동시에 이루어지도록 하여, 체크섬 계산에 따른 오버헤드를 줄이고자 한 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그 동작방법을 제공하는 것이다.
본 발명의 또 다른 목적은 전송할 데이타의 어드레스를 시퀀스넘버 필드에 삽입하여 전송하고, 재조립시 시퀀스너버 필드의 값을 그대로 WC 포인터에 저장하고, 수신된 데이타는 WC 포인터가 가리키는 주소에 저장하여, 메모리 어드레싱에 따른 오버헤드를 개선한 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그 동작방법을 제공하는 것이다.
도 1은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치를 도시한 전체 블록도이다.
도 2는 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에서 수행되는 동작을 보이는 플로우챠트이다.
도 3은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에서 송신처리부를 구체적으로 도시한 블록도이다.
도 4는 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치의 수신처리부를 구체적으로 나타낸 블록도이다.
도 5는 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치의 제어부를 도시한 블록도이다.
도 6은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에서의 버퍼관리를 설명하기 위한 블록도이다.
도 7은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에서의 메모리 엑세스 방법을 설명하기 위한 블록도이다.
도 8은 본 발명에 따른 파이프라인식 체크섬 계산방법이 적용된 티씨피/아이피를 하드웨어적으로 처리하는 장치의 일부 구성도이다.
도 9는 본 발명의 일실시예에 의한 체크섬 계산 순서를 보이는 플로우챠트이다.
도 10은 다중채널환경에서 시간에 따라 변하는 전송데이타의 크기를 보이는 타이밍도이다.
도 11은 본 발명의 다른 실시예에 의한 체크섬 처리를 설명하기 위한 타이밍도이다.
도 12는 본 발명의 다른 실시예에 의한 체크섬 처리순서를 보이는 플로우챠트이다.
도 13은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에서 시퀀스넘버를 이용한 전송방법을 설명하기 위한 모식도이다.
도 14는 본 발명에 따른 장치에서 시퀀스넘버를 이용한 재조립과정을 설명하는 모식도이다.
도 15는 전송제어프로토콜(TCP)에 따른 세그먼트의 구조도이다.
도 16은 TCP 세그먼트에서 옵션필드의 종류를 보인다.
도 17는 의사헤더(Pseudo Header)의 구조도이다.
도 18은 종래의 메모리엑세스 방법을 나타내는 블록도이다.
도 19는 종래 체크섬 계산방법과 본 발명에 따른 체크섬 계산방법을 비교해 보인 모식도이다.
*도면의 주요 부분에 대한 부호의 설명*
100 : TCP 처리장치
200 : TCP 송신처리부
300 : TCP 수신처리부
400 : TCP 제어부
본 발명은 상술한 목적을 달성하기 위한 수단으로서, 티씨피/아이피를 하드웨어적으로 구성하는 장치에 있어서, 송수신되는 사용자 데이타를 처리하여 송수신하는 정보평면과, 데이타의 송수신과 관련된 제어처리를 행하는 제어평면을 분리형성하는 것을 특징으로 한다.
더하여, 본 발명은 TCP 세그먼트를 수신하여 사용자 데이타를 출력하는 수신처리부;
사용자 데이타와 헤더정보를 입력받아 TCP 세그먼트 생성하여 송신하는 송신처리부; 및
프로토콜 상태에 따라 상기 송/수신처리부를 제어하고 송수신하는 사용자 데이타와 관련된 제어정보를 처리하는 제어부로 구성되어,
제어정보의 처리와 관계없이 데이타의 송수신이 이루어지도록 하는 것이다.
그리고, 상기 장치는 데이타를 저장하는 전용버퍼를 구비하여, 호스트 시스템의 메모리로부터 송신할 데이타를 읽어들이고, 수신된 데이타를 바로 상기 메모리에 전달하는 것을 특징으로 한다.
더하여, 상기 장치는 상기 장치는 송수신할 데이타를 보관하는 상기 송신버퍼 및 수신버퍼의 관리를 위하여, 각각의 버퍼에서 사용자 데이타를 기입할 위치를 가르키는 포인터(WC)와, 다음에 출력할 사용자 데이타가 저장된 위치를 가르키는 포인터(RC)와, 다음 승인(acknowledge)을 받을 위치를 가르키는 포인터(FC)를 구비하는 것을 특징으로 한다.
또한 본 발명은 송신할 사용자 데이타를 읽어들이는 버퍼;
전송 전에 예측가능한 헤더 값과 데이타에 대한 부분 체크섬을 계산하는 제1모듈;
상기 제1모듈에서 계산된 부분체크섬과 전송전에 결정되는 헤더값을 입력받아 최종적인 체크섬을 생성하는 제2모듈; 및
상기 제1,2모듈을 거쳐 최종적인 체크섬이 계산되어 출력될 때 까지 해당 사용자 데이타를 임시저장하는 임시버퍼로 이루어진 체크섬 계산구조를 포함하는 것을 특징으로 한다.
이하, 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에 대한 구성 및 작용을 설명하는데, TCP를 처리하는 부분과 IP를 처리하는 부분의 구성이 동일하므로, TCP를 처리하는 부분에 대해서만 설명한다.
먼저, 본 발명은 제어처리와 데이타처리가 함께 행해지는 구조적인 문제에 따른 오버헤드를 해결하기 위하여, 제어처리가 행해지는 제어부분과, 데이타 송수신이 행해지는 송수신처리부분이 분리된 장치를 제안하는데, 이에 따른 일실시예가 도 1에 도시된다.
상기 도 1은 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치의 전체 구성도로서, 도시된 바와 같이, 상기 장치(100)는 송신할 사용자 데이타를 소정 처리하여 목적지로 전송하는 송신처리부(200)와, 송신측으로부터 전송되온 TCP 세그먼트를 수신하고 소정 처리하여 사용자 데이타를 응용계층에 전송하는 수신처리부(300)와, 송/수신 데이타와 관련된 제어정보를 처리하는 제어부(400)로 이루어진다.
상기와 같이, 본 발명에 따른 TCP 장치에서는 데이타를 처리하는 부분과, 제어정보를 처리하는 부분을 분리하여, 상기 송신처리부(200)와 수신처리부(300)에서는 정보의 전달을 담당하고, 제어부(400)에서는 프로토콜 상태를 관리하며, 이에 의하여 상기 송수신처리부(200,300)의 동작을 제어하도록 한다. 그 결과, 에러나오버플로우와 같은 돌발사태가 발생하지 않는 한, 상기 송수신처리부(200,300)는 제어정보의 처리에 의존하지 않고 사용자정보를 전송할 수 있게 된다.
도 2는 상기와 같은 장치(100)의 전체적인 동작흐름을 보여주는 플로우챠트로서, 응용계층(applcation layer)으로부터 소정의 명령(API command)이 수신되면(s201), 상기 제어부(400)가 이를 받아 적절한 처리를 행하고(s202), 사용자 데이타 또는 TCP 세그먼트가 수신되면(s203), 제어정보, 예를 들어, 에러, 시간종료, SYN 또는 FIN 을 가지고 있는 지를 체크하여(s204 ~ s206), 제어정보가 있으면, 제어부(400)가 이를 처리하고, 데이타는 송수신처리부(200, 300)가 처리한다(s207).
다음으로, 상기 도 1에 도시된 TCP 장치를 이루는 각 블록의 구성 및 동작을 설명한다.
도 3은 TCP 세그먼트의 헤더를 만들고, 이를 사용자 데이타와 함께 네트워크계층으로 전달하는 송신처리부(200)의 내부 구성을 보인 것으로, 상기 송신처리부(200)는 수신된 TCP 헤더정보를 저장하는 헤더레지스터(210)와, 상기 헤더레지스터(210)에 저장된 헤더정보를 입력받아 헤더의 길이를 계산하는 헤더길이생성모듈(Header Length Generate Module)(이하, HLGM이라 한다)과, 상기 헤더레지스터(210)로부터 데이타길이정보를 입력받고 상기 HLGM(220)로부터 헤더길이값을 입력받아 헤더길이와 데이타 길이를 합한 세그먼트의 총길이를 계산하는 총길이생성모듈(Total Length Generate Module)(이하, TLGM이라 한다)(230)와, TCP 헤더의 일부와 데이타를 입력받아 TCP헤더 중 예측될 수 있는 값들과 데이타에 대한 부분체크섬을 계산하는 부분체크섬생성모듈(Partial Checksum Generate Module)(이하, PCGM이라 한다)(240)와, 상기 PCGM(240)로부터 입력된 부분체크섬에 TCP 세그먼트를 송신하기 직전에 결정되는 ACK 넘버와 윈도우값을 포함하여 최종적인 체크섬을 생성하는 최종체크섬생성모듈(Final Checksum Generate Module)(이하, FCGM이라 한다)(250)와, 송신할 사용자 데이타를 호스트시스템의 버스를 통하여 전달받아 저장하는 송신버퍼(260)와, 체크섬 계산을 위해 읽어들인 데이타를 임시 저장하는 임시버퍼(270)와, 상기 FCGM(250)에서 생성된 최종 체크섬을 포함한 헤더정보를 임시로 저장하는 헤더버퍼(280)와, 상기 임시버퍼(270)의 사용자 데이타와 상기 헤더버퍼(280)의 체크섬이 포함된 헤더를 합성하여 TCP 세그먼트를 출력하는 송신멀티플렉서(290)로 구성된다.
TCP 세그먼트의 헤더는 기본이 20바이트이지만, 옵션필드의 종류에 따라서 그 길이가 변화된다. 그래서, 한 세그먼트를 전송할 때마다 헤더의 길이를 구해야 한다. 상기 HLGM(220)의 입력은 제어부(400)로부터 제공되는 옵션의 유무를 표시하는 신호이고, 출력은 헤더길이가 된다.
그리고, 상기 송신처리부(200)의 기능중 하나인 체크섬 계산을 위해서는 앞서 설명한 바와 같이 헤더와 데이타뿐만 아니라 도 17에 도시한 의사헤더도 필요하며, 상기 의사헤더는 송수신측의 IP 주소, 프로토콜 종류, TCP 길이로 구현된다. 이중 TCP의 길이를 상기 TLGM(230)에서 계산한다. 상기 TLGM(230)의 입력값은 상기 HLGM(220)로부터 출력된 헤더길이의 값과, 전송할 데이타의 길이이고, 출력값은 TCP 세그먼트의 총길이를 나타내는 TCP 길이로서 FCGM(250)으로 입력된다.
상기 도 3에서 체크섬 계산된 데이타를 일시 저장하는 임시버퍼(270)는 FIFO(First In First Out) 타입의 버퍼이다.
도 4는 본 발명에 따른 티씨피/아이피를 하드웨어적으로 처리하는 장치에 있어서, 수신처리부(300)를 도시한 블록구성도로서, 도시된 바와 같이, 수신처리부(300)는 수신된 TCP 세그먼트에서 헤더와 데이타를 분리하여 각각 출력하는 수신멀티플렉서(310)와, 상기 수신멀티플렉서(310)로부터 분리출력되는 헤더의 체크섬을 체크하여 전송에러를 판단하는 헤더체크섬처리모듈(Header Checksum Control Module(이하, HCCM이라 한다)(320)과, 상기 수신멀티플렉서(320)로부터 분리 출력되는 데이타의 체크섬 결과를 체크하여 전송에러를 판단하는 데이타체크섬처리모듈(데이타 Checksum Control Module)(이하, DCCM이라 한다)(330)와, 상기 수신멀티플렉서(320)로부터 출력되는 헤더의 정보에 따라 해당 처리를 행하며 상기 HCCM(320) 또는 DCCM(330)에 의해 전송된 헤더 또는 데이타에 에러가 있다고 판단된 경우, 수신된 데이타를 버리도록 제어처리하는 수신헤더처리모듈(RX header processing module)(340)과, 수신된 헤더를 저장하는 헤더레지스터(350)로 구성된다.
상기에서, 헤더레지스터(350)에 저장된 헤더의 내용 중 일부는 제어부(400)로 전달된다.
도 5는 프로토콜의 상태정보에 따라 적절한 제어신호를 생성하여 상기 송수신처리부(200,300)를 제어하는 제어부(400)를 도시한 구성도로서, 상기 제어부(400)는 프로토콜의 상태에 따라서 상기 송신처리부(200)를 제어하는 송신제어모듈(410)과, 자신을 목적지로 하는 TCP 세그먼트를 수신하도록 프로토콜의 상태에 따라서 적절한 제어신호를 생성하여 상기 수신처리부(300)를 제어하는 수신제어모듈(420)과, TCP 생성 장치(100) 전체의 동작을 제어하는 중앙제어모듈(430)로 구성된다.
예를 들어, 상기 송신제어모듈(410)은 네트워크 상에서 체증이 발생하는 경우 송신하는 데이타의 양을 조절하기 위한 혼잡윈도우(congestion window) 값을 생성하고, 시간종료, RTT 생성, 혼잡관리기능을 수행하고, 또한 송신한 데이타에 에러가 발생한 경우, 송신처리부(200)에 해당 데이타의 재전송을 지시한다.
상기 수신제어부(420)는 수신된 세그먼트의 송신측 포트가 올바른지를 체크하고, 버퍼의 포인터를 제어하여 수신처리부(300)내의 수신버퍼(360)를 관리하는 기능을 수행한다. 즉, 도 6은 상기 수신버퍼(360) 및 상기 버퍼관리에 이용되는 카운터를 도시한 것으로서, WC(write counter)는 수신된 사용자 데이타를 적어 넣을 위치를 가르키는 포인터이고, RC(read counter)는 다음에 읽어서 전송할 데이타의 시작위치를 가르키는 포인터이고, FC(free counter)는 데이타를 전송한 후 다음 승인(acknowledge)을 받을 위치를 가르키는 포인터이다. 상기 WC, RC, FC는 모두 버퍼의 경계를 만나면 최초의 위치로 되돌아가는 원 형태로 동작하여, 도 6에서 (A)영역은 아직 전송하지 않은 저장된 사용자 데이타를 나타내고, (B)영역은 이미 전송되었지만, 아직 승인을 받지 못하여 보관하고 있는 데이타를 나타내고, (C)영역은 승인신호를 받아서 할당된 데이타가 제거되어 빈상태가 된 영역을 나타낸다.
그리고, 상기 중앙제어모듈(430)은 TCP 생성 장치(100)내에 존재하는 각종명령 레지스터들을 제어하여 사용자 API의 명령을 처리하고, 제어레지스터(control regiters)와 플레그레지스터(flag registers)를 제어하여 상기 송수신제어모듈(410,420)에 동작을 지시한다. 또한, 상태 레지스터(status registers)를 제어하여 사용자 API로 TCP 생성 장치(100)의 상태를 알려주고, FSM을 관리하고, 접속하거나 해제한다.
두 번째로, 본 발명은 메모리 액세스에 의한 오버헤드를 개선하기 위하여, 메모리 액세스 횟수를 줄일 수 있도록 상기 장치(100)내에 데이타를 저장하는 전용버퍼(즉, 송신처리부(200)에서의 송신버퍼(260)와, 수신처리부(300)의 수신버퍼(360)에 해당함)를 구비시킨다. 더하여, 상기 장치(100)는 체크섬 계산이 호스트 시스템의 CPU에서 이루어지는 것이 아니라 장치(100)내에서 이루어지기 때문에, 메모리의 엑세스 횟수를 감소시켜, 오버헤드를 대폭적으로 개선할 수 있다.
즉, 본 발명에 따른 장치를 이용하면 도 7에 도시한 바와 같이, 부호 740이 호스트 시스템의 메모리이고, 730은 호스트 시스템의 CPU이고, 720은 버스이고, 710은 본 발명에 따른 TCP 생성 장치라 할 때, 메모리(740)의 사용자영역에 저장된 데이타가 바로 TCP 생성장치(710)의 버퍼(711)에 전송되고, 버퍼(711)에 저장된 데이타가 바로 메모리(740)의 사용자 영역으로 전송된다.
세 번째로, 본 발명은 체크섬 계산에 의한 오버헤드를 개선하기 위하여, 파이프라인 기법에 의하여 세그먼트의 전송시 그 다음 전송할 세그먼트의 예측가능한 필드의 체크섬을 계산하도록 하는 것을 제안하는데, 이러한 본 발명에 따른 장치(100)에서의 체크섬 계산 방법은 응용에서 생성하는 데이타의 크기에 따라서,고정길이에 대한 체크섬 계산 방법과 가변길이에 대한 체크섬 계산 방법으로 나눌 수 있다.
도 8은 본 발명에 따른 장치(100)에서의 고정길이 데이타에 대한 체크섬 계산 구조를 구체적으로 도시한 블록도로서, 송신버퍼(260)에 전송할 데이타를 저장하고, PCGM(240)은 예측할 수 있는 TCP 헤더와 상기 송신버퍼(260)의 데이타를 입력받고, 입력된 데이타 및 TCP 헤더에 대한 체크섬을 계산하여 부분체크섬을 생성한다. 여기에서, 예측할 수 있는 TCP 헤더는 도 15의 세그먼트 구조에서 승인번호(acknowledgement number), 윈도우 및 코드비트를 제외한 모든 필드로서, 하나의 TCP 접속이 유지되는 동안에 변하지 않는 필드들이다.
이와 같이 생성된 부분체크섬은 FCGM(250)으로 입력되고, 상기 FCGM(250)는 송신전에 결정되는 승인번호, 윈도우 값, 코드비트를 입력받아, 최종적인 체크섬을 생성한다. 상기와 같이, 체크섬이 이루어지는 동안 해당 사용자 데이타는 FIFO 타입의 임시버퍼(270)에 저장되는데, 상기 임시버퍼(270)에서 데이타를 읽어 전송하는 과정과, 상술한 바와 같이 다음 전송할 데이타의 체크섬을 계산하는 과정은 파이프라인(pipeline)방식으로 동시에 수행된다.
상술한 바와 같이, 전송전에 예측가능한 헤더와 데이타만을 미리 체크섬 계산할 수 있는 것은, 전송 제어 프로토콜(TCP)에서 체크섬을 계산하기 위해서 입력값들을 16비트 단위로 더한 후 1의 보수를 취하는 방식을 사용하여, 더하는 순서가 관계없기 때문이다.
상기와 같이, 송신처리부(200)에서 파이프라인 방식으로 체크섬을 계산하고데이타를 전송하는 동작알고리즘은 도 9의 플로우챠트와 같다.
도시된 바와 같이, 먼저, 메모리에 전송할 데이타가 있는지를 검사한 후(s901), 전송할 데이타가 있으면, 최초의 데이타인지를 체크한다(s902). 이때, 최초로 전송하는 데이타인 경우에는 미리 계산된 체크섬값이 없으므로, 체크섬 계산 과정을 수행한 후(s903), TCP 세그먼트를 생성하여 전송한다(s904). 이때, 상기 전송과 동시에, 다음에 송신할 데이타 및 헤더에 대한 체크섬을 계산하는 과정이 수행된다(s905). 이때, 읽어들인 다음에 전송할 데이타는 상기 임시버퍼(270)에 저장된다. 그리고, 최초로 전송되는 데이타가 아닌 경우에는, 이전 단계(s905)에서 체크섬이 계산되어 있으므로, 상기 계산된 체크섬과 임시버퍼(270)에 저장되어 있는 데이타 및 헤더로 세그먼트를 형성하여 전송하고(s906), 동시에 다음 전송할 데이타 및 헤더에 대한 체크섬 계산도 수행된다(s907).
상술한 바와 같이, 본 발명은 TCP의 체크섬 계산에 의한 오버헤드를 줄이기 위해서, TCP헤더와 의사헤더의 필드중 예측할 수 있는 영역과 데이타영역에 대해서는 체크섬을 미리 계산하도록 함으로서, 전송과정과 체크섬 계산과정을 시간적으로 중첩시키는 파이프라인 기법을 제안한다. 이때, 미리계산되는 예측가능한 TCP 헤더와 의사헤더의 필드는 송신측 포트, 수신측 포트, 헤더길이, 코드비트, 어전트 포인터, MSS, 프로토콜, 송신측 IP 어드레스, 수신측 IP 어드레스, 및 TCP 길이가 있으며, 데이타도 호설정시에 결정된 최대 세그먼트 크기에 따라 버퍼로부터 데이타를 읽어 체크섬을 미리 계산할 수 있다.
따라서, 기존의 방식과 상기 방식을 비교해보면, 기존에는 도 19a와 같이,첫 번째 데이타 및 헤더에 대한 체크섬이 행해진 후, 그 첫 번째 데이타 및 헤더로 이루어진 세그먼트의 전송이 이루어지는데 반하여, 본 발명에 의한 경우에는, 도 19b와 같이 세그먼트의 전송과, 그 다음 전송할 세그먼트를 위한 체크섬 계산이 동시에 수행됨으로서, 세 개의 세그먼트를 전송한다고 할 때, 종래에는 6개의 단위시간이 소요되는데 반하여, 본 발명에서는 4개의 단위시간이 소요됨을 알 수 있다. 이 시간차이는 전송되는 데이타의 양이 많아질 수 록 벌어져, 소정량 이상의 데이타를 전송하는 경우, 약 2배 이상의 성능개선효과를 얻을 수 있다. 상기 도 19a,b에서 위쪽의 숫자는 시간의 단위를 나타내며, 계산되는 데이타의 크기는 모두 동일하다.
상술한 파이프라인식 체크섬 계산 방법은 단일 채널 환경에서 적합한 것으로서, 모든 데이타가 항상 일정한 크기로 생성되는 경우나, 전송해야 할 데이타가 미리 버퍼에 가득 차 있는 경우에만 가능하다. 그러나, 다중 채널의 경우에는 TCP 하드웨어가 한 채널의 데이타를 처리한 후, 다른 채널의 데이타를 처리한다. 따라서, 한 채널의 입장에서 볼 때는 일정한 시간 간격을 가지고 데이타에 대한 처리와 전송이 일어나게 된다.
즉, 도 10에 도시된 바와 같이, 실제 전송해야 할 데이타가 데이타를 처리하는 시간에 따라 변하게 된다.
상기 도 17에서, t0는 응용이 데이타를 만들기 시작하는 순간이며, 본 발명에 의한 장치에서는 다른 채널의 데이타 처리를 수행하는 δt 시간 후인 t1에서 첫 번째 데이타(D1)에 대한 처리가 실행된다. 따라서, 도 17에서 보면, t1시간에 송신할 데이타는 1460 바이트가 되며, t2시간에는 500바이트, t3시간에는 200바이트, t4시간에는 1460바이트, t5시간에는 500바이트가 되어, 시간에 따라 처리할 데이타의 크기가 달라진다.
따라서, 본 발명에서는 가변길이 데이타를 위한 체크섬 방법을 제안한다.
도 11은 가변길이 데이타에 대한 파이프라인식 체크섬 계산 방법을 설명하기 위한 타이밍도이고, 도 12는 상기 가변길이 데이타에 대한 파이프라인식 체크섬 계산 방법의 처리순서를 보인 플로우챠트이다.
상기 도 11 및 도 12에 도시된 바와 같이, 체크섬할 데이타의 길이가 가변하는 경우, 먼저 모든 채널은 동작시작 후 대기상태에 있게 된다(s1201). 상기 상태에서 채널별로 자기채널의 데이타를 전송할 수 있는 시간(tn)인지를 검사한다(s1202). 상기에서, 채널n에 대한 데이타를 전송할 시간 tn이면 해당 채널의 데이타를 전송한다(s1205), 상기 전송되는 데이타는 체크섬계산이 완료되어 저장된 데이타이다.
반대로, 데이타 전송시간 tn이 아닌 경우에는 처리할 데이타가 존재하는지를 검사한다(s1203). 이때, 처리할 데이타가 있으면 상술한 바와 같이 해당 전송시간 tn에 데이타를 전송할 수 있도록 데이타 체크섬 계산을 수행한다(s1204).
상기 처리는 채널별로 이루어지며, 따라서, 어떠한 시간 간격 δt에 대해서 항상 파이프라인식으로 미리 체크섬 계산을 할 수 있어, 데이타 전송 성능을 최대 2까지 높힐 수 있다.
본 발명은 상술한 바와 같이, 체크섬 계산이 하드웨어로 처리됨으로서, 소프트웨어에 의한 계산되는 종래보다 계산속도 향상되며, 체크섬 계산을 위해 메모리로부터 읽어들인 데이타를 FIFO 타입의 버퍼에 저장하여 두고, 데이타 전송시 바로 상기 버퍼의 데이타를 전송하도록 함으로서, 메모리 엑세스 횟수를 줄일 수 있다.
기존의 TCP 소프트웨어는 커널에서 수행되며, 데이타를 저장하고, 관리하는 작업을 운용시스템이 담당하고 있었다. 본 발명은 그중 데이타를 저장하기 위해 버퍼를 할당하거나 필요없는 버퍼에 대한 복구 및 관리에 따른 오버헤드를 줄이기 위해서, 시퀀스넘버를 이용한 버퍼관리방법을 제안한다. 시퀀스넘버는 도 15의 TCP 헤더필드중의 하나로서, 전송되는 데이타를 바이트 단위로 번호를 붙이고, 송신시 TCP 세그먼트의 가장 첫 번째 바이트번호가 시퀀스넘버 필드에 저장된다.
본 발명에서는 상기 시퀀스넘버를 이용하여 수신측에서 데이타의 재조립작업을 수행하거나 누락된 데이타를 찾아내어 재전송을 요구하도록 한다.
즉, 시퀀스 넘버를 버퍼의 주소로 사용하여 데이타를 전송하는 과정, 재전송하는 과정 및 재조립하는 과정이 간단하게 이루어지고, 버퍼를 관리하기 위해 도 6에 보인 WC, RC 및 FC와 같은 3개의 포인터를 이용하였다. 응용에서 보내온 사용자 데이타는 WC 포인터가 가리키는 어드레스에 저장되고, 전송할 때에는 RC 포인터가 가리키는 어드레스에 저장된 데이타를 읽어내어 전달하고, 재전송이 발생하면 FC 포인터가 가리키는 어드레스의 데이타를 복사하여 RC포인터에서 가리키는 어드레스에 저장한 후, 상기 RC가 가리키는 어드레스의 데이타를 읽어 전송하도록 한다.
도 13은 시퀀스넘버를 이용하여 데이타를 전송하는 버퍼관리방법을 보이는 것이고, 도 14는 수신된 데이타를 재조립하는 과정을 나타낸 것이다.
도 13에서 데이타 전송시, 메모리의 물리적인 주소를 나타내는 WC 포인터값이 송신할 세그먼트의 시퀀스넘버 필드에 삽입되고, 상기 WC 포인터가 가리키는 어드레스의 데이타가 송신할 세그먼트의 데이타로 삽입된다.
도 14에서 수신된 데이타의 재조립시에는, 수신된 세그먼트의 시퀀스넘버 필드의 값을 버퍼의 WC 포인터값으로 저장하고, 상기 WC 포인터가 가리키는 어드레스에 수신된 세그먼트의 데이타를 저장한다.
상술한 바와 같이, 본 발명은 하드웨어적으로 티씨피/아이피를 처리하도록 하여, 하위계층에서 제공해주는 성능이 사용자 응용계층까지 제공되도록 한 것으로서, 데이타의 송수신 부분과 제어처리 부분을 분리하여 제어 정보 처리와 관계없이 데이타 전송이 이루어지도록 하여 TCP처리시간을 일정하게 유지시키는 효과가 있으며, 또한 송신할 데이타와 수신된 데이타를 저장하는 버퍼를 구비하여 메모리 액세스 횟수를 줄이는 효과가 있고, 또한 세그먼트 전송시 그 다음 순번인 예측가능한 헤더 및 데이타에 대한 체크섬 계산이 동시에 이루어지도록 하여 체크섬 계산에 따른 오버헤드를 줄이는 효과가 있으며, 또한 전송할 데이타의 어드레스를 시퀀스넘버 필드에 삽입하여 전송하고 재조립시 시퀀스넘버 필드의 값을 메모리에 데이타를 저장하기 위한 포인터로 이용하여 메모리 어드레싱에 따른 오버헤드를 개선하는 효과가 있다.

Claims (12)

  1. 티씨피/아이피를 하드웨어적으로 구성하는 장치에 있어서,
    송수신되는 사용자 데이타를 처리하여 송수신하는 정보평면과, 데이타의 송수신과 관련된 제어처리를 행하는 제어평면을 분리형성하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  2. 제 1 항에 있어서,
    상기 장치가 송수신하는 데이타를 저장하는 전용버퍼를 구비하여, 송신 또는 수신되는 데이타가 호스트 시스템의 메모리와 티씨피/아이피 처리장치 사이에 한번에 전달되는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  3. TCP 세그먼트를 수신하여 사용자 데이타를 출력하는 수신처리부;
    사용자 데이타와 헤더정보를 입력받아 TCP 세그먼트 생성하여 송신하는 송신처리부; 및
    프로토콜 상태에 따라 상기 송/수신처리부를 제어하고 송수신하는 사용자 데이타와 관련된 제어정보를 처리하는 제어부로 구성되어,
    제어정보의 처리와 관계없이 데이타의 송수신이 이루어지도록 하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  4. 제 3 항에 있어서, 상기 장치는
    데이타를 저장하는 전용버퍼를 구비하여, 호스트 시스템의 메모리로부터 송신할 데이타를 읽어들이고, 수신된 데이타를 바로 상기 메모리에 전달하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  5. 제 3 항에 있어서, 상기 송신처리부는
    헤더정보를 입력받아 저장하는 헤더레지스터;
    상기 헤더 레지스터에 저장된 헤더정보를 입력받아 헤더의 길이를 계산하는 헤더길이생성모듈;
    상기 헤더길이생성모듈에서 계산된 헤더길이와 상기 헤더레지스터에 저장된 데이타정보를 입력받아 헤더와 데이타를 합한 TCP 세그먼트의 총 길이를 계산하는 총길이생성모듈;
    송신할 사용자 데이타를 읽어들여 저장하는 송신버퍼;
    전송전에 예측가능한 헤더와 데이타에 대한 체크섬을 계산하여 부분체크섬을 출력하는 부분체크섬생성모듈;
    전송 바로 전에 결정되는 헤더값과 상기 부분체크섬생성모듈에서 계산된 부분체크섬을 입력받아 최종적인 체크섬을 생성하는 최종체크섬생성모듈;
    상기 최종체크섬생성모듈로부터 출력된 최종적인 체크섬을 포함한 헤더정보를 저장하는 헤더버퍼;
    상기 부분체크섬생성모듈에서 부분체크섬의 계산을 위하여 읽어들인 데이타를 상기 송신버퍼로부터 인가받아 임시저장하는 임시버퍼; 및
    상기 헤더버퍼와 임시버퍼로부터 헤더정보와 데이타를 전송받아 TCP 세그먼트를 생성하여 출력하는 송신멀티플렉서로 구성되는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  6. 제 3 항에 있어서, 상기 수신처리부는
    수신된 TCP 세그먼트에서 헤더와 데이타를 분리하여 출력하는 수신멀티플렉서;
    에러여부를 판단하기 위해 상기 수신멀티플렉서로부터 분리출력된 헤더의 체크섬을 검증하는 헤더체크섬처리모듈;
    에러여부를 판단하기 위해 상기 수신멀티플렉서로부터 분리출력된 데이타의 체크섬을 검증하는 데이타체크섬처리모듈;
    상기 수신멀티플렉서로부터 분리출력된 데이타를 저장하는 수신버퍼;
    헤더에 실린 제어정보에 따른 처리를 실행하며 상기 헤더체크섬처리모듈과 데이타체크섬처리모듈의 검증에 의하여 에러가 있다고 판단될 때 수신된 데이타를 버리도록 상기 수신버퍼를 제어하는 수신헤더처리모듈; 및
    수신된 헤더를 저장하는 헤더레지스터로 구성되는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  7. 제 3 항에 있어서, 상기 제어부는
    프로토콜상태에 따라 송신처리부를 제어하는 적절한 제어신호를 생성하고, 송신한 세그먼트에 에러발생시 상기 송신처리부에 재전송을 지시하는 송신제어모듈;
    프로토콜상태에 따라 수신처리부를 제어하는 적절한 제어신호를 생성하고, 수신된 TCP 세그먼트의 송신측 포트가 올바른지를 체크하는 수신제어모듈; 및
    사용자 API로부터의 명령을 처리하고 상기 송신제어모듈 및 수신제어모듈의 동작을 제어하고, 동작상태를 사용자 응용에 알려주는 중앙제어모듈로 구성되는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  8. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 장치는 송수신할 데이타를 보관하는 상기 송신버퍼 및 수신버퍼의 관리를 위하여, 각각의 버퍼에서 사용자 데이타를 기입할 위치를 가르키는 포인터(WC)와, 다음에 출력할 사용자 데이타가 저장된 위치를 가르키는 포인터(RC)와, 다음 승인(acknowledge)을 받을 위치를 가르키는 포인터(FC)를 구비하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  9. 송신할 사용자 데이타를 읽어들이는 버퍼;
    전송 전에 예측가능한 헤더 값과 데이타에 대한 부분 체크섬을 계산하는 제1모듈;
    상기 제1모듈에서 계산된 부분체크섬과 전송전에 결정되는 헤더값을 입력받아 최종적인 체크섬을 생성하는 제2모듈; 및
    상기 제1,2모듈을 거쳐 최종적인 체크섬이 계산되어 출력될 때 까지 해당 사용자 데이타를 임시저장하는 임시버퍼로 이루어진 체크섬 계산구조를 포함하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치.
  10. 전송할 데이타가 있는지를 검사하는 단계와,
    전송할 데이타가 있으면, 최초의 데이타인지를 체크하는 단계와,
    최초로 전송하는 데이타인 경우 체크섬을 계산하는 단계와,
    체크섬 계산 후, TCP 세그먼트를 생성하여 전송함과 동시에, 다음 전송할 데이타 및 헤더에 대한 체크섬을 계산하는 단계와,
    최초로 전송하는 데이타가 아니면, 상기 단계에서 계산된 체크섬 및 데이타를 삽입하여 TCP 세그먼트를 생성하고 전송함과 동시에, 다음 전송할 데이타 및 헤더에 대한 체크섬을 계산하는 단계를 포함하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치의 동작방법.
  11. 다중채널환경으로 된 티씨피/아이피를 하드웨어적으로 처리하는 장치의 동작방법에 있어서,
    대기상태에서 데이타를 전송할 시간인지를 체크하는 단계;
    데이타 전송 시간인 경우 해당 채널의 데이타를 전송하는 단계;
    데이타 전송 시간이 아닌 경우 처리할 데이타가 있는지를 체크하는 단계; 및
    데이타 전송 시간이 아닌 경우 체크된 처리 데이타에 대한 체크섬 계산을 수행하는 단계로 구성되며,
    상기 과정은 각 채널별로 수행되는 것을 특징으로 하는 티씨피/아이피를 하드웨어적을 H처리하는 장치의 동작방법.
  12. 데이타 전송시, 전송할 데이타가 기억된 버퍼의 주소를 시퀀스넘버 필드에 삽입하고, 해당 주소에 기억된 데이타를 데이타필드에 삽입하여, 각 세그먼트를 생성하고,
    수신세그먼트의 데이타 재조립시, 시퀀스넘버 필드의 값에 해당하는 버퍼의 주소에 수신된 세그먼트의 데이타를 저장하는 것을 특징으로 하는 티씨피/아이피를 하드웨어적으로 처리하는 장치의 동작방법.
KR1020010002812A 2000-01-19 2001-01-18 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법 Ceased KR20010076328A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US17697100P 2000-01-19 2000-01-19
US60/176,971 2000-01-19
US62668700A 2000-07-27 2000-07-27
US09/626,687 2000-07-27

Publications (1)

Publication Number Publication Date
KR20010076328A true KR20010076328A (ko) 2001-08-11

Family

ID=26872806

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010002812A Ceased KR20010076328A (ko) 2000-01-19 2001-01-18 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법

Country Status (3)

Country Link
EP (1) EP1124362A3 (ko)
JP (1) JP2001268159A (ko)
KR (1) KR20010076328A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100492490B1 (ko) * 2002-10-31 2005-06-02 크로스반도체기술 주식회사 IPv4/IPv6 변환에 있어서 TCP 세그먼트/UDP 데이터그램의체크섬 계산 장치 및 방법
KR100649643B1 (ko) * 2005-05-11 2006-11-27 부산대학교 산학협력단 Tcp/ip 가속장치
KR100950528B1 (ko) * 2003-12-03 2010-03-30 삼성전자주식회사 복수 개의 데이터를 계층별로 처리하는 장치 및 방법
US7818460B2 (en) 2006-12-04 2010-10-19 Electronics And Telecommunications Research Institute Hardware device and method for transmitting network protocol packet
US7849214B2 (en) 2006-12-04 2010-12-07 Electronics And Telecommunications Research Institute Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030080443A (ko) * 2002-04-08 2003-10-17 (주) 위즈네트 하드웨어 프로토콜 프로세싱 로직으로 구현된 인터넷 통신프로토콜 장치 및 상기 장치를 통한 데이터 병렬 처리 방법
US7487264B2 (en) 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
US7843968B2 (en) 2002-09-30 2010-11-30 Sanyo Electric Co., Ltd. Communication apparatus and applications thereof
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7460531B2 (en) 2003-10-27 2008-12-02 Intel Corporation Method, system, and program for constructing a packet
JP4343760B2 (ja) 2004-04-28 2009-10-14 株式会社日立製作所 ネットワークプロトコル処理装置
US7620050B2 (en) 2004-09-10 2009-11-17 Canon Kabushiki Kaisha Communication control device and communication control method
KR100974105B1 (ko) 2005-06-21 2010-08-04 엔엑스피 비 브이 패킷 프로세싱 방법 및 패킷 프로세싱 장치를 포함하는장치
JP4611826B2 (ja) * 2005-07-12 2011-01-12 Nttエレクトロニクス株式会社 送信装置
JP2007195240A (ja) * 2007-03-16 2007-08-02 Sanyo Electric Co Ltd パケット処理装置、通信装置
JP2008283394A (ja) * 2007-05-09 2008-11-20 Matsushita Electric Ind Co Ltd 通信装置及び通信用集積回路
JP2010057033A (ja) 2008-08-29 2010-03-11 Nec Electronics Corp 通信装置及び方法
US9042244B2 (en) 2008-12-25 2015-05-26 Panasonic Intellectual Property Corporation Of America TCP transmission control device and method of control of TCP transmission
JP5729938B2 (ja) * 2010-08-04 2015-06-03 キヤノン株式会社 通信装置およびその制御方法
JP2013102556A (ja) * 2013-03-05 2013-05-23 Renesas Electronics Corp 通信装置及び方法
US9356737B2 (en) * 2014-03-26 2016-05-31 Keysight Technologies, Inc. Retry buffer and method of performing retry operation using retry buffer
CN112073435B (zh) * 2020-09-28 2022-11-04 山东产研集成电路产业研究院有限公司 一种降低toe中发送通道传输延迟量的方法
CN114253718B (zh) * 2021-12-13 2025-04-18 北京天融信网络安全技术有限公司 数据处理方法、装置、电子设备及存储介质
CN119232413A (zh) * 2023-06-30 2024-12-31 北京罗克维尔斯科技有限公司 数据传输方法、装置、设备、介质、车辆及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0172119B1 (ko) * 1989-08-08 1999-03-30 리차드 데이비드 크랙 올레핀 중합용으로 적절한 바나듐-기재촉매의 제조방법
JP2000115274A (ja) * 1998-09-30 2000-04-21 Nec Corp Potシステムおよびpotシステム通信方式
KR200192007Y1 (ko) * 2000-02-29 2000-08-16 솔내시스템주식회사 이더넷용 티씨피/아이피 모뎀
KR20010043790A (ko) * 1998-06-11 2001-05-25 코야마 리오 Tcp/ip/ppp 모뎀

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2789628B2 (ja) * 1988-12-29 1998-08-20 ヤマハ株式会社 通信制御集積回路
JP2820285B2 (ja) * 1989-09-22 1998-11-05 沖電気工業株式会社 遠隔電源制御方式
JPH077531A (ja) * 1992-07-08 1995-01-10 Nec Corp 通信手順制御装置
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US5802278A (en) * 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
JP3476985B2 (ja) * 1995-12-28 2003-12-10 株式会社東芝 パケット通信システムおよびパケット通信制御方法
US6532531B1 (en) * 1996-01-24 2003-03-11 Sun Microsystems, Inc. Method frame storage using multiple memory circuits
US6173333B1 (en) * 1997-07-18 2001-01-09 Interprophet Corporation TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
JPH1188464A (ja) * 1997-09-04 1999-03-30 Fujitsu Ltd データ転送装置およびデータ転送方法
US6289023B1 (en) * 1997-09-25 2001-09-11 Hewlett-Packard Company Hardware checksum assist for network protocol stacks
JPH11112545A (ja) * 1997-10-01 1999-04-23 Fuji Electric Co Ltd メッセージ送受信処理装置及びメッセージ送受信処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0172119B1 (ko) * 1989-08-08 1999-03-30 리차드 데이비드 크랙 올레핀 중합용으로 적절한 바나듐-기재촉매의 제조방법
KR20010043790A (ko) * 1998-06-11 2001-05-25 코야마 리오 Tcp/ip/ppp 모뎀
JP2000115274A (ja) * 1998-09-30 2000-04-21 Nec Corp Potシステムおよびpotシステム通信方式
KR200192007Y1 (ko) * 2000-02-29 2000-08-16 솔내시스템주식회사 이더넷용 티씨피/아이피 모뎀

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100492490B1 (ko) * 2002-10-31 2005-06-02 크로스반도체기술 주식회사 IPv4/IPv6 변환에 있어서 TCP 세그먼트/UDP 데이터그램의체크섬 계산 장치 및 방법
KR100950528B1 (ko) * 2003-12-03 2010-03-30 삼성전자주식회사 복수 개의 데이터를 계층별로 처리하는 장치 및 방법
KR100649643B1 (ko) * 2005-05-11 2006-11-27 부산대학교 산학협력단 Tcp/ip 가속장치
US7818460B2 (en) 2006-12-04 2010-10-19 Electronics And Telecommunications Research Institute Hardware device and method for transmitting network protocol packet
US7849214B2 (en) 2006-12-04 2010-12-07 Electronics And Telecommunications Research Institute Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same

Also Published As

Publication number Publication date
JP2001268159A (ja) 2001-09-28
EP1124362A3 (en) 2004-01-07
EP1124362A2 (en) 2001-08-16

Similar Documents

Publication Publication Date Title
KR20010076328A (ko) 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법
CN115941616B (zh) 多路径rdma传输
US7142540B2 (en) Method and apparatus for zero-copy receive buffer management
US5491802A (en) Network adapter for inserting pad bytes into packet link headers based on destination service access point fields for efficient memory transfer
US10110518B2 (en) Handling transport layer operations received out of order
US7352763B2 (en) Device to receive, buffer, and transmit packets of data in a packet switching network
US6173333B1 (en) TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
US7934141B2 (en) Data protocol
US6747949B1 (en) Register based remote data flow control
US7978705B2 (en) Self-healing link sequence counts within a circular buffer
US20010025315A1 (en) Term addressable memory of an accelerator system and method
KR101283482B1 (ko) Pci 익스프레스 프로토콜 처리 장치
EP1435717A2 (en) Encapsulation mechanism for packet processing
EP0572146A2 (en) Insertion of network data check sums by a network adapter
US20080181224A1 (en) Apparatus and system for distributing block data on a private network without using tcp/ip
US7203889B2 (en) Error correction for memory
CN107257329A (zh) 一种数据分段卸载发送方法
US7385925B2 (en) Data flow control method for simultaneous packet reception
EP1447947A2 (en) Frame alteration logic for network processors
US6816889B1 (en) Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node
US6941425B2 (en) Method and apparatus for read launch optimizations in memory interconnect
US7539204B2 (en) Data and context memory sharing
JPH0678001A (ja) ネットワークアダプタシステム
US20080313363A1 (en) Method and Device for Exchanging Data Using a Virtual Fifo Data Structure
JPH0320094B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20010118

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20021015

Patent event code: PE09021S01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20030630

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20040331

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20030630

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

Patent event date: 20021015

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I