分组丢失得以降低的网络卸载的制作方法

文档序号:7942347阅读:162来源:国知局
专利名称:分组丢失得以降低的网络卸载的制作方法
技术领域
本发明一般涉及网络卸载。更具体地说,本发明涉及经数据网络从发送单元向第一目标发送数据的第一分段 的方法以及用于经数据网络从发送单元向第一目标发送数据的第一分段的装置。此外,本发明涉及一种计算机可读介质,其上存储有用于使一个或多个处理单元 执行根据本发明的方法的指令。
背景技术
当网络使能装置通过网络发送比较大块数据(后面称为分段),例如JPEG图片或 任何其它种类数据时,分段通常被网络使能装置分成几个数据分组,之后在物理介质上发 送。作为一个示例,以太网分组的最大有效载荷大小是1500字节。此外,对于每个数据分 组和某些协议栈(诸如TCP/IP)必须生成协议标题,诸如TCP和IP标题,对于每个数据分 组还必须计算一个或几个检验和,其中一个或多个检验和存储在数据分组的标题中。正常情况下,大块数据或分段大于有效载荷的大小(原则上,分段大小例如可以 与单个字节一样小)。通常,它是有效载荷大小的几倍。生成这些分组的过程包括传统上用软件完成标题和检验和。这可根据系统的CPU 性能和网络速度使用大量的CPU性能。通过用硬件实现特征已经提出了解决这个问题的各种解决方案。这种过程通常也 称为(硬件)网络卸载。有几个可用的硬件解决方案来执行网络卸载。用硬件完成网络卸载的一个传统方 法可概括为-从存储器读取数据的一个MTU(最大发送单元,S卩,所用网络介质上一个分组的 最大有效载荷大小)。-计算有效载荷上的检验和,同时从存储器读取。-生成标题。-发送包括标题和有效载荷的分组。-在发送时,从存储器读取数据的一个附加MTU。-重复,直到分段即大块数据中的所有分组都已经发送为止。这个解决方案的缺点是,它可以非常快的速率发送许多分组,这可引起连接接收 客户机比较慢的问题。作为一个示例,考虑连接到比较快网络(例如1吉位/秒网络)的 装置,它想向连接到比较慢网络(例如10兆位/秒网络)的客户机发送大分段。在这种情 况下,在装置与客户机之间发送路径中的路由器必须缓冲数据,直到客户机已经全部读取 它为止。这可导致路由器中的缓冲器耗尽。而且,因为路由器具有有限的缓冲器大小并且 可能还需要缓冲其它发送路径的数据,所以这可导致数据分组丢失,并由此需要重传。分组 丢失的可能性随着分段大小的越大而增大。通常用软件实现的这个问题的一个先前已知的解决方案涉及向每个目标仅发送有限数量的分组,并等待确认(ACK),之后再发送附加数据分组。然而,这增大了 CPU使用 率,并由于等待可能还延迟了发送数据所需的总时间。例如,US 2006/034176描述了使用ACK的硬件实现。这个的缺点是,只能支持诸 如TCP/IP的协议,其依赖于ACK的使用。由此,存在对于解决路由器缓冲器耗尽和数据分组丢失的问题的需要。这通过向不同的目标交错分组至少在某种程度上已经得以解决,但是其中通过相 同或相似速率交错分组。专利说明书US 7,174,393公开了用于数据通信的通信处理装置(CPD),其提供避 免大多数大的多分组消息的协议处理的快路径和慢路径消息传递。网络处理器在沿包含主 机协议栈的慢路径或沿绕过主机协议栈的快路径处理消息之间进行选择。专利说明书US 7,167,926公开了一种与主计算机一起工作进行数据通信的装 置,提供避免大多数消息的协议处理的快路径,加速数据传送,并从主机CPU卸载时间密集 的处理任务。主机具有验证快路径或慢路径的所选消息的处理能力。专利说明书US 6,996,070公开了 TCP卸载引擎(TOE)装置,包含并行执行TCP/IP 协议处理操作的状态机。在三个不同方面,它存储TCP变量和标题值,更新多个TCP状态变 量,并设置DMA移动。

发明内容
本发明的一个目的是提供一种避免或最小化路由器缓冲器耗尽和/或数据分组 丢失的方法(以及对应的装置)。另一个目的是降低分段过程的CPU使用率。这通过用于经数据网络从发送单元向第一目标发送数据的第一分段的方法实现, 所述发送单元具有第一数据发送速率,第一目标具有第一数据接收速率,其中第一数据发 送速率大于第一数据接收速率,所述方法包括通过在下列两项之间切换来有效地降低从 发送单元到第一目标的第一发送速率将所述第一分段的至少一部分作为一个或多个数据 分组发送到第一目标,所述发送在仅从发送单元到第一目标的方向;以及将至少第二分段 的至少一部分作为一个或多个数据分组发送到一个或多个附加目标,所述发送在仅从发送 单元到一个或多个附加目标的方向,重复所述切换,直到已经发送了所述第一分段和/或 至少所述第二分段为止。可在向第一目标发送的所述至少第一分段的所述数据分组之间插入一个或多个 等待状态。这样,降低了到客户机或目标的分组速率,同时保持了发送系统的总分组速率,由 此减小了分组丢失和/或路由器缓冲耗尽的可能性,这是因为不会以全速率发送数据到比 较慢的客户机。实现了这个,同时基本上保持了总发送速率。此外,所有目标——当发送到多个目标时——早早获得了数据,因为向其它客户 机的发送不等待,直到已经完全发送了先前客户机的给定分段为止。客户机可这样开始处 理早先接收的数据。这种方法的优点是,它使能够支持任意协议。也就是说,它支持使用ACK的协 议以及不使用ACK的协议。例如,提供对UDP上RTP的支持,这相比在上面提到的US2006/034176中所描述的基于ACK的通信是有利的。在一个实施例中,所述方法还包括在要进行切换之前,保存确定已经发送多少所 述第一分段的所述第一分段中的第一位置,和/或保存确定已经发送多少所述第二分段的 所述第二分段的位置,并且当再次切换回到发送所述第一分段或所述第二分段时,从相应 保存的位置再继续发送。在一个实施例中,根据发送模式进行所述切换。在一个实施例中,基于第一目标的所述接收速率和/或至少一个所述附加目标的 接收速率,确定所述发送模式。在一个实施例中,至少数据的第一分段存储在所述发送单元的存储器中,其中由 直接存储器访问控制器(或卸载装置)从所述存储器读取所述第一分段的数据并将其提供 给直接存储器访问设备,进一步经网络接口将所述第一分段的所述数据提供给所述网络, 其中所述直接存储器访问控制器和所述直接存储器访问设备卸载所述发送单元的中央处
理单元。在一个实施例中,所述直接存储器访问设备包括对从所述直接存储器访问控制器 提供给所述直接存储器访问设备的数据计算检验和的检验和计算单元。在一个实施例中,二维列表结构控制所述切换,所述二维列表结构包括第一上下 文描述符,涉及参考存储器中标题数据的至少一个数据描述符;以及第二上下文描述符,涉 及参考所述第一分段的数据的至少一个数据描述符,其中所述第二上下文描述符包括在切 换之前发送所述第一分段的数据的多少字节的表示,其中所述方法包括处理所述第一上 下文描述符以便获得所述标题数据,并处理所述第二上下文描述符以便获得所述第一分段 的数据,并根据所述表示发送若干字节的数据。在一个实施例中,二维列表结构控制所述第一分段的发送,所述二维列表结构包 括第一上下文描述符,涉及参考所述第一分段的数据的至少一个数据描述符;第二上下 文描述符,涉及至少两个数据描述符,每个数据描述符涉及用于两个不同目标的标题数据, 其中所述方法包括处理所述第一上下文描述符以便获得所述第一分段的至少一部分,处 理所述第二上下文描述符以便获得所述两个不同目标之一的标题数据并以便获得所述两 个不同目标中另一个的标题数据,并向所述两个不同目标之一发送所述第一分段的所获得 部分,并向所述两个不同目标中另一个发送所述第一分段的所获得部分。本发明还涉及一种用于经数据网络从发送单元向第一目标发送数据的第一分段 的装置,所述发送单元具有第一数据发送速率,第一目标具有第一数据接收速率,其中第一 数据发送速率大于第一数据接收速率,所述装置包括直接存储器访问设备,适合于通过在 下列两项之间切换来有效地降低从发送单元到第一目标的第一发送速率将所述第一分段 的至少一部分作为一个或多个数据分组发送到第一目标,所述发送在仅从发送单元到第一 目标的方向;以及将第二分段的至少一部分作为一个或多个数据分组发送到一个或多个附 加目标,所述发送在仅从发送单元到一个或多个附加目标的方向,重复所述切换,直到已经 发送了所述第一分段和/或至少所述第二分段。装置实施例对应于方法实施例,并由于相同的原因而具有相同的优点。装置的有 利实施例在从属权利要求中确定,并在下面详细描述。此外,本发明还涉及一种计算机可读介质,其上存储有用于使一个或多个处理单元执行根据本发明的方法的指令。


