An Implementation of Socket Interface for TOEs

TOE를 위한 소켓 인터페이스의 구현

  • 손성훈 (상명대학교 소프트웨어학부)
  • Published : 2005.11.01

Abstract

In this paper, we propose a socket interface layer for large-scale multimedia servers that adopt TCP/IP Offload Engines (TOE). In order to provide legacy network applications with binary level compatibility, the socket interface layer intercepts all socket-related system calls to forward to either TOE or legacy TCP/IP Protocol stack. The layer is designed and implemented as a kernel module in Linux. The layer is located between BSD socket layer and INET socket layer, and passes the application's socket requests to INET socket layer or TOE. The layer provides multimedia servers and web servers with the following features: (1) All standard socket APIs and file I/O APIs that are supported (2) Support for binary level compatibility of existing socket programs (3) Support for TOE and legacy Ethernet NICs at the same time.

TOE (TCP/IP Offload Engine)는 부하가 많은 대규모 네트워크 서버에서 TCP/IP 프로토콜 처리의 부담을 줄이기 위해 고안된 하드웨어 장치이다. 본 논문에서는 TOE (TCP Offload Engine)를 사용하는 대규모 멀티미디어 서버를 위한 소켓 인터페이스 계층의 설계 및 구현에 대해 다룬다. 제안된 소켓 인터페이스 계층은 리눅스 운영체제 상에서 커널 모듈로 설계, 구현되었으며, BSD소켓 계층과 INET소켓 계층 사이에 존재하면서 응용 프로그램의 소켓 관련 요청을 TOE나 기존 INET소켓 계층으로 전달하는 역할을 한다. 본 논문에서 제안한 소켓 인터페이스는 소켓을 통해 TOE를 사용하는 응용 프로그램에 대해서 모든 표준 소켓 입출력 API와 파일 입출력 관련 API를 그대로 제공하고, 기존 응용 프로그램들에 대해서도 수정 없이 TOE의 기능을 그대로 사용할 수 있는 바이너리 수준의 호환성을 제공하며, 한 시스템에서 TOE와 이더넷 NIC을 동시에 사용할 수 있게 된다.

Keywords