CN1864376A - 从卸载适配器利用主机存储器的方法、系统和制品 - Google Patents
从卸载适配器利用主机存储器的方法、系统和制品 Download PDFInfo
- Publication number
- CN1864376A CN1864376A CNA2004800294014A CN200480029401A CN1864376A CN 1864376 A CN1864376 A CN 1864376A CN A2004800294014 A CNA2004800294014 A CN A2004800294014A CN 200480029401 A CN200480029401 A CN 200480029401A CN 1864376 A CN1864376 A CN 1864376A
- Authority
- CN
- China
- Prior art keywords
- network adapter
- data
- storage buffer
- grouping
- protocol processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9026—Single buffer per packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
- H04L49/9052—Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
提供了一种方法、系统和制品,其中在所述方法的一种实现中,由协议处理器在主机存储器中分配存储器缓冲区,其中所述主机存储器被包括在耦合到网络适配器的主机中。一开始在网络适配器上处理分组,以生成卸载到主机中的存储器缓冲区的数据。所生成的数据由协议处理器卸载到主机中的存储器缓冲区。所卸载的数据由所述协议处理器来处理。
Description
技术领域
本公开涉及从卸载适配器利用主机存储器的方法、系统和制品。
背景技术
网络适配器可被耦合到主机系统以提供网络通信。一些网络适配器可以为分组数据和控制数据的处理提供硬件支持,所述分组数据和控制数据与可用于网络通信的传输控制协议/因特网协议(TCP/IP)有关。这样的网络适配器可被称为TCP/IP卸载(offload)引擎(TOE)适配器。有关TCP/IP协议的更多细节被描述在标题为“传输控制协议:DARPA因特网编程协议规范(Transmission Control Protocol:DARPA Internet Program ProtocolSpecification)”的出版物中,它是为防御高级计划研究(RFC 793,1981年9月出版)准备的。
TOE适配器可以完成TCP/IP协议处理的所有部分或主要部分,而其他网络适配器可以完成网络分组(packet)的发送和接收,并且为校验和卸载或分组的分段和重新组装提供某种支持。高速交换技术,例如吉比特以太网可被用于将主机系统连接到网络。结果,耦合到主机系统的TOE适配器可能不得不处理大量的网络连接。在这样的高速交换技术中分组进出主机系统的流动可能都是高速的。TOE适配器可能需要以足够于分组流动的速率来处理大量的分组。有关吉比特以太网环境中的TOE适配器的更多细节被描述在标题为“对TCP/IP卸载引擎的介绍(Introduction to the TCP/IP Offload Engine)”的出版物中,该出版物可从10吉比特以太网联盟获得(2002年4月出版)。
附图说明
现在参照附图,在全部附图中类似的标号代表相应得部分:
图1根据本发明被描述的某些实施方案图示了计算环境的框图;
图2根据本发明被描述的某些实施方案图示了在计算环境中实现的数据结构的框图;
图3根据本发明被描述的某些实施方案图示了操作;
图4根据本发明被描述的某些实施方案图示了操作;
图5根据本发明被描述的某些实施方案图示了操作;以及
图6图示了实现本发明被描述的某些实施方案的计算机体系结构的框图。
具体实施方式
在以下说明书中参考附图,这些附图形成了说明书的一部分并且图示说明了几个实施方案。可以理解,可以采用其他实施方案并且可以作出结构和操作改变,而不会偏离此处
实施方案的范围。
所述实施方案包括耦合到主机系统的网络适配器中的协议处理器,例如协议处理应用。协议处理器能够处理与连网协议有关的命令。在这些实施方案中,协议处理应用利用主机系统中的存储器进行协议处理和数据集结(data staging),并且最小化网络适配器中的存储器需求。
图1根据本发明被描述的某些实施方案图示了计算环境的框图。主机系统100可以通过网络104与多个计算设备102a...102n相连。主机系统100通过网络104发送和接收分组。这些分组可以用于主机系统100和计算设备102a...102n中的一个或更多个设备之间的通信。主机系统100可以是本领域中公知的任何计算设备,例如个人计算机、工作站、服务器、大型计算机、手持计算机、掌上型计算机、膝上型计算机、电话设备、网络计算机等。计算设备102a...102n可以包括各种类型的计算机、路由器、存储设备等。网络104可以是本领域中公知的任何网络,例如因特网、内部网、局域网(LAN)、存储域网络(SAN)、广域网(WAN)、无线网络等。另外,网络104可以是一个或更多个更大网络的一部分,或者可以是一个独立网络,或者可以由多个互连的网络组成。在某些实施方案中,网络104可以用高速交换技术,例如吉比特以太网技术来实现。
主机系统100可以包括至少一个主机处理器106、主机存储器108、至少一个主机应用110和网络适配器112。包括主机应用110的指令可被存储在主机存储器108中并由主机处理器106来执行。主机存储器108的某些区域可以包括缓冲区池114,缓冲区池114是供网络适配器112处理所使用的主机系统100的存储器。缓冲区池114也被称为匿名缓冲区池114,这是因为缓冲区池114的地址可以位于主机系统100的主机存储器108中的多个位置上,并且该地址不必直接或间接暴露给运行在主机系统100上的主机应用110,即缓冲区池114对主机应用110是匿名的。匿名缓冲区池114可以包括多个存储器缓冲区。主机应用110可以为网络适配器112生成与TCP/IP协议有关的命令。例如,主机应用110可以经由网络适配器112发送或接收分组。
网络适配器112可以包括本领域中公知的任何网络适配器,其包括为处理与至少一种IP协议(例如TCP/IP协议)有关的至少一些命令所需的硬件支持。例如,网络适配器112可以包括TCP卸载引擎适配器或者本领域中公知的任何其他卸载适配器。
网络适配器112包括适配器处理器116、适配器存储器118和处理与网络通信协议有关的命令的协议处理器,例如协议处理应用120。适配器处理器116可以被实现为专用集成电路(ASIC)。适配器存储器118可以是本领域公知的任何存储器,在某些实施方案中可以被称为副随机访问存储器(副RAM)。在某些实施方案中,适配器存储器116的存储容量显著小于主机存储器108。协议处理应用120可以在网络适配器112中用硬件或软件来实现。如果协议处理应用120用软件来实现,则协议处理应用120的代码可以驻留于适配器存储器118中或网络适配器112上的任何其他存储部分中。在某些实施方案中,协议处理应用120可以用硬件以专用集成电路的形式实现为网络适配器112的一部分。在替换实施方案中,协议处理应用120可以存在于网络适配器112之外,例如驻留在主机系统100的主机存储器108中。在另外的实施方案中,包括协议处理应用120的网络适配器112可被实现在主机处理器106中。
协议处理应用120利用主机存储器108进行协议处理和数据集结,从而最小化对适配器存储器118的存储器需求。由于适配器存储器118在存储容量上可能显著小于主机存储器108,所以当协议处理应用120使用主机存储器108时,有时可以以更快的速率来处理分组。此外,由于减小了对适配器存储器的存储器需求,所以网络适配器112的成本可以降低。
图1图示了网络适配器112中的协议处理应用120如何利用主机存储器108中的匿名缓冲区池114进行TCP/IP协议处理。
图2根据本发明的某些实施方案图示了代表在主机100中实现的数据结构的框图。实现在主机中的数据结构包括代表会话200、分组202、主机应用缓冲区204和匿名缓冲区池114的数据结构。代表会话200、分组202、主机应用缓冲区204和匿名缓冲区池114的数据结构可以被实现在主机存储器108中。
会话200可以代表TCP/IP会话,这里TCP/IP会话是在主机系统100和计算设备102a...102n之间建立的一组相关数据交换。虽然在图2中示出的是对应于单个会话200的数据结构,但是在主机系统100和计算设备102a...102n之间可以建立多个会话。对应于会话200的还有会话控制块206和接收队列208。会话控制块206存储代表会话状态的信息。例如,会话控制块206可以包括在具体会话中接收到的分组的数量、在具体会话中发送的分组的数量、等等。会话控制块206还可以包括指向匿名缓冲区池114中的缓冲区地址的指针,与会话200的分组有关的分组数据被存储在该缓冲区地址处。会话200具有对应于会话200的接收队列208。接收队列208是代表会话200中已被接收并排队待处理的分组的数据结构。在主机存储器108中每个会话有一个接收队列,用于在主机系统100和计算设备102a...102n之间交换数据。在某些实现中,接收队列208可以用作发送队列(transmit queue)208,用于发射分组。
分组202可以代表用于主机系统100和计算设备102a...102n间通信的TCP/IP分组。图2图示了一个代表性的分组。在本发明的实施方案中,多个分组被用于通信。分组202可以包括头部(header)210和分组数据211,这里分组数据是数据有效载荷。头部可以包括头部控制块212。协议处理应用120能够基于包括在经由网络104接收的分组202的头部控制块212中的信息来更新会话控制块206。此外,协议处理应用120能够更新正在经由网络适配器112发送的分组的头部控制块212,其中更新头部控制块212的信息可以从会话控制块206中提取。
主机应用缓冲区204是主机存储器108中分配给主机应用110的区域。主机应用110可以分配主机应用缓冲区204用于存储和处理包括在分组中的数据。
匿名缓冲区池114包括多个缓冲区214a...214n,这些缓冲区也被称为匿名缓冲区214a...214n,这是因为所述多个缓冲区214a...214n的地址不必直接或间接暴露给主机应用110,即缓冲区214a...214n对主机应用110是匿名的。匿名缓冲区214a...214n是主机存储器108中由协议处理应用120用来进行TCP/IP协议处理的缓冲区。向协议处理应用120注册匿名缓冲区214a...214n,并且匿名缓冲区214a...214n可以是从运行在主机系统100上的操作系统中保留的相邻的、不可分页的存储器。
匿名缓冲区例如匿名缓冲区214a可以包括多个向协议处理应用120注册的分组区域216a...216n。在某些实施方案中,分组区域216a...216n的大小可以等于底层传输(transport)的最大传输单元(Maximum Transfer Unit,MTU)的大小。分组交换技术的MTU是在一个物理帧中可以传输的数据量的固定上限。例如在某些实施方案中,吉比特以太网可以将传输限制为每帧1500个八位字节数据。在某些实施方案中,匿名缓冲区214a...214n可以具有唯一的标识,例如第一字节的物理地址。分组区域216a...216n可以利用包括分组区域216a...216n的匿名缓冲区的标识符以及分组区域216a...216n在该匿名缓冲区内的偏移位置来唯一地标识。
将匿名缓冲区池114划分为单独的匿名缓冲区214a...214n,这样允许协议处理应用120创建具有在主机系统100上运行的操作系统所允许的大小的匿名缓冲区214a...214n。结果,即使可在本发明的实施方案中使用的操作系统无法保证超过一页大小的相邻存储器在单个请求中被预留并锁定,预留存储器也向请求分配存储器,并且锁定该存储器可阻止其他请求对所分配的存储器进行写操作。
将匿名缓冲区214a...214n划分为分组区域216a...216n,这样还允许协议处理引擎120使用分组区域来保存全尺寸大小的流入分组中的数据有效载荷,并将分组区域链接到分组所属的会话的适当协议控制块(PCB)上下文。分组区域216a...216n是匿名缓冲区214a...214n中的存储器区域,其中分组区域216a...216n的大小可以等于底层传输的MTU的大小,并且全尺寸大小的流入分组可以等于底层传输的MTU的大小。分组区域可以在分组被重新组装后被循环使用,即再次利用。
某些实施方案实现单个匿名缓冲区池114用于所有的网络会话。网络适配器112可以将匿名缓冲区池114中的匿名缓冲区214a...214n用于多个会话。因此,图2图示了匿名缓冲区214a...214n可被如何用于集结网络会话的流入和流出分组。
图3根据本发明的某些实施方案图示了协议处理应用120所实施的操作。
控制开始于框300,其中协议处理应用120接收经由网络104从计算设备102a...102n之一传递来的分组,例如分组202。协议处理应用120由包括在接收分组202的头部210中的头部控制块212来确定(在框302)对应于会话200的会话控制块206。如果协议处理应用120确定不存在对应于接收分组的会话控制块206,则控制前进到框304,其中协议处理应用120将接收分组作为原始分组转发到主机存储器108中的匿名缓冲区214a,因为对于接收分组而言还不存在卸载上下文。会话控制块206存储代表会话状态的信息,并且如果不存在会话控制块206,则还没有已建立的对应于接收分组的会话。卸载上下文是指存储在会话控制块206中的与接收分组相关联的上下文信息。如果不存在会话控制块206,则还没有存储在会话控制块206中的与接收分组相关联的上下文信息。
如果协议处理应用120确定(在框302)一个会话控制块206对应于接收分组,则协议处理应用120确定(在框306)是否存在对应于会话控制块206的与会话200相关联的例外条件。如果是,则协议处理应用120处置(在框308)与接收分组相关联的例外协议处理。例外条件是当设备或应用接收到该设备或应用无法执行的命令时该设备或应用所呈现的条件。例如,因为会话200由于某种错误不能正常处理分组,所以例外条件可能与会话200相关联。在这样的环境中,协议处理应用120可以通过完成例外协议处理,从而执行操作从例外条件中恢复过来。
协议处理应用120确定(在框310)在接收分组中是否存在任何数据有效载荷,其中数据有效载荷可以包括新的数据或者可以是对主机应用110的响应。如果在接收分组中没有数据有效载荷,则协议处理应用120结束(在框312)处理接收分组。如果协议处理应用120确定(在框310)在接收分组中存在数据有效载荷,则协议处理应用120将对应于数据有效载荷的待处理分组数据211排队(在框314)到匿名缓冲区214a中的分组区域例如分组区域216a中,并且将分组数据211链接到当前会话控制块206。当有序数据可用时,即所有的分组都已按顺序到达时,协议处理应用120生成(在框316)与接收分组的处理相对应的结束信号,并且协议处理应用120结束(在框312)处理分组。
如果协议处理应用120确定(在框306)不存在对应于会话控制块206的与会话200相关联的例外条件,则协议处理应用120确定(在框318)在接收分组中是否存在数据有效载荷。如果没有,则协议处理应用120结束(在框312)处理分组。如果协议处理应用120确定(在框318)在接收分组中存在数据有效载荷,则协议处理应用120确定(在框320)用于所确定会话200的接收队列208是否为空,即接收队列208不包括任何主机应用缓冲区。如果是的,则协议处理应用120将待处理的分组数据排队(在框314)到匿名缓冲区当中的分组区域中。
如果协议处理应用120确定(在框320)用于所确定会话200的接收队列208不是空的,则协议处理应用120确定(在框322)接收队列208的总缓冲区大小是否大于分组中的数据有效载荷。如果不大于,则协议处理应用120将部分数据有效载荷放入(在框324)接收队列中,并将分组数据排队(在框314)到匿名缓冲区当中的分组区域中。
如果协议处理应用120确定(在框322)接收队列208中的总主机应用缓冲区大于接收分组的数据有效载荷,那么协议处理应用120将数据有效载荷经由接收队列208直接放入(在框326)主机应用缓冲区204中。协议处理应用120使接收队列出队(在框328)并且结束(在框312)处理接收分组。
因此,图3的操作使用主机存储器108中的匿名缓冲区214a...214n来处理接收分组的数据有效载荷。通过在主机存储器108中处理接收分组的数据有效载荷,而不是在适配器存储器118中处理数据有效载荷,协议处理应用120可以加快对分组的处理。在高速网络上,接收分组可能数量极大,并且适配器存储器118的数量相对于主机存储器108的数量减少了,要不然可能会降低处理接收分组中的数据有效载荷的速率。此外,减少适配器存储器118的数量可以降低网络适配器112的成本。
图4根据本发明的某些实施方案图示了由协议处理应用120实施的操作。
控制开始于框400,其中协议处理应用120从主机应用110接收到发送请求。发送请求是通过网络104从主机系统100向计算设备102a...102n发送分组的请求。协议处理应用120确定(在框402)对应于发送请求的会话200是否处于异步模式,即,处于在发送分组后不用等待确认就可以异步发送会话200分组的过程中。在异步模式中,不必等待对先前发送分组的确认就可以发送新的分组。在同步模式中,只有在接收到对先前发送分组的确认后才可以发送新的分组。如果会话200处于异步模式中,则协议处理应用120利用与分组相关联的应用发送缓冲区例如主机应用缓冲区204生成(在框404)发送描述符,并且发送该分组。协议处理应用120在发送下一分组前不等待确认,并且协议处理应用120完成(在框406)发送请求。
如果协议处理应用120确定(在框402)底层会话200不处于异步模式中,即会话200处于同步模式中,那么协议处理应用120从会话200的会话控制块206中查找(在框408)会话200的实测往返时间(RTT)估计。RTT估计是分组从一台计算机穿过网络到达另一台计算机再返回所花时间的度量。像TCP这样的传输协议预计确认信号将在数据已被成功接收后到达,这些协议在每条连接上保持当前RTT的估计,并且使用RTT估计来确定在重传之前要等待确认达多长时间。协议处理应用120确定(在框410)RTT估计是否高于阈值。如果是,则协议处理应用412分配(在框412)匿名缓冲区例如匿名缓冲区214a用于发送队列分组。协议处理应用120将应用发送缓冲区复制到匿名缓冲区214a用于发射。协议处理应用120将匿名缓冲区214a排队(在框414)到会话200的发送队列208。协议处理应用120将应用发送请求标记为完成,并且完成(在框406)对发送请求的处理。在某些实施方案中,可以通过将一个布尔变量与每个应用发送请求关联起来,并且在应用发送请求完成时将所述布尔变量指定为真值,从而将该应用发送请求标记为完成。
如果协议处理应用120确定(在框410)RTT估计不高于阈值,则协议处理应用120利用应用发送缓冲区生成(在框404)发送描述符,然后完成(在框406)对发送请求的处理。当RTT估计高于阈值时,协议处理应用120就要在重传分组前为确认信号等待一段过长的时间。
图4图示了协议处理应用120如何使用主机存储器108中的匿名缓冲区214a...214n来排队将通过网络104发送的数据。协议处理应用120在通过网络104发射分组时使用相对较大存储容量的主机存储器108而不是相对较小存储容量的适配器存储器118来排队分组。结果,与分组在适配器存储器118中排队的情况相比,可以增大主机应用110的总吞吐率。
图5根据本发明的某些实施方案图示了由协议处理器120例如协议处理应用120实施的操作。
控制开始于框500,其中协议处理器120分配主机存储器108中的存储器缓冲区214a,这里主机存储器108被包括在耦合到网络适配器112的主机100中。协议处理器120在网络适配器112上处理分组202,以生成卸载到主机100中的存储器缓冲区214a的数据。协议处理器120将生成的数据卸载到主机100中的存储器缓冲区214a。卸载所生成的数据可以将生成的数据从网络适配器112移动到主机100中的存储器缓冲区214a。接下来,协议处理器120处理所卸载的数据。
所述实施方案包括在耦合到主机系统100的网络适配器112中实现的协议处理器120,例如协议处理应用120。协议处理应用120利用主机系统100中的主机存储器108对发送和接收分组进行协议处理和数据集结,并且最小化网络适配器112中的存储器需求。
所述实施方案降低了对适配器存储器中的数据集结缓冲区的需要,导致适配器存储器的尺寸变小。有序分组和无序分组都由所述实施方案来处理。所述实施方案还可以处理分段后的分组。某些实施方案可以实现为主板上LAN的配置。所述实施方案也适于TOE集成到处理器芯片组。所述实施方案可以支持网络协议的集成层处理,并且可以支持上层直接数据放置以及远程直接存储器访问(RDMA)协议。所述实施方案通过将分组数据卸载到主机存储器,从而允许网络适配器以对分组流足够的速率来处理大量分组。
其他的实施方案细节
所描述的技术可以实现为涉及软件、固件、微码、硬件或它们的任意组合的方法、装置或者制品。术语“制品”使用在这里是指用硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、ASIC等)或计算机可读介质(例如,磁存储介质(例如硬盘驱动器、软盘、磁带)、光存储(例如CD-ROM、DVD-ROM、光盘等)、易失性和非易失性存储器器件(例如电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机访问存储器(RAM)、动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、闪存、固件、可编程逻辑等))实现的代码或逻辑。计算机可读介质中的代码可以由机器例如处理器来访问和执行。实现多种实施方案的代码还可以通过传输介质或者经由网络从文件服务器访问。在这样的情形中,实现代码的制品可以包括传输介质,例如网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等。当然,本领域的技术人员将会认识到,在不偏离实施方案的范围的情况下可以作出很多修改,并且制品可以包括本领域中公知的任何信息承载介质。
图6图示了实现某些实施方案的计算机体系结构的框图。图6图示了主机系统100的一个实施方案。主机系统100可以实现具有处理器602(例如主机处理器106)、存储器604(例如,易失性存储器器件,例如主机存储器108)和存储设备(storage)606的计算机体系结构600。存储设备606可以包括非易失性存储器器件(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储设备606可以包括内部存储设备、附接存储设备或网络可访问存储设备。存储设备606中的程序可以用本领域中公知的方式被加载到存储器604中并由处理器602执行。该体系结构还可以包括使能与网络间通信的网卡608(例如网络适配器112)。该体系结构还可以包括至少一个输入610和至少一个输出612,所述输入例如是键盘、触摸屏、输入笔、语音激活输入等,所述输出例如是显示设备、扬声器、打印机等。
在某些实现中,网络适配器可以被包括在包括任何存储控制器的计算机系统中,所述存储控制器例如是小型计算机系统接口(SCSI)、AT附接接口(ATA)、独立盘冗余阵列(RAID)等控制器,该控制器管理对非易失性存储设备例如磁盘驱动器、磁带介质、光盘等的访问。在替换的实现中,网络适配器实施方案可以被包括在不包括存储控制器的系统中,例如某些集线器和交换机中。有关SCSI的更多细节被描述在X3T10技术委员会准备的、名称为“信息技术:SCSI-3体系结构模型(Information Technology:SCSI-3Architecture Model)”的出版物(1995年11月出版)中。有关ATA的更多细节被描述在X3T10技术委员会准备的、名称为“AT附接-3接口(ATA-3)(AT Attachment-3 Interface(ATA-3))”的出版物(1995年10月出版)中。
在某些实现中,所述实施方案可以被实现在包括视频控制器的计算机系统中,所述视频控制器使得信息被显示在耦合到包括网络适配器112的计算机系统的监视器上,所述计算机系统例如包括桌面计算机、工作站、服务器、大型计算机、膝上型计算机、手持计算机等。操作系统可由计算机系统来执行,并且视频控制器可以经由与操作系统之间的交互(interaction)来呈递图形输出。可替换地,所述实施方案可以实现在不包括视频控制器的计算机系统中,例如交换机、路由器等。
图3、4和5的至少某些操作可以并行、串行地执行。在替换的实施方案中,某些操作可以按不同的顺序来执行,或者某些操作可以被修改或删除。
此外,为了图示说明,很多软件和硬件组件被描述为单独的模块。这样的组件可以被集成到更少数量的组件中,或者可以被分割到更大数量的组件中。此外,所描述的由特定组件完成的某些操作可以由其他组件来完成。在某些实现中,网络适配器可以是主机系统的中央处理单元的专用部分。
在图1-6中示出或提及的数据结构和组件被描述为具有特定类型的信息。在替换的实施方案中,所述数据结构和组件可以用不同的方式构造,并且与图中所示出或提及的部分相比,具有更少、更多或不同的字段或不同的功能。此外,虽然已相对于TCP/IP描述了实施方案,但是这些实施方案也可以使用任何其他协议。
因此,对实施方案的以上描述仅是出于图示说明和描述的目的。该描述不希望是穷尽性的,或者将本发明限制为所公开的精确形式。根据以上教导,很多修改和变体都是可能的。
Claims (30)
1.一种方法,包括:
由协议处理器分配主机存储器中的存储器缓冲区,其中所述主机存储器被包括在耦合到网络适配器的主机中;
一开始在所述网络适配器上处理分组,以生成卸载到所述主机中的所述存储器缓冲区的数据;
由所述协议处理器将所述生成的数据卸载到所述主机中的所述存储器缓冲区;以及
由所述协议处理器处理所述卸载的数据。
2.如权利要求1所述的方法,还包括:
将所述存储器缓冲区划分为多个缓冲区,其中所述多个缓冲区能够存储与多个网络会话相关联的分组数据;
将缓冲区划分为一个或多个分组区域,其中分组区域的大小超过与协议相关联的分组的最大传输单元的大小;以及
将与第一分组相关联的第一分组数据存储在第一分组区域中。
3.如权利要求1所述的方法,还包括:
在所述网络适配器上接收分组;
确定所述分组是否包括数据有效载荷;以及
将所述数据有效载荷排队到所述存储器缓冲区中。
4.如权利要求1所述的方法,还包括:
在所述网络适配器上接收分组;
确定所述分组中的数据有效载荷是否超过主机应用缓冲区的大小;以及
如果所述分组中的所述数据有效载荷超过所述主机应用缓冲区的所述大小,则将所述数据有效载荷排队到所述存储器缓冲区中。
5.如权利要求1所述的方法,还包括:
在所述协议处理器上接收来自所述主机上的主机应用的发送请求;
确定与所述发送请求相关联的会话是否处于同步模式中,其中如果所述会话处于同步模式中,则将所述发送请求卸载到所述存储器缓冲区;以及
向所述主机应用指示所述发送请求已完成。
6.如权利要求1所述的方法,还包括:
在所述协议处理器上接收来自所述主机上的主机应用的发送请求,其中应用发送缓冲区与所述发送请求相关联;以及
将所述应用发送缓冲区复制到所述存储器缓冲区。
7.如权利要求1所述的方法,其中所述协议处理器耦合到所述网络适配器,其中所述网络适配器是卸载引擎适配器,并且其中所述主机存储器在尺寸上大于耦合到所述网络适配器的适配器存储器。
8.如权利要求1所述的方法,其中所述存储器缓冲区包括多个缓冲区,其中所述存储器缓冲区能够存储多个会话的所述卸载数据,并且其中第一会话的所述卸载数据被存储在至少一个缓冲区中。
9.如权利要求1所述的方法,其中所述协议处理器用硬件或软件来实现,并且其中所述网络适配器是所述主机的中央处理单元的一部分。
10.一种网络适配器,其中所述网络适配器被耦合到具有主机存储器的主机,并且其中存储器缓冲区被实现在所述主机存储器中,所述网络适配器包括:
耦合到所述网络适配器的存储器;
协议处理器,其中所述协议处理器能够分配所述存储器缓冲区,其中所述协议处理器能够一开始在所述网络适配器上处理分组,以生成将卸载到所述存储器缓冲区的数据,其中所述协议处理器能够将所述生成的数据卸载到所述主机中的所述存储器缓冲区,并且其中所述协议处理器能够处理所述卸载的数据。
11.如权利要求10所述的网络适配器,其中所述协议处理器能够:
将所述存储器缓冲区划分为多个缓冲区,用以存储与多个网络会话相关联的分组数据;
将缓冲区划分为一个或更多个分组区域,其中分组区域的大小超过与协议相关联的分组的最大传输单元的大小;以及
将与第一分组相关联的第一分组数据存储在第一分组区域中。
12.如权利要求10所述的网络适配器,其中所述协议处理器能够:
在所述网络适配器上接收分组;
确定所述分组是否包括数据有效载荷;以及
将所述数据有效载荷排队到所述存储器缓冲区中。
13.如权利要求10所述的网络适配器,其中所述协议处理器能够:
在所述网络适配器上接收分组;
确定所述分组中的数据有效载荷是否超过主机应用缓冲区的大小;以及
如果所述分组中的所述数据有效载荷超过所述主机应用缓冲区的所述大小,则将所述数据有效载荷排队到所述存储器缓冲区中。
14.如权利要求10所述的网络适配器,其中所述协议处理器能够:
接收来自所述主机上的主机应用的发送请求;
确定与所述发送请求相关联的会话是否处于同步模式中;
如果所述会话处于同步模式中,则将所述发送请求卸载到所述存储器缓冲区;以及
向所述主机应用指示所述发送请求已完成。
15.如权利要求10所述的网络适配器,其中所述协议处理器能够:
接收来自所述主机上的主机应用的发送请求,其中应用发送缓冲区与所述发送请求相关联;以及
将所述应用发送缓冲区复制到所述存储器缓冲区。
16.如权利要求10所述的网络适配器,其中所述协议处理器耦合到所述网络适配器,其中所述网络适配器是卸载引擎适配器,并且其中所述主机存储器在尺寸上大于耦合到所述网络适配器的所述存储器。
17.如权利要求10所述的网络适配器,其中所述协议处理器能够:
将所述存储器缓冲区划分为多个缓冲区;
将多个会话的卸载数据存储在所述多个缓冲区中;以及
将第一会话的所述卸载数据存储在至少一个缓冲区中。
18.如权利要求10所述的网络适配器,其中所述协议处理器用硬件或软件来实现,并且其中所述网络适配器是所述主机的中央处理单元的一部分。
19.一种与数据存储设备通信的系统,包括:
主机;
管理对所述数据存储设备的输入/输出(I/O)访问的数据存储控制器,其中所述数据存储控制器耦合到所述主机;
耦合到所述主机的网络适配器;
耦合到所述主机的主机存储器;
实现在所述主机存储器中的存储器缓冲区,其中协议处理器能够分配所述存储器缓冲区,其中所述协议处理器能够一开始在所述网络适配器上处理分组,以生成将卸载到所述存储器缓冲区的数据,其中所述协议处理器能够将所述生成的数据卸载到所述主机中的所述存储器缓冲区,并且其中所述协议处理器能够处理所述卸载的数据。
20.如权利要求19所述的系统,还包括:
分组;以及
包括在所述分组中的数据有效载荷,其中所述网络适配器能够接收所述分组,其中所述协议处理能够确定所述分组是否包括所述数据有效载荷,并且其中所述协议处理器能够将所述数据有效载荷排队到所述存储器缓冲区。
21.如权利要求19所述的系统,还包括:
所述主机上的主机应用,其中所述协议处理器能够接收来自所述主机应用的发送请求,其中所述协议处理器能够确定与所述发送请求相关联的会话是否处于同步模式中,其中如果所述会话处于同步模式中,则所述协议处理器能够执行将所述发送请求卸载到所述存储器缓冲区的操作,并且其中所述协议处理器能够向所述主机应用指示所述发送请求已完成。
22.一种制品,包括存储有指令的存储介质,所述指令在由机器执行时导致以下操作:
分配主机存储器中的存储器缓冲区,其中所述主机存储器被包括在耦合到网络适配器的主机中;
一开始在所述网络适配器上处理分组,以生成卸载到所述主机中的所述存储器缓冲区的数据;
将所述生成的数据卸载到所述主机中的所述存储器缓冲区;以及
处理所述卸载的数据。
23.如权利要求22所述的制品,其中所述指令在被执行时还导致以下操作:
将所述存储器缓冲区划分为多个缓冲区,其中所述多个缓冲区能够存储与多个网络会话相关联的分组数据;
将缓冲区划分为一个或多个分组区域,其中分组区域的大小超过与协议相关联的分组的最大传输单元的大小;以及
将与第一分组相关联的第一分组数据存储在第一分组区域中。
24.如权利要求22所述的制品,其中所述指令在被执行时还导致以下操作:
在所述网络适配器上接收分组;
确定所述分组是否包括数据有效载荷;以及
将所述数据有效载荷排队到所述存储器缓冲区中。
25.如权利要求22所述的制品,其中所述指令在被执行时还导致以下操作:
在所述网络适配器上接收分组;
确定该分组中的数据有效载荷是否超过主机应用缓冲区的大小;以及
如果所述分组中的所述数据有效载荷超过所述主机应用缓冲区的大小,则将所述数据有效载荷排队到所述存储器缓冲区中。
26.如权利要求22所述的制品,其中所述指令在被执行时还导致以下操作:
在所述网络适配器上接收来自所述主机上的主机应用的发送请求;
确定与所述发送请求相关联的会话是否处于同步模式中,其中如果所述会话处于同步模式中,则执行将所述发送请求卸载到所述存储器缓冲区的操作;以及
向所述主机应用指示所述发送请求已完成。
27.如权利要求22所述的制品,其中所述指令在被执行时还导致以下操作:
在所述网络适配器上接收来自所述主机上的主机应用的发送请求,其中应用发送缓冲区与所述发送请求相关联;以及
将所述应用发送缓冲区复制到所述存储器缓冲区。
28.如权利要求22所述的制品,其中所述网络适配器是卸载引擎适配器,并且其中所述主机存储器在尺寸上大于耦合到所述网络适配器的存储器。
29.如权利要求22所述的制品,其中所述存储器缓冲区包括多个缓冲区,其中所述指令在被执行时能够将多个会话的卸载数据存储在所述存储器缓冲区中,并且其中所述指令在被执行时还能够将第一会话的数据卸载在至少一个缓冲区中。
30.如权利要求22所述的制品,其中所述指令用硬件或软件来实现,并且其中所述网络适配器是所述主机的中央处理单元的一部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/637,370 US7400639B2 (en) | 2003-08-07 | 2003-08-07 | Method, system, and article of manufacture for utilizing host memory from an offload adapter |
US10/637,370 | 2003-08-07 | ||
PCT/US2004/024468 WO2005018179A1 (en) | 2003-08-07 | 2004-07-28 | Method, system, and article of manufacture for utilizing host memory from an offload adapter |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1864376A true CN1864376A (zh) | 2006-11-15 |
CN1864376B CN1864376B (zh) | 2010-05-05 |
Family
ID=34116608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800294014A Expired - Fee Related CN1864376B (zh) | 2003-08-07 | 2004-07-28 | 从卸载适配器利用主机存储器的方法、系统和制品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7400639B2 (zh) |
EP (1) | EP1665662B1 (zh) |
CN (1) | CN1864376B (zh) |
TW (1) | TWI258281B (zh) |
WO (1) | WO2005018179A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112740191A (zh) * | 2018-06-08 | 2021-04-30 | Iot耐科特有限公司 | 通信装置 |
WO2022237695A1 (zh) * | 2021-05-14 | 2022-11-17 | 中兴通讯股份有限公司 | 基于主机侧大容量内存的高并发协议栈卸载方法、设备、介质 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US7430171B2 (en) | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US7239636B2 (en) | 2001-07-23 | 2007-07-03 | Broadcom Corporation | Multiple virtual channels for use in network devices |
US7295555B2 (en) | 2002-03-08 | 2007-11-13 | Broadcom Corporation | System and method for identifying upper layer protocol message boundaries |
US7411959B2 (en) | 2002-08-30 | 2008-08-12 | Broadcom Corporation | System and method for handling out-of-order frames |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7934021B2 (en) | 2002-08-29 | 2011-04-26 | Broadcom Corporation | System and method for network interfacing |
US7313623B2 (en) | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US8180928B2 (en) | 2002-08-30 | 2012-05-15 | Broadcom Corporation | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney |
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
US20050141434A1 (en) * | 2003-12-24 | 2005-06-30 | Linden Cornett | Method, system, and program for managing buffers |
US7639713B2 (en) * | 2004-01-21 | 2009-12-29 | Emc Corporation | Database block network attached storage packet joining |
US7761529B2 (en) * | 2004-06-30 | 2010-07-20 | Intel Corporation | Method, system, and program for managing memory requests by devices |
US7474619B2 (en) * | 2004-07-22 | 2009-01-06 | International Business Machines Corporation | Method and apparatus for providing fragmentation at a transport level along a transmission path |
US7620050B2 (en) * | 2004-09-10 | 2009-11-17 | Canon Kabushiki Kaisha | Communication control device and communication control method |
US20060227804A1 (en) * | 2005-04-07 | 2006-10-12 | International Business Machines Corporation | Method for enablement for offloading functions in a single LAN adapter |
US7735099B1 (en) * | 2005-12-23 | 2010-06-08 | Qlogic, Corporation | Method and system for processing network data |
WO2007138250A2 (en) * | 2006-05-25 | 2007-12-06 | Solarflare Communications Incorporated | Computer system with lock- protected queues for sending and receiving data |
US20080235409A1 (en) * | 2006-05-31 | 2008-09-25 | Alexey Vitalievich Ryzhykh | Multiple Phase Buffer Enlargement for Rdma Data Transfer Related Applications |
US20070297334A1 (en) * | 2006-06-21 | 2007-12-27 | Fong Pong | Method and system for network protocol offloading |
US7996519B1 (en) | 2007-03-07 | 2011-08-09 | Comscore, Inc. | Detecting content and user response to content |
PL2127288T3 (pl) * | 2007-03-22 | 2019-08-30 | Optis Wireless Technology, Llc | Sposób i układ w systemie telekomunikacyjnym |
US10218756B2 (en) | 2012-01-06 | 2019-02-26 | Comcast Cable Communications, Llc | Streamlined delivery of video content |
CN104883335B (zh) * | 2014-02-27 | 2017-12-01 | 王磊 | 一种全硬件tcp协议栈实现系统 |
US9894008B2 (en) | 2014-08-20 | 2018-02-13 | Citrix Systems, Inc. | Systems and methods for implementation of jumbo frame over existing network stack |
CN109936510B (zh) | 2017-12-15 | 2022-11-15 | 微软技术许可有限责任公司 | 多路径rdma传输 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293487A (en) | 1991-12-27 | 1994-03-08 | Digital Equipment Corporation | Network adapter with high throughput data transfer circuit to optimize network data transfers, with host receive ring resource monitoring and reporting |
US5307459A (en) | 1992-07-28 | 1994-04-26 | 3Com Corporation | Network adapter with host indication optimization |
US5937169A (en) * | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
US6141705A (en) | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US6788704B1 (en) * | 1999-08-05 | 2004-09-07 | Intel Corporation | Network adapter with TCP windowing support |
US6928482B1 (en) | 2000-06-29 | 2005-08-09 | Cisco Technology, Inc. | Method and apparatus for scalable process flow load balancing of a multiplicity of parallel packet processors in a digital communication network |
CN1470112A (zh) | 2000-10-20 | 2004-01-21 | ά��ϵͳ��˾ | 加密数据安全保护系统和方法 |
US6857030B2 (en) | 2001-09-12 | 2005-02-15 | Sun Microsystems, Inc. | Methods, system and article of manufacture for pre-fetching descriptors |
US7299350B2 (en) | 2002-01-17 | 2007-11-20 | Intel Corporation | Internet protocol security decryption with secondary use speculative interrupts |
US7644188B2 (en) * | 2002-02-25 | 2010-01-05 | Intel Corporation | Distributing tasks in data communications |
US20040049580A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms |
US7327678B2 (en) * | 2002-10-18 | 2008-02-05 | Alcatel Lucent | Metro ethernet network system with selective upstream pause messaging |
-
2003
- 2003-08-07 US US10/637,370 patent/US7400639B2/en not_active Expired - Fee Related
-
2004
- 2004-07-28 WO PCT/US2004/024468 patent/WO2005018179A1/en active Application Filing
- 2004-07-28 EP EP04757368A patent/EP1665662B1/en not_active Expired - Lifetime
- 2004-07-28 CN CN2004800294014A patent/CN1864376B/zh not_active Expired - Fee Related
- 2004-07-29 TW TW093122715A patent/TWI258281B/zh not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112740191A (zh) * | 2018-06-08 | 2021-04-30 | Iot耐科特有限公司 | 通信装置 |
CN112740191B (zh) * | 2018-06-08 | 2023-03-28 | Iot耐科特有限公司 | 通信装置 |
WO2022237695A1 (zh) * | 2021-05-14 | 2022-11-17 | 中兴通讯股份有限公司 | 基于主机侧大容量内存的高并发协议栈卸载方法、设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
US20050030972A1 (en) | 2005-02-10 |
EP1665662B1 (en) | 2013-02-27 |
US7400639B2 (en) | 2008-07-15 |
CN1864376B (zh) | 2010-05-05 |
EP1665662A1 (en) | 2006-06-07 |
TWI258281B (en) | 2006-07-11 |
TW200516919A (en) | 2005-05-16 |
WO2005018179A1 (en) | 2005-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1864376A (zh) | 从卸载适配器利用主机存储器的方法、系统和制品 | |
CN100438403C (zh) | 用于管理通过网络的数据传输的方法和系统 | |
CN109768939B (zh) | 一种支持优先级的标签化网络栈方法和系统 | |
US8010707B2 (en) | System and method for network interfacing | |
US7664892B2 (en) | Method, system, and program for managing data read operations on network controller with offloading functions | |
TWI332150B (en) | Processing data for a tcp connection using an offload unit | |
US7263103B2 (en) | Receive queue descriptor pool | |
US10079740B2 (en) | Packet capture engine for commodity network interface cards in high-speed networks | |
EP2372489A1 (en) | High data rate stateful protocol processing | |
US20030158906A1 (en) | Selective offloading of protocol processing | |
US20060013128A1 (en) | Method, system, and program for managing congestion in a network controller | |
US20090254647A1 (en) | System and method for network interfacing | |
US20040268017A1 (en) | Virtual write buffers for accelerated memory and storage access | |
CN1606290A (zh) | 为通过网络的数据传输管理存储器的方法、系统和程序 | |
CN1458590A (zh) | 用网络栈同步和上载已卸载网络栈连接的方法 | |
EP1759317B1 (en) | Method and system for supporting read operations for iscsi and iscsi chimney | |
CN113490927A (zh) | 具有硬件集成和乱序放置的rdma输送 | |
US20080301311A1 (en) | Method and system for extended steering tags (stags) to minimize memory bandwidth for content delivery servers | |
US7761529B2 (en) | Method, system, and program for managing memory requests by devices | |
EP1554644A2 (en) | Method and system for tcp/ip using generic buffers for non-posting tcp applications | |
US6983334B2 (en) | Method and system of tracking missing packets in a multicast TFTP environment | |
US20050281286A1 (en) | Storage structure and method utilizing multiple protocol processor units | |
KR20070072682A (ko) | 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드 | |
US20050091406A1 (en) | Method, apparatus, system, and article of manufacture for processing control data by an offload adapter | |
CN1578267A (zh) | 处理分组以在主机系统的网络上传送的方法、系统及程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100505 Termination date: 20180728 |