报头处理引擎制造技术

技术编号:6725771 阅读:204 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种报头处理引擎,用于具有保存各自包括一个或更多个报头的一个或更多个数据分组的缓存的网络接口设备,该报头处理引擎包括:命令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组中各报头的类型和位置;构造器单元,具有对数据分组的报头读取访问权;以及处理器,包括一个执行流水线;该报头识别器进一步被配置为对每个报头:(a)根据报头的类型选择存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行为数据分组的报头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单元被配置为接收消息并执行从中识别的命令。

【技术实现步骤摘要】

本专利技术涉及一种处理分组报头的报头处理引擎
技术介绍
现代数据分组网络中的计算机系统通常根据在网络的全部层中运行的多个不同 的协议,从管理数据流业务质量的协议,到确定数据分组逻辑结构的协议,再到确定网络结 构上的全形式数据分组的物理信令的协议,来交换数据。因此一个典型的网络数据分组在 计算机系统中形成数据分组时会具有嵌套式的多个报头。通常数据分组在开放系统互联 (OSI)模型的第2至5层的每一层包括一个或更多个报头。例如,通过建立了逻辑VLAN的以太网传输的TCP/IP数据分组会具有与以下所示 相近的嵌套报头结构以太网 /VLAN/IP/TCP另外,分组可在以上结构中包括第5层报头,例如NetBIOS报头。数据分组的报头把处理该数据分组的计算机系统需要的全部信息告诉该计算机 系统,以便计算机系统将数据分组中的有效载荷数据正确地路由到其目的地,并且对数据 分组的发送方进行适当的响应。没有了分组报头,有效载荷数据就单单是一串没有任何上 下文的比特序列,计算机系统不知道怎样处理数据。因此,计算机系统接收数据分组时,必 须处理数据分组的报头以便确定对数据分组做何处理。通常,一些报头处理在终端系统的软件中完成,一些报头处理在硬件中完成。软件 处理通常遵循分层协议栈模型,连续的报头被依次剥离和处理。相反的,硬件处理只处理一 部分报头,或者将报头的组合作为单独的实体来处理,以便执行要求的操作。硬件中的报头 处理对于路由分组数据、加快分组传递或者操纵分组报头特别有用。硬件中的报头处理通常在网络接口设备中进行。各个数据分组被接收后,网络接 口设备解析数据分组的报头并执行以下操作执行校验和,取出数据并使用报头中的地址 数据查找数据分组的期望目的地。所执行的操作通常取决于数据分组中出现的报头的类 型。因为通常要求对各个数据分组执行多个操作,并且每秒钟有数以百万计的数据分组通 过网络到达计算机系统,所以确保报头能被高效地、尽可能快地处理是非常重要的。常规的报头处理硬件使用专用处理器来解析数据分组中的报头并执行各个报头 被识别出时所需的处理。这样的处理器在硬件需要执行大量操作时是高效的,但是在相同 处理器按需要的顺序执行各个操作时经常浪费处理器周期。例如,处理器必须从分组缓存 中读取报头数据,识别各个数据分组中的报头,在网络接口设备处的转发表中请求查找操 作,并调用网络接口设备中的哈希计算单元。更进一步,处理器的指令集必须足够大以便支 持处理器预期执行的操作的范围。这将导致使用复杂的处理器来执行实质上一连串的重复 的简单操作。这样的处理器能量利用率低,这是用在刀锋式服务器(blade servers)和数 据存储场(data farms)中的网络接口设备的焦点问题。更进一步,使用典型的分层协议栈模型将报头处理实现在硬件或固件中效率非常低下,要求硬件被配置为恒定地处理一系列报头的一连串若-则-否则逻辑。因此,需要用于解决上述问题的网络接口设备的改进的报头处理引擎。
技术实现思路
根据本专利技术的一个方面,提供了一个报头处理引擎,用于具有存储各自包括一个 或更多个报头的一个或更多个数据分组的缓存的网络接口设备。该报头处理引擎包括命 令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组 中每个报头的类型和位置;构造器单元,具有对数据分组的报头读取权;以及包括一个执 行流水线的处理器;该报头识别器进一步被配置为对每个报头(a)根据报头的类型选择 存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识 被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行这些为数据分组的报 头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得 处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单 元被配置为接收消息并执行从中识别的命令。优选地,报头处理引擎进一步包括一个处理器可访问的共享存储器,构造器单元 被配置为将数据结构写入该共享存储器。优选地,数据结构识别处理器要执行的指令集,处 理器被配置为访问数据结构并执行从中识别出的指令以便对数据分组报头实施处理。相适 应的,数据结构包括报头的一个或更多个部分。优选地,数据结构只包括执行一个或更多个 所述指令所需要的那些报头部分。优选地,数据结构包括一个用于唯一地表示数据分组报头次序的分组分类标识 符,该分组分类标识符识别被处理器执行的所述指令集。优选地,分组分类标识符表示处 理器的指令存储器中的一个存储器地址,并且处理器被配置为,当读取分组分类标识符时 访问该存储器地址并开始执行存储在该存储器地址上的指令。优选地,构造器单元被配置 为通过形成对数据分组报头的特定次序的表示并将该表示传递给一个仅其可用输出对应 有效的报头次序的压缩引擎来产生分组分类标识符,该压缩引擎的输出即为分组分类标识 符。优选地,共享存储器被配置为保存多个数据结构,每个数据结构对应于不同数据 分组。优选地,共享存储器被配置为允许构造器单元和处理器对不同数据结构进行并发访 问,处理器对构造器单元完成的数据结构进行专有访问。优选地,处理器被配置为,在开始执行一个或更多个使得处理器调用不共享处理 器的执行流水线的功能单元的预定指令时,通过以下步骤切换执行线程在与进行调用有 关的数据分组对应的数据结构中存储该处理器的执行流水线的状态;将共享存储器中存储 的不同数据结构的状态加载到该处理器的执行流水线;以及执行在不同数据结构识别出的 指令集。优选地,处理器被配置为将响应于对功能单元的调用而返回的数据写入处理器的 一个选定寄存器中,使得处理器下一次加载与进行调用有关的数据分组对应的数据结构中 存储的状态时,所述数据对执行流水线是可用的。优选地,处理器被配置为,在调用一个功 能单元时,为响应于该调用而返回的数据所写入的选定寄存器设置一个标记,此标记防止 处理器在此标记被清除之前将该寄存器用于另一个调用。合适的是,处理器被配置为,从选定的寄存器读取数据时,清除所述标记以便处理器能够选择该寄存器用于后续的调用。合 适的是,至少一个预定指令的执行会使得处理器调用查找引擎或哈希引擎。优选地,处理器 被配置为响应于所述指令将处理器各自的输出写入各个数据结构中。数据分组可以是通过网络接收的数据分组,网络接口设备被支持一个或更多个操 作系统的数据处理系统所支持,处理器被配置为响应于所述指令,将标识数据处理系统的 接收顺序的数据提供给网络接口设备,所述数据处理系统至少写入了一部分接收到的数据 分组。网络接口设备可以包括一个在此描述的报头处理引擎,该报头处理引擎被配置 为,在处理器完成对数据分组报头的处理时,使得处理器的至少一部分输出对于被配置为 至少部分依赖处理器的输出来处理保存在缓存中的数据分组的分组处理引擎是可用的。数据分组可以是通过网络传输的部分地形成的数据分组,网络接口设备被支持一 个或更多个操作系统的数据处理系统所支持,处理器被配置为响应于所述指令处理该部分 地形成的数据分组以便完成该数据分组。合适的是,处理器被配置为通过执行一个或更多个以下操作来完成数据分组如 果数据分组属于需要按照预定的服务质量协议级别进行传输的数据流,则将合适的服本文档来自技高网
...

