Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberCN1698337 A
Publication typeApplication
Application numberCN 200480000656
PCT numberPCT/US2004/017655
Publication date16 Nov 2005
Filing date4 Jun 2004
Priority date5 Jun 2003
Also published asCN1698337B, DE602004030562D1, EP1629656A1, EP1629656B1, US7363572, US7412488, US7609696, US7613109, US7991918, US8417852, US20040246974, US20040249881, US20040249998, US20040257986, US20040258075, US20040258076, WO2004110025A1
Publication number200480000656.8, CN 1698337 A, CN 1698337A, CN 200480000656, CN-A-1698337, CN1698337 A, CN1698337A, CN200480000656, CN200480000656.8, PCT/2004/17655, PCT/US/2004/017655, PCT/US/2004/17655, PCT/US/4/017655, PCT/US/4/17655, PCT/US2004/017655, PCT/US2004/17655, PCT/US2004017655, PCT/US200417655, PCT/US4/017655, PCT/US4/17655, PCT/US4017655, PCT/US417655
InventorsAk杰哈, R丹尼拉克, Pj居吉, Ta莫佛, S南达, A拉杰高帕兰, Pj赛登伯拉德
Applicant恩维达公司
Export CitationBiBTeX, EndNote, RefMan
External Links: SIPO, Espacenet
Processing data for a TCP connection using an offload unit
CN 1698337 A
Abstract
A method and apparatus for processing data received and transmitted on a TCP connection is described. An offload unit processes received data for which a special case does not exist, to produce payload data, which is uploaded directly to application memory. The offload unit partially processes received data for which a special case does exist and uploads the partially processed received data to a buffer stored in system memory. The partially processed received data is then further processed by a TCP stack to produce payload data, which is copied to application memory.
Claims(6)  translated from Chinese
1.一种处理用于TCP连接的帧的方法,包括:利用卸载单元处理该帧的第一部分,以产生第一处理的帧数据;利用该卸载单元处理该帧的第二部分,以产生第二处理的帧数据;利用在CPU上执行的TCP堆栈处理该第二处理的帧数据,以产生第三处理的帧数据; 1. A method of processing frames for a TCP connection, comprising: processing a first portion of the unloading unit frame, to generate a first processed frame data; using the unloading unit processes the second portion of the frame, to produce a first Two frame data processing; executing on the CPU utilization of the TCP stack processing of the second frame data processing, to produce a third processed frame data;
2.一种处理用于TCP连接的数据的系统,包括:TCP堆栈,被配置为处理存储于至少一个遗留缓冲区的接收到的帧;软件驱动程序,被配置为该TCP堆栈和卸载单元之间的接口连接;和该卸载单元被配置为处理在委托连接上接收到的帧,以产生有效载荷数据和被部分处理的帧。 2. A method of processing data for TCP connections, comprising: TCP stack is configured to process the received frame is stored in at least one legacy buffer; software driver configured for the TCP stack and unloading unit of The interface between; and the offload unit is configured to process the received connection frame on a commission to produce payload data and the processed frame portion.
3.处理用于委托和非委托TCP连接的帧的方法,包括:利用卸载单元处理委托TCP连接,该卸载单元被配置为处理不存在特殊事例的帧;利用在CPU上执行的TCP堆栈处理非委托TCP连接;和利用该CPU上执行的TCP堆栈处理所有特殊事例存在的帧。 3. Processing commissioned and non-commissioned frame method for TCP connections, comprising: unloading unit handling the commissioned TCP connection, the offload unit is configured to process frames the particular case does not exist; the use of non-TCP stack processing performed in the CPU Principal TCP connection; and use TCP stack executing on the CPU processing frame all the special case exists.
4.设立委托连接的方法,该方法包括:建立TCP连接;和确定是否将该TCP连接委托硬件处理。 4. Establish connection method delegates, the method comprising: establishing a TCP connection; and determining whether the TCP connection entrust hardware processing.
5.用于TCP堆栈和卸载单元之间通信的系统,包括:由TCP堆栈向该卸载单元传送命令的装置;和由该卸载单元向该TCP堆栈传送通知描述符的装置。 And the unloading unit by the transfer notice to the TCP stack descriptor means; by the TCP stack to the unloading unit transmission command means: 5. For systems between TCP stack and unloading unit communication included.
6.利用卸载单元编辑出战帧的方法,包括:接收委托连接表索引;接收用于从TCP堆栈传送的原型报头和数据;利用该委托连接表索引存取委托连接表项目;基于传送数据的一部分计算TCP检查和;和输出包括该TCP检查和的帧和该传送数据的一部分。 6. The use of the unloading unit edit play frame, comprising: receiving a delegation connector table index; receiving a prototype header and data transmitted from the TCP stack; use the delegate access delegate connection connection table index sheet items; transfer data based on part TCP inspection and computing; and outputs include checking the TCP and the frame and the transmission part of the data.
Description  translated from Chinese
利用卸载单元处理TCP连接数据 Unloading unit process utilizing TCP connection data

相关申请的交叉引用本申请主张2003年6月5日提交的名称为“硬件优化TCP/IP(HOT)处理”的美国临时专利申请号60/476,570的优先权,该申请与本申请为共同拥有的正在同时审查,并与本申请的发明人与受让人相同,其全部内容作为参考在此被纳入本申请。 Cross-Reference to Related Applications This application claims the name of June 5, 2003 to submit the "Optimizing TCP / IP (HOT) processing hardware" as the priority of US Provisional Patent Application No. 60 / 476,570, which application is commonly owned with the present application It is simultaneously reviewed and the inventor and assignee of the present application is the same, the entire contents of which are hereby incorporated by reference herein.

技术领域 Technical Field

本发明的一个或几个方面总体上涉及传输控制协议(TCP)处理,特别是涉及对基于TCP的通信的优化。 One or more aspects of the present invention relates generally to the Transmission Control Protocol (TCP) process, in particular to optimize the communication based on the TCP.

背景技术 Background

现有的TCP处理的例子是为了加速客户与服务器之间的数据传输而开发的各种系统和方法。 Examples of conventional TCP deals with the various systems and methods for accelerating data transfers between a client and a server developed. 例如,在一台主处理机(如CPU)上执行的软件实现和用来从主处理机上卸载TCP处理的昂贵的专用硬件实现相比,成本低但速度慢。 For example, the software on a single host processor (such as CPU) on the implementation of the TCP implementation and to unload expensive, dedicated hardware processing from the main processor to achieve compared to the low cost but slower.

图l是现有技术的计算系统100的一个实施例的方块简图,计算系统100包括CPU 110和网络接口卡(NIC)150。 Figure l is a block diagram of an embodiment 100 of a prior art computing system, computing system 100 includes a CPU 110 and a network interface card (NIC) 150. 计算系统100可以是台式电脑、服务器、手提电脑、掌上电脑、平板电脑、游戏控制台、移动电话、基于计算机的模拟器等等。 The computing system 100 may be a desktop computer, servers, notebooks, PDAs, tablet PCs, game consoles, mobile phones, computer-based simulator and so on. 将CPU 110连接到系统控制器120的总线112可以是前端总线(FSB)。 The CPU 110 is connected to the system bus 112. Controller 120 may be a front side bus (FSB). 相应地,计算系统100可以是基于网络集线器的体系结构,也被称为INTEL网络集线器体系结构,其中系统控制器120是一个存储器控制器网络集线器,并且一个I/O桥140通过一集线器到集线器接口126与系统控制器120连接。 Accordingly, the computing system architecture 100 may be based on network hub, also known as INTEL hub architecture, where the system controller 120 is a memory controller hub and an I / O bridge 140 via a hub to Hub interface 126 and the system controller 120 are connected. 系统控制器l20通过存储器总线132与系统存储器130连接。 The system controller l20 is connected via a memory bus 132 and system memory 130. I/O桥140包括一个外围部件接口(PCI)总线182的控制器并且可以包括系统管理总线142和通用串行总线144等的控制器。 I / O bridge 140 includes a peripheral component interconnect (PCI) bus controller 182 and may include system management bus 142 and 144, etc. Universal Serial Bus controllers. I/O桥可以是一单一集成电路或单一半导体平台。 I / O bridge may be a single integrated circuit or single semiconductor platform. 已知的系统控制器120的例子包括INTELNorthbridge。 Examples of known system controller 120 include INTELNorthbridge. 已知的I/O桥140的例子包括INTELSouthbridge和NVIDIA媒体和通信处理器(MCP)芯片。 Known examples of I / O bridge 140 includes INTELSouthbridge and NVIDIA media and communications processor (MCP) chip.

NIC 150可与一个或多个PCI设备l80共享一个PCI总线182。 NIC 150 may be shared with one or more PCI devices l80 a PCI bus 182. NIC 150包括PCI接口145、专用处理机155、媒体存取控制器(MAC)165、专用存储器160和与ETHERNET网络172接口连接的ETHERNET接口l70。 NIC 150 includes a PCI interface 145, 155 dedicated processor, media access controller (MAC) 165, 160 and the dedicated memory 172 interfaces ETHERNET ETHERNET network interfaces connected l70. NIC 150的软件驱动程序119在NIC 150和CPU 110上执行的应用程序117之间通信。 Communication between NIC 150 117 applications software drivers on the NIC 150 and 119 CPU 110 execution. 系统存储器130内配置有应用存储空间125、TCP堆栈存储空间145和驱动程序存储器空间135。 The system memory 130 is configured with application storage space 125, TCP stack storage memory space 145 and the driver 135.

NIC 150内的专用处理机155被用于TCP处理,取代利用CPU 110执行TCP堆栈115来实施TCP处理。 NIC dedicated processor 150, 155 are used for TCP handle, replace the use of CPU 110 performs TCP stack 115 to implement TCP processing. 因此NIC 150卸载CPU 110,使CPU 110为其他应用程序释放出处理周期。 So uninstall NIC 150 CPU 110, CPU 110 makes the release of processing cycles for other applications. 同样,专利存储器160取代TCP堆栈存储空间145,释放出TCP堆栈存储空间145分配给其他应用程序。 Similarly, the memory 160 patent replace TCP stack memory space 145, the release of 145 TCP stack storage allocated to other applications. 但是,包括专用存储器160和专用处理机155在内的NIC 150与CPU 110上执行的用于TCP处理的软件实现相比成本较高。 However, the software for TCP processing performed on include dedicated memory 160 and processor 155, including dedicated NIC 150 and CPU 110 to achieve a higher cost compared.

因此,有必要提供一种通过卸载主处理机的一些任务优化TCP处理并与专用硬件实现相比能够降低系统成本的部分硬件实现。 Therefore, there is a need for a host processor by offloading some tasks to optimize TCP processing and dedicated hardware can reduce the system cost compared to some of the hardware implementation.

发明内容 DISCLOSURE

本发明方法的各种实施例包括利用卸载单元处理帧(frame)数据的第一部分以便产生第一处理帧数据,利用卸载单元处理帧的第二部分,以便产生第二处理帧数据,并利用在CPU上执行的应用程序处理第二处理帧数据以产生第三处理帧数据。 Various embodiments of the present invention, the method comprises the use of a first partial unit unloading processing frame (frame) data to generate a first processed frame data using the unloading unit processing the second frame portion, so as to generate the second processed frame data, and use the an application executing on CPU processing data to produce second processed frame data third processing frame.

本发明方法的各种实施例包括利用卸载单元处理委托(delegated)TCP连接,利用CPU上执行的应用程序执行处理非委托TCP连接,并利用CPU上执行的应用程序处理所有存在特殊事例(special case)的帧。 Various embodiments of the present invention includes a method of treatment utilizing the unloading unit entrusted (delegated) TCP connection, use an application executing on the CPU executes processing of non-commissioned TCP connection and use applications executing on the CPU handles all there is a special case (special case ) frame. 卸载单元被配置为处理不存在特殊事例的帧。 Unloading unit is configured to handle special cases do not exist in the frame.

本发明方法的各种实施例包括建立TCP连接并确定是否为硬件处理委托TCP连接。 Various embodiments of the present invention, the method comprises establishing a TCP connection and determine whether hardware-commissioned TCP connection.

本发明方法的各种实施例包括接收委托连接表索引,接收来自TCP堆栈传送的原型报头和数据,利用委托连接表索引存取委托连接表项,基于传送数据的一部分计算TCP检查和(checksum),并输出包括TCP检查和和传送数据的该部分的帧。 Various methods of embodiments of the invention include receiving entrusted connection table index, receiving the prototype header and data transmitted from the TCP stack, use commission commissioned to connect the access connection table index entry, calculation and TCP check (checksum) based in part on the transmission of data and outputs including the portion of the frame and TCP check and transmit data.

本发明各种实施例包括处理TCP连接数据的系统。 Examples include TCP connection data processing system of various embodiments of the present invention. 该系统包括TCP堆栈、软件驱动程序和卸载单元。 The system includes a TCP stack, software drivers and unloading unit. TCP堆栈被配置为处理接收到的存储于至少一个遗留缓冲区(legacy buffer)内的帧。 TCP stack is configured to process the received frame is stored in the at least one buffer (legacy buffer) within the left. 软件驱动程序被配置为接口连接TCP堆栈和卸载单元。 Software driver is configured TCP stack and unloading unit for the interface connection. 卸载单元被配置为处理委托连接上接收到的帧,以便产生有效载荷数据和部分处理的帧。 Unloading unit is configured to process the received delegation connector frame to produce a payload portion of the frame data and processing.

本发明各种实施例包括用于TCP堆栈和卸载单元之间通信的系统。 Various embodiments of the invention includes a system for communication between TCP stack and unloading unit. 该系统包括由TCP堆栈向卸载单元传送命令的装置和由卸载单元向TCP堆栈传送通知描述符的装置。 The system includes the TCP stack to send commands to the device and the unloading unit by the unloading unit to deliver the notification descriptor TCP stack devices.

本发明涉及处理用于TCP连接的数据的新系统和新方法。 New systems and methods for data processing TCP connections present invention relates.

附图说明 Brief Description

附图中显示了根据本发明的一个或更多的方面的实施例;但是,不应该认为附图是对本发明的限定,而仅是出于说明和理解本发明的目的。 It is shown in the drawings according to an embodiment of the present invention, one or more aspects; however, the figures should not be considered as limiting the present invention, but are for explanation and understanding only object of the present invention.

图1是现有的包括主机计算机和网络接口卡的计算系统的一个示例性实施例的方块图。 FIG. 1 is a conventional one exemplary embodiment includes a host computer and a network interface card block diagram of a computing system.

图2A和2B是根据本发明一个或几个方面的包括主机计算机的计算系统的示例性实施例的方块图。 2A and 2B are one or more aspects of the present invention includes a host computer computing system block diagram of an exemplary embodiment of the.

