KR100646858B1 - Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법 - Google Patents

Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법 Download PDF

Info

Publication number
KR100646858B1
KR100646858B1 KR1020050090066A KR20050090066A KR100646858B1 KR 100646858 B1 KR100646858 B1 KR 100646858B1 KR 1020050090066 A KR1020050090066 A KR 1020050090066A KR 20050090066 A KR20050090066 A KR 20050090066A KR 100646858 B1 KR100646858 B1 KR 100646858B1
Authority
KR
South Korea
Prior art keywords
socket
processor
tcp
command
information
Prior art date
Application number
KR1020050090066A
Other languages
English (en)
Other versions
KR20060064511A (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 KR1020050090066A priority Critical patent/KR100646858B1/ko
Priority to US11/297,127 priority patent/US7756961B2/en
Publication of KR20060064511A publication Critical patent/KR20060064511A/ko
Application granted granted Critical
Publication of KR100646858B1 publication Critical patent/KR100646858B1/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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 네트워크 프로토콜 계층을 이용하는 네크워크 응용 프로그램에서 프로토콜 계층과의 연결 역할을 하는 소켓의 정보를 생성및 관리하기 위한 하드웨어 장치 및 방법에 관한 것이다.
소켓의 정보를 생성및 관리하기 위한 하드웨어 장치는, 소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하는 TCP 송신전용프로세서; 새로운 패킷을 수신하면, 해당 소켓 ID의 검색 신호를 생성하는 TCP 수신전용프로세서; 상기 TCP 송신전용프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP 수신전용프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP 송신전용프로세서로 제공하는 소켓 관리부; 및 상기 TCP 송신전용프로세서의 제어에 따라 소켓 정보를 저장하고, 상기 TCP 수신전용프로세서로 소켓 정보를 제공하는 메모리부;를 포함한다.
소켓(Socket), 전송제어프로토콜(TCP), TOE(TCP Offload Engine), 소켓 생성 및 검색, 락킹(Locking) 기법

Description

TOE기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치 및 방법{Hardware device and behavior manner for creation and management of socket information based on TOE}
도 1은 프로토콜 가속을 위한 TOE의 전체 하드웨어 장치중 본 발명의 실시예에 따른 소켓의 생성 및 관리를 위한 하드웨어 장치를 보여주는 도면,
도 2 는 도 1에 도시된 소켓관리부의 상세구성을 보여주는 도면,
도 3은 도 2에 도시된 상기 송신명령레지스터 및 송신결과레지스터의 포맷을 나타내는 도면,
도 4는 도 2에 도시된 상기 수신명령레지스터 및 수신결과레지스터의 포맷을 나타내는 도면,
도 5는 도 1에 도시된 락킹 관리부의 상세 구성을 보여주는 도면,
도 6은 도 5에 도시된 송신명령 레지스터 및 수신명령 레지스터를 명령 레지스터(Command Resister)의 포맷을 나타내는 도면,
도 7은 도 5에 도시된 송신결과 레지스터 및 수신결과 레지스터를 위한 결과레지스터(Result Register)의 포맷을 나타내는 도면이다.
본 발명은 TCP프로토콜의 가속을 위하여 하드웨어를 사용하는 TOE (TCP Offload Engine) 에서 네트워크 응용 프로그램과의 연결 역할을 하는 소켓의 정보를 전용하드웨어로직을 통하여 생성하고 관리하기 위한 하드웨어 장치 및 방법에 관한 것이다.
컴퓨터 시스템에서 다수의 네트워크 응용 프로그램의 수행으로 인해 프로토콜 계층을 이용하기 위한 소켓의 개수가 증가하게 되면 소켓 정보의 생성 및 관리에 상당한 작업이 필요하게 된다. 프로토콜 가속을 위하여 하드웨어 엔진을 이용하는 TOE (TCP Offload Engine) 에서는 이러한 소켓의 정보를 생성하고 관리하기 위한 펌웨어나 하드웨어 장치를 필요로 한다. 본 발명은 TOE 를 디자인 할 때 소켓의 정보를 하드웨어 상에 빠르고 효과적으로 생성 및 관리하기 위한 구현방법을 제안하고 있다.
일반적으로 네트워크로 연결된 시스템 상호간에는 서버와 클라이언트의 관계가 형성되어진다. 서버에는 다수의 클라이언트가 연결될 수 있으며 클라이언트로부터의 요구를 받아들여 일을 처리해주고자 하는 독립적인 시스템내의 프로세스이다. 클라이언트는 어떤 일을 처리하기 위해 서버로 요청을 하는 독립적인 시스템내의 프로세스이다. 서버와 클라이언트 상호간의 통신을 위해서는 네트워크 프로그램과 같은 프로그램이 이용된다. 이러한 네트워크 프로그램은 소프트웨어로 작성된 통신 접속점이라 할수 있는 소켓을 통하여 네트워크상에서 데이터를 송수신하게 된다.
종래 네트워크 프로그램에서는 소켓의 생성 및 관리를 운영체제상의 네트워크프로토콜 스택에서 담당하였으며 소프트웨어로 처리되었다. 소켓은 시스템내에서 서버 및 클라이언트 프로세스에 의해서 활성화된 연결마다 생성되어지며 각각의 프로세스가 증가할수록 운영체제 내부의 프로토콜 스택에서 생성 및 관리해야 될 소켓의 수도 증가하게되며 그로 인해 시스템내에서 네트워크 프로토콜 처리를 위한 상당한 부하가 발생하여 전체적인 시스템의 성능을 저하시키게 된다.
따라서, 상술한 바와 같은 문제점을 해결하기 위한 본 발명의 목적은, TCP 프로토콜 가속을 위한 TOE에서 서버 및 클라이언트 프로세스에 의해 활성화된 연결에 대한 소켓의 생성 및 관리를 위한 전용 하드웨어 장치 및 구동방법을 제공하는 것이다.
보다 상세한 본 발명의 목적은, 기존 운영체제상의 네트워크 프로토콜 스택에 의한 소켓 생성 및 관리의 소프트웨어 처리를 TOE내부의 전용하드웨어 장치를 통해 하드웨어로 처리함으로써 시스템내에서 서버 및 클라이언트 프로세스에 의해서 활성화된 연결의 증가로 생성되는 소켓의 관리로 인해 발생되는 시스템의 부하를 감소시키는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명에 따른 장치는,
소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하는 TCP 송신전용프로세서; 새로운 패킷을 수신하면, 해당 소켓 ID의 검색 신호를 생성하는 TCP 수신전용프로세서; 상기 TCP 송신전용프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP 수신전용프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP 송신전용프로세서로 제공하는 소켓 관리부; 및 상기 TCP 송신전용프로세서의 제어에 따라 소켓 정보를 저장하고, 상기 TCP 수신전용프로세서로 소켓 정보를 제공하는 메모리부;를 포함한다.
이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
도1은 프로토콜 가속을 위한 TOE의 전체 하드웨어 장치중 본 발명의 실시예에 따른 소켓의 생성 및 관리를 위한 하드웨어 장치를 보여주는 도면이다.
도 1에 도시된 하드웨어 장치는 TCP 프로토콜을 송신, 수신 프로세서로 나누어 처리하는 경우, 그리고 소켓의 생성 및 삭제를 송신프로세서가 담당하고 수신 프로세서는 검색만을 요청하고 소켓의 정보가 하드웨어 장치의 내부메모리에 저장되는 경우에 사용된다.
도 1을 참조하면, 하드웨어 장치는, 소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하는 TCP 송신전용프로세서서(TCP Tx Processor) 100과, 새로운 패킷을 수신하면, 해당 소켓 ID의 검색 신호를 생성하는 TCP 수신전용프로세서 (TCP Rx Processor) 200과, 상기 TCP 송신전용프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP 수신전용프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP 송신전용프로세서로 제공하는 소켓 관리부 (socket management) 700, 및 상기 TCP 송신전용프로세서의 제어에 따라 소켓 정보를 저장하고, 상기 TCP 수신전용프로세서로 소켓 정보를 제공하는 메모리부 600을 포함하여 구성된다.
상기 소켓 관리부는 700은, 송신 프로세서 로컬 버스(Tx Processor Local Bus) 300을 통해 상기 TCP 송신전용프로세서 100과 연결되고, 수신 프로세서 로컬 버스(Rx Processor Local Bus) 400을 통해 상기 TCP 수신전용프로세서 200과 연결된다.
상기 메모리부 600은, 도시된 바와 같이, 상기 송신 프로세서 로컬 버스 300을 통해 상기 TCP 송신전용프로세서 100 및 상기 소켓 관리부 700과 연결되고, 수신 프로세서 로컬 버스 400을 통해 상기 TCP 수신전용프로세서 200 및 소켓 관리부 700과 연결된다. 그리고, 상기 메모리부 600은, 소켓의 정보가 저장되는 리소스(Resource)메모리 620과 상기 TCP 송신전용프로세서 100 또는 상기 TCP수신전용 프로세서 200의 제어에 따라 상기 리소스(Resource)메모리 620을 제어하기 위한 메모리제어부 610을 포함하여 구성된다.
또한, 도 1에 도시된 바와 같이, 하드웨어 장치는, 동일한 소켓에 대한 상기 TCP 송신전용프로세서 100 및 TCP 수신전용프로세서 200의 동시접속을 제어하는 락킹 관리부 800을 더 포함한다. 상기 락킹 관리부 800은 도시된 바와 같이, 송신 프로세서 로컬 버스 300을 통해 상기 TCP 송신전용프로세서 100과 연결되고, 수신 프로세서 로컬 버스 400을 통해 상기 TCP 수신전용프로세서 200과 연결된다.
본 명세서에 있어서, 소켓 정보라 함은 소켓을 구성하고 사용하기 위한 속성을 의미하는 것이다. 소켓 정보에 대한 예를 들면, 해당 소켓의 목적지 주소(destination IP address), 소스 주소(source IP address), 소켓 유형(socket type), 자신 및 목적지의 포트(port) 번호등이 있다.
소켓의 생성 및 관리는 크게 다섯가지동작으로 나눌수 있다. 첫번째로 네트워크 프로그램의 요청으로 상기 TCP 송신전용프로세서 100이 소켓 생성을 요청할 경우의 동작과 두번째로 삭제를 요청할 경우의 동작, 세번째로 서버 네트워크 프로그램에 의한 소켓의 대기를 요청할 경우의 동작, 네번째로 소켓 구성을 위한모든 정보가 모아졌을 경우의 동작, 마지막으로 상기 TCP 수신전용 프로세서가 소켓의 검색을 요청할 경우의 동작이다. 첫번째부터 네번째 동작은 상기 TCP송신전용 프로세서 100이 상기 소켓관리부 700의 송신명령레지스터 710에 명령을 내림으로써 이루어지고 마지막 동작은 상기 TCP수신전용 프로세서 200이 상기 소켓관리부 700의 수신명령레지스터 720에 명령을 내림으로써 이루어진다. 이하, 도면을 참조하여 소 켓의 생성 및 관리에 대하여 상세히 설명한다.
도 2는 상기 도 1에 도시된 소켓관리부 700의 상세구성을 보여주는 도면이다.
도 2를 참조하면, 소켓관리부 700은, 상기 TCP송신전용프로세서 100으로부터 소정 명령을 수신하기 위한 송신명령레지스터(Tx Command Register) 710, 상기 TCP수신전용프로세서 200으로부터 소정 명령을 수신하기 위한 수신명령레지스터(Rx Command Register) 720, 상기 송신명령레지스터 710 및 상기 수신명령레지스터 720이 수신한 명령을 확인하여 명령 내용을 판단하는 명령판단부 730, 소켓 ID, 목적지 주소, 소스 포트, 목적지 포트 중 적어도 어느한 정보를 저장하고, 상기 명령판단부 730의 판단된 명령에 따라, 소켓 ID를 관리하는 소켓ID관리부 750, 상기 소켓ID관리부 750의 처리결과를 저장하며, 상기 TCP송신전용프로세서 100과 연결되는 송신결과 레지스터(Tx Result Resister) 760, 및 상기 소켓ID관리부 750의 처리결과를 저장하며, 상기 TCP수신전용프로세서 770과 연결되는 수신결과 레지스터(Rx Result Resister) 770을 포함하여 구성된다.
상기 명령판단부 730은, 상기 송신명령 레지스터 710 및 상기 수신명령레지스터 730를 확인하여 명령수신 여부를 확인하는 수신 FSM(Finite State Machine) 731, 상기 수신 FSM 731을 통해 상기 상기 송신명령 레지스터 710 또는 상기 수신명령레지스터 730에 저장된 값을 전달받아, 명령 내용을 해석하는 명령검출부 733, 명령 내용이 소켓 ID의 검색일 경우, 후술하는 바와 같이, 소켓 ID를 찾기위한 인 덱스(index)를 생성하는 소켓 ID 인덱스 생성부 735를 포함하여 구성된다.
그리고, 상기 소켓ID관리부 750은, 소켓 ID, 목적지주소, 소스포트 및 목적지포트에 관한 정보를 저장하기 위한 소켓ID풀 755와, 외부 시스템으로부터 대기 요청이 있는 경우, 해당 소켓의 소켓 ID와 소스포트를 저장하기 위한 대기소켓 ID풀 753과, 상기 명령판단부 730이 판단한 명령 내용에 따라 상기 소켓ID풀 755 또는 대기소켓 ID풀 753을 제어하기 위한 소켓ID풀 관리부 751을 포함하여 구성된다.
도 3은 도 2에 도시된 상기 송신명령레지스터 710 및 송신결과레지스터 760의 포맷을 나타내고, 도 4는 도 2에 도시된 상기 수신명령레지스터 720 및 수신결과레지스터 770의 포맷을 나타내는 도면이다.
<소켓의 생성>
상기 소켓관리부 700은 상기 TCP송신전용 프로세서 100으로부터 소켓 생성 명령을 수신한 경우에, 저장되어 있는 기존의 소켓 ID를 참조하여 새로운 소켓 ID를 생성하고, 소켓 ID생성완료 표시를 생성한다.
이를 상세히 설명하면, 먼저 상기 TCP 송신전용프로세서 100이 소정 네트워크 프로그램으로부터 소켓 생성을 요청 받는다. 상기 TCP 송신전용프로세서 100이 소켓 생성을 요청 받으면, 상기 도 3에 도시된 송신명령 레지스터 710의 명령필드에 '01'을 사용하여 명령을 내린다. Protocol 필드는 연결지향프로토콜인 TCP를 나타내는 '00000110'와 비연결지향프로토콜인 UDP를 나타내는 '00010001' 로 구분되 어진다. 다음에, 상기 수신 FSM 731은 상기 송신명령 레지스터 710 및 수신명령 레지스터 720을 확인하여 명령이 저장되어 있는 레지스터의 값들을 명령검출부 733에 전달한다. 명령검출부 733은 해당 명령을 해석하여 소켓의 생성일 경우 소켓 ID및목적지 주소(Destination IP), 소스포트(Source Port), 목적포트(Destination Port) 정보를 저장하고 있는 상기 소켓 ID 풀(Socket_id Pool) 755을 관리하는 상기 소켓ID풀 관리부(Socket_id Pool Management) 751에게 새로운 소켓 ID의 생성을 요구하게 된다. 소켓 ID생성을 요청받은 상기 소켓ID풀 관리부 751은 소켓 ID 풀 755의 상태를 참고하여 소켓 ID를 생성하게 된다. 여기서 소켓 ID는 순차적으로 생성될 수도 있고, 임의의 빈 ID를 해당 소켓에 부여하는 방법으로 생성될 수 도 있다.
생성된 소켓 ID는 송신결과 레지스터 760의 Sock_id 필드에 저장하고, Result 필드에는 생성명령 완료(create success)를 나타내는'02'를 표시한다. TCP 송신전용 프로세서 100은 송신명령 레지스터 710을 확인하여 해당 소켓 ID를 기반으로 메모리부 600의 리소스 메모리 620에 저장될 주소를 계산하여 해당 영역에 소켓 정보를 저장하게 된다. 여기서, 소켓 ID를 기반으로 메모리에 저장될 주소를 계산하는 방법은 여러가지가 있을 수 있으며, 예를들어 소켓 ID와 소켓의 크기를 곱한 값을 저장될 주소로 정하는 방법도 가능하다.
<소켓의 삭제>
상기 소켓관리부 700은, 상기 TCP송신전용 프로세서 100으로부터 소켓 삭제 명령을 수신하면, 저장되어 있는 소켓 ID 중, 해당 소켓 ID를 삭제하고, 소켓 ID 삭제완료 표시를 생성한다.
이를 상세히 설명하면, 먼저, TCP 송신전용 프로세서 100이 네트워크 프로그램으로부터 소켓 소멸을 요청받으면 도 3에 보이는 송신명령 레지스터 710의 명령 필드에 '08'을 사용하여 명령을 내린다. Sock_id 필드에는 해당 소켓의 ID를 기록한다. 다음에, 수신 FSM 731은 상기 송신명령 레지스터 710 및 수신명령 레지스터 720을 확인하여 명령이 저장되어 있는 레지스터의 값들을 명령검출부 733에 전달한다. 명령검출부 733은 해당 명령을 해석하여 소켓의 삭제일 경우 상기 소켓ID풀 관리부(Socket_id Pool Management) 751에게 해당 소켓 ID의 삭제를 요구하게 된다. 소켓 ID 삭제를 요청받은 상기 소켓ID풀 관리부 751은 해당 소켓 ID의 필드값들을 리셋시키고, 송신결과 레지스터 760의 Result 필드에 명령수행 완료(command success)를 나타내는 '03'을 표시한다. TCP송신전용 프로세서 100은 송신결과 레지스터 760을 확인하여 해당 명령의 완료여부를 확인한다.
<소켓의 대기(Listen)>
상기 TCP송신전용 프로세서 100은, 외부 시스템으로부터 연결 요청을 기다릴 경우, 소켓의 대기명령을 상기 소켓관리부 700으로 전달하고, 상기 소켓 관리부 700은 해당 소켓ID와 소스포트를 저장하고를 소켓ID관리부 750에 저장하고, 대기명령 완료 표시를 생성하게 된다.
이를 상세히 설명하면, 소켓의 생성후, 네트워크상에 연결된 시스템상의 클 라이언트 프로세스로부터 연결 요청을 기다릴 경우 서버 프로세스는 소켓의 대기를 요청하게 된다.
먼저, TCP 송신전용 프로세서 100이 소정 서버 프로세스로부터 소켓 대기를 요청받으면, 도 3에 보이는 송신명령 레지스터 710의 명령 필드에 '02'를 사용하여 명령을 내린다. Sock_id 필드에는 해당 소켓의 ID를 기록하고 Source Port필드에는 서버 프로세스를 나타내는 정보를 기록한다.
다음에, 수신 FSM 731은 상기 송신명령 레지스터 710 및 수신명령 레지스터 720을 확인하여 명령이 저장되어 있는 레지스터의 값들을 명령검출부 733에 전달한다. 명령검출부 733은 해당 명령을 해석하여 소켓의 대기일 경우, 소켓 ID 및 소스포트 정보를 저장하고 있는 대기소켓 ID풀 753을 관리하는 소켓ID관리부 751에게 해당 소켓의 대기를 요구하게 된다. 해당 소켓의 대기를 요청받은 소켓ID관리부 751은 대기소켓 ID풀 753에 해당 소켓 ID와 소스 포트를 저장하고 송신결과 레지스터 760의 Result 필드에 대기명령 완료를 나타내는 '03'을 표시한다. TCP 송신전용 프로세서 100은 송신결과 레지스터 760을 확인하여 해당 명령의 완료여부를 확인한다.
소켓의 대기 단계에서, 네트워크 상의 호스트로부터 대기중인 소켓에 대한 연결요청이 수신되면, TCP수신전용프로세서 200은, TCP송신전용 프로세서 100으로 수신한 정보를 얄려주게 된다. 이후, TCP송신전용 프로세서 200은 관련 정보를 바탕으로 후술하는 바와 같이, 소켓 정보들을 업데이트 하게 되며 연결 확립을 위한 패킷을 해당 클라이언트 호스트에게 전송하게 된다. 즉, 후술하는 소켓 생성후 연 결요청 수신 단계에서, 상기 TCP송신전용 프로세서 100은 상기 대기소켓 ID풀 753에 저장된 소켓 ID 및 소스포트 정보를 이용하게 된다.
<소켓 생성후 연결요청 수신>
상기 TCP송신전용 프로세서 100은, 소켓 생성후, 외부 시스템으로부터 연결요청을 수신하게 되면, 소켓정보의 완료 명령을 상기 소켓관리부 700으로 전달하고, 상기 소켓 관리부 700은 해당 소켓 정보들을 소켓ID관리부 750에 저장하고 소켓정보완료명령 완료표시를 생성한다.
소켓의 생성후 네트워크상에 연결된 시스템상의 클라이언트 프로세스로부터 연결 요청을 받았을 경우 서버 프로세스는 소켓을 구성하는 모든 정보를 가지게 된다. 또한 소켓의 생성후 클라이언트 프로세스로부터 네트워크상에 연결된 시스템상의 서버 프로세스에게 연결 명령을 전송하는 경우 소켓을 구성하는 모든 정보를 가지게 되며, 이때 소켓ID풀 755에 저장되어 있는 해당 정보를 갱신하여야 한다. 이 갱신된 정보를 바탕으로 TCP 송신전용 프로세서 100이 네트워크상에 연결된 시스템으로부터 수신한 패킷을 기반으로 소켓 ID를 찾아낼 수 있다. 이때의 동작을 하기에서 상세히 설명한다.
먼저, TCP 송신전용 프로세서 100이 서버 프로세스 또는 클라이언트 프로세서로부터 소켓 정보 완료를 요청받으면 도 3에 도시된, 송신명령 레지스터 710의 명령 필드에 '04'을 사용하여 명령을 내린다. Sock_id 필드에는 해당 소켓의 ID를 기록하고 Protocol 필드는 연결지향프로토콜인 TCP를 나타내는 '00000110'와 비연 결지향프로토콜인 UDP를 나타내는 '00010001' 로 구분되어진다. 목적지 주소를 나타내는 Destination IP필드 및 송신 프로세스를 나타내는 Source Port, 수신 프로세스를 나타내 는Destination Port 필드를 기록한다.
다음에, 수신 FSM 731은 상기 송신명령 레지스터 710 및 수신명령 레지스터 720을 확인하여 명령이 저장되어 있는 레지스터의 값들을 명령검출부 733에 전달한다. 명령검출부 733은 해당 명령을 해석하여 소켓 정보의 완료일 경우, 해당 정보들을 소켓ID 풀 관리부 751에게 전달하고 해당 소켓 정보의 완료를 요구하게 된다. 해당 소켓 정보의 완료를 요청받은 소켓ID 풀 관리부 751은 소켓ID풀 755에 해당 정보들을 저장하고, 송신결과 레지스터 760의 Result 필드에 소켓정보완료 명령 완료를 나타내는 '03'을 표시한다. TCP 송신전용 프로세서 100은 송신결과 레지스터 760을 확인하여 해당 명령의 완료여부를 확인한다.
<소켓의 검색>
상기 TCP수신전용 프로세서 100은, 외부 시스템으로부터 새로운 패킷을 수신한 경우, 소켓 ID 검색 명령을 상기 소켓관리부 700으로 전달하고, 상기 소켓관리부 700은 소켓 ID 검색을 위한 인덱스를 생성하고, 상기 생성된 인덱스를 이용하여 해당 소켓 ID를 검색하고, 소켓 ID 검색 명령 완료표시를 생성하게 된다. 이하 상세히 설명한다.
TCP수신전용 프로세서 200이 네트워크에 연결된 시스템으로부터 새로운 패킷을 받았을 경우에는 해당 소켓의 ID를 찾아야한다. 먼저, TCP수신전용 프로세서 200이 수신명령 레지스터 720의 명령 필드에 '03'을 사용하여 명령을 내린다. Protocol 필드는 연결지향프로토콜인 TCP를 나타내는 '00000110'와 비연결지향프로토콜인 UDP를 나타내는 '00010001' 로 구분되어진다. 목적지 주소를 나타내는 Destination IP필드 및 송신 프로세스를 나타내는 Source Port, 수신 프로세스를 나타내는 Destination Port 필드는 수신한 패킷의 헤더에 저장되어 있는 정보를 이용한다.
다음에, 수신 FSM 731은 상기 송신명령 레지스터 710 및 수신명령 레지스터 720을 확인하여 명령이 저장되어 있는 레지스터의 값들을 명령검출부 733에 전달한다. 명령검출부 733은 해당 명령을 해석하여 소켓 ID의 검색일 경우, 해당 정보들을 소켓 ID를 찾기 위한 인덱스(index)를 생성하는 소켓ID 인덱스 생성부 735 및 소켓ID 풀관리부 751에게 전달한다. 여기서, 패킷을 수신한 경우 해당 소켓ID를 찾을때의 정보는 Destination IP, Source Port, Destination Port등을 의미한다.
그리고, 소켓 ID를 찾기 위한 인덱싱 생성 방법은 일반적인 해싱 테이블 기법을 사용하여 생성하는 것이 가능하다.
상기 소켓ID 인덱스 생성부 735에 의해 생성된 인덱스는 소켓ID 풀관리부 751에게 전달되고 상기 소켓ID 풀관리부 751은 인덱스 및 명령검출부 733에서 전달받은 정보들을 기반으로 소켓ID 풀 755에서 해당 소켓 ID를 찾는다. 상기 소켓ID 풀관리부 751은 찾은 소켓 ID를 수신결과 레지스터 770의 Sock_id 필드에 저장하고 Result 필드에 소켓ID 검색 완료를 나타내는 '06'을 표시한다. TCP 수신전용 프로세서 200은 수신결과 레지스터 770에 저장된 해당 소켓 ID를 기반으로 리소스 메모 리 620에서 읽어올 주소를 계산하여 해당 소켓 정보를 가져오게 된다. 여기서 상기 리소스 메모리 620에서 읽어올 주소 계산 방법은 상술한 소켓의 생성의 경우와 동일하다.
<동시 접속의 제어>
도 5는 도 1에 도시된 락킹 관리부 800의 상세 구성을 보여주는 도면이다.
상기 락킹 관리부 800은 상기 TCP 송신전용 프로세서 100과 TCP 수신전용 프로세서 200이 서로 같은 소켓의 정보를 동시에 쓰거나 읽는 도중, 다른 프로세서에 의하여 데이터가 변경되는 것을 막기위한 기능을 수행한다.
도 5를 참조하면, 락킹 관리부 800은, 상기 TCP 송신전용프로세서 100 및 상기 TCP 수신전용프로세서 200이 사용하기 위한 소켓 ID를 수신하고, 각각의 소켓 ID를 비교하는 소켓ID 비교부 810과, 상기 소켓 ID비교 결과에 따라 동일한 소켓 ID인 경우에는 어느한 프로세서의 사용 완료여부를 각 프로세서에 알려주고, 동일한 소켓 ID가 아닌 경우에는 사용가능함을 상기 TCP 송신전용프로세서 및 상기 TCP 수신전용프로세서로 알려주는 동시접속 제어부 820을 포함하여 구성된다.
상기 소켓ID 비교부 810은, 상기 TCP 송신전용프로세서 100이 사용하기 위한 소켓 ID를 수신하여 저장하는 송신명령레지스터 810과, 상기 TCP 수신전용프로세서 200이 사용하기 위한 소켓 ID를 수신하여 저장하는 수신명령레지스터 815와, 상기 송신명령레지스터 813에 저장된 소켓 ID와 상기 수신명령레지스터 815에 저장된 소켓 ID의 동일여부를 판단하는 비교부 811을 포함하여 구성된다.
상기 동시접속제어부 820은, 상기 비교부 811의 소켓 ID 비교결과에 따라 동일한 소켓 ID인 경우에는 어느 한 프로세서의 사용 완료여부와, 동일한 소켓 ID가 아닌 경우에는 사용가능여부를 판단하는 락킹레지스터 FSM 821과, 상기 락킹레지스터 FSM 821의 판단에 따라 상기 TCP 송신전용프로세서 100이 사용하기 위한 소켓 ID의 사용가능 여부를 저장하기 위한 송신결과레지스터 823과, 상기 락킹레지스터 FSM 821의 판단에 따라 상기 TCP 수신전용프로세서 200이 사용하기 위한 소켓 ID의 사용가능 여부를 저장하기 위한 수신결과레지스터 825를 포함하여 구성된다.
도 6은 도 5에 도시된 송신명령 레지스터 813 및 수신명령 레지스터 815를 명령 레지스터(Command Resister)의 포맷을 나타내고, 도 7은 도 5에 도시된 송신결과 레지스터 823 및 수신결과 레지스터 825를 위한 결과레지스터(Result Register)의 포맷을 나타낸다.
이하, 상기 도 5 내지 도 7을 참조하여, 동시접속 제어를 상세히 설명한다.
TCP 송신전용 프로세서 100 또는 TCP 수신전용 프로세서 200는 특정 소켓의 정보를 읽거나 쓰기 위해, 송신명령 레지스터 813 및 수신명령 레지스터 815의 Socket ID 필드에 해당 소켓 ID를 저장하고 Req 필드에 '1'을 표시한다. 이어 비교부 811은 각각의 소켓 ID를 비교하여, 비교 결과를 락킹 레지스터 FSM 821에 전달한다. 상기 락킹 레지스터 FSM 821은 상기 TCP 송신전용 프로세서 100 또는 TCP 수신전용 프로세서 200에 의해 한쪽의 프로세서가 이미 사용하고 있는 소켓 ID에 대 한 사용 요청이 들어온 경우에는, 사용하고 있는 프로세서가 사용을 완료하여 송신명령 레지스터 813 또는 수신명령 레지스터 815의 Req 필드를 '0'으로 변경하면, 나중에 요청한 프로세서에게 송신결과 레지스터 823 또는 수신결과 레지스터 825를 통해서 사용가능여부를 알려준다. 만일 한쪽 프로세서에서만 요청이 들어왔거나 양방향에서 요청이 들어왔지만 소켓 ID가 서로 다른 경우에는 각각에 대하여 송신결과 레지스터 823 또는 수신결과 레지스터 825를 통해서 사용 여부를 알려준다.
상기 TCP 송신전용 프로세서 100 또는 TCP 수신전용 프로세서 200는 각각 송신결과 레지스터 823 또는 수신결과 레지스터 825를 확인하여 해당 소켓의 사용가능여부를 확인한다.
도 8은 프로토콜 가속을 위한 TOE의 전체 하드웨어 장치중 본 발명의 다른 실시예에 따른 소켓의 생성 및 관리를 위한 하드웨어 장치를 보여주는 도면이다.
도 8에 도시된 하드웨어 장치는 TCP 프로토콜을 송신, 수신 프로세서로 나누어 처리하지 않고, 단일 프로세서를 이용하여 처리하는 구조이다. 따라서,
도 8을 참조하면, 하드웨어 장치는, 소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하고, 새로운 패킷을 수신하면 해당 소켓 ID의 검색 신호를 생성하는 TCP 프로세서 10과, 상기 TCP 송신전용프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP 수신전용프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP 송신전용프로세서로 제공하는 소켓 관리부 (socket management) 70, 및 상기 TCP 프로세서의 제어에 따라 소 켓 정보를 저장하고, 상기 TCP 수신전용프로세서로 소켓 정보를 제공하는 메모리부 60을 포함하여 구성된다. 이와 같이, 단일 프로세서를 이용하는 하드웨어장치는 도 1에 도시된 하드웨어 장치와 달리 송신 전용 프로세서와 수신 전용 프로세서의 동일한 소켓에 대한 동시 접속을 제어하는 락킹관리수단이 별도로 필요하지 않은 장점이 있다.
상기 도 8에 도시된 바와 같이, 단일 TCP 프로세서를 사용하는 경우에는 프로세서 로컬 버스 30을 통해 상기 소켓 관리부 70은 상기 TCP 프로세서 10 및 상기 메모리부 60과 접속된다.
상기 메모리부 60은 리소스 메모리 61과 메모리 제어부 61을 포함하여 구성되며, 상기 도 1의 메모리부 600과 동일한 구조이다.
도 9는 도 8에 도시된 소켓관리부 700의 상세구성을 보여주는 도면이다.
도 2를 참조하면, 소켓관리부 70은, 상기 TCP프로세서 10으로부터 소정 명령을 수신하기 위한 명령레지스터 71, 상기 명령레지스터 71이 수신한 명령을 확인하여 명령 내용을 판단하는 명령판단 블럭(72, 73, 74)과, 소켓 ID, 목적지 주소, 소스 포트, 목적지 포트 중 적어도 어느한 정보를 저장하고, 상기 명령검출부 73의 판단된 명령에 따라, 소켓 ID를 관리하는 소켓ID관리블럭(75, 76, 77)과, 상기 소켓ID관리블럭의 처리결과를 저장하며, 상기 TCP프로세서 10과 연결되는 결과 레지스터(Result Resister) 78을 포함하여 구성된다.
상기 명령판단블럭은 도 2의 명령판단부 730과 동일한 구성과 기능을 갖으 며, 상기 소켓ID관리블럭은 도 2의 소켓ID관리부 750과 동일한 구성 및 기능을 갖는다.
상기 도 8 및 도 9를 참조하면, 단일의 TCP 프로세서를 사용하는 경우에는, 단일 프로세서에 의해서, 소켓의 생성, 관리 검색을 제어하므로, 동일 소켓에 대한 동시접속을 제어하기 위한 별도의 락킹관리수단이 필요하지 않다. 또한 소켓의 생성 및 관리 검색을 위한 명령 레지스터 및 결과 레지스터가 하나씩만 필요하게 된다.
위에서 양호한 실시 예에 근거하여 이 발명을 설명하였지만, 이러한 실시 예는 이 발명을 제한하려는 것이 아니라 예시하려는 것이다. 이 발명이 속하는 분야의 숙련자에게는 이 발명의 기술사상을 벗어남이 없이 위 실시 예에 대한 다양한 변화나 변경 또는 조절이 가능함이 자명할 것이다. 그러므로, 이 발명의 보호범위는 첨부된 청구범위 뿐만 아니라, 위와 같은 변화예나 변경예 또는 조절예를 모두 포함하는 것으로 해석되어야 할 것이다.
상술한바와 같이 본 발명은 두개의 내장 프로세서가 독립된 송/수신 기능을 하도록 TCP 가속 하드웨어를 제작할때, 소켓의 생성 및 관리를 전용하드웨어 장치를 통해서 효과적인 관리를 할 수 있도록 해준다.
이 전용 하드웨어 장치를 이용하면 시스템내에서 서버 및 클라이언트 프로세 스에 의해서 증가하는 소켓의 생성 및 관리로 인해 증가되는 시스템의 부하를 방지할 수 있고 이로 인해 소켓의 생성 및 관리로 인한 전체적인 시스템의 성능저하를 방지할 수 있다.

Claims (31)

  1. 소켓 정보의 생성 및 관리를 위한 하드웨어 장치로서,
    소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하는 TCP 송신전용프로세서;
    새로운 패킷을 수신하면, 해당 소켓 ID의 검색 신호를 생성하는 TCP 수신전용프로세서;
    상기 TCP 송신전용프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP 수신전용프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP 송신전용프로세서로 제공하는 소켓 관리부; 및
    상기 TCP 송신전용프로세서의 제어에 따라 소켓 정보를 저장하고, 상기 TCP 수신전용프로세서로 소켓 정보를 제공하는 메모리부;를 포함하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  2. 제1항에 있어서, 상기 소켓 관리부는,
    송신 프로세서 로컬 버스를 통해 상기 TCP 송신전용프로세서와 연결되고, 수신 프로세서 로컬 버스를 통해 상기 TCP 수신전용프로세서와 연결되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  3. 제1항 또는 제2항에 있어서, 상기 메모리부는,
    송신 프로세서 로컬 버스를 통해 상기 TCP 송신전용프로세서 및 상기 소켓 관리부와 연결되고, 수신 프로세서 로컬 버스를 통해 상기 TCP 수신전용프로세서 및 소켓 관리부와 연결되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  4. 제 1항에 있어서, 동일한 소켓에 대한 상기 TCP 송신전용프로세서 및 TCP 수신전용프로세서의 동시접속을 제어하는 락킹 관리부를 더 포함하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  5. 제4항에 있어서, 상기 락킹 관리부는,
    송신 프로세서 로컬 버스를 통해 상기 TCP 송신전용프로세서와 연결되고, 수신 프로세서 로컬 버스를 통해 상기 TCP 수신전용프로세서와 연결되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  6. 제4항 또는 제5항에 있어서, 상기 락킹 관리부는,
    상기 TCP 송신전용프로세서 및 상기 TCP 수신전용프로세서가 사용하기 위한 소켓 ID를 수신하고, 각각의 소켓 ID를 비교하는 소켓ID 비교부; 및
    상기 소켓 ID비교 결과에 따라 동일한 소켓 ID인 경우에는 어느한 프로세서의 사용 완료여부와, 동일한 소켓 ID가 아닌 경우에는 사용가능함을 상기 TCP 송신전용프로세서 및 상기 TCP 수신전용프로세서로 알려주는 동시접속 제어부;
    를 포함하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  7. 제6항에 있어서, 상기 소켓 ID 비교부는,
    상기 TCP 송신전용프로세서가 사용하기 위한 소켓 ID를 수신하여 저장하는 송신명령레지스터와,
    상기 TCP 수신전용프로세서가 사용하기 위한 소켓 ID를 수신하여 저장하는 수신명령레지스터와,
    상기 송신명령레지스터에 저장된 소켓 ID와 상기 수신명령레지스터에 저장된 소켓 ID의 동일여부를 판단하는 비교부를 포함하여 구성되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  8. 제7항에 있어서, 상기 동시접속제어부는,
    상기 비교부의 소켓 ID 비교결과에 따라 동일한 소켓 ID인 경우에는 어느한 프로세서의 사용 완료여부와, 동일한 소켓 ID가 아닌 경우에는 사용가능여부를 판단하는 락킹레지스터 FSM과,
    상기 락킹레지스터 FSM의 판단에 따라 상기 TCP 송신전용프로세서가 사용하기 위한 소켓 ID의 사용가능 여부를 저장하기 위한 송신결과레지스터와,
    상기 락킹레지스터 FSM의 판단에 따라 상기 TCP 수신전용프로세서가 사용하기 위한 소켓 ID의 사용가능 여부를 저장하기 위한수신결과레지스터를 포함하여 구성되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  9. 제1항에 있어서, 상기 소켓관리부는,
    상기 TCP송신전용 프로세서로부터 소켓 생성 명령을 수신한 경우에, 저장되어 있는 기존 소켓 ID를 참조하여 새로운 소켓 ID를 생성하고, 소켓 ID생성완료 표시를 생성함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  10. 제9항에 있어서, 상기 TCP송신전용 프로세서는,
    상기 소켓관리부의 소켓 ID 생성완료표시를 확인하고, 상기 생성된 새로운 소켓 ID를 이용하여 상기 메모리부에 저장할 주소를 계산하여 해당 영역에 소켓정보를 저장함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  11. 제1항에 있어서, 상기 소켓관리부는,
    상기 TCP송신전용 프로세서로부터 소켓 삭제 명령을 수신하면, 저장되어 있는 소켓 ID 중, 해당 소켓 ID를 삭제하고, 소켓 ID 삭제완료 표시를 생성함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  12. 제1항에 있어서, 상기 TCP송신전용 프로세서는,
    외부 시스템으로부터 연결 요청을 기다릴 경우, 소켓의 대기명령을 상기 소켓관리부로 전달하고, 상기 소켓 관리부는 해당 소켓ID와 소스포트를 저장하고 대기명령 완료 표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  13. 제1항에 있어서, 상기 TCP송신전용 프로세서는,
    소켓 생성후, 외부 시스템으로부터 연결요청을 수신한 경우, 소켓정보의 완료 명령을 상기 소켓관리부로 전달하고, 상기 소켓 관리부는 해당 소켓 정보들을 저장하고 소켓정보완료명령 완료표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  14. 제1항에 있어서, 상기 TCP수신전용 프로세서는,
    외부 시스템으로부터 새로운 패킷을 수신한 경우, 소켓 ID 검색 명령을 상기 소켓관리부로 전달하고, 상기 소켓관리부는 소켓 ID 검색을 위한 인덱스를 생성하고, 상기 생성된 인덱스를 이용하여 해당 소켓 ID를 검색하고, 소켓 ID 검색 명령 완료표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  15. 제14항에 있어서, 상기 TCP수신전용 프로세서는,
    상기 소켓관리부의 소켓 ID 검색 명령 완료표시를 확인한 후, 검색된 소켓 ID를 이용하여 상기 메모리부에서 해당 소켓 정보를 획득함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  16. 제1항에 있어서, 상기 소켓관리부는,
    상기 TCP송신전용프로세서로부터 소정 명령을 수신하기 위한 송신명령레지스터;
    상기 TCP수신전용프로세서로부터 소정 명령을 수신하기 위한 수신명령레지스 터;
    상기 송신명령레지스터 및 상기 수신명령레지스터가 수신한 명령을 확인하여 명령 내용을 판단하는 명령판단부;
    소켓 ID, 목적지 주소, 소스포트, 목적지포트 중 적어도 어느한 정보를 저장하고, 상기 명령판단부의 판단된 명령에 따라, 소켓 ID를 관리하는 소켓ID관리부;
    상기 소켓ID관리부의 처리결과를 저장하며, 상기 TCP송신전용프로세서와 연결되는 송신결과 레지스터; 및
    상기 소켓ID관리부의 처리결과를 저장하며, 상기 TCP수신전용프로세서와 연결되는 수신결과 레지스터;를 포함하여 구성되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  17. 제16항에 있어서, 상기 소켓ID관리부는,
    소켓 ID, 목적지주소, 소스포트 및 목적지포트에 관한 정보를 저장하기 위한 소켓ID풀과,
    외부 시스템으로부터 대기 요청이 있는 경우, 해당 소켓의 소켓 ID와 소스포트를 저장하기 위한 대기소켓 ID풀과,
    상기 명령판단부의 판단된 명령에 따라 상기 소켓ID풀 또는 대기소켓 ID풀을 제어하기 위한 소켓ID풀 관리부를 포함하여 구성되는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  18. TCP송신전용 프로세서와 TCP수신전용 프로세서를 가지는 TCP 가속 하드웨어 장치에 있어서, 소켓의 정보를 생성 및 관리하기 위한 방법으로서,
    상기 TCP송신전용 프로세서로부터 소켓의 생성 명령을 받으면, 저장되어 있는 기존 소켓 ID를 참조하여 새로운 소켓 ID를 생성하고, 소켓 ID생성완료 표시를 생성하는 단계;
    상기 TCP송신전용 프로세서가 소켓 ID생성완료 표시를 확인하고, 생성된 소켓 ID를 이용하여 소정 메모리에 저장될 영역을 계산하는 단계; 및
    상기 상기 TCP송신전용 프로세서가 상기 메모리의 계산된 저장 영역에 해당 소켓 정보를 저장하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  19. 소켓 정보의 생성 및 관리를 위한 하드웨어 장치로서,
    소정 네트워크 프로그램의 소켓 생성 및 삭제 요청을 받아 소켓의 생성 및 삭제 명령을 처리하고, 새로운 패킷을 수신하면 해당 소켓 ID의 검색 신호를 생성하는 TCP 프로세서;
    상기 TCP 프로세서의 명령에 따라 소켓 ID의 생성 및 삭제 처리를 수행하고, 상기 TCP프로세서의 명령에 따라 소켓 ID를 검색하여 상기 TCP프로세서로 제공 하는 소켓 관리부; 및
    상기 TCP프로세서의 제어에 따라 소켓 정보를 저장하고, 상기 TCP프로세서로 소켓 정보를 제공하는 메모리부;를 포함하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  20. 제19항에 있어서, 상기 TCP 프로세서는,
    외부 시스템으로부터 연결 요청을 기다릴 경우, 소켓의 대기명령을 상기 소켓관리부로 전달하고, 상기 소켓 관리부는 해당 소켓ID와 소스포트를 저장하고 대기명령 완료 표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  21. 제19항에 있어서, 상기 소켓관리부는,
    상기 TCP프로세서로부터 소켓 삭제 명령을 수신하면, 저장되어 있는 소켓 ID 중, 해당 소켓 ID를 삭제하고, 소켓 ID 삭제완료 표시를 생성함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  22. 제19항에 있어서, 상기 TCP프로세서는,
    외부 시스템으로부터 연결 요청을 기다릴 경우, 소켓의 대기명령을 상기 소켓관리부로 전달하고, 상기 소켓 관리부는 해당 소켓ID와 소스포트를 저장하고 대기명령 완료 표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  23. 제19항에 있어서, 상기 TCP프로세서는,
    소켓 생성후, 외부 시스템으로부터 연결요청을 수신한 경우, 소켓정보의 완료 명령을 상기 소켓관리부로 전달하고, 상기 소켓 관리부는 해당 소켓 정보들을 저장하고 소켓정보완료명령 완료표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  24. 제19항에 있어서, 상기 TCP프로세서는,
    외부 시스템으로부터 새로운 패킷을 수신한 경우, 소켓 ID 검색 명령을 상기 소켓관리부로 전달하고, 상기 소켓관리부는 소켓 ID 검색을 위한 인덱스를 생성하고, 상기 생성된 인덱스를 이용하여 해당 소켓 ID를 검색하고, 소켓 ID 검색 명령 완료표시를 생성하는 것을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  25. 제19항에 있어서, 상기 TCP프로세서는,
    상기 소켓관리부의 소켓 ID 검색 명령 완료표시를 확인한 후, 검색된 소켓 ID를 이용하여 상기 메모리부에서 해당 소켓 정보를 획득함을 특징으로 하는 소켓 정보의 생성 및 관리를 위한 하드웨어 장치.
  26. TCP가속 하드웨어 장치에서, 소켓의 정보를 생성 및 관리하기 위한 방법으로서,
    TCP프로세서로부터 소켓의 생성 명령을 받으면, 저장되어 있는 기존 소켓 ID를 참조하여 새로운 소켓 ID를 생성하고, 소켓 ID생성완료 표시를 생성하는 단계;
    TCP프로세서가 소켓 ID생성완료 표시를 확인하고, 생성된 소켓 ID를 이용하여 소정 메모리에 저장될 영역을 계산하는 단계; 및
    상기 상기 TCP프로세서가 상기 메모리의 계산된 저장 영역에 해당 소켓 정보를 저장하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  27. TCP 가속 하드웨어 장치에서, 소켓의 정보를 생성 및 관리하기 위한 방법으로서,
    TCP프로세서로부터 소켓 삭제 명령을 수신하면, 저장되어 있는 소켓 ID 중, 해당 소켓 ID를 삭제하고, 소켓 ID 삭제완료 표시를 생성하는 단계; 및
    TCP프로세서가 상기 소켓 ID 삭제완료 표시를 확인하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  28. TCP 가속 하드웨어 장치에서, 소켓의 정보를 생성 및 관리하기 위한 방법으로서,
    외부 시스템으로부터 연결 요청을 기다릴 경우, 소켓의 대기명령을 수신하는 단계;
    해당 소켓ID와 소스포트를 저장하고 대기명령 완료 표시를 생성하는 단계; 및
    TCP프로세서가 상기 대기명령 완료 표시를 확인하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  29. 제28항에 있어서, 상기 해당 소켓 ID와 소스포트는 소정 대기 소켓 ID풀에 저장되는 것을 특징으로 하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  30. TCP 가속 하드웨어 장치에서 소켓의 정보를 생성 및 관리하기 위한 방법으로 서,
    소켓 생성후, 외부 시스템으로부터 연결요청을 수신한 경우, 소켓정보의 완료 명령을 수신하는 단계;
    해당 소켓 정보들을 저장하고 소켓정보완료명령 완료표시를 생성하는 단계; 및
    TCP프로세서가 상기 소켓정보완료명령 완료표시를 확인하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
  31. TCP 가속 하드웨어 장치에서, 소켓의 정보를 생성 및 관리하기 위한 방법으로서,
    외부 시스템으로부터 새로운 패킷을 수신한 경우, 소켓 ID 검색 명령을 수신하는 단계;
    소켓 ID 검색을 위한 인덱스를 생성하는 단계;
    상기 생성된 인덱스를 이용하여 해당 소켓 ID를 검색하고, 소켓 ID 검색 명령 완료표시를 생성하는 단계; 및
    상기 TCP프로세서가 상기 소켓 ID검색명령 완료표시를 확인하는 단계;를 포함하는 소켓의 정보를 생성 및 관리하기 위한 방법.
KR1020050090066A 2004-12-08 2005-09-27 Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법 KR100646858B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050090066A KR100646858B1 (ko) 2004-12-08 2005-09-27 Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법
US11/297,127 US7756961B2 (en) 2004-12-08 2005-12-07 Hardware device and method for creation and management of toe-based socket information

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020040102909 2004-12-08
KR20040102909 2004-12-08
KR1020050090066A KR100646858B1 (ko) 2004-12-08 2005-09-27 Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법

Publications (2)

Publication Number Publication Date
KR20060064511A KR20060064511A (ko) 2006-06-13
KR100646858B1 true KR100646858B1 (ko) 2006-11-23

Family

ID=36575679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050090066A KR100646858B1 (ko) 2004-12-08 2005-09-27 Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법

Country Status (2)

Country Link
US (1) US7756961B2 (ko)
KR (1) KR100646858B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451197B2 (en) * 2003-05-30 2008-11-11 Intel Corporation Method, system, and article of manufacture for network protocols
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
US7818460B2 (en) 2006-12-04 2010-10-19 Electronics And Telecommunications Research Institute Hardware device and method for transmitting network protocol packet
KR100900963B1 (ko) * 2006-12-04 2009-06-08 한국전자통신연구원 네트워크 프로토콜 패킷 전송을 위한 하드웨어 장치 및 그방법
KR100929852B1 (ko) * 2007-09-20 2009-12-04 한국전자통신연구원 공유 메모리를 이용한 가상 기계 상의 응용프로그램 간통신 인터페이스 장치 및 그 방법
KR100936918B1 (ko) * 2007-12-17 2010-01-18 한국전자통신연구원 정적 파일 전송 시스템콜 처리 toe 장치 및 방법
US7801998B2 (en) * 2008-10-03 2010-09-21 Canon Kabushiki Kaisha Establishing and maintaining a connection by a client to a server within a network
GB0919253D0 (en) * 2009-11-03 2009-12-16 Cullimore Ian Atto 1
US8875276B2 (en) 2011-09-02 2014-10-28 Iota Computing, Inc. Ultra-low power single-chip firewall security device, system and method
US8904216B2 (en) 2011-09-02 2014-12-02 Iota Computing, Inc. Massively multicore processor and operating system to manage strands in hardware
US9094433B2 (en) 2012-06-27 2015-07-28 Qualcomm Incorporated Systems and methods for bearer independent protocol gateway optimization

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334416A (ja) * 1994-06-06 1995-12-22 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおけるページ・モード・メモリの初期設定の方法および手段
US6247173B1 (en) * 1997-09-24 2001-06-12 Hewlett-Packard Company Computer compiler optimizer for reducing computer resource consumption during dependence analysis after loop unrolling
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6591302B2 (en) * 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
JP3183343B2 (ja) * 1999-02-26 2001-07-09 日本電気株式会社 データ通信方法、端末装置、中継装置、データ通信システム及びその記録媒体
US6859836B2 (en) * 2000-03-29 2005-02-22 Massoud Alibakhsh System and method for providing look ahead socket generation
KR100451721B1 (ko) * 2000-12-30 2004-10-08 엘지전자 주식회사 이동통신 시스템에서의 프로세서간 정합 방법
US6895429B2 (en) * 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US20040249957A1 (en) * 2003-05-12 2004-12-09 Pete Ekis Method for interface of TCP offload engines to operating systems
US8417852B2 (en) * 2003-06-05 2013-04-09 Nvidia Corporation Uploading TCP frame data to user buffers and buffers in system memory
US7287077B2 (en) * 2003-08-07 2007-10-23 International Business Machines Corporation Reservation of TCP/UDP ports using UID, GID or process name
US7287092B2 (en) * 2003-08-11 2007-10-23 Sharp Colin C Generating a hash for a TCP/IP offload device
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
KR100557468B1 (ko) * 2003-12-17 2006-03-07 한국전자통신연구원 티오이를 위한 소켓 호환 계층
US7949792B2 (en) * 2004-02-27 2011-05-24 Cisco Technology, Inc. Encoding a TCP offload engine within FCP
JP4343760B2 (ja) * 2004-04-28 2009-10-14 株式会社日立製作所 ネットワークプロトコル処理装置
US7613813B2 (en) * 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US9055088B2 (en) * 2005-03-15 2015-06-09 International Business Machines Corporation Managing a communication session with improved session establishment

Also Published As

Publication number Publication date
US7756961B2 (en) 2010-07-13
US20060123123A1 (en) 2006-06-08
KR20060064511A (ko) 2006-06-13

Similar Documents

Publication Publication Date Title
KR100646858B1 (ko) Toe기반 소켓 정보의 생성 및 관리를 위한하드웨어 장치및 방법
US9525592B2 (en) Client/server network environment setup method and system
US7565454B2 (en) State migration in multiple NIC RDMA enabled devices
US7953878B1 (en) Multi-threaded internet small computer system interface (iSCSI) socket layer
KR20080096547A (ko) 가상 네트워크 저장 시스템, 네트워크 저장 장치 및 가상 방법
CN109491928A (zh) 缓存控制方法、装置、终端及存储介质
US7437461B2 (en) Load balancing apparatus and method
WO2018173164A1 (ja) データ処理システム
US8250176B2 (en) File sharing method and file sharing system
US7725459B2 (en) Method and apparatus for manipulating data within a remote database in a multiple tier environment
JP2009093664A (ja) 情報管理装置、情報管理システム及びプログラム
WO2007141124A1 (en) Method and apparatus for processing remote shell commands
CN113014662A (zh) 数据处理方法及基于NVMe-oF协议的存储***
US7751346B2 (en) Apparatus for searching TCP and UDP sockets
WO2016101662A1 (zh) 一种数据处理方法及相关服务器
US20090157896A1 (en) Tcp offload engine apparatus and method for system call processing for static file transmission
US6704836B1 (en) Method for dynamic control of concurrent extended copy tasks
US8566521B2 (en) Implementing cache offloading
US20120331172A1 (en) Method And System For Improved Performance Of Network Communications With Interface Specific Buffers
CN115374057A (zh) 数据快照方法及相关设备
KR100832544B1 (ko) Toe와 이더넷 네트워크 인터페이스 카드를 동시에 지원하는 소켓 구조체 생성 방법, 소켓 구조체를 이용한 통신 방법 및 소켓 구조체를 기록한 기록매체
CN114584545A (zh) 数据管理方法、装置、***、存储介质及电子设备
US11064020B2 (en) Connection load distribution in distributed object storage systems
JP2002259197A (ja) アクティブコンテンツキャッシュ制御システムと、アクティブコンテンツキャッシュ制御装置及び方法と、アクティブコンテンツキャッシュ制御処理用プログラム及びそのプログラムの記録媒体
CN105354148B (zh) 一种数据处理方法及相关装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee