KR20060126691A - 완료 프로세싱 방법 및 시스템 - Google Patents

완료 프로세싱 방법 및 시스템 Download PDF

Info

Publication number
KR20060126691A
KR20060126691A KR1020067013547A KR20067013547A KR20060126691A KR 20060126691 A KR20060126691 A KR 20060126691A KR 1020067013547 A KR1020067013547 A KR 1020067013547A KR 20067013547 A KR20067013547 A KR 20067013547A KR 20060126691 A KR20060126691 A KR 20060126691A
Authority
KR
South Korea
Prior art keywords
completion
processing
list
tcp
processor
Prior art date
Application number
KR1020067013547A
Other languages
English (en)
Other versions
KR100992257B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20060126691A publication Critical patent/KR20060126691A/ko
Application granted granted Critical
Publication of KR100992257B1 publication Critical patent/KR100992257B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/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/163In-band adaptation of TCP data exchange; In-band control procedures

Abstract

본 발명은 (예를 들어, TCP/IP 오프로드 엔진(TOE)의) TCP 수신기에 의한 완료 통합 방법 및 시스템에 관한 것이다. 이 방법은, 대역내 TCP 세그먼트를 프로세싱하는 단계와, 대역내 TCP 세그먼트의 완료 프로세싱을 수행하는 단계를 포함한다.

Description