本发明的这些和其它方面根据附图中所示的例示性实施例将显而易见,并参考这 些实施例进行阐明,附图中图1示意性例示了在发送期间交错两个分段的过程的示例;图2a_2c示意性例示了根据本发明的交错过程的示例;图3示意性例示了根据一个实施例用于跟踪各种交错发送的结构的总览;图4示意性例示了用于跟踪交错发送的结构的一个具体示例;图5示意性例示了根据本发明的交错过程的一个实施例的流程图;图6示意性例示了用于向几个客户机发送相同分段同时从存储器仅读取一次数 据的有利列表结构示例的实施例;图7例示了具有硬件网络卸载的发送单元或系统的示意框图;图8例示了 DMA控制器的一个实施例的示意框图;图9例示了包括连接在网络中的具有硬件网络卸载的发送单元或系统以及一个 或多个客户机的系统的示意框图;以及图10是从发送单元到接收器的发送的信令图。
具体实施例方式图1示意性例示了在发送期间交错两个分段101的过程的示例。所示出的是第一 分段(分段1) 101和第二分段(分段2) 101,以及随着时间的过去如何经网络102发送每个 分段的分组。作为一个示例,每个分段包括10千字节的有效载荷数据,其中第一分段的有效载 荷数据将被发送到第一客户机(未示出),其比较慢,并且其中第二分段的数据将被发送到 第二客户机(未示出),其比较快。MTU在这个示例中是1千字节。然后可通过交错发送将分组发送为(px =到客户机χ的分组):p2p2p2plp2p2p2p Ip2p2p2plp2plplplplplplpl。这样,降低了到客户机1的分组速率,同时保持了发送系统的 总分组速率。根据适当发送模式进行所发送数据分组的特定排序。降低到客户机1的分组 发送速率将避免或至少最小化路由器缓冲器耗尽和/或数据分组丢失的可能性,因为分组 以客户机1可“保持”的步调被发送到客户机1。而且,当到客户机2的所有分组都已经被 发送时,有可能在到客户机1的其余分组之间插入一个或多个等待状态,以保持分组发送 速率下降(由此仍避免引起发送系统与客户机1之间的缓冲器耗尽和数据分组丢失,或至 少提供这种发生的可能性减小)。作为一个备选,代替插入一个或多个等待状态,例如在上 例中,当已经发送了到客户机的所有分组时,可以开始一个或多个其它分段的数据发送,到 客户机3的分组(或到客户机2的新分段)可与到客户机1的其余分组交错。分组将根据用硬件(如早先描述的)进行网络卸载的一个传统方法被发送为pip Iplplplplplplplplp2p2p2p2p2p2p2p2p2p2 (假设第一分段要被首先发送)。如果用硬件实现该过程,则与没有硬件卸载的解决方案相比大大降低了 CPU使用 率。
附加优点是,相比如果客户机2应该等待直到所有分组都已经被发送到客户机1, 之后才发起到客户机2的分组发送,客户机2 (假设根据传统方法首先发送第一分段)将更 早获得数据,并由此可更早开始处理数据。对于比2更大数量的客户机,这个优点甚至更 大。作为具有3个客户机的一个示例,客户机3传统上将必须等待,直到已经发送了客户机 1和2的所有分组为止。图2a_2c示意性例示了根据本发明的交错过程的示例。所示出的是在交错发送期 间三个不同时间点的三个分段101 (分段1、分段2和分段3)。三个分段101可被发送到三 个不同的客户机装置(未示出)。第一时间点(图2a)在发送开始之前。第二时间点(图 2b)在发送期间,并且第三时间点(图2c)在已经完成发送之后。在图2a_2c中,给出了当前分段的指示,即,当前已经发送了哪个分段的数据。而 且,在每个时间点的每个分段的黑箭头指示迄今为止已经发送了多少给定分段的数据。指 示已经发送了多少给定分段的数据的点位于整个分组边界,以便避免网络利用的降低。DMA (直接存储器访问)控制器和DMA设备、DMA客户机或网络卸载单元(未示出; 以后只表示DMA设备)将提供在下面更详细说明的对存储器中几个数据区域(例如每个分 段一个)的访问。DMA设备跟踪每个数据区域中的当前位置。获得或导出发送或切换模式 (以后只表示发送模式),并且向指令它何时切换数据区域的DMA控制器给出这方面的信 息,并由此开始发送另一个分段的数据(如果还有留下的话)。当交错发送将发送速率有效 地减小到比较慢的客户机时,特定发送模式将卸载具有降低分组丢失的网络,如下面更详 细说明的。当切换时,DMA设备自动选择具有更多数据要发送的下一个数据区域。图2a例示了已经做任何事情之前的情形,其中指定已经发送了每个分段的多少 数据的每个指示在每个分段开始,即,还没有发送任何数据。分段1在这个具体示例中被指 定为当前分段。图2b例示了网络卸载和数据发送已经进行了一分段时间的情形。在此,几乎分 段1的一半和分段3的整个数据都已经经网络被发送到它们相应的客户装置或目标(以后 只表示为客户机)。目前,数据从分段2发送,其被指定为当前分段。在DMA控制器由DMA 设备指令切换之后,它将切换到从分段1发送数据(当分段3完成并且目前没有其它分段 时),并将从它在从分段1最后发送数据期间停止的地方拾起。当已经发送了分段2的所有数据时或之前,切换可根据特定发送模式发生。如果 之前,则将存储分段2的当前位置,使得可以从返回到分段2时的那点再继续发送。图2c例示了已经发送了三个分段的所有数据的情形。DMA控制器然后将发信号通 知DMA设备已经做了工作并等待进一步指令。如所提到的,根据特定发送模式进行从三个分段发送数据之间的跳变或切换。接 收数据的各种客户机的能力将影响特定发送模式。要考虑的一个参数例如是不同客户机的 网络速度。这例如可通过向客户机发送测试数据分组并等待确认来容易地确定。备选地, 可以另一种方式确定它。作为特定示例,让客户机1和2的网络(接收)速度大约是2兆位/秒,并且客户 机3的(接收)速度大约是4兆位/秒,那么(平均或一般)应该以通常的大约2倍来发 送来自分段3(到客户机3)的数据(即,分段3将是当前分段),并且发送模式例如可以是 从分段1发送X数据,从分段3发送X数据,从分段2发送X数据,从分段3发送X,从分段1发送X数据等。作为另一个示例,取到两个不同客户机的两个分段,其中一个客户机是另一个的 三倍快,那么发送模式例如可以是从分段1发送X数据,从分段2发送3*X数据,然后重 复,直到已经发送了所有数据。如之前所提到的,当已经完全发送了另一个分段时,也可对于一个或多个分段插 入等待状态,以便保持发送速率下降,并由此仍避免缓冲器耗尽和数据分组丢失。备选地, 可以开始一个或多个附加分段(例如到相同或新客户机)的数据发送。图3示意性例示了根据一个实施例用于跟踪各种交错发送的结构的总览。所示出的是二维列表结构,包括描述符301、302,控制对存储在存储器中的数据的 访问,该数据要被作为数据分组发送到一个或多个客户机。每个描述符可包括元数据,指 令DMA设备它是什么类型数据(例如标题数据或有效载荷数据)以及如何处理它。描述符 还可包括一个或多个控制标志以信号通知各种条件,诸如分段的结尾(EOS)和列表的结尾 (EOL)。这种列表结构一般还称为分散-集中列表(SGL),并允许从不连续存储器中取数据。—种类型描述符例如是数据描述符302,其用于跟踪实际数据缓冲器303,即存储 器或储存单元,以及其中存储的数据属于什么分段。另一种类型描述符例如是上下文描述 符301,根据这个实施例其用于跟踪包括数据描述符302的列表的状态。DMA控制器在DMA的控制下能够在几个上下文之间切换。每个上下文可涉及单个 客户机并例如涉及该单个客户机的几个分段,这可从图3以及如下描述中看到。而且,对于 涉及给定分段的标题数据的上下文和涉及相同分段的有效载荷的另一上下文,几个上下文 可涉及相同分段,看后面。在每次切换时,可指令DMA设备保存列表的状态(或不保存)。当列表中到达EOL 时,禁用给定上下文(或备选地移除),并且DMA设备将不再切换到那个上下文。DMA设备 优选地还可记住一个(或多个)上下文描述符(通常只有一个就足够了,由此降低储存要 求)。在图3所示的具体示例中,上下文1和上下文2是上下文描述符301,而数据1、数 据2、数据3和数据4是数据描述符302。这个示范性列表结构因此包括2个上下文,如由上下文描述符上下文1和上下文 2所给出的。上下文1标识由分别指向缓冲器1和缓冲器2303的数据描述符数据1和数据3 所指示的数据的一个分段。如果该分段可存储在单个缓冲器中,则只有一个数据描述符将 出现在上下文1列表中。数据描述符数据3此外包括两个设置标志,即EOS和E0L,表示不 再有分段是上下文1的一部分(EOS),并且数据3是上下文1的最后列表元素(EOL)。该上下文1只涉及数据的单个分段,由此可以看出,列表上下文1参考或只包括单 个E0S,之后到达E0L。以类似方式,上下文2标识由分别指向缓冲器3和缓冲器4303的数据描述符302 数据2和数据4所指示的数据的两个分段。如果这两个分段可存储在单个缓冲器中,则数 据2和数据4将指向同一缓冲器(但在两个不同位置)。数据2包括设置的EOS标志,并且 数据4包括设置的EOS和设置的EOL标志。上下文2描述符还包括设置的EOL标志,表示当前不再有上下文要由DMA设备处理,即,目前没有附加数据要发送。该上下文2涉及数据的两个分段,由此可以看出,列表上下文2包括两个E0S,之后 到达EOL。在最简单的情况下,只存在一个分段被发送到一个目标,其可以全速接收分组 (即,没有等待状态是必需的),并且列表结构“压缩”成具有两个数据描述符的一维列表; 一个指向标题数据,而另一个指向分段的有效载荷数据。在这种情形下,任何交错发送以及 由此任何上下文描述符都不是必需的。图4示意性例示了用于跟踪交错发送的结构的一个具体示例。在此,具体列表结构已经设置,并作为一个示例包括四个上下文301 上下文1、上 下文2、上下文3和上下文4。上下文描述符301上下文1参考数据描述符302数据1和上下文描述符301上下 文2。数据描述符302数据1包括EOL和EOS标志作为元数据,并且参考给定分段分段1的 标题数据304,其中数据存储在缓冲器或其它适当存储器中。上下文描述符301上下文2参考数据描述符302数据2和上下文描述符301上下 文3。数据描述符302数据2包括EOL和EOS标志作为元数据,并且参考分段分段1的有效 载荷数据305,其中数据存储在缓冲器或其它适当存储器中。上下文描述符301上下文3参考数据描述符302数据3和上下文描述符301上下 文4。数据描述符302数据3包括EOL和EOS标志作为元数据,并且参考分段分段2的标题 数据304,其中数据存储在缓冲器或其它适当存储器中。上下文描述符301上下文4参考数据描述符302数据4,并再次回到上下文描述符 301上下文1。数据描述符302数据4包括EOL和EOS标志作为元数据,并且参考分段分段 2的有效载荷数据305,其中数据存储在缓冲器或其它适当存储器中。根据本发明,交错发送的列表结构然后在发送期间进行处理,并指令DMA设备如 何操作,从那读取数据(经DMA控制器),它是什么类型数据,何时切换分段(如果有必要的 话)等。对于所示的示范性结构,所得到的过程然后例如可概括为1.处理上下文1,这然后引起DMA控制器开始向DMA设备传递属于分段1的标题 数据,这然后可经网络将它提供给相应的客户机或目标。2.在已经发送了标题数据之后,DMA设备指令DMA控制器切换到上下文2。在这 个阶分段,不知道上下文1即标题数据是否将再次被需要,因为这取决于是否发送分段1的 所有有效载荷数据,之后切换到发送分段2的数据(即,切换到上下文3和4)。因此,指令 DMA控制器切换到上下文2,无需DMA设备存储当前上下文的位置。指令DMA设备记住这个 上下文,即,上下文1。3.在切换到上下文2之后,DMA控制器向DMA设备传递分段1的有效载荷数据(一 个或多个MTU),这然后可经网络将它提供给相应的客户机或目标。4.在例如根据特定发送模式发送一定量的数据之后,指令DMA设备切换到上下文 3。切换时间例如可被确定为在已经发送了特定数量的MTU之后。可以在上下文描述符元数 据中规定这种数量。该数量对于所有或一些各种上下文可以是相同的,或者它可以是不同 的,如优选发送模式所规定的。对于每个发送的分组,内部计数器可递增。当内部计数器的值匹配存储在上下文描述符中的值时,将指令DMA设备切换上下文,并将内部计数器清零。 如果切换发生在分段1的整个有效载荷数据已经发送之前,则DMA设备存储当前位置,使得 当再一次返回到上下文2时,可以从那点再继续发送。DMA设备例如可将位置存储在上下 文描述符即上下文2中的变量、字段等中。作为一个示例,一个字段可用于存储所用的最后 数据描述符,并且另一个字段可存储在那个数据描述符中已经处理数据到什么程度。如果 到达分段的结尾,则已经发送了所有有效载荷数据,并且因此将不再需要上下文1和上下 文2。在上下文2中,设置EOS标志。为了禁用上下文1,指令DMA设备恢复之前重新记住 的上下文(见上面的步骤2),并且还禁用那个上下文(也将不需要分段1的标题数据,因为 已经发送了分段1的有效载荷数据)。还可通过设置EOS标志禁用上下文1。在禁用上下 文1和上下文2之后,DMA设备切换到下一上下文,在这个示例中其是上下文3。5.在上下文3中,DMA控制器向DMA设备传递属于分段2 (对应于上面对于分段1 的步骤1)的标题数据,这然后可经网络将它提供给相应客户机或目标。6.在已经发送了标题数据之后,DMA设备切换到上下文4,在此发送分段2的有效 载荷数据。在切换到上下文4之前,不存储上下文3的位置,但是重新记住上下文3 (如上 面步骤2中)。7.在切换到上下文4之后,DMA控制器向DMA设备传递分段2的有效载荷数据(一 个或多个MTU),这然后可经网络将它提供给相应客户机或目标。8.在根据发送模式的某一时间,DMA设备切换到下一上下文——在这个示例中是 上下文1——其中如果切换发生在已经发送分段2的所有有效载荷数据之前,则存储上下 文4中所发送数据的当前位置。否则,上下文3被重新调用并禁用,并且上下文4也被禁用 (如上面的步骤4中)。9.在上下文1中,DMA设备接收和发送分段1的标题数据,并且因为没有保存位 置,所以再次发送整个标题。在已经发送了标题数据之后,过程切换到上下文2,并且不保存 上下文1的位置。10.在上下文2中,从保存的位置再继续发送(那是在步骤4保存的),并且发送 分段1的附加有效载荷数据的一个或多个MTU。过程继续,直到分段1和分段2的所有有效载荷数据都已经发送了。如所提到的, 如果发送一个分段的有效载荷数据,则在完成另一个之前,可插入一个或多个等待状态。在一个实施例中,数据描述符302具有包括表示数据缓冲器开头和结尾的变量的 结构(即,相关数据(标题或有效载荷)存储在的给定分段的存储位置)。而且,数据描述 符的结构可包括指示EOS和EOL的控制标志以及指向下一描述符的指针和指令DMA设备做 什么的元数据字段等。在一个实施例中,上下文描述符的结构可包括跟踪数据描述符列表中位置的变 量。当切换上下文时,将指令DMA设备(未示出;例如见图7和8)更新上下文描述符中的 位置。下次使用相同上下文时,DMA设备将指令DMA控制器在所存储位置开始。一般结合图5示出和说明这个过程。图5是示意性例示了根据本发明的交错过程的一个实施例的流程图。装置或方法 在步骤501处于空闲状态。测试502 (通过中断、请求、定时器等)数据是否可用于发送。如 果否,则再继续空闲状态。
12
如果数据可用于传送,则在步骤503向第一客户机发送包括一个MTU有效载荷的 数据分组。然后,在步骤504,检验是否应该进行上下文切换,S卩,是否应该切换到另一个客 户机的另一个分段。是否应该进行切换可以通过到达相应上下文中的列表结尾(EOL)来触 发,或者已经发送了规定数量的数据(根据发送模式)。如早前说明的,例如可以在上下文 描述符元数据中规定这种数据量。该数量对于所有或一些各种上下文可以是相同的,或者 它可以改变,如由优选发送模式所规定的。如果不应该进行切换,则操作返回到步骤503,并继续发送数据的另一个MTU。如果应该进行切换,则在步骤505检验当前上下文是否是具有有效载荷数据或标 题数据的上下文。如果它是具有标题数据的上下文,则没有关于是否再次需要这个标题数 据的信息,因为这取决于在下一步骤是否将发送所有相关有效载荷数据(在此情况下后面 不再需要标题数据)或者在已经发送了所有有效载荷数据之前(在此情况下将需要标题 数据)是否将进行分段的一个或多个附加切换,因此操作继续到步骤506,切换到下一上下 文,这将在后面说明。如果当前上下文包括有效载荷数据,则在步骤507进行另一个测试,检验是否已 经到达当前上下文的列表结尾(EOL)。如果没到达上下文的列表结尾,则在步骤508存储当 前上下文以便后面使用,并在步骤509保存当前位置,即,直到给定分段中已经发送数据的 地方。在步骤509之后,操作继续到步骤506,切换到下一上下文,这将在后面说明。如果到达列表结尾,则已经发送了一个上下文的所有分段,这可以只是一个,并且 标题和有效载荷数据不再是必需的。在这种情况下,在步骤510,指令DMA设备存储当前上 下文,并还禁用该上下文,因为已经到达列表结尾。然后,在步骤511指令DMA设备恢复在早些时间在步骤508期间已经保存的上下 文,并在步骤512禁用那个上下文,这将禁用标题上下文。由此,禁用标题和有效载荷上下 文。在步骤512之后,操作继续到步骤506,切换到下一上下文。在步骤506之后,然后测试513是否存在下一上下文。如果否,即,已经及时处理 了所有上下文,并由此已经发送了所有分段,则再继续在步骤501的空闲状态。如果存在上下文,则检验514那个上下文是否仍被启用。如果否,再次进行步骤 506,由此选择新上下文。如果启用新上下文,即未完全处理,则再继续步骤503以发送另外 数据。步骤506和下面两个测试513和514将引起DMA设备自动加载上下文,直到发现 一个启用上下文,或者确定例如通过检验是否返回禁用上下文来禁用所有上下文,不会遇 到任何启用上下文。当禁用所有上下文时,已经完成了发送。图6示意性例示了用于向几个客户机发送相同分段同时从存储器仅读取一次数 据的有利列表结构示例的实施例。所示出的是二维列表结构,包括两个上下文描述符301 上下文1和上下文2,其中上下文1参考上下文2,并且上下文2参考回上下文1。上下文1包括指向包含给定分段分段1的有效载荷数据305的缓冲器的数据描述 符303数据1。上下文2包括两个数据描述符303数据2和数据3,其中数据2指向包括第一客户 机或目标1的分段1的标题数据304的缓冲器或其它适当存储位置,并且其中数据3指向包括第二客户机或目标2的分段1的标题数据304的缓冲器或其它适当的存储位置。在操作期间,可发生如下序列1.访问上下文1,并且DMA控制器从缓冲器或存储器获得或读取分段1的有效载 荷数据的一个或多个MTU(例如在上下文1的上下文描述符元数据中所定义的)。2. DMA设备存储当前位置并切换到上下文2。3.处理上下文2,DMA控制器使用数据描述符数据2获得第一目标的标题数据。然 后DMA设备(未示出;例如见图7和8中的704)向目标1所定义的客户机发送在步骤1获 得的分段1的有效载荷数据。4.因为数据2没设置其EOL标志,所以然后处理数据描述符数据3,其提供了第二 目标2的标题数据,并且然后DMA设备向目标2所定义的客户机发送分段1的已经获得的 和发送的有效载荷数据(在步骤1所提供的)。因为设置了数据3的EOL和EOS标志,所以 切换到下一上下文。不进行位置保存,因为将再次需要其全部标题信息。下一上下文在这 个示例中是上下文1,并且重复这些步骤,直到已经向两个目标发送了分段1的所有有效载 荷数据。要理解,该过程可涉及向多于两个目标发送数据。这将只需要指向每个目标的相 关标题信息的一个数据描述符。图7例示具有硬件网络卸载的发送单元或系统700的示意框图。发送单元或系统 连接到网络(例如特别网),至少一个客户机也连接到该网络。网络例如可以是局域的、远 程的、有线的、无线的等。所示出的是包括要发送的分段的存储器和/或一个或多个缓冲器701 (以后只表 示存储器),其中存储器连接到负责操作发送单元或系统的主中央处理单元(CPU) 702。存 储器还连接到提供对存储器中一个或多个数据区域(例如每个分段一个)的访问的DMA控 制器703,每个数据区域包括之前说明的以交错方式存储的分段。DMA控制器连接到根据本发明负责控制DMA控制器的DMA设备、DMA客户机或网 络卸载器704。DMA设备连接到控制它的CPU和使能够在给定网络上发送数据的网络接口 705。当发送数据时,发送单元或系统设置DMA设备发送数据,并且DMA设备照管分段、切换 等,以卸载主CPU,并向网络接口发送数据,其在网络上发送由一个或多个客户机的网络接 口所接收的它。主CPU具有配置DMA设备的接口,并且DMA设备然后读取数据以便进行使用DMA 控制器所描述的发送。DMA控制器在DMA设备的控制下跟踪每个数据区域的当前位置。获得或导出发送 模式,并且向DMA控制器提供这方面的信息,指令它何时切换数据区域——并由此开始发送 另一个分段的数据(如果还有留下的话)。当交错发送将发送速率有效地减小到比较慢的 客户机时,特定发送模式将卸载具有降低分组丢失的网络,如下面更详细说明的。当切换 时,DMA控制器自动选择具有更多数据要发送的如DMA设备所指令的下一数据区域,如之前 说明的。DMA设备和DMA控制器可以用硬件实现,由此相比基于软件的解决方案动态地降 低用于连网卸载的CPU使用率。图8例示了 DMA设备的一个实施例的示意框图。
所示出的是连接到发送(TX)存储器802的CPU 801,该存储器802连接到传入(TX in)单元803和传出(TX out)单元804。检验和计算单元805连接到传入单元803。数据 由传入单元803从DMA控制器(未示出;例如见图7中的703)读入TX存储器802 (并且同 时检验和单元计算所读取数据分组的检验和)并然后由CPU 801进行处理,并且由传出单 元804发出到网络接口(未示出;例如见图7中的705)。图9例示了包含连接在网络中的具有硬件网络卸载的发送单元或系统以及一个 或多个客户机的系统的示意框图。所示出的是具有硬件网络卸载的发送单元或系统700,包 括DMA设备704和使能够在给定网络上发送数据的网络接口 705,以及也包括网络接口 705 的一个或多个客户机710。客户机710和发送单元或系统经网络102连接。图10是类似于结合图7所描述的发送的利用硬件网络卸载从发送单元1000的发 送的信令图。发送单元1000连接到网络,若干接收器1020、1022也连接到该网络。这些通 信实体连接到的网络例如可以是局域的、远程的、有线的、无线的等。发送单元1000包括存储要发送分段的存储器1001和DMA卸载控制器1004。图 10中示意性示出,存储器1001和DMA卸载器1004连接到处理单元1002,类似于图7中的 情形。存储器1001连接到DMA卸载控制器1004,提供对存储器1001中一个或多个数据区 域(例如每个分段一个)的访问,每个数据区域包括上面说明的以交错方式存储的分段。DMA卸载器使能够在网络上发送数据,并且当发送数据时,发送单元1000通过在 处理单元1002中执行的发送器软件1010设置DMA卸载器1004发送数据和分段、切换等, 以卸载处理单元1002,并在网络上发送要由一个或多个接收器1020、1022网络接口所接收 的数据。在发送单元1000中发生信令步骤的如下序列在第一信令步骤1051,发送器软件1010告诉DMA卸载器1004关于分段Sl和 S2。未传送实际数据,而只是关于分段的元数据。图10中所示的发送模式示例是开始于 plplp2pl并结束于pi的示例。在第二信令步骤1052中,DMA卸载器1004从分段1读取一个MTU,并向第一接收 器1020发送数据。在第三信令步骤1054中,DMA卸载器1004从存储器中读取分段1的第 二 MTU,并向第一接收器1020发送数据。在第四信令步骤1056中,DMA卸载器切换到分段 2,并读取第一 MTU。第一分组被发送到第二接收器1022,并当发送数据时,DMA卸载器1004 回到第一分段,并在第五信令步骤1058中读取和发送第三MTU。这继续,如第六信令步骤 1059所例示的,直到已经发送了所有分组,并且不需要来自接收器的ACK或类似形式的反 馈。在信令步骤1052、1054、1056、1058、1059中,要注意,可与向接收器发送数据同时执行 MTU的读取。因为交错发送将发送速率有效地减小到比较慢的客户机,所以特定发送模式将以 降低的分组丢失卸载网络,无需使用确认(ACK)信号。在权利要求书中,放在括号间的任何参考标记都不应视为限制权利要求。词“包 括”不排除存在不同于权利要求中所列出的那些元素或步骤。元素前面的词“一个”不排除 存在多个这种元素。本发明可通过包括几个不同单元的硬件以及通过适当编程的计算机来实现。在列 举了几个装置的设备权利要求中,这些装置中的几个可由一个硬件以及硬件的同一元件实施。某些手段被记载在相互不同的从属权利要求中的单个事实并不表示不能有利地使用这 些手段的组合。
权利要求
一种经数据网络(102)从发送单元(700,1000)向第一目标(710,1020)发送数据的第一分段(101)的方法,所述发送单元(700,1000)具有第一数据发送速率,第一目标(710,1022)具有第一数据接收速率,其中第一数据发送速率大于第一数据接收速率,所述方法包括通过在下列两项之间切换来有效地降低从所述发送单元(700,1000)到第一目标(710,1022)的第一发送速率·将所述第一分段(101)的至少一部分作为一个或多个数据分组发送到第一目标,所述发送在仅从所述发送单元到第一目标的方向;以及·将至少第二分段(101)的至少一部分作为一个或多个数据分组发送到一个或多个附加目标(710,1022),所述发送在仅从所述发送单元到所述一个或多个附加目标的方向,重复所述切换,直到已经发送了所述第一分段(101)和/或至少所述第二分段(101)。
2.根据权利要求1所述的方法,还包括 在向第一目标(710)发送的所述至少第一分段(101)的所述数据分组之间插入一个 或多个等待状态。
3.根据权利要求1-2中任一项所述的方法,其中,所述方法还包括 在要进行切换之前,保存确定已经发送多少所述第一分段的所述第一分段(101)中 的第一位置,和/或保存确定已经发送多少所述第二分段的所述第二分段的位置,并且当 再次切换回到发送所述第一分段或所述第二分段时,从相应保存的位置再继续发送。
4.根据权利要求1-3中任一项所述的方法,其中,根据发送模式进行所述切换。
5.根据权利要求4所述的方法,其中,基于第一目标(710)的接收速率和/或基于至少 一个所述附加目标(710)的接收速率,确定所述发送模式。
6.根据权利要求1-5中任一项所述的方法,其中,数据的所述至少第一分段(101)存 储在所述发送单元(700)的存储器(701)中,其中由直接存储器访问控制器(703)从所述 存储器(701)读取所述第一分段的数据并将其提供给直接存储器访问设备(704),该直接 存储器访问设备(704)进一步经网络接口(705)将所述第一分段的所述数据提供给所述网 络(102),其中,所述直接存储器访问控制器(703)和所述直接存储器访问设备(704)卸载 所述发送单元(700)的中央处理单元(702)。
7.根据权利要求6所述的方法,其中,所述直接存储器访问设备(704)包括检验和计算 单元(805),用于对从所述直接存储器访问控制器(703)提供给所述直接存储器访问设备 (704)的数据计算检验和。
8.根据权利要求1-7中任一项所述的方法,其中,二维列表结构控制所述切换,所述二 维列表结构包括 第一上下文描述符(301),涉及参考存储器(701)中标题数据(304)的至少一个数据 描述符(302),以及 第二上下文描述符(301),涉及参考所述第一分段(101)的数据的至少一个数据描述 符(302),其中所述第二上下文描述符(301)包括在切换前发送所述第一分段(101)的数据 的多少字节的表示,其中,所述方法包括 处理所述第一上下文描述符(301)以便获得所述标题数据(304),以及 处理所述第二上下文描述符(301)以便获得所述第一分段(101)的数据,并根据所述 表示发送若干字节的数据。
9.根据权利要求1-8中任一项所述的方法,其中,二维列表结构控制所述第一分段 (101)的发送,所述二维列表结构包括 第一上下文描述符(301),涉及参考所述第一分段的数据的至少一个数据描述符 (302), 第二上下文描述符(301),涉及至少两个数据描述符(302),每个数据描述符(302)涉 及用于两个不同目标(710)的标题数据(304),其中,所述方法包括 处理所述第一上下文描述符(301)以便获得所述第一分段(101)的至少一部分, 处理所述第二上下文描述符(301)以便获得用于所述两个不同目标(710)中一个的 标题数据(304)并且以便获得用于所述两个不同目标(710)中另一个的标题数据(304),以 及,向所述两个不同目标(710)中一个发送所述第一分段的所获得部分,并向所述两个不 同目标(710)中另一个发送所述第一分段的所获得部分。
10.一种用于经数据网络(102)从发送单元(700,1000)向第一目标(710,1020)发送 数据的第一分段(101)的装置(700),所述发送单元(700,1000)具有第一数据发送速率,第 一目标(710,1020)具有第一数据接收速率,其中第一数据发送速率大于第一数据接收速 率,所述装置包括直接存储器访问设备(704,1004),适合于通过在下列两项之间切换来有效地降低从所 述发送单元(700,1000)到第一目标(710,1020)的第一发送速率 将所述第一分段(101)的至少一部分作为一个或多个数据分组发送到第一目标,所 述发送在仅从所述发送单元到第一目标的方向;以及 将至少第二分段(101)的至少一部分作为一个或多个数据分组发送到一个或多个附 加目标(710,1022),所述发送在仅从所述发送单元到所述一个或多个附加目标的方向,重 复所述切换,直到已经发送了所述第一分段(101)和/或至少所述第二分段(101)。
11.根据权利要求10所述的装置,其中,所述直接存储器访问设备(704)还适合于 在向第一目标(710)发送的所述至少第一分段(101)的所述数据分组之间插入一个或多个等待状态。
12.根据权利要求10-11中任一项所述的装置,其中所述直接存储器访问设备(704)还 适合于 在要进行切换之前,保存确定已经发送多少所述第一分段的所述第一分段(101)中 的第一位置,和/或保存确定已经发送多少所述第二分段的所述第二分段的位置,并且当 再次切换回到发送所述第一分段或所述第二分段时,从相应保存的位置再继续发送。
13.根据权利要求10-12中任一项所述的装置,其中,根据发送模式进行所述切换。
14.根据权利要求13所述的装置,其中,基于第一目标(710)的接收速率和/或基于至 少一个所述附加目标(710)的接收速率,确定所述发送模式。
15.根据权利要求10-14中任一项所述的装置,其中,所述装置(700)包括其中存储 有数据的所述至少第一分段(101)的存储器(701)、适合于从所述存储器(701)读取所述 第一分段的数据并将其提供给所述直接存储器访问设备(704)的直接存储器访问控制器(703),其中,所述直接存储器访问设备(704)适合于经网络接口(705)向所述网络(102) 提供所述第一分段的所述数据,其中,所述直接存储器访问控制器(703)和所述直接存储 器访问设备(704)有效地卸载所述发送单元(700)的中央处理单元(702)。
16.根据权利要求15所述的装置,其中,所述直接存储器访问设备(704)包括检验和计 算单元(805),用于对从所述直接存储器访问控制器(703)提供给所述直接存储器访问设 备(704)的数据计算检验和。
17.根据权利要求10-16中任一项所述的装置,其中,所述装置包括用于控制所述切换 的二维列表结构,所述二维列表结构包括 第一上下文描述符(301),涉及参考存储器(701)中标题数据(304)的至少一个数据 描述符(302),以及 第二上下文描述符(301),涉及参考所述第一分段(101)的数据的至少一个数据描述 符(302),其中所述第二上下文描述符(301)包括在切换前发送所述第一分段(101)的数据 的多少字节的表示,其中,所述直接存储器访问设备(704)适合于 处理所述第一上下文描述符(301)以便获得所述标题数据(304),以及 处理所述第二上下文描述符(301)以便获得所述第一分段(101)的数据,并根据所述 表示发送若干字节的数据。
18.根据权利要求10-17中任一项所述的装置,其中,所述装置包括用于控制所述第一 分段(101)的发送的二维列表结构,所述二维列表结构包括 第一上下文描述符(301),涉及参考所述第一分段的数据的至少一个数据描述符 (302), 第二上下文描述符(301),涉及至少两个数据描述符(302),每个数据描述符(302)涉 及用于两个不同目标(710)的标题数据(304),其中,所述直接存储器访问设备(704)适合于 处理所述第一上下文描述符(301)以便获得所述第一分段(101)的至少一部分, 处理所述第二上下文描述符(301)以便获得用于所述两个不同目标(710)中一个的 标题数据(304)并且以便获得用于所述两个不同目标(710)中另一个的标题数据(304),以 及,向所述两个不同目标(710)中一个发送所述第一分段的所获得部分,并向所述两个不 同目标(710)中另一个发送所述第一分段的所获得部分。
19.一种计算机可读介质,其上存储有用于使一个或多个处理单元执行根据权利要求 1-9中任一项所述的方法的指令。
全文摘要
本发明涉及一种经数据网络从具有第一数据发送速率的发送单元向具有第一数据接收速率的第一目标发送数据的第一分段的方法。在第一数据发送速率大于第一数据接收速率的情况下,该方法包括通过在下列两项之间切换来有效地降低从发送单元到第一目标的第一发送速率在仅从发送单元到第一目标的方向将第一分段的至少一部分作为一个或多个数据分组发送到第一目标;以及在仅从发送单元到一个或多个附加目标的方向将第二分段的至少一部分作为一个或多个数据分组发送到该一个或多个附加目标,重复该切换,直到已经发送了所述第一分段和/或至少所述第二分段。这样,降低了到客户机的分组速率,同时保持了发送系统的总分组速率,由此减小了分组丢失和/或路由器缓冲器耗尽的可能性,这是因为不会以全速率发送数据到比较慢的客户机。
文档编号H04L29/06GK101911612SQ200880124285
公开日2010年12月8日 申请日期2008年10月29日 优先权日2008年1月8日
发明者M·斯达维克 申请人:阿克塞斯股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1