[图3是根据本发明一个或几个方面的图2A和2B中所示的硬件优化TCP子单元的实施例的简图。 [FIG. 3 is a diagram of the embodiment according to the present invention, one or more aspects of the hardware of Figures 2A and 2B shown embodiment the sub-optimization unit TCP.

图4A是根据本发明一个或几个方面设立一个委托连接的方法的实施例的简图。 4A is a diagram of an embodiment of an established connection delegate method according to the present invention, one or more aspects.

图4B是根据本发明一个或几个方面接收一个帧的方法的实施例的简图。 4B is a schematic view of an embodiment of a frame according to the received one or several aspects of the method of the present invention.

图4C是根据本发明一个或几个方面的慢启动序列的实施例的简图。 4C is a diagram of an embodiment according to one or slow start sequence several aspects of the present invention.

图5A是根据本发明一个或几个方面的在图2A和图2B中所示的应用程序存储空间中的用户缓冲区的实施例的简图。 5A is an application or user Figures 2A and 2B shown storage space diagram of several aspects of the present invention, an example of the implementation of the buffer.

图5B是根据本发明一个或几个方面的用户缓冲区描述符的实施例的简图。 5B is a schematic diagram in accordance with one or several aspects of the present invention, a user buffer descriptor embodiment.

图5C是根据本发明一个或几个方面的在图2A和图2B中所示软件驱动程序存储空间中的遗留缓冲区的实施例的简图。 5C is a schematic embodiment or 2A and software drivers storage space left in the buffer shown in FIG. 2B according to several aspects of the present invention.

图5D是根据本发明一个或几个方面的遗留缓冲区标签表的实施例的简图。 5D is a schematic diagram of an embodiment according to the present invention, one or more aspects of the legacy buffer tag table.

图5E是根据本发明一个或几个方面的遗留缓冲区描述符的实施例的简图。 5E is a schematic diagram of the present invention, one or more aspects of the legacy buffer descriptor according to an embodiment.

图6A是根据本发明一个或几个方面的用于由应用程序向卸载单元传送命令的命令环(command ring)的简图。 6A is a schematic diagram in accordance with one or more aspects of the present invention is used by applications to send commands to the unloading unit command loop (command ring) of.

图6B是根据本发明一个或几个方面的用于由卸载单元向应用程序传送连接信息的通知环(notification ring)的简图。 6B is a diagram according to the present invention, one or more aspects of the unloading unit for transmitting connection information to the application notification ring (notification ring) of.

图6C是根据本发明一个或几个方面的用于由应用程序向卸载单元传送接收缓冲区信息的接收描述符环(receive descriptor ring)的简图。 6C is according to the present invention, one or more aspects of the information for the receive buffer by the application to uninstall the unit transmits the received description diagram symbol ring (receive descriptor ring) of.

图6D是根据本发明一个或几个方面的用于由应用程序向卸载单元传送缓冲区信息的传送描述符环(transmit descriptor ring)的简图。 6D is a diagram describing character ring (transmit descriptor ring) in accordance with one or more aspects of the present invention for transmitting information in the cache by application to the unloading unit transmission.

图7是根据本发明一个或几个方面的包括有图3所示硬件优化TCP子单元的一部分的方框图。 Figure 7 is one or more aspects of the present invention comprises the block diagram of TCP subunit 3 shows a part of a hardware optimization.

图8A是根据本发明一个或几个方面的处理有效帧的方法的简图。 8A is a diagram of the processing according to the present invention, one or a few aspects of the effective frame method.

图8B是根据本发明一个或几个方面的处理失序帧的方法的简图。 8B is a diagram in accordance with one or disorder frame processing method aspects of the present invention.

图8C是根据本发明一个或几个方面的等待用户缓冲区的方法的简图。 8C is a diagram based on a user buffer method or wait a few aspects of the present invention.

图8D是根据本发明一个或几个方面的完成用户缓冲区处理的方法的简图。 8D is a diagram of the method according to the invention one or more aspects of the completion of the processing of the user buffer.

图9A是根据本发明一个或几个方面的确定通知的方法的简图。 9A is a schematic diagram of the method according to the present invention to determine the notice to one or several aspects of.

图9B是根据本发明一个或几个方面的使用户缓冲区跟随遗留处理同步的方法步骤的简图。 9B is a schematic synchronization buffer fill legacy processing method steps according to one or more aspects of the present invention allows a user.

图10A和10B是根据本发明一个或几个方面的表示传送数据所使用的格式的简图。 10A and 10B are transmission data format according to the present invention, one or more aspects of the use of the diagram.

图11A和11B是根据本发明一个或几个方面的编辑出站(outbound)帧的方法的实施例的简图。 11A and 11B are diagrams according to one embodiment of the present invention or aspects of the editing process outbound (outbound) frame.

图11C是根据本发明一个或几个方面的在传送中生成的实施例的简图。 11C is a schematic view of the present invention, one or more aspects of the transmission of the generated according to an embodiment.

具体实施方式 DETAILED DESCRIPTION

为了更好地理解本发明,在以下的说明中对特定的细节进行了描述。 For a better understanding of the present invention, in the following description of the specific details described. 但是,对于本专业的技术人员来说,即使没有这些特定的细节仍然可以实现本发明。 However, those skilled in the art, even without these specific details are still present invention may be implemented. 此外,为了避免使本发明含混不清,对于一些公知的特点不再说明。 In addition, in order to avoid ambiguity of the present invention, some well-known features will not be explained.

图2A和图2B是本发明计算系统200的典型实施例的方框图,该计算系统200包括CPU 110和硬件优化TCP(HOT)单元250。 2A and 2B are a block diagram of a typical computing system 200 of the present embodiment of the invention, the computing system 200 includes a CPU 110 and hardware optimized TCP (HOT) unit 250. 在图2A中,卸载单元HOT单元250从CPU 110卸载部分的TCP处理。 In Fig. 2A, unloading unit HOT Unit 250 offloads TCP processing section from the CPU 110. CPU 110执行TCP堆栈215,该TCP堆栈215包括用来完成至少部分TCP处理的代码,特别是HOT单元250没有执行的TCP处理。 CPU 110 performs TCP stack 215, the TCP stack 215 includes means for performing at least part of the TCP handling code, especially HOT TCP processing unit 250 does not perform. CPU 110通过总线112与系统控制器120连接。 CPU 110 is connected via a bus 112 and the system controller 120. 系统控制器120通过系统总线132与系统存储器130连接。 The system controller 120 is connected via a system bus 132 and system memory 130. 系统存储器130包括TCP堆栈存储空间225、驱动程序存储空间235和连线表(CT)245(将在下面进一步说明)。 The system memory 130 includes storage space TCP stack 225, drivers, storage space 235 and netlist (CT) 245 (further described below). 系统控制器120通过集线器到集线器(hub-to-hub)接口126与I/O控制器240连接。 The system controller 120 through the hub-to-hub (hub-to-hub) interface 126 and the I / O controller 240 is connected.

I/O控制器240包括PCI总线282的控制器,并可包括系统管理总线(SMBus)142的控制器、通用串行总线(USB)144等等。 I / O controller 240 includes a PCI bus controller 282, and may include a System Management Bus (SMBus) controller 142, a universal serial bus (USB) 144, and so on. 在另一实施例中,I/O控制器包括PCI快速总线(Express bus)的控制器。 In another embodiment, I / O controller including fast PCI bus (Express bus) controller. I/O控制器还包括HOT单元250,有效地将HOT单元250与通过PCI总线282连接到I/O控制器240的设备分离。 I / O controller further includes HOT Unit 250, effectively HOT Unit 250 connected to I / O controller devices 240 separated by PCI bus 282. 特别是,集线器到集线器接口126可以是通过系统控制器120将HOT单元250连接到系统存储器130的高速工业标准总线或专有总线。 In particular, the hub-to-hub interface 126 may be 120 to 250 connected to the system memory speed industry standard buses or proprietary bus 130 through the system controller HOT unit. 连接到I/O控制器240的设备共享PCI总线282的可用带宽,该带宽典型地低于集线器到集线器126的可用带宽。 Connected to the I / O controller PCI 240 devices to share the available bandwidth bus 282, the bandwidth is typically less than the hub to hub 126 available bandwidth. 与图1所示的NIC 150和CPU110之间的延迟(latency)相比,I/O控制器240内的HOT单元250的位置导致HOT单元250与CPU110和系统存储器130之间更少的延迟。 Compared with the delay (latency) NIC 150 and between the CPU110 shown in Figure 1, the position of HOT Unit 250 I / O controller 240 causes less delay between the system memory 250 and the CPU110 and 130 HOT Unit. 在现有技术中,对于NIC和应用程序之间的通信,低延迟可能是关键的,如NIC 150和通过驱动程序255的软件堆栈之间。 In the prior art, the communication between the NIC and applications, low latency may be critical, such as between NIC 150 and through the driver software stack 255. 低延迟对于NIC 150和CPU 110之间传递命令来说尤其重要,例如,为了通知存储于驱动程序存储空间135中的帧数据已经准备好被拷贝到应用程序存储空间125了。 Low latency is particularly important for transfer between the NIC 150 and the CPU 110 commands that, for example, in order to inform the driver stored in the storage space 135 in frame data is ready to be copied into the application memory space 125 a. 还有,因为集线器到集线器接口126和存储器总线132都分别支持比PCI总线282更高的带宽,HOT单元250与通过PCI总线282连接到I/O控制器240的设备相比具有对系统存储器130更高的带宽存取。 Also, because the hub-to-hub interface 126 and the memory bus 132 are respectively supported by more than 282 higher bandwidth PCI bus, HOT unit 250 and is connected to the I / O controller device 240 compared to 130 for the system memory via PCI bus 282 higher bandwidth access. 与通过较低带宽总线如PCI总线282连接到I/O控制器240的设备相比较而言,对系统存储器130更高的带宽存取使HOT单元250能够向应用程序存储空间227或驱动程序存储空间235以更快的速度传送接收到的帧,帧有时被称为“包”(packets)。 And through lower bandwidth bus such as PCI bus 282 to the I / O controller device 240. In contrast, the system memory 130 higher bandwidth access unit 250 can make the HOT application storage space to 227 or the driver store 235 space faster transmission received frame, the frame is sometimes called "package" (packets).

HOT单元250包括接口连接到输入/输出接口242的控制器。 HOT unit 250 includes an interface connected to the input / output interface 242 of the controller. 输入/输出接口242可将HOT单元250连接到物理层(PHY),如:802.3 PHY、HPNA 1.0PHY、HPNA 2.0 PHY等等。 Input / output interface 242 can be connected to HOT Unit 250 to the physical layer (PHY), such as: 802.3 PHY, HPNA 1.0PHY, HPNA 2.0 PHY and so on. 在另一实施例中,PHY包括在HOT单元250中,并且输入/输出接口242是一个以太网接口,如吉比特以太网。 In another embodiment, PHY includes 250 HOT units, and input / output interface 242 is an Ethernet interface, such as Gigabit Ethernet. I/O控制器240可以是单一集成电路或单一半导体平台。 I / O controller 240 may be a single integrated circuit or single semiconductor platform.

图2B是包括有集成控制器220的计算系统200的另一实施例。 2B is another integrated controller includes a computing system 220 of embodiment 200. 集成控制器220至少执行系统控制器120和I/O控制器240的部分功能并包括HOT单元250。 The controller 220 performs the integrated system controller 120 and I / O controller 240, at least some of the features and includes HOT Unit 250. 集成控制器220还可包括附加接口控制器(未示),例如,SMBus、通用I/O(GPIO)、集成设备电路(IDE)等。 Integrated controller 220 may also include additional interface controller (not shown), for example, SMBus, general I / O (GPIO), integrated device electronics (IDE) and the like.

TCP堆栈215选择一个或更多TCP连接作为委托连接。 TCP Stack 215 to select one or more TCP connections as delegate access. 委托连接就是HOT单元250处理的TCP堆栈215干涉最少的TCP连接。 HOT commission processing unit 250 is connected to the TCP stack 215 with minimal interference TCP connection. 未被委托的连接或需要特殊处理的委托连接被TCP堆栈215完全或部分地处理。 Connection or that require special handling commission is not committed 215 connections are fully processed TCP stack or in part. TCP堆栈215通过利用存储于系统存储器130中的驱动程序255在HOT单元250内初始化一个委托连接表中的项来设立一个委托连接,进一步详细说明如后。 215 by using the TCP stack stored in the system memory 130 drivers in the HOT 255 initialization unit 250 a delegate connection table entries to set up a delegate to connect, as described in further detail later. 驱动程序255是TCP堆栈215和HOT单元250之间有效的翻译程序,应TCP堆栈215的请求向HOT单元250发出命令。 Driver 255 is effective translation program between TCP stack 215 and HOT unit 250, TCP stack 215 should request to issue commands to HOT Unit 250. 驱动程序255还在接收到来自HOT单元250的通知后通知TCP堆栈215。 Notification driver 255 also receives notification from the TCP stack unit 250 HOT 215. 尽管TCP堆栈215和HOT单元250之间的通信是利用驱动程序255实现的,以后不再对驱动程序255详细说明。 Although the communication TCP stack between 215 and HOT Unit 250 is the use of the driver 255 implemented, will no longer be described in detail in the driver 255.

与仅存储委托连接的连接状态数据的委托连接表不同,系统存储器130内的连接表245存储所有活动连接的连接状态数据。 Connection status data and store only the connection table commission entrusted connected to, the connection status table 245 stores all data connections activities 130 system memory connections. 因此,TCP堆栈215可将任何委托连接的处理假定为HOT单元250的请求。 Therefore, TCP stack 215 may be connected to any delegate process the request is assumed to be HOT unit 250. 由TCP堆栈215处理委托连接被称为“遗留处理”。 Commissioned by the TCP stack 215 process connection is called "legacy process."

图3是根据本发明的一个或多个方面的图2A和图2B所示HOT单元250的方框图。 Figure 3 is a block diagram 2A and 2B HOT unit 250 in accordance with one or more aspects of the present invention, FIG. DMA引擎310内的直接存储器存取(DMA)接口将I/O控制器240或集成控制器220内的一个或多个子单元连接。 A direct memory access DMA engine 310 (DMA) interface to the I / O controller 240 or one or more sub unit controller integrated 220-Fi. DMA接口被用来发送和接收系统存储器130和HOT单元250内子单元之间的数据,并用来发送和接收CPU 110和HOT单元250内子单元之间的数据。 DMA interface is used to send and receive data to system memory 130 and HOT Unit 250 between the inner sub-unit, and to send and receive data CPU 110 and HOT Unit 250 within the sub-unit.

传送引擎320包括被配置为解析和编辑出站帧的子单元,包括确认插入(acknowledgement insertion)和检查和循环冗余校验计算,产生出站帧。 Delivery engine 320 is configured to include the parsing and editing a sub-unit station frame, including the identification of insertion (acknowledgement insertion) and check and cyclic redundancy check calculation, generate outbound frames. 传送接口330包括一个或多个为传送存储出站帧的缓冲区和配置为通过输入/输出接口242将连接到HOT单元250的PHY接口连接的子单元。 Transmission interface 330 includes one or more of buffers and configuration storage outbound frames transmitted through the input / output interface 242 is connected to the subunit HOT unit 250 PHY interfacing. 在HOT单元250的另一实施例中,PHY被集成到HOT单元250内。 HOT unit 250. In another embodiment, PHY is integrated into the HOT unit 250. 传送引擎320与委托连接表(DCT)350连接,该委托连接表350中存储委托连接的连接状态数据。 Delivery engine 320 is connected with the commission table (DCT) 350 connection, the delegate connection table 350 is stored in the connected state commission connection data. 委托连接表350是一个存储资源,例如,随机存储器(RAM)、寄存器文件等。 Principal connection table 350 is a storage resource, e.g., random access memory (RAM), a register file and the like. 至少部分的委托连接的连接状态表还存储于连接表245中。 Connection Status Table entrust at least part of the connection is also stored in the connection table 245.

委托连接表350中存储的状态信息可包括确定状态、连接地址、系统存储器缓冲区指针、连接跟踪标记、事件控制信息、传送窗口尺寸、接收窗口尺寸、时间戳数据等等。 Principal connection table 350 stored in the status information may include determining the status of the connection address, the system memory buffer pointer, the connection tracking marks, the event control information transmission window size, the receiving window size, time stamp data, and so on. 确定状态可包括待接收的下一预计序列号的序列号、控制及时生成确定的阈值等等。 Determine the state to be received may include the serial number of the next expected sequence number, control the timely formation to determine the threshold value and so on. 传送引擎320在帧处理处理中利用连接表索引、DCT索引读写委托连接表350的部分,以存取与委托连接相关的项。 Delivery engine 320 utilizing the frame processing process in connection table index, DCT index read commissioned connection table section 350, to access and commissioned connectivity-related entries. 存储于该项中的连接状态数据在委托连接处于活动状态时被TCP堆栈215、传送引擎320和接收引擎360更新,如在图7中所述。 Storing data in the connected state of the connection is active commissioned by the TCP stack 215, transfer engine 320 and receive engine 360 updates, as described in Fig. 7.

接收接口370包括子单元,被配置为通过输入/输出接口242与连接到HOT单元250的PHY接口连接。 Reception interface 370 includes a sub-unit is configured to input / output interface 242 is connected to the PHY interface unit 250 connected to the HOT. 接收接口370还包括一接收FIFO(先入先出)缓冲区,用于存储接收到的被指定给接收引擎360的帧。 Reception interface 370 also includes a reception FIFO (first-in first-out) buffer for storing the received frame is assigned to the receiver engine 360. 接收引擎360通过DMA引擎310向系统存储器中130上载被部分处理的帧或仅上载TCP有效载荷数据,如后文详述。 Engine 360 is the frame receiving partially treated or upload only TCP payload data to system memory DMA engine 310 contains 130, as described in detail later.

接收引擎360包括子单元,被配置为将传入帧解析并确定该帧是否有效,即,计算检查和、核对标记并识别出帧类型,例如,IP、DUP、TCP等。 Receiving engine 360 includes a sub-unit is configured to parse incoming frames and determines whether the frame is valid, that is, calculate checksum verification mark and identify the frame type, for example, IP, DUP, TCP and so on. 当被解析的帧无效时被上载到驱动程序存储空间235内的遗留缓冲区中进行遗留处理。 When parsing invalid frames were left when processing uploaded driver storage space left within the buffer 235. 如果接收到的帧包含有带有TCP片段的IP包,TCP堆栈215被通知,并在执请求的TCP处理后将被上传的帧从遗留缓冲区拷贝到应用程序存储空间227。 If the received frame contains an IP packet with a TCP segment, TCP stack 215 is notified, and the TCP request is executed after processing the uploaded copy from legacy frame buffer to the application storage space 227.

当被解析的帧被确定为有效时,接收引擎360提取源IP地址、TCP序列号(SN)、TCP确认(ACK)号、TCP源和目的端口号、TCP窗口尺寸、TCP报头长度等。 When parsed frame is determined to be valid, the reception engine 360 extracts the source IP address, TCP sequence number (SN), TCP acknowledgment (ACK) number, TCP source and destination port numbers, TCP window size, TCP header length. 非委托连接上接收到的被解析的帧被上载到驱动器存储空间2 35中的遗留缓冲区中处理。 Non-commissioned connected frames received parsed be uploaded drive storage space 235 in the left buffer processing. 委托连接上接收到的但又不是特殊事例的被解析的帧如失序号(out-of-order sequence number)和TCP标记压栈设置(TCPpush flag set)等被处理,并且TCP有效载荷数据被上载到应用程序存储空间227中的用户缓冲区。 Received the delegation connector but not a special case to be resolved, such as loss of frame number (out-of-order sequence number) and TCP flags push settings (TCPpush flag set), etc. are processed and TCP payload data is uploaded the application storage space 227 user buffer. 将TCP有效载荷直接上载到应用程序存储空间227比通过驱动程序存储空间235上载有效载荷数据更为高效,因为不需要随后将TCP有效载荷由驱动程序存储空间235拷贝到应用程序存储空间227。 The TCP payload uploaded directly to application storage space than 227 storage space 235 through the driver upload payload data more efficient, because there is no subsequent TCP payload storage space 235 by the driver to the application a copy of the storage space 227.

图4A是根据本发明的一个实施例的设立委托连接的方法步骤的流程图。 4A is a flowchart of a method embodiment delegate connection establishment step according to an embodiment of the present invention. 步骤410中计算系统200利用本领域技术人员已知的处理方法通过3次握手建立TCP连接。 200 known to those skilled in the use of processing methods by three-way handshake to establish a TCP connection in step 410 the computing system. 步骤412中TCP堆栈215确定是否委托由HOT单元250处理的连接。 Step 412 TCP Stack 215 determines whether commissioned connected by HOT Unit 250 process. TCP堆栈215可基于委托连接的特性确定委托连接,如用户定义的连接类型的优先权、为连接规定的持续时间、为连接规定的帧速率、是否将连接用应用程序等,以便执行大量传送,连接所使用的特定TCP端口等。 TCP stack 215 may be determined based on the principal delegation connector connection features such as user-defined type of connection priority for the connection specified duration for the connection specified frame rate, whether the connection with the application, in order to perform a number of transmission, The use of a specific TCP connection ports.

如果步骤412中TCP堆栈确定不应委托该连接用于HOT单元250进行处理,那么步骤414中TCP堆栈215在CT 245中设立用于处理该连接的项并进入步骤422。 If step 412 determines TCP stack should not be entrusted to the connection processing unit 250 for HOT, then step 414 TCP Stack 215 to set up the connection entry and proceeds to step 422 for processing in the CT 245. 如果步骤412TCP堆栈215确定应该委托连接用于HOT单元250进行处理,那么步骤416中TCP堆栈215向HOT单元250发出命令,在具有连接状态数据的DCT 350中设立一个项。 If step 215 determines 412TCP stack should delegate connection processing unit 250 for HOT, then step 416 TCP Stack 215 HOT Unit 250 issues a command to set up an entry in the DCT 350 has a connection state data. 步骤418中TCP堆栈215确定是否向HOT单元250发出一个后接收缓冲区(PRB),如后文详述,向HOT单元250提供系统存储器130中一个或多个用户缓冲区的位置和尺寸。 Step 418 TCP Stack 215 determines whether to issue a post-receive buffer (PRB), as hereinafter described in detail to HOT Unit 250 to HOT Unit 250 provides a system memory 130, one or more user buffer's position and size. 如果步骤418中TCP堆栈215确定要发出PRB命令,那么步骤420中TCP堆栈215发出PRB命令。 If step 418 TCP Stack 215 determines to issue PRB command, then step 420 TCP Stack 215 PRB command issued. 如果在步骤418中TCP堆栈215确定不发出PRB命令,那么TCP堆栈进入步骤422。 If it is determined not to issue PRB command in step 418 TCP Stack 215, then proceeds to step 422 TCP stack. 步骤422中连接设立结束。 Step 422, the end of the connection establishment.

图4B是图4A是根据本发明的一个实施例的接收帧的方法步骤的流程图。 4B is a 4A is a flowchart of a method step of receiving a frame in accordance with one embodiment of the present invention. 步骤424中,HOT单元250通过输入/输出接口242接收帧并可部分处理该帧,产生部分解析帧和报头数据。 Step 424, HOT unit 250 through the input / output interface 242 receives a frame and part of the processing of the frame, resulting in partially resolving frame and header data. 步骤416中HOT单元250确定是否在委托连接上接收到了帧,并且,如果没有,步骤440中HOT单元250向一个或多个遗留缓冲区上载部分处理帧,包括其整套数据链路层和网络层协议报头数据。 Step 416 HOT Unit 250 determines whether it has received the commission in connection frame, and, if not, step 440 HOT Unit 250 to one or more legacy buffers contained part of the processing frame, including its suite of data link layer and the network layer protocol header data. 在步骤442中TCP堆栈215处理被上载到遗留缓冲区的被部分处理的帧。 TCP stack processing step 215 is uploaded to the legacy buffer is part of the processing of 442 frames.

如果在步骤416中,HOT单元250确定委托连接上接收到了帧,那么在步骤426中HOT单元250完成对帧的解析,提取TCP有效载荷数据。 If in step 416, HOT Unit 250 determines the received commission connected to the frame, then the frame is completed in step 426 HOT parsing unit 250, extracts TCP payload data. 在步骤427中HOT单元250确定用户缓冲区是否可用,如果可用,那么在步骤428中HOT单元250向一个或多个用户缓冲区中上载TCP有效载荷数据。 HOT unit 250 determines that the user buffer is available in step 427, if available, then upload in step 250 HOT unit to one or more user buffers 428 TCP payload data. 如果在步骤427中HOT单元250确定用户缓冲区不可用,那么在步骤430中HOT单元250向遗留缓冲区上载有效载荷数据的一部分并通知TCP堆栈215。 HOT Unit 250 determines if the user buffer is not available in step 427, then in the left HOT Unit 250 to upload payload data buffer part of step 430 and notifies TCP Stack 215. 在一个实施例中,该部分是由存储在与委托连接对应的DCT 350内的项中的“启动限制”值规定的。 In one embodiment, the portion is stored in connection with the commissioning of DCT 350 corresponding entry in the "start limit" value specified. 该“启动限制”是一个变量,其最大值可等于最大接收帧的尺寸,其最小值可由应用程序217或TCP堆栈215确定。 The "start limit" is a variable, which may be equal to the maximum size of the largest of received frames, the minimum value by the application 217 or TCP stack 215 OK.

步骤432中TCP堆栈215处理上载到遗留缓冲区的TCP有效载荷数据步骤434中HOT单元250确定TCP堆栈215为委托连接发出的一个或多个PRB命令是否已经被处理。 Step 432 TCP Stack 215 processes the uploaded legacy TCP payload data buffer step 434 HOT Unit 250 determines whether one or more PRB commands TCP stack 215 is sent delegation connector has been processed. 步骤436中HOT单元350将剩余TCP有效载荷数据上载到一个或多个用户缓冲区。 Step 436 HOT Unit 350 remaining TCP payload data uploaded to one or more user buffers. 如果在步骤434中HOT单元250确定委托连接的一个或多个PRB命令还没有被处理,那么在步骤438中HOT单元250将剩余TCP有效载荷数据上载到遗留缓冲区将通知TCP堆栈215。 If, in step 434 HOT Unit 250 determines entrusted to one or more PRB commands connection has not been processed, then in step 438 HOT Unit 250 remaining TCP payload data uploaded to the legacy buffer will notify TCP stack 215. 在另一实施例中,TCP堆栈215完成步骤434并在步骤438中TCP堆栈215指示HOT单元250将所有剩余TCP有效载荷数据上载到遗留缓冲区。 In another embodiment, TCP stack 215, and step 434 is completed in step 438 TCP Stack 215 HOT Unit 250 indicates that all remaining TCP payload data uploaded to the legacy buffer.

在一个实施例中,消息信号中断(MSIs)为HOT单元250提供一个利用多重中断向量发信号给其各种中断资源的机制。 In one embodiment, the message signaled interrupts (MSIs) to HOT Unit 250 provides a mechanism by multiplex interrupt vector signal interruption to their various resources. 利用MSI能够使主机的中断处理更为效率。 MSI enables the use of more efficient interrupt handling host. 在一个实施例中,计算系统200利用多达8个中断向量。 In one embodiment, the computing system 200 utilizes up to eight interrupt vectors.

图4C是根据本发明一个或几个方面的慢启动序列的实施例的简图。 4C is a diagram of an embodiment according to one or slow start sequence several aspects of the present invention. 慢启动和拥塞避免算法由TCP协议规定(如RFC 793、RFC 1122及相关文件中提出的),因此是本领域技术人员所熟知的。 Slow start and congestion avoidance algorithms specified by the TCP protocol (such as RFC 793, RFC 1122 and related documents presented), and therefore those skilled in the art. TCP使用慢启动和拥塞避免来确定某一给定连接的可用带宽。 TCP uses the slow start and congestion avoidance to determine the available bandwidth of a given connection. 两个变量ssthresh(慢启动阈值)和cwnd(拥塞窗口)确定委托连接的行为。 Two variable ssthresh (slow start threshold) and cwnd (congestion window) to determine the behavior of delegation connector. HOT单元250上载ACK信息到TCP堆栈215,包括对接收到的ACK的计数。 HOT Unit 250 contained ACK information to the TCP stack 215, including a count of received ACK. HOT单元250可被TCP堆栈215配置为合并(coalesce)ACK,而不是将每个接收到的ACK都通知TCP堆栈215,以TCP堆栈215规定的频率将ACK上载到TCP堆栈215。 HOT unit 250 may be configured as a TCP stack 215 merge (coalesce) ACK, rather than have each received ACK notification TCP stack 215, 215 frequencies specified TCP stack TCP stack 215 will ACK upload. 合并ACK使HOT单元250减少HOT单元215通知TCP堆栈215委托连接状态的频率,有望在许多情况下提高性能。 The combined ACK reduction unit 250 so HOT HOT section 215 notice TCP stack 215 commissioned connected state frequency, is expected to improve performance in many cases. 特别是由于CPU 110不是为每个接收到的ACK都发生中断,对CPU的使用典型地减少了。 Especially since the CPU 110 is not received for each ACK interrupts occur, the use of the CPU is typically reduced. 对接收到的ACK的计数允许TCP堆栈215确定为每个通知接收到的ACK的数量以便实现慢启动和拥塞避免。 ACK received the count enable TCP stack 215 determines the number of ACK of each notification received in order to achieve slow start and congestion avoidance.

步骤452中应用程序217为委托连接设置cwnd为1段(segment)并且TCP堆栈215输出传送缓冲区描述符到HOT单元250,如后面说明图6D时详细说明。 Step 452 application 217 connection settings for the delegation cwnd to 1 segment (segment) and TCP Stack 215 outputs the transmission buffer descriptors to HOT Unit 250, later described as a detailed description Figure 6D. 步骤454中HOT单元250确定ACK是否被由目标接收到。 In step 454 HOT Unit 250 determines whether the ACK has been received by the target. HOT单元250在步骤454保持,直到ACK被接收到并且然后HOT单元250通知TCP堆栈215并进入步骤456。 HOT Unit 250 is maintained at step 454 until the ACK is received and then notify TCP Stack 250 HOT Unit 215 and proceeds to step 456. 在一个实施例中HOT单元250输出接收到ACK的计数给TCP堆栈215并且TCP堆栈215可计算在每个通知之间为委托连接接收到的ACK的数量。 In a number of cases ACK output HOT Unit 250 receives an ACK count to 215 and TCP stack TCP stack receives a delegation connector 215 can be calculated between each notification to implementation.

步骤456中TCP堆栈215为委托连接确定cwnd是否大于或等于ssthresh,如果是,那么在步骤458中TCP堆栈215呈指数增加,即,打开,基于为委托连接接收到的ACK的数量的cwnd。 Step 456 TCP Stack 215 to determine delegate connection cwnd is greater than or equal to ssthresh, if it is, then in step 458 TCP Stack 215 exponentially increases, that is, open, based on the commission received ACK number of connections to the cwnd. 步骤458中TCP堆栈215还向HOT单元250传送缓冲区描述符并返回步骤454。 Step 458 TCP Stack 215 HOT Unit 250 is also transmitted to the buffer descriptor and returns to step 454.

在一个实施例中,步骤458中TCP堆栈215将HOT单元250配置为通知TCP堆栈每个接收到的ACK。 In one embodiment, the step 215 TCP Stack 458 HOT Unit 250 is configured to notify TCP stack each received ACK. 在另一实施例中TCP堆栈215将HOT单元250配置为通知TCP堆栈215一个接收到的ACK的计数,从而执行一些ACK合并。 Example TCP stack 215 HOT unit 250 configured to notify TCP Stack 215 a received ACK count in another embodiment, to perform some of the ACK merge. 如果步骤456中TCP堆栈215为委托连接确定ssthresh小于cwnd,那么在步骤460中TCP堆栈215处理拥塞避免阶段。 If step 456 TCP Stack 215 is less than ssthresh delegation connector determine cwnd, then avoid the stage in step 460 TCP Stack 215 processes the congestion. 当拥塞避免被使用时cwnd线性打开,直到cwnd等于最大传送窗口尺寸或丢下包。 When congestion avoidance is used when cwnd linear open until cwnd equals the maximum transmission window size or dropped packets.

图5A是根据本发明一个或几个方面的在图2A和图2B中所示的应用程序存储空间中的用户缓冲区的实施例的简图。 5A is an application or user Figures 2A and 2B shown storage space diagram of several aspects of the present invention, an example of the implementation of the buffer. 每个用户缓冲区如用户缓冲区510、用户缓冲区512或用户缓冲区514都被分配在应用程序存储空间227中,用来接收HOT单元250上传的有效载荷数据。 Each user buffer such as user buffer 510, the user buffer 512 or the user buffer 514 are allocated in the application storage space 227 for receiving payload data HOT Unit 250 uploads. 物理存储器地址,如用户缓冲区地址515指出用户缓冲区510在应用程序存储空间227中的位置。 Physical memory addresses, such as the user buffer address 515 indicate the position of the user buffer 510 in 227 application storage space. 类似地,用户缓冲区地址520指示用户缓冲区512的位置,用户缓冲区地址525指示用户缓冲区514的位置。 Similarly, the user buffer address 520 indicating the user buffer 512, and the user buffer address 525 indicates the position of the user buffer 514. 用户缓冲区可被存储于应用程序存储空间227内的物理上互相毗邻的存储位置或存储于应用程序存储空间227内的物理上不相毗邻的存储位置。 User buffer can be stored in the application storage space within the next 227 physical storage locations to each other or within 227 stored in the physical storage space on applications not in adjacent memory locations.

图5B是根据本发明一个或几个方面的用户缓冲区描述符的实施例的简图。 5B is a schematic diagram in accordance with one or several aspects of the present invention, a user buffer descriptor embodiment. 每个用户缓冲区都具有由能够存储于该用户缓冲区中的字节数确定的对应长度。 Each user has the ability to store buffer to the user buffer length corresponding to the number of bytes determined. 例如,用户缓冲区510的长度就是用户缓冲区长度535。 For example, the user buffer length is 510 535 user buffer length. 用户缓冲区描述符是一种数据结构,包括用户缓冲区地址,如用户缓冲区地址515和对应用户缓冲区长度,如用户缓冲区长度535。 User buffer descriptor is a data structure, including the user buffer address, such as user buffer address 515 and the corresponding user buffer length, such as user buffer length 535. 在另一实施例中,用户缓冲区描述符可包括指示任何特殊处理等的描述符标记。 In another embodiment, a user buffer descriptor may include an indication of any special handling descriptor tags. 用户缓冲区描述标记可在其他位中包括请求HOT单元350在有效载荷数据被上载到包括在PRB命令中的用户缓冲区发出通知命令的位在又一实施例中,用户缓冲区描述符可包括用户缓冲区地址、用户缓冲区长度和用户缓冲区结束地址的任意组合。 User buffer descriptor tag may include a request HOT unit 350 in the payload data is uploaded to include users PRB command buffer notification command position in yet another embodiment in the other place, the user buffer descriptor may include user buffer address, the user buffer length and any combination of end user buffer address. 如前述,利用PRB命令由TCP堆栈215将用户缓冲区描述符提供给HOT单元250。 As mentioned above, the use of PRB command provided by the TCP stack 215 user buffer descriptor to HOT Unit 250. 向HOT单元250提供位于应用程序存储空间227的物理存储器地址使HOT单元250直接向应用程序存储空间227上载有效载荷数据。 Physical memory addresses to HOT Unit 250 provided in the application storage space 227 HOT Unit 250 to make direct application storage space 227 to upload payload data.

应用程序217管理用户地址空间,其是由操作系统分配的虚拟地互相毗邻的地址空间。 Application management user address space 217, which is assigned by the operating system virtual address space to the adjacent one another. 当应用217将用户地址空间信息传送给TCP堆栈215时,TCP堆栈215请求操作系统锁定对应该用户缓冲区地址空间的存储器。 When the application 217 user address space information to the TCP stack 215, TCP stack 215 requests a lock on the operating system should the user buffer memory address space. 操作系统锁定存储器的数量并向TCP堆栈215返回对应系统存储器130的物理上互相毗邻的部分的一个或多个物理地址(和长度)。 A portion of the operating system to lock the memory by the number of TCP stack 215 returns the corresponding physical system memory 130 adjacent to each other on one or more physical addresses (and length). HOT单元250存取的物理地址空间由TCP堆栈215管理而不必是物理上互相毗邻的。 HOT Unit 250 accesses the physical address space managed by the TCP stack 215 is physically rather than adjacent to each other. TC堆栈215进行用户地址空间和物理地址空间之间的翻译转换。 TC 215 stack translate translate user address space and physical address spaces. 在另一实施例中驱动程序255进行用户地址空间和物理地址空间之间的翻译转换。 In another example embodiment of the driver 255 to translate translate user address space and physical address spaces.

图5C是根据本发明一个或几个方面的在图2A和图2B中所示软件驱动程序存储空间中的遗留缓冲区的实施例的简图。 5C is a schematic embodiment or 2A and software drivers storage space left in the buffer shown in FIG. 2B according to several aspects of the present invention. 每个遗留缓冲区如遗留缓冲区550、遗留缓冲区552或遗留缓冲区554都被分配在驱动程序存储空间235中以便接收HOT单元250上载的部分处理的帧。 Each legacy buffer such as buffer 550 legacy, the legacy left buffer 552 or buffer 554 are allocated in the driver storage space 235 to receive the frame part of the processing unit is contained on HOT 250. 物理存储地址,如遗留缓冲区地址555指示遗留缓冲区550在驱动程序存储空间235中的位置。 Physical memory addresses, such as the legacy 555 instruction buffer address buffer 550 legacy storage space 235 in the driver's position. 类似地,遗留缓冲区地址560指示遗留缓冲区552的位置并且遗留缓冲区地址565指示遗留缓冲区554的位置。 Similarly, the legacy buffer address buffer 560 indicates the position of the legacy and the legacy buffer address 552 565 554 indicating the position of the legacy buffer. 遗留缓冲区可被存储于驱动程序存储空间235内的互相毗邻的存储器位置或驱动程序存储空间235内不互相毗邻的存储器位置。 Buffer can be stored in the driver storage space adjacent to each other memory location or drivers storage space within 235 235 memory locations are not adjacent to each other left.

图5D是根据本发明一个或几个方面的遗留缓冲区标签表的实施例的简图。 5D is a schematic diagram of an embodiment according to the present invention, one or more aspects of the legacy buffer tag table. 每个遗留缓冲区地址都与一唯一的标签相关联。 Each legacy buffer address is associated with a unique tag associated. 例如,遗留缓冲区地址555与标签575相关联,遗留缓冲区地址560与标签580相关,遗留缓冲区地址565与标签585相关。 For example, a legacy buffer address 555 is associated with a label 575, 560 legacy buffer address associated with the label 580, 565 associated with the legacy buffer address tag 585. 在一个实施例中,遗留缓冲区标签表590由驱动程序255维护并可被存储于驱动程序存储空间235中,或在另一实施例中被存储在TCP堆栈存储空间225中。 In one embodiment, the legacy buffer label table 590 by the driver 255 to maintain and can be stored in the driver storage space 235, or in another embodiment, TCP stack is stored in the storage space 225.

图5E是根据本发明一个或几个方面的遗留缓冲区描述符的实施例的简图。 5E is a schematic diagram of the present invention, one or more aspects of the legacy buffer descriptor according to an embodiment. 每个遗留缓冲区都具有能够存储在遗留缓冲区内字节的数目所决定的对应长度。 Each legacy buffer length has a corresponding number can be stored in the buffer byte legacy of the decision. 例如遗留缓冲区550的长度是遗留缓冲区570。 For example, the length of the left buffer 550 is a legacy buffer 570. 在另一实施例中,所有遗留缓冲区的长度都相等。 In another embodiment, all of the legacy buffer length are equal. 遗留缓冲区描述符是一种数据结构,包括遗留缓冲区地址,如遗留缓冲区地址555;对应遗留缓冲区长度,如遗留缓冲区长度570;和对应标签,如标签575。 Legacy buffer descriptor is a data structure, including legacy buffer address, such as legacy buffer address 555; corresponding to the legacy buffer length, such as the legacy buffer length 570; and the corresponding tags, such as tags 575. 在另一实施例中,遗留缓冲区描述符可包括任何遗留缓冲器地址的组合、遗留缓冲器长度、标签、和遗留缓冲器端地址。 In another embodiment, a legacy buffer descriptor may include any combination of legacy buffer address legacy buffer length, labels, and legacy buffer end address. 遗留缓冲器描述符被驱动器255利用接收(缓冲区)描述符环,提供给HOT单元250,以后还要详细说明。 Legacy buffer descriptor 255 is driven by the reception (buffer) descriptor ring, supplied to HOT Unit 250, described in greater detail later.

驱动程序255与HOT单元250之间的通信通过存储在驱动器存储空间235内的数据结构完成。 HOT 255 and communication driver unit 250 is completed between the data structures stored in the memory 235 of the drive. 环(ring)是指包括多个项的数据结构,其详述如后。 Ring (ring) is meant to include a plurality of items of data structures, such as after its detailing. 环被组织成项的环形队列,带有驱动程序255使用的指针和HOT单元250使用的另一指针。 Ring circular queue is organized into items other pointers and HOT units with drivers use 255 250 use. 每个环都存储在驱动程序存储空间235内毗邻的物理存储器中。 Each ring is stored in the driver storage space 235 adjacent physical memory.

图6A是用于由应用程序255向HOT单元250传送命令并由HOT单元250向驱动器255传送状态的命令环601的简图。 6A is used to transfer commands from the application program 255 to 250 by the sketch HOT HOT unit 250 to the drive unit 255 of the command transfer state ring 601. 命令环601用于初始化DCT 350中的委托连接项并将用户缓冲区描述符提供给DCT 350。 Command is used to initialize the DCT 350 ring 601 Principal connection entry and user buffer descriptor to the DCT 350. 命令环601包括若干项,每个项在图6A中都以命令环项603表示。 Command ring 601 includes a number of items, each in FIG. 6A are in command ring entry 603. 每个命令环项603都包括指示该项是归HOT单元250或驱动程序255所拥有的“own”位。 Each order entry ring 603 includes instructions that are owned by HOT Unit 250 or Driver 255 has "own" bit. 启动时,每个项中的“own”位都被初始化,被指示为驱动程序255所有,并且命令写指针607和命令读指针605在命令环601中是同一个项。 At startup, each item in the "own" bits are initialized, is indicated to the driver 255 all, and command the write pointer 607 and read pointer 605 commands in the command ring 601 is the same item. 当TCP堆栈215通过驱动程序255向一个项写入一个命令时,“own”位被设置为指示该项为HOT单元250所有并且命令写指针607被改为指向命令环601中的下一个指令环项603。 When the TCP stack 215 through the driver 255 a command to write an item, "own" bit is set to indicate that the HOT Unit 250 and ordered all the write pointer 607 is changed to point to the command ring 601 in the next instruction loop Item 603. 当HOT单元250读出并完成处理时,设置一个被命令读指针605定址的项,指示该项为驱动程序255所有。 When HOT Unit 250 is read out and complete processing, set up a command read pointer 605 is addressed items, indicating that the driver 255 all. 不允许命令读指针605越过命令写指针607。 Not allowed to command the read pointer 605 over the command of the write pointer 607. 当命令读指针605或命令写指针607到达命令环601的尾项时,该指针卷入命令环601中的首项。 When the command read pointer 605 or 607 command write pointer reaches the command of end ring 601, the pointer is involved in command of the first ring 601 items. 本技术领域的专业人员能够理解还可以采用其他机制将命令送至HOT单元250,例如,命令连接表、FIFO、共享存储器方案等。 Those skilled in the art to understand other mechanisms may also be employed to the HOT command unit 250, for example, the command contacts list, FIFO, shared memory programs.

除“own”位外,每个命令环项603还包括命令字段、DCT索引、特定命令控制和/或状态信息、特定命令数据等。 In addition to "own" bits, each command ring entry 603 also includes a command field, DCT index, specific commands to control and / or status information, specific command data. 如前述,DCT索引识别DCT 350中与委托连接对应的项。 As mentioned above, the corresponding item identification DCT DCT 350 index in connection with the commission. 命令字段包括命令标识符,用于PRB命令、更新表项(UTE)命令、无效表项(ITE)命令、转储连接缓冲区表项(DCBTE)命令等命令。 Command field includes a command identifier for PRB command to update entries (UTE) command, invalid entries (ITE) command, dump the connection cache entry (DCBTE) command and other commands. 当一条命令被驱动程序255写入时,特定命令控制/状态信息包括特定命令控制。 When a command is written to the driver 255, a specific command and control / status information, including specific commands. 当命令被HOT单元350读出并更新时,特定命令控制/状态信息被更新为包括特定命令状态。 When commands are read out and updated HOT unit 350, the specific command and control / status information is updated to include a specific command state. 特定命令数据被驱动程序255写入并被HOT单元350读出,详述如后。 Specific command data is written to the driver 255 and HOT unit 350 reads out, as described in detail later.

PRB命令被应用程序217使用,以便通过TCP堆栈215和驱动程序255将用户缓冲区描述符传递给HOT单元350。 PRB command is the application to use 217 to 215 by the TCP stack and driver 255 will be passed to the user buffer descriptor HOT Unit 350. 每个用户缓冲区描述符为HOT单元350在应用程序存储空间227中指示一个物理地址以便将有效载荷数据上载到其中。 Each user buffer descriptor to HOT Unit 350 indicates a physical address in the 227 application storage space for the payload data uploaded it. TCP堆栈接收一个或多个用户地址并确定对应的物理地址以便包括在用户缓冲区描述符中。 TCP stack receiving one or more user addresses and determine the corresponding physical address to be included in a user buffer descriptor. TCP堆栈215可代表应用程序217为一单一委托连接表项利用PRB命令通过驱动程序255发送一个或多个用户缓冲区描述符。 TCP stack 215 may represent the application of a single delegation connector 217 entries use PRB command driver 255 sends one or more user buffer descriptor. 驱动程序255包括PRB命令内特定命令控制和/或状态信息字段内用户缓冲区的数量。 Driver 255 includes specific commands within the PRB command control and / or the number of states in the information fields for the user buffer. 因为驱动程序255没有必要的信息来确定HOT单元350已经上载了多少个先前被发送的用户缓冲区,所以HOT单元350在特定命令控制和/或状态信息字段中写入一个指示PRB命令接受的用户缓冲区的数量。 Because the driver 255 without the necessary information to determine the HOT unit 350 has uploaded a number of previously transmitted user buffer, so HOT in a specific command control unit 350 and / or status information field write a PRB command accepts user instructions number of buffers.

PRB命令中的特定命令控制和/或状态信息字段还包括“sync”位。 PRB command specific command and control and / or status information field also includes "sync" bit. TCP堆栈215在包括有被断言遗留标记的通知命令已经通过通知环611由HOT单元接收时(如后在图9B中详述),请求驱动程序255写入“sync”位。 TCP stack 215 includes left asserted labeled notification command has been notified by the ring 611 is received by HOT Unit (as described in detail later in FIG. 9B), requesting driver 255 writes "sync" bit.

由驱动程序255构建的在PRB命令中的特定命令数据字段包括对应PRB命令中发送的第一缓冲区的首字节的起始TCP序列号和包括在PRB命令中的所有用户缓冲区的用户缓冲区描述符等。 Specific command data field 255 by the driver built in PRB command comprises a first buffer of the first byte of the TCP sequence number corresponding starting PRB command sent and is included in the PRB command buffers for all users user buffer District descriptors like. 用户缓冲区描述符包括在应用程序存储空间227中规定位置的物理地址、用户缓冲区长度、指示任何特殊处理的描述符标记等等。 User buffer descriptor included in the application storage space 227 in a predetermined position of the physical address, the user buffer length descriptor tag indicating any special treatment and so on.

UTE命令被驱动程序255使用,用来更新DCT 350中的项,还被用于设立委托连接和委托连接活动时更新连接数据。 UTE command by the driver 255 used to update the items in the DCT 350, is also used to set up commission to update the connection data connection when connecting and commission activities. ITE命令被用来将委托连接无效。 ITE command is used to delegate connection invalid. 当HOT单元250接收ITE指令时,如果有必要,在清除对应ITE命令中规定的DCT索引的委托连接之前,它将等待传送引擎320和接收引擎360处理的完成(同时阻塞任何新的TCP处理的启动)。 When HOT Unit 250 receives ITE instruction, if necessary, before clearing the corresponding ITE specified in the order DCT index commissioned connection, it will wait for the completion of transfer engine 320 and the reception processing engine 360 (while blocking any new TCP processing start up). DCBTE命令使HOT单元350向遗留缓冲区上载DCBTE命令中所包括的由DCT索引规定的项。 DCBTE command makes HOT Unit 350 to the legacy buffer ins provided by the DCT index DCBTE command included.

驱动程序255可存取命令环601而不干扰PRB命令的传送或接收处理处理。 Drivers can access the command ring 601 255 without interfering with the transmission or reception processing process PRB command. 这样就允许驱动程序255向HOT单元350及时提供新的用户缓冲区,从而提高接收帧能够被HOT单元350接受而不是被阻塞的可能性。 This allows the driver to provide a new user buffer 255 to HOT Unit 350 in a timely manner, so as to increase the likelihood of receiving a frame that can be accepted HOT unit 350 instead of being blocked.

图6B是用于由HOT单元250向驱动程序255传送事件通知描述符的通知环(notification ring)的简图。 6B is a schematic view for notification descriptors from HOT Unit 250 to Driver 255 transmits an event notification ring (notification ring) of. 通知环611载有通过驱动程序255由HOT单元250向TCP堆栈215的连接信息。 Notify ring 611 carrying 255 through the driver information from the HOT unit 250 is connected to the TCP stack 215. 本领域技术人员应该理解,还可以使用其他机制由HOT单元250向TCP堆栈215交流信息,例如,通知描述符的链接表、FIFO、共享存储器方案等。 Those skilled in the art would understand, other mechanisms may also be used information from the TCP stack HOT Unit 250 to 215 AC, for example, notification descriptor linked list, FIFO, shared memory programs.

通知环611包括多个项,图6B中所有项都用通知环项613表示。 Notify ring 611 includes a plurality of entries, 6B, all items are 613 represented by notice in the ring. 每个通知环项613包括指示该项是被HOT单元250还是被驱动程序255所有的“own”位。 Each notification includes information indicating that ring entry 613 is HOT Unit 250 or 255 by the driver all "own" bit. 启动时,每个项中的“own”位都被初始化,被指示为HOT单元250所有,并且通知写指针617和通知读指针615在通知环611中是同一个项。 At startup, each item in the "own" bits are initialized, is indicated as a HOT unit 250 at all, and notifies the write pointer 617 and read pointer 615 notifications in the notification ring 611 is the same item. 当HOT单元250通过驱动程序255向一个项写入一个命令时,“own”位被设置为指示该项为驱动程序255所有并且通知写指针615被改为指向通知环611中的下一个通知环项613。 When HOT Unit 250 through the driver 255 a command to write an item, "own" bit is set to indicate that the driver 255 and notification of all the write pointer 615 is changed to point to the notification ring 611 in the next notification ring Item 613. 当驱动程序255读出并完成处理被通知写指针617定址的项,“own”位被设置为指示该项为HOT单元250所有。 When the driver 255 is read out and complete the process by the write pointer 617 notification addressed items, "own" bit is set to indicate that the HOT unit 250 at all. 不允许通知读指针617越过通知写指针615。 Not allowed to inform the read pointer 617 over the write pointer 615 notice. 当通知读指针617或通知写指针615到达通知环611的尾项时,该指针卷入通知环611中的首项。 When the notice read pointer 617 or notification of the write pointer 615 reaches the end of the notification ring 611 item, the pointer is involved in the notification ring 611 in the first term.

除“own”位外,每个通知环项613还包括通知标记字段、DCT索引、可选标记(该标记如果存在,向特定遗留缓冲区提供参考)、下一预计序列号、最高接收到的ACK号、最近接收到的传送窗口尺寸、当前TCP时戳等等,用于DCT索引规定的委托连接。 In addition to "own" bits, each notification ring entry 613 also includes a notification tag field, DCT index, selectable marker (the marker, if present, to provide a reference to a specific legacy buffer), the next expected sequence number, the maximum received ACK number, recently received transport window size, TCP time stamp, etc. Currently, the commission provided for connecting the DCT index. 通知标记字段包括“遗留”标记、“压栈通知”标记、“双重ACK”标记、“序列号阈值”标记、“ACK阈值”标记、“请求缓冲区”标记等等。 Notification tag fields include "legacy" tags, "push notification" flag, "double ACK" tag "sequence number threshold" flag, "ACK threshold" flag, flag "request buffer" and so on. “遗留”标记在有效载荷数据或部分解析帧数据已经被HOT单元250上载到遗留缓冲区。 "Legacy" mark in the payload data or partially parsed frame data has been uploaded to the legacy buffer 250 HOT Unit. “压栈通知”标记、“双重ACK”标记、“序列号阈值”标记、“ACK阈值”标记和“请求缓冲区”标记将在图9A中说明。 "Push notifications" tags, "double ACK" tag "sequence number threshold value" tag, "ACK threshold" flag and the "request buffer" flag will be described in FIG. 9A.

当HOT单元250向遗留缓冲区上载有效载荷数据或被部分解析帧数据时可包括可选标记,以后在图8C中还有详细说明。 When HOT Unit 250 to upload on the legacy buffer payload data or partially parsed frame data may include selectable marker, later in FIG. 8C also described in detail. 该标记是通过接收描述符环由驱动程序255接收的(后面将详细说明),并被用于将给定的通知与上载了有效载荷数据或被部分解析帧数据联系起来。 This flag is used by the receiving descriptor ring 255 is received by the driver (described in detail below), and for a given notification and upload the payload data or partially parsed frame data link. 驱动程序255可使用随通知接收的标记通过读出与该标记相关联的遗留缓冲区标签表590中的项找到遗留缓冲区在驱动程序存储空间235中的位置。 Drivers can use 255 mark with the notification received by reading labels and legacy buffer table 590 associated with the mark of the items found in the driver left the buffer memory 235 in place.

HOT单元250可利用通知环611及时通知驱动程序255要求进一步由驱动程序255以对HOT单元250传送或接收处理影响最小的方式处理的连接条件。 HOT unit 250 may use the notification ring 611 255 notify the driver by the driver asked for further transfer to HOT 255 to 250 units, or connected conditional processing with minimal impact process. 通知环611的操作允许驱动程序255及时提供HOT单元350新用户缓冲区,从而提高接收帧能够被HOT单元250接受而非阻塞的可能性。 Notify ring 611 255 operation allows drivers to provide timely HOT new user buffer unit 350, thereby increasing the possibility of receiving a frame that can be accepted HOT Unit 250 and non-blocking.

图6C是根据本发明一个或几个方面的用于由通过驱动程序255由TCP堆栈215向HOT单元250传送接收缓冲区信息的接收描述符环621(receivedescriptor ring)的简图。 FIG. 6C according to one or more aspects of the present invention are used to describe the information by the receive buffer 255 through the driver by a TCP stack 215 to the transfer unit 250 receives the schematic symbol HOT ring 621 (receivedescriptor ring) of. 接收描述符环621被用于向HOT单元250提供遗留缓冲区描述符。 Receive descriptor ring 621 to HOT Unit 250 is used to provide a legacy buffer descriptor. 可由HOT单元250向遗留缓冲区上载若干种类型的数据,包括非TCP帧、非委托连接上接收到的帧、在委托连接上接收的包含有的异常(意外的标记、失序、无效检查和等)的帧,和由DCT350上载的连接数据。 By HOT Unit 250 to the legacy buffer contained several types of data, including non-TCP frames received on a non-commissioned connected to the frame, connected to receive the commission contains some exceptions (unexpected token, disorder, ineffective inspection and so on ) frame, and the connection data generated by the DCT350 upload. 本领域技术人员应该理解,还可以使用其他机制向HOT单元250提供缓冲区描述符,例如,通知描述符的链接表、FIFO、共享存储器方案等。 Those skilled in the art would understand, other mechanisms may also be used to provide HOT Unit 250 buffer descriptor, for example, notification descriptor linked list, FIFO, shared memory programs.

接收描述符环621包括若干项,所有的项在图6C中都表示为接收描述符环项623。 Receive descriptor ring 621 includes a number of items, all of the items in Fig. 6C are represented as receive descriptor ring 623 entries. 每个接收描述符项623都包括指示该项是由HOT单元250所有还是由驱动程序255所有的“own”位。 Each receive descriptor entry 623 includes instructions that all by HOT Unit 250 or 255 by the driver all "own" bit. “own”位的功能在对图6A的说明中已有阐述。 "Own" bit function in the description of FIG. 6A has been described. 接收描述符写指针627与命令写指针607的功能将同,接收描述符读指针625与命令读指针605的功能将同除“own”位外,每个接收描述符环项623还包括遗留缓冲区描述符、接收控制和/或状态字段等。 Receive descriptor write pointer 627 and the write pointer 607 command functions will work with, receive descriptor read pointer 625 and read pointer 605 command functions will work with except "own" bits, each receive descriptor ring buffer entry 623 also includes a legacy District descriptor receiving control and / or status fields and the like. 如对图5E的说明中所述,遗留缓冲区描述符包括规定在驱动程序存储空间235中的物理位置、遗留缓冲区长度和可选标记。 As described in the description of FIG. 5E, a legacy buffer descriptor including provisions in the driver storage space 235 physical locations, the legacy buffer length and a selectable marker.

当接收描述符环项623被驱动程序255写入时,接收描述符环项623可与其他位包括:请求HOT单元350在数据被上载到接收描述符环项623中规定的遗留缓冲区上时发送中断的位。 HOT request unit 350 receives the data is uploaded to describe the character ring 623 items prescribed legacy buffer: When receiving descriptor ring 623 entries written by the driver 255, item 623 receive descriptor ring with other bits include transmit interrupt bit. 当接收描述符环项623被HOT单元350读出并更新时,接收控制和/或状态信息被更新,以便在有效载荷数据或被解析的帧数据被上载到遗留缓冲区时包括连接状态。 When receiving descriptor ring 623 entries are read out and updated in 350 HOT unit, receiving control and / or status information is updated so that the frame data or parsed payload data including connection status when it is uploaded to the legacy buffer. 上载到遗留缓冲区被HOT单元350为非委托连接写入的接收控制和/或信息可包括接收帧指示器的尾端、超出最大帧尺寸指示器等。 Uploaded to the legacy buffer HOT Unit 350 was commissioned to write the non-connection receiving control and / or information may include receiving the tail end of frame indicator, exceeds the maximum frame size indicators. 上载到遗留缓冲区被HOT单元350为委托连接写入的接收控制和/或信息可包括启动缓冲区指示器、用户缓冲区不可用指示器、接收帧尾端、超区域ACK接收到指示器等图6D是根据本发明一个或几个方面的用于通过驱动程序255由TCP堆栈215向HOT单元250传送传送缓冲区信息的传送描述符环(transmitdescriptor ring)的简图。 HOT legacy buffer is uploaded to a delegate reception control unit 350 connected to the write and / or information may include starting buffer indicator, the user buffer unavailable indicator received frame ends, supra-regional ACK received indicators, etc. 6D is a schematic diagram of the present invention, one or more aspects of the TCP stack 215 to 255 by the transmission buffer 250 transmit information to describe HOT unit transmits through the driver character ring (transmitdescriptor ring) is needed. 该传送描述符环631被用于向HOT单元250提供传送缓冲区描述符。 The transfer descriptor ring 631 to HOT Unit 250 is used to provide the transmit buffer descriptor. 本领域技术人员应该理解,还可以使用其他机制向HOT单元250提供缓冲区描述符,例如,通知描述符的链接表、FIFO、共享存储器方案等。 Those skilled in the art would understand, other mechanisms may also be used to provide HOT Unit 250 buffer descriptor, for example, notification descriptor linked list, FIFO, shared memory programs.

传送描述符环631包括若干项,每个项都在图6D中用传送描述符环项633表示。 Transfer descriptor ring 631 includes a number of items, each item in Figure 6D by transfer descriptor ring 633 entries represented. 每个传送描述符项633包括“own”位,指示该项是由HOT单元250所有或是由驱动程序255所有。 Each transfer descriptor entry 633 includes "own" bit to indicate that all by HOT Unit 250 or 255 by the driver at all. “own”位的功能在对图6A中的描述中已经说明。 "Own" bit function in the description of FIG. 6A has been described. 工传送描述符写指针637的功能与命令写指针607的功能相同,传送描述读指针635的功能与命令读指针605的功能相同。 Workers transfer descriptor write pointer 637 functions the same as the write pointer 607 and command functions, transfer functions describe the read pointer 635 and 605 of the same command read pointer function.

除“own”位外,每个传送描述符环项633都包括传送缓冲区描述符、DCT索引、特定命令传送控制、传送控制/状态字段、传送缓冲区字节计数等。 In addition to "own" bits, each transfer descriptor ring 633 items includes transfer buffer descriptor, DCT index, specific command transmission control, transmission control / status field byte transmit buffer count and the like. 传送缓冲区描述符包括规定了在的应用程序空间227或存储了待传送帧数据的TCP堆栈存储空间225中的物理地址。 Transmission buffer descriptor including provisions in the application space 227 to be transmitted or stored in the frame data storage space TCP stack 225 physical address. HOT单元250利用该物理地址从驱动程序存储空间235中读出帧数据。 HOT unit 250 using the physical address 235 is read out from the driver frame data storage space. 特定传送控制可包括为传送引擎320的请求以便保留DCT 350中的帧的首字节的序列号。 Specific transport control engine 320 may include a request to transmit in order to preserve the sequence number of the first byte in the frame DCT 350. 当为了帧而接收到ACK时,HOT单元250可生成通知命令。 When the order is received in the frame ACK, HOT unit 250 may generate a notification command.

传送控制和/或驱动程序255写入的状态字段可包括传送帧指示器的末端、启动TCP分段的一位、启动HOT单元250的TCP检查和计算的一个或多个位、TCP分段中使用的最大段尺寸等等。 Transmission control state field and / or driver 255 writes transmission frame indicator may include a tip, start a TCP segment, TCP checks start HOT unit 250 and one or more bit computing, TCP segment Use the maximum segment size, etc. 当传送描述符环项633被HOT单元250读出并更新时,特定传送控制和/或状态信息被更新以便包括特点传送状态。 When sending descriptor ring 633 entries are read and updated HOT unit 250, the specific transport control and / or status information is updated to include the characteristics of the transmission status. 特定传送状态可包括载体指示器的丢失、传送重试计数、重试错误等等。 Specific delivery status indicator may comprise a carrier loss, transmission retry count, retry error and so on.

图7是根据本发明一个或几个方面的包括有图3所示HOT单元250一部分的方框图。 Figure 7 is one or more aspects of the present invention comprises a block diagram of a portion 250 shown in FIG. 3 HOT unit. DCT 350包括用于处理通过命令环601接收来自驱动程序255的CMD单元710。 DCT 350 comprises a ring 601 for processing by the command CMD receiving unit 255 from the driver 710. 委托连接信息存储在连接缓冲区表(CBT)715、连接数据表(CDT)720和连接匹配表(CMT)725中的DCT 350内。 Delegation connector 720 and connection information is stored matching table (CMT) in connection buffer table (CBT) 715, the connection data table (CDT) in 725 DCT 350 inside. CBT 715、CDT 720和CMT 725内的委托连接项可被CMD单元710写入。 CBT 715, CDT 720 commissioned within 725 and CMT 710 connection entries can be written to CMD unit. CMT 725存储委托连接标识信息并且CMT 725在委托连接被设立时被CMD单元710写入。 CMT 725 delegate connection identification information storage and CMT 725 is written in 710 when the connection is established commission CMD unit. 在CMT 725中,对应委托连接的项保持对应,只要连接保持委托或直到连接终止。 In the CMT 725, an item connected to a corresponding commission remain relevant, as long as the connection remains delegate or until the connection is terminated. CMT 725中的项包括目标IP地址、源IP地址、源TCP端口、目标TCP端口等。 CMT The 725 items include the destination IP address, source IP address, source TCP port, destination TCP ports.

当委托连接被建立时,CMD单元710初始化CDT 720中的项。 When a connection is established commission, CMD unit initialization CDT 720 items in 710. CDT 720中的项包括委托连接的委托连接状态信息,如预期的序列号、ACK号、时戳数据、未承认帧(unacknowledged frames)的计数等。 CDT 720 items including entrustment connection status connections, such as the expected sequence number, ACK number, time stamp data, frame (unacknowledged frames) count did not recognize the like. 当帧被构造为在委托连接传送时,CDT 720中的项内的字段被传送引擎320读出并选择性地修改。 When the frame is configured to transmit commissioned connection, field entries within the 720 CDT transmitted engine 320 reads and selectively modified. 同样地,当委托连接上的进入帧被处理时,CDT 720中的项内的字段被接收引擎360读出并有选择地修改。 Similarly, when commissioned into the frame connections are processed, field entries within the 720 CDT received engine 360 reads and selectively modified. 当PRB命令为委托连接被接收到时,CBT 715内的项被CMD单元710用一个或多个用户缓冲区描述符写入。 When connected to a delegate PRB command is received, the items within the CBT 715 is CMD unit 710 with one or more of the user buffer descriptor is written. 用户缓冲区信息被接收引擎360内的缓冲区上载单元745读出并有选择地修改。 User buffer information is received engine load unit 745 within the buffer 360 is read out and selectively modified.

委托连接信息已经被分配在CBT 715、CDT 720和CMT 725之间,所采取的方式是断开由影响CBT 715的用户缓冲区张贴(postings)到存储于CDT720的状态信息。 Principal connection information has been distributed among the CBT 715, CDT 720 and CMT 725, the way is taken off by the impact of the user buffer CBT 715 posted (postings) to the state of the information stored in the CDT720. 还有,由于状态信息是被接收引擎360基于最新接收到的帧更新的,传送引擎320和TCP堆栈215能够在帧构建期间存取当前状态信息。 Also, since the state information is received engine 360 based on the latest update of the received frame, and transmits the engine 320 during TCP stack 215 can access the status information of the current frame is built. 类似地,由于状态信息也是传送引擎320基于最新传送的帧更新的,接收引擎360和TCP堆栈215能够在帧构建期间存取当前状态信息。 Similarly, since the engine 320 transmits the state information is transmitted based on the latest update of the frame, the engine 360 and the receiving TCP stack 215 can access the status information of the current frame during build.

在接收接口370内,缓冲区,接收FIFO 730缓冲进入帧。 In the receiving interface 370, buffer, receiving FIFO 730 into the frame buffer. 接收接口370输出帧和有效帧指示器到接收引擎360内的解析单元735。 Interface 370 receives the output frame and effective frame pointer to the parsing unit 360 receives the engine within 735. 预解析单元735解析有效帧,产生被部分解析的帧,并读出CMT 725以确定是否该帧被接收到委托连接。 Pre-analysis unit 735 to resolve valid frame to generate frame is partially resolved, and reads CMT 725 to determine whether the frame is connected to the commission received. 预解析单元735输出被部分解析的帧到解析单元740。 Pre-analysis unit 735 outputs the frame portion parsed into parsing unit 740. 解析单元740确定每个被部分解析帧的协议类型,即,TCP、UDP、IP等,并选择性地解析该被部分解析的帧,产生解析帧和被部分解析的帧。 Parsing unit 740 is determined for each analytical protocol type section frame, that is, TCP, UDP, IP, etc., and optionally resolves the partially parsed frame, it produces analytical frame and partially parsed frames. 解析单元740读出CDT 720,确定是否存在一个或多个特殊事例,并输出被部分解析的帧、解析帧或帧,到缓冲区上载单元745。 Parsing unit 740 reads the CDT 720, to determine whether the presence of one or more particular instances, and outputs the partially parsed frame, parsing a frame or frames to the buffer 745 loading unit. 解析单元740还选择性地设置存储在如通知单元750内寄存器的存储器件内的通知标记,如后详述。 Parsing unit 740 also selectively set the notification tag stored in the register as the notification unit 750 of memory device, such as described in detail later.

缓冲区上载单元745读出CBT 715并选择性地写入CBT 715和CDT 720。 Upload unit 745 reads the buffer CBT 715 and selectively writes CBT 715 and CDT 720. 缓冲区上载单元745通过DMA引擎310上载帧、部分解析帧和解析帧到系统存储器130。 Upload a buffer unit 745 through DMA engine 310 carrier frame, partially resolving frame to frame and resolve system memory 130. 缓冲区上载单元745基于存储于CBT 715中的用户缓冲区描述符中或通过接收描述符环261接收到的来自驱动程序255的遗留缓冲区符中的数据规定写入系统存储器130的位置。 Upload unit stored in the buffer 745 based CBT 715 user buffer descriptor or write to system memory by receiving description data specifier ring 261 operator received a legacy from the driver buffer 255 position 130. 类似地,传送引擎320基于通过传送描述符环631接收的来自驱动程序255的传送缓冲区描述符规定系统存储器130中的读出位置。 Similarly, the transfer engine 320 based on the received symbol ring 631 described by transmitting the transmit buffer 255 from the driver's website provides system memory 130 reading position description. 通知单元750通过到驱动程序255的DMA引擎310输出通知到通知环611。 Notification unit 750 to the driver through DMA engine 310 outputs a notification to the notification ring 255 611.

限制数量连接的委托连接信息被存储于CMT 725,并在达到该限制数量时超出连接的连接信息仅被存储于系统存储器130内的CT 245(图2A或2B)中。 Commissioned limit the number of link information is stored in the CMT 725, and the limit is reached the number of connections exceeds the connection information is stored only in the system memory 130 CT 245 (FIG. 2A or 2B) of. 在一个实施例中,HOT单元250上载部分处理帧到驱动程序存储空间235中的遗留缓冲区,而非为了处理用于超出连接的进入和外出帧而存取CT 245的连接信息。 In one embodiment, HOT Unit 250 uploads partially processed frames to the driver storage space left in the buffer 235, rather than to a process for entering and going out beyond the connecting frame and access information CT 245 is connected. 在另一实施例中,HOT单元250将DCT 350作为高速缓存并根据需要存取CT 245以便定位相对连接数据。 In another embodiment, HOT unit 250 DCT 350 as a cache and accesses CT 245 needed to locate the data relative to the connection. TCP堆栈215独立于HOT单元250执行的额外进入或外出帧的处理完成对部分处理的帧的处理。 TCP stack additional 215 independent execution unit 250 enters in HOT or out frame processing is completed partially processed frame processing. 因此,超出连接的遗留处理典型地以等于或高于在没有HOT单元250的情况下的计算系统200中的帧处理速率进行处理。 Accordingly, beyond the legacy processing is typically connected to the frame is equal to or higher than the processing rate calculation unit 250 the system without HOT under 200 for processing. 该速率可能是更好的,因为帧是由HTO单元250部分处理的并且在接收接口370执行的帧有效性也被上载到驱动程序存储窨235。 The rate may be better, since the frame is a frame validity and receive interface 370 executed by HTO unit processing section 250 is also uploaded to the driver store scenting 235. 还有,驱动器255和TCP堆栈215的遗留处理可以与HOT单元250的传送处理或接收单元250的接收处理同时进行图8A是根据本发明一个或几个方面的处理有效帧的方法的简图。 Also, the drive 255 and the TCP stack legacy handle 215 can 8A is a schematic view of the present invention, one or several aspects of an effective treatment method for frame transmission processing or simultaneously with the receiving unit 250 of the reception processing unit 250 HOT. 在步骤801中有效帧被接收引擎360内的预解析单元735接收。 In step 801 valid frames are received within 360 engine pre-analysis unit 735 receives. 步骤803中预解析单元735确定该有效帧是否为TCP帧,如果不是,在步骤805中完成本领域技术人员所熟知的非TCP处理。 Step 803 pre-parsing unit 735 determines whether the frame is valid TCP frame, if it is not completed in step 805 are well known to those skilled in the processing of non-TCP. 在一个实施例中,接收引擎360完成接收的UDP帧的处理。 In one embodiment, the receiver engine 360 to complete the processing of the received UDP frames. 在另一实施例中,接收引擎360完成另一协议的处理。 In another embodiment, the receiver engine 360 finishes processing of another protocol. 在又一实施例中,接收引擎360上载其他协议的帧到驱动程序存储空间235并通知驱动程序255。 In yet another embodiment, the receiving load on the engine frame 360 other agreement to the driver storage space 235 and signals the driver 255.

如果在步骤803中,预解析单元735确定有效帧是TCP帧,那么在步骤807中,预解析单元735由CMT 725中读一个或多个项。 If, at step 803, the pre-analysis unit 735 determines the effective frame is TCP frame, then in step 807, the pre-analysis unit 735 to read one or more items in the CMT 725. 步骤809中预解析单元735确定TCP帧(以下称为“该帧”)是否在委托连接被接收,即,是否该帧与CMT 725中的项匹配。 Step 809 pre-parsing unit 735 determines TCP frame (hereinafter referred to as "the frame") is being received in the delegate connection, i.e., whether the entry that matches the frame in the CMT 725. 预解析单元735从该帧中提取目标IP地址、源IP地址、源PCT端口和目标TCP端口并利用这些值在CMT 725中查找匹配项。 Pre-analysis unit 735 extracts the destination IP address from the frame, the source IP address, source port and destination TCP port PCT and use these values to find a match in the CMT 725. 匹配是指连接已经被委托。 Match is the connection has been commissioned. 如果步骤809中,预解析单元735确定该帧未在委托连接上被接收到,那么在步骤813中该帧的遗留处理完成。 If step 809, the pre-analysis unit 735 determines that the frame is not connected to the commission is received, then in step 813 to complete the frame of legacy processing. 预解析单元735借助解析单元740通过输出该帧到缓冲区上载单元745和指示该帧未在委托连接上接收来开始进行遗留处理。 Pre-analysis unit 735 by means of resolving unit 740 outputs the frame buffer to the loading unit 745 and indicating that the frame is not connected to the commission to start receiving the legacy process. 缓冲区上载单元74通过DMA引擎310上载至少被部分解析的帧到驱动程序存储空间235并通知带有遗留处理的驱动程序255,如后详述。 Upload unit 74 through the buffer contained at least partially parsed frame memory 235 to the driver and signals the driver with the left handle 255, as described in detail later on DMA engine 310.

在步骤809中,预解析单元735确定该帧在委托连接上被接收,然后在步骤811预解析单元735输出部分处理帧到解析单元740。 In step 809, the pre-analysis unit 735 determines that the frame is received on a commissioned connection, then in step 811, the output unit 735 pre-analytical partially processed frame to analysis means 740. 步骤811中解析单元740解析部分处理的帧,产生解析帧并确定是否存在特殊事例,例如,IP或TCP选择、无效标记等,如果是这样的,步骤812中解析单元输出解析帧到缓冲区上载单元745,指明存在特殊事例。 Frame analysis unit 740 in step 811 to resolve part of the processing, producing analytic frame and determine whether the particular case of the presence of, for example, IP or TCP options, invalid tag, etc., and if so, the step 812 resolution unit output to resolve a frame buffer load unit 745, indicating there is a special case. 步骤812中,缓冲区上载单元745在CBT 720的项中设置“sync request”标记对应委托连接并刷新对应委托连接的CBT 715中的项中的任何用户缓冲区描述符。 In step 812, the buffer loading unit 745 is set "sync request" mark corresponds to entrust connection and refresh the CBT 715 corresponding to entrust connected to any user buffer descriptor entry in CBT 720. 步骤813中,缓冲区上载单元745通过DMA引擎310上载解析帧到驱动程序存储空间235并通知驱动程序255遗留处理请求。 Step 813, the carrier unit 745 through the buffer DMA engine 310 to the driver load analytical frame memory 235 and notifies the driver 255 legacy process the request. 步骤812中为委托连接设置“sync request”标记表明委托连接是使用遗留处理被处理的。 Step 812 delegate connection settings "sync request" flag indicates that the connection is using the legacy commission process to be treated for. 接收引擎360不接受委托连接的用户缓冲区描述符命令,直到sync request标记被未来的缓冲区张贴事件清除,后面将结合图9A进一步说明。 The engine does not accept the commission received 360 user connections buffer descriptor command until the next sync request flag is cleared buffer posted events later in connection with FIG. 9A further explanation.

如果在步骤811中解析单元740确定不存在特殊事例,那么在步骤815中解析单元740读出CDT 720中对应委托连接的项。 If the resolution unit 740 in step 811 determines the particular case does not exist, then the analytic reads the corresponding entry CDT 720 delegate units connected to 740 in step 815. 步骤817中解析单元740和缓冲区上载单元745确定哪个存储于通知单元750中的通知标记被设置(如有),后面将结合图9A具体说明。 Step 817 contained unit 745 analytically determine which storage unit 740 and the buffer unit 750 to notify the notification flag is set (if any), the latter in conjunction with Figure 9A specific instructions. 步骤819中解析单元740确定由TCP帧中提取的序列号(SN)是否不等于存储于CDT 720中对应委托连接的项中的序列号(DCT SN),如果是这样,步骤821中解析单元740请求失序恢复。 Step 819 determines the parsing unit 740 frames extracted from the TCP sequence number (SN) is stored in CDT 720 is not equal to the corresponding item in the sequence number (DCT SN) commissioned connection, and if so, step 821 resolution unit 740 request disorder recovery. 后面将结合图8B进一步说明失序恢复。 Later further described in conjunction with FIG. 8B disorder recovery.

如果在步骤819中解析单元740确定SN等于DCT SN,那么在步骤823中解析单元740输出解析帧到缓冲区上载单元745。 If, in step 819 determines the parsing unit 740 SN equal DCT SN, then in step 823, the output unit 740 resolves to resolve a frame-mounted unit 745 buffers. 步骤823中缓冲区上载单元745读出CBT 715中对应委托连接的项。 Buffer Upload Unit 745 reads the entry step 823 in CBT 715 corresponding to entrust connection. 步骤825中,缓冲区上载单元745确定用户缓冲区是否可用。 In step 825, the buffer loading unit 745 determines that the user buffer is available. 术语“用户缓冲区”与术语“HOT缓冲区”是可互换的。 The term "user buffer" with the term "HOT buffers" are interchangeable. 如果HOT缓冲区不可用,那么步骤827中缓冲区上载单元745或者等待HOT缓冲区变为可用或通过DMA引擎310上载解析TCP帧到遗留缓冲区,后面将结合图8C对此进一步说明。 HOT buffer if not available, then step 827 is contained in the buffer unit 745 HOT or wait for the buffer to become available or by the DMA engine 310 contained resolve to legacy TCP frame buffer, this later in connection with FIG. 8C further instructions.

如果在步骤825中缓冲区上载单元745确定HOT缓冲区可用,那么在步骤829中缓冲区上载单元745完成解析帧的处理并上载至少有效载荷数据的一部分到HOT缓冲区,后面将结合图8D对此进一步说明。 If the carrier unit 745 determines HOT buffers available in the buffer in step 825, then at step 829 buffer load unit 745 completes processing analytic frame and upload at least a portion of the data payload to HOT buffer for later in connection with Figure 8D This further instructions. 在步骤831中,在上载有效载荷数据的部分到HOT缓冲区后,缓冲区上载单元745确定是否在解析帧中存在额外的有效载荷数据,如果是这样,重复步骤825和829。 In step 831, the portion of payload data uploaded to the HOT buffer, the load on the buffer unit 745 determines whether there is extra payload data in the analysis frame, and if so, repeat steps 825 and 829. 如果在步骤831中缓冲区上载单元745确定所有的有效载荷数据都已经被上载到一个或多个HOT缓冲区了,那么在步骤833中缓冲区上载单元确定解析帧中TCP“压栈”标记是否已经被断言。 If the carrier unit 745 is determined at step 831 buffer all the payload data has been uploaded to one or more of the HOT buffers, then in step 833 determines the buffer upload unit frame resolve TCP "push" flag is It has been asserted. 如果在步骤833中缓冲区上载单元745确定TCP“压栈”标记被断言,缓冲区上载单元745为CBT715中对应委托连接的项设置“sync request”标记并刷新所有CBT 715中对应委托连接的项中的缓冲区描述符。 If the buffer is uploaded unit 745 determines TCP "push" flag is asserted at step 833, the buffer unit 745 to load the corresponding delegate entry CBT715 connection settings "sync request" flag and refresh the entries of all CBT 715 corresponding commission connected The buffer descriptor. 如果在步骤833中缓冲区上载单元745确定TCP“压栈”标记没有被断言,那么接收引擎360进行步骤801。 If the carrier unit 745 determines TCP "push" on the buffer in step 833 flag is not asserted, the receiver engine 360 proceeds to step 801.

图8B是根据本发明一个或几个方面的处理失序帧的方法的简图。 8B is a diagram in accordance with one or disorder frame processing method aspects of the present invention. 本领域技术人员所容易理解,图8B中的方法步骤构成了执行图8A的步骤821的一种方式。 The skilled artisan readily appreciate that the method steps in Figure 8B steps constitute a way of FIG. 8A 821. 失序恢复处理包括SN大于存储在DCT SN中的值所预期的(例如,由一个或多个丢失帧造成的)情况或SN小于DCT SN(例如,由于传输超时或丢失ACK造成的帧的重复传送)的情况。 SN disorder restoring processing includes values stored in the DCT SN is greater than the expected (e.g., by one or more lost frames due) or SN smaller than the case of DCT SN (e.g., due to transmission timeout or lost frames due to the repeatedly transmitted ACK ) situation. 当SN大于DCT SN时,接收引擎360执行“快速恢复”(fast recovery)算法,包括传输最多3个连续相同构造的ACK(每个都对应按顺序接收到的最后帧),使为委托连接的用户缓冲区失效(刷新),并上载整个帧到一个或多个遗留缓冲区。 When SN is greater than the DCT SN, received engine 360 to perform "quick recovery" (fast recovery) algorithms, including transport up to three consecutive identical structure of ACK (each pair should be sequentially received last frame), so that the delegate connection user buffer failure (refresh), and upload the entire frame to one or more legacy buffers. 当SN小于DCT SN时,接收引擎360为帧传送ACK,为委托连接无效用户缓冲区,并上载整个帧到一个或多个遗留缓冲区。 When SN is less than DCT SN, received 360 engine for the frame transmission ACK, the delegate connection invalid user buffer, and upload the entire frame to one or more legacy buffers.

在步骤830中解析单元740确定从帧中提取的SN是否小于由图8A的步骤815中的CDT 720读取的DCT SN,如果是这样,在步骤832中解析单元740向传送引擎320发出信号,生成帧的ACK。 In step 830 determines the parsing unit 740 SN extracted from the frame is smaller than the step 815 of FIG. 8A in the CDT 720 reads DCT SN, and if so, in step 832 the parsing unit 740 to transmit engine 320 signals, generated ACK frame. 步骤832中,解析单元740还输出解析帧到缓冲区上载单元745并执行步骤838。 Step 832, the parsing unit 740 also outputs the parsed frame buffer 745 to the carrier unit and the step 838. 如果在步骤830中解析740确定从帧中提取的SN不小于DCT SN,那么步骤834中,解析单元740确定在步骤815中由CDT 720读出的“Fast ACK”值小于3,如果是这样,解析单元740给传送引擎320发信号,为步骤836中的解析帧生成ACK。 If the resolution is determined in step 830 740 SN extracted from the frame is not less than DCT SN, then in step 834, the parsing unit 740 determines in step 815 is read out by the CDT 720 "Fast ACK" value of less than 3, and if so, parsing unit 740 to transmit engine 320 signals, generates an ACK to step 836 resolution frames. 还有在步骤836中,解析单元740输出解析帧到缓冲上载单元745并指示缓冲区上载单元745将存储于CDT 720中的“Fast ACK”递增。 Also in step 836, the output parsing unit 740 to the frame buffer to resolve the loading unit 745 and the instruction buffer 745 load unit stored in the CDT 720 "Fast ACK" increments.

步骤838中缓冲区上载单元745刷新任何对应存储于CBT 715中的委托连接的HOT缓冲区。 Buffer Upload Unit 838 745 HOT refresh any correspondence stored in the buffer 715 in the CBT delegate connection. 步骤840中缓冲区上载单元745设置CBT 715中对应委托连接的“sync request”标记并有选择地为委托连接更新连接存储于CDT 720中的状态数据,例如,Fast ACK、DCT SN、ACK号等。 Step upload buffer setting unit 745 corresponding CBT 715 commissioned connected "sync request" tag and selectively connected to entrust to update the connection stored in the CDT 720 state data, for example, Fast ACK, DCT SN, ACK numbers, etc. 840 . 步骤813中,缓冲区上载单元745通过DMA引擎310上载解析TCP帧到驱动程序存储空间235并通知驱动程序255遗留处理请求。 Step 813, the carrier unit 745 through the buffer DMA engine 310 contained resolve TCP frame memory 235 to the driver and inform the driver 255 legacy process the request.

图8C是根据本发明一个或几个方面的等待用户缓冲区的方法的简图。 8C is a diagram based on a user buffer method or wait a few aspects of the present invention. 本领域技术人员所容易理解,图8C中的方法步骤构成了执行图8A的步骤827的一种方式。 The skilled artisan readily appreciate that the method steps in FIG. 8C steps constitute a way of FIG. 8A 827. 接收引擎360等待用户缓冲区而不是上载解析帧或部分解析帧到遗留缓冲区,因为数据上载用户缓冲区不需要通过TCP堆栈由驱动程序存储空间235拷贝到应用程序存储空间227。 Engine 360 receives the buffer instead of waiting for the user to upload or partially resolving analytical frame buffer frame to the left, because the data does not need to upload the user buffer by the driver via TCP stack memory 235 are copied to the application storage space 227. 还有,一但使用遗留缓冲区处理委托连接,TCP堆栈215必需响应“sync request”标记,导致在委托连接的解析帧或部分解析帧会被接收引擎360上载到用户缓冲区之前,“sync request”标记被清空。 Before there is a legacy but use buffer handling commissioned connection, TCP stack 215 necessary response "sync request" mark, resulting in analytic frame connected to or part of the commission to resolve the frame will be uploaded to the user buffer 360 receives the engine, "sync request "flag is cleared.

步骤850中,缓冲区上载单元745确定图8A中的步骤823中读出的对应委托连接的项中是否设置了“request buffer”。 Step 850, the carrier unit 745 determines the buffer corresponds to step 823 of FIG. 8A delegate read out the connection entry is set up "request buffer". 如果“requestbuffer”标记没有被设置那么步骤852中缓冲区上载单元745设置CBT 715中对应委托连接的项中的请求缓冲区标记并初始化缓冲区请求计时器到一个存储在寄存器中的值。 If "requestbuffer" flag is not set then step 852 Buffer Upload Unit 745 set CBT 715 corresponding delegate entry in the connection request buffer mark and initializes the buffer request timer to a value stored in the register. 在另一实施例中缓冲区请求计时器被初始化到一个存储在CBT 715中对应委托连接的项中值。 In another embodiment, the buffer request timer is initialized to a value stored in the corresponding entry in CBT 715 commissioned in connection. 如果在步骤850中,缓冲区上载单元745确定“request buffer”标记被设置,那么缓冲区上载单元745进入步骤862。 If, at step 850, the buffer loading unit 745 determines "request buffer" flag is set, then the buffer loading unit 745 proceeds to step 862.

步骤854中缓冲区上载单元745上载一定数量的由“startup limit”(启动限制)值通过DMA引擎310确定到遗留缓冲区的字节。 Step Buffer Upload Unit 745 854 contained a number of the "startup limit" (Start limit) value is determined by the DMA engine 310 to a legacy buffer bytes. 该启动限制值由TCP堆栈215初始化,被存储于CDT 720中对应委托连接的项中。 The start limit values initialized by the TCP stack 215, is stored in the corresponding entry in CDT 720 delegate connection. 步骤856中,缓冲区上载单元745设置“request buffer”标记存储于通知单元750中并且通知单元750通过通知环向驱动程序255发送通知。 Step 856, the carrier unit 745 is provided on the buffer "request buffer" flag storage unit 750 and notification notification unit 750 through the notification ring 255 to the driver sends a notification. 该通知包括与相关遗留缓冲区描述符的标签字段中使用的标签值相同的标签值。 The notification includes the value of the same label label label field value associated with legacy buffer descriptor in use. 通知单元750在发送通知后清空通知标记。 Notification unit 750 sends a notification after notification tag empty. 采用本领域技术人员公知的技术以确保驱动程序255收到对应通知前解析帧被上载到驱动程序存储空间235。 Using well-known to those skilled in the art to ensure that pre-parsed frame driver 255 receives the corresponding notification is uploaded to the driver memory 235.

步骤858中缓冲区上载单元745确定指示接收FIFO 730的“fullness”值是否大于限定值,例如,“高水位”标志,并且,如果是这样缓冲区上载单元745进入步骤862。 Buffer Upload Unit 745 determines in step 858 to receive FIFO 730 indicates the "fullness" value is greater than the limit value, for example, the "high water" mark, and, if it is on such a buffer loading unit 745 proceeds to step 862. 在一个实施例中,高水位值是固定的。 In one embodiment, the high water level is fixed. 在另一实施例中,高水位值存储于驱动程序255编程的寄存器中。 In another embodiment, the high level value is stored in the driver 255 program registers. 如果在步骤858中,缓冲区上载单元745确定指示接收FIFO 730的“fullness”的值不大于“高水位”值,那么在步骤860中,缓冲区上载单元745确定缓冲区请求计时器已经期满,那么在步骤862中缓冲区上载单元745设置存储于CBT 715的“sync request”标记和存储于通知单元750中的遗留标记。 If, at step 858, the carrier unit 745 determines indicating the reception FIFO 730 of "fullness" is not greater than the "high level" value, then in step 860, the buffer loading unit 745 determines the buffer request timer has expired on the buffer , then the loading unit 745 is set at step 862 is stored in the buffer in CBT 715 of "sync request" mark and the memory unit 750 to notify the legacy tag. 步骤813中,缓冲区单元745通过DMA引擎410上载解析帧到到驱动程序255,通知单元750清空通知标记,并且接收引擎360返回图8A中的步骤801。 In step 813, the buffer unit 745 through the DMA engine to load the driver to resolve frame 255, the notification unit 750 notify the empty tag 410, and receives the engine 360 returns step 801 in FIG. 8A. 通知包括由相关遗留缓冲区描述符的标签字段中使用的标签值相同的标签值。 Notice including labeling the value used by the relevant label field legacy buffer descriptor in the same tag value. 采用本领域技术人员公知的技术以确保驱动程序255收到对应通知前解析帧被上载到驱动程序存储空间235。 Using well-known to those skilled in the art to ensure that pre-parsed frame driver 255 receives the corresponding notification is uploaded to the driver memory 235.

如果步骤860中缓冲区上载单元745确定缓冲区请求计时器没有期满,步骤864中缓冲区上载单元745确定用户缓冲区是否可用,即,如果应用程序已经通过命令环张贴了用户缓冲区。 Buffer Upload Unit 745 determines if step 860 buffer request timer has not expired, in step 864 Buffer Upload Unit 745 determines the user buffer is available, that is, if the application has been posted to the user via the command ring buffer. 如果用户缓冲区不可用,缓冲区上载单元745完成解析帧的处理并在步骤829中上载有效载荷到用户缓冲,如后面对图8D中进一步详述。 If the user buffer is not available, the buffer loading unit 745 completes processing analytic frame and upload the payload to the user buffer, as will be further described in detail with respect to FIG. 8D in step 829. 步骤829后,接收引擎360回到图8A的步骤831中。 Step 829, the receiving engine 360 back to step 831 of FIG. 8A.

图8D是根据本发明一个或几个方面的完成用户缓冲区处理的方法的简图。 8D is a diagram of the method according to the invention one or more aspects of the completion of the processing of the user buffer. 本领域技术人员所容易理解,图8D中的方法步骤构成了执行图8A的步骤829的一种方式。 The skilled artisan readily appreciate that the method steps in FIG. 8D steps constitute a way of FIG. 8A 829. 当HOT单元250接收进入数据时,应该将ACK发送到发送者(目标连接),以确保指示应该有多少数据送到HOT单元250接收窗口保持足够的打开宽度以允许接收路径的饱和。 When HOT Unit 250 receives the incoming data, it should send an ACK to the sender (connection target), to ensure that should indicate how much data is sent to HOT Unit 250 receives the window remains open width sufficient to allow saturation of the receive path. 当接收到的帧没有及时被承认时,接收窗口可能需要被关闭,否则发送者内的重发计时器可能会期满,导致发送者重发一个或多个帧。 When the received frame is not to be recognized in time, the receive window may need to be closed, otherwise the sender within the retransmission timer expires may lead sender retransmission of one or more frames.

除对发送者传送ACK之外,驱动程序255在帧被基于序列号和计时器等被HOT单元250接收到时被通知。 In addition to transmitting ACK to the sender, the driver 255 is when the serial number and timers are received HOT Unit 250 to be notified based on the frame. CDT 720通过由接收的TCP有效载荷尺寸增加DCT SN被更新,对未承认帧的计数递增,并且向接收到的帧提取的最近接收到的TCP时戳被存储到为了委托连接的CDT 720,如果TCP时戳选择被适合地包括在接收到的帧中。 CDT 720 received by the TCP payload size increase DCT SN is updated to not recognize the frame count is incremented, and the received frames extracted recently received TCP time stamp is stored in the connection to entrust CDT 720, if Select the TCP timestamp when suitably included in the received frames.

步骤876中解析单元740确定未承认帧的计数是否大于未承认帧的限制值,如果是这样,进入步骤880。 Parsing unit 740 in step 876 determines whether or not to admit the frame count is greater than the limit value unacknowledged frame, and if so, proceeds to step 880. 未承认帧限制值为连接存储于CDT 720中并且由TCP堆栈215确定。 No limit is connected acknowledge frame stored in CDT 720 and 215 is determined by the TCP stack. 在另一实施例中,解析单元740确定委托连接上接收到的未承认帧的计数是否大于或等于步骤876中的未承认帧限定值。 In another embodiment, the analysis unit 740 determines entrust connection received unacknowledged frame count is greater than or equal to 876 frames defined step value is not recognized. 在另一实施例中,缓冲区上载单元745确定未承认帧的计数是否大于未承认帧的限定值。 In another embodiment, the carrier unit on the buffer 745 to determine whether or not to admit the frame count is greater than the limit value unacknowledged frame.

如果在步骤876中解析单元740确定未承认帧的计数小于或等于未承认帧限定值,那么解析单元740确定在步骤878中传送计时器是否已经期满。 If the resolution unit 740 in step 876 determines not to admit the frame count is less than or equal to the frame defined value is not acknowledged, then the analysis unit 740 determines whether the transmission timer has expired in step 878. 传送ACK计时器被配置为在发送者的重传送计时器期满前期满,目的是将由于发送者未能及时接收ACK最小化不必要的重新传送。 ACK transmit timer is configured to expire before the sender's heavy transmission timer expires, the purpose is to due to the failure to receive the ACK sender minimizing unnecessary re-transmission. 在一个实施例中,传送ACK计时器的期限对于所有委托连接是一个常数。 In one embodiment, the transfer deadline for ACK timer is a constant connection for all delegates. 在另一个实施例中,传送ACK计时器的期限可由TCP堆栈为每个委托连接的期限编程。 Term In another embodiment, the transmission ACK timer can be programmed as a term TCP stack connected to each delegate.

如果在步骤878中解析单元740确定传送ACK计时器已经期满,那么解析单元740向传送引擎320发信号,为步骤880中的解析帧生成ACK并且传送引擎320输出解析帧到缓冲区上载单元745。 If 740 is determined in step 878 to parse unit transmits ACK timer has expired, then the analysis unit 740 to transmit engine 320 signals the resolve to step 880 in frame generation and delivery engine 320 outputs ACK frame to resolve the buffer load unit 745 . 步骤882中,缓冲区上载单元745通过将其设置零将更新为连接存储于CDT 720的项中的未承认帧计数并更新“last ACK sent”值到由帧提取的SN值。 Step 882, the carrier unit on the buffer 745 by setting it to zero will be updated to connect items stored in CDT 720 in the unacknowledged frame count and update the "last ACK sent" value to the SN value extracted by the frame. 缓冲区上载单元745还更新连接状态数据如递增ACK号和递增序列号等,并在进入步骤886前重置传送ACK计时器。 Upload a buffer unit 745 also updates connection state data such as increasing number ACK and increasing sequence number, etc., and proceeds to step 886 to reset the transfer before ACK timer.

如果在步骤878中缓冲区上载单元745确定传送ACK计时器没有期满,那么缓冲区上载单元745更新步骤884中在CDT 720中对应委托连接的项,例如,通过更新未承认帧的计数等。 If in step 878 Buffer Upload Unit 745 determines transmit ACK timer has not expired, then the buffer loading unit 884 in step 745 to update the corresponding entry in CDT 720 commissioned connected, for example, by updating the count of the frames and the like are not recognized.

步骤886中有效载荷数据被缓冲区上载单元745通过DMA引擎310上载到应用程序存储空间227中的HOT缓冲区TCP。 Step 886 payload data is uploaded on the buffer unit 745 by DMA engine 310 uploaded application storage space 227 HOT buffer TCP. 步骤888中通知单元750确定是否设置了任何通知标记,并且,如果是这样,在步骤890中,通知单元750通过通知环发送通知到驱动程序255。 Step 888 determines whether the notification unit 750 mark set any notice, and, if so, in step 890, the notification unit 750 sends a notification through the notification ring to the driver 255. 通知单元750构造事件通知描述符,包括通知标记、传送窗口尺寸、SN、最后的ACK号、TCP时戳值、来自遗留描述符的标签值等等。 Notification unit 750 configured event notification descriptor, including notification mark, transmit window size, SN, the last ACK number, TCP timestamp value, the tag value from legacy descriptors like. 通知单元750在发送通知后清空通知标记。 Notification unit 750 sends a notification after notification tag empty.

通知单元750输出事件通知描述符到DMA引擎310,该DMA引擎310将事件通知描述符传送给存储中驱动程序存储空间235内的卸载事件通知环。 Notification unit 750 outputs event notification descriptor to the DMA engine 310, the DMA engine 310 event notification descriptor conveys to store driver storage space inside the unload event notification ring 235. 卸载事件通知环被组织为毗邻内存块形式的环形队列。 Unload event notification ring adjacent to the memory block is organized as a form of circular queue. HOT单元250写入卸载事件通知环并且驱动程序255读出卸载事件通知环。 HOT unit 250 writes unload event notification ring and the driver 255 reads unload event notification ring. TCP堆栈215可使用由卸载事件通知环读出的数据更新CT 245,从而保持CT 245和DCT 350之间的一致。 TCP stack 215 may be used by the unload event notification ring reads data update CT 245, CT 245 and to maintain consistency between the DCT 350. TCP堆栈215还可通过上载CDT 715中的项到一个或多个遗留缓冲区保持CT 245和DCT 350之间的一致步骤890之后,接收引擎360回到步骤801处理其它有效帧。 TCP Stack 215 can also upload the item CDT 715 to one or more legacy buffers consistent steps between CT 245 and DCT 350 890 after receiving engine 360 returns to step 801 to handle other valid frame. 如果在步骤888中,通知单元750确定一个或多个通知标记不被设置,那么接收引擎360回到步骤801处理另一个有效帧。 If, at step 888, the notification unit 750 determines one or more notification flag is not set, then returns to step 801 to receive engine 360 to process another valid frame.

图9A是根据本发明一个或几个方面的确定通知的方法的简图。 9A is a schematic diagram of the method according to the present invention to determine the notice to one or several aspects of. 本领域技术人员所容易理解,图9A中的方法步骤构成了执行图8A的步骤817的一种方式。 The skilled artisan readily appreciate that the method steps in FIG. 9A steps constitute a way of FIG. 8A 817. 可使用阈值控制HOT单元250接收的到驱动程序255或TCP堆栈215的通信序列号频率,而非中断CPU 110以通过驱动程序255通知TCP堆栈215每个帧都已经被目标接收了。 You can use HOT threshold control unit 250 receives the driver to communicate serial number 255 or 215 TCP stack frequency, rather than interrupt CPU 110 through the driver 255 to notify TCP Stack 215 each frame has been received by the target. 类似地,ACK阈值或特定ACK号可被用于控制HOT单元250接收的到驱动程序255的通信,而非中断CPU 110通知驱动程序255每个传送帧的ACK都已经被接收了。 Similarly, ACK ACK threshold or a particular number can be used to control the HOT unit 250 receives the communication driver 255, and not interrupt CPU 110 signals the driver 255 of each of the ACK transmission frame have been received.

帧处理期间减少中断CPU 110的频率使CPU 110能够解放出来用于执行其他应用程序,典型的是通过CPU 110执行的应用程序指令的数量从而提高这些应用程序的性能。 Reduce the frequency of interrupt CPU 110 allows CPU 110 can be freed to perform other applications during the frame processing, typically through the application CPU 110 the number of instructions executed to improve the performance of these applications. 阈值允许在确定中断间的平衡时一定的灵活性,以通知TCP堆栈215接收连接状态并为委托连接传送连接状态。 Threshold allows determining when the balance between interrupts some flexibility to notice TCP stack 215 receives the connection state and to entrust connectionless transport connection status.

步骤901中解析单元740确定传送窗口是否自右收缩。 Step 901 resolution unit 740 determines whether the transmission window from the right contraction. 当由帧提取的ACK号与由帧中提取的接收窗口尺寸的总和小于为委托连接存储在CDT 720中的最大传输窗口尺寸时,解析单元740确定传送窗口自右收缩。 When the sum of the receive window size extracted by the frame number and ACK extracted from the frame is less than the commission attached storage maximum transmission window size in the CDT 720, the analysis unit 740 determines the transmission window from the right contraction. 缓冲区上载单元745使用从帧中提取的传送窗口尺寸更新为委托连接存储于CDT720的最大传送窗口尺寸。 Upload a buffer unit 745 extracted from the frame transmission window size is updated to the commission attached storage to CDT720 maximum transfer window size. 如果在步骤901中,解析单元740确定传送窗口自右收缩,那么在步骤903中,解析单元740在通知单元750中设定传送窗口通知标记。 If in step 901, the parsing unit 740 determines transmission window from right to shrink, then in step 903, the parsing unit 740 is set in the transmit window notification tag notification unit 750.

步骤905中,解析单元740确定重复ACK(在一个或多个接收帧中相同ACK号)已经被接收,指示出目标被请求重新传送一帧或多帧。 In step 905, the parsing unit 740 determines duplicate ACK (same as in one or more frames received ACK number) has been received, indicating that the target is requesting retransmission of one or more frames. 如果在步骤905中,解析单元740确定重复ACK已经被接收,那么在步骤903中解析单元740在通知单元750中设置“重复ACK通知”标记。 If in step 905, the parsing unit 740 determines duplicate ACK has been received, then in step 903 the parsing unit 740 is set in the notification unit 750 "Duplicate ACK notice" tag.

步骤907中,解析单元740确定SN是否大于阈值,例如,限定值、指示递增序列号的阈值。 In step 907, the parsing unit 740 determines whether the SN is greater than a threshold value, for example, the limit value, the threshold value indicating the sequence number is incremented. 递增序列号在委托连接被设置时由TCP堆栈215初始化并被缓冲区上载单元745在每当向驱动程序255发送通知时被更新。 The serial number is incremented when the commission was set up TCP stack 215 connection initialization and loading unit 745 whenever the notification is sent to the driver 255 is updated on the buffer is. 在一个实施例中,递增序列号通过将递增序列号增加一个序列增加值而完成更新。 In one embodiment, the serial number is incremented by incrementing serial number and complete the update adds a sequence value added. 序列增加值可以是固定的或被TCP堆栈215编程的。 Sequences added value may be fixed or programmable TCP stack 215. 如果步骤907中,解析单元740确定SN大于阈值,那么序列号阈值标记在步骤903中设定。 If in step 907, the parsing unit 740 determines SN greater than the threshold value, then the sequence number flag setting a threshold value in step 903.

步骤909中,解析单元740确定存储于CDT 720中的最后的ACK号(接收到的委托连接的最高级ACK号)是否大于一个限定值,该限定值指示递增ACK号。 Step 909, the parsing unit 740 is stored in CDT 720 determines the final ACK number (ACK received the highest number of delegate connected) is greater than a limit value, the limit value indicates increasing number ACK. 当委托连接被设定时ACK号被TCP堆栈215初始化并被缓冲区上载单元745在接收到ACK时即时更新。 When the connection is set to No. ACK commissioned by the TCP stack mounted unit 215 is initialized by the buffer 745 when receiving the ACK instant updates. 递增ACK号在委托连接被设定时被TCP堆栈215初始化并被缓冲区上载单元745在通知被送到TCP堆栈215时即时的更新。 ACK number is incremented when the connection is set to be commissioned 215 initialize and load the TCP stack buffer unit 745 in the notification is sent to the TCP stack 215 instant updates. 在一个实施例中,递增ACK号通过将递增ACK号增加一个ACK增加值而完成更新。 In one embodiment, the incremental ACK number increased by incrementing a number ACK ACK increase value to complete the update. ACK增加值可以是固定的或被TCP堆栈215编程的。 ACK increase value may be fixed or programmable TCP stack 215.

步骤909中,解析单元740还可确定存储于CDT 720中的最后ACK号是否大于另一限定值,该另一限定值指示TCP堆栈215编程的特定ACK号。 Step 909, the parsing unit 740 is stored in CDT 720 may also determine the final ACK number is greater than another limit, indicating that other TCP stack 215 defines a specific ACK number programmed. 如果在步骤909中,解析单元740确定最后ACK号大于限定值(指示递增ACK号)或另一限定值(指示特定ACK号),然后在步骤903中设置一个ACK阈值。 If, at step 909, the analysis unit 740 to determine the final ACK number is greater than the limit value (indicating ACK incremented number) or other defined value (indicating a specific ACK number), then set a threshold value ACK in step 903.

步骤911中,解析单元740确定一个或多个计时器是否期满。 In step 911, the parsing unit 740 determines whether one or more timer expires. 接收ACK计时器被配置为在TCP堆栈215重传送计时器期满前期满,这是为了尽量减少不必要的重传送。 Receiving ACK timer is configured to expire before the TCP stack 215 heavy transmission timer expires, which is to minimize unnecessary re-transmission. 存储于寄存器中为了委托连接的接收ACK计时器的期限可被TCP堆栈215编程并可为委托连接基于往返时间。 Stored in the register in order to entrust to receive ACK timer duration can be connected to the TCP stack 215 can be programmed based on round-trip time for the delegation connector. 接收存储于寄存器中的委托连接的SN计时器的期限可被TCP堆栈215编程。 Receiving timer register is stored in the SN delegate period connected TCP stack 215 can be programmed. 在另一实施例中,接收ACK计时器和接收SN计时器的期限被存储在CMT 725中对应委托连接的项中。 In another embodiment, the receiving ACK timer and receive SN timer period by the corresponding commission items connected stored in the CMT 725.

如果在步骤911中,解析单元740确定计时器已经期满,那么在步骤903中更新一个对应的通知标记并且解析单元740进入步骤913。 If, at step 911, the analysis unit 740 determines that the timer has expired, then a corresponding update notification tag in step 903 and the analysis unit 740 proceeds to step 913. 例如,如接收SN计时器期满时,“sequence number threshold”(序列号阈值)标记被设置并且在接收ACK计时器期满时,“ACK threshold”标记被设置。 For example, when receiving SN timer expires, "sequence number threshold" (serial number threshold) flag is set and when receiving ACK timer expires, "ACK threshold" flag is set. 如果在步骤911中,接收引擎360确定没有计时器期满,那么解析单元740在步骤913中输出解析帧到缓冲区上载单元745并且缓冲区上载单元745确定压栈标记是否被从被断方的帧中提取。 If, at step 911, the reception engine 360 determines that no timer expires, then the analysis unit 740 outputs the frame to resolve the buffer loading unit 745 in step 913 and the buffer load unit 745 determines whether the push marks from the off side frame extraction. 如果压栈标记被断言,那么压栈通知标记在步骤903中被设置并且缓冲区上载单元745进入图8A的步骤819。 If the push flag is asserted, then push notification flag is set in step 903 and the buffer 745 steps into the loading unit 819 of FIG. 8A.

图9B是根据本发明一个或几个方面的使用户缓冲区跟随遗留处理同步的方法步骤的简图。 9B is a schematic synchronization buffer fill legacy processing method steps according to one or more aspects of the present invention allows a user. 如前述,当解析单元740检测到帧具有大于预期序列号DCT SN的序列号时会利用遗留缓冲区处理委托连接。 As described above, when the parsing unit 740 detects the frame having more than the expected sequence number DCT SN will use the serial number to connect legacy buffer handling delegate. 例如,当一个或多个帧由于传送错误而丢失时。 For example, when one or more frames lost due to the transmission error. 通知单元750为连接请求遗留处理并且缓冲区上载单元745将为了连接的HOT缓冲区无效和。 Notification unit 750 of the connection request processing and legacy on the buffer loading unit 745 will be connected to the buffer is invalid and HOT. 因为存储于CDT 720的SN没有改变,所有后续接收到的帧在发生重传送之前都会被认为离序。 Because stored in CDT SN 720 has not changed, all subsequent received frames before the occurrence of major transfer will be considered from the order.

在接收到重新传送的帧之前,缓冲区上传单元745上载为连接接收到的帧到遗留缓冲器。 Prior to receiving the re-transmitted frame, the buffer unit 745 to upload payload of the received frame is connected to a legacy buffer. TCP堆栈215从遗留缓冲区将有效载荷数据由遗留缓冲区拷贝到用户缓冲区。 TCP stack legacy buffers 215 from the payload data is copied from the legacy buffer to the user buffer. 当重传送的帧被上载到遗留缓冲区时,TCP堆栈215为所有按顺序接收到的帧发送ACK。 When the frame is re-transmitted is uploaded to the legacy buffer, TCP stack 215 for all received frames in order to send ACK. 传送引擎320为连接更新存储在CDT 720中的DCT SN。 Transfer engine 320 to connect to the update stored in CDT 720 in the DCT SN. 当序列内所有重新传送帧已经被上载到遗留缓冲区时,TCP堆栈215在发送ACK前张贴HOT缓冲区。 When all the re-transmission frame within the sequence has been uploaded to the legacy buffer, TCP stack 215 before sending ACK posted HOT buffer. 张贴HOT缓冲区使缓冲区上载单元745利用HOT缓冲区在不要求用户缓冲区的情况下为连接恢复处理进入帧。 Post HOT buffer contained unit makes use of the buffer 745 HOT buffer without requiring the user buffer connection recovery process into the case frame.

在步骤930中,CMD单元710通过DMA引擎310接收来自命令环的PRB命令。 In step 930, CMD unit 710 by DMA engine 310 receives commands from the command ring PRB. 该PRB命令包括在其它字段中对应连接的项的DCT索引和同步位。 The PRB command includes DCT indexes, and synchronization bit entries in other fields in the corresponding connection. 步骤932中,CMD单元710利用索引读出CBT 715。 Step 932, CMD unit 710 using the index read out CBT 715. 在步骤934中,CMD单元710确定CBT 715中读出的同步请求标记是否被设置,如果是这样,步骤936中CMD单元710确定从PRB命令中的同步位是否被设置。 In step 934, CMD Unit 710 determines the synchronization request CBT 715 reads out the flag is set, and if so, step 936 determines whether the CMD element 710 is provided from the synchronization bits PRB command. 如果在步骤934中CMD单元710确定ww CBT 715的项中读出的“sync request”标记没有被设置,那么CMD单元710在步骤938中清空CBT 715中的“syncrequest”标记,并进入步骤940。 If the item ww CBT 715 710 determines the readout "sync request" in step CMD unit 934 flags were not set, then the CMD unit 710 in step 938 in CBT cleared 715 "syncrequest" mark, and proceeds to step 940. 当“sync request”标记被清除后,连接可利用HOT缓冲区被处理。 When the "sync request" flag is cleared, the connection can use HOT buffer is processed. 如果在步骤936中,CMD单元710确定PRB命令中的同步位没有被设置,那么“sync request”不被清空,并且利用遗留处理继续处理连接。 If, in step 936, CMD Unit 710 determines the PRB command sync bit is not set, then the "sync request" is not empty, processing continues processing and the use of the legacy connection.

传送引擎320包括用于卸载来自TCP堆栈215的出站帧处理子单元。 Delivery engine 320 includes a frame for unloading outbound processing sub-unit 215 from the TCP stack. 例如,传送引擎320可被配置为执行TCP分段,计算TCP和Ipv4检查和,并编辑出站帧以背负ACK并包括委托连接的最近状态数据(由DCT 350读出)。 For example, the transfer engine 320 may be configured to perform TCP segmentation, calculation and Ipv4 TCP checksum and edit outbound frames to carry the ACK and including the commissioning of recent state data connection (by the DCT 350 reads). 驱动程序255或接收引擎360对DCT 350的更新可被包括在传送中,如下详述。 Driver 255 or receive updates on DCT 350 engine 360 may be included in the transfer, as detailed below.

图10A是根据本发明一个或几个方面的表示数据通过DMA引擎310由系统存储器130向HOT单元250传送所使用的格式的简图,例如,在“大发送”(large send)传送期间。 10A is a schematic view format by DMA engine 310 transferred from the system memory 130 to HOT Unit 250 used in accordance with data representing one or more aspects of the present invention, for example, in the "high transmission" (large send) during transfer. 字段1007是一个特定群体MAC报头,如以太网报头。 Field 1007 is a particular group MAC header, such as Ethernet header. 字段1005是原型报头,包括MAC报头、IP报头和TCP报头,其又包括SN、传送ACK号、TCP时戳等。 1005 is the prototype header fields, including MAC header, IP header and TCP header, which also includes SN, transmit ACK number, TCP timestamp and so on. 字段1010是传送数据并且仅次于TCP堆栈存储空间225中。 Field 1010 is transmitting data and storage space behind TCP stack 225. 字段1007、字段1005和字段101的组合存放于系统存储器130中。 Field 1007, a combination of field and field 101 1005 stored in the system memory 130.

图10B是根据本发明一个或几个方面的表示数据传送引擎320向传送接口330传送所使用的格式的简图。 10B is a diagram to interface 330 transmits the transmission format used in accordance with the present invention, one or more aspects of the engine 320 showing the data transfer. DMA引擎310由系统存储空间130读出图10A中所示的格式并且传送引擎320在启动分段后产生图10B中所示的格式并且字段1010的部分被包括在分段中,其中每个段都是一个帧。 DMA engine 310 by the format shown in system memory 130 is read out and transmit engine 320 in FIG. 10A after the start segment generated the format shown in FIG. 10B and the portion of the field 1010 is included in the segment, where each segment It is a frame. 在另一实施例中TCP堆栈215生成协议报头并将协议报头存储于TCP堆栈存储空间225中,并且HOT单元250由应用程序存储空间227中读出传送数据。 Example TCP stack 215 generates protocol headers and protocol header is stored in another embodiment in the TCP stack storage 225, and 227 HOT unit 250 reads out data transfer from the application storage space.

字段1015是一个IP报头,字段1020是一个TCP报头,字段1025是分段数据。 Field 1015 is an IP header field 1020 is a TCP header field 1025 is segmented data. 本领域技术人员应该理解,图10B中所示的格式是一个TCP兼容格式。 Those skilled in the art should appreciate that the format shown in FIG. 10B is a TCP-compatible format. TCP报头包括传送ACK号,传送SN等。 TCP header includes transmission ACK number, and other transfer SN. 分段数据是字段1010中传送数据的一部分。 Segment data field 1010 is part of the transmitted data. 字段1030是另一个TCP报头,包括可选的更新过的传送ACK号和更新过的传送SN等。 Field 1030 is another TCP header, including an optional updated transmission ACK number and updated transmission SN like. 更新过的传送SN被包括在前一段中的数据字节数增加,该前一段与最大帧尺寸和数据链、网络、和传输层报头尺寸的区别相同。 SN updated transmission of data bytes are included in the previous paragraph is increased, the difference between the previous period and maximum frame size and data link, network, and transport layer header size is the same. 字段1035是分段数据,该分段数据是字段1010中传输数据的另一部分。 Field 1035 is segmented data, the segment data is another part of the transmission data field 1010.

图11A是根据本发明的一个实施例,用于分割图10A中所示的一个出站帧为包括编辑出站帧的片断的流程图。 11A is an embodiment of the present invention, an outbound frames including an editing station frame pieces shown in the flowchart in FIG. 10A for segmentation. 在步骤1101中,DMA引擎310接收一个来自TCP堆栈的经由驱动255的传送描述符。 In step 1101, DMA engine 310 receives from the TCP stack via a drive 255 transfer descriptor. 该传送描述符包括一定位存储于系统存储器130的传送缓存物理地址,该传送描述符包括一原型报头和数据用于传送。 The transfer descriptor includes a positioning memory transfer buffer between the physical address in the system memory 130, which includes a prototype transfer descriptor header and data for transmission. 该传送描述符也波阿卡详细说明处理选项的控制位,一可选的DCT索引,控制位详细说明传送选项等。 The transfer descriptor also 波阿卡 detail control bit processing options, an optional DCT index, control bits delivery options described in detail like.

在步骤1103中,DMA引擎310读取传送缓存并输出该传送描述符和传送缓存到传送引擎320。 In step 1103, DMA engine 310 reads the output of the transmission buffer and transmission descriptor and transmission buffer to transfer engine 320. 在步骤1109中,传送引擎320计算一基于从该原型报头中提取的IP报头数据的IP校验和。 In step 1109, the transfer engine 320 calculates a prototype based on extracts from the IP header in the IP header checksum data. 在步骤1111中,传送引擎320确定用于传送的数据的一部分,包括在分割后的最大的片断(通过在连接建立中的目标来设定)中的传送缓存中。 In step 1111, the transmission portion of the engine 320 is determined for transmission of data, including the largest in the divided fragments (through the target in connection establishment to set) the transfer cache. 在步骤1113中,传送引擎320构建一用于传送的片断,其进一步的描述请参阅图11B。 In step 1113, transfer engine 320 for communicating a constructed fragment, and further description thereof See Figure 11B.

在步骤1131中,传送引擎320计算一基于从该原型报头中提取的TCP报头数据的TCP校验和、从DCT350中读取连接状态数据、以及在当前帧中的用于传送的数据的一部分。 In step 1131, the transmission based on engine 320 calculates an extract from the prototype header TCP header TCP checksum data read from DCT350 data connection status, as well as for data transfer part in the current frame. 经过计算的校验和被存储在该帧的TCP报头中。 After calculation of the checksum and TCP packets are stored in the frame header. 在步骤1133中,通过包括在该帧中数据大小和报头大小的差增加该传送SN,传送引擎320升级一存储在DCT350中的用于委托连接的传送SN。 In step 1133, by including in the frame difference data size and header size increases the transmission SN, transfer engine 320 transferred SN commissioned a memory upgrade for the connection of the DCT350. 在步骤1135中,传送引擎320输出一构建帧到传送接口330,包括一计算过的TCP校验和。 In step 1135, the transfer engine 320 outputs a frame constructed to transfer interface 330 includes a computing over the TCP checksum. 该传送接口330输出该构建帧。 The transport interface 330 outputs the constructed frame.

图11B是根据本发明的一个实施例,用于构建出站帧的方法步骤的流程图。 11B is a diagram in accordance with one embodiment of the present invention, a flowchart of method steps for constructing station frame. 本领域的熟练人员能够理解,图11B的方法步骤是图11A中步骤1113的延续。 Those skilled in the art will appreciate that the method steps of FIG. 11B is a continuation of the step 1113 in FIG. 11A. 使用存储在CDT720中的连接状态数据构建该出站帧;接下来,该出站帧包括最新的状态数据用于一个连接,例如一相应于最近接收到的帧的ACK数值。 Connection state data stored in CDT720 in the outbound frame construction; Next, the outbound frames including the latest state data for a connection, e.g., a value corresponding to the most recently received ACK frame. 在传送中,包括在分割中,如有可能,ACKs是“背负式”,也就是,包括在用于传送的帧输出而不是直到一帧被完全的分割并传送之后,等待输出离散的ACKs。 In the transfer, including the segmentation, if possible, ACKs is "piggyback", that is, it included in the frame for the transfer until after the output rather than being completely divided and transferred, waiting for output discrete ACKs one frame. 及时的ACKs保证对于发送器来说该接收窗口处于开放状态,以便该发送器能连续地传送数据。 ACKs ensure timely for the receiver to the transmitter window is open, so that the sender can transmit data continuously. 另外,当发送器的时钟失效时,推迟ACK传送直到一大发送(large send)完成可能会导致浪费的再传送,或者会导致在接收数据流中发生非必要的爆发,其由于ACKs被推迟而只能发生“大发送”。 In addition, when the transmitter clock failure, delayed ACK transmission until a high transmission (large send) complete waste may lead to the re-transmission, or will lead to unnecessary outbreaks occurred in the received data stream, which has been delayed since the ACKs and only "high transmission" occurs.

在步骤1115中,传送引擎320使用具有传送请求的在步骤1101中接收到的DCT索引来确定该传送请求是否相应于一委托连接,并且,如果为否,进行如图11A的步骤1131。 In step 1115, transfer engine 320 having received DCT index at step 1101 to determine if the transfer request corresponding to the transfer request is a commissioned connection, and, if NO in step, carried out in 1131 in FIG. 11A. 否则,在步骤1117中,传送引擎320使用在步骤1101中接收到的索引访问CDT720,以获得用于委托连接的连接状态数据。 Otherwise, in step 1117, the transfer engine 320 received in step 1101 index access CDT720, in order to get a connection state data for delegate connection. 在步骤1119中,传送引擎320确定以传送SN用于该构建帧。 In step 1119, the transfer engine 320 determines to transfer SN for this construct frames. 当从TCP堆栈215中接收到的SN在数据流中较存储在CDT720中的用于连接的传送SN晚时,传送引擎320设置该传送SN为TCP215接收的SN。 When the 215 received from the TCP stack to the SN in the data stream is stored in CDT720 representing the connection for transferring SN night, transfer engine 320 to set the transmission SN of TCP215 received SN.

在步骤1121中,传送引擎320检查控制位详细指明处理选项和确定TCP215是否请求传送引擎320以在CDT720中保存该帧第一位的SN。 In step 1121, the transmission control engine 320 check bits specify in detail the treatment options and determine whether to request a delivery engine 320 TCP215 to save the CDT720 in the first frame of SN. 当一相应于该存储的SN的ACK收到时,该存储的SN被用于图9A中步骤907以控制TCP堆栈215的通知。 When a storage corresponding to the SN of the ACK received, the stored SN is used in step 907 in FIG. 9A notification 215 to control the TCP stack. 如果,在步骤1121中,传送引擎320确定TCP堆栈215请求用于一特定ACK数值的通知,那么在步骤1123中,传送引擎320在CDT720中保存该SN作为一特定ACK数值用于该连接。 If, in step 1121, the transfer engine 320 determines TCP stack 215 ACK request for notification of a particular value, then the delivery engine 320 saves the SN ACK as a specific value for the connection in step 1123 in CDT720 in.

在步骤1125中,传送引擎320确定一ACK数值由于构建帧。 In step 1125, transfer engine 320 determines an ACK frame value due construct. 当该从TCP堆栈215接收到的该ACK数值在数据流中比在DCT存储的用于连接的SN晚时,传送引擎320设置该DCT SN为从TCP堆栈215中收到的ACK数值。 When this is received from the TCP stack 215 to the ACK value in the data stream than in the late DCT SN stored for the connection, the transfer engine 320 sets the DCT SN ACK value from the 215 received in the TCP stack. 传送引擎320也使者该存储在CDT720中的用于连接的最后ACK数值为该DCTSN或者从TCP堆栈中接收的ACK数值较大的。 Delivery engine 320 Herald last ACK value in the memory is used to connect the CDT720 for DCTSN or received from the TCP stack ACK value larger.

在步骤1127中,通过检查存储于CDT720中的用于委托连接的连接数据状态,传送引擎320确定该TCP印时戳选项是否为能。 In step 1127 by checking the connection data storage for delegate status of the connection, the TCP transmit engine 320 determines whether the time stamps options in CDT720 of energy. 当TCP印时戳选项为不能时,传送引擎处理如图11A所示的步骤1131。 When TCP time stamps when the option is not transmitted engine processing step shown in FIG. 11A 1131. 否则,在步骤1129中,传送引擎320包括有在该构建的帧的TCP报头中的自由运行的时钟的电流值。 Otherwise, in step 1129, the transfer engine 320 includes a current value of the clock in the TCP header of the frame is constructed in the free-running. 传送引擎320也包括从TCP堆栈收到的更大的印时戳以及存储在CDT720中的用于连接的TCP印时戳(最近的TCP印时戳)。 Delivery engine 320 also includes a time stamp (the most recent time stamps TCP) is received from the TCP stack larger time stamp and stored for TCP connections in India CDT720 in. 当从TCP215接收到的TCP印时戳比存储的用于连接的TCP印时戳大时,该存储的用于连接的TCP印时戳被设置为从TCP堆栈215接收的TCP印时戳。 TCP is set when the time stamps received from the TCP TCP215 to time stamps are stored for more than a TCP connection time stamps is large, the storage for connection to receive from the TCP stack 215 TCP time stamps. 传送引擎320进行步骤1131以计算用于该构建帧的该TCP校验和。 Transfer engine 320 to step 1131 to calculate the build frames for the TCP checksum.

图11C是根据本发明一个或几个方面的,产生传送过程中的夹杂(也就是,背负式)的ACKs的方法步骤的流程图。 11C is (that is, piggyback) ACKs flow chart of the method steps in accordance with the present invention, one or more aspects of the delivery process to produce inclusions. 图11C所示的方法是通过接收引擎360作为被接收的帧被完成。 The method shown in FIG. 11C is received by the engine 360 as a received frame is completed. 在步骤1145中,接收引擎360接收连续的TCP帧作为一委托连接。 In step 1145, the receiving TCP engine 360 receives consecutive frames as a delegate connection. 在步骤1147中,接受引擎360在相应于该委托连接的DCT350中,升级连接数据状态,例如,TCP印时戳,SN,传送窗大小,以及类似数据。 In step 1147, accept the engine 360 corresponding to the commission in DCT350 connection, upgrade the status of the connection data, for example, TCP time stamps, SN, the transmission window size, and similar data. DCT SN被升级为接下来希望的输入SN。 DCT SN is upgraded to the next desired input SN.

在步骤1149中,接受引擎360计算一ACK差,其是介于该SN与最后ACK数值(从DCT350中读出的)之间的差。 In step 1149, receiving an ACK difference calculation engine 360, which is situated between the SN and the difference between the final ACK value (read from DCT350 in). 在步骤1151中,接受引擎360确定该ACK差是否大于一极限值,该极限值被TCP堆栈215编程以触发一个接收帧的一个ACK。 In step 1151, the acceptance of engine 360 determines that the ACK difference is greater than a threshold value, this limit is TCP stack 215 is programmed to trigger a received frame of an ACK. 如果该ACK差大于该极限值,接收引擎360执行步骤1157。 If the ACK difference is greater than this limit, the reception engine 360 to Step 1157. 否则,在步骤1153中,接收引擎360确定该DCT SN是否大于一个门槛值,该门槛值是一递增序号或者一特定序号。 Otherwise, in step 1153, the reception engine 360 determines that the DCT SN is greater than a threshold value, the threshold value is incremented by a number or a specific number. 如果该DCT SN大于该门槛值,接收引擎360执行步骤1157。 If the DCT SN is greater than the threshold value, the reception engine 360 to Step 1157. 否则,在步骤1155中,接收引擎360确定前述的传送ACK时钟是否失效,以及,如果没有失效,则升级传送ACK时钟以及未被接受的计数。 Otherwise, in step 1155, the reception engine 360 determines whether the aforementioned transfer ACK clock failure, as well as, if not failed, then upgrade the transmission and ACK clock count is not accepted. 如果,在步骤1155中,接收引擎360确定该传送ACK时钟已经失效,则在步骤1157中接收引擎360升级存储在DCT 350中的用于委托连接的连接状态数据,例如,清除未被接受的计数,升级该最后已接受的数值,升级该递增的序号,等类似数据。 If, in step 1155, the receiver transmits ACK engine 360 determines that the clock has expired, then the received update engine 360 in step 1157 is stored in DCT 350 for the delegation of the connection state of the connection data, e.g., clearing the count is not accepted upgrade the last accepted value, upgrade the increasing number, and other similar data. 接收引擎360也重置传送ACK时钟。 Engine 360 also receives the transmitted ACK clock reset. 在步骤1159中,接收引擎360用信号通知传送引擎320,以在用于传送的一帧中包括一ACK,例如,通过背负一ACK。 In step 1159, the engine 360 receives the signaling transfer engine 320 to include an ACK in a frame for transmitting, for example, by carrying an ACK.

在允许驱动程序255或者TCP堆栈215具有灵活性的同时,HOT单元350卸载接收的有效的用于委托连接的TCP帧的TCP处理,来确定一个基于接收ACKs和时钟的中断的门槛值。 Allowing drivers 255 or 215 TCP stack flexibility while, HOT unloading unit 350 received valid for delegation of TCP connections TCP frame processing to determine a threshold based on the received ACKs and interrupt clock. 该门槛值可以被用于减少中断,空闲CPU110以处理其他的应用程序。 The threshold value can be used to reduce disruption, idle CPU110 to handle other applications. 进一步,HOT单元350产生用于传送和编辑背负ACKs的出站帧的ACKs,以计算TCP和IPv4校验和,并执行TCP片断。 Further, HOT unit 350 generates ACKs for transferring and editing bear outbound frame ACKs, to calculate the TCP and IPv4 checksum and perform TCP segment. 一个发送器(sender)的ACKs的及时的产生和传送能够保持接收窗口的开放,在单向和双向通信中提高带宽的利用和减少不必要的再传送。 Timely generation and transmission of a transmitter (sender) of ACKs receive window can remain open, improve bandwidth utilization and reduce unnecessary re-transmission of one-way and two-way communications. 最后,有效载荷数据上传至在应用程序存储空间227中的使用者缓存,减少从驱动存储空间235拷贝数据到应用存储空间227的需要。 Finally, the payload data is uploaded to the application storage space 227 in the user cache, reduce drive storage space from 235 to copy data to the application storage space required 227. 当用于委托连接的使用者不可得到并且接收FIFO 730满载时,继承缓存(legacy buffer)可以被用于上载接收到的帧,并不是不接受输入的数据。 When the user is not available for the delegation connector and receives FIFO 730 is full, inheritance cache (legacy buffer) can be used to upload received frames, not does not accept incoming data. 当为一些来自于CPU110的TCP处理提供卸载时,HOT单元250不依赖于大量的专用存储器或者专用的处理器。 When the number of TCP processing from the CPU110 provide an uninstall, HOT unit 250 does not rely on a large number of dedicated memory or a dedicated processor. HOT单元250也从一主处理器卸载一些TCP处理并在接收输入数据时处理一些多余的连接。 HOT Unit 250 also remove some of the TCP processing and handling some of the extra connection when receiving input data from a host processor.

在另一方面,本发明提供了一个用于TCP连接的帧处理方法。 In another aspect, the present invention provides a frame processing method for TCP connections. 该方法包括利用卸载单元处理该帧的第一部分,以产生第一处理的帧数据;利用该卸载单元处理该帧的第二部分,以产生第二处理的帧数据;利用在CPU上执行的TCP堆栈处理该第二处理的帧数据,以产生第三处理的帧数据。 The method includes processing a first portion of the unloading unit of the frame, to generate a first processed frame data; using the unloading unit processes the second portion of the frame, to generate the second processed frame data; using TCP executed on the CPU processing the second stack frame data processing, to produce a third processed frame data. 另一方面,该方法进一步包括在处理每一帧过程中确定是否有一个特殊事例存在。 On the other hand, the method further comprises determining whether there exists a special case in the course of processing for each frame. 在其他方面,该方法进一步包括上传该第一处理的帧数据到一使用者缓存。 In other aspects, the method further comprises uploading the first processed frame data to a user buffer. 在另一方面,该方法还包括上传该第二处理的帧数据到一继承缓存。 In another aspect, the method further comprises uploading the second processed frame data to a cache succession. 在另一方面,该方法还进一步包括传送一在系统存储器中的继承缓存的本地和一软件驱动器间通信的标签。 In another aspect, the method further includes transmitting a local and a tag communication between software drivers inheritance cached in system memory.

在另一方面,本发明提供了一种处理用于TCP连接的数据的系统。 In another aspect, the present invention provides a method of processing data for a TCP connection system. 该系统包括一TCP堆栈,其被配置为处理存储于至少一个遗留缓冲区的接收到的帧;一软件驱动程序,被配置为连接该TCP堆栈和卸载单元之间的接口;以及该卸载单元被配置为处理在委托连接上接收到的帧,以产生有效载荷数据和被部分处理的帧。 The system includes a TCP stack, which is configured to process received frames stored in at least one legacy buffer; a software driver, is configured to connect between the TCP stack and the unloading unit interface; and unloading unit is configured to process a received connection frame on a commission to produce payload data and the processed frame portion. 在另一方面,该卸载单元被配置以处理没有特殊事例存在的帧。 On the other hand, the offload unit is configured to process special cases no frame exists. 还在另一方面,该卸载单元被配置当一特殊事例被确定存在时通知TCP堆栈。 In yet another aspect, the offload unit is configured to notify when a special case when the TCP stack is determined to exist. 还在另一方面,该卸载单元被配置以上载部分地处理的帧到至少一个继承缓存。 In yet another aspect, the offload unit is configured to upload the partially processed frame to the at least one cache succession. 还在另一方面,该卸载单元被配置上载有效载荷数据到至少一使用者缓存。 In yet another aspect, the offload unit is configured to upload the payload data to at least one user cache. 还在另一方面,该卸载单元被配置,在上载部分地处理的帧到继承缓存或者上载有效载荷数据到使用者缓存,以接收附加的帧。 In yet another aspect, the offload unit is configured in the frame part of the upload to handle inheritance cache or upload payload data to the user buffer to receive additional frames. 还在另一方面,该TCP堆栈提供具有相应于至少一使用者缓存的本地信息的卸载单元。 In yet another aspect, the TCP stack is provided having at least one corresponding to the unloading unit locally cached user information. 还在另一方面,该卸载单元包括一被配置的委托连接表以存储使用者信息和委托连接状态信息。 In yet another aspect, the unloading unit comprises a delegate is configured to store user information connection table and delegate connection status information.

在另一方面,本发明提供了一种处理用于委托和非委托TCP连接的帧的方法。 In another aspect, the present invention provides a process for commissioned and non-commissioned frame TCP connection method. 该方法包括利用卸载单元处理委托TCP连接,该卸载单元被配置为处理不存在特殊事例的帧;利用在CPU上执行的TCP堆栈处理非委托TCP连接;和利用该CPU上执行的TCP堆栈处理所有特殊事例存在的帧。 The method includes the unloading unit to handle the commissioned TCP connection, the offload unit is configured to process frames the particular case does not exist; the use of TCP stack processing on the CPU to perform a non-commissioned TCP connection; and the use of TCP stack executing on the CPU handles all special case exists frames. 还在另一方面,委托TCP连接的处理产生有效载荷数据。 In yet another aspect, commission processing TCP connections generate payload data. 还在另一方面,该有效载荷数据通过卸载单元上载到以委托连接。 In yet another aspect, the payload data uploaded by offloading unit connected to the commission. 还在另一方面,该方法进一步包括,当作为以委托连接的数据传送时,升级存储在卸载单元的连接状态信息。 In yet another aspect, the method further comprises, as a delegate to the data transfer when connected, the connection status update information stored in the unloading unit.

在另一方面,本发明提供了一个设立委托连接的方法。 In another aspect, the present invention provides a method to set up delegate access. 该方法包括:建立TCP连接;和确定是否通过硬件处理委托该TCP连接。 The method comprising: establishing a TCP connection; and to determine if hardware processing commissioned by the TCP connection. 还在另一方面,该方法进一步包括在关于确定委托该TCP连接的委托连接表中建立一内容。 In yet another aspect, the method further includes the establishment of a content on the determination of the entrustment of the TCP connection table connection. 还在另一方面,该方法进一步包括转移用于该委托连接的使用者缓存信息到硬件。 In yet another aspect, the method further includes transferring the delegate cache for user information connected to the hardware.

在另一方面,本发明提供了一个用于TCP堆栈和卸载单元之间通信的系统。 In another aspect, the present invention provides a system for communication between TCP stack and unloading unit used. 该系统包括由TCP堆栈向该卸载单元传送命令的装置;和由该卸载单元向该TCP堆栈传送通知描述符的装置。 The system comprises a TCP stack unloading unit to send commands to the device; and the unloading unit by the transfer notice to the TCP stack device descriptor. 还在另一方面,该系统进一步包括一用于从卸载单元向该TCP堆栈传送命令细节情况的装置。 In yet another aspect, the system further comprises a means for unloading from the TCP stack to the details of the transmission command means. 还在另一方面,该系统进一步包括用于从TCP堆栈向该卸载单元传送接收缓存描述符的装置。 In yet another aspect, the system further includes means for transmitting to the unloading unit receive buffer descriptors from the TCP stack means. 还在另一方面,该系统进一步包括从TCP堆栈向该卸载单元传送传送缓存描述符的装置。 In yet another aspect, the system further comprises from unloading unit transferred to the TCP stack buffer descriptor transfer device.

在另一方面,本发明提供了利用卸载单元编辑出站(outbound)帧的方法。 In another aspect, the present invention provides the use of the unloading unit edit outbound (outbound) frame approach. 该方法包括接收委托连接表索引;接收用于从TCP堆栈传送的原型报报头和数据;利用该委托连接表索引存取委托连接表项目;基于传送数据的一部分计算TCP检查和;和输出包括该TCP检查和的帧和该传送数据的一部分。 The method includes receiving a delegation connector table index; receiving a transmission from a TCP stack prototype packet header and data; use the delegate access delegate connection connection table index sheet items; calculation based in part on TCP inspection and transfer of data; and an output and including the part of the TCP inspection and the frame and the transmission of data. 还在另一方面,该方法进一步包括升级委托连接表内容。 In yet another aspect, the method further includes upgrading entrust the connection table content. 还在另一方面,该方法也包括访问该连接表内容;计算一基于用于传送的数据的其他一部分的TCP校验和;以及输出一包括该TCP校验和的附加帧和另外用于传送的数据的另外一部分。 In yet another aspect, the method also includes access to the connection table content; calculating a checksum for TCP-based data transmission and other part; and an output and including the TCP checksum and the additional frames and another for transmitting Another part of the data. 还在另一方面,当一个目标具有一特定序号的得到认可的收条时,应用程序需要得到通知。 In yet another aspect, when the receipt of a recognized goal has a specific serial number, the application needs to be notified. 还在另一方面,该方法进一步包括背在该帧中背负一回执。 In yet another aspect, the method further comprises a back in the frame carrying a receipt.

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。 Described above, only the preferred embodiment of the present invention only, not for the present invention any formal restrictions, although the invention has been revealed as the preferred embodiment, however, not intended to limit the present invention, any skilled in the art technical staff, without departing from the scope of the present invention within the program, can be used when the above disclosed methods and technical content to various omissions, substitutions and changes in the equivalent examples, but not all the contents from the technical solution of the present invention, Any modification technique based on simple essence of the invention made by the above example embodiments, equivalent variation and modification as would fall within the scope of the present invention the technical solution.

Referenced by
Citing PatentFiling datePublication dateApplicantTitle
CN101741870B7 Nov 200814 Nov 2012英业达股份有限公司Storage system of Internet small computer system interface
CN103765380B *29 Jun 201228 Jul 2017英特尔公司用于事件的安全排队的方法和系统
Classifications
International ClassificationG06F3/00, H04L29/06, H04L12/56, H04L12/28
Cooperative ClassificationH04L69/12, H04L69/161, H04L69/22, H04L69/10, H04L69/163, H04L69/166, H04L69/16, H04L47/225, H04L47/12, H04L29/06
European ClassificationH04L29/06J7, H04L29/06J13, H04L29/06J3, H04L29/06, H04L47/22A, H04L47/12, H04L29/06J, H04L29/06F
Legal Events
DateCodeEventDescription
16 Nov 2005C06Publication
16 Aug 2006C10Entry into substantive examination
30 Oct 2013C14Grant of patent or utility model
28 Jul 2017CF01