在高速网络应用中使用rxfifo缓冲区处理rx信息包的系统与方法

文档序号:2925600阅读:584来源:国知局
专利名称:在高速网络应用中使用rx fifo缓冲区处理rx信息包的系统与方法
技术领域
本发明与网络通信有关,具体而言,与处理接收(RX)的信息包有关。
技术背景传输减负引擎(TOE)包括在高速系统中优化输入输出量以及降低处理器使用的技术, 这种技术正曰益受到欢迎。TOE组件经常组合应用于各种类型的印刷电路板,如网络接口 卡(NIC)、主机总线适配器(HBA)、主板,或其它任何所需的减负场合。近年来,系统中通信速度的增加己经超出了处理器的速度。这就产生了输入/输出 (I/O)瓶颈。处理器的设计目的主要是为了计算而非输入/输出,所以一般无法跟上网络 中的流动数据。因此,数据流的处理速度要落后于网络速度。TOE技术通过从处理器和/ 或I/0子系统移除负载(即减负),从而解决了这个问题。一种常向TOE进行减负的处理类型包括传输控制协议(TCP)信息包处理。TCP是 同互联网协议(IP) —起使用的、用于在电脑与互联网之间以信息单元形式传送数据的一 套规则(协议)。IP负责处理数据的实际传递,而TCP则负责追踪切分过的单个信息包以 确保通过互联网进行有效输送。在高速网络中处理TCP信息包要求进行很多处理步骤。信息包可能不按次序到达, 所以如需将数据按次序传输给一个应用,则必须进行储存。此外,对所接收信息包的处理 必须能跟上网络连接的线路速度。因此,需要一种能加速TCP及其它信息包处理的技术。本发明提供了一种用于处理通过网络所接收的信息包的系统与方法。在实际使用中, 数据包与控制包通过一个网络被接收。此外,所述数据包与控制包的处理同步进行。在一个实施例中,所述控制包可通过使用第一处理路径进行处理,而所述数据包可通 过使用独立于第一处理路径的第二处理路径进行处理。在另一实施例中,所述控制包的处理可以包括同步使用一个査询表与一个缓存区,以 识别出同所述信息包相关联的正确的接口控制块。类似地,所述数据包的处理可以包括同 步使用双重逻辑程序以识别一个同所述信息包相关联的正确的接口控制块。
在另一实例中,同所述信息包相关联的控制块可与其后信息包的处理同歩被更新。 作为又一种选择,标签信息可预先附带于所述数据包。此类标签信息还可以在所述数 据包在一个接收器(RX)先进先出(FIFO)缓冲区中缓冲的时候预先附带于所述数据包。 另外,所述标签信息可包括相应信息包的类型, 一个同相应信息包相关联的接口句柄,同 相应信息包相关联的状态信息,和/或同相应信息包相关联的控制信息。 在使用中,所述数据包可通过使用一个RX FIFO缓冲区來进行缓冲。