완료 프로세싱 방법 및 시스템{COMPLETION COALESCINE BY TCP RECEIVER}
본 발명은 전반적으로 TCP(Transmission Control Protocol) 시스템에 관한 것이다. 특히, 본 발명은 TCP 수신기에 의한(예: TCP/IP 오프로드 엔진(TOE)에서의) 완료 통합(completion coalescing)을 위한 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다.
이 기술 분야에 알려진 바와 같이, TCP는 신뢰할 수 있는 서비스를 제공하기 위해 수신 통보 및 타임아웃 메커니즘을 이용하는 데이터 전송 프로토콜이다. 이러한 점에서, TCP는 전송되는 각 바이트에 시퀀스 번호를 할당하고, 각 수신 TCP로부터의 긍정 수신 통보(ACK)를 예상한다. TCP ACK가 타임아웃 간격 내에서 수신되지 않는 경우, 데이터가 전송된다. 이와 달리, 더 향상된 재전송 방안도 사용되는데, 이는 복수(예: 3개)의 중복 ACK의 수신에 따라 재전송 프로세스가 시작되게 한다.
수신 통보 메커니즘의 사용은 전용 TCP ACK 세그먼트의 송신 또는 데이터 세그먼트의 TCP 헤더의 TCP ACK 정보를 피기-백하는(piggy-backing) 것에 기초한다. 그러나, 전용 TCP ACK 세그먼트 또는 피기-백된 TCP ACK 정보의 프로세싱은 네트워크에 대한 오버헤드임이 분명하다. 이 오버헤드를 감소시키기 위해 TCP가 시도하는 한 가지 방식은 지연된 TCP ACK 방안을 이용하는 것이다. 이 방안은 단일 TCP ACK가 2개(또는 그 이상)의 수신되는 TCP 세그먼트마다 송신되게 한다.
추가적 TCP ACK 프로세싱 오버헤드는 새로운 TCP ACK 정보를 포함하는 수신된 TCP ACK 세그먼트 또는 데이터 세그먼트의 완료 프로세싱으로부터 발생한다. 이 기술 분야에 알려진 바와 같이, 이러한 완료 프로세싱은 예를 들어 개시된 고객 요청의 판독 및 프로세싱하여 이 요청이 완료되었는지를 식별하는 단계를 포함한다. TCP에 관한 주요한 문제점은, TCP 시퀀스 번호를 고객 요청으로 맵핑하는 간단한 방식을 제공하지 못한다는 점이다. 예를 들어, InfiniBand에서는, 수신 통보는 바이트 시퀀스 번호뿐만 아니라 메시지 시퀀스 번호도 포함한다. 이는 ACK 프로세싱 및 완료 처리가 고객 요청으로의 ACK-SN 맵핑을 수행하기 위해 정보를 수집할 필요 없이 수행될 수 있게 한다. 그러나, TCP에서, ACK는 이러한 정보를 포함하지 않는다. 이와 같이, TCP에서, 고객 요청으로의 ACK SN 맵핑을 수행하기 위해 정보가 수집되어야 한다. 요구되는 정보를 수집하는 한 가지 방식은 고객 요청을 판독 및 프로세싱하는 단계를 포함한다. 그러므로, 각 수신된 TCP ACK마다 이러한 시간 소모적 동작을 수행하는 것은, 네트워크와 프로세싱 리소스를 소비하고 다음 TCP 세그먼트를 프로세싱하기 전에 대역 내 TCP 세그먼트의 논리 프로세싱이 각 수신된 TCP ACK의 완료 프로세싱을 기다릴 것을 강요한다. 따라서, 완료 프로세싱 오버헤드는, 완료 동작 자체의 오버헤드 및 대역 내 TCP 세그먼트 프로세싱 논리와 완료 프로세싱 논리의 결합인 두 부분을 포함한다.
그러므로, 완료 프로세싱으로부터 독립적으로 대역 내 TCP 세그먼트를 프로세싱하는 방법, 시스템 및 컴퓨터 프로그램 제품에 대한 필요성이 존재한다. 이는 각 수신된 TCP ACK의 완료 프로세싱이 종료되는 것을 기다리지 않고 대역 내 TCP 세그먼트의 프로세싱을 계속할 수 있게 한다. 또한, 지연된 개별 완료 프로세싱은 본 발명이 ACK의 통합을 수행할 수 있게 한다(즉, ACK당 하나의 완료 동작을 수행하는 대신에 하나의 완료 동작이 복수의 ACK에 대해 수행될 수 있다). 동일한 방안이 RDMA 판독 요청의 완료 프로세싱에도 적용될 수 있다.
본 발명은 완료 프로세싱으로부터 독립적으로 (ACK를 포함하는) 대역내 TCP 세그먼트를 프로세싱하는 방법 및 시스템을 제공한다. 특히, 각 수신된 (전용 또는 데이터 세그먼트에 의해 전달되는) TCP ACK는 대역내 세스먼트 프로세싱 논리에 의해 즉시 처리되지 않지만, 대신에 완료 통합 리스트를 이용하여 프로세싱을 위해 스케줄링된다. 완료 프로세싱을 위해 접속을 스케줄링하는 단계는 접속 콘텍스트에서 TCP ACK 정보를 갱신하고 접속 콘텍스트를 완료 통합 리스트에 추가함으로써 수행된다.
본 발명의 제 1 양태는 완료 프로세싱을 위한 방법에 관한 것인데, 대역내 TCP 세그먼트를 프로세싱하는 단계와, 대역내 TCP 세그먼트의 프로세싱에 대해 독립적으로 수신된 TCP ACK의 완료 프로세싱을 수행하는 단계를 포함한다.
본 발명의 제 2 양태는 완료 프로세싱 시스템에 관한 것으로, 대역내 TCP 세그먼트를 프로세싱하는 TCP 논리와, 대역내 TCP 세그먼트의 프로세싱에 대해 독립적으로 수신된 TCP ACK의 완료 프로세싱을 수행하는 시스템을 포함한다.
본 발명의 제 3 양태는 본 발명의 방법을 수행하는 컴퓨터 프로그램 제품을 제공한다.
본 발명의 전술한 특성 및 기타 특성은 본 발명의 실시예에 대한 다음의 보다 상세한 설명으로부터 명백해질 것이다.
첨부된 도면을 참조하여 본 발명의 실시예를 설명할 것인데, 도면에서 동일한 참조 번호는 동일한 구성 요소를 지칭한다.
도 1은 본 발명에 따른 TCP ACK의 완료 프로세싱을 위한 완료 통합 시스템의 블록도를 도시하고 있다.
도 2는 본 발명에 따른 완료 통합 리스트의 구조를 도시하고 있다.
도 3a 내지 3b는 본 발명에 따른 완료 통합 리스트로의 완료 콘텍스트 추가를 도시하고 있다.
도 4는 본 발명에 따른 TCP ACK의 완료 프로세싱과 원격 데이터 메모리 액세스(RDMA) 판독 응답을 위한 완료 통합 시스템의 블록도를 도시하고 있다.
도 5는 RDMA 프로토콜의 완료 순서화 규칙을 도시하고 있다.
도 6은 RDMA 판독 동작을 개략적으로 도시하고 있다.
본 발명은 TCP 수신기에 의한 완료 통합을 위한 방법, 시스템 및 컴퓨터 프로그램 제품을 제공한다.
이제 도 1을 참조하면, 본 발명에 따른 완료 통합 시스템(10)의 블록도가 도시되어 있다. 본 발명을 설명하기 위해, 독자들이 당업자 수준으로 TCP에 대한 이해를 갖는 것으로 가정한다. 따라서, TCP에 관해서는 본 명세서에서 상세히 설명하지 않는다.
완료 통합 시스템(10)은 TCP 논리(12), 전송/재전송 처리자(14), 완료 처리자(16) 및 완료 통합 리스트(18)를 포함한다. 본 발명에 따르면, 수신된 TCP ACK마다의 완료 동작은 TCP 논리(12)에 의해 즉시 프로세싱되지 않는 대신, 완료 통합 리스트(18)를 이용하는 프로세싱을 위해 스케줄링된다. 그러나, TCP ACK는 TCP 논리(12)에 의해 즉시 프로세싱된다.
TCP 논리(12)는 수신(Rx) TCP 논리(20)와 송신(Tx) TCP 논리(22)를 포함한다. Rx TCP 논리(20)는 수신된 TCP 세그먼트를 프로세싱한다. 예를 들어, 이는 수신된 TCP 세그먼트로부터의 TCP 데이터 스트림의 마지막 통보된 바이트의 시퀀스 번호(즉, LastAckedSN)와 같은 TCP ACK 정보의 추출을 포함한다. 이 정보(즉, LastAckedSN)는 완료 요청(24)으로서 완료 처리자(16)로 전달된다. 이 완료 정보를 (예를 들어 완료 요청(24)을 통해) 완료 처리자(16)로 전달하기 위해, 본 발명은 완료 통합 리스트(18)를 이용한다. 완료 정보는 완료 통합 리스트(18)의 접속 콘텍스트를 통해 전달된다(LastAckedSN는 가장 최근의 AckedSN를 포함하는 접속 콘 텍스트의 필드이다). 접속 콘텍스트 자체가 완료 통합 리스트(18)로 연쇄(chained)되지만, 접속이 계류 중인 완료 요청을 갖지 않는 경우에만 그러하다. 접속이 완료 통합 리스트(18)의 완료 처리를 이미 기다리고 있는 경우(즉, 접속이 이미 계류 중인 완료 요청을 갖는 경우), 접속 콘텍스트의 정보는 갱신되어 보다 최근의 LastAckedSN를 포함한다. 이는 상대적으로 느리고 폭주하는(bursty) 완료 프로세스로부터 Rx TCP 논리(20)(또는 수신된 TCP 세그먼트의 처리/프로세싱)를 분리한다.
TCP 논리(12)의 Tx TCP 논리(22)는 주어진 접속에 대해 무엇을 전송할지를 결정한다. Tx TCP 논리(22)는 새로운 TCP 세그먼트의 전송을 수행하거나 이전에 전송된 TCP 세그먼트의 재전송을 수행하도록 결정될 수 있다. 재전송은 예를 들어 타임아웃에 의해 또는 Tx TCP 논리(22)에 의해 구현되는 다른 고속-회복 방법에 의해 야기될 수 있다. Tx TCP 논리(22)는 전송/재전송 동작을 수행하라는 요청(26)을 전송/재전송 처리자(14)로 전달하여, 이 처리자는 요청된 동작을 수행한다.
완료 통합 리스트(18)는 접속 리스트, 또는 더 정확하게는 접속 콘텍스트 리스트이다. 접속 콘텍스트는 특정 접속에 관한 데이터를 저장하는 데이터 구조(데이터, 포인터, 필드, 비트, 플래그 등을 포함함)이다. 완료 통합 리스트(18)는 콘텍스트 내부의 포인터를 이용하여 접속 콘텍스트를 연쇄시킴으로써 구현되는 단방향 링크 리스트이다. 완료 통합 리스트(18)는 처리할 계류 중인 완료 요청을 갖는 접속에 대응하는 접속 콘텍스트를 유지한다. 예를 들어, TCP ACK의 수신은 접속 콘텍스트를 완료 통합 리스트(18)에 추가하는 것을 유도할 수 있는 트리거링 중 하 나이다(즉, TCP ACK는 완료 처리자(16)에 의한 완료 처리를 위한 완료 통합 리스트(18)의 접속 콘텍스트를 스케줄링하는 트리거이다). 각 접속은 완료 통합 리스트(18)에 단 한번만 나타날 수 있다. 접속에 대응하는 접속 콘텍스트가 이미 완료 통합 리스트(18)에 연쇄된 경우, 접속 콘텍스트는 갱신되어 가장 최근의 정보를 포함하며, 최초로 연쇄된 완료 통합 리스트(18)에서 동일한 위치로 유지된다.
도 2에 도시된 바와 같이, 완료 통합 리스트(18)는 각 접속 콘텍스트(30)에 유지되는 포인터(28)를 이용하여 구현된다. 이러한 점에서, 각 접속 콘텍스트(30)는 포인터(28)를 통해 완료 통합 리스트(18)의 다음 접속 콘텍스트(30)로 포인팅하는 필드(32)를 포함한다. 접속은 TCP 논리(12)의 Rx TCP 논리(20)로부터의 요청(즉, 완료 요청)에 의해 완료 통합 리스트(18)의 테일(36)에 추가되며, 완료 처리자(16)에 의해 완료 통합 리스트(18)의 헤드(34)로부터 제거된다.
다시 도 1을 참조하면, 재전송 동작을 수행하기 위해, 전송/재전송 처리자(14)는 그 접속에 대한 이전의 모든 완료 요청이 완료되었음을 확실히 할 필요가 있다는 것을 유의하자. 그 이유는 재전송 동작은 일반적으로 TCP 데이터 스트림의 마지막 완료되지 않은 바이트로부터(또는 소비자의 마지막으로 완료되지 않은 요청으로부터 또는 그 내부에서) 시작하기 때문이다. 그러므로, 완료 동작은 재전송 처리에 선행해야 한다. 완료 요청(24)은 통상적으로 즉시 처리되지 않으며 대신 완료 통합 리스트(18)를 통해 완료 처리자(16)에 의해 처리되므로, 완료 처리자(16)에 의한 완료 처리 이전에 주어진 접속이 완료 통합 리스트(18)에서 기다리지 않는다는 것을 확실히 할 필요가 있다. 완료 동작이 그 접속에 대해 최대한 빨 리 완료되는 것을 보장하기 위해, 전송/재전송 처리자(14)는 완료 처리자(16)로 높은 우선 순위의 완료 요청(24HP)를 송신하며, 완료 처리자(16)가 주어진 접속에 대해 최대한 빨리 완료 동작을 수행할 것(즉, 완료 통합 리스트(18)가 바이패싱될 것)을 요청한다. 전송/재전송 처리자(14)는 후속적으로 이 동작의 완료를 기다리며, 그 후에만 재전송 동작을 수행한다.
완료 처리자(16)는 완료 통합 리스트(18)의 헤드(34)(도 2)로부터 접속 콘텍스트를 하나씩 취하도록(즉, 풀링하도록) 구성되며, 각 풀링된 접속 콘텍스트(30)의 완료 정보를 이용하여 이 기술 분야에 알려진 방식으로 완료 동작을 수행한다. 전술한 바와 같이, 완료 처리자(16)는 특정 접속에 대한 "긴급" 완료 동작을 수행하기 위해 전송/재전송 처리자(14)로부터 높은 우선 순위의 완료 요청(24HP)을 수신할 수도 있다. 이러한 경우, 완료 처리자(16)는 현재 완료 동작을 종료하고 전송/재전송 처리자(14)에 의해 요청되는 완료 동작을 수행한다.
전술한 바와 같이, 접속 콘텍스트(30)는 각 접속 콘텍스트(30)의 필드(32)에 유지되는 포인터(28)를 이용하여 완료 통합 리스트(18)에서 연쇄된다. 보다 정확히는, 접속 콘텍스트(30)는 접속 콘텍스트(30)의 Context[Ch #]:: NextInAckList 필드(32)를 이용하여 완료 통합 리스트(18)에서 연쇄된다.
접속 콘텍스트(30)의 Context[Ch #]:: NextInAckList 필드(32)는 완료 통합 리스트(18)를 구성하는 접속 콘텍스트(30)의 체인의 다음 접속 콘텍스트(30)의 접속 수를 유지한다(즉, Context[Ch #]:: NextInAckList 필드(32)는 체인의 다음 접속 콘 텍스트(30)로 포인터(28)를 효율적으로 제공한다). 새로운 접속 콘텍스트(30)를 체인에 추가하는 경우(예: 새로운 TCP ACK의 수신에 따라), 체인의 마지막 접속 콘텍스트(30)의 Context[Ch #]:: NextInAckList 필드(32)는 갱신되어 새롭게 추가되는 접속 콘텍스트(30)를 참조한다. 이는 도 3a 및 3b에 간단히 도시되어 있다. 특히, 도 3a에서, 완료 통합 리스트(18)는 서로 연쇄되는 2개의 접속 콘텍스트(301, 302)를 포함하며, 완료 통합 리스트(18)의 마지막 접속 콘텍스트(즉, 접속 콘텍스트(302))으로 포인팅하는(포인터(281)) 접속 콘텍스트(301)의 Context[Ch#]::NextAckList 필드(32)를 갖는 것으로 도시되어 있다. 새로운 접속 콘텍스트(303)가 체인의 테일(36)에 추가되면(예: 새로운 TCP ACK의 수신에 따라), 접속 콘텍스트(302)의 Context[Ch #]:: NextAckList 필드(322)는 갱신되어 새롭게 추가되는 접속 콘텍스트(303)를 참조하는데, 이는 이제 완료 통합 리스트(18)의 테일에 위치된다.
새로운 TCP ACK가 도달하면, TCP 논리(12)의 Rx TCP 논리(20)는 먼저 수신되는 TCP 세그먼트에 의해 전달되는 TCP ACK 정보를 접속 콘텍스트(30)의 Context[Ch#]::NextAckedSN 필드(38)를 이용하여 갱신한다(예를 들어, 도 3b의 접속 콘텍스트(303)의 Context[Ch#]::NextAckedSN 참조). 도 3b에는 도시되어 있지 않지만, 각 접속 콘텍스트(30)는 Context[Ch#]::NextAckedSN 필드(38)를 포함한다. 접속 콘텍스트(30) 필드 Context[Ch#]::NextAckedSN(38)는 TCP 데이터 스트림의 마 지막 수신 통보된 바이트의 시퀀스 번호를 표시한다.
또한, 접속 콘텍스트(30)는 접속 콘텍스트가 유효 완료 프로세싱 요청을 갖는지를 표시하는 비트를 유지한다. 이 비트는 접속 콘텍스트(30)의 Context[Ch#]::CompletionReq 필드(40)에 제공된다(예를 들어, 도 3b에서 접속 콘텍스트(303)의 Context[Ch#]::CompletionReq 필드(403) 참조). 도 3b에는 도시되지 않았지만, 각 접속 콘텍스트(30)는 Context[Ch#]::CompletionReq 필드(40)를 포함한다. 또한, 이 비트는 접속 콘텍스트(30)가 완료 통합 리스트(18)에 연쇄되는지도 표시한다. 접속 콘텍스트(30)가 완료 통합 리스트(18)로 이미 연쇄된 경우(즉, Context[Ch#]::CompletionReq 가 설정된 경우), Context[Ch#]::LastAckedSN의 갱신은 수신된 TCP ACK에 대응하는 접속 콘텍스트(30)의 ACK 정보의 통합을 효율적으로 유도한다.
접속 콘텍스트(30)(예: 새로운 TCP ACK에 대응하는 접속 콘텍스트)가 어떠한 계류 중인 완료 요청도 갖지 않는 경우, 즉, Context[Ch#]::CompletionReq가 클리어한 경우, 접속 콘텍스트(30)는 완료 통합 리스트(18)의 테일(36)에 추가되며, 완료 통합 리스트(18)의 마지막 접속 콘텍스트(30)의 Context[Ch#]::NextInAckList 필드는 갱신되어 새롭게 추가된 접속 콘텍스트(30)를 참조한다(즉, 체인의 다음 접속 콘텍스트(30)의 접속 수를 통한다).
완료 통합 리스트(18)의 완료 요청은 완료 처리자(16)에 의해 제공된다. 완료 처리자(16)는 전송/재전송 처리자(14)와 Rx TCP 논리(20)로부터 비동기적으로 (즉, 독립적으로 또는 병렬적으로) 동작한다. 이는 완료 프로세싱이 요청과 대역 내 TCP 트래픽을 전송하도록 게시된 것으로부터 분리되어 유지되게 한다.
완료 처리자(16)는 완료 통합 리스트(18)의 헤드(34)로부터 접속 콘텍스트(30)를 디큐잉하고(dequeues) Context[Ch#]::LastAckedSN 필드를 이용하여 이 기술 분야에 알려진 방식으로 완료 프로세싱을 수행한다. 완료 요청을 프로세싱한 후, 완료 처리자(16)는 대응하는 접속 콘텍스트(30)에 대한 Context[Ch#]::CompletionReq 비트를 클리어한다. 접속 콘텍스트(30)는 완료 프로세싱 동안에 새로운 완료 요청으로 갱신되므로, Context[Ch#]::CompletionReq 비트를 클리어하기 전에 완료 처리자(16)는 Context[Ch#]::LastAckedSN 필드는 처리된 LastAckedSN와 동일하다. Context[Ch#]::LastAckedSN 필드가 프로세싱된 LastAckedSN와 동일하지 않는 경우, 완료 처리자(16)는 갱신된 LastAckedSN를 이용하여 완료 프로세싱을 수행한다. 이는 완료 처리 동안 LastAckedSN의 갱신을 해결하는 한 가지 방법이다. 다른 방식은 그 접속을 완료 통합 리스트(18)의 끝으로 다시 위치시키고 그 완료를 처리할 추후의 서비스 사이클을 기다리는 것이다.
완료 통합 시스템(10)에 의한 완료 통합 리스트(18)와 완료 처리자(16)의 사용은 종래 완료 프로세싱 기술과 비교해서 완료 프로세싱 오버헤드를 감소시킨다. 각 완료 요청의 프로세싱이 시스템 구성(예: 기술자의 위치, 기술자 판독 동작의 지연 등)에 높게 의존하는 프로세싱 비용을 갖는 하나 이상의 기술자 판독 동작(descriptor read operations)을 포함하지만, 그럼에도 불구하고 본 발명의 완료 통합 시스템(10)의 사용은 요구되는 완료 요청 프로세싱 동작의 수를 감소시키고 페칭된(fetched) 기술자를 보다 잘 이용한다. 그러므로, 완료 동작을 수행하기 위해 필요한 접속 콘텍스트의 부분에 대한 추가적 판독에도 불구하고, 본 발명의 완료 통합 시스템(10)은 전체 시스템 성능을 향상시킨다. 이는 본 발명의 완료 통합 시스템(10)이 완료 처리 프로세스가 얼마나 느린지에 무관하게 새로운 TCP 세그먼트를 계속 수신하게 한다.
본 발명의 완료 통합 시스템(10)에 의해 제공되는 다른 개선점은 완료 처리자(16)로부터 대역 내 TCP 세그먼트의 프로세싱을 디커플링하는 것이다. 또한, 이는 완료 처리자(16)로부터의 동작 요구를 감소시키고 완료 처리의 우선 순위를 감소시킨다. 완료 처리는 셀프-튜닝 메커니즘이 되는데, 더 많은 접속이 완료 프로세싱을 기다리고, 더 많은 공격적(aggressive) 완료가 통합되며, 완료 프로세싱에 의해 시간과 대역폭이 더 적게 소모된다.
전술한 완료 통합 리스트는 대역 내 RDMA 판독 응답의 전송에 따라 계류 중인 RDMA 판독 요청의 완료를 프로세싱하도록 적응될 수 있다. 본 발명을 설명하기 위해, 독자는 RDMA 프로토콜과 그 구현에 대해 당업자와 같은 수준으로 이해하는 것으로 가정한다. RDMA 프로토콜은 예를 들어 웹 <www.rdmaconsortium.org>에서 이용 가능하다.
본 발명의 다른 실시예에 따른 완료 통합 시스템(100)은 계류 중인 RDMA 판독 요청의 완료를 프로세싱할 수 있으며 도 4에 도시되어 있다. 도시된 바와 같이, 완료 통합 시스템(100)은 (Rx TCP 논리(20) 및 Tx TCP 논리(22)를 포함하는) TCP 논리(12), 전송/재전송 처리자(14), 완료 처리자(16) 및 완료 통합 리스트(18) 를 포함하는데, 이는 완료 통합 시스템(10)의 대응 구성 요소에 대해 전술한 바와 같이 동작한다. 또한, 완료 통합 시스템(100)은 수신되는 RDMA 메시지를 처리하는 RDMA 논리(102)를 포함한다.
RDMA 프로토콜은, 예를 들어 모든 RDMA 요청이 소비자에 의해 게시된 순서대로 완료되어야 하는 특수 완료 순서화 규칙(예를 들어, 도 5 참조)을 정의한다. RDMA는 3종류의 요청을 갖는다.
1) 단일 RDMA 메시지(예: 송신, 기록)로 구성되는 RDMA 동작. 이들 동작은 로컬 호스트로부터 원격 호스트로 데이터를 전송하는 데 사용되며, 단일 RDMA 메시지는 원격 호스트로부터 로컬 호스트로 송신된다.
2)여러 개(예: 2개)의 RDMA 메시지(예: 판독)로 구성되는 RDMA 동작. 판독 동작은 원격 메모리로부터 데이터를 판독하도록 의도된다. 이러한 동작은 2개의 RDMA 메시지, 판독 요청 및 판독 응답으로 구성된다. 판독 요청은 원격 데이터 소스로 발신하는 요청에 의해 송신된다. 판독 요청 메시지는 원격 메모리로부터 데이터를 판독하고 응답 메시지를 구성하는 데 필요한 모든 정보를 전송한다. 원격 호스트에 의해 발생되는 응답 메시지는 판독 응답이다. 판독 응답 메시지는 요청자 메모리로 기록될 데이터와 데이터가 기록되어야 하는 위치의 기술을 전달한다. 판독 동작은 도 6에 개략적으로 도시되어 있다.
3) 어떠한 데이터의 전송도 일으키지 않는 (Bind, Fast-Register 등과 같은) 로컬 RDMA 동작.
로컬 RDMA 동작은 RDMA 네트워크 인터페이스 카드(RNIC)에 의해 그 동작이 종료되면 완료되는 것으로 고려한다. 송신 및 기록 동작은 RNIC가 RDMA 메시지의 모든 TCP 세그먼트가 신뢰성 있게 TCP 접속의 다른 종점으로 전송될 수 있음을 보장하면 완료되는 것으로 고려된다. 판독 동작은 RDMA 판독 응답 메시지가 판독 개시자에 의해 성공적으로 수신되었으면 완료된 것으로 고려된다.
완료 순서화 규칙의 일부는 RDMA 판독 요청은 RDMA 판독 응답 메시지가 수신될 때에만 완료된다. 그러므로, RDMA 프로토콜을 지원하기 위해, 완료 처리자(16)는 추가 완료 표시, (대응 RDMA 판독 요청을 효율적으로 완료하는) RDMA 판독 요청(104)을 필요로 한다. 따라서, RDMA 논리(102)가 RDMA 판독 응답(104)을 수신하면, 이는 완료 요청(106)을 완료 통합 리스트(18)에 게시한다. 따라서, 완료 처리자(16)는 완료 통합 리스트(18)의 접속 콘텍스트에 제공되는 TCP ACK로부터의 정보와 수신된 RDMA 판독 요청 모두를 이용하여 완료 동작을 수행한다.
수신된 TCP ACK의 완료 프로세싱에 관해 전술한 바와 유사한 방안이 대역 내 RDMA 판독 요청의 전송에 따라 계류 중인 RDMA 판독 요청의 완료 프로세싱을 위해 이용될 수 있다. 이러한 점에서, RDMA 판독 요청에 대응하는 접속 콘텍스트(30)는 완료 통합 리스트(18)에서 연쇄된다. 완료된 RDMA 판독 요청의 통합을 위해, 접속 콘텍스트(30)는 Context[Ch#]::CompletedReadRequestNum 필드의 완료된 RDMA 판독 요청의 수를 전달한다.
RDMA 논리(102)의 수신 논리가 대역 내 RDMA 판독 응답(104)을 전송하면, 이는 완료된 RDMA 판독 요청의 수를 증가시키고 접속 콘텍스트(30)의 Context[Ch#]::CompletedReadRequestNum 필드를 갱신한다. 접속이 완료 통합 리스 트(18)에 아직 연쇄되지 않은 경우, 즉, (Context[Ch#]::CompletedReadRequestNum 필드가 0이고, Context[Ch#]::CompletionReq가 클리어한 경우), 이 콘텍스트는 새롭게 추가되는 접속 콘텍스트(30)(예: 도 3a-3b에 도시된 프로세스 참조)에 대한 포인트로 완료 통합 리스트의 마지막 접속 콘텍스트(30)의 Context[Ch#]::NextInAckList 필드(32)를 갱신함으로써 완료 통합 리스트(18)로 연쇄된다. 또한, 완료 통합 리스트에 새롭게 추가된 접속 콘텍스트(30)의 연쇄에 따라, Context[Ch#]::CompletionReq 비트도 설정되어야 한다.
여러 동작이 완료 요청의 우선 처리를 요구한다. 예를 들어, (후술할) 재전송 요청과 같은 동작 및 대역 내 RDMA 판독 요청은 완료 요청의 우선 처리를 요구할 수 있다. 예를 들어, RDMA 판독 요청은 판독 큐가 요청을 둘 자유 공간이 없는 경우에만 우선 완료 프로세싱을 요구한다. 이 경우, RDMA 논리(102)는 RDMA 판독 요청을 프로세싱하기 전에 판독 큐의 어떤 공간을 우선 필요로 한다(이 프로세스는 상세히 후술할 것임). 두 경우, 완료 요청의 프로세싱은 지연될 수 없으며 요청 프로세싱 이전에 수행되어야 한다. 이 경우, 통합 바이패스가 수행되고, 완료 처리자(16)는 별도의 요청(18)을 수신하여 주어진 접속에 대한 완료를 수행한다. 이 경우, 완료 요청의 프로세싱은 완료 통합 리스트(18)의 완료 콘텍스트(30)의 위치로부터 독립적으로 수행된다. 완료 프로세싱 후, 본래 요청의 프로세싱이 재개될 수 있다.
RDMA 논리(124)로부터 올 수 있는 다른 완료 요청은 주어진 접속에 대해 "높은 우선 순위" 완료 동작을 수행하라는 요청이다. 이 요청은 전송/재전송 논 리(14)(전술한 바를 참조)에 의해 완료 처리자(16)로 송신되는 완료 요청(24HP)과 유사하다. 이는 블로킹 요청인데, RDMA 논리(102)가 이 요청을 수행하는 완료 처리자(16)를 기다린다는 것을 의미한다. 이 요청에 대한 이유는 RDMA 판독 요청의 수신이고, 수신 큐의 자유 공간이 부족한 것이다. RDMA 프로토콜은 주어진 순간에 (기록상에) 계류 중 일 수 있는 대역 내 RDMA 판독 요청의 수를 제한한다. 이 수는 판독 큐의 깊이를 정의한다. 완료 통합 리스트(18)의 완료 요청(예: 수신된 TCP ACK)의 통합으로 인해, 판독 큐는 완료 처리자(16)에 의해 아직 클린업되지 않은 경우일 수 있으며, 이 경우에 RDMA 논리(102)는 판독 큐의 어떤 자유 공간을 우선 필요로 하며 대역 내 RDMA 판독 요청을 프로세싱할 수 있다.
본 명세서에서 설명되는 시스템, 함수, 메커니즘, 방법 및 모듈은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다는 것을 이해할 것이다. 이들은 본 명세서에서 설명하는 방법을 수행하는 임의의 종류의 컴퓨터 시스템 또는 다른 장치로 구현될 수 있다. 전형적인 하드웨어와 소프트웨어의 조합은, 로딩되어 실행되면 컴퓨터 시스템이 본 명세서에 설명된 각각의 방법을 수행하도록 컴퓨터 시스템을 제어하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 시스템일 수 있다. 이와 달리, 본 발명의 하나 이상의 기능적 작업을 수행하는 특수화된 하드웨어를 포함하는 특정 용도 컴퓨터가 이용될 수 있다. 또한, 본 발명은 컴퓨터 프로그램 제품에 내장될 수 있는데, 이는 본 명세서에 설명되는 방법과 기능을 구현을 가능하게 하는 모든 특징을 포함하며 컴퓨터 시스템에서 실행되면 이들 방법과 기능을 수행할 수 있다. 이 문맥에서 컴퓨터 프로그램, 소프트웨어 프로그램, 프로그램, 프로그램 제품 또는 소프트웨어는, 정보 처리 기능을 갖는 시스템으로 하여금 (a)다른 코드, 언어 또는 표기법으로의 변환 및/또는 (b)상이한 재료 형성의 재생 중 하나 또는 모두의 후에 특정 기능을 수행하도록 의도된 임의의 언어에 의한 임의의 표현, 코드 또는 표기법, 인스트럭션 세트를 의미한다.
전술한 특정 실시예와 관련하여 본 발명을 설명하였지만, 당업자에게 많은 대안, 변형이 명백할 것이다. 따라서, 본 발명의 실시예는 예시를 위한 것이지 제한하기 위한 것이 아니다. 다음의 청구 범위에서 정의되는 본 발명의 사상과 범위를 벗어나지 않고 많은 변형이 이루어질 수 있을 것이다.

Claims (30)

  1. 대역 내 TCP 세그먼트를 프로세싱하는 단계와,
    상기 대역내 TCP 세그먼트의 프로세싱에 대해 독립적으로 수신된 TCP ACK의 완료 프로세싱을 수행하는 단계를 포함하는
    완료 프로세싱 방법.
  2. 제 1 항에 있어서,
    완료 프로세싱을 수행하는 단계는,
    완료 통합 리스트(a completion coalescing list)를 이용하여 각 수신된 TCP ACK의 완료 프로세싱을 스케줄링하는 단계를 더 포함하는
    완료 프로세싱 방법.
  3. 제 2 항에 있어서,
    상기 완료 통합 리스트를 이용하여 수신된 TCP ACK를 통합하는 단계를 더 포함하는
    완료 프로세싱 방법.
  4. 제 2 항에 있어서,
    상기 완료 통합 리스트를 통해 각 수신된 TCP ACK에 대응하는 완료 정보를 완료 처리자(completion handler)로 전달하는 단계를 더 포함하는
    완료 프로세싱 방법.
  5. 제 4 항에 있어서,
    각 수신된 TCP ACK에 대응하는 상기 완료 정보는 상기 완료 통합 리스트의 접속 콘텍스트를 통해 상기 완료 처리자에 전달되는
    완료 프로세싱 방법.
  6. 제 5 항에 있어서,
    상기 접속 콘텍스트를 상기 완료 통합 리스트에 연쇄시키는(chaining) 단계를 더 포함하는
    완료 프로세싱 방법.
  7. 제 6 항에 있어서,
    상기 완료 콘텍스트는, 상기 접속 콘텍스트에 대응하는 접속이 계류 중인 완료 요청을 갖지 않는 경우에 상기 완료 통합 리스트에 연쇄되기만 하는
    완료 프로세싱 방법.
  8. 제 7 항에 있어서,
    상기 접속 콘텍스트에 대응하는 상기 접속이 계류 중인 완료 요청을 갖지 않는 경우에 상기 접속 콘텍스트의 정보를 갱신하는
    완료 프로세싱 방법.
  9. 제 8 항에 있어서,
    상기 접속 콘텍스트의 갱신된 정보는 마지막 통보된 시퀀스 번호(LastAckedSN)를 포함하는
    완료 프로세싱 방법.
  10. 제 4 항에 있어서,
    상기 완료 통합 리스트를 선택적으로 바이패싱하고, 상기 완료 정보를 완료 프로세싱을 위해 상기 완료 처리자에 직접 송신하는 단계를 더 포함하는
    완료 프로세싱 방법.
  11. 제 10 항에 있어서,
    상기 완료 통합 리스트를 선택적으로 바이패싱하는 단계는 재전송 동작에 응답하여 수행되는
    완료 프로세싱 방법.
  12. 제 2 항에 있어서,
    상기 완료 통합 리스트를 이용하여 RDMA 판독 응답의 수신에 따라 RDMA 판독 요청의 완료를 프로세싱하는 단계를 더 포함하는
    완료 프로세싱 방법.
  13. 제 12 항에 있어서,
    상기 RDMA 판독 요청에 대응하는 접속 콘텍스트를 상기 완료 통합 리스트에 연쇄시키는 단계를 더 포함하는
    완료 프로세싱 방법.
  14. 제 12 항에 있어서,
    상기 완료 통합 리스트를 선택적으로 바이패싱하고, 상기 RDMA 판독 요청을 완료 프로세싱을 위해 상기 완료 처리자로 직접 송신하는 단계를 더 포함하는
    완료 프로세싱 방법.
  15. 제 14 항에 있어서,
    상기 완료 통합 리스트를 선택적으로 바이패싱하는 단계는,
    상기 RDMA 판독 요청을 위치시킬 충분한 자유 공간을 갖지 않는 판독 큐(Read Queue)에 응답하여 수행되는
    완료 프로세싱 방법.
  16. 기록 가능한 매체상에 저장되어 실행되면 제 1 항에 기재된 방법의 각각의 단계를 수행하는
    컴퓨터 프로그램 제품.
  17. 대역내 TCP 세그먼트를 프로세싱하는 TCP 논리와,
    상기 대역내 TCP 세그먼트의 프로세싱에 대해 독립적으로 수신된 TCP ACK의 완료 프로세싱을 수행하는 시스템을 포함하는
    완료 프로세싱 시스템.
  18. 제 17 항에 있어서,
    각 수신된 TCP ACK의 완료 프로세싱을 스케줄링하는 완료 통합 리스트를 더 포함하는
    완료 프로세싱 시스템.
  19. 제 18 항에 있어서,
    상기 완료 통합 리스트는 수신된 TCP ACK를 통합하는
    완료 프로세싱 시스템.
  20. 제 18 항에 있어서,
    각 수신된 TCP ACK의 완료 프로세싱을 위한 완료 처리자를 더 포함하되,
    각 수신된 TCP ACK에 대응하는 완료 정보는 완료 통합 리스트의 접속 콘텍스트를 통해 상기 완료 처리자로 전달되는
    완료 프로세싱 시스템.
  21. 제 20 항에 있어서,
    상기 TCP 논리는 상기 접속 콘텍스트를 상기 완료 통합 리스트에 연쇄시키는
    완료 프로세싱 시스템.
  22. 제 21 항에 있어서,
    상기 TCP 논리는 상기 접속 콘텍스트에 대응하는 접속이 계류 중인 완료 요청을 갖지 않는 경우에 상기 완료 콘텍스트를 상기 완료 통합 리스트에 연쇄시키는
    완료 프로세싱 시스템.
  23. 제 22 항에 있어서,
    상기 접속 콘텍스트에 대응하는 상기 접속이 계류 중인 완료 요청을 갖는 경우에 상기 TCP 논리는 상기 접속 콘텍스트의 정보를 갱신하는
    완료 프로세싱 시스템.
  24. 제 23 항에 있어서,
    상기 접속 콘텍스트의 상기 갱신된 정보는 마지막 통보된 시퀀스 번호(LastAckedSN)를 포함하는
    완료 프로세싱 시스템.
  25. 제 20 항에 있어서,
    상기 완료 정보를 완료 프로세싱을 위해 상기 완료 처리자로 직접 송신하여, 상기 완료 통합 리스트를 선택적으로 바이패싱하는 전송/재전송 처리자를 더 포함하는
    완료 프로세싱 시스템.
  26. 제 25 항에 있어서,
    상기 완료 정보는 상기 TCP 논리에 의해 요청되는 재전송 동작에 응답하여 상기 전송/재전송 처리자에 의해 완료 프로세싱을 위해 완료 처리자로 직접 송신되는
    완료 프로세싱 시스템.
  27. 제 18 항에 있어서,
    수신된 RDMA 메시지를 처리하고, 상기 RDMA 판독 요청에 대응하는 접속 콘텍스트를 상기 완료 통합 리스트에 연쇄시킴으로써 완료 프로세싱을 위해 RDMA 판독 요청을 스케줄링하는 RDMA 논리를 더 포함하는
    완료 프로세싱 시스템.
  28. 제 27 항에 있어서,
    각 RDMA 판독 요청의 완료 프로세싱을 위한 완료 처리자를 더 포함하되,
    각 RDMA 판독 요청에 대응하는 완료 정보는 상기 완료 통합 리스트의 상기 접속 콘텍스트를 통해 상기 완료 처리자로 전달되는
    완료 프로세싱 시스템.
  29. 제 28 항에 있어서,
    상기 RDMA 논리는 상기 완료 통합 리스트를 선택적으로 바이패싱하고 완료 프로세싱을 위해 상기 RDMA 판독 요청을 상기 완료 처리자로 직접 송신하도록 구성되는
    완료 프로세싱 시스템.
  30. 제 29 항에 있어서,
    상기 완료 통합 리스트는 상기 RDMA 판독 요청을 위치시킬 충분한 자유 공간을 갖지 않는 판독 큐에 응답하여 선택적으로 바이패싱되는
    완료 프로세싱 시스템.
KR1020067013547A 2004-01-07 2005-01-05 완료 프로세싱 방법 및 시스템과 컴퓨터 판독 가능한 기록매체 KR100992257B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/752,731 US7298749B2 (en) 2004-01-07 2004-01-07 Completion coalescing by TCP receiver
US10/752,731 2004-01-07

Publications (2)

Publication Number Publication Date
KR20060126691A true KR20060126691A (ko) 2006-12-08
KR100992257B1 KR100992257B1 (ko) 2010-11-05

Family

ID=34711655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013547A KR100992257B1 (ko) 2004-01-07 2005-01-05 완료 프로세싱 방법 및 시스템과 컴퓨터 판독 가능한 기록매체

Country Status (6)

Country Link
US (2) US7298749B2 (ko)
EP (1) EP1706961A4 (ko)
JP (1) JP4709773B2 (ko)
KR (1) KR100992257B1 (ko)
CN (1) CN100568830C (ko)
WO (1) WO2005067561A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483434B2 (en) * 2003-12-01 2009-01-27 International Business Machines Corporation Parallel TCP sender implementation
US7298749B2 (en) * 2004-01-07 2007-11-20 International Business Machines Corporation Completion coalescing by TCP receiver
US7761529B2 (en) * 2004-06-30 2010-07-20 Intel Corporation Method, system, and program for managing memory requests by devices
US8621573B2 (en) * 2007-08-28 2013-12-31 Cisco Technology, Inc. Highly scalable application network appliances with virtualized services
US8667556B2 (en) * 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
US20090288104A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Extensibility framework of a network element
US8094560B2 (en) * 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US8677453B2 (en) * 2008-05-19 2014-03-18 Cisco Technology, Inc. Highly parallel evaluation of XACML policies
US8341286B1 (en) * 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US20100070471A1 (en) * 2008-09-17 2010-03-18 Rohati Systems, Inc. Transactional application events
CN104219028B (zh) * 2013-05-30 2018-02-23 华为技术有限公司 一种提高传输控制协议性能的方法及设备
CN103368772B (zh) * 2013-06-26 2016-12-28 华为技术有限公司 半卸载方法、设备及系统
US10055371B2 (en) 2014-11-03 2018-08-21 Intel Corporation Apparatus and method for RDMA with commit ACKs
CN106209325A (zh) * 2015-04-30 2016-12-07 中兴通讯股份有限公司 一种tcp ack报文处理方法及装置
US9965441B2 (en) 2015-12-10 2018-05-08 Cisco Technology, Inc. Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
CN109067752B (zh) * 2018-08-15 2021-03-26 无锡江南计算技术研究所 一种利用rdma消息实现兼容tcp/ip协议的方法
US11805081B2 (en) * 2019-03-04 2023-10-31 Intel Corporation Apparatus and method for buffer management for receive segment coalescing

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6122670A (en) * 1997-10-30 2000-09-19 Tsi Telsys, Inc. Apparatus and method for constructing data for transmission within a reliable communication protocol by performing portions of the protocol suite concurrently
US6647423B2 (en) * 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
US6424626B1 (en) 1999-10-29 2002-07-23 Hubbell Incorporated Method and system for discarding and regenerating acknowledgment packets in ADSL communications
US6791989B1 (en) * 1999-12-30 2004-09-14 Agilent Technologies, Inc. Fibre channel interface controller that performs non-blocking output and input of fibre channel data frames and acknowledgement frames to and from a fibre channel
US6718370B1 (en) * 2000-03-31 2004-04-06 Intel Corporation Completion queue management mechanism and method for checking on multiple completion queues and processing completion events
WO2002017092A2 (en) 2000-08-24 2002-02-28 Sun Microsystems, Inc. Message sequence numbers and their use in completing messages in memory
JP2002152308A (ja) * 2000-11-09 2002-05-24 Nec Corp データ通信システム、その通信方法及びその通信プログラムを記録した記録媒体
US8051212B2 (en) * 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
WO2002097580A2 (en) * 2001-05-31 2002-12-05 Espeed, Inc. Securities trading system with multiple levels-of-interest
US7539204B2 (en) * 2001-09-26 2009-05-26 Broadcom Corporation Data and context memory sharing
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7487264B2 (en) * 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
US7016354B2 (en) * 2002-09-03 2006-03-21 Intel Corporation Packet-based clock signal
US7181544B2 (en) * 2002-09-03 2007-02-20 Intel Corporation Network protocol engine
US20050033988A1 (en) * 2002-10-18 2005-02-10 Neoscale Systems, Inc. Method and system for transparent encryption and authentication of file data protocols over internet protocol
US20050021558A1 (en) * 2003-06-11 2005-01-27 Beverly Harlan T. Network protocol off-load engine memory management
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US20050165985A1 (en) * 2003-12-29 2005-07-28 Vangal Sriram R. Network protocol processor
US7298749B2 (en) * 2004-01-07 2007-11-20 International Business Machines Corporation Completion coalescing by TCP receiver

Also Published As

Publication number Publication date
US20050147039A1 (en) 2005-07-07
EP1706961A4 (en) 2011-05-11
EP1706961A2 (en) 2006-10-04
CN1910860A (zh) 2007-02-07
WO2005067561A2 (en) 2005-07-28
WO2005067561A3 (en) 2006-09-08
JP4709773B2 (ja) 2011-06-22
US7298749B2 (en) 2007-11-20
JP2007518360A (ja) 2007-07-05
US8131881B2 (en) 2012-03-06
KR100992257B1 (ko) 2010-11-05
CN100568830C (zh) 2009-12-09
US20080037555A1 (en) 2008-02-14

Similar Documents

Publication Publication Date Title
US8131881B2 (en) Completion coalescing by TCP receiver
US6857030B2 (en) Methods, system and article of manufacture for pre-fetching descriptors
US7269171B2 (en) Multi-data receive processing according to a data communication protocol
US9749407B2 (en) Methods and devices for processing incomplete data packets
US5758087A (en) Apparatus and method for predicted response generation
US5577211A (en) System and method using chained structure queues for ordering of message delivery between connected nodes wherein unsuccessful message portion is skipped and retried
TWI332150B (en) Processing data for a tcp connection using an offload unit
US5903724A (en) Method of transferring packet data in a network by transmitting divided data packets
US7032226B1 (en) Methods and apparatus for managing a buffer of events in the background
CN111512603A (zh) 一种数据传输方法及第一设备
EP0725351A2 (en) Expedited message transfer in a multi-nodal data processing system
US6321269B1 (en) Optimized performance for transaction-oriented communications using stream-based network protocols
US6615282B1 (en) Adaptive messaging
US6038604A (en) Method and apparatus for efficient communications using active messages
KR101996598B1 (ko) 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법
US20050223128A1 (en) Accelerated TCP (Transport Control Protocol) stack processing
US6941379B1 (en) Congestion avoidance for threads in servers
US20040174814A1 (en) Register based remote data flow control
JPH11134274A (ja) デバイス・ドライバ中の割込みオーバヘッドを低減させる機構
WO2004017219A1 (en) Apparatus and method for transmit transport protocol termination
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
US6850962B1 (en) File transfer system and method
WO2004019165A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
US7680944B1 (en) Rapid transport service in a network to peripheral device servers
US7269172B2 (en) Method and device for managing transmit buffers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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