【技术保护点】
1.一种用于网络接口设备的报头处理引擎,所述网络接口设备具有用于保存各具有一个或更多个报头的一个或更多个数据分组的缓存,所述报头处理引擎包括:命令存储器;报头识别器,其被配置为解析存储在所述缓存中的数据分组的报头,以识别所述数据分组中各个报头的类型和位置;构造器单元,其对所述数据分组的报头进行读取访问;以及处理器,其包括执行流水线;所述报头识别器进一步被配置为对各个报头进行以下操作:(a)根据所述报头的类型来选择存储在所述命令存储器中的一个或更多个命令;和(b)为所述构造器单元形成一个或更多个用于识别被选择的命令和所述报头在数据分组中的位置的消息;如果所述构造器单元执行为所述数据分组的报头而选择的命令,则所述命令将共同地使得所述构造器单元产生一数据结构,该数据结构能够操作用于使得所述处理器在无需访问所述缓存中的数据分组的情况下对所述数据分组的报头实施处理;并且所述构造器单元被配置为接收所述消息并执行其中识别的命令。

【技术特征摘要】
2009.12.21 US 61/288,6421.一种用于网络接口设备的报头处理引擎,所述网络接口设备具有用于保存各具有一 个或更多个报头的一个或更多个数据分组的缓存,所述报头处理引擎包括命令存储器;报头识别器,其被配置为解析存储在所述缓存中的数据分组的报头,以识别所述数据 分组中各个报头的类型和位置;构造器单元,其对所述数据分组的报头进行读取访问;以及处理器,其包括执行流水线;所述报头识别器进一步被配置为对各个报头进行以下操作(a)根据所述报头的类型来选择存储在所述命令存储器中的一个或更多个命令;和(b)为所述构造器单元形成一个或更多个用于识别被选择的命令和所述报头在数据分 组中的位置的消息;如果所述构造器单元执行为所述数据分组的报头而选择的命令,则所述命令将共同地 使得所述构造器单元产生一数据结构,该数据结构能够操作用于使得所述处理器在无需访 问所述缓存中的数据分组的情况下对所述数据分组的报头实施处理;并且所述构造器单元被配置为接收所述消息并执行其中识别的命令。2.根据权利要求1所述的报头处理引擎,该报头处理引擎进一步包括所述处理器可访 问的共享存储器,所述构造器单元被配置为将所述数据结构写入该共享存储器。3.根据权利要求1或2所述的报头处理引擎,其中所述数据结构标识由所述处理器执 行的指令集,所述处理器被配置为访问所述数据结构并执行其中标识的指令以对所述数据 分组的报头实施处理。4.根据前述权利要求中的任意一项所述的报头处理引擎,其中所述数据结构包括所述 报头的一个或更多个部分。5.根据引用权利要求3时的权利要求4所述的报头处理引擎,其中所述数据结构只包 括执行一个或更多个所述指令所需要的那些报头部分。6.根据权利要求3-5中的任意一项所述的报头处理引擎,其中所述数据结构包括用于 唯一地表示所述数据分组的报头的序列的分组分类标识符,该分组分类标识符标识供所述 处理器执行的所述指令集。7.根据权利要求6所述的报头处理引擎,其中所述分组分类标识符表示所述处理器的 指令存储器中的存储器地址,所述处理器被配置为在读取所述分组分类标识符时访问该存 储器地址并开始执行存储在该存储器地址上的指令。8.根据权利要求6或7所述的报头处理引擎,其中所述构造器单元被配置为通过形成 对所述数据分组的报头的特定序列的表示并将该表示传递给仅其可用输出对应于有效的 报头序列的压缩引擎,来产生所述分组分类标识符,所述压缩引擎的输出是所述分组分类 标识符。9.根据引用权利要求2时的权利要求3-8中的任意一项所述的报头处理引擎,其中所 述共享存储器被配置为保存多个数据结构,各个数据结构对应于不同的数据分组。10.根据权利要求9所述的报头处理引擎,其中所述共享存储器被配置为使得所述构 造器单元和所述处理器能够同时访问不同数据结构,所述处理器对由所述构造器单元完成 的数据结构进行排他的访问。11.根据权利要求9或10所述的报头处理引擎,其中所述处理器被配置为,在开始执行 一个或更多个使得所述处理器调用不共享所述处理器的执行流水线的功能单元的预定指 令时,通过以下步骤来切换执行线程在与进行调用有关的数据分组相对应的数据结构中存储所述处理器的执行流水线的 状态;将所述共享存储器中存储的不同数据结构的状态加载到所述处理器的执行流水线中;以及执行在不同数据结构标识的指令集。12.根据权利要求11所述的报头处理引擎,其中所述处理器被配置为使得响应于对功 能单元的调用而返回的数据被写入所述处理器的选定的寄存器中,使得当所述处理器下一 次加载与进行调用有关的数据分组相对应的数据结构中存储的状态时,所述数据对执行流 水线是可用的。13.根据权利要求12所述的报头处理引擎,其中所述处理器被配置为,在调用功能单 元时,为选定的寄存器设置标记,响应于该调用而返回的数据要被写入到所述选定的寄存 器中,所述标记防止所述处理器选择该寄存器用于另一个调用直到所述标记被清除。14.根据权利要求13所述的报头处理引擎,其中所述处理器被配置为,在从所述选定 的寄存器读取数据时,清除所述标记以使得所述处理器能够选择该寄存器用于后续调用。15.根据权利要求11-14中的任意一项所述的报头处理引擎,其中至少一个预定指令 当被执行时使得所述处理器调用查找引擎或哈希引擎。16.根据权利要求9-15中的任意一项所述的报头处理引擎,其中所述处理器被配置为 响应于所述指令将所述处理器的相应输出写入各个数据结构中。17.根据权利要求3-16中的任意一项所述的报头处理引擎,其中所述数据分组是通过 网络接收的数据分组,所述网络接口设备被支持一个或更多个操作系统的数据处理系统所 支持,所述处理器被配置为响应于所述指令将标识要写入至少一部分接收到的数据分组的 数据处理系统的接收队列的数据提供给所述网络接口设备。18.—种网络接口设备,该网络接口设备包括根据权利要求17所述的报头处理引擎, 该报头处理引擎被配置为,在所述处理器完成数据分组的报头的处理时,使得所述处理器 的至少一部分输出对于分组处理引擎是可用的,所述分组处理引擎被配置为至少部分地根 据所述处理器的输出来处理保存在缓存中的数据分组。19.根据权利要求3-16中的任意一项所述的报头处理引擎,其中所述数据分组是用于 通过网络传输的部分形成的数据分组,所述网络接口设备被支持一个或更多个操作系统的 数据处理系统所支持,所述处理器被配置为响应于所述指令以完成所述数据分组的方式来 处理所述部分形成的数据分组的报头。20.根据权利要求19所述的报头处理引擎,其中所述处理器被配置为通过执行以下操 作中的一个或更多个来完成所述数据分组如果所述数据分组属于要按照服务质量协议的预定级别进行传输的数据流,则将适当 的服务质量参数写入所述数据分组中以使得所述数据分组按照该预定级别来处理;如果所述数据分组要通过虚拟LAN来传输,则将适当的虚拟LAN参数写入所述数据分 组中以使得通过该虚拟LAN来路由所述数据分组;以及如果所述数据分组从所述网络接口设备的虚拟接口始发,则执行分组过滤以确保所述 数据分组只在所述数据分组的目的地址是该虚拟接口允许访问的网络端点时被传输到网 络中。21.根据前述权利要求中的任意一项所述的报头处理引擎,其中所述数据分组的各个 报头包括根据网络数据协议而格式化的数据比特集,各个数据比特集位于所述数据分组的 嵌套报头、所述数据分组的页脚或者所述数据分组中的任意其它点中。22.—种报头处理引擎,用于对各具有多个报头的数据分组的序列进行报头处理,该报 头处理引擎包括报头识别器,其被配置为解析数据分组的序列中各个数据分组的报头,并且为各个数 据分组形成一个或更多个指示所述数据分组中各个报头的类型和位置的消息,所述报头识 别器被配置为依次解析数据分组;以及处理器,其被配置为根据为该数据分组而形成的一个或更多个消息来对序列中各个数 据分组执行报头处理,并在其输出依次提供处理后的数据分组;其中所述报头识别器和所述处理器被配置为并行操作以使得所述处理器不按次序地 对所述数据分组进行报头处理。23.根据权利要求22所述的报头处理引擎,其中所述报头识别器和所述处理器操作为 使得在所述处理器处理数据分组的序列中的一个数据分组时,所述报头识别器解析所述序 列中的另一个数据分组。24.根据权利要求22-23中的任意一项所述的报头处理引擎,其中所述报头识别器被 配置为依次地解析所述数据分组的报头,并在识别出所述数据分组中各个报头的类型和位 置时,为所述处理器形成包括该报头的类型和该报头在所述数据分组中的位置的消息。25.根据权利要求22-24中的任意一项所述的报头处理引擎,其中所述报头识别器被 配置为通过检测所述数据分组的报头中的一个或更多个预定的比特序列来识别各个报头 在所述数据分组中的位置。26.根据权利要求25所述的报头处理引擎,其中所述预定的比特序列指示报头的开始 或结尾。27.根据权利要求22-26中的任意一项...

【专利技术属性】
技术研发人员:史蒂夫·波普大卫·里多克迪米特里·凯塔莱夫德里克·罗伯茨
申请(专利权)人:索乐弗莱尔通讯公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1