分组合并的制作方法

文档序号:7916675阅读:120来源:国知局
专利名称:分组合并的制作方法
技术领域
本发明涉及计算机领域,具体而言涉及分组合并。
背景技术
网络使计算机和其它装置能够进行通信。例如,网络可承载表示视频、音频、电子邮件等的数据。通过网络发送的数据通常由称作分组的较小消息承载。打个比方,分组更像放入邮筒的信封。分组通常包括“净荷”和“首标”。分组的“净荷”与信封内的信函相似。 分组的“首标”更像在信封本身上书写的信息。首标可包括帮助网络装置适当地处理分组的信息。多个网络协议(例如,“协议栈”)配合以处理网络通信的复杂度。例如,称作传输控制协议(TCP)的传输协议为应用提供用于建立流并通过网络传送数据的简单机制。在后台,TCP透明地处理各种通信事宜,诸如数据重传、适应网络业务拥塞等等。为了提供这些服务,TCP对称作段的分组进行操作。一般来说,TCP段在较大的分组、如因特网协议(IP)数据报中(由其“封装”)经过网络。例如,在局域网(LAN)中,IP 数据报经常还由甚至更大的分组、如以太网帧来封装。TCP段的净荷承载由应用通过网络发送的数据流的一部分。接收机可通过重组所接收的段来恢复原始数据流。为了允许所接收数据的重组以及回送给发送方的确认(ACK),TCP把序列号与各净荷字节关联。