图1显示了一个实施例的网络系统。图2显示了一个可用于执行一个实施例的架构。图3显示了一个实施例中用于处理所接收信息包的特定架构的例子。图4显示了一个实施例中用于处理所接收信息包的示范性前端模块。图5显示了一个实施例中用于处理所接收信息包的示范性接收器后端模块。图6显示了一个实施例中用于处理所接收信息包的示范性前端方法。图7显示了一个实施例中用于处理所接收信息包的示范性后端方法。图8显示了一个实施例中用于处理所接收控制包的示范性控制包处理方法。
具体实施方式
图l显示了一个实施例中的网络系统100。如图所示,提供了一个网络102。在本网 络系统100的上下文中,网络102可以釆取任何形式,包括但不限于一个局域网(LAN)、 —个广域网(WAN)如互联网等。连接于网络102的包括一个本地主机104,以及一个可通过网络102进行通讯的远端 主机106。在本说明书的上下文中,此类主机104和106可以包括一个网络服务器、储存 装置或服务器、桌上型电脑、膝上型电脑、手提式电脑、打印机或任何其它类型的软/硬 件。应该注意,上述组件中的每一项以及任何其它未说明的装置也可通过一个或更多网络 进行相互连接。图2显示了一个可执行一个实例的示范型架构200。在一个实例中,架构200可代表 图1中的主机104、 106之一。然而也应注意,架构200可在任何所需的环境中执行。例如,架构200可在一个通用电脑系统、一个电路板系统、 一个专供娱乐的游戏控制 台系统、一个机顶盒、 一个网络系统、 一个存储系统、 一个特定的应用系统,或任何与网 络102相连接的其它所需系统中执行。
如图所示,架构200包括多个通过一条总线202而互相连接的组件。包括至少一个用 于处理数据的处理器204。而所述处理器204可采取任何形式,如在一个实例中,其可以 是一个中央处理器(CPU), —个图形模块、 一个芯片组(即一组能执行相关功能、可独 立运行或出售的集成电路单元)的形式,这些形式的组合,或任何其它形式的集成电路。 对于图形模块,此类集成电路可包括一个转换模块、 一个照明模块、及一个光栅化模块。 每个上述模块可以位于单个的半导体平台上以形成一个图形处理单元(GPU)。还可包括与处理器204进行通信以储存数据的处理系统存储器206。该处理器系统存 储器206可采取机载或离机式随机存储器(RAM)、 一个硬盘、 一个可移除式存储驱动器 (如一个软盘驱动器、 一个磁带驱动器、 一个致密光盘驱动器等形式),和/或任何所需的、 其它类型的可储存数据的存储器。在使用中,程序或控制逻辑算法可选择性地储存于处理器系统存储器206中。在执行 时,此类程序使架构200能执行各种功能。当然,架构200可以简单地直接在硬线连接的 逻辑闸层次电路中执行。此外,还显示了与处理器204互相通信的传输减负引擎212以及网络(如图1中的网 络102)。在一个实施例中,所述传送减负引擎212可保持通过总线202与处理器204的 通信。然而,所述传输减负引擎212也可通过任何提供两者间通信的机构保持同处理器 204的通信。所述传送减负引擎212可包括一个传输(如TCP/IP)减负引擎(TOE),系 统,或任何能管理在网络中传输的数据的集成电路。虽然实例中仅显示了利用单条总线202来提供上述组件之间的通信,应理解,可使用 任何数目的总线(或其它通信机构)来提供组件之间的通信。举一个例子,可以使用一条 额外的总线来提供处理器204与处理器系统存储器206之间的通信。此外,在一个实例中, 任何图2中所示两个或多个的组件可以整合入单块集成电路之中。在操作中,传输减压引擎212、处理器204和/或软件用于处理通过一个网络(如图l 中的网络102)所接收的信息包。根据一个实施例,数据包与控制包通过一个网络接收。 此外,所述数据包的处理与所述控制包的处理同步进行。在本说明书的上下文,"数据包"是指任何用于进行数据通信的信息包,而"控制包" 是指任何具有控制网络通信性能的信息包。此外,"同步"是指所述数据包与控制包的任 何方面得到处理的步骤,这种处理至少部分同时进行。由此,所收到信息包的处理效率得 到了提高。
在另一个实施例中,所述信息包的处理可以包括同步使用双重逻辑和/或多重数据结 构(如一个査询表与缓存区等),以识别一个与所述信息包相关联的正确的接口控制块 (CB)。作为一种选择,在此类搜寻模式中(如当此类CB得到识别时),如果正确的接口 控制块不在缓存区中,正确的接口控制块可从一个主存储器中取回,此时在査询模式下取 回的正确接口控制块并不储存于缓存区。在本说明书的上下文种, 一个CB可以包括任何 能够被用于追踪一个连接尝试和/或连接的信息。通过使用能首先正确地识别CB的数据结构的识别结果,上述识别过程得到加速。此 外,通过使用双重逻辑,可同时对多个信息包执行CB识别过程,由此提供进一步的处理 加速。作为另一种选择,标签信息可以预先附加于信息包(如数据包和/或控制包等)。此类 标签信息还可以在所述数据包在一个接收器(RX)先进先出(FIFO)缓冲区中缓冲的时 候预先附带于所述数据包。通过预先附加标签信息,当前述CB识别进行的时候,所收到 的信息包可以被储存。此外,作为一种选择,可能不需要一个独立的、用于存储标签信息 的缓冲区。在另一个实施例中,随着额外信息包的收取,CB可以进行更新。这样,在使用中, 一个同首个信息包相关联的CB可以得到更新。此外,在至少同首个信息包相关联的CB 的更新启动之后以及完成更新之前,可以启动第二个信息包的处理,从而提高了性能。这 样,信息包的处理可以与CB的更新同步进行,从而降低了在一个过程中出现瓶颈并在另 一个中制造瓶颈的可能性。以下将给出更多关于上述实施例的可选特性与示范实例的细节。应该注意,以下细节. 仅用于说明,不应被认为起到任何限制作用。图3显示了一个实施例中用于处理所接收信息包的示范性架构300。作为选择,所述 架构300可以在图2的示范架构200的环境下执行。当然,也应该注意架构300可在任何 所需的环境下执行。如图所示,提供了多个介质存取控制(MAC) RX缓冲区302,用以从多个网络102 处接收数据包和控制包。应注意,RX缓冲区302对于多个网络102不是必须的。 一个实 例可能包括用于单个网络的一个缓冲区。此类MAC RX缓冲区302支持一个以太网RX 306,而其又反过来支持互联网协议(IP) RX310和一个异常处理器314。所有的IP信息 包都送往IP RX 310,而所有其它信息包都送往异常处理器314。
在IPRX310之内,信息包IP报头被解析。然后所有互联网协议安全(IPSEC)协议 信息包被发送至一个IPSEC RX处理器308并存储于一个IPSEC RX缓冲区304,然后所 有的TCP或UDP信息包被发送至TCP RX前端模块316。所有其它信息包都被发送至异 常处理器314。 一个多路复用器312在来自IP RX310的正常TCP/UDP信息包与来自 IPSEC RX处理器308的经处理IPSEC信息包之间做出选择。在使用中,TCPRX前端模块316对接收到的TCP信息包进行解析以决定一个所接收 的信息包是否包含有TCP数据或者是一个TCP控制包。之后每个信息包类型会被提供独 立的处理路径。在这里,信息包处理效率得到提升,其方式如上文所述。此外,信息包的 处理可以包括同步使用双重逻辑和/或多重数据结构如一个查询表(参见CB查询表318) 及一个CB缓存区(参见CB数据缓存区324),等,以识别一个与所述信息包相关联的 正确接口 CB。然而,由于上述的原因,在寻找与信息包相关联的相应CB的同时,数据包被储存于 MAC RX FIFO缓冲区322。在数据包被储存且CB查询完成之后,标签信息可以预先附加 于位于MAC RX FIFO缓冲区322的数据包上。TCP RX前端模块316的另一个特性是, 它可以更新一个同首个信息包相关联的CB。在至少同首个信息包相关联的CB的更新启 动之后,以及在更新完成之前,可以开始第二个信息包的处理,由此处理性能得到了提髙。更多关于TCP RX前端模块316功能及选择性执行细节的信息将结合图4作进一步详 细说明。继续参照图3, TCPRX前端模块316支持一个异常处理器314。所有被识别为导致任 何逻辑异常的信息包都被发送至异常处理器314。例如,同一个所接收的过滤设定相匹配 的信息包,或包含不支持选项的信息包可能被发送至异常处理器314。如上所述,正常的 数据包通过一个RX缓冲控制器320储存于MAC RX FIFO缓冲区322。该RX缓冲控制 器320接受来自异常处理器314或TCPRX前端模块316的存储信息包的请求,并在这两 个来源之间做出主观选择。更多关于此类的互动信息将在下文作详细说明。RX缓冲控制器320支持额外的MAC RX FIFO缓冲区322,它又反过来支持RX后端 模块326。该MAC RX FIFO缓冲区322由此连接于前端模块与后端模块之间,为两者提 供分界并将它们互相隔离。如图3所示,TCP RX前端模块316向RX后端模块326指示有信息包可以在MAC RX FIFO缓冲区322内进行服务。RX后端模块326负责应用层处理,如互联网小型电脑系统 界面(iSCSI)协议或任何其它所需的协议如RDMA (远端数据记忆存取等),这在下 文将显而易见。更多关于此类RX后端模块326功能的信息与可选择执行细节将结合图5 作进一步详细说明。
最后,RX后端模块326使用分散-收集列表(SGL) 33和/或可能是存储描述符列 表(MDL),匿名缓冲区列表328,以及直接记忆存取(DMA)逻辑程序330,在主机存 储器(例如图2中的处理器系统存储器206、 106)中存储收到的信息包。在本说明书的 上下文种, 一个SGL可以包括任何所提供的数据列表对象,用以说明所收到数据最终存 储于存储器中的各种位置。根据一个实施例,图4显示了用于处理所接收信息包的示范性TCPRX前端模块316。 作为选择,TCPRX前端模块316可以在图3的示范架构300的环境下执行。然而也应注 意,TCPRX前端模块316可以在任何所需的环境下执行。如图4所示,TCPRX前端模块316从IP层接收数据(例如通过图3的IPRX310等), 并处理所述信息包或将其当作异常处理。为了达成这一点,提供了一个TCP RX解析器414 和接口定位器模块402。作为选择,可以提供多个TCPRX解析器414与接口定位器模块 402。为此,此处所公开的任何逻辑模块可以双重甚至是三重方式提供以提升处理效率。在使用中,TCP RX解析器414负责解析所接收的TCP与数据包协议(UDP)信息 包。作为一种选择,所有的UDP信息包可以作为异常送出(例如通过图3中的异常处理 模块314等)或可以同TCP数据包类似的方式进行处理。作为另一种选择,一个UDP校 验和可以加以核实,如果其已损坏,则该信息包可以被放弃。对于TCP信息包,所有数据包都储存于一个RX FIFO缓冲区322中,而所有的控制 包都被送至一个控制包队列404。这种安排可以通过检査TCP报头中的FLAG比特以及信 息包长度来实现。由此,控制包可通过使用第一处理路径进行处理,而数据包则可使用独 立于第一处理路径的第二处理路径进行处理。如果信息包是一个数据包,接口定位器模块402可以计算出一个接口哈希(hash)值。 通过背景,每个数据包同一对IP地址和一对TCP或UDP端口相关联。该哈希值可基于该 IP地址和端口而生成(例如通过使用"接口4—数组等")。该哈希值然后可用于为CB査询表318制定索引。表1给出了一个CB查询表318的 范例。Ml哈希1/ (存储器中接口 CB1的地址1) 哈希2/ (存储器中接口CB2的地址2) 哈希3/ (存储器中接口CB3的地址3) CB地址可用于识别存储器中适当CB的地址,并兼做同CB相关联的接口句柄识别 器。CB—般包括此类接口句柄,以及其它信息如接口状态等。在CB结构内有一个指向 下一个CB的域,它包含相同的所生成的哈希值。通过这种方式,带有冲突哈希值的接口 可以被解决。然后,根据将接口句柄同与当前信息包相关联的实际接口进行比较,确定同CB相关 联的接口是否是正确的接口。例如,如果信息包中的4—数组与接口 CB中的参数相匹配, 则正确的CB就己经找到。如果不匹配,就从CB读取下一个连接的接口句柄,此接口CB 就被调出。这个取回下一个连接的接口句柄的过程继续进行,直到找到正确的接口 CB,或者确 定不存在可以同所接收信息包相关联的CB。作为一种选择,CB査询表318的大小可以是 所支持接口的最大数量的两倍,以减少哈希冲突的数目,并可定位于外部存储器中。在使用此种CB査询表318的同时,在CB数据缓存区324内进行了一次査询。CB 数据缓存区324包含了最近使用过的"n"接口 CB (32左右)。CB数据缓存区324进一 步包含一个哈希关联表,它指示了存在于CB数据缓存区324内的每个CB条目所生成的 哈希。接口定位器模块402随后可以查询CB数据缓存区324以确定是否一个匹配的CB 哈希存在于CB数据缓存区324中。这样,可以在一个预定的时间内(如生成哈希的一个 时钟)确定是否有可能的CB匹配存在于CB数据缓冲区324中。通过使用首次正确识别CB的数据结构的识别结果(即CB査询表318或CB数据缓 存区324),上述识别过程得到加速。例如,当CB不在CB数据缓存区324内时,找到正确接口所需的最大存储器读取数可以通过等式#1得出。等式井l 时钟数#=1+/ ("),其中 ■首次读数来源于CB査询表318査询 "n是该特定哈希的CB哈希冲突的数目,且是从一个CB条目中读取接口端口与IP地址所需的时钟循环的数目如果CB位于CB数据缓存区324,则找到CB所需的时钟最大数目由等式弁2给出。等式弁2 时钟数# = 其中 ,m是指具有特定哈希的CB数据缓存区324中CB的数目
由于缓存区总线的宽度尺寸良好(如128比特等),这些参数可以从CB数据缓存区 324内快速读取。作为进一步的特性,当接口定位器模块402正在査找由CB査询表318所参照的CB 时,CB数据缓存区324可以允许一个特殊的全程读取模式。在这个特殊的读取模式中, 所要求的CB首先被检査,以确定其是否定位于CB数据缓存区324之内。如在,其内容 可立即返回。但是,如果其不在CB査询表38中,可从主CB存储器中读取,但在这个 模式中,CB不被拖入CB査询表318中。这是因为此时的査询逻辑还在寻找同所接收的 信息包相关的CB。 一旦正确的CB被定位,同该CB相关联的句柄被传递到TCPRX状态 控制器412,由后者通过CB数据缓存区324读取该CB。此时,该CB从主CB存储器中 取回,并放入CB数据缓存区324。在进行CB查询的同时,数据包存入RXFIFO缓冲区中。这样,对于大于预定尺寸的 数据包来说(如80字节等),找到合适的CB所需的平均损失时间保持最低。由于找到正 确的CB是一项限时任务,这个逻辑(即TCP RX解析器414和/或接口定位器模块402 等)可以在TCPRX前端模式316中双重提供(或甚至以三重形式提供),以使从IP层所 接收的多重信息包可以被同时处理。这就允许逻辑程序进行前瞻操作,在第一个信息包仍在处理中时就开始为下一个信息 包查询CB。 一旦找到CB,并获取其内容,信息包的处理(即决定如何处置信息包等)在 几个时钟周期内完成。回到接收处理,如果正确的CB不在CB数据缓存区324中,则从主CB存储器中对 其读取,同时将其放入CB数据缓存区324。如果CB早就在CB数据缓存区324中,它 可直接读取。接口状态,控制比特,以及参数(包括SEQ与ACK数目等)都可通过使用 CB获得。一旦所有的CB参数都已取回,根据接口的状态,信息包的处理可在一个预定的时间 内完成(如大约2个时钟周期)。因此,对于大于预定尺寸的数据包(例如平均300字节), 处理可以在数据被储存于RX FIFO缓冲区322之前就已完成。即使CB需要从CB主存储 器中获取,这也可能适用。如果CB早就在CB数据缓存区324之内,即使更小的数据包 也可在信息包处理所需的最小额外时间内得到处理。标签信息被预先附加于RX FIFO缓冲区322的每个信息包中。此标签信息可以包括 信息包类型的信息(如异常,TCP数据包等),与此相关的接口句柄,和/或其它控制与状 态信息。所述标签信息可以在整个信息包接收完毕并验证为有效后填入。此类标签信息还可以在信息包在一个RX FIFO缓冲区322中缓冲的时候预先附加于 信息包。通过以此方式预先附加标签信息,在进行前述CB识别的同时所接收的信息包可 以被储存。此外,作为一种选择,有可能标签信息不需要独立的缓冲区。TCP解析器的另外一个功能是验证TCP校验和。这是通过当信息包在接受解析以及 被储存于RX FIFO缓冲区322 (对于数据包)或控制包队列404 (用于TCP控制包)时监 控信息包来实现的。所得的校验和与由IP层所提供的假报头校验和相结合,产生最终的 校验和。此项检査在IP模块的最后语段被读取后一段预定的吋间框架内是有效的(即3 个时钟)。如果信息包被认为由于TCP校验和错误或通过任何來自更低层的其它错误而损 坏,信息包将会从RX FIFO缓冲区322或控制包队列404中去除。继续参照图4,图中提供了一个TCPRX状态控制器412。TCPRX状态控制器412负 责确定所接收的TCP数据包的行动路线。将信息包参数与接口 CB内的参数进行核对。这 包括检查信息包的序列号,接口的状态等等。然而,信息包会被当作好信息包来处理。在整个分包被接收后,所有处理早就已经开 始,仅需极少的进一步计算。如果信息包被确认为损坏,CB不被更新,且信息包将从RX FIFO缓冲区322或控制包队列404中去除。在这种情况下,每个缓冲区的写入指针都被 重置到信息包被接收前的点。—旦整个数据包都储存于RX FIFO缓冲区322中,TCP RX状态控制器412可通过 —个TCP发送器模块(未显示)设定一个ACK。可以支持四种ACK模式正常即刻ACK, 正常延迟ACK,主机模式即刻ACK,以及主机模式延迟ACK。在正常模式下,当数据包收到后并被认定为有效,ACK或延迟ACK立刻被请求或加 入队列。在两个主机模式中,ACK只有在主机己经确认通过RXDMA收到数据后才会被 请求或加入队列。再次回到TCP RX解析器,逻辑块可以将纯TCP控制包(即不包含任何数据的此类 信息包)从数据包中分离出来。这是因为纯控制包通常都是较短的信息包,且不对过程具 有限时性。这些TCP控制包可以通过TCP报头中的FLAG比特设置并结合信息包的整个 长度进行检测。如果信息包不含数据,而推送(PSH)比特不被设定,信息包被认为是一 个纯控制包。这些信息包被转移到图4中的控制包队列404。在信息包被转移时,每个信息包的校 验和被计算,损坏的信息包被抛弃。接口哈希也被计算,并预先附加于另一部分的信息包 中。然后一个控制包处理器416会从队列中读取信息包并对其进行处理。之后对控制包进 行表2所示的操作。
表21、 接口哈希在CB查询表318中进行查询。同时,哈希被检验以确定CB是否已经在 CB数据缓存区324内。2、 假设CB早就在CB数据缓存区324内,读取适用的域。3、 如果CB不在CB数据缓存区324内,则将其从主CB存储器中取回并放置于数据 缓存器324中。4、 然后由所接收信息包的类型及接口的当前状态确定所釆取的行动。这些行动可以 是(但不限于)以下的任意一种a、 向TCP传输器请求一个响应b、 给主机发送一个状态信息c、 不理会信息包d、 将信息包作为一个异常向上发送5、 在决定所需的行动之后,CB相应地被更新。接口的査询与读取,信息包的处理,CB的更新都是流水线操作,这样就使得前一个 控制包还在处理时,处理器就可以开始寻找下一个接口。图5显示了一个用于处理所接收信息包的示范性RX后端模块326。作为一种选择, 改RX后端模块326可以在图3的示范性架构300中执行。然而也应注意,改RX后端模 块326可以在任何所需的环境下执行。—旦信息包完全储存于RXFIFO缓冲区322中,且信息包缓冲区报头己写满,RX后 端模块326就开始对其进行处理。通过使用一个数据排列与RX缓冲区报头解析模块502, RX后端模块326开始解析并剥离数据包缓冲区报头。这向RX后端模块326告知了信息 包的类型(即异常或TCP数据包),同信息包相关联的CB句柄,及其它状态与控制信息, 如上所述。在一个实施例中,报头的长度可以是256比特。在信息包缓冲区报头被解析并剥离之后,信息包被重排。这个重排可能是需要的,因 为对于正常的TCP (也可是UDP)数据包来说,信息包以太网,IP,以及TCP报头也被 剥离。这些报头的剥离可能导致结果数据为非FIFO字符排列,而重排使得其后的逻辑模 块对于信息包数据的处理更为容易。在重新排列后,信息包可以选择性地通过应用特异性处理逻辑程序504。这个逻辑程 序包括但不限于执行iSCSI协议或远端直接记忆存取(RDMA)功能的逻辑程序。对于 iSCSI支持来说,这个模块可执行iSCSI循环冗余检查(CRC)验证,iSCSI协议数据单元 (PDU)报头解析,以及固定间隔标记(FIM)的移除。
所有异常信息包(来自网络堆栈的每一层)都按照异常缓冲区列表的指示被发送至主 机存储器(即临时缓冲区,持有缓冲区,涡流缓冲区等)。这个异常列表(如图3的列表 328等)由主机驱动器提供。该列表可随着缓冲区的使用而不断地被主机增加。取回异常 缓冲区地址以及管理异常缓冲区列表由SGL处理逻辑506负责。到达一个接口的定期TCP数据通常使用一个接口特异性SGL,以指定数据应存储于 主机存储器中的哪个位置。SGL (即例如图3中的SGL334等)由主机驱动器提供。列表 在使用过程中可以不断地被主机增加。在本说明书的上下文中, 一个SGL可以包括任何 数据列表对象,这些对象用于说明所收到数据在存储器中最终存储的各种位置。当数据在 接口被接收,同该接口相关的SGL不包含任何有效的缓冲地址,所收到的数据也通过使 用异常缓冲区列表被发送至主机存储器。SGL的管理也由SGL处理逻辑程序506处理。对于正常的TCP数据包来说,SGL条目首先从SGL存储器334取回。所接收信息包 的序列号指明应在SGL的哪个部位存放该数据。这就能使即便是无序(OOS)的数据也 能正确地排列。对于按次序接收的数据,只需从SGL —次读取即可获得用于储存数据的 主机地址。然后可以生成一个DMA请求,将数据加入处理系统存储器。DMA请求得到批准后, 该数据从RXFIFO缓冲区322中读取并发送至一个主机DMA界面330 (参见图3),在此 处数据经过DMA步骤输入处理器系统存储器206内的指定地址。每个接口都可支持多重 SGL,这样可以进行來回式操作。这使得主机驱动器能在一个SGL终结时尽快提供下一 个SGL,而无需将数据转移至匿名缓冲区。如果一个单个数据包横跨一个以上的SGL条目,在该信息包的第一个经过DMA处理 时,下一个SGL条目可以被调出并处理。这样,在每个请求完成后可立即进行其后的DMA 请求。一旦DMA完成之后,可选择性生成状态信息,通知主机驱动器数据己到达。此时, 通过使用一个TCPRX CB更新以及状态信息请求模块508,某些CB参数也被更新。信息包报头的解析,SGL的获取,数据的DMA处理,以及CB的更新都可以是流水 线操作。这就使得RX后端模块326可以开始处理下一个信息包报头,即使对于上一个信 息包的DMA进程仍在完成过程中,从而保证了数据的最大通量。同样的,此处所公开的 任何逻辑模块可双重或三重提供以提升处理效率。图6显示了一个实例中用于处理所接收信息包的示范性的前端方法600。作为一种选 择,方法600可以在图2所示的示范性架构200的环境下执行,或甚至在图3—5的示范
性框架内进行。然而也应注意,方法600可在任何所需的环境下执行。此外,虽然各种不 同的功能可以指定给示范性组件(如上文所述),各种不同功能可由任何所需的实体执行, 理解这一点很重要。图6描述了所接收的信息包上传至RX缓冲区(如图3中的RXFIFO缓冲322)的处 理流程,然后集中于前端处理。在操作602, 一个互联网协议(IP)层指示一个接收的信息包是否可用。响应这一指 示,在决定604,决定是否一个RX解析器(如图4中的RX解析器414)可用。如果确定RX解析器不可用,方法600将等待一个可用的RX解析器。请注意操作 606。如可用,在操作608,所接收的信息包被发送至可用的RX解析器。如果一个RX解析器可用,则基于该信息包报头624所包含的参数,为该信息包生成 一个哈希。然后RX解析器就检查该TCP报头,以确定信息包类型(见决定610),并解 析信息包参数。如果该信息包是一个纯TCP控制包(即信息包不包含任何TCP数据),则 该信息包将被发送至一个控制包队列(如图4中的控制包队列404)。见操作612。如果该信息包确实包含TCP数据,在操作616与618中启动一次CB查询。该査询可 以通过双重的数据结构同时进行(如CB査询表318与CB数据缓存区324等)。无论哪个 路径首先结束,查询过程即告结束。然而,如果査询CB数据缓存区未能找到一个匹配的 CB条目,逻辑程序将等待直到CB査询表査询结束,如操作620所示。在一个实施例中, 未曾出现CB查询表无法找到CB,而该CB在CB数据缓存区内被找到的情况。找到CB的同时,TCP数据存储于一个RX缓冲区(如RX FIFO缓冲区322等)。请 注意操作614。 一旦所有的数据都被写入,在操作622中, 一个标签部分被附加于在RX FIFO中的数据部分。该标签包括信息包的参数(例如其是何种类型),以及从CB条目中 获得的某些状态信息(如果有)。在标签被写入RXFIFO之后,特定的解析器即被释放以 接收另一个收到的信息包。图7显示了一个实例中的用于处理所接收信息包的示范性后端方法700。作为一种选 择,方法700可以在图2中示范性架构200的环境下执行,或甚至在图3—5中的示范性 架构中进行。另外,方法700可同图6中的前端方法600—起进行。当然也应注意,方法700可在任何所需的环境下执行。此外,虽然各种不同的功能可 以指定给各类示范性组件(如上文所述),各种不同功能可由任何所需的实体执行,理解 这一点很重要。图7描述了所接收信息包在一个RX缓冲区(如图3中的RXFIFO缓冲322)后的处 理流程,然后集中于后端处理。 图7的流程起始于RXFIFO缓冲区(如RX FIFO缓冲322等)输出的数据可用。首 先,在操作702与704,如果信息包可用,用于RXFIFO缓冲条目的报头部分被读取。这 就向后端逻辑指明了数据包的类型,以及其它状态信息。在信息包缓冲区报头被解析后,其与以太网、IP及TCP/UDP报头(用于减负连接所 接收的信息包) 一起被剥离,且该数据被重拍。见操作706。然后该数据选择性地通过可选的分配特异性处理逻辑程序。见操作708。该逻辑程序 即为iSCSI与RDMA支持处理被执行的地方。如果信息包属于一个减负连接(例如一个CB条目被发现与该信息包参数相匹配), 则进行一次检查以确定是否有可用于该数据的SGL缓冲区。请注意决定710。如果没有缓 冲区可提供,该数据被DMA处理送至处理器系统存储器的接口缓冲区。这在操作712通 过从中接口的一个SGL获得一个主机缓冲地址而实现,此后数据经过DMA处理送入处理 器系统存储器。见操作716。如果无接口缓冲区可提供,通过使用一个来自全域列表的异常缓冲区地址,该数据被 DMA处理送至常规异常缓冲区(也位于处理器系统存储器中)。见操作714。然后一个通 知被发送至主机,通知其有数据需要处理。如果一个CB被用于信息包(根据决定718),该CB在操作722被更新。反之则无需 额外的操作(如操作720中所示)。同时,后端逻辑程序可以开始处理来自RXFIFO缓冲 区的下一个信息包。图8显示了一个实例中的用于处理所接收信息包的示范性控制处理方法800。作为一 种选择,方法800可在图2中示范性架构200的环境下执行,或甚至是在图3—5的示范 性框架下执行。另外,方法800也可同图6与7的方法600与700—起执行。然而也应注意,方法600可以在任何所需的环境下执行。此外,虽然各种不同的功能 可指定给各类示范性组件(如上文所述),各种不同功能可由任何所需的实体执行,理解 这一点很重要。图8的方法800起始于一个控制包队列(如图4中的控制包队列404)输出的一个控 制包可用。请注意操作802。第一个步骤是信息包缓冲区报头被解析。见操作804。该报 头包含所生成的信息包哈希,以及同该控制包相关的其它状态信息。随后,使用所取回的哈希值启动一次对匹配CB的查询。类似于处理数据包的前端逻 辑程序所使用的图6的方法600,双重数据结构(如CB査询表318及CB数据缓存区324 等)同时被问询。见操作806与808,然后在操作810等待结果。
如果根据决定812未发现有CB匹配所接收的TCP控制包,则该信息包操作816被预 定通过DMA发送至主机,RX控制逻辑程序可以开始处理下一个来自该队列的控制包。 在继续作业前,该逻辑程序不必等待控制包在操作824被DMA处理送至主机。如果根据决定812发现一个能够匹配控制包的CB,则该信息包在操作814被处理。 然后进行一次检査,决定是否接口CB需要根据对信息包的处理结果进行更新。见决定818。 如该CB不需要更新,则该CB预定于操作820与822中进行更新。然后控制包逻辑程序 可以开始处理下一个来自队列的控制包。同时,CB配合当前控制包被更新,此歩骤如前 所述。虽然上文己对各种不同的实施例进行了说明,应该理解这些实施例仅是范例,并无任 何限制作用。因此,所挑选实施例的广度与范围不应受任何上述示范性实施例所限定,而 应仅根据以下各权利要求及其等同物所定义。
权利要求
1、一种用于处理从网络接收的信息包的方法,其特征在于包括通过一个网络接收的数据包和控制包;及在处理所述控制包的同时处理所述数据包。
2、 如权利要求l所述的方法,其特征在于,所述控制包通过第一处理路径进行处理,而所述数据包则使用独立于所述第一处理路径的第二处理路径进^:处理。
3、 如权利要求1所述的方法,其特征在于,所述信息包的处理包括同步使用一个査询表和一个缓存区,以识别一个与所述信息包相关联的正确的接口控制块。
4、 如权利要求1所述的方法,其特征在于,所述数据包的处理包括同步使用双重逻辑以识别一个与所述信息包相关联的正确的接口控制块。
5、 如权利要求1所述的方法,其特征在于,与所述信息包相关联的控制块的更新与 其后信息包的处理同步进行。
6、 如权利要求l所述的方法,其特征在于,标签信息被预先附加于所述数据包。
7、 如权利要求6所述的方法,其特征在于,所述标签信息在数据包在接收器(RX) 先进先出(FIFO)缓冲区中缓冲时预先附加于所述数据包。
8、 如权利要求6所述的方法,其特征在于,所述标签信息选自相应信息包的类型, 与相应信息包相关联的接口句柄,与相应信息包相关联的状态信息,以及与相应信息包相 关联的控制信息。
9、 一种用于处理从网络接收的信息包的方法,其特征在于包括 使用一个前端模块处理收到的信息包及 使用一个后端模块处理收到的信息包;其中一个接收器(RX)先进先出(FIFO)缓冲区连接于所述前端模块与后端模块之 间,以在两者之间的提供分界。
全文摘要
一种用于处理从网络接收的信息包的系统和方法。使用中,数据包和控制包从网络被接收。而且,对所述数据包的处理与对所述控制包的处理同步进行。
文档编号H01J3/04GK101120424SQ200580035744
公开日2008年2月6日 申请日期2005年10月19日 优先权日2004年10月19日
发明者姆鲁杜拉·卡努里, 约翰·重人·美浪, 罗宾·Y·耶西罗, 西恩·E·黄, 迈克·沃德·约翰逊 申请人:恩维迪亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1