CN102427446B - 分组合并 - Google Patents
分组合并 Download PDFInfo
- Publication number
- CN102427446B CN102427446B CN201110282788.6A CN201110282788A CN102427446B CN 102427446 B CN102427446 B CN 102427446B CN 201110282788 A CN201110282788 A CN 201110282788A CN 102427446 B CN102427446 B CN 102427446B
- Authority
- CN
- China
- Prior art keywords
- internet protocol
- payload
- network packet
- transmission control
- packets
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
Abstract
一般来说,在一个方面,本公开描述包括接收多个入局因特网协议分组的方法,多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,在其中,多个分组属于相同的传输控制协议/因特网协议流。该方法还包括预备具有单个因特网协议首标以及具有单个传输控制协议首标和由多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷的单个传输控制协议段的因特网协议分组。该方法还包括产生引起因特网协议分组的接收处理的信号。
Description
本发明申请是本发明申请人于2005年11月10日提交的、申请号为200580035537.0、发明名称为“分组合并”的发明申请的分案申请。
技术领域
本发明涉及计算机领域,具体而言涉及分组合并。
背景技术
网络使计算机和其它装置能够进行通信。例如,网络可承载表示视频、音频、电子邮件等的数据。通过网络发送的数据通常由称作分组的较小消息承载。打个比方,分组更像放入邮筒的信封。分组通常包括“净荷”和“首标”。分组的“净荷”与信封内的信函相似。分组的“首标”更像在信封本身上书写的信息。首标可包括帮助网络装置适当地处理分组的信息。
多个网络协议(例如,“协议栈”)配合以处理网络通信的复杂度。例如,称作传输控制协议(TCP)的传输协议为应用提供用于建立流并通过网络传送数据的简单机制。在后台,TCP透明地处理各种通信事宜,诸如数据重传、适应网络业务拥塞等等。
为了提供这些服务,TCP对称作段的分组进行操作。一般来说,TCP段在较大的分组、如因特网协议(IP)数据报中(由其“封装”)经过网络。例如,在局域网(LAN)中,IP数据报经常还由甚至更大的分组、如以太网帧来封装。TCP段的净荷承载由应用通过网络发送的数据流的一部分。接收机可通过重组所接收的段来恢复原始数据流。为了允许所接收数据的重组以及回送给发送方的确认(ACK),TCP把序列号与各净荷字节关联。
发明内容
本发明一方面涉及一种方法,包括:接收在网络上向主机传送的网络分组,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及(2)包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。
本发明另一方面涉及一种部署在非暂时性计算机可读存储媒体上的计算机程序,包括用于引起装置执行以下步骤的指令:接收在网络上向主机传送的网络分组,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及(2)包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。
本发明另一方面涉及一种网络装置,包括电路,所述电路配置成:接收在网络上向主机传送的网络分组,所述网络分组中多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及(2)包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。
本发明另一方面涉及一种方法,包括:接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备包括:确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流;并且其中,所述接收、预备和产生包括由网络接口控制器接收、预备和产生。
本发明另一方面涉及一种网络接口控制器,所述控制器包括:到通信媒体的至少一个接口;至少一个媒体访问控制器;以及执行以下步骤的电路:接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;以及根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;发起至少一个直接存储器存取,从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备电路包括执行以下步骤的电路:确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;并且其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流。
本发明另一方面涉及一种系统,包括:至少一个处理器;存储器;到通信媒体的至少一个接口;以及执行以下步骤的网络接口控制器电路:接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;发起至少一个直接存储器存取,从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备电路包括执行以下步骤的电路:确定所述单个传输控制协议首标的传输控制协议校验和;确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;以及其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号和目标端口号所标识的流。
本发明另一方面涉及一种方法,包括:接收入局因特网协议分组,所述入局因特网协议分组具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段;确定所接收入局因特网协议分组是否具有与具有相同流标识符的一组因特网协议分组的流标识符匹配的流标识符,将要组合成单个因特网协议分组的所述一组因特网协议分组具有单个因特网协议分组首标和单个传输控制协议首标以及单个传输控制协议净荷,所述流标识符至少部分基于所接收入局因特网协议分组的因特网协议源、因特网协议目标、传输控制协议源端口和传输控制协议目标端口,所述一组因特网协议分组具有关联的描述符;在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列是所述流的下一预期传输控制协议序列号并且所接收入局因特网协议分组的传输控制协议首标不具有RST、SYN、FIN或URG标志设置中任一个之后,把所述因特网协议分组添加到所述一组因特网协议分组,并且增加与所述一组因特网协议分组关联的描述符的分组计数;确定组合了所述一组因特网协议分组的单个因特网协议分组,所述单个因特网协议分组具有单个因特网协议首标、单个传输控制协议首标以及由所接收入局因特网协议分组的传输控制协议净荷和多于一个之前接收的因特网协议分组的传输控制净荷的传输控制协议净荷组合形成的单个传输控制协议净荷,确定所述单个因特网协议分组包括:设置所述单个因特网协议首标的因特网协议长度字段以对应于经组合的那组因特网协议分组,设置所述单个因特网协议首标的ACK序列号以对应于经组合的那组传输控制协议段;以及把所确定的单个因特网协议分组而不是所述一组因特网协议分组提供给主机TCP/IP协议栈。
附图说明
图1A-1C说明分组合并的一个实例。
图2是网络接口控制器的简图。
图3是网络接口控制器用来合并分组的表的简图。
图4和图5是说明分组合并的流程图。
具体实施方式
许多应用接收和处理大量网络数据。桌面应用实例包括万维网浏览器、流媒体播放器以及网络文件共享应用。服务器应用包括万维网服务器、文件服务器、存储服务器、电子邮件服务器和数据库后端。基础协议栈(例如TCP/IP栈)通常接收许多分组并分别对它们进行处理,即使这些分组的部分或全部是相同流的一部分。与各分组的处理关联的是例如由于解析首标、标识和更新流状态信息、产生ACK消息等而引起的某种处理开销。
图1A-1C说明把给定流的多个分组合并成单个分组的技术的示例实现。图1A-1C所示的示例系统包括处理器104和存储器102。该系统还包括从网络接收分组的网络接口控制器(NIC)(又称作网络适配器)100。不是把每个所接收分组写入存储器102以便随后处理,而是控制器100包括合并分组的逻辑112。这个逻辑112组合属于相同流的不同分组的TCP净荷,并为组合的TCP净荷预备单个TCP首标和单个IP首标。IP首标、TCP首标和组合TCP净荷的组合形成单个合并分组。因此,协议栈可为更少但更大的分组执行接收处理,从而减小所引起的每个分组的处理代价。
为了说明合并,图1A描绘了由网络接口控制器100接收的具有TCP和IP首标106a以及TCP净荷106b的分组106。控制器100可执行各种任务,包括从帧内取出分组106、检验帧校验和以及其它链路层操作。
如图所示,分组属于一个流(在图1A中任意标记为“1”)。分组的流可由控制器100通过首标中的数据来标识。例如,TCP/IP流可通过IP源和目标地址以及TCP首标中的源和目标端口号的组合所形成的元组来标识。元组可能没有包含所有这些首标字段,并且可包含其它信息(例如协议标识符)。
在图1A中,控制器100存储所接收分组106的首标106a和净荷106b,以便与后来接收的分组进行可能的合并。例如,如图所示,控制器100可例如经由一个或多个直接存储器存取(DMA)操作把分组106的净荷106b存储在存储器102中,并且把首标106a存储在控制器100的表中。该表还可包括用于合并过程的其它信息。存储器102中写入净荷数据106b的位置可通过由运行于处理器104上的驱动器软件传递给控制器100的描述符来指定。例如,描述符还可包括其它字段、诸如存储分组首标的位置的存储器地址,以便支持首标分离。
在图1B中,控制器100接收属于与图1A中接收到的分组相同的流(“1”)的第二分组108。不是只写入分组存储器102,而是控制器100把分组106、108的两个净荷106b、108b共同组合为单块净荷110b。组合可包括物理上邻接地存储净荷位106b、108b。或者,例如,组合可包括关联净荷106b、108b作为链表中的节点。净荷的这种组合可对于对流接收的另外分组继续进行。
除了收集不同的净荷之外,控制器100还预备反映组合TCP净荷110b的合并分组110的单个IP首标和单个TCP首标110a。例如,控制器100可查找与流关联的TCP/IP首标106a,并修改IP首标的长度字段以反映组合净荷的长度。控制器100还可修改TCP首标的校验和。另外,控制器100还可改变TCP首标的ACK序列号,以便合并入局ACK消息。这种更新可在组合各净荷时执行。或者,例如,更新可延迟某个时间段。
最后(例如,在合并窗口结束之后),如图1C所示,控制器100可把合并分组的首标110a和流的描述符写入存储器102。然后,控制器100可发出中断信号来发起合并分组110的接收处理(例如网络和/或传输层处理)。例如,TCP接收处理可包括重组、重新排序、ACK的产生、在流的TCP状态机中导航等等。
合并的分组的数量和/或合并分组的时间段可以是可配置的。例如,网络接口控制器通常采用称作中断缓和的技术来分批处理在某个时间窗口内接收的分组的信令。控制器100可采用中断缓和窗口来合并流的尽可能多的分组。考虑到合并开销(例如,首标预备),控制器100可采用小于中断缓和窗口的时间窗口(合并窗口)来合并分组。在合并窗口期间,控制器100获得在合并窗口期间接收数据的流的描述符(例如,通过使控制器100的设备驱动器提供的描述符退出队列),并且一般将描述符保留到合并窗口到期或者控制器100接收到不满足合并标准的流分组(下文描述),或者净荷的大小超过描述符所标识的分组缓冲器中的可用空间。在合并窗口到期之后,控制器100预备首标,把描述符写入存储器,在中断缓和时间结束时发出中断信号,以及清除用于在先前窗口内合并分组的数据。然后,合并过程重新开始。
为了说明的简洁起见,图1A-1C所示的系统没有包括典型平台的许多传统组件(例如,互连处理器104、存储器102和NIC 100的芯片组和/或I/O控制器集线器)。另外,图1A-1C所示的配置在不同系统中可能显著改变。例如,给定系统可包含多个处理器(例如,分立处理器和/或集成在相同晶片中的处理器核心)、多个NIC和/或各种存储装置(例如单、双或四端口存储器)。类似地,控制器100可集成在处理器104、芯片组(未示出)或其它电路中。另外,系统可包括TCP/IP卸载引擎(TOE),它可执行以上描述为由NIC 100或处理器104所处理的任务。
图2更详细地说明网络接口控制器200的示例体系结构。虽然表示为处理来自网络的入局分组,但是控制器200也可处理送往网络的出局分组。
如图所示,控制器100可包括与通信媒体(例如,电缆或无线电装置)接口的物理层装置(PHY)202。PHY 202可在通信媒体的模拟信号与用来处理分组的数字位之间进行转换。如图所示,媒体访问控制器(MAC)204收集由PHY 202(例如,经由FIFO队列)输出的位。MAC204可执行各种链路层操作(例如,检验以太网校验和等等)。例如,合并电路206对MAC 204输出的分组进行操作,如图1A-1C所示。合并电路206可能是“硬连线”电路,例如专用集成电路(ASIC)。或者,电路206可包括执行指令以处理分组的可编程引擎。如图所示,电路206经由DMA控制器210与主机系统接口。
合并电路206可通过各种方式来实现合并。例如,如图3所示,电路206可构建跟踪正进行合并的表212。如图所示,这样一种表212可把流ID(例如,TCP/IP元组或TCP/IP元组的散列)与分组的起始字节序列号、净荷字节的数量、分组描述符的地址、净荷缓冲器的地址以及首标缓冲器的地址关联。表212可存储其它数据(未示出),例如流的首标字段。例如,表212可存储IP源、IP目标、IP标识和版本、IPv6流ID和优先级、TCP源端口、TCP目标端口、TCP序列号、TCPACK号、TCP校验和和/或TCP时标。表212还可对为流合并的分组的数量计数以便以后把那个信息传递给TCP/IP栈(例如,经由描述符中的字段)、对合并的ACK段的数量计数,并且可存储老化计数器以支持用于在合并窗口结束之前关闭空闲描述符的“描述符老化”(下文描述)。
用于给定流的表212的数据随合并进行而被修改。例如,字节的数量可经过调节以反映新组合的净荷的附加字节。类似地,合并的净荷的数量可随所组合的各附加TCP净荷增加。表212的数据可用来预备已合并分组的首标,以及预备对应的描述符。同样,例如在合并窗口结束之后,可清除表212的数据。
控制器可包括其它组件(未示出)。例如,控制器可包括例如使驱动器能够启用或禁用合并的寄存器。
图4说明合并分组的过程的流程图。如图所示,该过程组合256相同流中的分组的净荷,并为组合净荷预备258单个TCP段首标和单个IP首标。然后可产生中断,以便由TCP/IP栈发起对已合并分组的处理。
如图所示,可从合并中排除254某些分组。例如,分组可能需要满足一个或多个标准。例如,合并可仅对具有有效校验和的TCP段执行。另外,也可根据诸如把段标识为控制段的信息之类的首标信息(例如,RST、FIN、SYN、SYN-ACK、URG标志设置)从与先前接收的分组的合并中排除甚至有效的TCP段。在这些情况下,这个流的先前正进行的合并可终止(例如,对于任何先前组合的流净荷,IP和TCP首标可被预备并写入存储器,以及对应的描述符数据被写入)。
TCP/IP分组有可能无序地被接收(即,所接收分组的序列号不匹配流的下一个后续的序列号)。在这种情况中,新的合并分组可开始(例如,描述符被获得以及表条目被写入)。也就是说,给定流可能在流的字节序列中的多个点上具有进行中的合并。此后,流分组的净荷可根据所接收分组的序列号被添加到对于给定流所合并的各个分组之一。或者,为了简洁起见,流的先前正进行的分组合并可在无序接收到分组之后终止。
其它情况可能影响分组合并。例如,如果分组的TCP首标表明已设置“PUSH”标志,则这个流的合并可在所接收分组的合并之后完成,并且这个流的后续分组将采用新的描述符来合并。类似地,如果入局分组的净荷的合并超过已分配缓冲器中的可用空间,则控制器可终止(例如,产生单个TCP和单个IP首标,并写入对应的描述符)当前正进行的合并,并重新开始流的合并(例如,写入新的表条目并获得新的描述符)。
图5说明分组合并的一个示例实现。在所示实现中,如果分组300是IP数据报302(例如,IPv4或IPv6数据报)或者封装IP数据报的帧,则对于首标选项和/或分片检查304 IP首标。如果存在这些条件中的任一个,则合并可能不发生308,并且分组可按传统方式来处理(例如,描述符被获得、回写,以及分组被直接存储器存取到存储器中)。否则,该过程尝试验证306IP分组中的TCP段(例如,通过确定TCP段首标校验和是否有效)。如果TCP段无效,同样对于该分组不会发生合并308。
对于有效的TCP段,该过程例如根据分组的TCP/IP元组来确定310流ID。如果TCP段是数据段(例如,IPheader.total_len-Ipheader.header_len-TCPheader.Data_Offset>0)312,则对于与时标选项不同的选项以及对于与ACK和/或PSH不同的标志检查314、316TCP段首标。如果存在这些条件中的任一个312、314、316,则不发生合并308。另外,如果合并已经对流开始,则通过产生TCP和IP首标,关闭用于合并流的分组的描述符以及使流的表条目无效,来停止现有的合并332。
假定满足条件302、304、306、312、314、316,则该过程确定320合并是否已经对流执行。如果没有,并且TCP PSH标志未设置,则该过程可(表空间允许326)初始化流的表条目,读取描述符,并对该流开始与当前分组的合并330。如果在表326中不存在用于附加条目的足够空间,则例如可采用最近最少使用算法来选择要删除的条目并关闭关联描述符,来放弃(未示出)先前写入的条目。
如果合并320对于这个流已建立,则过程可根据其序列号来确定是否有序地接收到TCP段324。如果无序地接收到该段324,则流的正进行的合并可终止332。如果有序地取回该段324,并且净荷缓冲器具有足够空间334用于附加TCP净荷,则过程可通过把净荷数据复制336到流的描述符所指定的净荷缓冲器中已确定偏移328并更新流的条目数据(例如,更新所合并分组的数量、下一个预计序列号、净荷字节的数量等),来把所接收TCP段的净荷与流中先前接收的TCP段的净荷组合。如果当前段的PSH标志已设置338,则合并可在这些操作之后终止342。
如果存储净荷的缓冲器没有足够空间334来添加当前分组的TCP净荷,则可预备TCP和IP首标,并且流描述符被关闭340。在这种情况中,如果PSH标志已设置346,则按照传统方式处理分组。否则,对于流获得新读取的描述符,以及合并以该分组重新开始348。
在处理分组之后,如果合并窗口已经到期,则分组描述符和首标被预备,并写入存储器,并且表内容被刷新。否则,图5所示的过程对于另一个分组重复进行。
可实现图5所示的示例过程的各种各样不同的变化。例如,为了防止未完成的描述符阻挡后来的描述符(例如,如果NIC驱动器依次读取描述符),过程可在某个固定时间段之后关闭老化描述符,而没有接收附加的连续分组,即使合并窗口可能没有到期。或者,较早的描述符可在后来的描述符完成时被关闭。
虽然图1-5以及对应文本描述了示例实现,但是各种各样的其它实现可采用以上所述技术中的一个或多个。例如,不是在存储器中合并分组,而是控制器可在分组传送到存储器之前在其自己的内部缓冲器中合并分组。另外,这些技术可用来实现其它传输层协议、网络协议栈内的其它层中的协议、不同于TCP和IP的协议,以及用来处理其它协议数据单元。例如,不用以太网帧,而是可由HDLC或PPP帧来承载分组。另外,术语IP涵盖IPv4以及IPv6IP实现。
本文所使用的术语“电路”包括硬连线电路、数字电路、模拟电路、可编程电路等等。可编程电路可对部署在制造商的产品(例如非易失性存储器,比如只读存储器)上的可执行指令进行操作。
其它实施例处于随附权利要求书的范围之内。
Claims (33)
1.一种用于分组合并的方法,包括:
接收在网络上向主机传送的网络分组,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;
为多个相应网络分组流,至少维护:
(1)对应于所述流的网络分组的净荷列表;以及
(2)包含在所述列表中的净荷的数量;
确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;
把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;
增加包含在所述列表中的、对应于所述相应流的净荷的数量;
确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据;
根据确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据,产生网络分组,所产生的网络分组具有:
(1)在所述多个网络分组中的每个内找到的同一组多个首标结构;和
(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及
引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。
2.如权利要求1所述的方法,
其中,所述多个首标结构包括因特网协议(IP)首标和传输控制协议(TCP)首标;以及
其中,所述流包括由所述首标结构中的数据确定的流。
3.如权利要求1所述的方法,
其中,所述多个首标结构包括至少两个首标结构。
4.如权利要求1所述的方法,
其中,产生所述网络分组包括为所述首标结构中的字段确定新的值。
5.如权利要求1所述的方法,
其中,确定所述主机协议栈应该处理所述分组的净荷包括:
确定匹配所述流中之一的所接收网络分组;以及
确定不把所接收网络分组中所述之一的净荷添加到对应于所述流的网络分组的净荷列表。
6.一种用于分组合并的装置,包括:
用于接收在网络上向主机传送的网络分组的部件,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;
用于为多个相应网络分组流至少维护(1)对应于所述流的网络分组的净荷列表以及(2)包含在所述列表中的净荷的数量的部件;
用于确定所接收网络分组中之一属于匹配所述多个相应流中之一的流的部件;
用于把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表的部件;
用于增加包含在所述列表中的、对应于所述相应流的净荷的数量的部件;
用于确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据的部件;
用于根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据产生网络分组的部件,所产生的网络分组具有:
(1)在所述多个网络分组中的每个内找到的同一组多个首标结构;和
(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及
用于引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理的部件。
7.如权利要求6所述的装置,
其中,所述多个首标结构包括因特网协议(IP)首标和传输控制协议(TCP)首标;以及
其中,所述流包括由所述首标结构中的数据确定的流。
8.如权利要求6所述的装置,
其中,所述多个首标结构包括至少两个首标结构。
9.如权利要求6所述的装置,
其中,用于产生网络分组的所述部件包括用于为所述首标结构中的字段确定新的值的指令的部件。
10.如权利要求6所述的装置,
其中,用于确定主机协议栈应该处理所述分组的净荷的所述部件包括:
用于确定匹配所述流中之一的所接收网络分组的部件;以及
用于确定不把所接收网络分组中所述之一的净荷添加到对应于所述流的网络分组的净荷列表的部件。
11.一种用于分组合并的网络装置,包括电路,所述电路配置成:
接收在网络上向主机传送的网络分组,所述网络分组中多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;
为多个相应网络分组流,至少维护:
(1)对应于所述流的网络分组的净荷列表;以及
(2)包含在所述列表中的净荷的数量;
确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;
把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;
增加包含在所述列表中的、对应于所述相应流的净荷的数量;
确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据;
根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据,产生网络分组,所产生的网络分组具有:
(1)在所述多个网络分组中的每个内找到的同一组多个首标结构;和
(2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及
引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。
12.如权利要求11所述的网络装置,
其中,所述多个首标结构包括因特网协议(IP)首标和传输控制协议(TCP)首标;以及
其中,所述流包括由所述首标结构中的数据确定的流。
13.如权利要求11所述的网络装置,
其中,所述多个首标结构包括至少两个首标结构。
14.如权利要求11所述的网络装置,
其中,配置成产生网络分组的电路包括配置成为所述首标结构中的字段确定新的值的电路。
15.如权利要求11所述的网络装置,
其中,配置成引起所述装置确定主机协议栈应该处理所述分组的净荷的电路包括配置成引起所述装置执行以下步骤的电路:
确定匹配所述流中之一的所接收网络分组;以及
确定不把所接收网络分组中所述之一的净荷添加到对应于所述流的网络分组的净荷列表。
16.一种用于分组合并的方法,包括:
接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;
预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;
根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:
所述至少一个分组包括无效的传输控制协议校验和;
所述至少一个分组不包括传输控制协议数据段;
所述至少一个分组包括无序接收的传输控制协议段;和
所述至少一个分组包括传输控制协议紧急标志设置;
产生引起对所述因特网协议分组的接收处理的信号;
表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷;
其中,所述预备包括:
确定所述单个因特网协议首标的字节长度;和
确定所述单个传输控制协议首标的已确认序列号;
其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流,并且
其中,所述接收、预备和产生包括由网络接口控制器接收、预备和产生。
17.如权利要求16所述的方法,
还包括把所述净荷邻接地存储在存储器中。
18.如权利要求16所述的方法,
其中,所述预备包括调节所接收多个分组中之一的至少一个首标的至少一个值。
19.如权利要求16所述的方法,还包括:
维护标识不同流的表,所述表把相应流与从以下组中选取的至少一项关联:序列号、净荷字节的数量、分组描述符的地址、净荷的地址以及首标的地址。
20.如权利要求16所述的方法,其中,所述预备包括根据小于中断缓和时间窗口的时间窗口来预备。
21.如权利要求16所述的方法,还包括表明经由所述描述符合并的ACK的数量。
22.一种用于分组合并的网络接口控制器,所述控制器包括:
到通信媒体的至少一个接口;
至少一个媒体访问控制器;以及
执行以下步骤的电路:
接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;
预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;以及
根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:
所述至少一个分组包括无效的传输控制协议校验和;
所述至少一个分组不包括传输控制协议数据段;
所述至少一个分组包括无序接收的传输控制协议段;和
所述至少一个分组包括传输控制协议紧急标志设置;
产生引起对所述因特网协议分组的接收处理的信号;
发起至少一个直接存储器存取,从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及
表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷;
其中,所述预备因特网协议分组的电路包括执行以下步骤的电路:
确定所述单个因特网协议首标的字节长度;和
确定所述单个传输控制协议首标的已确认序列号;并且
其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流。
23.如权利要求22所述的控制器,
其中,所述预备电路包括调节所接收多个分组中之一的至少一个首标的至少一个值的电路。
24.如权利要求22所述的控制器,
其中,所述所接收入局分组包括在小于网络接口控制器的中断缓和时间段的时间段中接收的分组。
25.如权利要求22所述的控制器,其中,所述至少一个媒体访问控制器包括以太网媒体访问控制器。
26.一种用于分组合并的系统,包括:
至少一个处理器;
存储器;
到通信媒体的至少一个接口;以及
执行以下步骤的网络接口控制器电路:
接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;
预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;
根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组:
所述至少一个分组包括无效的传输控制协议校验和;
所述至少一个分组不包括传输控制协议数据段;
所述至少一个分组包括无序接收的传输控制协议段;和
所述至少一个分组包括传输控制协议紧急标志设置;
产生引起对所述因特网协议分组的接收处理的信号;
发起至少一个直接存储器存取,从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及
表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷;
其中,所述预备因特网协议分组的电路包括执行以下步骤的电路:
确定所述单个传输控制协议首标的传输控制协议校验和;
确定所述单个因特网协议首标的字节长度;和
确定所述单个传输控制协议首标的已确认序列号;以及
其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号和目标端口号所标识的流。
27.如权利要求26所述的系统,
其中,所述预备因特网协议分组的电路包括调节所接收多个分组中之一的至少一个首标的至少一个值的电路。
28.如权利要求26所述的系统,
其中,所接收入局分组包括在小于网络接口控制器的中断缓和时间段的时间段中接收的分组。
29.如权利要求26所述的系统,其中,所述电路包括所述处理器的一部分。
30.一种用于分组合并的方法,包括
接收入局因特网协议分组,所述入局因特网协议分组具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段;
确定所接收入局因特网协议分组是否具有与具有相同流标识符的一组因特网协议分组的流标识符匹配的流标识符,将要组合成单个因特网协议分组的所述一组因特网协议分组具有单个因特网协议分组首标和单个传输控制协议首标以及单个传输控制协议净荷,所述流标识符至少部分基于所接收入局因特网协议分组的因特网协议源、因特网协议目标、传输控制协议源端口和传输控制协议目标端口,所述一组因特网协议分组具有关联的描述符;
在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列是所述流的下一预期传输控制协议序列号并且所接收入局因特网协议分组的传输控制协议首标不具有RST、SYN、FIN或URG标志设置中任一个之后:
把所述因特网协议分组添加到所述一组因特网协议分组;并且
增加与所述一组因特网协议分组关联的描述符的分组计数;
确定组合了所述一组因特网协议分组的单个因特网协议分组,所述单个因特网协议分组具有单个因特网协议首标、单个传输控制协议首标以及由所接收入局因特网协议分组的传输控制协议净荷和多于一个之前接收的因特网协议分组的传输控制净荷的传输控制协议净荷组合形成的单个传输控制协议净荷,确定所述单个因特网协议分组包括:
设置所述单个因特网协议首标的因特网协议长度字段以对应于经组合的那组因特网协议分组,
设置所述单个因特网协议首标的ACK序列号以对应于经组合的那组传输控制协议段;以及
把所确定的单个因特网协议分组而不是所述一组因特网协议分组提供给主机TCP/IP协议栈。
31.如权利要求30所述的方法,
其中,确定所述单个因特网协议首标还包括设置所述因特网协议校验和以对应于经组合的那组因特网协议分组。
32.如权利要求30所述的方法,还包括:
在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列不是所述流的下一预期传输控制协议序列号或所接收入局因特网协议分组的传输控制协议首标具有RST、SYN、FIN或URG标志设置中任一个之后:
把所接收入局因特网协议分组提供给所述主机TCP/IP协议栈;以及
提供由所述一组因特网协议分组的组合形成的单个因特网协议分组。
33.如权利要求30所述的方法,
其中,把所述因特网协议分组添加到具有相同流标识符的要组合成单个因特网协议分组的所述一组因特网协议分组包括把条目添加到链接列表,其中所述链接列表中的条目对应于所述一组因特网协议分组中的不同分组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/991239 | 2004-11-16 | ||
US10/991,239 US7620071B2 (en) | 2004-11-16 | 2004-11-16 | Packet coalescing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800355370A Division CN101044737B (zh) | 2004-11-16 | 2005-11-10 | 分组合并 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102427446A CN102427446A (zh) | 2012-04-25 |
CN102427446B true CN102427446B (zh) | 2015-01-14 |
Family
ID=35965914
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800355370A Active CN101044737B (zh) | 2004-11-16 | 2005-11-10 | 分组合并 |
CN201110282788.6A Active CN102427446B (zh) | 2004-11-16 | 2005-11-10 | 分组合并 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800355370A Active CN101044737B (zh) | 2004-11-16 | 2005-11-10 | 分组合并 |
Country Status (7)
Country | Link |
---|---|
US (7) | US7620071B2 (zh) |
EP (1) | EP1813084B1 (zh) |
CN (2) | CN101044737B (zh) |
AT (1) | ATE388574T1 (zh) |
DE (1) | DE602005005219T2 (zh) |
TW (2) | TWI411279B (zh) |
WO (1) | WO2006055494A1 (zh) |
Families Citing this family (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6957281B2 (en) | 2002-01-15 | 2005-10-18 | Intel Corporation | Ingress processing optimization via traffic classification and grouping |
US7620071B2 (en) | 2004-11-16 | 2009-11-17 | Intel Corporation | Packet coalescing |
US7404040B2 (en) * | 2004-12-30 | 2008-07-22 | Intel Corporation | Packet data placement in a processor cache |
US8457131B2 (en) * | 2005-02-18 | 2013-06-04 | Broadcom Corporation | Dynamic table sharing of memory space within a network device |
US20070022212A1 (en) * | 2005-07-22 | 2007-01-25 | Fan Kan F | Method and system for TCP large receive offload |
US8311059B2 (en) * | 2005-09-07 | 2012-11-13 | Emulex Design & Manufacturing Corporation | Receive coalescing and automatic acknowledge in network interface controller |
US20070219663A1 (en) * | 2006-01-03 | 2007-09-20 | Eddy Verstraeten | Tracking an Item on a Packaging Line |
US20080095165A1 (en) * | 2006-02-16 | 2008-04-24 | Intelliserv, Inc. | Net-Layer Parsing and Resynchronization |
US8102842B2 (en) | 2006-08-04 | 2012-01-24 | Broadcom Corporation | Integrated switch |
US7987307B2 (en) * | 2006-09-22 | 2011-07-26 | Intel Corporation | Interrupt coalescing control scheme |
US8165133B2 (en) * | 2006-12-22 | 2012-04-24 | Broadcom Corporation | Physical layer device with integrated switch |
US7840703B2 (en) * | 2007-08-27 | 2010-11-23 | International Business Machines Corporation | System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture |
US7809970B2 (en) | 2007-08-27 | 2010-10-05 | International Business Machines Corporation | System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture |
US7769891B2 (en) * | 2007-08-27 | 2010-08-03 | International Business Machines Corporation | System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture |
US7904590B2 (en) | 2007-08-27 | 2011-03-08 | International Business Machines Corporation | Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture |
US8014387B2 (en) * | 2007-08-27 | 2011-09-06 | International Business Machines Corporation | Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture |
US7769892B2 (en) | 2007-08-27 | 2010-08-03 | International Business Machines Corporation | System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture |
US7958182B2 (en) | 2007-08-27 | 2011-06-07 | International Business Machines Corporation | Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture |
US7958183B2 (en) | 2007-08-27 | 2011-06-07 | International Business Machines Corporation | Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture |
US8108545B2 (en) | 2007-08-27 | 2012-01-31 | International Business Machines Corporation | Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture |
US7822889B2 (en) * | 2007-08-27 | 2010-10-26 | International Business Machines Corporation | Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture |
US8140731B2 (en) | 2007-08-27 | 2012-03-20 | International Business Machines Corporation | System for data processing using a multi-tiered full-graph interconnect architecture |
US8185896B2 (en) * | 2007-08-27 | 2012-05-22 | International Business Machines Corporation | Method for data processing using a multi-tiered full-graph interconnect architecture |
US7793158B2 (en) * | 2007-08-27 | 2010-09-07 | International Business Machines Corporation | Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture |
US8427951B2 (en) * | 2007-08-30 | 2013-04-23 | International Business Machines Corporation | Method, system, and apparatus for reliable data packet recovery in a link layer of a data center ethernet network |
US7827428B2 (en) | 2007-08-31 | 2010-11-02 | International Business Machines Corporation | System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture |
US7921316B2 (en) | 2007-09-11 | 2011-04-05 | International Business Machines Corporation | Cluster-wide system clock in a multi-tiered full-graph interconnect architecture |
US7738471B2 (en) * | 2007-09-14 | 2010-06-15 | Harris Corporation | High speed packet processing in a wireless network |
US8661167B2 (en) * | 2007-09-17 | 2014-02-25 | Intel Corporation | DMA (direct memory access) coalescing |
US8001278B2 (en) * | 2007-09-28 | 2011-08-16 | Intel Corporation | Network packet payload compression |
US20090086736A1 (en) * | 2007-09-28 | 2009-04-02 | Annie Foong | Notification of out of order packets |
US7916728B1 (en) | 2007-09-28 | 2011-03-29 | F5 Networks, Inc. | Lockless atomic table update |
US7779148B2 (en) | 2008-02-01 | 2010-08-17 | International Business Machines Corporation | Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips |
US8077602B2 (en) * | 2008-02-01 | 2011-12-13 | International Business Machines Corporation | Performing dynamic request routing based on broadcast queue depths |
US20090198956A1 (en) * | 2008-02-01 | 2009-08-06 | Arimilli Lakshminarayana B | System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture |
CN101500341B (zh) * | 2008-02-02 | 2011-02-02 | 上海贝尔阿尔卡特股份有限公司 | 基于窗的内容同步的网关和基站及其方法 |
US8306036B1 (en) | 2008-06-20 | 2012-11-06 | F5 Networks, Inc. | Methods and systems for hierarchical resource allocation through bookmark allocation |
US8341286B1 (en) * | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US8769681B1 (en) | 2008-08-11 | 2014-07-01 | F5 Networks, Inc. | Methods and system for DMA based distributed denial of service protection |
US8160060B2 (en) * | 2008-11-10 | 2012-04-17 | Infosys Technologies Limited | System and method for transferring data using variance based messaging |
US8447884B1 (en) | 2008-12-01 | 2013-05-21 | F5 Networks, Inc. | Methods for mapping virtual addresses to physical addresses in a network device and systems thereof |
US8495403B2 (en) | 2008-12-31 | 2013-07-23 | Intel Corporation | Platform and processor power management |
US9152483B2 (en) | 2009-01-16 | 2015-10-06 | F5 Networks, Inc. | Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof |
US8112491B1 (en) | 2009-01-16 | 2012-02-07 | F5 Networks, Inc. | Methods and systems for providing direct DMA |
US8880696B1 (en) | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Methods for sharing bandwidth across a packetized bus and systems thereof |
US8103809B1 (en) | 2009-01-16 | 2012-01-24 | F5 Networks, Inc. | Network devices with multiple direct memory access channels and methods thereof |
US8880632B1 (en) | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Method and apparatus for performing multiple DMA channel based network quality of service |
US8693688B2 (en) * | 2009-03-03 | 2014-04-08 | Intel Corporation | Adaptive packet ciphering |
US9313047B2 (en) | 2009-11-06 | 2016-04-12 | F5 Networks, Inc. | Handling high throughput and low latency network data packets in a traffic management device |
US8417778B2 (en) | 2009-12-17 | 2013-04-09 | International Business Machines Corporation | Collective acceleration unit tree flow control and retransmit |
US8949210B2 (en) * | 2010-05-13 | 2015-02-03 | Microsoft Corporation | Analysis stack for complex event flows |
US8537815B2 (en) * | 2010-06-17 | 2013-09-17 | Apple Inc. | Accelerating data routing |
US10135831B2 (en) | 2011-01-28 | 2018-11-20 | F5 Networks, Inc. | System and method for combining an access control system with a traffic management system |
US8996718B2 (en) * | 2012-02-02 | 2015-03-31 | Apple Inc. | TCP-aware receive side coalescing |
US9036822B1 (en) | 2012-02-15 | 2015-05-19 | F5 Networks, Inc. | Methods for managing user information and devices thereof |
US8863307B2 (en) * | 2012-06-05 | 2014-10-14 | Broadcom Corporation | Authenticating users based upon an identity footprint |
US8848741B2 (en) | 2012-06-21 | 2014-09-30 | Breakingpoint Systems, Inc. | High-speed CLD-based TCP segmentation offload |
US8824508B2 (en) * | 2012-06-21 | 2014-09-02 | Breakingpoint Systems, Inc. | High-speed CLD-based TCP assembly offload |
US9130879B2 (en) * | 2012-08-24 | 2015-09-08 | Vmware, Inc. | Methods and systems for offload processing of encapsulated packets |
US9351196B2 (en) * | 2012-08-31 | 2016-05-24 | International Business Machines Corporation | Byte caching in wireless communication networks |
JP6024318B2 (ja) * | 2012-09-10 | 2016-11-16 | 富士通株式会社 | 無線lan基地局、無線lan端末、及びパケット転送方法 |
US10033837B1 (en) | 2012-09-29 | 2018-07-24 | F5 Networks, Inc. | System and method for utilizing a data reducing module for dictionary compression of encoded data |
US9723045B2 (en) | 2012-10-18 | 2017-08-01 | Hewlett Packard Enterprise Development Lp | Communicating tuples in a message |
US9047417B2 (en) | 2012-10-29 | 2015-06-02 | Intel Corporation | NUMA aware network interface |
JP2014090241A (ja) * | 2012-10-29 | 2014-05-15 | Fujitsu Ltd | トンネル通信システム |
US9270602B1 (en) | 2012-12-31 | 2016-02-23 | F5 Networks, Inc. | Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US9300578B2 (en) * | 2013-02-21 | 2016-03-29 | Applied Micro Circuits Corporation | Large receive offload functionality for a system on chip |
CN103297430B (zh) * | 2013-05-24 | 2017-04-26 | 华为技术有限公司 | 数据传输方法及设备 |
US10684973B2 (en) | 2013-08-30 | 2020-06-16 | Intel Corporation | NUMA node peripheral switch |
US9864606B2 (en) | 2013-09-05 | 2018-01-09 | F5 Networks, Inc. | Methods for configurable hardware logic device reloading and devices thereof |
EP3085051A1 (en) | 2013-12-16 | 2016-10-26 | F5 Networks, Inc | Methods for facilitating improved user authentication using persistent data and devices thereof |
US10015143B1 (en) | 2014-06-05 | 2018-07-03 | F5 Networks, Inc. | Methods for securing one or more license entitlement grants and devices thereof |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US9876613B2 (en) | 2015-08-28 | 2018-01-23 | Qualcomm Incorporated | Transport protocol communications reduction |
JP2017046325A (ja) * | 2015-08-28 | 2017-03-02 | 株式会社東芝 | 通信装置、通信方法およびプログラム |
US9749266B2 (en) | 2015-08-28 | 2017-08-29 | International Business Machines Corporation | Coalescing messages using a network interface controller |
TWI580199B (zh) | 2015-12-18 | 2017-04-21 | 瑞昱半導體股份有限公司 | 接收裝置及其封包處理方法 |
US10521283B2 (en) * | 2016-03-07 | 2019-12-31 | Mellanox Technologies, Ltd. | In-node aggregation and disaggregation of MPI alltoall and alltoallv collectives |
US10212623B2 (en) * | 2016-12-28 | 2019-02-19 | Intel IP Corporation | Apparatus, system and method of packet coalescing |
US10972453B1 (en) | 2017-05-03 | 2021-04-06 | F5 Networks, Inc. | Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof |
US10645200B2 (en) * | 2017-08-16 | 2020-05-05 | Qualcomm Incorporated | Alternate acknowledgment (ACK) signals in a coalescing transmission control protocol/internet protocol (TCP/IP) system |
US20190124180A1 (en) * | 2017-10-20 | 2019-04-25 | Hewlett Packard Enterprise Development Lp | Packet compression and decompression |
US11855898B1 (en) | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
JP7102936B2 (ja) * | 2018-05-23 | 2022-07-20 | 日本電信電話株式会社 | パケット処理装置およびパケット処理方法 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
KR102619952B1 (ko) | 2018-08-08 | 2024-01-02 | 삼성전자주식회사 | 데이터 패킷을 처리하기 위한 장치 및 방법 |
CN110958213B (zh) | 2018-09-27 | 2021-10-22 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
KR102608382B1 (ko) * | 2018-10-18 | 2023-12-01 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 이를 수행하는 전자 장치 |
US11537716B1 (en) | 2018-11-13 | 2022-12-27 | F5, Inc. | Methods for detecting changes to a firmware and devices thereof |
US10757166B2 (en) * | 2018-11-20 | 2020-08-25 | International Business Machines Corporation | Passive re-assembly of HTTP2 fragmented segments |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11805081B2 (en) | 2019-03-04 | 2023-10-31 | Intel Corporation | Apparatus and method for buffer management for receive segment coalescing |
JP7143808B2 (ja) * | 2019-04-23 | 2022-09-29 | 日本電信電話株式会社 | パケット処理装置およびパケット処理方法 |
EP3942398A4 (en) | 2019-05-23 | 2023-04-05 | Hewlett Packard Enterprise Development LP | SYSTEM AND METHOD FOR FACILITATING DATA REQUEST MANAGEMENT IN A NETWORK INTERFACE (NIC) CONTROLLER |
US11528641B2 (en) | 2019-07-26 | 2022-12-13 | Qualcomm Incorporated | Transmission control protocol (TCP) and/or user datagram protocol (UDP) receive offloading |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
KR20210137702A (ko) * | 2020-05-11 | 2021-11-18 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11922207B2 (en) * | 2020-08-13 | 2024-03-05 | Advanced Micro Devices, Inc | Network command coalescing on GPUs |
WO2022073460A1 (en) * | 2020-10-06 | 2022-04-14 | Mediatek Singapore Pte. Ltd. | Pdu rate reduction in mobile communications |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US20230102614A1 (en) * | 2021-09-27 | 2023-03-30 | Qualcomm Incorporated | Grouping data packets at a modem |
US11909851B2 (en) * | 2021-10-04 | 2024-02-20 | Nxp B.V. | Coalescing interrupts based on fragment information in packets and a network controller for coalescing |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1063830A1 (en) * | 1999-06-23 | 2000-12-27 | Nortel Networks Limited | Method, devices and signals for multiplexing payload data in a data network |
CN1377548A (zh) * | 1999-07-30 | 2002-10-30 | 英特尔公司 | 解析分组头标 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3749845A (en) * | 1971-08-27 | 1973-07-31 | Bell Telephone Labor Inc | Digital data communication system |
EP1635520A3 (en) * | 1995-09-18 | 2009-03-18 | Kabushiki Kaisha Toshiba | Packet transfer method and device |
US6021263A (en) * | 1996-02-16 | 2000-02-01 | Lucent Technologies, Inc. | Management of ATM virtual circuits with resources reservation protocol |
US6185209B1 (en) * | 1997-07-11 | 2001-02-06 | Telefonaktiebolaget Lm Ericsson | VC merging for ATM switch |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US5937169A (en) * | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
US6351474B1 (en) * | 1998-01-14 | 2002-02-26 | Skystream Networks Inc. | Network distributed remultiplexer for video program bearing transport streams |
US6246683B1 (en) * | 1998-05-01 | 2001-06-12 | 3Com Corporation | Receive processing with network protocol bypass |
US6453360B1 (en) * | 1999-03-01 | 2002-09-17 | Sun Microsystems, Inc. | High performance network interface |
US6389468B1 (en) * | 1999-03-01 | 2002-05-14 | Sun Microsystems, Inc. | Method and apparatus for distributing network traffic processing on a multiprocessor computer |
US6633576B1 (en) * | 1999-11-04 | 2003-10-14 | William Melaragni | Apparatus and method for interleaved packet storage |
US6564267B1 (en) * | 1999-11-22 | 2003-05-13 | Intel Corporation | Network adapter with large frame transfer emulation |
US7050437B2 (en) * | 2000-03-24 | 2006-05-23 | International Business Machines Corporation | Wire speed reassembly of data frames |
US7136377B1 (en) * | 2000-03-31 | 2006-11-14 | Cisco Technology, Inc. | Tunneled datagram switching |
US6574195B2 (en) * | 2000-04-19 | 2003-06-03 | Caspian Networks, Inc. | Micro-flow management |
US6715005B1 (en) * | 2000-06-29 | 2004-03-30 | International Business Machines Corporation | Method and system for reducing latency in message passing systems |
US6718326B2 (en) * | 2000-08-17 | 2004-04-06 | Nippon Telegraph And Telephone Corporation | Packet classification search device and method |
US6708292B1 (en) * | 2000-08-18 | 2004-03-16 | Network Associates, Inc. | System, method and software for protocol analyzer remote buffer management |
US20020031126A1 (en) * | 2000-09-12 | 2002-03-14 | Crichton James Conrad | Bit synchronizer and internetworking system and method |
US6665495B1 (en) * | 2000-10-27 | 2003-12-16 | Yotta Networks, Inc. | Non-blocking, scalable optical router architecture and method for routing optical traffic |
US6618793B2 (en) * | 2000-12-18 | 2003-09-09 | Redback Networks, Inc. | Free memory manager scheme and cache |
US6665755B2 (en) * | 2000-12-22 | 2003-12-16 | Nortel Networks Limited | External memory engine selectable pipeline architecture |
US7079501B2 (en) * | 2001-01-31 | 2006-07-18 | International Business Machines Corporation | Method and system for efficiently delivering content to multiple requesters |
WO2002084957A2 (en) * | 2001-04-13 | 2002-10-24 | Motorola, Inc., A Corporation Of The State Of Delaware | Manipulating data streams in data stream processors |
US6816455B2 (en) * | 2001-05-09 | 2004-11-09 | Telecom Italia S.P.A. | Dynamic packet filter utilizing session tracking |
US7164680B2 (en) * | 2001-06-04 | 2007-01-16 | Koninklijke Philips Electronics N.V. | Scheme for supporting real-time packetization and retransmission in rate-based streaming applications |
US7076560B1 (en) * | 2001-06-12 | 2006-07-11 | Network Appliance, Inc. | Methods and apparatus for storing and serving streaming media data |
US7170893B2 (en) * | 2001-06-15 | 2007-01-30 | Lucent Technologies Inc. | Technique for selecting the number of packets to be concatenated |
US7590143B2 (en) * | 2001-07-05 | 2009-09-15 | Qualcomm Incorporated | System and method for voice over IP |
US7194550B1 (en) * | 2001-08-30 | 2007-03-20 | Sanera Systems, Inc. | Providing a single hop communication path between a storage device and a network switch |
US20030108044A1 (en) * | 2001-12-11 | 2003-06-12 | Roland Hendel | Stateless TCP/IP protocol |
US6801940B1 (en) * | 2002-01-10 | 2004-10-05 | Networks Associates Technology, Inc. | Application performance monitoring expert |
US6957281B2 (en) * | 2002-01-15 | 2005-10-18 | Intel Corporation | Ingress processing optimization via traffic classification and grouping |
JP2003258911A (ja) * | 2002-03-06 | 2003-09-12 | Hitachi Ltd | アクセスノード装置およびインターネット利用状況の分析方法 |
US7080308B2 (en) * | 2002-03-22 | 2006-07-18 | Intel Corporation | Method and apparatus to perform error control |
US7496689B2 (en) | 2002-04-22 | 2009-02-24 | Alacritech, Inc. | TCP/IP offload device |
US7512128B2 (en) * | 2002-06-12 | 2009-03-31 | Sun Microsystems, Inc. | System and method for a multi-packet data link layer data transmission |
US20030231657A1 (en) * | 2002-06-12 | 2003-12-18 | Kacheong Poon | System and method for a multi-data network layer transmit interface |
US7277963B2 (en) * | 2002-06-26 | 2007-10-02 | Sandvine Incorporated | TCP proxy providing application layer modifications |
US7142540B2 (en) * | 2002-07-18 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for zero-copy receive buffer management |
US6968358B2 (en) * | 2002-07-25 | 2005-11-22 | International Business Machines Corporation | Method and apparatus for network communication card memory management |
US20040047367A1 (en) * | 2002-09-05 | 2004-03-11 | Litchfield Communications, Inc. | Method and system for optimizing the size of a variable buffer |
CN100393012C (zh) * | 2002-09-09 | 2008-06-04 | 西南交通大学 | 在混合自动重发请求系统中并行冗余发送与并行合并接收分组数据的方法 |
US20040088262A1 (en) * | 2002-11-06 | 2004-05-06 | Alacritech, Inc. | Enabling an enhanced function of an electronic device |
US7308000B2 (en) * | 2002-11-07 | 2007-12-11 | Sun Microsystems, Inc. | Methods and systems for efficient multi-packet data processing in a layered network protocol |
US7680944B1 (en) * | 2003-02-28 | 2010-03-16 | Comtrol Corporation | Rapid transport service in a network to peripheral device servers |
US7483532B2 (en) * | 2003-07-03 | 2009-01-27 | Microsoft Corporation | RTP payload format |
US7586925B2 (en) * | 2003-09-09 | 2009-09-08 | Sonus Networks, Inc. | Data adaptation protocol |
US7562158B2 (en) * | 2004-03-24 | 2009-07-14 | Intel Corporation | Message context based TCP transmission |
US8155117B2 (en) * | 2004-06-29 | 2012-04-10 | Qualcomm Incorporated | Filtering and routing of fragmented datagrams in a data network |
US20060004933A1 (en) * | 2004-06-30 | 2006-01-05 | Sujoy Sen | Network interface controller signaling of connection event |
US20060031474A1 (en) * | 2004-07-19 | 2006-02-09 | Linden Cornett | Maintaining reachability measures |
US7620071B2 (en) * | 2004-11-16 | 2009-11-17 | Intel Corporation | Packet coalescing |
US8311059B2 (en) * | 2005-09-07 | 2012-11-13 | Emulex Design & Manufacturing Corporation | Receive coalescing and automatic acknowledge in network interface controller |
-
2004
- 2004-11-16 US US10/991,239 patent/US7620071B2/en active Active
-
2005
- 2005-11-08 TW TW100134801A patent/TWI411279B/zh active
- 2005-11-08 TW TW094139145A patent/TWI354473B/zh active
- 2005-11-10 DE DE602005005219T patent/DE602005005219T2/de active Active
- 2005-11-10 AT AT05826330T patent/ATE388574T1/de not_active IP Right Cessation
- 2005-11-10 WO PCT/US2005/041195 patent/WO2006055494A1/en active Application Filing
- 2005-11-10 EP EP05826330A patent/EP1813084B1/en active Active
- 2005-11-10 CN CN2005800355370A patent/CN101044737B/zh active Active
- 2005-11-10 CN CN201110282788.6A patent/CN102427446B/zh active Active
-
2009
- 2009-09-30 US US12/586,964 patent/US8036246B2/en active Active
-
2010
- 2010-12-29 US US12/980,682 patent/US8718096B2/en active Active
-
2014
- 2014-03-28 US US14/229,545 patent/US9485178B2/en active Active
-
2016
- 2016-10-31 US US15/339,354 patent/US20170048142A1/en not_active Abandoned
-
2017
- 2017-12-29 US US15/859,301 patent/US10652147B2/en active Active
-
2020
- 2020-05-10 US US16/870,991 patent/US20200328973A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1063830A1 (en) * | 1999-06-23 | 2000-12-27 | Nortel Networks Limited | Method, devices and signals for multiplexing payload data in a data network |
CN1377548A (zh) * | 1999-07-30 | 2002-10-30 | 英特尔公司 | 解析分组头标 |
Also Published As
Publication number | Publication date |
---|---|
CN102427446A (zh) | 2012-04-25 |
US7620071B2 (en) | 2009-11-17 |
US20200328973A1 (en) | 2020-10-15 |
US20170048142A1 (en) | 2017-02-16 |
CN101044737A (zh) | 2007-09-26 |
US20180198709A1 (en) | 2018-07-12 |
EP1813084B1 (en) | 2008-03-05 |
US10652147B2 (en) | 2020-05-12 |
EP1813084A1 (en) | 2007-08-01 |
US20110090920A1 (en) | 2011-04-21 |
US8036246B2 (en) | 2011-10-11 |
TW201208324A (en) | 2012-02-16 |
ATE388574T1 (de) | 2008-03-15 |
CN101044737B (zh) | 2011-11-16 |
US8718096B2 (en) | 2014-05-06 |
US20100020819A1 (en) | 2010-01-28 |
US20140211804A1 (en) | 2014-07-31 |
TW200642390A (en) | 2006-12-01 |
DE602005005219D1 (de) | 2008-04-17 |
US20060104303A1 (en) | 2006-05-18 |
TWI354473B (en) | 2011-12-11 |
TWI411279B (zh) | 2013-10-01 |
WO2006055494A1 (en) | 2006-05-26 |
US9485178B2 (en) | 2016-11-01 |
DE602005005219T2 (de) | 2009-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102427446B (zh) | 分组合并 | |
US7644188B2 (en) | Distributing tasks in data communications | |
EP1159814B1 (en) | Dynamic parsing in a high performance network interface | |
US6629125B2 (en) | Storing a frame header | |
US6957281B2 (en) | Ingress processing optimization via traffic classification and grouping | |
JP4264866B2 (ja) | 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム | |
JP2002538724A (ja) | マルチプロセッサコンピュータでネットワークトラフィック処理を分散する方法および装置 | |
JP2002538730A (ja) | 高性能ネットワークインターフェースにおけるネットワークフローを管理する方法および装置 | |
JP2002538723A (ja) | 高性能ネットワークインターフェイスを有するデータリアセンブリのための方法および装置 | |
JP2002538733A (ja) | 高性能ネットワークインターフェース | |
JP2004172917A (ja) | パケット検索装置及びそれに用いるパケット処理検索方法並びにそのプログラム | |
US7441179B2 (en) | Determining a checksum from packet data | |
EP1163777B1 (en) | Method and apparatus for identifying and classifying network traffic in a high performance network interface | |
US20200220952A1 (en) | System and method for accelerating iscsi command processing | |
US20020166006A1 (en) | Multiple buffers for removing unwanted header information from received data packets |
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 |