发明内容
本发明一方面涉及一种方法,包括接收在网络上向主机传送的网络分组,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及( 包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和O)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。本发明另一方面涉及一种部署在非暂时性计算机可读存储媒体上的计算机程序, 包括用于引起装置执行以下步骤的指令接收在网络上向主机传送的网络分组,所述网络分组中的多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的
8每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及( 包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和 (2)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。本发明另一方面涉及一种网络装置,包括电路,所述电路配置成接收在网络上向主机传送的网络分组,所述网络分组中多个网络分组具有同一组多个首标结构,所述网络分组中所述多个网络分组中的每个属于相应网络分组流;为多个相应网络分组流,至少维护(1)对应于所述流的网络分组的净荷列表以及( 包含在所述列表中的净荷的数量;确定所接收网络分组中之一属于匹配所述多个相应流中之一的流;把所接收网络分组中所述之一的净荷添加到对应于所述相应流的网络分组的净荷列表;增加包含在所述列表中的、 对应于所述相应流的净荷的数量;确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据;根据确定主机协议栈应该处理对应于所述相应流中至少之一的网络分组的数据,产生网络分组,所产生的网络分组具有(1)在所述多个网络分组中的每个内找到的同一组多个首标结构和O)由为所述相应流维护的净荷列表中的网络分组的净荷的组合形成的净荷;以及引起对所产生的网络分组而不是对与所述流关联的多个所接收网络分组的主机协议栈处理。本发明另一方面涉及一种方法,包括接收多个入局因特网协议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备包括确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流;并且其中,所述接收、预备和产生包括由网络接口控制器接收、预备和产生。本发明另一方面涉及一种网络接口控制器,所述控制器包括到通信媒体的至少一个接口 ;至少一个媒体访问控制器;以及执行以下步骤的电路接收多个入局因特网协
9议分组,所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;以及根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;发起至少一个直接存储器存取, 从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备电路包括执行以下步骤的电路确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;并且其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号及目标端口号所标识的流
本发明另一方面涉及一种系统,包括至少一个处理器;存储器;到通信媒体的至少一个接口 ;以及执行以下步骤的网络接口控制器电路接收多个入局因特网协议分组, 所述多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,所述多个因特网协议分组属于相同的传输控制协议/因特网协议流;预备具有单个因特网协议首标和单个传输控制协议段的因特网协议分组,所述单个传输控制协议段具有单个传输控制协议首标和由所述多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷;根据从以下组中选取的至少一项从所述多个因特网协议分组中排除属于相同流的至少一个分组所述至少一个分组包括无效的传输控制协议校验和;所述至少一个分组不包括传输控制协议数据段;所述至少一个分组包括无序接收的传输控制协议段;和所述至少一个分组包括传输控制协议紧急标志设置;产生引起对所述因特网协议分组的接收处理的信号;发起至少一个直接存储器存取,从而把所述单个传输控制协议首标、所述单个因特网协议首标和所述传输控制协议段的单个净荷存储到存储器中;以及表明经由描述符组合的传输控制协议段的数量,所述段中的多个段具有相应净荷。其中,所述预备电路包括执行以下步骤的电路确定所述单个传输控制协议首标的传输控制协议校验和;确定所述单个因特网协议首标的字节长度;和确定所述单个传输控制协议首标的已确认序列号;以及其中,所述流包括至少部分由所述因特网协议分组的因特网协议首标中包含的所接收因特网协议分组的因特网协议源地址及目标地址和所述因特网协议分组中包含的传输控制协议段首标的传输控制协议源端口号和目标端口号所标识的流。本发明另一方面涉及一种方法,包括接收入局因特网协议分组,所述入局因特网协议分组具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段;确定所接收入局因特网协议分组是否具有与具有相同流标识符的一组因特网协议分组的流标识符匹配的流标识符,将要组合成单个因特网协议分组的所述一组因特网协议分组具有单个因特网协议分组首标和单个传输控制协议首标以及单个传输控制协议净荷,所述流标识符至少部分基于所接收入局因特网协议分组的因特网协议源、因特网协议目标、传输控制协议源端口和传输控制协议目标端口,所述一组因特网协议分组具有关联的描述符;在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列是所述流的下一预期传输控制协议序列号并且所接收入局因特网协议分组的传输控制协议首标不具有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净荷的组合形成单个合并分组。因此,协议栈可为更少但更大的分组执行接收处理,从而减小所引起的每个分组的处理代价。为了说明合并,图IA描绘了由网络接口控制器100接收的具有TCP和IP首标106a 以及TCP净荷10 的分组106。控制器100可执行各种任务,包括从帧内取出分组106、检验帧校验和以及其它链路层操作。如图所示,分组属于一个流(在图IA中任意标记为“1”)。分组的流可由控制器 100通过首标中的数据来标识。例如,TCP/IP流可通过IP源和目标地址以及TCP首标中的源和目标端口号的组合所形成的元组来标识。元组可能没有包含所有这些首标字段,并且可包含其它信息(例如协议标识符)。在图IA中,控制器100存储所接收分组106的首标106a和净荷106b,以便与后来接收的分组进行可能的合并。例如,如图所示,控制器100可例如经由一个或多个直接存储器存取(DMA)操作把分组106的净荷106b存储在存储器102中,并且把首标106a存储在控制器100的表中。该表还可包括用于合并过程的其它信息。存储器102中写入净荷数据106b的位置可通过由运行于处理器104上的驱动器软件传递给控制器100的描述符来指定。例如,描述符还可包括其它字段、诸如存储分组首标的位置的存储器地址,以便支持首标分离。在图IB中,控制器100接收属于与图IA中接收到的分组相同的流(“1”)的第二分组108。不是只写入分组存储器102,而是控制器100把分组106、108的两个净荷106b、 108b共同组合为单块净荷110b。组合可包括物理上邻接地存储净荷位106b、108b。或者, 例如,组合可包括关联净荷106b、108b作为链表中的节点。净荷的这种组合可对于对流接收的另外分组继续进行。除了收集不同的净荷之外,控制器100还预备反映组合TCP净荷IlOb的合并分组 110的单个IP首标和单个TCP首标110a。例如,控制器100可查找与流关联的TCP/IP首标106a,并修改IP首标的长度字段以反映组合净荷的长度。控制器100还可修改TCP首标的校验和。另外,控制器100还可改变TCP首标的ACK序列号,以便合并入局ACK消息。这种更新可在组合各净荷时执行。或者,例如,更新可延迟某个时间段。最后(例如,在合并窗口结束之后),如图IC所示,控制器100可把合并分组的首标IlOa和流的描述符写入存储器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),它可执行以上描述为由NIC100或处理器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栈发起对已合并分组的处理。如图所示,可从合并中排除邪4某些分组。例如,分组可能需要满足一个或多个标准。例如,合并可仅对具有有效校验和的TCP段执行。另外,也可根据诸如把段标识为控制段的信息之类的首标信息(例如,1 1\ 讯、3¥13¥^40(、^6标志设置)从与先前接收的分组的合并中排除甚至有效的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_0ffset > 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到流的描述符所指定的净荷缓冲器中已确定偏移3 并更新流的条目数据(例如,更新所合并分组的数量、下一个预计序列号、净荷字节的数量等),来把所接收TCP段的净荷与流中先前接收的TCP段的净荷组合。如果当前段的PSH标志已设置338,则合并可在这些操作之后终止342。如果存储净荷的缓冲器没有足够空间334来添加当前分组的TCP净荷,则可预备 TCP和IP首标,并且流描述符被关闭340。在这种情况中,如果PSH标志已设置346,则按照传统方式处理分组。否则,对于流获得新读取的描述符,以及合并以该分组重新开始348。在处理分组之后,如果合并窗口已经到期,则分组描述符和首标被预备,并写入存储器,并且表内容被刷新。否则,图5所示的过程对于另一个分组重复进行。可实现图5所示的示例过程的各种各样不同的变化。例如,为了防止未完成的描述符阻挡后来的描述符(例如,如果NIC驱动器依次读取描述符),过程可在某个固定时间段之后关闭老化描述符,而没有接收附加的连续分组,即使合并窗口可能没有到期。或者, 较早的描述符可在后来的描述符完成时被关闭。虽然图1-5以及对应文本描述了示例实现,但是各种各样的其它实现可采用以上
14所述技术中的一个或多个。例如,不是在存储器中合并分组,而是控制器可在分组传送到存储器之前在其自己的内部缓冲器中合并分组。另外,这些技术可用来实现其它传输层协议、 网络协议栈内的其它层中的协议、不同于TCP和IP的协议,以及用来处理其它协议数据单元。例如,不用以太网帧,而是可由HDLC或PPP帧来承载分组。另外,术语IP涵盖IPv4以及IPv6IP实现。本文所使用的术语“电路”包括硬连线电路、数字电路、模拟电路、可编程电路等等。可编程电路可对部署在制造商的产品(例如非易失性存储器,比如只读存储器)上的可执行指令进行操作。其它实施例处于随附权利要求书的范围之内。
权利要求
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.如权利要求沈所述的系统,其中,所述预备电路包括调节所接收多个分组中之一的至少一个首标的至少一个值的电路。
28.如权利要求26所述的系统,其中,所接收入局分组包括在小于网络接口控制器的中断缓和时间段的时间段中接收的分组。
29.如权利要求沈所述的系统,其中,所述电路包括所述处理器的一部分。
30.一种方法,包括接收入局因特网协议分组,所述入局因特网协议分组具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段;确定所接收入局因特网协议分组是否具有与具有相同流标识符的一组因特网协议分组的流标识符匹配的流标识符,将要组合成单个因特网协议分组的所述一组因特网协议分组具有单个因特网协议分组首标和单个传输控制协议首标以及单个传输控制协议净荷,所述流标识符至少部分基于所接收入局因特网协议分组的因特网协议源、因特网协议目标、 传输控制协议源端口和传输控制协议目标端口,所述一组因特网协议分组具有关联的描述符;在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列是所述流的下一预期传输控制协议序列号并且所接收入局因特网协议分组的传输控制协议首标不具有RST、SYN、FIN或URG标志设置中任一个之后把所述因特网协议分组添加到所述一组因特网协议分组;并且增加与所述一组因特网协议分组关联的描述符的分组计数;确定组合了所述一组因特网协议分组的单个因特网协议分组,所述单个因特网协议分组具有单个因特网协议首标、单个传输控制协议首标以及由所接收入局因特网协议分组的传输控制协议净荷和多于一个之前接收的因特网协议分组的传输控制净荷的传输控制协议净荷组合形成的单个传输控制协议净荷,确定所述单个因特网协议分组包括设置所述单个因特网协议首标的因特网协议长度字段以对应于经组合的那组因特网协议分组,设置所述单个因特网协议首标的ACK序列号以对应于经组合的那组传输控制协议段;以及把所确定的单个因特网协议分组而不是所述一组因特网协议分组提供给主机TCP/IP 协议栈。
31.如权利要求30所述的方法,其中,确定所述单个因特网协议首标还包括设置所述因特网协议校验和以对应于经组合的那组因特网协议分组。
32.如权利要求30所述的方法,还包括在至少确定所接收入局因特网协议分组的传输控制协议段的传输控制协议序列不是所述流的下一预期传输控制协议序列号或所接收入局因特网协议分组的传输控制协议首标具有RST、SYN、FIN或URG标志设置中任一个之后把所接收入局因特网协议分组提供给所述主机TCP/IP协议栈;以及提供由所述一组因特网协议分组的组合形成的单个因特网协议分组。
33.如权利要求30所述的方法,其中,把所述因特网协议分组添加到具有相同流标识符的要组合成单个因特网协议分组的所述一组因特网协议分组包括把条目添加到链接列表,其中所述链接列表中的条目对应于所述一组因特网协议分组中的不同分组。
全文摘要
一般来说,在一个方面,本公开描述包括接收多个入局因特网协议分组的方法,多个入局因特网协议分组中的每个具有因特网协议首标以及具有传输控制协议首标和传输控制协议净荷的传输控制协议段,在其中,多个分组属于相同的传输控制协议/因特网协议流。该方法还包括预备具有单个因特网协议首标以及具有单个传输控制协议首标和由多个因特网协议分组的传输控制协议段净荷的组合形成的单个净荷的单个传输控制协议段的因特网协议分组。该方法还包括产生引起因特网协议分组的接收处理的信号。
文档编号H04L29/06GK102427446SQ201110282788
公开日2012年4月25日 申请日期2005年11月10日 优先权日2004年11月16日
发明者D·明图恩, D·纽厄尔, L·赵, R·艾尔, S·森, S·马金尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1