TCP Engine Design for TCP/IP Hardware Accelerator

TCP/IP Hardware Accelerator를 위한 TCP Engine 설계

  • 이보미 (이화여자대학교 정보통신학과) ;
  • 정여진 (이화여자대학교 정보통신학) ;
  • 임혜숙 (이화여자대학교 정보통신학과)
  • Published : 2004.05.01

Abstract

Transport Control Protocol (TCP) has been implemented in software running on CPU in end systems, and the protocol processing has appeared as a new bottleneck due to advanced link technology. TCP processing is a critical issue in Storage Area Network (SAN) such as iSCSL, and the overall performance of the Storage Area Network heavily depends on speed of TCP processing. TCP Engine implemented in hardware reduces the load of CPU in end systems as well as accelerates the protocol processing, and hence high speed data processing is achieved. In this paper, we have proposed a hardware engine for TCP processing. TCP engine consists of three major block, TCP Connection block Rx TCP block and Tx TCP block TCP Connection block is responsible for managing TCP connection states. Rx TCP block is responsible for receive flow which receives packets from network and sends to CPU. Rx TCP performs header and data processing and sends header information to TCP connection block and Tx TCP block It also assembles out-of-ordered data to in-ordered before it transfers data to CPU. Tx TCP block is responsible for transmit flow which transfers data from CPU to network. Tx TCP performs retransmission for reliable data transfer and management of transmit window and sequence number. Various test-cases are used to verify the TCP functions. The TCP Engine is synthesized using 0.18 micron technology and results in 51K gates not including buffers for temporal data storage.

Transport Control Protocol (TCP)은 소프트웨어로 구현되어 네트워크로 입출력되는 데이터를 처리하는 역할을 한다. 네트워크 기술의 향상으로 CPU에서 수행되는 TCP의 처리가 새로운 병목점으로 등장하고 있다. 또한 iSCSI와 같은 Storage Area Network (SAN) 에서도 TCP의 고속 처리가 전체 시스템의 성능을 결정하는 주요 관건이 되고 있다. 이러한 TCP를 하드웨어로 구현할 경우, 엔드 시스템에서의 CPU의 부하를 줄이고, 고속의 데이터 처리가 가능하여진다. 본 논문에서는TCP의 고속 처리를 위한 전용 하드웨어 엔진에 관하여 다룬다. TCP 하드웨어 는 TCP Connection을 담당하는 블럭과 Receive flow 를 위한 Rx TCP 블럭, Transmit Flow를 위한 Tx TCP 블럭으로 구성된다. TCP Connection 볼럭은 TCP connection 상태를 관리하는 기능을 수행한다. Rx TCP 블록은 네트워크로부터 패킷을 받아 헤더와 데이터 처리를 담당하는데, 헤더 정보를 parsing 하여 전달하고, 데이터를 순서에 맞게 조립하는 역할도 담당한다. Tx TCP 블럭은 CPU로부터 온 데이터를 패킷을 만들어 네트워크로 전송하는 기능, 신뢰성 있는 데이터 전송을 위한 재전송 기능1 Transmit Window 의 관리와 Sequence Number를 생성, 관리하는 기능을 담당한다. TCP 하드웨어 엔진을 검증하기 위한 여러 가지 Testcase들이 수행되었으며, 구현된 TCP 전용 하드웨어 엔진을 0.18 마이크론 기술을 사용하여 Synthesis 한 결과, 입출력 데이터를 저장하기 위한 버퍼를 제외하곡 51K 게이트가 소요됨을 보았다.

Keywords

References

  1. 한국정보과학회지 v.12 no.1 고속통신을 위한 TCP/IP 프로토콜의 하드웨어 설계 및 구현 진교홍;이정태
  2. 10 Gigabit Ethernet Alliance Introduction to iSCSI 10GEA
  3. 10 Gigabit Ethernet Alliance Introduction to YCP/IP Offload Engine (TOE) 10GEA
  4. Computer Networking : A Top-Down Approach Featuring the Internet James F.Kurose;Keith W.Ross
  5. Transmission Control Protocol rfc793