KR100973201B1 - 투명 티씨피 오프로드를 위한 방법 및 시스템 - Google Patents
투명 티씨피 오프로드를 위한 방법 및 시스템 Download PDFInfo
- Publication number
- KR100973201B1 KR100973201B1 KR1020087002991A KR20087002991A KR100973201B1 KR 100973201 B1 KR100973201 B1 KR 100973201B1 KR 1020087002991 A KR1020087002991 A KR 1020087002991A KR 20087002991 A KR20087002991 A KR 20087002991A KR 100973201 B1 KR100973201 B1 KR 100973201B1
- Authority
- KR
- South Korea
- Prior art keywords
- tcp
- segment
- network flow
- delete delete
- particular network
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
투명 전송 제어 프로토콜(TCP) 오프로드(offload)를 위한 방법 및 시스템의 여러 측면들이 공개된다. 방법의 측면에서는, 호스트 시스템에 상태 정보를 전송함이 없이 네트워크 인터페이스 카드(NIC) 프로세서 내에서 TCP 세그먼트들을 축적하는 단계를 포함할 수 있다. 축적된 TCP 세그먼트들은 통합기 내에서 일시 저장될 수 있다. 상기 통합기는 축적된 TCP 세그먼트들에 관련된 네트워크 플로가 플로 룩업 테이블(FLT) 내에 엔트리를 가지는지를 검증할 수 있다. FLT가 가득 찬 경우에는, 상기 통합기는 현재 엔트리를 폐쇄하고 네트워크 플로를 가용할 수 있게 된 엔트리에 할당할 수 있다. 통합기는 또한 FLT 내의 정보를 갱신할 수 있다. TCP 세그먼트들의 축적을 종료하게 하는 이벤트들이 일어난 때에는, 상기 통합기는 그동안 축적된 TCP 세그먼트들을 바탕으로 단일 병합 TCP 세그먼트를 생성할 수 있다. 병합 TCP 세그먼트 및 상태 정보는 호스트 시스템에 소정의 프로세싱을 위해 전달될 수 있다.
Description
본 발명의 몇몇 실시예들은 TCP 데이터 및 이에 관련된 TCP 정보의 처리에 관한 것이다. 더 상세하게는, 본 발명의 몇몇 실시예들은 투명한 TCP 오프로드(transparent TCP offload)를 위한 방법 및 시스템에 관한 것이다.
TCP/IP 스택 프로세싱에 들어가는 처리 용량을 감소시키기 위한 해결 방식들이 많이 있다. TCP 오프로드 엔진(TCP Offload Engine, TOE) 방식에서는, 이러한 오프로딩(offloading) 엔진은 TCP 프로세싱의 전부 또는 대부분을 수행하며, 상위 계층에 데이터 스트림을 제공한다. 이러한 접근방식에는 여러 가지 단점들이 있을 수 있다. 상기 TTOE는 운영 체제(operating system)와 아주 밀접하게 연관되어 있으며, 따라서 그러한 운영 체제에 종속적인 솔루션들(solutions)을 필요로 하며, 어쩌면 이러한 기법을 지원하려면 운영 체제 내에 변경을 가해야 할 수도 있다. TTOE는, 어플리케이션에 의한 설정 또는 예를 들어 가속 연결을 위해 어떤 소켓 어드레스 군(socket address family)을 명백하게 특정화하는 등 몇몇 종류의 수동(manual) 설정을 필요로 하는, 병렬 스택 솔루션(side by side stack solution)을 필요로 할 수 있다. TTOE는 또한 IT 관리자에 의한 수동 설정 즉, 예를 들어 여 러 TCP 플로(flows) 중 어떤 것의 부하를 덜어갈 것인지를 선택할 수 있도록, 가속 연결을 위한 IP 서브넷 어드레스를 명백하게 특정화하는 등 몇몇 종류의 수동 설정을 요구할 수도 있는데, 그러한 오프로드 엔진은 이것이 TCP 패킷 프로세싱을 구현하여야 하기 때문에 매우 복잡하다.
LSO(large segment offload)/TSO(transmit segment offload)는, 송신 패킷 프로세싱을 감소시킴으로써, 요구되는 호스트 프로세싱 처리 용량을 줄이는 데에 이용될 수 있다. 이러한 접근 방식에서는, 호스트는 MTU(maximum transmission unit)보다 더 큰 송신 유닛들을 NIC로 보내며, 상기 NIC는 수신된 세그먼트들을 MTU 크기에 맞춰 절단한다. 호스트 프로세싱 중 일부 프로세싱은 송신된 유닛들의 개수에 선형적인 관계가 있기 때문에, 이러한 방식으로 요구되는 호스트 프로세싱 처리 용량이 줄어든다. 송신 패킷 프로세싱을 감소시키는 데에는 효과적인 점이 있지만, LSO 기법은 수신 패킷 프로세싱에 대해는 별 도움이 되지 않는다. 또한, 호스트 측에서 보낸 각각의 개별적인 대형 송신 유닛에 대해, 이 호스트는 상대편으로부터 MTU 크기의 각 세그먼트마다 하나씩, 다수의 ACK(acknowledgement, 수신확인)들을 수신하게 될 것이다. 이러한 다수의 ACK들은 그렇지 않아도 부족하고 귀중한 대역폭을 소모하여야 하며, 따라서 전체적인 처리 능력 및 효율을 감소시킨다.
LRO(large receive offload) 방식이라는 일종의 상태 비사용(stateless) 수신 오프로드 메카니즘에서는, TCP 플로는 다수의 하드웨어 대기열(hardware queues)들로 분할될 수 있는데, 이는 어떤 특정 TCP 플로가 언제나 동일한 하드웨어 대기열로 인가되도록 보장하는 해시 기능(hash function)에 따라 이뤄진다. 각 하드웨어 대기열에 대해, 상기 메카니즘은, 대기열을 스캔하여 그 대기열 상에서 동일한 TCP 플로에 속하는 연속 패킷들을 하나의 단일 대형 수신 유닛(large receive unit)으로 병합하는 인터럽트 통합처리(interrupt coalescing)를 이용한다.
이러한 메카니즘은 NIC에 대해서 다수의 하드웨어 대기열을 제외하면 별다른 추가적인 하드웨어를 요구하지는 않지만, 다양한 성능 상의 제약을 가질 수 있다. 예를 들어, 만약 TCP 플로의 개수가 하드웨어 대기열들의 수보다 많은 경우에는, 서로 다른 플로들이 동일한 대기열에 집결할 수 있으며, 그 대기열에서는 LRO 병합이 이뤄질 수 없을 것이다. 만약 플로의 수가 하드웨어 대기열들의 수의 두 배를 넘어간다면, LRO 병합은 어떤 플로에 대해서도 이뤄지지 않을 것이다. 그러한 병합 동작은 한 인터럽트 주기 동안에 호스트에서 활용가능한 패킷들의 양에 대해 제한될 수 있다. 만약 인터럽트 주기가 짧고, 플로의 개수가 적지 않다면, 각 플로에 관해 병합을 하기 위해 상기 호스트 CPU에 대해 이용 가능한 패킷들의 수도 적을 것이며, 그 결과 병합이 제한되거나 또는 전혀 이뤄지지 못할 것이며, 이는 심지어 하드웨어 대기열의 개수가 클 경우에도 그러하다. 상기 LRO 병합은 호스트 CPU에서 실행될 것인데, 그 결과 추가적인 프로세싱 용량을 소비한다. 드라이버는 TCP 스택에 대해, 일련의 데이터 버퍼들이 이어지는 헤더 버퍼로 구성된 버퍼들의 링크 목록을 전달하며, 이러한 경우는 모든 데이터가 연속적으로 하나의 버퍼에 제공되는 경우에 비해 더 많은 프로세싱 용량을 요구할 수 있다.
기존 및 종래의 접근 방식들의 이러한 한계점들 및 단점들은, 본 명세서의 나머지 부분들에서 도면들을 참조하여 설명되는 본 발명의 여러 측면들과 그런 종래의 시스템들의 비교를 통해, 본 기술 분야의 숙련된 자들에게 더욱 명백하게 될 것이다.
투명한 TCP 오프로드를 위한 방법 및 시스템은, 본질적으로 적어도 도면들 중 어느 하나와 관련되어 예시되거나 또는 설명되는 것과 같이, 그리고 청구범위에서 더욱 완전하게 설명되는 것과 같다.
본 발명에 관한 이러한 장점들 그리고 그 밖의 장점들, 측면들 및 신규한 특징들은 이와 관련하여 예시된 실시예들의 세부사항들과 더불어, 다음의 상세한 설명 및 도면들로부터 더 완벽하게 이해될 수 있을 것이다.
도 1a는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 예시적인 시스템의 블록도이다.
도 1b는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 다른 예시적인 시스템의 블록도이다.
도 1c는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 예시적인 시스템의 다른 블록도이다.
도 1d는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 취급할 수 있는 예시적인 시스템의 블록도이다.
도 1e는 본 발명의 일 실시예에 따른 프레임 수신 및 배치를 위한 예시적인 단계들을 설명하기 위한 순서도이다.
도 1f는 본 발명의 일 실시예에 따라, 병합되고 순서대로 수신되지 않는 TCP/IP 프레임들의 예시적인 시퀀스를 예시한다.
도 2a는 본 발명의 일 실시예에 따라, 병합되고 순서대로 수신되는 TCP/IP 프레임들의 예시적인 시퀀스를 예시한다.
도 2b는 본 발명의 일 실시예에 따라, 도 2a의 TCP 프레임 시퀀스 내 정보로부터 생성된 예시적인 병합된 TCP/IP 프레임을 예시한다.
도 2c는 본 발명의 일 실시예에 따라, 패킷 P3와 패킷 P4가 송신 순서에 비추어 보아 순서에 맞지 않게 도착할 경우에, 순서에 맞지 않는 데이터를 취급하는 데에 이용될 수 있는 예시적인 단계들을 설명하는 도면이다.
도 2d는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 설명하는 상태도이다.
도 3은 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 설명하는 순서도이다.
본 발명의 일부 실시예들은 투명 TCP 오프로드를 위한 방법 및 시스템이라고 볼 수 있다. 본 발명의 일 실시예에서는, 하나 또는 다수의 TCP 세그먼트들을, 호스트 시스템에 이러한 TCP 세그먼트들 각각에 관한 상태 정보를 개별적으로 송신하지 않고, 네트워크 인터페이스 카드(network interface card, NIC) 내에서 취합하는(collect) 데에 이용될 수 있는 통합기(coalescer)를 포함할 수 있다. 상기 병합 된 TCP 세그먼트들은 일시적으로 상기 통합기 내에서 버퍼링될 수 있다. 상기 합체기는 상기 병합된 TCP 세그먼트들에 관계된 네트워크 플로가 플로 룩업 테이블(flow lookup table, FLT) 내에 엔트리(entry)를 가지고 있음을 검증할 수 있다. 상기 FLT가 가득 찬 경우에는, 상기 통합기는 현재의 엔트리를 종료하고, 이용가능하게 된 엔트리에 상기 네트워크 플로를 할당할 수 있다. 상기 통합기는 FLT 내의 정보를 갱신할 수 있다. 상기 TCP 세그먼트들의 병합을 종료시키는 이벤트가 발생한 경우에는, 상기 통합기는 상기 병합된 TCP 세그먼트들을 기초로 하나의 병합된 TCP 세그먼트를 생성할 수 있다. 상기 단일 병합 TCP 세그먼트는 복수의 TCP 세그먼트들을 포함할 수 있으며, 대형 수신 세그먼트(large receive segment)라고 할 수 있다. 상기 병합 TCP 세그먼트 및 상태 정보는 처리를 위해 호스트 시스템에 전달될 수 있다.
기존의 프로세싱 방식에 따르는 경우에는, 상기 수신된 복수의 TCP 세그먼트들의 각각은 호스트 시스템 내 호스트 프로세서에 의해 개별적으로 처리되어야만 할 것이다. TCP 프로세싱은 수신기 측에서 프로토콜의 처리와 데이터 배열이라는 두 가지 면에서 상당한 CPU 처리 용량을 필요로 한다. 현 시점의 프로세싱 시스템들 및 방법들은 TCP 상태(state)를 NIC와 같은 전용 하드웨어에 전송하는 것을 수반하는데, 그러한 전용 하드웨어에서는 호스트 TCP 스택 내지 기본 하드웨어(underlying hardware)에 상당한 변화를 가하는 것이 필요하다.
도 1a는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 예시적인 시스템의 블록도이다. 이에 따라, 도 1a의 시스템은 TCP(transmission control protocol) 데이터그램들(datagrams) 또는 패킷들(packets)에 관한 투명 TCP 오프로드를 취급할 수 있게 변용될 수 있다. 도 1a를 참조하면, 상기 시스템은, 예를 들어, CPU(102), 메모리 컨트롤러(104), 호스트 메모리(106), 호스트 인터페이스(108), 네트워크 서브시스템(110) 및 이더넷(112)을 포함할 수 있다. 상기 네트워크 서브시스템(110)은 예를 들어, 투명 TCP 지원 이더넷 컨트롤러(Transparent TCP-enabled Ethernet Controller, TTEEC) 또는 투명 TCP 오프로드 엔진(Transparent TCP offload engine, TTOE)(114)를 포함할 수 있다. 상기 네트워크 서브시스템(110)은 예를 들어, 네트워크 인터페이스 카드(NIC)를 포함할 수 있다. 상기 호스트 인터페이스(108)는 예를 들어, PCI(peripheral component interconnect), PCI-X, PCI-Express, ISA, SCSI 또는 기타 종류의 버스일 수 있다. 상기 메모리 컨트롤러(106)는 CPU(104), 메모리(106) 그리고 호스트 인터페이스(108)에 연결되어 있다. 상기 호스트 인터페이스(108)는 상기 네트워크 서브시스템(110)에 대해 상기 TTEEC/TTOE(114)를 통해 연결될 수 있다.
도 1b는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 다른 예시적인 시스템의 블록도이다. 도 1b를 참조하면, 상기 시스템은, 예를 들어 CPU(102), 호스트 메모리(106), 전용 메모리(dedicated memory)(116) 및 칩셋(chip set)(118)을 포함할 수 있다. 상기 칩셋(118)은 예를 들어 상기 네트워크 서브시스템(110)과 상기 메모리 컨트롤러(104)를 포함할 수 있다. 상기 칩셋(118)은 상기 CPU(102), 상기 호스트 메모리(106), 상기 전용 메모리(116) 및 상기 이더넷(112)에 연결될 수 있다. 상기 칩셋(118) 내의 상기 네트워크 서브시스템(110)은 상기 이더넷(112)에 연결되어 있을 수 있다. 상기 네트워크 서브시스템(110)은, 예를 들어, 상기 TTEEC/TTOE(114)를 포함할 수 있고 TTEEC/TTOE(114)가 상기 이더넷(112)에 연결되어 있을 수 있다. 상기 네트워크 서브시스템(110)은 예를 들어 유선 내지 무선 연결을 통해 상기 이더넷(112)과 통신을 할 수 있다. 무선 연결의 경우, 예를 들어 IEEE 802.11 표준들에 의한 무선 근거리 통신망(WLAN) 연결이 될 수 있다. 상기 네트워크 서브시스템(110)은 또한, 예를 들어, 온칩 메모리(on-chip memory)(113)를 포함할 수 있다. 상기 전용 메모리(116)는 문맥(context) 내지 데이터를 위해 버퍼 공간을 제공할 수 있다.
상기 네트워크 서브시스템(110)은 통합기(coalescer)(111)와 같은 프로세서를 포함할 수 있다. 상기 통합기(111)는 TCP 데이터의 축적(accumulation) 내지 통합(coalescing)을 다루는 것을 가능하게 하는 적절한 논리 알고리즘(logic), 회로 조직(circuitry), 명령어 코드(code) 등을 포함할 수 있다. 이 점에 있어서, 상기 통합기(111)는 플로 룩업 테이블(flow lookup table, FLT)을 이용하여, 병합(aggregation)을 위해 수집되는 중인 TCP 세그먼트들에 상응하는 현재 네트워크 플로들에 관한 정보를 유지할 수 있다. 상기 FLT는 예를 들어 상기 네트워크 서브시스템(110) 내에 저장될 수 있다. 상기 FLT는 예를 들어 다음과 같은 소스 IP 어드레스(source IP address), 목적지 IP 어드레스(destination IP address), 소스 TCP 어드레스, 목적지 TCP 어드레스 중에서 적어도 하나를 포함할 수 있다. 본 발명의 다른 실시예에서는, 적어도 두 개의 서로 다른 테이블들이 이용될 수 있는데, 예를 들어, 어떤 테이블은 패킷들을 각자의 플로(flow)에 따라 분류하기 위한 4 튜 플 룩업 테이블(4-tuple lookup)을 포함할 수 있다. 상기 4 튜플 룩업 테이블은 예를 들어 다음과 같은, 소스 IP 어드레스, 목적지 IP 어드레스, 소스 TCP 어드레스, 목적지 TCP 어드레스 중에서 적어도 하나를 포함할 수 있다. 플로 문맥 테이블(flow context table)은 TCP 시퀀스 번호들과 같이, 병합에 이용되는 상태 변수들을 포함할 수 있다.
상기 FLT는 또한 예를 들어, 비연속 메모리(non-continuous memory)를 위한 SGL(scatter-gather-list)를 포함하는 호스트 버퍼 내지 메모리 어드레스, 누적 수신 확인(cumulative acknowledges, ACKs), TCP 헤더 및 부가정보(options)의 복사본(copy), IP 헤더 및 부가정보의 복사본, 이더넷 헤더의 복사본, 그리고 축적된 TCP 플래그(flags) 중의 적어도 하나를 포함할 수 있다. 상기 통합기(111)는, 종료 이벤트(termination event)가 발생하면, 축적된 또는 수집된 TCP 세그먼트들로부터, 하나의 단일 병합 TCP 세그먼트를 생성하도록 구현될 수 있다. 상기 단일 병합 TCP 세그먼트는 예를 들어 상기 호스트 메모리(106)로 전달될 수 있다.
비록, 예시로서, 하나의 CPU와 하나의 이더넷 연결로서 설명하였지만, 본 발명은 이러한 예들에 대해 그렇게 제한될 필요는 없으며, 예를 들어, 각각, 여하한 종류의 프로세서와 여하한 종류의 데이터 링크 계층 내지 물리적 매체를 이용할 수 있다. 따라서, 도 1a의 TTEEC 또는 TTOE(114)는, 비록 이더넷(112)에 연결된 것으로 예시되었지만, 여하한 종류의 데이터 링크 계층 또는 물리적 매체에 대해 변용(adapted)될 수 있다. 더 나아가, 본 발명에 대해서, 또한 도 1a 및 1b에 예시된 구성요소들 사이에 여러 가지 수준의 통합 및 분리를 숙고해 볼 수 있다. 예를 들 어, 상기 TTEEC/TTOE(114)는 상기 칩셋(118)과 별개의 집적 회로로서 주기판 상에 내장(embedded)될 수도 있고, 또는 NIC 내에 내장될 수도 있다. 이와 유사하게, 상기 통합기(111)는 상기 칩셋(118)과 별개의 집적 회로로서 주기판 상에 내장될 수도 있고, 또는 NIC 내에 내장될 수도 있다. 또한, 상기 전용 메모리(116)는 상기 칩셋(118)에 집적될 수도 있으며 또한 도 1b의 네트워크 서브시스템에 집적될 수도 있다.
도 1c는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 위한 예시적인 시스템의 다른 블록도이다. 도 1c를 참조하면, 호스트 프로세서(124), 호스트 메모리/버퍼(126), 소프트웨어 알고리즘 블록(134) 및 NIC 블록(128)이 나타나 있다. NIC 블록(128)은 NIC 프로세서(130)와, 통합기(131)와 같은 일종의 프로세서, 그리고 축소 NIC 메모리/버퍼(reduced NIC memory/buffer)(132)를 포함할 수 있다. 상기 NIC 블록(128)은 예를 들어 유선 내지 무선 연결을 통해 외부 네트워크에 대해 통신할 수 있다. 무선 통신의 경우, 예를 들어 IEEE 802.11 표준들에 따르는 무선 근거리 통신망(WLAN)일 수 있다.
상기 통합기(131)는 패킷 수신 경로에 자리 잡은 전용 프로세서 또는 하드웨어 상태 머신(state machine)일 수 있다. 호스트 TCP 스택은 TCP 프로토콜 프로세싱의 관리를 구현하는 소프트웨어를 포함할 수 있으며, 마이크로소프트 윈도나 리눅스와 같은 운영 체제의 일부가 될 수 있다. 상기 통합기(131)는 TCP 데이터의 축적 내지 병합을 가능하게 하는 적절한 논리 알고리즘, 회로 조직, 명령어 코드 등을 포함할 수 있다. 이 점에 있어서, 상기 통합기(131)는 플로 룩업 테이블(FLT)을 이용하여, TCP 세그먼트들이 병합을 위해 현재 결집되고 있는 현재의 네트워크 플로들에 관한 정보를 유지 관리(maintain)할 수 있다. 상기 FLT는 예를 들어, 상기 축소 NIC 메모리/버퍼 블록(132)에 저장될 수 있다. 상기 통합기(131)는, 종료 이벤트가 발생하면, 축적된 또는 수집된 TCP 세그먼트들로부터, 하나의 단일 병합 TCP 세그먼트를 생성하도록 구현될 수 있다. 상기 단일 병합 TCP 세그먼트는 예를 들어 상기 호스트 메모리/버퍼(126)로 전달될 수 있다.
본 발명의 일부 실시예들에 따르면, TCP 프로세싱을 위해 하나의 단일 병합 TCP 세그먼트로 만들어 호스트에 제공하는 것은 호스트(124)에서 이뤄지는 초과 프로세싱(overhead processing)을 대단히 줄일 수 있다. 더 나아가, TCP 상태 정보의 전송이 없기 때문에, NIC(128)와 같은 전용 하드웨어는, 수신된 복수의 TCP 세그먼트들을 병합하거나 또는 병합함으로써 수신된 TCP 세그먼트들을 처리하는 것을 보조할 수 있으며, 그럼으로써 패킷당 프로세싱의 초과 처리량(overhead)을 줄일 수 있다.
종래의 TCP 프로세싱 시스템들에서는, 어떤 TCP 연결에 관한 특정 정보를, 그 TCP 연결에 대한 첫 번째 세그먼트가 도달하기 이전에 알고 있어야 할 필요가 있다. 본 발명의 다양한 실시예들에 따르면, 그 TCP 연결에 관한 특정 정보를, 그 TCP 연결에 대한 첫 번째 세그먼트가 도달하기 이전에 알고 있어야 할 필요가 없는데, 이는 그러한 TCP 상태 또는 문맥 정보는 여전히 상기 호스트 TCP 스택에 의해 단독으로 관리되며, 어떠한 주어진 시점에서도 하드웨어 스택과 소프트웨어 스택 사이에서 상태 정보의 전송이 일어나지 않기 때문이다.
본 발명의 일 실시예에서는, 오프로드(offload) 메카니즘이 제공되는데, 이는 호스트 스택의 관점에서 상태 비사용(stateless)이지만, 오프로드 장치의 관점에서는 상태 사용(state-full)이며, TTOE에 비교하였을 경우 비견될만한 성능 향상을 달성한다. 투명 TCP 오프로드(TTO)는, 호스트 시스템으로 하여금 MTU보다 더 큰 크기의 데이터 유닛들의 수신 및 송신 양자를 처리할 수 있게 함으로써, TCP에 관해 요구되는 호스트의 프로세싱 용량을 감소시켜 준다. 본 발명의 예시적인 실시예에서는, 패킷 레이트(packet rate)에 있어서 눈에 띄는 감소를 이뤄내고, 그럼으로써 호스트가 패킷 프로세싱하는데에 소모하는 처리 용량을 줄일 수 있도록, 1.5 KB의 처리 데이터 유닛(processing data units, PDU)들보다는 64 KB의 PDU들이 처리될 수 있다.
TTO에서는, 호스트 운영 체제와 그러한 TTO 엔진을 포함하는 NIC 사이에서 핸드쉐이크(handshake) 동작이 전혀 이용되지 않는다. TTO 엔진은 자체적으로 새로운 플로들을 식별하고 오프로딩하도록 동작할 수 있다. 송신 측에서의 오프로드로 LSO와 유사할 수 있으며, 호스트는 커다란 전송 유닛들을 송신하고, TTO 엔진이 최대 세그먼트 크기(maximum segment size, MSS)에 따라 이들을 작은 크기의 전송 패킷들로 절단시킨다.
수신 측의 투명 TCP 오프로드는, 동일한 플로에 해당하는 복수의 수신된 패킷들을 병합하고 이들을, 마치 이들이 하나의 패킷으로 수신되었던 것처럼, 즉 데이터 패킷들이 수신된 경우에는 하나의 대형 패킷인 것처럼, 그리고 ACK 패킷들이 수신된 경우에는 하나의 병합된 ACK 패킷인 것처럼, 상기 호스트에 전달함으로써 수행될 수 있다. 호스트 내에서의 프로세싱은, 하나의 커다란 패킷이 수신된 경우의 프로세싱과 똑같을 수 있다. TCP 플로 병합의 경우에, 패킷들을 병합할 것인지 여부를 판정할 수 있도록 규칙들이 정의될 수 있다. 이러한 병합 규칙들은, 전송-응답 왕복 시간(round trip time)을 증가시키지 않으면서 병합이 가능한 한 많이 이뤄질 수 있도록 설정될 수 있으며, 그럼으로써, 병합 여부의 판정은 수신되는 데이터 자체와 데이터를 지체없이 호스트로 전달할 것인지에 관한 작업의 중요도에 따라 결정될 수 있다. 상기 병합은 송신-수신 커플링(coupling)과 함께 구현될 수 있는데, 이때 송신기와 수신기는 오프로드 판정에 관한 송신 정보를 이용함으로써 커플링될 수 있고, 상기 플로는 양방향 플로으로 취급될 수 있다. TTO의 수신 오프로드에 대한 문맥 정보는 매 플로마다 유지 관리될 수 있다. 이 점에 있어서, 수신된 매 패킷에 대해, 인가되는 패킷의 헤더를 이용하여 이 패킷이 속하는 플로가 어떤 것인지 파악할 수 있으며, 이 패킷으로 상기 플로의 문맥을 갱신한다.
송신기와 수신기가 커플링된 경우에, 송신된 네트워크 패킷들은 그 패킷이 속하는 특정 네트워크 플로를 결정할 수 있도록, 수신 네트워크 패킷들과 더불어 검색될 수 있다. 송신된 네트워크 패킷은 상기 플로의 문맥을 갱신할 수 있으며, 이는 수신 오프로드에 이용될 수 있다.
도 1d는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 취급할 수 있는 예시적인 시스템의 블록도이다. 도 1d를 참조하면, 인커밍 패킷 프레임(141), 프레임 파서(frame parser)(143), 연계 블록(association block)(149), 문맥 페치 블록(context fetch block)(151), 복수의 온칩 캐시 블록(147), 복수의 오프칩(off-chip) 저장공간 블록(160), 복수의 온칩 저장공간 블록(162), RX 프로세싱 블록(150), 프레임 버퍼(154), DMA 엔진(163), TCP 코드 블록(157), 호스트 버스(165) 및 복수의 호스트 버퍼들(167)이 나타나 있다. 상기 RX 프로세싱 블록(150)은 통합기(152)를 포함할 수 있다.
상기 프레임 파서(143)는, 상기 인커밍 프레임(141)에 대해 예를 들어 어드레스 필터링, 프레임 유효성 및 오류 검출을 포함하는 L2 이더넷 프로세싱을 가능하게 하는 적절한 논리 알고리즘, 회로 조직, 명령어 코드 등을 포함할 수 있다. 보통의 이더넷 컨트롤러와는 달리, 상기 프레임 파서(143) 내에서는, 다음 단계의 프로세싱이 예를 들어 IP 프로세싱과 같은 L3와, TCP 프로세싱과 같은 L4를 포함할 수 있다. 상기 TTEEC(114)는, 병합된 TCP/IP 플로들에 대한 트래픽을 프로세싱함으로써, 호스트 CPU(102)의, 예를 들어 사용 점유율과 메모리 대역폭을 절감시킬 수 있다. 상기 TTEEC(114)는 예를 들어 인커밍 패킷들이 어느 프로토콜에 속하는 지를, 상기 패킷 파싱 정보 및 튜플(145)에 기초하여 검출할 수 있다. 만약 프로토콜이 TCP라면, 상기 TTEEC(114)는 그 패킷이 오프로드된 TCP 플로에 해당하는지, 즉 적어도 일부의 TCP 상태 정보가 TTEEC(114)에 의해 유지될 수 있는 그런 플로에 대응하는지 여부를 판정할 수 있다. 만약 상기 패킷이 오프로드된 연결에 상응한다면, 상기 TTEEC(114)는 상기 프레임 내의 데이터 적재 부분의 데이터에 대해 움직임을 지정할 수 있다. 상기 적재 데이터의 목적지는 상기 플로 상태 정보를 상기 프레임 내의 방향 정보와 결합한 것으로부터 결정될 수 있다. 그러한 목적지는 예를 들어 호스트 메모리(106)가 될 수 있다. 최종적으로 상기 TTEEC(114)는, 상기 호스트 TCP 스택에 대한 연결 상태 정보를 이용한 여타 조정 없이, 플로 상태의 내부 TCP 및 상위 레벨들을 갱신할 수 있으며, 내부 플로 상태(internal flow state)로부터 호스트 버퍼 어드레스 및 길이를 획득할 수 있다.
상기 수신 시스템 아키텍처는 예를 들어, 제어 경로 프로세싱(140)과 데이터 이동 엔진(data movement engine)(142)을 포함할 수 있다. 도 1d의 상반부에 예시된 것과 같은 상기 제어 경로 위쪽의 시스템 구성요소들은, 예를 들어, 최대한의 유연성과 효율 그리고 목표로 하는 유선 속도(wire speed)를 가지고 L3/L4 또는 이보다 더 높은 레벨의 프로세싱을 완료하는 데에 이용되는, 다양한 프로세싱 단계들(stages)에 대응하도록 설계된 것들일 수 있다. 이러한 프로세싱 단계들의 출력은, 예를 들어, 하나 또는 다수의 패킷 식별 카드들(packet identification cards)을 포함할 수 있는데, 이들은 프레임 적재 데이터와 연관된 정보를 운반할 수 있는 일종의 제어 구조(control structure)를 제공할 수 있다. 이는 패킷을 다양한 블록들에서 처리하는 과정에서 TTEEC(114) 내부에서 수행될 수 있을 것이다. 데이터 경로(142)는 데이터 적재 부분들 또는 프레임의 비가공 패킷들(raw packets)(155)을, 예를 들어 온칩 패킷 프레임 버퍼(154)로부터, 제어 프로세싱 완료에 기해, DMA(direct memory access) 엔진(163)으로 이동시킬 수 있으며, 이어서 호스트 버스(165)를 통해, 프로세싱을 통해 선택된 상기 호스트 버퍼(167)로 이동시킬 수 있다. 이러한 DMA 엔진으로 가는 데이터 경로(142)는 패킷 데이터 영역 및 부가 헤더들(optional headers)(161)을 포함할 수 있다.
상기 수신 시스템은, 예를 들어, TPC/IP 헤더들(145)을 파싱함, 상기 프레임 을 상기 연계 블록(149)에서 TCP/IP 플로에 연계(association)시킴, TCP 플로 문맥을 상기 문맥 페치 블록(151)에 페칭(fetch)함, TCP/IP 헤더들을 RX 프로세싱 블록(150)에서 처리함, 헤더/데이터 경계위치들을 판정하고 상태(153)를 갱신함, 데이터를 호스트 버퍼들에 매칭함, 데이터를 DMA 엔진(163)을 통해 그러한 호스트 버퍼들(167)에 전송함 등의 작업들 중 하나 또는 다수의 작업들을 수행할 수 있다. 상기 헤더들은 칩 상에서 소멸될 수도 있고 또는 상기 DMA 엔진(163)을 통해 상기 호스트 버퍼들(167)로 전송될 수도 있다.
상기 패킷 프레임 버퍼(154)는 수신 시스템 아키텍처에서는 선택사항인 블록일 수도 있다. 상기 패킷 프레임 버퍼(154)는 예를 들어, 선입선출(first-in-first-out, FIFO) 데이터 구조가 종래의 L2 NIC에서 이용되는 것과 동일한 목적으로 이용되거나, 또는 추가적인 처리를 위한 고차 계층의 트래픽을 저장하기 위해 이용될 수 있다. 수신 시스템 아키텍처 내에서 상기 패킷 프레임 버퍼(154)는 이러한 단일한 예에 한정되는 것은 아닐 수 있다. 제어 경로(140)의 프로세싱이 수행됨에 따라, 상기 데이터 경로(142)는 데이터 프로세싱 단계들 사이에 데이터들을 한 차례 또는 여러 차례 저장할 수 있다.
본 발명의 예시적인 일 실시예에 있어서, 도 1b의 통합기(111) 내지 도 1c의 통합기(131)에 관해 설명된 병합 동작들 중의 적어도 일부분이 도 1d 내의 RX 프로세싱 블록(150) 내의 통합기(152)에서 구현될 수 있다. 이 경우에 있어서, TCP 데이터의 버퍼링 내지 저장은, 예를 들어 상기 프레임 버퍼(154)에 의해 수행될 수 있다. 더 나아가, 상기 통합기(152)에 의해 이용되는 FLT는 예를 들어 오프칩 저장 공간(160) 내지 온칩 저장공간(162)을 이용하여 구현될 수 있다.
본 발명의 일 실시예에서, 플로의 전체 구간 중 몇몇 시점에서 어떤 새로운 플로가 탐지될 수 있다. 새로운 플로가 탐지되는 시점에서는 플로 상태는 알 수 없는 상태이며, 새로운 플로가 정순서(in-order)임이 알려질 때까지, 첫 번째 패킷들을 이용하여 상기 플로 상태를 갱신한다. TTO를 수행하는 어떤 장치가 또한 다른 종류의 오프로드 기법들, 예를 들어, TOE, RDMA 또는 iSCSI 오프로드 등도 지원할 수 있을 수 있다. 이러한 경우에, 상기 TTO를 위한 FLT는, 해당 플로에 대한 오프로드 기법을 나타내고 있는 FLT 내의 각각의 엔트리(entry)를 이용하여, 그러한 다른 종류의 오프로드 기법들에 대한 연결 검색(connection search)을 하는 데에 공유될 수 있다. 다른 종류의 오프로드 기법들에 관한 플로들에 속하는 패킷들은 TTO에 적당한 대상이 될 수 없을 것이다. 어떤 새로운 플로를 검출하게 되면, 그러한 플로는 기본 초기화 문맥(basic initialization context)과 함께 개시될 수 있다. 상기 FLT 내에 플로 ID를 가지는 엔트리가 생성될 수 있다.
본 발명의 다른 실시예에 있어서, 동일한 플로에 속하는 복수의 세그먼트들은 TTO 내에서 최대 수신 병합 길이(receive aggregation length, RAL)를 가지고 병합될 수 있으며, 적절한 처리를 할 수 있게 호스트에 대해 하나의 훨씬 큰 세그먼트를 제공한다. 만약 병합이 허용되는 경우에는, 상기 수신된 패킷은 상기 호스트 메모리(126)에 위치할 수는 있지만 호스트에 전달되지 않을 것이다. 그 대신에, 상기 호스트 프로세서(124)는 이 패킷이 속해 있는 플로의 문맥을 갱신할 것이다. 새로운 인커밍 패킷은, 그 이전에 아직 전달되지 않은 다른 병합된 패킷들이 없을 경우라면 그 패킷이 단독으로 즉시 전달되게 할 수도 있고, 또는 이 패킷과 이전에 수신된 패킷들을 모두 포함하는 단일 패킷으로서 전달되게 할 수도 있다. 본 발명의 다른 실시예에서는, 상기 패킷은 전달되지 않고 상기 플로의 문맥을 갱신하기만 할 수도 있다.
만약 TCP 레벨에서, 다음과 같이, (1) 상기 데이터가 수신된 시퀀스 번호(sequence number, SN) 및 상기 플로의 문맥으로부터 도출되는 것과 순서가 맞지 않을(not in-order) 경우, (2) ACK 플래그를 제외한 TCP 플래그 예를 들어 PUSH 플래그를 가진 적어도 하나의 패킷이 검출될 경우, (3) 선택적 수신확인(selective acknowledgement, SACK) 정보를 가진 적어도 하나의 패킷이 검출될 경우, 내지 (4) 만약 수신된 ACK SN이 전달된 ACK SN보다 더 크고 또한 병합의 중단을 필요로 할 경우 중 적어도 한가지가 일어날 때에는, 종료 이벤트가 일어날 수 있고, 또한 상기 패킷이 병합되지 않을 수 있다. 이와 유사하게, 만약 IP 레벨에서, 다음과 같은, (1) IP 헤더 내의 TOS(type of service) 필드가 병합되었던 이전 패킷들의 TOS 필드와 달라진 경우 또는 (2) 수신된 패킷이 IP 조각(fragment)인 경우 중 적어도 한가지가 일어날 때에는, 종료 이벤트가 일어날 수 있고, 또한 상기 패킷이 병합되지 않을 수 있다.
복수의 패킷들을 단일한 패킷으로 병합할 경우에, 상기 병합된 패킷의 헤더는 이 패킷이 포함하고 있는 모든 개별 패킷들의 병합된 헤더를 포함할 수 있다. 본 발명의 예시적인 실시예에서는, 이러한 병합을 위한 복수의 TCP 규칙들은 다음과 같을 수 있다. 예를 들어, (1) 병합된 헤더 내의 SN은 가장 처음 또는 가장 오 래된 패킷의 SN이고, (2) ACK SN은 가장 나중의 또는 가장 새로운 세그먼트의 SN이며, (3) 병합된 헤더의 길이는 모든 병합 대상 패킷들의 길이들을 합한 것과 같고, (4) 병합된 헤더 내의 윈도(window)는 가장 나중의 또는 가장 새로 수신된 세그먼트 내의 윈도이며, (5) 병합된 헤더 내의 타임스탬프(TS)는 가장 처음 또는 가장 오래된 패킷의 TS이고, (6) 병합된 헤더 내의 TS-에코(TS-echo)는 가장 처음 또는 가장 오래된 패킷의 TS-에코이며, (7) 병합된 헤더 내의 체크섬(checksum)은 모든 병합 대상 패킷들의 누적된 체크섬이다.
본 발명의 예시적인 실시예에 있어서, 복수의 IP 필드 병합 규칙도 제공될 수 있다. 예를 들어, (1) 병합된 헤더의 TOS는 모든 병합 대상 패킷들의 TOS일 수 있고, (2) 병합된 헤더의 TTL(time-to-live)은 인가된 TTL 값들 중 최소값이며, (3) 병합된 헤더의 길이는 병합된 패킷들의 길이들의 합과 같고, (4) 병합된 헤더의 조각 오프셋(fragment offset)은 병합된 패킷들에 대해 0일 수 있으며, (5) 병합된 헤더의 패킷 ID는 가장 나중에 수신된 ID이다.
수신된 패킷들은, 수신된 패킷이 종료 이벤트가 발생하거나, 또는 해당 플로에 관해 제한시간(timeout)이 만료되었거나, 또는 병합된 패킷이 RAL 값을 초과함으로써 더 이상 병합되지 못할 때까지 병합될 수 있다. 상기 제한시간은, 어떤 플로 상에서 아직 전달이 이뤄지지 않은 첫 번째 패킷이 도달한 때에, 이러한 제한시간을 어떤 값, 즉 제한시간 병합 값(timeout aggregation value)으로 설정함으로써 구현될 수 있다. 병합될 다음 패킷들은 상기 제한시간을 변경하지 않을 것이다. 제한시간의 만료로 인해 패킷들이 전달되어 버리면, 상기 제한시간은 취소되고, 아직 전달되지 않은 다음 차례의 첫 번째 패킷이 도달하면 다시 설정될 수 있다. 물론, 본 발명의 다른 실시예들은, 주기적으로 모든 플로들을 스캐닝함으로써 제한시간을 구현하는 구성을 제공할 수도 있다.
본 발명의 예시적인 일 실시예에서, 수신된 ACK SN은 순수한 ACK들을 병합하기 위한 규칙들을 결정하는 것에, 그리고 그러한 수신된 ACK SN들에 의거하여 패킷들의 데이터를 병합하는 것을 중단하기 위한 규칙들을 결정하는 것에 관련될 수 있다. 중복된 순수 ACK들은 병합되지 않을 수 있다. 만약 중복된 순수 ACK들이 수신된다면, 이들 ACK들은 그 전까지의 병합된 패킷들이 전송되도록 만들 수 있으며, 상기 순수 ACK는 즉시 개별적으로 전달될 수 있다. 상기 수신된 ACK SN은 또한 병합을 중단시키고 진행중이던 병합 패킷을 호스트 TCP/IP 스택에 전달시키는 데에 이용될 수 있다.
본 발명의 예시적인 실시예에 있어서, ACK SN에 따라 병합을 중단하기 위한 다수의 규칙들이 제공될 수 있다. 예를 들어, (1) 만약 아직 전달이 완료되지 않았지만 수신확인이 된(ACKed) 바이트들의 수가, 전달이 이뤄지지 못한 수신 세그먼트들 및 이전의 세그먼트들을 고려할 경우에, 어떤 한계값, 즉 예를 들어 ReceiveAckedBytesAggregation 값을 초과한 경우, (2) 상기 수신된 ACK SN보다 앞서는 첫 번째 패킷이 도달한 시점으로부터의 시간이 어떤 한계값, 즉 예를 들어 TimeoutAckAggregation 값을 초과한 경우 등이다. 이러한 목적을 달성할 수 있도록, 플로마다 제2 타이머가 필요할 수도 있고, 또는 주기적으로 상기 플로를 스캐닝하는 것과 같은 기타 메카니즘이 구현될 수도 있다.
본 발명의 다른 예시적인 실시예에 있어서, 플로들은 다음과 같은 경우에 호스트 메모리로부터 제거될 수 있는데, 그러한 경우로는, (1) 수신 측에서 리셋(reset, RST) 플래그가 검출되었을 경우, (2) 수신 측에서 종료(finish, FIN) 플래그가 검출되었을 경우, (3) 예를 들어 TeminatedNoActivityTime과 같은, 사전에 정해진 시간 동안에 상기 플로에서 아무런 수신 활동이 없었던 경우, (4) 수신 방향에서 KeepAlive 패킷이 수신확인되지 않았을 경우 등이 있다. 최근에 사용된 최소 캐시인 LRU(least recently used) 캐시가 제한시간 규칙(timeout rule) 대신에 사용되어 상기 호스트 메모리로부터 플로들을 제거하는데 이용될 수 있다.
도 1e는 본 발명의 일 실시예에 따른 프레임 수신 및 배치를 위한 예시적인 단계들을 설명하기 위한 순서도이다. 도 1d 및 도 1e를 참조하면, 단계(180)에서는, 상기 네트워크 서브시스템(110)은 프레임을 예를 들어 이더넷(112)으로부터 수신할 수 있다. 단계(182)에서는, 프레임 파서가 상기 프레임을 파싱(parse)하여, 예를 들어, L3 및 L4 헤더들을 찾아낼 수 있다. 상기 프레임 파서는 L2 헤더들을 처리하여, 결국 L3 헤더로, 예를 들어 IP 버전 4(IPv4) 헤더 또는 IP 버전 6(IPv6) 헤더로 이끌 수 있다. IP 헤더 버전 필드는 상기 프레임이 IPv4 데이터그램(datagram)을 운반하는지, 또는 IPv6 데이터그램을 운반하는지 판정할 수 있다.
예를 들어, 만약 IP 헤더 버전 필드가 4의 값을 지니고 있다면, 상기 프레임은 IPv4 데이터그램을 운반하는 것일 수 있다. 만약, 예를 들어, IP 헤더 버전 필드가 6의 값을 지니고 있다면, 상기 프레임은 IPv6 데이터그램을 운반하는 것일 수 있다. 상기 IP 헤더 필드가 추출되면, 예를 들어 IP 소스(IP SRC) 어드레스, IP 목 적지(IP DST) 어드레스 및 IPv4 헤더 "프로토콜" 필드 또는 IPv6 "넥스트 헤더(Next Header)"를 얻을 수 있다. 만약, 상기 IPv4 "프로토콜" 헤더 필드 또는 IPv6 "넥스트 헤더" 헤더 필더가 6의 값을 지니고 있다면, 이어지는 헤더는 TCP 헤더가 될 수 있다.
IP 프로세싱의 나머지 절차가, 통상적인 대량 판매용(off-the-shelf) 소프트웨어 스택에서 이뤄지는 프로세싱과 유사한 방식을 통해, 뒤따라 이루어질 수 있다. 구현 방식은 임베디드 프로세서 상에 펌웨어를 이용하는 방식으로부터, 전용의, 한정 상태 머신(finite state machine, FSM), 또는 프로세서와 상태 머신의 혼성 장치(hybrid)를 이용하는 방식에 이르기까지 다양할 수 있다. 그러한 구현 방식은, 예를 들어, 하나 또는 다수의 프로세서, 상태 머신, 혼성 장치에 의해 수행되는 프로세싱의 수많은 스테이지들에 따라 달라질 수 있다. IP 프로세싱은, 예를 들어 길이, 유효성 및 분할 상태(fragmentation)에 관한 정보를 추출하는 절차를 포함할 수 있으며, 이에 한정되는 것은 아니다. 위치가 확인된 TCP 헤더도 또한 파싱되고 처리될 수 있다. 상기 TCP 헤더의 파싱을 통해, 예를 들어 수신된 프레임에 관련된 특정한 네트워크 플로의 소스 포트와 목적 포트 등에 관련된 정보가 추출될 수 있다.
TCP 프로세싱은 다수의 추가적인 프로세싱 스테이지들로 나눠질 수 있다. 단계(184)에서는, 상기 프레임은 어떤 종단 간(end-to-end) TCP/IP 연결과 연계될 수 있다. L2 프로세싱이 완료된 후에, 일 실시예에서는, 본 발명은 TCP 체크섬이 검증되었다는 정보를 제공할 수 있다. 상기 플로는, 예를 들어 다음의 4 튜플의 적어도 일 부분에 의해 정의될 수 있는데, 그러한 4 튜플은, IP 소스 어드레스(IP SRC addr), IP 목적 어드레스(IP DST addr), TCP 소스 포트 번호(TCP SRC) 및 TCP 목적 포트 번호(TCP DST)이다. 상기 절차는 관련된 IP 주소를 선택하는 데에 있어서 IPv4 또는 IPv6에 대해 적용될 수 있을 것이다.
단계(182)에서 프레임 파싱을 한 결과에 따라, 상기 4 튜플은 완전하게 추출될 수 있다. 결합 하드웨어(association hardware)는 상기 수신된 4 튜플을 TTEEC/TTOE(114)에 저장되어 있는 4 튜플들의 목록에 비교할 수 있다. 상기 TTEEC/TTOE(114)는 튜플들의 목록을 유지 관리하고 있는데, 이는 예를 들어, 상기 TTEEC/TTOE(114)가 관리하고 있는, 병합된 플로들 또는 오프로딩된 연결들을 나타내는 튜플들의 목록이다. 그러한 결합 정보를 저장하는 데에 이용되는 메모리 자원은 온칩 설계를 선택하든 오프칩 설계를 선택하든 상당한 비용이라고 할 수 있다. 따라서, 모든 그러한 결합 정보가 온칩으로 포함되지 못할 가능성도 있다. 가장 활발한 연결들을 온칩으로 저장하는 캐시가 이용될 수도 있다. 정합이 일어난 경우에는, 상기 TTEEC/TTOE(114)는 그 특정 TCP/IP 플로를 그 정합이 된 4 튜플과 함께 관리를 할 수 있다.
단계(186)에서는, 상기 TCP 플로 문맥이 페칭(fetch)될 수 있다. 단계(188)에서는, 상기 TCP/IP 헤더들이 처리될 수 있다. 단계(190)에서는, 헤더/데이터 경계들이 판정될 수 있다. 단계(192)에서는, 통합기가 어떤 특정 네트워크 플로에 연계될 수 있는 다수의 프레임들을 수집 내지 축적할 수 있다. 상기 수집된 TCP 세그먼트들 그리고 상기 TCP/IP 연결에 관한 수집된 정보가, 예를 들어 하나의 병합된 TCP 세그먼트를 포함하는 하나의 TCP/IP 프레임을 생성하는 데에 이용될 수 있다. 단계(194)에서, 종료 이벤트가 발생할 경우에는, 상기 절차는 단계(196)로 진행할 수 있다. 종료 이벤트는 예를 들어 어떤 사태일 수도 있고, 또는 상기 통합기에 대해, TCP 세그먼트들의 수집 내지 축적이 완료된 것일 수 있음을 알리고 상기 단일 병합 TCP 세그먼트가 적절한 처리를 위해 호스트 시스템에 전달될 수 있음을 알리는 어떤 신호일 수도 있다. 단계(196)에서는, 단일 병합 TCP 세그먼트에 상응하는 적재 데이터가 호스트 버퍼에 대해 매핑될 수 있다. 단계(198)에서는, 상기 단일 병합 TCP 세그먼트로부터 데이터가 상기 호스트 버퍼로 전송될 수 있다. 종료 이벤트가 일어나지 않은 경우에는, 단계(194)로 돌아가서, 상기 절차는 단계(180)로 진행할 수 있고, 다음 차례의 수신 프레임이 처리될 수 있다.
도 1f는 본 발명의 일 실시예에 따라, 병합되고 순서대로 수신되지 않는 TCP/IP 프레임들의 예시적인 시퀀스를 예시한다. 도 1f를 참조하면, 제1 TCP/IP 프레임(202), 제2 TCP/IP 프레임(204), 제3 TCP/IP 프레임(206) 및 제4 TCP/IP 프레임(208)이 나타나 있다. 각각의 예시된 TCP/IP 프레임은 이더넷 헤더(200a), IP 헤더(200b), TCP 헤더(200c) 및 TCP 옵션들(TCP options)(200d)을 포함할 수 있다. 도 1f에는 나타내지 않았지만, 상기 TCP/IP 프레임들의 각각은 전송되고자 하는 데이터를 포함하는 TCP 세그먼트들을 가지고 있는 적재 파트를 포함할 수 있다. 상기 이더넷 헤더(200a)는 TCP/IP 프레임들에 대한 값인 enet_hdr를 가질 수 있다. 상기 IP 헤더(200b)는 복수의 필드들을 포함할 수 있다. 이 점에 있어서, 상기 IP 헤더(200b)는 IP_LEN이라는 필드를 포함할 수 있는데, 이는 프레임들 내에 얼마나 많 은 바이트들이 있는지를 나타내는 데 이용될 수 있다. 이 예제에서, 제1 TCP/IP 프레임(202), 제2 TCP/IP 프레임(204), 제3 TCP/IP 프레임(206) 및 제4 TCP/IP 프레임(208)의 각각에는 1448 개의 TCP 적재 패킷들(payload packets)이 있다.
상기 IP 헤더(200b)는 또한 식별 필드(identification field), ID를 포함할 수 있는데, 이는 예를 들어 해당 프레임을 식별시키는 데에 이용될 수 있다. 이 예제에서, 제1 TCP/IP 프레임(202)에 대해서는 ID=100, 제2 TCP/IP 프레임(204)에 대해서는 ID=101, 제3 TCP/IP 프레임(206)에 대해서는 ID=103 및 제4 TCP/IP 프레임(208)에 대해서는 ID=102일 수 있다. 상기 IP 헤더(200b)는 또한 예를 들어 IP 헤더 체크섬 필드인 ip_csm, 소스 필드인 ip_src, 목적지 필드인 ip_dest와 같은 부가적인 필드들도 더 포함할 수 있다. 이 예제에서, 상기 Ip_src 및 Ip_dest의 값들은 모든 프레임에 대해서 동일할 수도 있지만, IP 헤더 체크섬 필드는 제1 TCP/IP 프레임(202)에 대해서는 ip_csm0, 제2 TCP/IP 프레임(204)에 대해서는 ip_csm1, 제3 TCP/IP 프레임(206)에 대해서는 ip_csm3 그리고 제4 TCP/IP 프레임(208)에 대해서는 ip_csm2일 수 있다.
상기 TCP 헤더(200c)도 복수의 필드들을 포함할 수 있다. 예를 들어, 상기 TCP 헤더(200c)는 소스 포트 필드인 src_prt, 목적 포트 필드인 dest_prt, TCP 시퀀스 필드인 SEQ, 수신확인 필드인 ACK, 플래그 필드인 FLAGS, 공고 윈도 필드(advertised window field)인 WIN, 그리고 TCP 헤더 체크섬 필드인 tcp_csm을 포함할 수 있다. 이 예제에서, 상기 src_prt, dest_prt, FLAGS 및 WIN 필드의 값들은 모든 프레임들에서 동일할 수 있다. 제1 TCP/IP 프레임(202)에 대해서, SEQ=100, ACK=5000 및 TCP 헤더 체크섬 필드는 tcp_csm0일 수 있다. 제2 TCP/IP 프레임(204)에 대해서, SEQ=1548, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm1일 수 있다. 제3 TCP/IP 프레임(206)에 대해서, SEQ=4444, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm3일 수 있다. 제4 TCP/IP 프레임(208)에 대해서, SEQ=2996, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm2일 수 있다.
상기 TCP 옵션(200d)도 복수의 필드들을 포함할 수 있다. 예를 들어, 상기 TCP 옵션(200d)은 TCP 프레임에 연관된, timestamp라고 표시된 타임스탬프 지시자를 포함할 수 있다. 이 예제에서는, 상기 타임스탬프 지시자의 값들은, 상기 제1 TCP/IP 프레임(202)에 대해서는 timestamp0이고, 상기 제2 TCP/IP 프레임(204)에 대해서는 timestamp1이고, 상기 제3 TCP/IP 프레임(206)에 대해서는 timestamp3이고, 상기 제4 TCP/IP 프레임(208)에 대해서는 timestamp2이 될 수 있다.
도 1f에 나타낸 TCP/IP 프레임들의 예시적인 시퀀스는 예를 들어, 상기 네트워크 서브시스템(110)의 송신 순서를 기준으로 볼 때 그 순서에 맞지 않게 수신된 것이다. 상기 IP 헤더(200b) 내의 ID 필드 내지 상기 TCP 옵션(200d) 내의 타임스탬프 필드에 포함된 정보는, 상기 제3 TCP/IP 프레임(206) 및 제4 TCP/IP 프레임(208)이 송신의 순서와는 다른 순서로 수신되었음을 나타내고 있다. 이러한 예에서, 상기 제4 TCP/IP 프레임(208)은 상기 제2 TCP/IP 프레임(204)보다는 뒤에, 그리고 제3 TCP/IP 프레임(206)보다는 먼저 송신되었다. 예를 들어 도 1b 내지 도 1e에 설명된 통합기들과 같은 통합기는 그러한 TCP/IP 프레임들로부터 정보를 취득하여, 수신된 정보를 병합함으로써 단일한 TCP/IP 프레임을 생성할 수 있다. 이 점에 있어서, 상기 통합기는 FLT를 이용하여, 상기 TCP/IP 프레임들로부터 수신된 정보의 적어도 일부분을 저장하고 또는 갱신할 수 있다. 상기 통합기는 또한, 가용한 메모리를 이용하여, 병합된 TCP/IP 프레임의 적재 데이터를 저장하거나 또는 버퍼링할 수 있다.
도 2a는 본 발명의 일 실시예에 따라, 병합되고 순서대로 수신되는 TCP/IP 프레임들의 예시적인 시퀀스를 예시한다. 도 2a를 참조하면, 제1 TCP/IP 프레임(202), 제2 TCP/IP 프레임(204), 제3 TCP/IP 프레임(206) 및 제4 TCP/IP 프레임(208)이 나타나 있다. 도시된 각 TCP/IP 프레임은 이더넷 헤더(200a), IP 헤더(200b), TCP 헤더(200c) 및 TCP 옵션(200d)을 포함할 수 있다. 도 2a에 나타나 있지는 않지만, 각 TCP/IP 프레임들은 전송될 데이터를 포함하는 TCP 세그먼트들이 저장된 적재 부분을 포함할 수 있다. 상기 이더넷 헤더(200a)는 TCP/IP 프레임들에 대한 값인 enet_hdr를 가질 수 있다. 상기 IP 헤더(200b)는 복수의 필드들을 포함할 수 있다. 이 점에 있어서, 상기 IP 헤더(200b)는 IP_LEN이라는 필드를 포함할 수 있는데, 이는 프레임들 내에 얼마나 많은 바이트들이 있는지를 나타내는 데 이용될 수 있다. 이 예제에서, 제1 TCP/IP 프레임(202), 제2 TCP/IP 프레임(204), 제3 TCP/IP 프레임(206) 및 제4 TCP/IP 프레임(208)의 각각에는 1448 개의 TCP 적재 패킷들이 있다.
상기 IP 헤더(200b)는 또한 식별 필드인 ID를 포함할 수 있는데, 이는 예를 들어 해당 프레임을 식별시키는 데에 이용될 수 있다. 이 예제에서, 제1 TCP/IP 프레임(202)에 대해서는 ID=100, 제2 TCP/IP 프레임(204)에 대해서는 ID=101, 제3 TCP/IP 프레임(206)에 대해서는 ID=102 및 제4 TCP/IP 프레임(208)에 대해서는 ID=103일 수 있다. 상기 IP 헤더(200b)는 또한 예를 들어 IP 헤더 체크섬 필드인 ip_csm, 소스 필드인 ip_src, 목적지 필드인 ip_dest와 같은 부가적인 필드들도 더 포함할 수 있다. 이 예제에서, 상기 ip_src 및 ip_dest의 값들은 모든 프레임에 대해서 동일할 수도 있지만, IP 헤더 체크섬 필드는 제1 TCP/IP 프레임(202)에 대해서는 ip_csm0, 제2 TCP/IP 프레임(204)에 대해서는 ip_csm1, 제3 TCP/IP 프레임(206)에 대해서는 ip_csm2 그리고 제4 TCP/IP 프레임(208)에 대해서는 ip_csm3일 수 있다.
상기 TCP 헤더(200c)도 복수의 필드들을 포함할 수 있다. 예를 들어, 상기 TCP 헤더(200c)는 소스 포트 필드인 src_prt, 목적 포트 필드인 dest_prt, TCP 시퀀스 필드인 SEQ, 수신확인 필드인 ACK, 플래그 필드인 FLAGS, 공고 윈도 필드인 WIN, 그리고 TCP 헤더 체크섬 필드인 tcp_csm을 포함할 수 있다. 이 예제에서, 상기 src_prt, dest_prt, FLAGS 및 WIN 필드의 값들은 모든 프레임들에서 동일할 수 있다. 제1 TCP/IP 프레임(202)에 대해서, SEQ=100, ACK=5000 및 TCP 헤더 체크섬 필드는 tcp_csm0일 수 있다. 제2 TCP/IP 프레임(204)에 대해서, SEQ=1548, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm1일 수 있다. 제3 TCP/IP 프레임(206)에 대해서, SEQ=4444, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm2일 수 있다. 제4 TCP/IP 프레임(208)에 대해서, SEQ=2996, ACK=5100 및 TCP 헤더 체크섬 필드는 tcp_csm3일 수 있다.
상기 TCP 옵션(200d)도 복수의 필드들을 포함할 수 있다. 예를 들어, 상기 TCP 옵션(200d)은 TCP 프레임에 연관된, timestamp라고 명명된 타임스탬프 지시자를 포함할 수 있다. 이 예제에서는, 상기 타임스탬프 지시자의 값들은, 상기 제1 TCP/IP 프레임(202)에 대해서는 timestamp0이고, 상기 제2 TCP/IP 프레임(204)에 대해서는 timestamp1이고, 상기 제3 TCP/IP 프레임(206)에 대해서는 timestamp2이고, 상기 제4 TCP/IP 프레임(208)에 대해서는 timestamp3이 될 수 있다.
도 2a에 나타낸 TCP/IP 프레임들의 예시적인 시퀀스는 예를 들어, 상기 네트워크 서브시스템(110)의 송신 순서를 기준으로 볼 때 그 순서에 맞게 수신된 것이다. 예를 들어 도 1b 내지 도 1e에 설명된 통합기들과 같은 통합기는 그러한 TCP/IP 프레임들로부터 정보를 취득하여, 수신된 정보를 병합함으로써 단일한 TCP/IP 프레임을 생성할 수 있다. 이 점에 있어서, 상기 통합기는 FLT를 이용하여, 상기 TCP/IP 프레임들로부터 수신된 정보의 적어도 일부분을 저장하고 또는 갱신할 수 있다. 상기 통합기는 또한, 가용한 메모리를 이용하여, 병합된 TCP/IP 프레임의 적재 데이터를 저장하거나 또는 버퍼링할 수 있다.
도 2b는 본 발명의 일 실시예에 따라, 도 2a의 TCP 프레임 시퀀스 내 정보로부터 생성된 예시적인 병합된 TCP/IP 프레임을 예시한다. 도 2b를 참조하면, 도 2a에서 수신된 TCP/IP 프레임들로 된 시퀀스로부터 병합기가 생성한 단일 TCP/IP 프레임(210)이 나타나 있다. 상기 TCP/IP 프레임(210)은 이더넷 헤더(200a), IP 헤더(200b), TCP 헤더(200c) 및 TCP 옵션(200d)을 포함할 수 있다. 도면에 나타나 있지는 않지만, TCP/IP 프레임(210)은 또한, 수신된 TCP/IP 프레임들의 실제 데이터들 포함하는 TCP 세그먼트들이 저장된 적재 부분을 포함할 수 있다. 상기 TCP/IP 프레임(210) 내의 이더넷 헤더(200a), IP 헤더(200b), TCP 헤더(200c) 및 TCP 옵션(200d)에 들어 있는 필드들은 도 2a의 TCP/IP 프레임들 내의 필드들에 본질적으로 동일할 수 있다. TCP/IP 프레임(210)에 대해, 적재 부분 내에 있는 패킷들의 총 수는 IP_LEN=5844로, 이는 예를 들어 도 2a에서 네 개의 TCP/IP 프레임들 전체의 패킷들의 수를 합한 것(1448*4+52)에 상응한다. TCP/IP 프레임(210)에 관하여, ID 필드의 값은 ID=100으로, 이는 제1 TCP/IP 프레임(202)의 ID 값에 상응한다. 더 나아가, 타임스탬프 지시자의 값은 timestamp0이며, 이는 제1 TCP/IP 프레임(202)의 타임스탬프 지시자의 값에 상응한다. 상기 TCP/IP 프레임(210)은 예를 들어 TCP 프로세싱을 할 수 있도록 호스트 시스템으로 전달 내지 전송될 수 있다.
도 2c는 본 발명의 일 실시예에 따라, 패킷 P3와 패킷 P4가 송신 순서에 비추어 보아 순서에 맞지 않게 도착할 경우에, 순서에 맞지 않는 데이터를 취급하는 데에 이용될 수 있는 예시적인 단계들을 설명하는 도면이다. 도 2c를 참조하면, 실제 수신 RX 트래픽 패턴(200) 내에 예시된 바와 같이, 패킷들(P3, P4)은 각자를 기준으로 보면 상기 NIC(128)에 순서에 맞게 도달하기는 했지만 이는 다른 패킷(P2)이 도달하기 전이다. 상기 패킷들(P3, P4)은 TCP 전송 시퀀스에서 아일(isle)(211) 내의 네 번째 패킷과 다섯 번째 패킷에 각각 상응할 수 있다. 이 경우에, 실제 수신 RX 트래픽 패턴(200) 내에서 패킷(P1)의 끝 부분과 패킷(P3)의 시작 부분 사이에는 틈, 즉 시간 간격이 있다. 상기 TCP 전송 시퀀스 내의 첫 번째 단절 부분은 TCP 수신 시퀀스 공간(TCP receive sequence space)(202)에 나타난 바와 같이, 패킷들(P3, P4)의 도달이, 패킷들(P0, P1)을 포함하는 아일(213) 다음에 도달하기 때 문에 초래된 것일 수 있다. 상기 아일(211)의 가장 우측 부분인 rcv_nxt_R은 (rcv_nxt_L + 한 아일의 길이)로 나타낼 수 있다. 이때, rcv_nxt_L은 아일(211)의 가장 좌측 부분을 말하고, 상기 아일의 길이는 패킷들(P3, P4) 길이의 합을 말한다.
도 2d는 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 설명하는 상태도이다. 도 2d를 참조하면, 복수의 예시적인 플로 상태들, 즉, 정순서(in order) 상태(226), 탈순서(out-of-order) 상태(224), 또는 미지(unknown) 상태(222) 등이 나타나 있다. 전이 상태 (transition state)(228)에서는, 어떤 플로에 대해, 3웨이 TCP 핸드쉐이크(3-way TCP handshake)가 그 플로에 대해 검출되지 않은 채로, 또는 상기 플로의 존재 기간 중에서 초기화 단계(initialization phase)를 제외한 기간 중의 어떤 시점에서, 상기 미지 상태(222)가 검출될 수 있다.
상기 3웨이 TCP 핸드쉐이크는 제1 호스트에 의해 선택되고 또한 그로부터 전송되는 초기 발송 시퀀스 번호(initial send sequence number)를 포함하는 동기화(synchronize, SYN) 세그먼트로부터 시작한다. 이 시퀀스 번호는 그 패킷 내에 있는 데이터의 시작 시퀀스 번호로 이용될 수 있으며, 상기 세그먼트 내에 포함되는 전송 데이터의 매 바이트마다 증가될 수 있다. 만약 두 번째 호스트가 상기 시퀀스 번호를 가지는 SYN을 수신하는 경우에는, 이 두 번째 호스트는 시퀀스 번호 필드에 자신만의 완전히 독자적인 ISN 번호를 가지는 SYN 세그먼트를, 수신확인 필드와 함께 송신할 수 있다. 이 수신확인(ACK) 필드는 이 필드를 수신한 장치에 대 해, 해당 데이터가 상대방 측에서 수신되었다는 점과 그 상대방이 다음 차례로 전송될 데이터 바이트들로 된 세그먼트를 예상하고 있음을 알릴 수 있으며, SYN-ACK이라고도 불릴 수 있다. 첫 번째 호스트가 이 SYN-ACK 세그먼트를 수신한 경우에는, 이 장치는 다음 시퀀스 번호를 포함하는, 순방향 수신확인(forward acknowledgement)이라 불리는 ACK 세그먼트를 보낼 수 있으며, 이 ACK 세그먼트는 두 번째 호스트에 의해 수신된다. 상기 ACK 세그먼트는 설정된 ACK 필드에 의해 식별될 수 있다. 어떤 시간 폭 내에 수신확인되지 않은 세그먼트들은 재전송될 수 있다.
어떤 플로가 투명 TCP 오프로드된 경우에는, 그 플로는, 이 플로가 제거되어 다시 검출되기 전까지는, 정순서 상태(226) 및 탈순서(out-of-order, OOO) 상태(224)로부터 상기 미지 상태(222)로 이동하지는 않을 것이다. 한 천이 단계(230)에서는, 상기 상태도는, 예를 들어 도 2c에 예시된 것과 같이 상기 파라미터들 rcv_nxt_R 및 rcv_nxt_L을 이용하여, 탈순서 아일 시퀀스 번호(out-of-order isle sequence number)의 경계들(boundaries)을 추적할 수 있다. 첫 번째 진입 세그먼트(ingress segment)는 하나의 아일(isle)로, 예를 들어 도 2c의 아일(213)로 참조될 수 있는데, 이 경우, 순서 정렬 상태(ordering state)는 탈순서 상태(224)로 설정될 수 있다. 아일의 가장 오른쪽 부분인 rcv_nxt_R은 rcv_nxt_L + 아일의 길이와 같이 나타낼 수 있는데, 이때 rcv_nxt_L은 아일의 가장 왼쪽 부분이고, 아일의 길이는 그 아일 내에 포함된 패킷들의 길이를 모두 합한 것이다.
다음 천이 상태(232)에서는, 상기 NIC(128)는, 송신기와 수신기가 결합이 해 제됨에 따라, 국부 스택 수신확인 정보(local stack acknowledgement information)를 가지지 못할 수 있다. 상기 아일의 길이가 어떤 문턱값보다 더 큰 경우에는 언제나, 순서 정렬 상태가 탈순서 상태(224)로부터 정순서 상태(226)로 변경될 수 있다. 상기 문턱값은 국부 호스트 스택(local host stack)의 최대 수신 윈도(maximum receive window)에 따라 설정될 수 있는데, 이는 수신 측 장치가 ACK 신호를 수신하지 않고는 데이터를 이 윈도 값 이상 보낼 수 없기 때문이다.
천이 상태(234)에서, 만약 새로운 플로가 TCP 3웨이 핸드쉐이크와 함께 검출되었다면, 초기의 순서 정렬 상태는 정순서 상태(226)로 설정될 수 있다. 천이 상태(236)에서는, 상기 rcv_nxt_R은 다음과 같은 알고리즘에 따라, 진입 패킷들의 조건들을 조사하는 데에 이용될 수 있다.
if(in_packet_sn==rcv_nxt_R) //아일이 증가하면, rcv_nxt_L을 갱신
rcv_nxt_R=in_packet_sn + in_packet_len
천이 상태(238)에서는, 순서 정렬 상태는, 만약 아일의 길이가 rcv_nxt_R과 같지 않은 경우에는, 정순서 상태(226)에서 탈순서 상태(224)로 변경될 수 있다. rcv_nxt_R의 값은 다음과 같은 알고리즘에 따라, 진입 패킷들의 조건들을 조사하는 데에 이용될 수 있다.
if(in_packet_sn != rcv_nxt_R)
rcv_nxt_L=in_packet_sn
rcv_nxt_R=in_packet_sn + in_packet_len
이어서 탈순서 상태(224)로 상태를 변경한다.
천이 상태(240)에서, 탈순서 상태(224)에 머물러 있는 동안에는, 다음과 같은 예시적인 알고리즘을 이용하여 매 진입 패킷에 대해 가장 높은 탈순서 아일(OOO isle)의 경계들이 추적될 수 있다.
if(in_packet_sn==rcv_nxt_R) //아일이 증가하면, rcv_nxt_L을 갱신
rcv_nxt_R=in_packet_sn + in_packet_len
else if(in_packet_sn > rcv_nxt_R) //더 높은 새로운 아일이 생성된 경우
rcv_nxt_R=in_packet_sn + in_packet_len
rcv_nxt_L=in_packet_sn
도 3은 본 발명의 일 실시예에 따른 예시적인 투명 TCP 오프로드를 설명하는 순서도이다. 도 3을 참조하면, 단계(302)에서, 수신되는 매 패킷에 대해, 예를 들어 상기 통합기(131)는 프로토콜 헤더들을 검사함으로써 수신된 패킷들을 비 TCP 패킷들과 TCP 패킷들로 분류할 수 있다. 단계(304)에서, 비 TCP 패킷들 내지 올바른 체크섬을 가지고 있지 않은 패킷에 대해서는, 상기 통합기(131)는 아무런 변경없이 프로세싱을 지속할 수 있다. 단계(306)에서, 상기 통합기(131)는 적재 데이터의 TCP 체크섬을 계산할 수 있다. 단계(308)에서, 유효한 체크섬을 가지는 TCP 패킷들에 대해, 상기 통합기(131)는 먼저, IP 소스 어드레스, IP 목적 어드레스, 소스 TCP 포트 및 목적 TCP 포트를 포함하는 튜플(tuple)을 이용하여 플로 룩업 테이블(FLT)을 탐색하고, 상기 패킷이 상기 통합기(131)가 이미 인지하고 있는 어떤 연결에 속하는 것인지를 판정한다.
단계(310)에서, 그러한 탐색이 실패한 경우라면, 이 패킷은 상기 통합 기(131)에 대해 알려지지 않은 어떤 연결에 속할 수 있다. 상기 통합기(131)는 다른 TCP 적재 데이터가 더 있는지 여부를 판정할 수 있다. 만약 예를 들어 순수한 TCP ACK처럼, TCP 적재 데이터가 없는 경우에는, 상기 통합기는 더 이상의 프로세싱을 중단하고, 통상적인 프로세싱 경로를 통해 상기 패킷에 대한 프로세싱을 허용하며, 상기 FLT에 엔트리를 하나 추가할 수 있다. 단계(312)에서, TCP 적재 데이터가 더 있고 그 연결이 상기 FLT에 없는 경우에는, 상기 통합기(131)는 이 연결에 관해 상기 FLT에 새로운 엔트리를 생성할 수 있다. 이러한 동작은 만약 상기 FLT가 가득 차 있는 경우라면, 그 FLT의 어떤 엔트리를 퇴출시키는 작업을 수반할 수 있다. 이러한 FLT 퇴출 동작은 여타 추가적인 통합 동작을 즉시 중단시킬 수 있으며, 병합된 TCP 세그먼트에 관한 정보를 호스트 TCP 스택에 제공할 수 있다.
단계(314)에서는, 새로 생성된 또는 대체된 FLT 엔트리에는, 튜플에 추가로, TCP 시퀀스 번호, TCP 수신확인 번호, TCP 적재 데이터의 길이와, 만약 존재하는 경우에는 타임스탬프 선택사항이, 기록될 수 있다. 단계(316)에서는, TCP 적재 데이터 앞에 놓이는 여하한 헤더를 어떤 버퍼(헤더 버퍼)에 대기시킬 수 있으며, 반면에 상기 TCP 적재 데이터는 다른 버퍼(적재 데이터 버퍼)에 대기될 수 있다. 이러한 정보는 또한 상기 FLT 내에 유지 관리될 수 있으며, 타이머가 또한 시작될 수 있다. 단계(318)에서, 다음의 예시적인 종료 이벤트들 중 어느 하나라도 일어나기 전까지는, 상기 헤더 및 상기 적재 데이터는 일시적으로 상기 통합기(131)에서 결집될 수 있다.
a. TCP 플래그들이 PSH, FIN 또는 RST 비트들을 포함한다.
b. TCP 적재 데이터의 양이 어떤 문턱값 또는 최대 IP 데이터그램 크기를 초과한다.
c. 타이머가 만료되었다.
d. FLT 테이블이 가득 찼고, 현재 네트워크 플로의 엔트리들 중 하나가 새로운 네트워크 플로에 관한 엔트리로 교체되었다.
e. 동일한 튜플을 포함하는 첫 번째 IP 조각이 검출되었다.
f. 송신 윈도 크기가 변경되었다.
g. TCP 수신확인(ACK) 번호에 발생한 변경치가 ACK 문턱값을 초과하였다.
h. 중복되는 ACK들의 횟수가 중복 ACK 문턱값을 초과하였다.
i. 선택적 TCP 수신확인(SACK)이 있었다.
이러한 경우에, 상기 PSH 비트는 일종의 제어 비트로서, 이는 어떤 세그먼트가 수신 중인 사용자에게 밀어내기 되어야만 하는 데이터를 포함하고 있음을 나타내는 제어 비트이다. 상기 FIN 비트도 일종의 제어 비트로서, 발송 측이 시퀀스 공간을 차지하는 데이터 또는 제어 신호를 더 이상 보내지 않을 것이라는 것을 나타낸다. 상기 RST도 일종의 제어 비트로서, 수신 장치가 더 이상의 상호 작용을 배제하고 연결을 삭제하게 되는 리셋 동작을 지시한다. 상기 ACK 비트도 일종의 제어 비트로서, 이는 세그먼트의 수신확인 필드가, 이 세그먼트의 발송 측이 수신을 예상하고 있는 정보인, 그리고 이 정보로써 모든 이전 시퀀스 번호들에 대한 수신을 확인해주는 정보인, 다음 시퀀스 번호를 특정하고 있음을 나타낸다.
단계(320)에서는, 이러한 이벤트들 중 여하한 하나라도 발생하는 경우에, 상기 통합기(131)가 TCP 헤더를 새로운 TCP 적재 데이터 총량 값을 가지고 변경하고, 이러한 대형의 단일 TCP 세그먼트를, 병합된 TCP 세그먼트들의 총 개수 정보 내지 첫 번째 타임스탬프 옵션과 함께, 통상적인 TCP 스택에 보낸다. 단계(322)에서, 상기 대형의 단일 TCP 세그먼트가 호스트 TCP 스택에 도달하면, 상기 호스트 TCP 스택은 이를 여느 통상적인 인커밍 프레임과 다름없이 처리를 한다.
하드웨어 스택은 NIC 내에 위치할 수 있는데, 유선으로부터 패킷들을 획득하고, 이들 패킷들을 상기 호스트 프로세서 상에서 구동되는 TCP 스택과는 독립적으로 축적 내지 병합하도록 적절히 변용될 수 있다. 예를 들어, 복수의 수신된 패킷들의 데이터 부분은, 예를 들어 8K의 단일한 대형 TCP 수신 패킷이 생성될 때까지 호스트 메모리 내에 축적될 수 있다. 일단 그러한 단일 대형 TCP 수신 패킷이 생성되면, 이는 적절한 프로세싱을 위해 호스트로 전송될 수 있다. 이 점에 있어서, 상기 하드웨어 스택은 자신이 수신된 TCP 패킷들을 인식하는 때에 상태 및 문맥 정보를 구축하도록 설정될 수 있다. 이는 TCP 스택 프로세싱과 관련된 연산 집약적인(computation intensive) 작업들의 양을 대단히 줄일 수 있다. 복수의 수신 패킷들의 데이터 부분이 호스트 메모리 내에서 축적되는 동안, 이러한 데이터는 NIC의 제어 하에 남아 있게 된다.
단일 TCP 연결을 취급하는 경우를 예시하였지만, 본 발명은 이러한 점에 제한되는 것이 아니다. 경우에 따라 적절하게, 본 발명의 다양한 실시예들은 복수의 물리적 네트워크 포트들을 통하여 복수의 TCP 연결들을 지원할 수 있다.
본 발명의 다른 실시예는 기계적 판독가능한 스토리지(machine-readable storage)를 제공할 수 있으며, 여기에는 기계 장치(machine)에 의해 실행도ㅚㄹ 수 있는 적어도 하나의 코드부(code section)를 갖는 컴퓨터 프로그램이 저장되어 있어서, 그 기계 장치로 하여금 투명 TCP 오프로드를 위해 상술한 바와 같은 단계들을 수행하도록 한다.
경우에 따라 적절하게, 본 발명은 하드웨어나 소프트웨어 또는 이들을 조합한 형태로 실현될 수 있다. 본 발명은 적어도 하나의 컴퓨터 시스템 안에 중앙 집중된 방식으로 구현될 수도 있고, 서로 다른 요소들이 여러 개의 상호 연결된 컴퓨터 시스템들에 걸쳐 퍼져있는 분산된 방식으로 구현될 수도 있다. 여기에 설명된 방법들을 수행할 수 있도록 설계된 어떠한 형태의 컴퓨터 시스템 또는 기타 장치도 적합하다. 하드웨어와 소프트웨어의 통상적인 조합은 컴퓨터 프로그램이 탑재된 범용 컴퓨터 시스템이 될 수 있으며, 이때 상기 컴퓨터 프로그램은 로딩되어 실행될 경우에 상기 컴퓨터 시스템을 제어하여, 이 컴퓨터 시스템이 여기에서 설명한 방법들을 수행할 수 있게 한다.
본 발명은 또한 컴퓨터 프로그램 제품(computer program product)에 내장될 수 있다. 이때, 상기 컴퓨터 프로그램 제품은 여기서 설명한 방법들의 구현을 가능하게 하는 모든 특징들을 모두 포함하며, 컴퓨터 시스템에 탑재될 경우에는 그러한 방법들을 수행할 수 있다. 본 발명의 문맥에서 컴퓨터 프로그램이란, 어떠한 종류의 언어, 코드 또는 표기법으로 나타낸, 일단의 명령에 관한 어떠한 종류의 표현을 뜻한다. 이때, 상기 일단의 명령들이란, 정보 처리 능력을 가진 시스템이 어떤 특정한 기능을 직접적으로, 또는 다음의 (a) 다른 프로그램 언어, 코드나 표기법으로 컨버젼(conversion)되거나, (b) 상이한 물질적인 형태로 재생산을 각각 거치거나 또는 두 가지 모두를 거친 후에, 수행하도록 의도된 것들을 말한다.
본 발명이 특정한 실시예들에 관하여 설명되었지만, 본 발명의 사상에서 벗어남이 없이, 다양한 변경이 이뤄질 수 있고 또한 균등물들이 치환될 수 있다는 점은 당해 기술 분야에 숙련된 자들에게 이해될 것이다. 추가적으로, 본 발명의 사상에서 벗어남이 없이, 특정한 상황이나 물적 요건을 본 발명의 지침에 맞게 조절할 수 있도록 다양한 개조가 이뤄질 수 있다. 따라서, 본 발명은 개시된 특정한 실시예에 한정되는 것이 아니며, 본 발명은 첨부된 청구 범위의 사상 내에 들어오는 모든 실시예들을 포함한다.
Claims (28)
- 네트워크 정보에 관한 네트워크 프로세싱 관리 방법에 있어서,네트워크 인터페이스 카드(NIC) 프로세서를 통한 특정한 네트워크 플로(flow)에 대해 수신된 적어도 하나의 전송 제어 프로토콜(TCP) 세그먼트를, 상기 적어도 하나의 TCP 세그먼트가 수신될 때마다 상기 특정 네트워크 플로에 관한 상태 정보를 호스트 시스템에 전달하지 않고서 축적하는 단계;소정의 종료 이벤트가 발생한 후에, 상기 축적된 적어도 하나의 TCP 세그먼트들을 포함하는 새로운 TCP 세그먼트를 생성하는 단계로서, 상기 새로운 TCP 세그먼트는 병합된 TCP 세그먼트를 포함하는, 상기 생성하는 단계;상기 생성된 새로운 TCP 세그먼트와, 이러한 생성된 새로운 TCP 세그먼트에 대한 상태 정보를 소정의 프로세싱을 위해 상기 호스트 시스템에 전달하는 단계; 및상기 특정 네트워크 플로의 상태가 정순서(in-order) 상태, 탈순서(out-of-order) 상태 및 미지(unknown) 상태 중 적어도 어느 하나인 것으로 검출하는 단계를 포함하며,상기 종료 이벤트는,상기 특정한 네트워크 플로에 연계된 TCP/IP 프레임이 PSH 비트, FIN 비트 및 RST 비트 중 적어도 하나를 가지는 TCP 플래그를 포함할 경우,상기 특정한 네트워크 플로에 연계된 TCP/IP 프레임이 최대 IP 데이터그램(datagram) 크기와 같거나 그보다 더 큰 값의 TCP 적재 길이를 포함할 경우,상기 적어도 하나의 TCP 세그먼트의 축적에 관련된 타이머가 만료되는 경우,플로 룩업 테이블(FLT)가 가득 찬 경우에, 상기 FLT 내에 새로운 엔트리가 생성될 경우,상기 특정한 네트워크 플로에 관련된 첫 번째 IP 조각이 수신될 경우,송신 윈도가 변경될 경우,TCP 수신확인(ACK) 신호들의 개수의 변화량이 ACK 문턱값보다 더 크거나 그와 같을 경우,상기 특정한 네트워크 플로에 관련된 TCP/IP 프레임이 선택적 수신확인(SACK)을 포함할 경우, 및상기 특정한 네트워크 플로에 관련된 TCP/IP 프레임이 중복 ACK 문턱값과 같거나 또는 그보다 더 큰 값의 중복 TCP 수신확인 개수를 포함할 경우 중 적어도 하나의 경우가 발생할 때에 일어나는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 청구항 1에 있어서, 상기 새로운 TCP 세그먼트를 생성하는 단계는, 상기 특정한 네트워크 플로에 상응하는 복수의 상기 축적된 TCP 세그먼트들의 적어도 일부분을 병합함으로써 상기 새로운 TCP 세그먼트를 생성하는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 청구항 1에 있어서, 상기 특정한 네트워크 플로에 대하여 생성된 엔트리(entry) 내에 포함된 정보를 플로 룩업 테이블(FLT) 내에서 갱신하는 단계를 더 포함하는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 청구항 3에 있어서, 상기 FLT 엔트리는,인터넷 프로토콜(IP) 소스 어드레스, IP 목적 어드레스, 소스 TCP 포트 및 목적 TCP 포트를 포함하는 튜플(tuple);TCP 시퀀스 번호;TCP 수신확인 번호; 및TCP 적재 길이 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 청구항 1에 있어서, 상기 생성된 새로운 TCP 세그먼트를 위하여, 상기 축적된 적어도 하나의 TCP 세그먼트에 연계된 TCP 적재 데이터 바이트들(payload bytes)의 총 개수를 나타내는 TCP 헤더를 생성하는 단계를 더 포함하는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 청구항 1에 있어서, 상기 생성된 새로운 TCP 세그먼트를 위하여, 상기 축적된 적어도 하나의 TCP 세그먼트에 연계된 첫 번째 타임스탬프 옵션(option)을 나타내는 TCP 헤더를 생성하는 단계를 더 포함하는 것을 특징으로 하는 네트워크 프로세싱 관리 방법.
- 네트워크 정보에 관한 네트워크 프로세싱 관리 시스템에 있어서,특정한 네트워크 플로(flow)에 대해 수신된 적어도 하나의 전송 제어 프로토콜(TCP) 세그먼트를, 상기 적어도 하나의 TCP 세그먼트가 수신될 때마다 상기 특정 네트워크 플로에 관한 상태 정보를 호스트 시스템에 전달하지 않고서, 축적할 수 있는 네트워크 인터페이스 카드(NIC) 프로세서를 포함하며,상기 NIC 프로세서는, 소정의 종료 이벤트가 발생한 후에, 상기 축적된 적어도 하나의 TCP 세그먼트들을 포함하는, 병합된 TCP 세그먼트를 포함하는 새로운 TCP 세그먼트를 생성할 수 있고,상기 NIC 프로세서는, 상기 생성된 새로운 TCP 세그먼트와, 이러한 생성된 새로운 TCP 세그먼트에 대한 상태 정보를, 소정의 프로세싱이 가능하도록 상기 호스트 시스템에 전달할 수 있고,상기 NIC 프로세서는, 상기 특정 네트워크 플로의 상태가 정순서(in-order) 상태, 탈순서(out-of-order) 상태 및 미지(unknown) 상태 중 적어도 어느 하나인 것으로 검출할 수 있으며,상기 종료 이벤트는,상기 특정한 네트워크 플로에 연계된 TCP/IP 프레임이 PSH 비트, FIN 비트 및 RST 비트 중 적어도 하나를 가지는 TCP 플래그를 포함할 경우,상기 특정한 네트워크 플로에 연계된 TCP/IP 프레임이 최대 IP 데이터그램(datagram) 크기와 같거나 그보다 더 큰 값의 TCP 적재 길이를 포함할 경우,상기 적어도 하나의 TCP 세그먼트의 축적에 관련된 타이머가 만료되는 경우,플로 룩업 테이블(FLT)가 가득 찬 경우에, 상기 FLT 내에 새로운 엔트리가 생성될 경우,상기 특정한 네트워크 플로에 관련된 첫 번째 IP 조각이 수신될 경우,송신 윈도가 변경될 경우,TCP 수신확인(ACK) 신호들의 개수의 변화량이 ACK 문턱값보다 더 크거나 그와 같을 경우,상기 특정한 네트워크 플로에 관련된 TCP/IP 프레임이 선택적 수신확인(SACK)을 포함할 경우, 및상기 특정한 네트워크 플로에 관련된 TCP/IP 프레임이 중복 ACK 문턱값과 같거나 또는 그보다 더 큰 값의 중복 TCP 수신확인 개수를 포함할 경우 중 적어도 하나의 경우가 발생할 때에 일어나는 것을 특징으로 하는 네트워크 프로세싱 관리 시스템.
- 청구항 7에 있어서, 상기 NIC 프로세서는 상기 특정한 네트워크 플로에 상응하는 복수의 상기 축적된 TCP 세그먼트들의 적어도 일부분을 병합함으로써 상기 새로운 TCP 세그먼트를 생성할 수 있는 것을 특징으로 하는 네트워크 프로세싱 관리 시스템.
- 청구항 7에 있어서, 상기 NIC 프로세서는 플로 룩업 테이블(FLT) 내에 상기 특정한 네트워크 플로에 대하여 생성된 엔트리 내에 포함된 정보를 갱신할 수 있는 것을 특징으로 하는 네트워크 프로세싱 관리 시스템.
- 청구항 9에 있어서, 상기 FLT 엔트리는,인터넷 프로토콜(IP) 소스 어드레스, IP 목적 어드레스, 소스 TCP 포트 및 목적 TCP 포트를 포함하는 튜플;TCP 시퀀스 번호;TCP 수신확인 번호; 및TCP 적재 길이 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 네트워크 프로세싱 관리 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70054405P | 2005-07-18 | 2005-07-18 | |
US60/700,544 | 2005-07-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080042812A KR20080042812A (ko) | 2008-05-15 |
KR100973201B1 true KR100973201B1 (ko) | 2010-07-30 |
Family
ID=38163302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087002991A KR100973201B1 (ko) | 2005-07-18 | 2006-07-18 | 투명 티씨피 오프로드를 위한 방법 및 시스템 |
Country Status (5)
Country | Link |
---|---|
US (7) | US7693138B2 (ko) |
EP (1) | EP1917782A2 (ko) |
KR (1) | KR100973201B1 (ko) |
CN (1) | CN101253745B (ko) |
WO (1) | WO2007069095A2 (ko) |
Families Citing this family (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8724485B2 (en) | 2000-08-30 | 2014-05-13 | Broadcom Corporation | Home network system and method |
EP1346513B1 (en) * | 2000-08-30 | 2010-10-20 | Tmt Coaxial Networks Inc. | A home network system and method |
US9094226B2 (en) | 2000-08-30 | 2015-07-28 | Broadcom Corporation | Home network system and method |
US7978598B1 (en) * | 2002-03-01 | 2011-07-12 | Cisco Technology, Inc. | Connection replication |
US7007103B2 (en) * | 2002-04-30 | 2006-02-28 | Microsoft Corporation | Method to offload a network stack |
US7616664B2 (en) * | 2005-02-18 | 2009-11-10 | Hewlett-Packard Development Company, L.P. | System and method of sending video and audio data over a network |
WO2007069095A2 (en) * | 2005-07-18 | 2007-06-21 | Broadcom Israel R & D | Method and system for transparent tcp offload |
US7660306B1 (en) | 2006-01-12 | 2010-02-09 | Chelsio Communications, Inc. | Virtualizing the operation of intelligent network interface circuitry |
US7660264B1 (en) | 2005-12-19 | 2010-02-09 | Chelsio Communications, Inc. | Method for traffic schedulign in intelligent network interface circuitry |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
US7724658B1 (en) | 2005-08-31 | 2010-05-25 | Chelsio Communications, Inc. | Protocol offload transmit traffic management |
US7506080B2 (en) * | 2005-09-16 | 2009-03-17 | Inter Corporation | Parallel processing of frame based data transfers |
US7735099B1 (en) * | 2005-12-23 | 2010-06-08 | Qlogic, Corporation | Method and system for processing network data |
EP1835692B1 (en) * | 2006-03-13 | 2018-08-08 | Telefonaktiebolaget LM Ericsson (publ) | Method and system for distributing service messages from clients to service applications |
EP2583744A1 (en) | 2006-03-31 | 2013-04-24 | Genencor International, Inc. | Permeate product of tangential flow filtration process |
US9794378B2 (en) * | 2006-11-08 | 2017-10-17 | Standard Microsystems Corporation | Network traffic controller (NTC) |
US20080120426A1 (en) * | 2006-11-17 | 2008-05-22 | International Business Machines Corporation | Selective acceleration of transport control protocol (tcp) connections |
US7782850B2 (en) * | 2006-11-20 | 2010-08-24 | Broadcom Corporation | MAC to PHY interface apparatus and methods for transmission of packets through a communications network |
US7742495B2 (en) | 2006-11-20 | 2010-06-22 | Broadcom Corporation | System and method for retransmitting packets over a network of communication channels |
US8090043B2 (en) | 2006-11-20 | 2012-01-03 | Broadcom Corporation | Apparatus and methods for compensating for signal imbalance in a receiver |
US20080133654A1 (en) * | 2006-12-01 | 2008-06-05 | Chei-Yol Kim | Network block device using network asynchronous i/o |
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 |
US8161532B2 (en) * | 2007-04-04 | 2012-04-17 | Microsoft Corporation | Operating system independent architecture for subscription computing |
US8935406B1 (en) * | 2007-04-16 | 2015-01-13 | Chelsio Communications, Inc. | Network adaptor configured for connection establishment offload |
US8060644B1 (en) * | 2007-05-11 | 2011-11-15 | Chelsio Communications, Inc. | Intelligent network adaptor with end-to-end flow control |
US8589587B1 (en) | 2007-05-11 | 2013-11-19 | Chelsio Communications, Inc. | Protocol offload in intelligent network adaptor, including application level signalling |
US8345553B2 (en) | 2007-05-31 | 2013-01-01 | Broadcom Corporation | Apparatus and methods for reduction of transmission delay in a communication network |
US7715362B1 (en) * | 2007-11-23 | 2010-05-11 | Juniper Networks, Inc. | Identification fragment handling |
KR100936918B1 (ko) * | 2007-12-17 | 2010-01-18 | 한국전자통신연구원 | 정적 파일 전송 시스템콜 처리 toe 장치 및 방법 |
US20100017513A1 (en) * | 2008-07-16 | 2010-01-21 | Cray Inc. | Multiple overlapping block transfers |
US8341286B1 (en) * | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9112717B2 (en) | 2008-07-31 | 2015-08-18 | Broadcom Corporation | Systems and methods for providing a MoCA power management strategy |
US8254413B2 (en) * | 2008-12-22 | 2012-08-28 | Broadcom Corporation | Systems and methods for physical layer (“PHY”) concatenation in a multimedia over coax alliance network |
US8238227B2 (en) | 2008-12-22 | 2012-08-07 | Broadcom Corporation | Systems and methods for providing a MoCA improved performance for short burst packets |
US8213309B2 (en) | 2008-12-22 | 2012-07-03 | Broadcom Corporation | Systems and methods for reducing latency and reservation request overhead in a communications network |
US20100165838A1 (en) * | 2008-12-30 | 2010-07-01 | Yury Bakshi | Method and apparatus for improving data throughput in a network |
US20100238932A1 (en) * | 2009-03-19 | 2010-09-23 | Broadcom Corporation | Method and apparatus for enhanced packet aggregation |
US8553547B2 (en) | 2009-03-30 | 2013-10-08 | Broadcom Corporation | Systems and methods for retransmitting packets over a network of communication channels |
US20100254278A1 (en) | 2009-04-07 | 2010-10-07 | Broadcom Corporation | Assessment in an information network |
US8730798B2 (en) | 2009-05-05 | 2014-05-20 | Broadcom Corporation | Transmitter channel throughput in an information network |
US8867355B2 (en) | 2009-07-14 | 2014-10-21 | Broadcom Corporation | MoCA multicast handling |
US8942250B2 (en) | 2009-10-07 | 2015-01-27 | Broadcom Corporation | Systems and methods for providing service (“SRV”) node selection |
US9009293B2 (en) * | 2009-11-18 | 2015-04-14 | Cisco Technology, Inc. | System and method for reporting packet characteristics in a network environment |
US9015318B1 (en) | 2009-11-18 | 2015-04-21 | Cisco Technology, Inc. | System and method for inspecting domain name system flows in a network environment |
US9148380B2 (en) * | 2009-11-23 | 2015-09-29 | Cisco Technology, Inc. | System and method for providing a sequence numbering mechanism in a network environment |
US9535732B2 (en) * | 2009-11-24 | 2017-01-03 | Red Hat Israel, Ltd. | Zero copy transmission in virtualization environment |
US8737262B2 (en) * | 2009-11-24 | 2014-05-27 | Red Hat Israel, Ltd. | Zero copy transmission with raw packets |
JP5720577B2 (ja) * | 2009-12-04 | 2015-05-20 | 日本電気株式会社 | サーバ及びフロー制御プログラム |
US8792495B1 (en) | 2009-12-19 | 2014-07-29 | Cisco Technology, Inc. | System and method for managing out of order packets in a network environment |
US8611327B2 (en) | 2010-02-22 | 2013-12-17 | Broadcom Corporation | Method and apparatus for policing a QoS flow in a MoCA 2.0 network |
US8514860B2 (en) | 2010-02-23 | 2013-08-20 | Broadcom Corporation | Systems and methods for implementing a high throughput mode for a MoCA device |
US8428087B1 (en) * | 2010-09-17 | 2013-04-23 | Amazon Technologies, Inc. | Framework for stateless packet tunneling |
US10284437B2 (en) | 2010-09-30 | 2019-05-07 | Efolder, Inc. | Cloud-based virtual machines and offices |
US8589350B1 (en) | 2012-04-02 | 2013-11-19 | Axcient, Inc. | Systems, methods, and media for synthesizing views of file system backups |
US9235474B1 (en) * | 2011-02-17 | 2016-01-12 | Axcient, Inc. | Systems and methods for maintaining a virtual failover volume of a target computing system |
US8924360B1 (en) | 2010-09-30 | 2014-12-30 | Axcient, Inc. | Systems and methods for restoring a file |
US8954544B2 (en) | 2010-09-30 | 2015-02-10 | Axcient, Inc. | Cloud-based virtual machines and offices |
US9705730B1 (en) | 2013-05-07 | 2017-07-11 | Axcient, Inc. | Cloud storage using Merkle trees |
US8787303B2 (en) | 2010-10-05 | 2014-07-22 | Cisco Technology, Inc. | Methods and apparatus for data traffic offloading at a router |
JP5204195B2 (ja) * | 2010-10-29 | 2013-06-05 | 株式会社東芝 | データ送信システムおよびデータ送信プログラム |
US8495262B2 (en) * | 2010-11-23 | 2013-07-23 | International Business Machines Corporation | Using a table to determine if user buffer is marked copy-on-write |
CN102111403B (zh) * | 2010-12-17 | 2014-05-21 | 曙光信息产业(北京)有限公司 | 一种用于高速获取tcp连接数据的方法和设备 |
CN102082688B (zh) * | 2010-12-17 | 2014-08-13 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp乱序缓冲区管理的方法 |
CN102075416B (zh) * | 2010-12-17 | 2014-07-30 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp连接数据缓存的方法 |
US9003057B2 (en) | 2011-01-04 | 2015-04-07 | Cisco Technology, Inc. | System and method for exchanging information in a mobile wireless network environment |
US8891532B1 (en) * | 2011-05-17 | 2014-11-18 | Hitachi Data Systems Engineering UK Limited | System and method for conveying the reason for TCP reset in machine-readable form |
US8589610B2 (en) | 2011-05-31 | 2013-11-19 | Oracle International Corporation | Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor |
US8804752B2 (en) | 2011-05-31 | 2014-08-12 | Oracle International Corporation | Method and system for temporary data unit storage on infiniband host channel adaptor |
US8490207B2 (en) * | 2011-05-31 | 2013-07-16 | Red Hat, Inc. | Performing zero-copy sends in a networked file system with cryptographic signing |
US8484392B2 (en) | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
US8948013B1 (en) | 2011-06-14 | 2015-02-03 | Cisco Technology, Inc. | Selective packet sequence acceleration in a network environment |
US8792353B1 (en) | 2011-06-14 | 2014-07-29 | Cisco Technology, Inc. | Preserving sequencing during selective packet acceleration in a network environment |
US8737221B1 (en) | 2011-06-14 | 2014-05-27 | Cisco Technology, Inc. | Accelerated processing of aggregate data flows in a network environment |
US8743690B1 (en) | 2011-06-14 | 2014-06-03 | Cisco Technology, Inc. | Selective packet sequence acceleration in a network environment |
US8688799B2 (en) | 2011-06-30 | 2014-04-01 | Nokia Corporation | Methods, apparatuses and computer program products for reducing memory copy overhead by indicating a location of requested data for direct access |
US9021123B2 (en) | 2011-08-23 | 2015-04-28 | Oracle International Corporation | Method and system for responder side cut through of received data |
US8879579B2 (en) | 2011-08-23 | 2014-11-04 | Oracle International Corporation | Method and system for requester virtual cut through |
US8832216B2 (en) | 2011-08-31 | 2014-09-09 | Oracle International Corporation | Method and system for conditional remote direct memory access write |
EP2595351A1 (de) * | 2011-11-15 | 2013-05-22 | Eaton Industries GmbH | Vorrichtung zur Verwendung in einem digitalen Übertragungssystem, digitales Übertragungssystem und Verfahren zur Datenübertragung |
US8996718B2 (en) * | 2012-02-02 | 2015-03-31 | Apple Inc. | TCP-aware receive side coalescing |
US9155046B2 (en) * | 2012-09-12 | 2015-10-06 | Intel Corporation | Optimizing semi-active workloads |
US20140089467A1 (en) * | 2012-09-27 | 2014-03-27 | Andre Beck | Content stream delivery using pre-loaded segments |
US20140092754A1 (en) * | 2012-09-28 | 2014-04-03 | Fluke Corporation | Packet tagging mechanism |
US9785647B1 (en) | 2012-10-02 | 2017-10-10 | Axcient, Inc. | File system virtualization |
US9852140B1 (en) | 2012-11-07 | 2017-12-26 | Axcient, Inc. | Efficient file replication |
US9384072B2 (en) | 2012-12-20 | 2016-07-05 | Oracle International Corporation | Distributed queue pair state on a host channel adapter |
US9148352B2 (en) | 2012-12-20 | 2015-09-29 | Oracle International Corporation | Method and system for dynamic repurposing of payload storage as a trace buffer |
US8937949B2 (en) | 2012-12-20 | 2015-01-20 | Oracle International Corporation | Method and system for Infiniband host channel adapter multicast packet replication mechanism |
US9069633B2 (en) | 2012-12-20 | 2015-06-30 | Oracle America, Inc. | Proxy queue pair for offloading |
US9256555B2 (en) | 2012-12-20 | 2016-02-09 | Oracle International Corporation | Method and system for queue descriptor cache management for a host channel adapter |
US9069485B2 (en) | 2012-12-20 | 2015-06-30 | Oracle International Corporation | Doorbell backpressure avoidance mechanism on a host channel adapter |
US9191452B2 (en) | 2012-12-20 | 2015-11-17 | Oracle International Corporation | Method and system for an on-chip completion cache for optimized completion building |
US9300578B2 (en) * | 2013-02-21 | 2016-03-29 | Applied Micro Circuits Corporation | Large receive offload functionality for a system on chip |
US8850085B2 (en) | 2013-02-26 | 2014-09-30 | Oracle International Corporation | Bandwidth aware request throttling |
US9336158B2 (en) | 2013-02-26 | 2016-05-10 | Oracle International Corporation | Method and system for simplified address translation support for static infiniband host channel adaptor structures |
US9069705B2 (en) | 2013-02-26 | 2015-06-30 | Oracle International Corporation | CAM bit error recovery |
US9292153B1 (en) | 2013-03-07 | 2016-03-22 | Axcient, Inc. | Systems and methods for providing efficient and focused visualization of data |
US9397907B1 (en) | 2013-03-07 | 2016-07-19 | Axcient, Inc. | Protection status determinations for computing devices |
US9338918B2 (en) | 2013-07-10 | 2016-05-10 | Samsung Electronics Co., Ltd. | Socket interposer and computer system using the socket interposer |
US10581687B2 (en) | 2013-09-26 | 2020-03-03 | Appformix Inc. | Real-time cloud-infrastructure policy implementation and management |
US10291472B2 (en) | 2015-07-29 | 2019-05-14 | AppFormix, Inc. | Assessment of operational states of a computing environment |
US10355997B2 (en) | 2013-09-26 | 2019-07-16 | Appformix Inc. | System and method for improving TCP performance in virtualized environments |
US9385959B2 (en) | 2013-09-26 | 2016-07-05 | Acelio, Inc. | System and method for improving TCP performance in virtualized environments |
GB2519745B (en) * | 2013-10-22 | 2018-04-18 | Canon Kk | Method of processing disordered frame portion data units |
US9742682B2 (en) | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
US9755981B2 (en) * | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US9384033B2 (en) | 2014-03-11 | 2016-07-05 | Vmware, Inc. | Large receive offload for virtual machines |
US9906454B2 (en) | 2014-09-17 | 2018-02-27 | AppFormix, Inc. | System and method for providing quality of service to data center applications by controlling the rate at which data packets are transmitted |
CN105578524B (zh) * | 2014-10-07 | 2019-01-25 | 国基电子(上海)有限公司 | 终端设备及封包处理方法 |
US9838498B2 (en) * | 2014-10-30 | 2017-12-05 | ScaleFlux | Remote direct non-volatile cache access |
WO2016079626A1 (en) * | 2014-11-19 | 2016-05-26 | Strato Scale Ltd. | Reducing short-packet overhead in computer clusters |
US10298494B2 (en) | 2014-11-19 | 2019-05-21 | Strato Scale Ltd. | Reducing short-packet overhead in computer clusters |
US10212259B2 (en) | 2014-12-01 | 2019-02-19 | Oracle International Corporation | Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments |
US10320918B1 (en) * | 2014-12-17 | 2019-06-11 | Xilinx, Inc. | Data-flow architecture for a TCP offload engine |
US9846657B2 (en) | 2015-02-06 | 2017-12-19 | Mediatek Inc. | Electronic device for packing multiple commands in one compound command frame and electronic device for decoding and executing multiple commands packed in one compound command frame |
US9584628B2 (en) | 2015-03-17 | 2017-02-28 | Freescale Semiconductor, Inc. | Zero-copy data transmission system |
JP2017046325A (ja) * | 2015-08-28 | 2017-03-02 | 株式会社東芝 | 通信装置、通信方法およびプログラム |
US9954979B2 (en) * | 2015-09-21 | 2018-04-24 | International Business Machines Corporation | Protocol selection for transmission control protocol/internet protocol (TCP/IP) |
CN105871739B (zh) * | 2016-06-17 | 2018-12-07 | 华为技术有限公司 | 一种处理报文的方法及计算设备 |
US10237183B2 (en) * | 2016-10-03 | 2019-03-19 | Guavus, Inc. | Detecting tethering in networks |
US11068314B2 (en) | 2017-03-29 | 2021-07-20 | Juniper Networks, Inc. | Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment |
US10868742B2 (en) | 2017-03-29 | 2020-12-15 | Juniper Networks, Inc. | Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control |
US11323327B1 (en) | 2017-04-19 | 2022-05-03 | Juniper Networks, Inc. | Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles |
US10313926B2 (en) | 2017-05-31 | 2019-06-04 | Nicira, Inc. | Large receive offload (LRO) processing in virtualized computing environments |
US11855898B1 (en) * | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
WO2019219184A1 (en) * | 2018-05-16 | 2019-11-21 | Huawei Technologies Co., Ltd. | Receiving device and transmitting device for tcp communication |
US10862805B1 (en) | 2018-07-31 | 2020-12-08 | Juniper Networks, Inc. | Intelligent offloading of services for a network device |
US10880124B2 (en) * | 2018-12-28 | 2020-12-29 | Alibaba Group Holding Limited | Offload controller control of programmable switch |
US11916840B2 (en) | 2019-02-15 | 2024-02-27 | Qualcomm Incorporated | Methods and apparatus for transport protocol ACK aggregation |
US10798014B1 (en) * | 2019-04-05 | 2020-10-06 | Arista Networks, Inc. | Egress maximum transmission unit (MTU) enforcement |
CN110535827B (zh) * | 2019-07-17 | 2021-08-24 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实现多连接管理的tcp协议全卸载ip核的方法及*** |
US11831742B2 (en) * | 2019-12-12 | 2023-11-28 | Intel Corporation | Semi-flexible packet coalescing control path |
US11405324B1 (en) * | 2019-12-12 | 2022-08-02 | Amazon Technologies, Inc. | Packet serial number validation |
CN115349247A (zh) * | 2020-04-17 | 2022-11-15 | 华为技术有限公司 | 一种有状态业务的处理方法及装置 |
KR20210137702A (ko) * | 2020-05-11 | 2021-11-18 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
CN112953967A (zh) * | 2021-03-30 | 2021-06-11 | 扬州万方电子技术有限责任公司 | 网络协议卸载装置和数据传输*** |
US11909851B2 (en) * | 2021-10-04 | 2024-02-20 | Nxp B.V. | Coalescing interrupts based on fragment information in packets and a network controller for coalescing |
TWI820977B (zh) | 2022-10-21 | 2023-11-01 | 中原大學 | 封包排序與重組電路模組 |
CN117354400B (zh) * | 2023-12-06 | 2024-02-02 | 商飞软件有限公司 | 一种用于北斗短报文的采集解析服务*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004021150A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for tpc/ip offload independent of bandwidth delay product |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5673031A (en) * | 1988-08-04 | 1997-09-30 | Norand Corporation | Redundant radio frequency network having a roaming terminal communication protocol |
US5727142A (en) * | 1996-05-03 | 1998-03-10 | International Business Machines Corporation | Method for a non-disruptive host connection switch after detection of an error condition or during a host outage or failure |
US5778414A (en) | 1996-06-13 | 1998-07-07 | Racal-Datacom, Inc. | Performance enhancing memory interleaver for data frame processing |
US5940404A (en) * | 1997-04-30 | 1999-08-17 | International Business Machines Corporation | Method and apparatus for enhanced scatter mode allowing user data to be page aligned |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7284070B2 (en) * | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6347364B1 (en) * | 1998-11-20 | 2002-02-12 | International Business Machines Corp. | Schedulable dynamic memory pinning |
US6628617B1 (en) * | 1999-03-03 | 2003-09-30 | Lucent Technologies Inc. | Technique for internetworking traffic on connectionless and connection-oriented networks |
US6952409B2 (en) | 1999-05-17 | 2005-10-04 | Jolitz Lynne G | Accelerator system and method |
JP2000332817A (ja) * | 1999-05-18 | 2000-11-30 | Fujitsu Ltd | パケット処理装置 |
CN1246012A (zh) | 1999-07-14 | 2000-03-01 | 邮电部武汉邮电科学研究院 | 一种用于英特网与同步数字体系融合的适配方法 |
JP2001045061A (ja) * | 1999-08-02 | 2001-02-16 | Hitachi Ltd | 通信ノード装置 |
US6804239B1 (en) | 1999-08-17 | 2004-10-12 | Mindspeed Technologies, Inc. | Integrated circuit that processes communication packets with co-processor circuitry to correlate a packet stream with context information |
US6799202B1 (en) * | 1999-12-16 | 2004-09-28 | Hachiro Kawaii | Federated operating system for a server |
US7275093B1 (en) * | 2000-04-26 | 2007-09-25 | 3 Com Corporation | Methods and device for managing message size transmitted over a network |
US6535969B1 (en) * | 2000-06-15 | 2003-03-18 | Lsi Logic Corporation | Method and apparatus for allocating free memory |
US6958997B1 (en) * | 2000-07-05 | 2005-10-25 | Cisco Technology, Inc. | TCP fast recovery extended method and apparatus |
US20020010765A1 (en) * | 2000-07-21 | 2002-01-24 | John Border | Method and system for prioritizing traffic in a network |
US20050203927A1 (en) * | 2000-07-24 | 2005-09-15 | Vivcom, Inc. | Fast metadata generation and delivery |
US6961539B2 (en) * | 2001-08-09 | 2005-11-01 | Hughes Electronics Corporation | Low latency handling of transmission control protocol messages in a broadband satellite communications system |
US20030046330A1 (en) | 2001-09-04 | 2003-03-06 | Hayes John W. | Selective offloading of protocol processing |
US7111162B1 (en) * | 2001-09-10 | 2006-09-19 | Cisco Technology, Inc. | Load balancing approach for scaling secure sockets layer performance |
US7359326B1 (en) * | 2002-02-05 | 2008-04-15 | 3Com Corporation | Method for splitting data and acknowledgements in a TCP session |
US7237031B2 (en) * | 2002-03-07 | 2007-06-26 | Sun Microsystems, Inc. | Method and apparatus for caching protocol processing data |
US7487264B2 (en) * | 2002-06-11 | 2009-02-03 | Pandya Ashish A | High performance IP processor |
US7277963B2 (en) * | 2002-06-26 | 2007-10-02 | Sandvine Incorporated | TCP proxy providing application layer modifications |
US7142540B2 (en) * | 2002-07-18 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for zero-copy receive buffer management |
US7346701B2 (en) * | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7397800B2 (en) * | 2002-08-30 | 2008-07-08 | Broadcom Corporation | Method and system for data placement of out-of-order (OOO) TCP segments |
US7299266B2 (en) * | 2002-09-05 | 2007-11-20 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
CN1254065C (zh) * | 2002-10-29 | 2006-04-26 | 华为技术有限公司 | 用随机存储器实现的tcp连接定时器及其实现方法 |
US8069225B2 (en) * | 2003-04-14 | 2011-11-29 | Riverbed Technology, Inc. | Transparent client-server transaction accelerator |
US7742473B2 (en) * | 2002-11-12 | 2010-06-22 | Mark Adams | Accelerator module |
US7313148B2 (en) * | 2002-11-18 | 2007-12-25 | Sun Microsystems, Inc. | Method and system for TCP large segment offload with ack-based transmit scheduling |
US7324540B2 (en) * | 2002-12-31 | 2008-01-29 | Intel Corporation | Network protocol off-load engines |
US7330862B1 (en) * | 2003-04-25 | 2008-02-12 | Network Appliance, Inc. | Zero copy write datapath |
WO2004102115A1 (ja) | 2003-05-16 | 2004-11-25 | Fujitsu Limited | 角度測定装置 |
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
US20050021558A1 (en) | 2003-06-11 | 2005-01-27 | Beverly Harlan T. | Network protocol off-load engine memory management |
US7251745B2 (en) * | 2003-06-11 | 2007-07-31 | Availigent, Inc. | Transparent TCP connection failover |
US7359380B1 (en) * | 2003-06-24 | 2008-04-15 | Nvidia Corporation | Network protocol processing for routing and bridging |
US7420991B2 (en) * | 2003-07-15 | 2008-09-02 | Qlogic, Corporation | TCP time stamp processing in hardware based TCP offload |
US8086747B2 (en) * | 2003-09-22 | 2011-12-27 | Anilkumar Dominic | Group-to-group communication over a single connection |
US20050086349A1 (en) * | 2003-10-16 | 2005-04-21 | Nagarajan Subramaniyan | Methods and apparatus for offloading TCP/IP processing using a protocol driver interface filter driver |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US7383483B2 (en) * | 2003-12-11 | 2008-06-03 | International Business Machines Corporation | Data transfer error checking |
US7441006B2 (en) * | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
US8195835B2 (en) * | 2004-01-28 | 2012-06-05 | Alcatel Lucent | Endpoint address change in a packet network |
US7826457B2 (en) * | 2004-05-11 | 2010-11-02 | Broadcom Corp. | Method and system for handling out-of-order segments in a wireless system via direct data placement |
US20050286526A1 (en) * | 2004-06-25 | 2005-12-29 | Sood Sanjeev H | Optimized algorithm for stream re-assembly |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US7730196B2 (en) * | 2004-12-03 | 2010-06-01 | Microsoft Corporation | Efficient transfer of messages using reliable messaging protocols for web services |
US7509419B2 (en) * | 2005-01-13 | 2009-03-24 | International Business Machines Corporation | Method for providing remote access redirect capability in a channel adapter of a system area network |
US7535907B2 (en) * | 2005-04-08 | 2009-05-19 | Oavium Networks, Inc. | TCP engine |
WO2007069095A2 (en) * | 2005-07-18 | 2007-06-21 | Broadcom Israel R & D | Method and system for transparent tcp offload |
CA2514039A1 (en) * | 2005-07-28 | 2007-01-28 | Third Brigade Inc. | Tcp normalization engine |
US7596628B2 (en) * | 2006-05-01 | 2009-09-29 | Broadcom Corporation | Method and system for transparent TCP offload (TTO) with a user space library |
-
2006
- 2006-07-18 WO PCT/IB2006/004098 patent/WO2007069095A2/en active Application Filing
- 2006-07-18 US US11/489,389 patent/US7693138B2/en not_active Expired - Fee Related
- 2006-07-18 US US11/489,393 patent/US20070014246A1/en not_active Abandoned
- 2006-07-18 KR KR1020087002991A patent/KR100973201B1/ko not_active IP Right Cessation
- 2006-07-18 US US11/489,078 patent/US8064459B2/en not_active Expired - Fee Related
- 2006-07-18 US US11/489,390 patent/US20070033301A1/en not_active Abandoned
- 2006-07-18 US US11/489,388 patent/US7684344B2/en active Active
- 2006-07-18 EP EP06848596A patent/EP1917782A2/en not_active Withdrawn
- 2006-07-18 CN CN2006800262474A patent/CN101253745B/zh not_active Expired - Fee Related
-
2010
- 2010-03-22 US US12/728,983 patent/US8274976B2/en not_active Expired - Fee Related
- 2010-04-05 US US12/754,016 patent/US8416768B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004021150A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for tpc/ip offload independent of bandwidth delay product |
Also Published As
Publication number | Publication date |
---|---|
US7684344B2 (en) | 2010-03-23 |
US7693138B2 (en) | 2010-04-06 |
US8274976B2 (en) | 2012-09-25 |
WO2007069095A3 (en) | 2007-12-06 |
US20080310420A1 (en) | 2008-12-18 |
CN101253745B (zh) | 2011-06-22 |
CN101253745A (zh) | 2008-08-27 |
WO2007069095A2 (en) | 2007-06-21 |
US20070014246A1 (en) | 2007-01-18 |
EP1917782A2 (en) | 2008-05-07 |
KR20080042812A (ko) | 2008-05-15 |
US8064459B2 (en) | 2011-11-22 |
US20100174824A1 (en) | 2010-07-08 |
US20070014245A1 (en) | 2007-01-18 |
US20070033301A1 (en) | 2007-02-08 |
WO2007069095A8 (en) | 2007-08-23 |
US20100198984A1 (en) | 2010-08-05 |
US20070076623A1 (en) | 2007-04-05 |
US8416768B2 (en) | 2013-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100973201B1 (ko) | 투명 티씨피 오프로드를 위한 방법 및 시스템 | |
US7596628B2 (en) | Method and system for transparent TCP offload (TTO) with a user space library | |
US7912064B2 (en) | System and method for handling out-of-order frames | |
US7346701B2 (en) | System and method for TCP offload | |
US20070022212A1 (en) | Method and system for TCP large receive offload | |
US20110179183A1 (en) | Network adapter with tcp support | |
US8259728B2 (en) | Method and system for a fast drop recovery for a TCP connection | |
US20070291782A1 (en) | Acknowledgement filtering | |
US7912060B1 (en) | Protocol accelerator and method of using same | |
EP1460804B1 (en) | System and method for handling out-of-order frames (fka reception of out-of-order tcp data with zero copy service) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130722 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140825 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150722 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20160713 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |