CN102104541B - 报头处理引擎 - Google Patents
报头处理引擎 Download PDFInfo
- Publication number
- CN102104541B CN102104541B CN201010625075.0A CN201010625075A CN102104541B CN 102104541 B CN102104541 B CN 102104541B CN 201010625075 A CN201010625075 A CN 201010625075A CN 102104541 B CN102104541 B CN 102104541B
- Authority
- CN
- China
- Prior art keywords
- header
- packet
- processor
- data
- data structure
- 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
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- 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/22—Parsing or analysis of headers
Abstract
本发明提供一种报头处理引擎,用于具有保存各自包括一个或更多个报头的一个或更多个数据分组的缓存的网络接口设备,该报头处理引擎包括:命令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组中各报头的类型和位置;构造器单元,具有对数据分组的报头读取访问权;以及处理器,包括一个执行流水线;该报头识别器进一步被配置为对每个报头:(a)根据报头的类型选择存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行为数据分组的报头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单元被配置为接收消息并执行从中识别的命令。
Description
技术领域
本发明涉及一种处理分组报头的报头处理引擎。
背景技术
现代数据分组网络中的计算机系统通常根据在网络的全部层中运行的多个不同的协议,从管理数据流业务质量的协议,到确定数据分组逻辑结构的协议,再到确定网络结构上的全形式数据分组的物理信令的协议,来交换数据。因此一个典型的网络数据分组在计算机系统中形成数据分组时会具有嵌套式的多个报头。通常数据分组在开放系统互联(OSI)模型的第2至5层的每一层包括一个或更多个报头。
例如,通过建立了逻辑VLAN的以太网传输的TCP/IP数据分组会具有与以下所示相近的嵌套报头结构:
以太网/VLAN/IP/TCP
另外,分组可在以上结构中包括第5层报头,例如NetBIOS报头。
数据分组的报头把处理该数据分组的计算机系统需要的全部信息告诉该计算机系统,以便计算机系统将数据分组中的有效载荷数据正确地路由到其目的地,并且对数据分组的发送方进行适当的响应。没有了分组报头,有效载荷数据就单单是一串没有任何上下文的比特序列,计算机系统不知道怎样处理数据。因此,计算机系统接收数据分组时,必须处理数据分组的报头以便确定对数据分组做何处理。
通常,一些报头处理在终端系统的软件中完成,一些报头处理在硬件中完成。软件处理通常遵循分层协议栈模型,连续的报头被依次剥离和处理。相反的,硬件处理只处理一部分报头,或者将报头的组合作为单独的实体来处理,以便执行要求的操作。硬件中的报头处理对于路由分组数据、加快分组传递或者操纵分组报头特别有用。
硬件中的报头处理通常在网络接口设备中进行。各个数据分组被接收后,网络接口设备解析数据分组的报头并执行以下操作:执行校验和,取出数据并使用报头中的地址数据查找数据分组的期望目的地。所执行的操作通常取决于数据分组中出现的报头的类型。因为通常要求对各个数据分组执行多个操作,并且每秒钟有数以百万计的数据分组通过网络到达计算机系统,所以确保报头能被高效地、尽可能快地处理是非常重要的。
常规的报头处理硬件使用专用处理器来解析数据分组中的报头并执行各个报头被识别出时所需的处理。这样的处理器在硬件需要执行大量操作时是高效的,但是在相同处理器按需要的顺序执行各个操作时经常浪费处理器周期。例如,处理器必须从分组缓存中读取报头数据,识别各个数据分组中的报头,在网络接口设备处的转发表中请求查找操作,并调用网络接口设备中的哈希计算单元。更进一步,处理器的指令集必须足够大以便支持处理器预期执行的操作的范围。这将导致使用复杂的处理器来执行实质上一连串的重复的简单操作。这样的处理器能量利用率低,这是用在刀锋式服务器(bladeservers)和数据存储场(datafarms)中的网络接口设备的焦点问题。
更进一步,使用典型的分层协议栈模型将报头处理实现在硬件或固件中效率非常低下,要求硬件被配置为恒定地处理一系列报头的一连串若-则-否则逻辑。
因此,需要用于解决上述问题的网络接口设备的改进的报头处理引擎。
发明内容
根据本发明的一个方面,提供了一个报头处理引擎,用于具有存储各自包括一个或更多个报头的一个或更多个数据分组的缓存的网络接口设备。该报头处理引擎包括:命令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组中每个报头的类型和位置;构造器单元,具有对数据分组的报头读取权;以及包括一个执行流水线的处理器;该报头识别器进一步被配置为对每个报头:(a)根据报头的类型选择存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行这些为数据分组的报头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单元被配置为接收消息并执行从中识别的命令。
优选地,报头处理引擎进一步包括一个处理器可访问的共享存储器,构造器单元被配置为将数据结构写入该共享存储器。优选地,数据结构识别处理器要执行的指令集,处理器被配置为访问数据结构并执行从中识别出的指令以便对数据分组报头实施处理。相适应的,数据结构包括报头的一个或更多个部分。优选地,数据结构只包括执行一个或更多个所述指令所需要的那些报头部分。
优选地,数据结构包括一个用于唯一地表示数据分组报头次序的分组分类标识符,该分组分类标识符识别被处理器执行的所述指令集。优选地,分组分类标识符表示处理器的指令存储器中的一个存储器地址,并且处理器被配置为,当读取分组分类标识符时访问该存储器地址并开始执行存储在该存储器地址上的指令。优选地,构造器单元被配置为通过形成对数据分组报头的特定次序的表示并将该表示传递给一个仅其可用输出对应有效的报头次序的压缩引擎来产生分组分类标识符,该压缩引擎的输出即为分组分类标识符。
优选地,共享存储器被配置为保存多个数据结构,每个数据结构对应于不同数据分组。优选地,共享存储器被配置为允许构造器单元和处理器对不同数据结构进行并发访问,处理器对构造器单元完成的数据结构进行专有访问。
优选地,处理器被配置为,在开始执行一个或更多个使得处理器调用不共享处理器的执行流水线的功能单元的预定指令时,通过以下步骤切换执行线程:在与进行调用有关的数据分组对应的数据结构中存储该处理器的执行流水线的状态;将共享存储器中存储的不同数据结构的状态加载到该处理器的执行流水线;以及执行在不同数据结构识别出的指令集。
优选地,处理器被配置为将响应于对功能单元的调用而返回的数据写入处理器的一个选定寄存器中,使得处理器下一次加载与进行调用有关的数据分组对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。优选地,处理器被配置为,在调用一个功能单元时,为响应于该调用而返回的数据所写入的选定寄存器设置一个标记,此标记防止处理器在此标记被清除之前将该寄存器用于另一个调用。合适的是,处理器被配置为,从选定的寄存器读取数据时,清除所述标记以便处理器能够选择该寄存器用于后续的调用。合适的是,至少一个预定指令的执行会使得处理器调用查找引擎或哈希引擎。优选地,处理器被配置为响应于所述指令将处理器各自的输出写入各个数据结构中。
数据分组可以是通过网络接收的数据分组,网络接口设备被支持一个或更多个操作系统的数据处理系统所支持,处理器被配置为响应于所述指令,将标识数据处理系统的接收顺序的数据提供给网络接口设备,所述数据处理系统至少写入了一部分接收到的数据分组。
网络接口设备可以包括一个在此描述的报头处理引擎,该报头处理引擎被配置为,在处理器完成对数据分组报头的处理时,使得处理器的至少一部分输出对于被配置为至少部分依赖处理器的输出来处理保存在缓存中的数据分组的分组处理引擎是可用的。
数据分组可以是通过网络传输的部分地形成的数据分组,网络接口设备被支持一个或更多个操作系统的数据处理系统所支持,处理器被配置为响应于所述指令处理该部分地形成的数据分组以便完成该数据分组。
合适的是,处理器被配置为通过执行一个或更多个以下操作来完成数据分组:如果数据分组属于需要按照预定的服务质量协议级别进行传输的数据流,则将合适的服务质量参数写入数据分组中以便数据分组能够被按照预定水平来处理;如果数据分组将通过虚拟LAN来传输,则将合适的虚拟LAN参数写入数据分组中以便数据分组能够在虚拟LAN中被路由;以及如果数据分组从网络接口设备的虚拟接口始发,则进行分组过滤以确保数据分组只在数据分组的目的地址是虚拟接口允许访问的网络端点时被传输到网络中。
优选地,数据分组的每个报头包括遵照网络数据协议格式化的数据比特集,各数据比特集位于数据分组的嵌套报头、数据分组的页脚或者数据分组的其它任意点处。
根据本发明的第二方面,提供了一种报头处理引擎,用于对各自具有多个报头的一系列数据分组进行报头处理,该报头处理引擎包括:报头识别器,被配置为解析数据分组序列中各个数据分组的报头,并且为每个数据分组形成一个或更多个指示数据分组中每个报头的类型和位置的消息,该报头识别器被配置为依次解析数据分组;以及处理器,被配置为按照为数据分组形成的一个或更多个消息来处理序列中每个数据分组的报头,并依次输出处理后的数据分组;其中报头识别器和处理器被配置为并行操作以便允许处理器对不在该序列中的数据分组进行报头处理。
优选地,报头识别器和处理器这样操作:在处理器处理数据分组序列的一个数据分组时,报头识别器解析序列中的另一个数据分组。优选地,报头识别器被配置为依次解析数据分组的报头,并在识别数据分组的每个报头的类型和位置时为处理器形成包括数据分组的报头类型和位置的消息。
优选地,报头识别器被配置为通过检测数据分组报头中的一个或更多个预定的比特序列来识别数据分组中每个报头的位置。合适的是,该预定的比特序列指示报头的开始或结尾。合适的是,报头识别器可操作用于通过检测表示报头类型的一个或更多个预定值来识别数据分组中的报头的类型。合适的是,报头识别器可操作用于使用数据分组报头的位置来识别数据分组报头的类型。
处理器可被配置为,根据由为一个特定数据分组而形成的一个或更多个消息识别出的报头类型,选择存储在处理器的指令存储器中的指令集并且使用选定的指令集来处理该数据分组。另选的是,报头识别器被配置为根据由为一个特定数据分组而形成的一个或更多个消息识别出的报头类型,选择存储在处理器的指令存储器中的指令集并且使得处理器使用选定的指令集来处理该数据分组。
根据本发明的第三个方面,提供一种报头处理引擎,用于对存储在缓存中的数据分组的序列进行报头处理,每个数据分组都具有多个报头,并且该报头处理引擎包括:包括一个执行流水线的处理器;预处理器单元,被配置为解析存储在缓存中的数据分组的报头,并且根据数据分组的报头类型形成标识指令集的数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;其中处理器被配置为访问该数据结构并执行所述指令集以便处理数据分组的报头。
优选地,报头处理引擎进一步包括处理器可访问的共享存储器,预处理器单元被配置为将数据结构写入该共享存储器。合适的是,该数据结构包括数据分组报头的一个或更多个部分。优选地,该数据结构只包括一个或更多个所述指令需要的报头部分。
优选地,预处理器单元被配置为根据数据分组报头的类型选择指令集。优选地,处理器支持指令存储器并且所述指令集被存储在该指令存储器中由数据结构标识的位置。
优选地,预处理器单元被配置为产生用于唯一表示数据分组报头的类型的分组分类标识符,该分组分类标识符被包含在数据结构中并且识别被处理器执行的所述指令集。优选地,分组分类标识符表示处理器的指令存储器中的存储器地址,处理器被配置为通过读取分组分类标识符来访问该存储器地址并开始执行存储在该存储器地址上的指令。优选地,预处理器单元被配置为通过形成对数据分组报头的特定次序的表示并将该表示传递给一个仅其可用输出对应于有效的报头次序的压缩引擎来产生分组分类标识符,该压缩引擎的输出即为分组分类标识符。
优选地,共享存储器被配置为保存多个数据结构,每个数据结构对应于不同数据分组的报头。优选地,共享存储器被配置为允许预处理器单元和处理器对不同数据结构进行并发访问,处理器对预处理器单元完成的数据结构具有专有访问权。
优选地,处理器被配置为,在开始执行一个或更多个使得处理器调用不共享处理器的执行流水线的功能单元的预定指令时,在与进行调用有关的数据分组对应的数据结构中存储该处理器的执行流水线的状态,将共享存储器中存储的不同数据结构的状态加载到该处理器的执行流水线。
优选地,处理器被配置为将响应于对功能单元的调用而返回的数据写入处理器的一个选定的寄存器中,使得处理器下一次加载与进行调用有关的数据分组对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。优选地,处理器被配置为,在调用功能单元时,为响应于调用而返回的数据所写入的选定寄存器设置一个标记,此标记防止处理器将该寄存器用于另一个调用。优选地,处理器被配置为,从选定的寄存器读取数据时,清除所述标记以便处理器能够选择该寄存器用于后续调用。
合适的是,至少一个预定指令的执行会使得处理器调用一个查找引擎、哈希引擎、校验和或CRC计算引擎、加密引擎或者以上提到的各种引擎的任意组合。
优选地,处理器被配置为响应于所述指令将处理器执行的处理的各个输出写入每个数据结构中。
根据本发明的第四个方面,提供了一种被配置为处理网络数据分组的处理器,该处理器包括:存储多个指令序列的指令存储器;用于存储多个指令索引和处理器的状态集的处理器存储器,每个指令索引标识存储在指令存储器中的一个指令序列,每个状态集对应于一个指令索引;执行流水线,该执行流水线可操作用于执行由使用存储在处理器存储器中的对应状态集的指令索引标识的指令序列,一个指令序列和其对应的状态限定用于处理特定网络数据分组的执行线程;处理器被配置为可操作用于在通过执行由第一指令索引标识的一个指令序列来处理第一网络数据分组时,切换执行线程以便处理第二网络数据分组,具体步骤为:将执行流水线的状态写入处理器存储器的第一状态集中;将第二状态集从处理器存储器加载到执行流水线中;执行由第二状态集对应的指令索引标识的第二指令序列;其中处理器被配置为在按照指令顺序开始执行一个或更多个预定指令时执行线程切换。
优选地,第一状态集包括一个指示,用于指示第一指令序列中执行开始的位置。
优选地,预定指令的执行使得处理器调用一个不能共享处理器的执行流水线的功能单元,在处理器中该功能单元是可被支持的。
优选地,处理器进一步包括多个寄存器,处理器被配置为将响应于对功能单元的调用而返回的数据写入选定的寄存器中。
优选地,处理器被配置为在处理器存储器中限定的多个执行线程之间循环切换,并依次切换回由第一状态集和第一指令序列所限定的执行线程:将执行流水线的状态写入处理器存储器中与正在执行流水线中执行的指令序列相对应的状态集中;将第一状态集加载到执行流水线中;继续执行第一指令序列。
根据本发明的第五个方面,提供了一种在被配置用于处理网络数据分组的处理器的执行线程之间进行切换的方法,该处理器包括执行流水线,存储多个指令序列的指令存储器,存储第一和第二指令索引和对应的第一和第二处理器状态集的处理器存储器,每个指令索引标识一个存储在指令存储器中的指令序列,每个指令序列和其对应的状态限定用于处理特定网络数据分组的执行线程;该方法包括:在通过在执行流水线中执行由第一指令索引标识的一个指令序列来处理第一网络数据分组时,暂停执行流水线的执行;将执行流水线的状态写入处理器存储器的第一状态集中;将第二状态集从处理器存储器加载到执行流水线中;在执行流水线中执行由第二指令索引标识的指令序列以便实施对第二网络数据分组的处理。
附图说明
现在通过举例方式参照附图来描述本发明,附图中:
图1是根据本发明配置的报头处理引擎的示意图。
图2是报头处理引擎在网络接口设备中的布置的概况。
具体实施方式
以下描述用于使本领域的任何技术人员能实现和使用本发明,并提供于一个特定应用环境中。对所公开的实施方式的各种修改对于本领域技术人员是很显而易见的。
在此限定的基本原理可以应用于其它实施方式和应用而不脱离本发明的精神和范围。因此,本发明不局限于展示的实施方式,而是达到与在此公开的原理和特征相一致的最大范围。
本发明旨在提供一种具有流水线结构(pipelinedarchitecture)的改进的报头处理引擎。在此描述的报头处理引擎提供了一种结构装置,该结构装置用于使用一个单独的标识符来标识数据分组的多种报头层,并且该报头处理引擎提供了一个具有对该数据分组报头进行处理所需要的全部数据的数据结构。报头处理引擎可用于处理通过网络在网络接口设备上接收到的数据分组的报头,以便允许到来的数据分组被解构。报头处理引擎可用于处理网络接口设备准备通过网络进行传输的数据分组的报头,以便允许发出的数据分组被适当地构造。典型地,报头处理引擎可被配置为对与开放系统互联(OSI)模型的第2至5层中的任意层的网络协议相关的分组报头执行处理。
注意术语“报头”在此用于指嵌入数据分组中的网络或应用协议数据结构。报头可以是由数据分组中任意点的一组或一串特定比特表示的任何信息——例如,在此提及的“报头”可以是数据分组的嵌套报头、数据分组的页脚(例如,表示CRC)、或者处于数据分组中的任意其它点(例如,嵌入的httpURL)中的数据比特集(可以表示OSI层,例如TCP协议数据)。因此,数据分组的各个报头是按照数据分组所遵循的特定网络数据协议而格式化的数据比特集。本领域技术人员可以认识到,本发明不限于数据在数据分组中出现的位置,本发明的原理可被应用于网路数据分组中的任何数据以便实施必要的报头处理(例如,分组路由,协议执行等)。
根据本发明配置的报头处理引擎(HPE)112的概况如图1所示。HPE包括报头识别器(HR)101、报头分割器(HS)103和调度器(dispatcher)107。报头识别器和报头分割器被设置为读取将被HPE处理的数据分组的报头。HPE不需要数据分组的有效载荷数据,因为与分组报头处理有关的全部信息都能在报头中找到。根据有效载荷数据而计算的校验和以及其它参数不由HPE处理——这些由网络控制器内的其它专用引擎来执行。
报头识别器、报头分割器和调度器由它们实现的功能来限定。HPE的各个组件可实现为离散集成电路,或者两个或更多个组件可以实现为单独的集成电路。HPE可以实现为大型集成电路的一部分,例如网路接口设备的控制器。报头识别器和报头分割器对需要被HPE处理的部分或全部形成的数据分组的报头进行读取访问。这些数据分组通常是在网络接口设备的缓存器中通过网络被接收,或者在准备通过网络传输的过程中。根据本发明配置的HPE可被用于网络接口设备的发送和接收路径之一或全部两者。
图2示出了根据本发明配置的报头处理引擎在网络接口设备中的布置。网络接口设备202被设置为在网络201和数据处理系统203(例如服务器或桌面计算机)之间传送数据分组。
在第一个例子中,设想情景为HPE实现在NIC202的接收路径上。这种情况下,NIC包括接收缓存205,从网络接收的数据分组在传送给数据处理系统之前被存储在该接收缓存205中。为使接收到的数据分组能被正确地处理,网络接口设备必须处理数据分组的报头。报头携带着网络接口设备需要以便了解如何处理各个分组的信息,包括,例如:分发给特定虚拟接口必需的路由信息、分组遵循的多种协议的参数、校验和等。
接收缓存205中的分组可以被报头处理引擎112访问,以便HPE的报头识别器101和分割器103读取已接收的数据分组的报头(可能通过一个中间缓存)。控制器204表示NIC的处理功能并被配置为根据HPE的输出来处理接收到的数据分组——例如,将有效载荷数据写入数据处理系统的存储器中的特定位置并将事件写入事件队列中。
HPE可被配置为执行对接收到的网络数据分组进行适当处理所需要的多种报头处理。例如,HPE对报头进行的处理可以提供网络接口设备需要的信息以便实施将接收到的数据分组(或者至少是它们的有效载荷数据)分发到合适的接收队列中。通常这要求HPE在指示IP地址和端口组合之间的对应关系(以IP数据分组为例)的转发表和接收队列中进行一个或更多个查找。
HPE进行的处理也可以用于增强网络协议。例如,实施防火墙或者防止拒绝服务攻击。
HPE进行的处理也可以包括修改接收到的数据分组的内容,以便进行例如网络地址转换(NAT)的操作,从网络地址到支持多访客操作系统的虚拟系统所支持的地址空间的转换,或者用作网络之间的交换机或桥接设备的网络接口设备的网络地址转换,会要求这样的操作。
在第二个例子中,设想情景为HPE实现在NIC202的发送路径中。这种情况下,NIC包括发送缓存205,从数据处理系统接收的数据分组在传送给网络之前被存储在该发送缓存205中。NIC可以被配置为执行在将数据分组传送到网络上之前需要进行的任何报头处理。例如,NIC可以被配置为使用HPE112对数据分组进行过滤和协调以便传输到网络上。只具有部分形成的报头的任何数据分组在被传输到网络上之前必须由NIC完成。
例如,如果NIC能够安全地提供对虚拟系统的访客操作系统的直接访问,则NIC必须检查全部的出站流量以确保其只包含合法和非分裂的分组。换句话说,如果NIC支持与访客操作系统的直接通信(即,使用虚拟接口并且不通过管理程序或者等同物),则必须对该访客OS的通信进行过滤以便确保访客OS只与系统的特许模式实体(即内核或者管理程序)所允许访问的网络地址进行通信。这有助于防止访客OS拦截其它访客OS或管理程序的网络连接时任何恶意代码的运行。为了实施分组过滤,NIC需要决定形成的数据分组是发布在物理网络中还是丢弃掉。因此HPE被配置为提供做出此决定所针对的数据。由于分组过滤典型的是基于出站数据分组的源的标识符,则通常包含来自访客OS的各个数据分组的报头的源网络地址。
在特定的虚拟环境中,要求NIC用作最近的上行交换机的代理。这种情况下,HPE可以被配置为提供可用于做出决定的信息,即确定出站数据分组是通过物理网络进行传输还是回送给另一个本地操作系统,或者都作为多播操作的一部分。
HPE可以被进一步配置为在传输数据分组之前对其进行修改。例如,在运行一个或更多个VLAN的网络中,HPE可以被配置为写入或更新存储在数据分组的报头中的地址信息或其它参数,以确保数据分组通过合适的虚拟和物理网络被路由。这就要求HPE执行虚拟网络地址和物理网络地址之间的地址转换。因此,HPE可被配置为,使用通过在保持网络的VLAN信息的NIC的转发表中进行一个或更多个查找而建立的数据,来更新VLAN报头。在网络接口设备上完成VLAN报头参数是本领域公知的,但是现有技术的设备不是使用此处描述的HPE来执行这种完成操作。通常,网络接口设备不需要对VLAN报头进行复杂操作,除非该网络接口设备被用作外部交换机的代理。
HPE也可以被配置为增强网络接口设备支持的数据流的服务质量(QoS)。例如,HPE可以被配置为增强特定流量类型、网络端点或虚拟接口的QoS。这通常涉及HPE从它的报头(例如,利用传送请求所处的DMA信道,或者利用分组中的一些数据,例如VLAN、MAC地址或IP流量信息)中识别出数据分组属于特定流量类型或虚拟接口,并根据存储在网络接口设备(例如转发表)中的参数将一个或更多个对应的QoS参数写入报头中。因此,HPE可被配置为识别属于要求特定QoS级别的视频流的数据分组,并将适当的QoS参数写入这些数据分组中以便根据该QoS级别来处理数据分组。随着在数据分组中嵌入QoS参数,HPE也优选地用作QoS执行点并且确保从NIC进入网络的分组符合要求的QoS级别。
参照图1,现在描述根据本发明配置的报头处理引擎的操作。
报头识别器101执行分组报头处理的第一步,解析数据分组以便识别组成数据分组报头的多种报头部分。报头识别器读取网络分组102的报头,其通常具有与网络中使用的多种网络协议相关的若干层。例如,以太网数据分组可以包括以太网、VLAN、IPv4和TCP报头。报头识别器例如通过以下方式来识别数据分组的复合报头中存在的各单独报头:查找诸如复合报头中字段的长度这样的特征,复合报头的格式和复合报头中的特定标志或数据比特。
报头识别器101识别组成数据分组报头的各个独立报头以及各个独立报头在数据分组中出现的偏移。优选地,报头识别器实现为具有专用指令集的微处理器。该指令集足够大以满足解析报头处理引擎需要处理的多种报头层的要求。但是,对于典型的支持TCP/IP通信的以太网接口设备,总的指令位数只能为32比特那么小。报头识别器解析数据分组报头时,执行指令以确定例如分组报头中报头层的长度、报头层的类型、是否到达了报头的结尾以及报头层在数据分组中的偏移。各个指令的输出为分割器103定义一个命令,该命令包括跳转向量形式的指令,该指令是指分割器的指令存储器115中的指令。形成该命令的特定的分割器指令集取决于命令所处理的报头的特定类型。一个或更多个命令指示分割器如何处理目标数据分组的嵌套报头中的各个层。给定命令的参数通常将对应报头在数据分组中的位置(即其偏移)和报头的类型告知分割器。
如果报头识别器形成包括报头类型和描述多种报头在数据分组中的偏移的位置信息的数据字(下文中的“parser_info”),将是有利的。随着HR101解析报头,parser_info字可以逐比特地建立起来。通过将此字提供给FIFO消息缓存,接收/发送(视情况而定)数据路径上的其它处理实体可以使用报头识别器生成的信息。例如,支持HRE的网络接口设备中的校验和卸载引擎可使用由报头识别器解析并形成parser_info字的信息。
报头分割器103通过链路108(可以是简单的FIFO缓存)从报头识别器101接收命令。分割器是具有存储在存储器115中的专用指令集的微处理器,分割器指令由从报头识别器接收到的命令中的跳转矢量指向。响应于各个命令,报头分割器通过使用与命令一起传送的参数来执行与该命令中的指令跳转矢量对应的指令集。分割器执行的指令构成寄存器文件104,该寄存器文件104包括调度器107处理分组报头所需的全部数据。
寄存器文件包括分割器从数据分组报头中读取的数据和分割器根据数据分组报头的内容产生的信息。为了处理数据分组报头的特定层,调度器至少需要报头数据的一部分;对于这些层,来自报头识别器的命令使得分割器对链路109上的数据分组执行指令,该指令读取需要的数据并将其写入寄存器文件。调度器还需要知道数据分组的结构;分割器通过为数据分组在寄存器文件中写入唯一地标识数据分组的成分的分组分类标识符来将结构信息传递给调度器。
分割器生成唯一地标识报头类型和其在数据分组报头中的次序的分组分类标识符。优选地,分割器在保存分割器执行的指令结果的多个寄存器中,形成分组分类标识符。例如,以太网网卡的报头处理引擎具有以下子类寄存器:
mac_class1比特在分组具有多播目的MAC地址时设置
eth_base_class4比特标识基本以太网报头,例如以太网,LLC
eth_tag_class4比特标识任何标记的存在,例如VLAN,VNTag
I3_class4比特标识基本以太网之后的下面的协议,例如IPv4,IPv6,
IPv4-fragment,IPv6-fragment,FCoE,ARP
I4_class4比特标识第4层协议,例如TCP,UDP
当分割器在报头识别器生成的命令的控制下遍历报头时,寄存器被设置。
通过考虑以下示例,能更好地理解建立寄存器文件的方法。报头识别器解析目标数据分组并识别基本以太网报头。因此,报头识别器生成向分割器指示被识别的报头的类型(基本以太网)和偏移(其位置)的命令。分割器接收该命令并调用与指示基本以太网报头存在的命令对应的指令集。这些指令使得分割器为数据分组将基本以太网报头的预定部分读取到寄存器文件,并且将一个或更多个指示基本以太网报头存在的值写入分割器的适当寄存器,作为分组分类标识符形成的步骤。一旦到达分组报头的末尾,分割器将完整的分组分类标识符写入寄存器文件中。
通常,一个或更多个指令使得分组分类被写入寄存器文件中,这些指令例如由以下命令触发:来自报头识别器的指示报头末尾的命令,来自报头识别器的指示必要地结束数据分组报头的报头层的命令,或者来自报头识别器的指示未被识别的报头层的命令。
如果需要分组分类标识符能够分辨分组报头层的全部不同排列,则分组分类标识符将需要是很大的值。例如,为了分辨支持典型以太网网络接口设备的分组报头层的全部排列,分组分类标识符必须能够编码超过130000个不同的值。因此分割器被配置为生成只分辨报头层的有效排列的分组分类标识符,是有利的。例如,单播/以太网/VLAN//IPv4/TCP的分组组成是有效的,但单播/以太网/VLAN//IPv4-fragment/TCP的分组组成是无效的。因此不需要为后者组成分配分组分类值,可以优选地从分组分类标识符的值域范围中排除其可能性。对于典型的以太网网络接口设备,有效排列的数目大约为480,这表示需要编码的报头排列的数量大大降低了。优选地,一旦分割器形成分组组成的标识符,就可以在分割器上执行分组分类压缩。例如,当从分割器的寄存器中读取出分组组成标识符并传送给寄存器文件时,可执行压缩。优选地,在分割器的寄存器输出部分的使用组合逻辑的硬件中执行压缩。
最有利的是,处于压缩形式的分组分类标识符是包含可被执行以便实施目标数据分组报头的处理的指令集的调度器的指令存储器116中的条目的文字引用。这使得调度器可以直接访问指令集,其通过读取数据分组的分组分类标识符来为特定数据分组执行指令集——不需要存储器管理单元,并且在查找正确的指令集时不浪费处理器周期。因为各个分组分类标识符对应于指令存储器中的条目,所以将分组分类标识符压缩并仅表示有效的报头组合是非常重要的:如果分组分类标识符没有被压缩,则指令存储器将会是非常巨大和浪费以包含对应于不可能出现的数据分组组成的无效分组分类标识符的全部无用条目。
优选地,将完成的分组分类标识符(已压缩的或未压缩的)也写入合适的FIFO消息缓存中,以便允许接收/发送(视情况而定)数据路径上的其它处理实体使用分割器生成的信息。分组分类标识符可以添加到以上描述的parser_info字中。
寄存器文件中的分组分类标识符为调度器识别至少一些指令,其在寄存器文件中包含的数据上执行以便实施对目标数据分组报头的处理。调度器将分组分类标识符用作存储在其指令存储器116中的指令集的跳转向量。换句话说,分组分类标识符将目标数据分组报头的组成告知调度器,并在其指令存储器中识别出要用于处理该组成的数据分组报头的预定指令集。
重要的是,各个解析后的数据分组的寄存器文件由分割器来构造,使得其标识要由调度器执行的指令(执行线程)的次序,并且各个解析后的数据分组的寄存器文件包括执行那些指令所需的分组报头的任意部分。因此,各个寄存器文件包括调度器处理给定分组分类的数据分组所需的全部数据。为了处理这些报头,调度器不必访问分组报头。识别给调度器的指令所需的全部信息与分组分类标识符一起存在于寄存器文件中,该分组分类标识符标识处理器执行以便实施目标分组报头处理的指令的次序。因此,寄存器文件告知调度器执行哪些指令,并将执行那些指令所需的全部信息提供给调度器。寄存器文件可包含调度器执行流水线的至少一些初始状态。调度器处理器107通过链路110访问寄存器文件。
调度器107使用分割器构造的寄存器文件执行报头处理。通常要求报头处理是为了确保接收到的数据分组被适当地处理(HPE实现在网络接口设备的接收路径上的情况),或者确保用于传输的数据分组的报头被适当地完成并且数据分组在网络上被正确地路由(HPE实现在网络接口设备的发送路径上的情况)。优选地,调度器是具有专用指令集的RISC处理器。为通过网络接收的数据分组执行的处理步骤可以包括:在转发表中执行查找,执行网络地址转换,执行接收侧定标(RSS),以及计算哈希值(可以在任何预先列出的步骤中使用)。为通过网络传输的数据分组执行的处理步骤可以包括:在转发表中执行查找,执行网络地址转换,完成校验和或CRC值,以及计算哈希值(可以在任何预先列出的步骤中使用)。因此,调度器包括例如连接到查找表(例如转发表)的查找逻辑和哈希生成器。
为了同步报头处理引擎的组件的操作,确保报头识别器、分割器和调度器以高效方式工作的控制器逻辑114非常有用。其它结构也是可能的,但是使用中央控制器逻辑是优选的,因为其降低了HPE组件的复杂性。控制器确保当前数据分组在适当的缓存中对报头识别器和分割器是可用的,直到这两个组件完成了数据分组。并且,一旦分割器完成了寄存器文件的构造,则控制器将寄存器文件排队送至调度器并且(如果使用了多个寄存器文件)控制器向分割器分配新的寄存器文件用于下一个数据分组,使得在调度器处理当前数据分组的同时,分割器可以开始为下一个数据分组构造寄存器文件。
控制器逻辑可附加地被配置为包含缓存,需要被HPE处理的至少一部分数据分组被写入该缓存中。报头识别器和分割器被配置为从缓存中读取用于处理的当前数据分组。最优选地,缓存是往复式(ping-pang)缓存,其包括两个部分:第一部分,下一个需要处理的数据分组在其中备份;以及第二部分,其保存报头识别器和分割器访问的当前数据分组。一旦报头识别器和分割器都完成了当前数据分组并且下一个数据分组加载到了缓存中,两个缓存部分进行交换。使用控制器逻辑支持的缓存代替让报头识别器和分割器直接访问接收/发送(视情况而定)缓存,降低了需要的逻辑的复杂性。
如果存储器支持多个寄存器文件(图1中示出了三个:104,105,106),将是有利的。这出于两个原因:首先,这允许分割器103和调度器107对寄存器文件进行并行操作,即调度器可以加载一个寄存器文件,并因此在分割器构造另一个寄存器文件的同时处理对应的分组报头;其次,这允许调度器在存储在寄存器文件中的状态所表示的处理器线程之间执行上下文切换。该第二个益处对于隐藏报头处理中固有的查找和哈希计算的延迟时间是重要的。
调度器执行上下文切换的能力实质上允许调度器执行多线程处理。当调度器处理器切换寄存器文件时,处理器实际上切换了执行线程,因为各个执行线程由存储在寄存器文件中的处理器状态和指令来限定。优选地,调度器被配置为当处理器调用功能而导致处理器等待时(即在一个或更多个处理器周期处于空闲),切换寄存器文件。以这种方式,调度器可以同时处理多个线程(因此处理多个分组报头)。如果处理器为当前线程调用功能而导致处理器等待时,另一个寄存器文件还未准备执行,则处理器继续执行当前线程。调度器调用的功能可以包括计算单元(例如被配置用于计算哈希值的计算单元)和查找单元(例如被配置用于在转发表中查找条目的查找单元),换句话说,是那些不共享调度器的执行流水线的功能单元。
当调度器切换寄存器文件时,处理器将其执行流水线的当前状态写入适当的寄存器文件中以便保存该执行线程。然后调度器处理器从另一个限定不同执行线程的寄存器文件(可以是新的寄存器文件,或者是先前在调度器被部分处理过的寄存器文件)中读取状态,并使用存储在该另一个寄存器文件中的调度器的执行流水线的任意状态开始执行该线程。以这种方式,调度器可以从先前处理被中断的那个点继续处理不同数据分组的报头。因此,无论何时调度器不再处理执行线程,该线程的状态就被存储在其对应的寄存器文件中。一旦导致处理器切换上下文的计算完成,将结果写入适当的寄存器文件中,使得当处理器重新加载寄存器文件时,可以继续执行对应的线程。
在此描述的特征允许调度器处理器在执行线程之间切换,以有效地提供多线程性能。这是因为指令序列和执行指令序列时执行流水线的状态在各个时刻限定那些指令的执行线程。
调度器可以通过在调度器中使用BUSY标记来追踪哪些功能单元在忙着执行计算或者查找(比方说)。因此,当调度器调用功能单元时,设置该单元的繁忙标记以确保由该单元执行的操作结果不被重写。更有利的是,功能单元分别支持流水线操作,并且具有多个BUSY标记对应于调度器处理器的寄存器中的多个不同输出位置。这确保了这些功能单元被高效使用。
例如,调度器可以为功能单元设置四个BUSY标记,它们对应于四个调度器寄存器。在线程执行过程中,当调度器调用该单元来执行第一操作时,其设置对应于第一寄存器的第一BUSY标记,其中该单元将第一操作的结果输出到该第一寄存器中。同时,调度器可切换为执行另一个线程,并且需要对同一个功能单元进行第二次调用以执行第二操作。因为已设置第一BUSY标记,调度器不会重写第一操作的结果。因此调度器将第二操作在该单元排队并设置对应于第二寄存器的第二BUSY标记,其中该单元将第二操作的结果写入到该第二寄存器中。一旦各个操作都完成了,执行单元将操作结果写入相应的寄存器中。调度器可以指示功能单元将各个查找操作的输出写入哪个寄存器中。另选地,调度器可以让功能单元以循环(round-robin)方式写入其寄存器中。
当调度器再次加载进行功能单元的调用的线程,并从相应寄存器中读取功能单元的输出时,将该寄存器的BUSY标记清除。查找单元的输出可以在处理器执行随后的指令时使用,或者查找单元的输出可以按调度器中随后执行的指令的要求被写入适当的寄存器文件中。以这种方式,调度器可与正在执行的线程无关地同时追踪功能单元的四个不同操作。
优选地,调度器支持使得其在由寄存器文件表示的可用处理器线程之间切换上下文的指令。该指令可以在特定处理事件发生时被触发,例如需要时间来完成(即占用多个处理器周期)因而需要调度器等待的那些事件。例如,该指令可以在调度器必须在转发表(或类似物)中执行查找时被触发,或者调度器必须执行哈希计算时被触发。注意,特定计算(例如预定类型的哈希计算)可以响应于调度器的调用而以调度器的外部逻辑来处理。
一旦线程执行完成,还未存在于对应寄存器文件中的任何处理结果被写入寄存器文件中。已完成的寄存器文件包括查找结果、分组字段、哈希值、以及位于实现报头处理引擎的网络接口设备的接收/发送(视情况而定)路径上的后续处理单元所需的其它信息。因此已完成的寄存器文件告知网络接口设备如何处理数据分组。对于接收到的数据分组,其可以包括:将分组的有效载荷数据写入何处,分组是否有效(即其被正确地形成,其校验和有效),在附接的数据处理系统的哪个处理器上引发中断(如果使用了RSS),等等。对于准备传输的数据分组,该信息可以包括:数据分组要发送到的地址,包括在分组报头中的哈希或校验和信息,等等。
寄存器文件(或至少后续的分组处理所需要的部分寄存器文件)不需要立即输出到消息FIFO(或其它数据结构)中,因为将寄存器文件队列按照与各自的分组缓存中的数据分组队列相同的顺序来保持是重要的。因此寄存器文件(或其所需要的部分)按此顺序从HPE输出,使得接收/发送路径上的后续处理单元可以使用HPE产生的相应寄存器文件信息直接地处理各个数据分组。
因此,本发明提供了一种报头处理引擎的改进结构。HPE的功能按照新的方式划分为三个组件:报头识别器,分割器和调度器。第一阶段,报头识别器识别目标数据分组中有哪些报头以及这些报头在数据分组中的偏移。这允许报头识别器只将处理各个报头层所需的那些指令提供给分割器,并为调度器形成寄存器文件。接下来,寄存器文件将调度器处理报头所需的指令,随同处理报头时需要的报头自身部分和唯一地标识分组组成的分组分类标识符提供给调度器。因此调度器不需要访问分组报头,因而不需要在调度器进行处理时将分组报头本身保存在缓存中。
这种HPE结构有几个优点:
1、通过将HPE的功能拆分为三个并行操作的组件,大大提高了HPE的效率。这使得包括该HPE的IC可以使用较低的时钟频率,从而节省功率并使得HPE可以使用较低级的处理技术来实现,由此降低了HPE的制造成本。
2、因为将包括调度器执行报头处理所需的全部信息的寄存器文件提供给了调度器,所以在调度器中执行的指令(固件代码)可以是很确定的。这减少了HPE操作的抖动,因为在调度器中处理各个数据分组所需的时间对于HPE处理的全部各种分组类型来说都是基本恒定的。类似地,在报头识别器和分割器中解析数据分组报头的时间成本对于HPE处理的全部各种分组类型来说都是基本恒定的。
3、此外,因为将包括调度器执行报头处理所需的全部信息的寄存器文件提供给调度器,所以在顺序的解析操作中调度器不必访问目标数据分组的报头。这导致了与现有技术中的报头处理引擎相比,操作的延迟时间降低。现有技术的HPE以顺序方式进行报头处理,使得每当调度器需要从目标数据分组的报头中读取时其数据路径流水线就得停顿。这就要求其数据路径流水线具有额外的复杂度以解决这种停顿。
4、通过避免将数据分组的全部报头复制到网络接口设备的寄存器组中,该HPE的存储器要求比现有技术中的报头处理引擎降低。这允许网络接口设备支持更少量的存储器,使得根据本发明配置的网络接口设备的设计的能耗和成本得以降低。
因此,申请人公开了在此分别描述的各个独立特征,以及两个或更多个这些特征的任意组合,这些特征或组合能够基于本详细说明作为一个整体根据本领域技术人员的公知常识而实现,而不考虑这些特征或特征的组合是否能解决在此公开的任何问题,并且不局限于权利要求的范围。申请人指出,本发明的各个方面由任何独立特征或特征的组合构成。考虑上述描述,本领域技术人员显然知道在本发明范围内可以做出各种修改。
Claims (47)
1.一种用于网络接口设备的报头处理引擎,所述网络接口设备具有用于保存各具有一个或更多个报头的一个或更多个数据分组的缓存,所述报头处理引擎包括命令存储器和处理器,所述处理器包括执行流水线,其特征在于,所述报头处理引擎还包括:
报头识别器,其被配置为解析存储在所述缓存中的数据分组的报头,以识别所述数据分组中各个报头的类型和位置;
构造器单元,其对所述数据分组的报头进行读取访问;以及
所述报头识别器进一步被配置为对各个报头进行以下操作:
(a)根据所述报头的类型来选择存储在所述命令存储器中的一个或更多个命令;和
(b)为所述构造器单元形成一个或更多个用于识别被选择的命令和所述报头在数据分组中的位置的消息;
其中,所述构造器单元被配置为接收所述消息并执行其中识别的所述命令,当所述构造器单元执行为所述数据分组的报头而选择的命令,则所述命令将共同地使得所述构造器单元产生一数据结构,该数据结构包括由所述构造器单元从所述缓存的所述数据分组的所述报头读取的数据,其中该数据结构能够操作用于使得所述处理器在无需访问所述缓存中的数据分组的情况下对所述数据分组的报头实施处理。
2.根据权利要求1所述的报头处理引擎,该报头处理引擎进一步包括所述处理器可访问的共享存储器,所述构造器单元被配置为将所述数据结构写入该共享存储器。
3.根据权利要求1或2所述的报头处理引擎,其中所述数据结构标识由所述处理器执行的指令集,所述处理器被配置为访问所述数据结构并执行其中标识的指令以对所述数据分组的报头实施处理。
4.根据权利要求3所述的报头处理引擎,其中所述数据结构包括所述报头的一个或更多个部分。
5.根据权利要求4所述的报头处理引擎,其中所述数据结构只包括执行一个或更多个所述指令所需要的那些报头部分。
6.根据权利要求3所述的报头处理引擎,其中所述数据结构包括用于唯一地表示所述数据分组的报头的序列的分组分类标识符,该分组分类标识符标识供所述处理器执行的所述指令集。
7.根据权利要求6所述的报头处理引擎,其中所述分组分类标识符表示所述处理器的指令存储器中的存储器地址,所述处理器被配置为在读取所述分组分类标识符时访问该存储器地址并开始执行存储在该存储器地址上的指令。
8.根据权利要求6或7所述的报头处理引擎,其中所述构造器单元被配置为通过形成对所述数据分组的报头的序列的表示并将该表示传递给仅其可用输出对应于有效的报头序列的压缩引擎,来产生所述分组分类标识符,所述压缩引擎的输出是所述分组分类标识符。
9.根据引用权利要求2时的权利要求3所述的报头处理引擎,其中所述共享存储器被配置为保存多个数据结构,各个数据结构对应于不同的数据分组。
10.根据权利要求9所述的报头处理引擎,其中所述共享存储器被配置为使得所述构造器单元和所述处理器能够同时访问不同数据结构,所述处理器对由所述构造器单元完成的数据结构进行排他的访问。
11.根据权利要求9或10所述的报头处理引擎,其中所述处理器被配置为,在开始执行一个或更多个使得所述处理器调用不共享所述处理器的执行流水线的功能单元的预定指令时,通过以下步骤来切换执行线程:
在与进行调用有关的数据分组相对应的数据结构中存储所述处理器的执行流水线的状态;
将所述共享存储器中存储的不同数据结构的状态加载到所述处理器的执行流水线中;以及
执行在不同数据结构标识的指令集。
12.根据权利要求11所述的报头处理引擎,其中所述处理器被配置为使得响应于对功能单元的调用而返回的数据被写入所述处理器的选定的寄存器中,使得当所述处理器下一次加载与进行调用有关的数据分组相对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。
13.根据权利要求12所述的报头处理引擎,其中所述处理器被配置为,在调用功能单元时,为选定的寄存器设置标记,响应于该调用而返回的数据要被写入到所述选定的寄存器中,所述标记防止所述处理器选择该寄存器用于另一个调用直到所述标记被清除。
14.根据权利要求13所述的报头处理引擎,其中所述处理器被配置为,在从所述选定的寄存器读取数据时,清除所述标记以使得所述处理器能够选择该寄存器用于后续调用。
15.根据权利要求11所述的报头处理引擎,其中至少一个预定指令当被执行时使得所述处理器调用查找引擎或哈希引擎。
16.根据权利要求9所述的报头处理引擎,其中所述处理器被配置为响应于所述指令将所述处理器的相应输出写入各个数据结构中。
17.根据权利要求3所述的报头处理引擎,其中所述数据分组是通过网络接收的数据分组,所述网络接口设备被支持一个或更多个操作系统的数据处理系统所支持,所述处理器被配置为响应于所述指令将标识要写入至少一部分接收到的数据分组的数据处理系统的接收队列的数据提供给所述网络接口设备。
18.根据权利要求3项所述的报头处理引擎,其中所述数据分组是用于通过网络传输的部分形成的数据分组,所述网络接口设备被支持一个或更多个操作系统的数据处理系统所支持,所述处理器被配置为响应于所述指令以完成所述数据分组的方式来处理所述部分形成的数据分组的报头。
19.根据权利要求18所述的报头处理引擎,其中所述处理器被配置为通过执行以下操作中的一个或更多个来完成所述数据分组:
如果所述数据分组属于要按照服务质量协议的预定级别进行传输的数据流,则将能够使得所述数据分组按照该预定级别来处理的服务质量参数写入所述数据分组中;
如果所述数据分组要通过虚拟LAN来传输,则将能够使得通过该虚拟LAN来路由所述数据分组的虚拟LAN参数写入所述数据分组中;以及
如果所述数据分组从所述网络接口设备的虚拟接口始发,则执行分组过滤以确保所述数据分组只在所述数据分组的目的地址是该虚拟接口允许访问的网络端点时被传输到网络中。
20.根据权利要求1所述的报头处理引擎,其中所述数据分组的各个报头包括根据网络数据协议而格式化的数据比特集,各个数据比特集位于所述数据分组的嵌套报头、所述数据分组的页脚或者所述数据分组中的任意其它点中。
21.一种网络接口设备,该网络接口设备包括根据权利要求17所述的报头处理引擎,该报头处理引擎被配置为,在所述处理器完成数据分组的报头的处理时,使得所述处理器的至少一部分输出对于分组处理引擎是可用的,所述分组处理引擎被配置为至少部分地根据所述处理器的输出来处理保存在缓存中的数据分组。
22.一种报头处理引擎,用于对各具有多个报头的数据分组的序列进行报头处理,该报头处理引擎包括:
报头识别器,其被配置为解析数据分组的序列中各个数据分组的报头,并且为各个数据分组形成一个或更多个指示所述数据分组中各个报头的类型和位置的消息,所述报头识别器被配置为依次解析数据分组;以及
处理器,其被配置为根据为该数据分组而形成的一个或更多个消息来对序列中各个数据分组执行报头处理,并在其输出依次提供处理后的数据分组;
其中所述报头识别器和所述处理器被配置为并行操作以使得所述处理器不按次序地对所述数据分组进行报头处理。
23.根据权利要求22所述的报头处理引擎,其中所述报头识别器和所述处理器操作为使得在所述处理器处理数据分组的序列中的一个数据分组时,所述报头识别器解析所述序列中的另一个数据分组。
24.根据权利要求22-23中的任意一项所述的报头处理引擎,其中所述报头识别器被配置为依次地解析所述数据分组的报头,并在识别出所述数据分组中各个报头的类型和位置时,为所述处理器形成包括该报头的类型和该报头在所述数据分组中的位置的消息。
25.根据权利要求22所述的报头处理引擎,其中所述报头识别器被配置为通过检测所述数据分组的报头中的一个或更多个预定的比特序列来识别各个报头在所述数据分组中的位置。
26.根据权利要求25所述的报头处理引擎,其中所述预定的比特序列指示报头的开始或结尾。
27.根据权利要求22所述的报头处理引擎,其中所述报头识别器能够操作用于通过检测表示报头类型的一个或更多个预定值来识别所述数据分组中的报头的类型。
28.根据权利要求22所述的报头处理引擎,其中所述报头识别器能够操作用于使用所述报头在所述数据分组中的位置来识别所述数据分组中的报头的类型。
29.根据权利要求22所述的报头处理引擎,其中所述处理器被配置为,根据为数据分组而形成的一个或更多个消息中识别的报头类型,选择存储在所述处理器的指令存储器中的指令集并且使用选定的指令集来处理该数据分组。
30.根据权利要求22所述的报头处理引擎,其中所述报头识别器被配置为,根据为数据分组而形成的一个或更多个消息中识别的报头类型,选择存储在所述处理器的指令存储器中的指令集并且使得所述处理器使用选定的指令集来处理该数据分组。
31.一种报头处理引擎,用于对存储在缓存中的数据分组的序列进行报头处理,各个所述数据分组具有多个报头,所述报头处理引擎包括处理器,所述处理器具有执行流水线,其特征在于,所述报头处理引擎还包括:
预处理器单元,其被配置为解析存储在所述缓存中的数据分组的报头,并且根据所述数据分组中的报头的类型形成标识指令集的数据结构,该数据结构包括由所述预处理器单元从所述缓存的所述数据分组的所述报头读取的数据,并且该数据结构能够操作以使得所述处理器在无需访问存储在所述缓存中的数据分组的情况下对所述数据分组的报头实施处理;其中所述处理器被配置为访问所述数据结构并执行所述指令集以处理所述数据分组的报头。
32.根据权利要求31所述的报头处理引擎,该报头处理引擎进一步包括所述处理器可访问的共享存储器,所述预处理器单元被配置为将所述数据结构写入该共享存储器。
33.根据权利要求31或32所述的报头处理引擎,其中所述数据结构包括所述数据分组的报头的一个或更多个部分。
34.根据权利要求33所述的报头处理引擎,其中所述数据结构只包括一个或更多个所述指令所需要的那些报头部分。
35.根据权利要求31所述的报头处理引擎,其中所述预处理器单元被配置为根据所述数据分组中的报头的类型来选择指令集。
36.根据权利要求31所述的报头处理引擎,其中所述处理器支持指令存储器并且所述指令集被存储在所述指令存储器中的所述数据结构中标识的位置。
37.根据权利要求31所述的报头处理引擎,其中所述预处理器单元被配置为产生分组分类标识符,所述分组分类标识符唯一地表示所述数据分组的报头的类型,所述分组分类标识符被包括在所述数据结构中并且标识供所述处理器执行的所述指令集。
38.根据权利要求37所述的报头处理引擎,其中所述分组分类标识符表示所述处理器的指令存储器中的存储器地址,并且所述处理器被配置为在读取所述分组分类标识符时访问所述存储器地址并开始执行存储在所述存储器地址处的指令。
39.根据权利要求37或38所述的报头处理引擎,其中所述预处理器单元被配置为通过形成对所述数据分组的报头的序列的表示并将该表示传递到仅其可用输出对应于有效的报头序列的压缩引擎,来产生所述分组分类标识符,所述压缩引擎的输出是所述分组分类标识符。
40.根据引用权利要求32时的权利要求33所述的报头处理引擎,其中所述共享存储器被配置为保存多个数据结构,各个数据结构对应于不同的数据分组的报头。
41.根据权利要求40所述的报头处理引擎,其中所述共享存储器被配置为使得所述预处理器单元和所述处理器能够同时访问不同的数据结构,所述处理器对由所述预处理器单元完成的数据结构进行排他的访问。
42.根据权利要求40或41所述的报头处理引擎,其中所述处理器被配置为,在开始执行一个或更多个使得所述处理器调用不共享所述处理器的执行流水线的功能单元的预定指令时,在与进行调用有关的数据分组相对应的数据结构中存储所述处理器的执行流水线的状态,并且将所述共享存储器中存储的不同数据结构的状态加载到所述处理器的执行流水线中。
43.根据权利要求42所述的报头处理引擎,其中所述处理器被配置为使得响应于对功能单元的调用而返回的数据被写入所述处理器的选定的寄存器中,使得当所述处理器下一次加载与进行调用有关的数据分组相对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。
44.根据权利要求43所述的报头处理引擎,其中所述处理器被配置为,在调用功能单元时,为选定的寄存器设置标记,响应于该调用而返回的数据要写入到所述选定的寄存器中,所述标记防止所述处理器选择该寄存器用于另一个调用。
45.根据权利要求44所述的报头处理引擎,其中所述处理器被配置为,在从选定的寄存器读取数据时,清除所述标记以使得所述处理器能够选择该寄存器用于后续调用。
46.根据权利要求42所述的报头处理引擎,其中所述预定指令中的至少一个当被执行时使得所述处理器调用查找引擎、哈希引擎、校验和或CRC计算引擎、加密引擎或者以任意顺序设置的上述引擎的任意组合。
47.根据权利要求40所述的报头处理引擎,其中所述处理器被配置为响应于所述指令将由所述处理器执行的处理的相应输出写入各个数据结构中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28864209P | 2009-12-21 | 2009-12-21 | |
US61/288,642 | 2009-12-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102104541A CN102104541A (zh) | 2011-06-22 |
CN102104541B true CN102104541B (zh) | 2016-04-13 |
Family
ID=43859048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010625075.0A Active CN102104541B (zh) | 2009-12-21 | 2010-12-21 | 报头处理引擎 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8743877B2 (zh) |
EP (1) | EP2337305B1 (zh) |
CN (1) | CN102104541B (zh) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8743877B2 (en) * | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
US9858241B2 (en) * | 2013-11-05 | 2018-01-02 | Oracle International Corporation | System and method for supporting optimized buffer utilization for packet processing in a networking device |
US8634415B2 (en) | 2011-02-16 | 2014-01-21 | Oracle International Corporation | Method and system for routing network traffic for a blade server |
US9390056B1 (en) * | 2011-12-19 | 2016-07-12 | Chelsio Communications, Inc. | Method for efficient routing in a network interface card |
CN102497385B (zh) * | 2011-12-31 | 2015-09-16 | 曙光信息产业股份有限公司 | 一种网络流量审计方法及审计系统 |
US9445363B2 (en) * | 2012-02-15 | 2016-09-13 | Acer Incorporated | Method of handling transmission configuration of a communication device and related communication device |
CN103378920B (zh) | 2012-04-16 | 2016-11-16 | 华为终端有限公司 | 网络发现方法、接入点及终端设备 |
US20130283280A1 (en) * | 2012-04-20 | 2013-10-24 | Qualcomm Incorporated | Method to reduce multi-threaded processor power consumption |
US9164771B2 (en) * | 2012-06-29 | 2015-10-20 | Avaya Inc. | Method for thread reduction in a multi-thread packet processor |
WO2014002500A1 (en) * | 2012-06-29 | 2014-01-03 | Nec Corporation | Qos control system, qos control method, and program |
US9450780B2 (en) * | 2012-07-27 | 2016-09-20 | Intel Corporation | Packet processing approach to improve performance and energy efficiency for software routers |
US9413695B1 (en) | 2012-09-18 | 2016-08-09 | Chelsio Communications, Inc. | Multi-function interconnect having a plurality of switch building blocks |
WO2014070883A2 (en) * | 2012-10-30 | 2014-05-08 | Jds Uniphase Corporation | Method and system for identifying matching packets |
US20140201416A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
CN104184645B (zh) * | 2013-05-27 | 2018-05-04 | 华为技术有限公司 | 一种生成操作请求的方法、设备及系统 |
US9444914B2 (en) | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
US9479620B2 (en) | 2013-10-17 | 2016-10-25 | Marvell World Trade Ltd. | Packet parsing and key generation in a network device |
US9489327B2 (en) | 2013-11-05 | 2016-11-08 | Oracle International Corporation | System and method for supporting an efficient packet processing model in a network environment |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
CN103973581B (zh) * | 2014-05-08 | 2017-04-12 | 华为技术有限公司 | 一种报文数据处理方法、装置及系统 |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US10050833B2 (en) * | 2014-06-19 | 2018-08-14 | Cavium, Inc. | Method of reducing latency in a flexible parser and an apparatus thereof |
US9628385B2 (en) * | 2014-06-19 | 2017-04-18 | Cavium, Inc. | Method of identifying internal destinations of networks packets and an apparatus thereof |
US9635146B2 (en) | 2014-06-19 | 2017-04-25 | Cavium, Inc. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
GB2535737B (en) * | 2015-02-25 | 2021-08-04 | Advanced Risc Mach Ltd | Tracing the data processing activities of a data processing apparatus |
US10390058B2 (en) * | 2015-04-02 | 2019-08-20 | Nokia Of America Corporation | Dynamic service flow creation for packet cable multimedia quality of service guarantee in a distributed cable management system |
US10164888B2 (en) * | 2015-05-20 | 2018-12-25 | Intel IP Corporation | Quality of service for a universal serial bus |
EP3338417B1 (en) | 2015-08-20 | 2021-11-10 | ARRIS Enterprises LLC | Virtual-machine dataplane having fixed interpacket time |
WO2017128299A1 (zh) * | 2016-01-29 | 2017-08-03 | 瑞斯康微电子(深圳)有限公司 | 一种基于文件方式的多协议报文解析方法与系统 |
CN105721356B (zh) * | 2016-02-03 | 2019-05-10 | 华为技术有限公司 | 存储协议头的方法和网络设备 |
WO2018044281A1 (en) | 2016-08-30 | 2018-03-08 | Ruckus Wireless, Inc. | Virtual-machine dataplane with dhcp-server functionality |
WO2018178906A1 (en) | 2017-03-28 | 2018-10-04 | Marvell World Trade Ltd. | Flexible processor of a port extender device |
US10868893B2 (en) | 2017-03-31 | 2020-12-15 | Xilinx, Inc. | Network interface device |
US10999303B2 (en) | 2017-03-31 | 2021-05-04 | Xilinx, Inc. | Capturing data |
US10505899B1 (en) * | 2017-08-14 | 2019-12-10 | Juniper Networks, Inc | Apparatus, system, and method for applying firewall rules on packets in kernel space on network devices |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US11489773B2 (en) | 2017-11-06 | 2022-11-01 | Pensando Systems Inc. | Network system including match processing unit for table-based actions |
US11263158B2 (en) | 2018-02-22 | 2022-03-01 | Pensando Systems Inc. | Programmable computer IO device interface |
EP3756315A1 (en) * | 2018-03-01 | 2020-12-30 | Huawei Technologies Co., Ltd. | Packet-programmable statelets |
US11570045B2 (en) * | 2018-09-28 | 2023-01-31 | Xilinx, Inc. | Network interface device |
US11537541B2 (en) | 2018-09-28 | 2022-12-27 | Xilinx, Inc. | Network interface device and host processing device |
US11012411B2 (en) | 2018-11-05 | 2021-05-18 | Xilinx, Inc. | Network interface device |
US11343358B2 (en) | 2019-01-29 | 2022-05-24 | Marvell Israel (M.I.S.L) Ltd. | Flexible header alteration in network devices |
CN110113403B (zh) * | 2019-04-28 | 2021-12-28 | 深圳创维数字技术有限公司 | 一种at指令的处理方法、装置和计算机设备 |
US11792686B2 (en) * | 2019-06-19 | 2023-10-17 | Qualcomm Incorporated | High bandwidth low latency cellular traffic awareness |
US11258885B2 (en) * | 2019-12-10 | 2022-02-22 | Mellanox Technologies, Ltd. | Flexible parser in a networking device |
US11550715B2 (en) * | 2020-08-16 | 2023-01-10 | Mellanox Technologies, Ltd. | Virtual splitting of memories |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085723A2 (en) * | 1999-09-20 | 2001-03-21 | Kabushiki Kaisha Toshiba | Fast and adaptive packet processing device and method using digest information of input packet |
EP1315357A2 (en) * | 2001-11-21 | 2003-05-28 | Alcatel Canada Inc. | Apparatus and method for header processing |
CN1695363A (zh) * | 2002-09-03 | 2005-11-09 | 英特尔公司 | 为分组处理确定时钟信号的方法和系统 |
Family Cites Families (150)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325532A (en) * | 1992-09-25 | 1994-06-28 | Compaq Computer Corporation | Automatic development of operating system boot image |
US5272599A (en) * | 1993-03-19 | 1993-12-21 | Compaq Computer Corporation | Microprocessor heat dissipation apparatus for a printed circuit board |
JPH07110749A (ja) | 1993-04-16 | 1995-04-25 | Hewlett Packard Co <Hp> | ダイアログ・ボックスの動的構築方法 |
US6098112A (en) * | 1995-10-19 | 2000-08-01 | Hewlett-Packard Company | Streams function registering |
US5886872A (en) * | 1997-04-23 | 1999-03-23 | Compaq Computer Corporation | Pivotable support and heat sink apparatus removably connectable without tools to a computer processor |
US6259699B1 (en) * | 1997-12-30 | 2001-07-10 | Nexabit Networks, Llc | System architecture for and method of processing packets and/or cells in a common switch |
US6160554A (en) * | 1998-03-19 | 2000-12-12 | Hewlett Packard Company | Computer file content preview window |
US6002804A (en) * | 1998-03-26 | 1999-12-14 | Hewlett-Packard Company | Tone dependent variable halftoning with adjustable algorithm selection |
US6260127B1 (en) * | 1998-07-13 | 2001-07-10 | Compaq Computer Corporation | Method and apparatus for supporting heterogeneous memory in computer systems |
US6768996B1 (en) * | 1998-10-08 | 2004-07-27 | Hewlett-Packard Development Company, L.P. | System and method for retrieving an abstracted portion of a file without regard to the operating system of the current host computer |
EP1142227A2 (en) * | 1998-12-23 | 2001-10-10 | Nokia Wireless Routers, Inc. | A unified routing scheme for ad-hoc internetworking |
US6360241B1 (en) * | 1999-02-01 | 2002-03-19 | Compaq Information Technologies Goup, L.P. | Computer method and apparatus for division and square root operations using signed digit |
US6466952B2 (en) * | 1999-04-08 | 2002-10-15 | Hewlett-Packard Company | Method for transferring and indexing data from old media to new media |
US6502203B2 (en) * | 1999-04-16 | 2002-12-31 | Compaq Information Technologies Group, L.P. | Method and apparatus for cluster system operation |
US6304945B1 (en) * | 1999-05-13 | 2001-10-16 | Compaq Computer Corporation | Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses |
US7318102B1 (en) | 1999-05-24 | 2008-01-08 | Hewlett-Packard Development Company, L.P. | Reliable datagram |
WO2001018654A1 (en) * | 1999-09-08 | 2001-03-15 | Mellanox Technologies Ltd. | Synchronization of interrupts with data packets |
WO2001048922A1 (en) | 1999-12-28 | 2001-07-05 | Mellanox Technologies Ltd. | Duty cycle adapter |
US7103626B1 (en) * | 2000-05-24 | 2006-09-05 | Hewlett-Packard Development, L.P. | Partitioning in distributed computer system |
EP1305687B1 (en) * | 2000-05-24 | 2008-07-30 | Voltaire Ltd. | Filtered application-to-application communication |
US8300534B2 (en) * | 2000-05-24 | 2012-10-30 | Alcatel Lucent | Programmable packet processor with flow resolution logic |
WO2001093046A1 (en) * | 2000-06-02 | 2001-12-06 | Mellanox Technologies Ltd. | Dma doorbell |
US6690757B1 (en) * | 2000-06-20 | 2004-02-10 | Hewlett-Packard Development Company, L.P. | High-speed interconnection adapter having automated lane de-skew |
US7346702B2 (en) * | 2000-08-24 | 2008-03-18 | Voltaire Ltd. | System and method for highly scalable high-speed content-based filtering and load balancing in interconnected fabrics |
US6765922B1 (en) * | 2000-09-08 | 2004-07-20 | Hewlett-Packard Development Company, L.P. | Speculative transmit for system area network latency reduction |
US20020059052A1 (en) * | 2000-09-12 | 2002-05-16 | Mellanox Technologies Ltd. | Co-simulation of network components |
US6349035B1 (en) * | 2000-09-29 | 2002-02-19 | Compaq Information Technologies Group, L.P. | Method and apparatus for tooless mating of liquid cooled cold plate with tapered interposer heat sink |
US6718392B1 (en) * | 2000-10-24 | 2004-04-06 | Hewlett-Packard Development Company, L.P. | Queue pair partitioning in distributed computer system |
AUPR108900A0 (en) | 2000-10-28 | 2000-11-23 | S4 Technology Pty Limited | Modular digital transmission assembly |
US6728743B2 (en) * | 2001-01-04 | 2004-04-27 | Mellanox Technologies Ltd. | Modulo remainder generator |
US7254237B1 (en) * | 2001-01-12 | 2007-08-07 | Slt Logic, Llc | System and method for establishing a secure connection |
US6950961B2 (en) * | 2001-02-13 | 2005-09-27 | Hewlett-Packard Development Company, L.P. | Highly available, monotonic increasing sequence number generation |
CN100367730C (zh) * | 2001-02-14 | 2008-02-06 | 克利尔斯皮德科技有限公司 | 一种互连系统 |
US20020129293A1 (en) * | 2001-03-07 | 2002-09-12 | Hutton John F. | Scan based multiple ring oscillator structure for on-chip speed measurement |
US20020140985A1 (en) * | 2001-04-02 | 2002-10-03 | Hudson Kevin R. | Color calibration for clustered printing |
US20020152328A1 (en) | 2001-04-11 | 2002-10-17 | Mellanox Technologies, Ltd. | Network adapter with shared database for message context information |
US7543290B2 (en) | 2001-04-11 | 2009-06-02 | Mellanox Technologies Ltd. | Multiple queue pair access with single doorbell |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US7042848B2 (en) | 2001-05-04 | 2006-05-09 | Slt Logic Llc | System and method for hierarchical policing of flows and subflows of a data stream |
US6944168B2 (en) | 2001-05-04 | 2005-09-13 | Slt Logic Llc | System and method for providing transformation of multi-protocol packets in a data stream |
US6901052B2 (en) | 2001-05-04 | 2005-05-31 | Slt Logic Llc | System and method for policing multiple data flows and multi-protocol data flows |
US6438130B1 (en) * | 2001-06-28 | 2002-08-20 | Mellanox Technologies Ltd. | Forwarding database cache |
US6980328B2 (en) * | 2001-07-05 | 2005-12-27 | Hewlett-Packard Development Company, L.P. | Direction-dependent color conversion in bidirectional printing |
US20030007489A1 (en) * | 2001-07-09 | 2003-01-09 | Ram Krishnan | Data extraction system for packet analysis |
US7136397B2 (en) * | 2001-08-20 | 2006-11-14 | Slt Logic Llc | Network architecture and system for delivering bi-directional xDSL based services |
US7099275B2 (en) * | 2001-09-21 | 2006-08-29 | Slt Logic Llc | Programmable multi-service queue scheduler |
US7151744B2 (en) * | 2001-09-21 | 2006-12-19 | Slt Logic Llc | Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover |
US7161719B2 (en) * | 2001-09-26 | 2007-01-09 | Hewlett-Packard Development Company, L.P. | Generalized color calibration architecture and method |
US6904534B2 (en) * | 2001-09-29 | 2005-06-07 | Hewlett-Packard Development Company, L.P. | Progressive CPU sleep state duty cycle to limit peak power of multiple computers on shared power distribution unit |
US7023584B2 (en) * | 2001-10-02 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | Color calibration method and apparatus |
US20030065856A1 (en) * | 2001-10-03 | 2003-04-03 | Mellanox Technologies Ltd. | Network adapter with multiple event queues |
US7054035B2 (en) * | 2001-10-29 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | Method and system for management of color through conversion between color spaces |
US7240350B1 (en) * | 2002-01-07 | 2007-07-03 | Slt Logic, Llc | System and method for providing communications to processes |
US7093158B2 (en) * | 2002-03-11 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Data redundancy in a hot pluggable, large symmetric multi-processor system |
US7245627B2 (en) * | 2002-04-23 | 2007-07-17 | Mellanox Technologies Ltd. | Sharing a network interface card among multiple hosts |
US6705703B2 (en) * | 2002-04-24 | 2004-03-16 | Hewlett-Packard Development Company, L.P. | Determination of control points for construction of first color space-to-second color space look-up table |
US6667918B2 (en) * | 2002-05-01 | 2003-12-23 | Mellanox Technologies Ltd. | Self-repair of embedded memory arrays |
US7149227B2 (en) * | 2002-05-31 | 2006-12-12 | Mellanox Technologies Ltd. | Round-robin arbiter with low jitter |
US7263103B2 (en) * | 2002-07-23 | 2007-08-28 | Mellanox Technologies Ltd. | Receive queue descriptor pool |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
US7631106B2 (en) | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US7316017B1 (en) * | 2003-01-06 | 2008-01-01 | Slt Logic, Llc | System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system |
US7386619B1 (en) * | 2003-01-06 | 2008-06-10 | Slt Logic, Llc | System and method for allocating communications to processors in a multiprocessor system |
US7190827B2 (en) * | 2003-01-22 | 2007-03-13 | Hewlett-Packard Development Company, L.P. | Color space conversion using interpolation |
US8023520B2 (en) * | 2003-03-27 | 2011-09-20 | Hewlett-Packard Development Company, L.P. | Signaling packet |
US7554993B2 (en) * | 2003-03-27 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing connection management with multiple stacks |
US7103744B2 (en) * | 2003-03-27 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Binding a memory window to a queue pair |
US7502826B2 (en) * | 2003-03-27 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Atomic operations |
US20040210754A1 (en) * | 2003-04-16 | 2004-10-21 | Barron Dwight L. | Shared security transform device, system and methods |
US20040252685A1 (en) * | 2003-06-13 | 2004-12-16 | Mellanox Technologies Ltd. | Channel adapter with integrated switch |
US7352893B2 (en) * | 2003-07-09 | 2008-04-01 | Hewlett-Packard Development Company, L.P. | Representing extended color gamut information |
US7446901B2 (en) * | 2003-07-21 | 2008-11-04 | Hewlett-Packard Development Company | Conforming output intensities of pens |
US7484209B2 (en) * | 2003-08-12 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Instrumenting java code by modifying bytecodes |
US7496903B2 (en) * | 2003-08-12 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Synthesizing application response measurement (ARM) instrumentation |
US20050039171A1 (en) * | 2003-08-12 | 2005-02-17 | Avakian Arra E. | Using interceptors and out-of-band data to monitor the performance of Java 2 enterprise edition (J2EE) applications |
US7757232B2 (en) * | 2003-08-14 | 2010-07-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing work request lists |
US7617376B2 (en) * | 2003-08-14 | 2009-11-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for accessing a memory |
US7404190B2 (en) * | 2003-09-18 | 2008-07-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing notification via multiple completion queue handlers |
US20050165985A1 (en) * | 2003-12-29 | 2005-07-28 | Vangal Sriram R. | Network protocol processor |
US7653754B2 (en) | 2004-01-05 | 2010-01-26 | Mellanox Technologies Ltd. | Method, system and protocol that enable unrestricted user-level access to a network interface adapter |
US20050172181A1 (en) * | 2004-01-16 | 2005-08-04 | Mellanox Technologies Ltd. | System and method for production testing of high speed communications receivers |
US7649879B2 (en) * | 2004-03-30 | 2010-01-19 | Extreme Networks, Inc. | Pipelined packet processor |
US7168784B2 (en) * | 2004-03-30 | 2007-01-30 | Hewlett-Packard Development Company, L.P. | Formation of images |
US20050219278A1 (en) * | 2004-03-30 | 2005-10-06 | Hudson Kevin R | Image formation with a flexible number of passes |
US7668165B2 (en) * | 2004-03-31 | 2010-02-23 | Intel Corporation | Hardware-based multi-threading for packet processing |
US7929161B2 (en) * | 2004-04-15 | 2011-04-19 | Hewlett-Packard Development Company, L.P. | Image processing system and method |
US7492763B1 (en) | 2004-07-16 | 2009-02-17 | Applied Micro Circuits Corporation | User-specified key creation from attributes independent of encapsulation type |
US7650386B2 (en) * | 2004-07-29 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Communication among partitioned devices |
US20060045098A1 (en) * | 2004-08-31 | 2006-03-02 | Krause Michael R | System for port mapping in a network |
US7403535B2 (en) * | 2004-12-14 | 2008-07-22 | Hewlett-Packard Development Company, L.P. | Aggregation of network resources providing offloaded connections between applications over a network |
US7551614B2 (en) * | 2004-12-14 | 2009-06-23 | Hewlett-Packard Development Company, L.P. | Aggregation over multiple processing nodes of network resources each providing offloaded connections between applications over a network |
US20060193318A1 (en) * | 2005-02-28 | 2006-08-31 | Sriram Narasimhan | Method and apparatus for processing inbound and outbound quanta of data |
WO2006095184A2 (en) * | 2005-03-10 | 2006-09-14 | Level 5 Networks Incorporated | Data processing system |
US7674564B2 (en) * | 2005-04-11 | 2010-03-09 | Hewlett-Packard Development Company, L.P. | Color filter |
US7580415B2 (en) * | 2005-04-27 | 2009-08-25 | Hewlett-Packard Development Company, L.P. | Aggregation of hybrid network resources operable to support both offloaded and non-offloaded connections |
US7580495B2 (en) | 2005-06-30 | 2009-08-25 | Slt Logic Llc | Mixer-based phase control |
US7573967B2 (en) | 2005-07-01 | 2009-08-11 | Slt Logic Llc | Input threshold adjustment in a synchronous data sampling circuit |
US8645964B2 (en) | 2005-08-23 | 2014-02-04 | Mellanox Technologies Ltd. | System and method for accelerating input/output access operation on a virtual machine |
US7813460B2 (en) | 2005-09-30 | 2010-10-12 | Slt Logic, Llc | High-speed data sampler with input threshold adjustment |
US7285996B2 (en) * | 2005-09-30 | 2007-10-23 | Slt Logic, Llc | Delay-locked loop |
US9104894B2 (en) * | 2005-12-16 | 2015-08-11 | Hewlett-Packard Development Company, L.P. | Hardware enablement using an interface |
US7827442B2 (en) | 2006-01-23 | 2010-11-02 | Slt Logic Llc | Shelf management controller with hardware/software implemented dual redundant configuration |
US7809009B2 (en) * | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US7518164B2 (en) | 2006-03-29 | 2009-04-14 | Mellanox Technologies Ltd. | Current-triggered low turn-on voltage SCR |
US9111602B2 (en) | 2006-04-07 | 2015-08-18 | Mellanox Technologies, Ltd. | Accurate global reference voltage distribution system with local reference voltages referred to local ground and locally supplied voltage |
US7514978B2 (en) | 2006-05-08 | 2009-04-07 | Mellanox Technologies Ltd. | Terminated input buffer with offset cancellation circuit |
US7567267B2 (en) * | 2006-07-31 | 2009-07-28 | Hewlett-Packard Development Company, L.P. | System and method for calibrating a beam array of a printer |
US7822594B2 (en) | 2006-08-07 | 2010-10-26 | Voltaire Ltd. | Service-oriented infrastructure management |
US7801027B2 (en) | 2006-08-30 | 2010-09-21 | Mellanox Technologies Ltd. | Auto-negotiation by nodes on an infiniband fabric |
US8948199B2 (en) | 2006-08-30 | 2015-02-03 | Mellanox Technologies Ltd. | Fibre channel processing by a host channel adapter |
US20080115217A1 (en) * | 2006-10-31 | 2008-05-15 | Hewlett-Packard Development Company, L.P. | Method and apparatus for protection of a computer system from malicious code attacks |
US8522042B2 (en) | 2006-10-31 | 2013-08-27 | Hewlett-Packard Development Company, L.P. | Method and apparatus for enforcement of software licence protection |
US8296849B2 (en) * | 2006-10-31 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Method and apparatus for removing homogeneity from execution environment of computing system |
US8244825B2 (en) * | 2006-11-06 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Remote direct memory access (RDMA) completion |
US8233380B2 (en) * | 2006-11-06 | 2012-07-31 | Hewlett-Packard Development Company, L.P. | RDMA QP simplex switchless connection |
US20080135774A1 (en) | 2006-12-08 | 2008-06-12 | Asml Netherlands B.V. | Scatterometer, a lithographic apparatus and a focus analysis method |
US8909742B2 (en) | 2006-12-18 | 2014-12-09 | Hewlett-Packard Development Company, L.P. | Distributed configuration of network interface cards |
US7864787B2 (en) | 2007-03-26 | 2011-01-04 | Voltaire Ltd. | Device, system and method of multicast communication |
US7848322B2 (en) | 2007-03-26 | 2010-12-07 | Voltaire Ltd. | Device, system and method of UDP communication |
US7856488B2 (en) * | 2007-03-30 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Electronic device profile migration |
US20090097200A1 (en) | 2007-04-11 | 2009-04-16 | Viswa Sharma | Modular blade for providing scalable mechanical, electrical and environmental functionality in the enterprise using advancedtca boards |
US8817817B2 (en) * | 2007-06-06 | 2014-08-26 | Hewlett-Packard Development Company, L.P. | Method for ethernet power savings on link aggregated groups |
US7802071B2 (en) | 2007-07-16 | 2010-09-21 | Voltaire Ltd. | Device, system, and method of publishing information to multiple subscribers |
US20090165003A1 (en) | 2007-12-21 | 2009-06-25 | Van Jacobson | System and method for allocating communications to processors and rescheduling processes in a multiprocessor system |
JP4978531B2 (ja) | 2008-03-25 | 2012-07-18 | 日本電気株式会社 | 通信システム、中継伝送装置、ルータ装置及び通信方法 |
JP5400135B2 (ja) | 2008-04-28 | 2014-01-29 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | マルチサーバエンクロージャ内での固定速度バックプレーン接続に関する調整可能なサーバ伝送レート |
US8248930B2 (en) | 2008-04-29 | 2012-08-21 | Google Inc. | Method and apparatus for a network queuing engine and congestion management gateway |
WO2009136933A1 (en) | 2008-05-08 | 2009-11-12 | Hewlett-Packard Development Company, L.P. | A method for interfacing a fibre channel network with an ethernet based network |
US8108538B2 (en) | 2008-08-21 | 2012-01-31 | Voltaire Ltd. | Device, system, and method of distributing messages |
US20100088437A1 (en) | 2008-10-06 | 2010-04-08 | Mellanox Technologies Ltd | Infiniband adaptive congestion control adaptive marking rate |
US7921178B2 (en) | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
US8201168B2 (en) | 2008-12-25 | 2012-06-12 | Voltaire Ltd. | Virtual input-output connections for machine virtualization |
US8370675B2 (en) | 2009-01-28 | 2013-02-05 | Mellanox Technologies Ltd. | Precise clock synchronization |
WO2010087826A1 (en) | 2009-01-29 | 2010-08-05 | Hewlett-Packard Development Company, L.P. | Connecting ports of one or more electronic devices to different subsets of networks based on different operating modes |
US8000336B2 (en) | 2009-04-21 | 2011-08-16 | Voltaire Ltd. | Spanning tree root selection in a hierarchical network |
US8255475B2 (en) | 2009-04-28 | 2012-08-28 | Mellanox Technologies Ltd. | Network interface device with memory management capabilities |
US8407478B2 (en) | 2009-07-07 | 2013-03-26 | Mellanox Technologies Ltd. | Control message signature for device control |
US8365057B2 (en) | 2009-07-30 | 2013-01-29 | Mellanox Technologies Ltd | Processing of data integrity field |
US8644140B2 (en) | 2009-09-09 | 2014-02-04 | Mellanox Technologies Ltd. | Data switch with shared port buffers |
US8225182B2 (en) | 2009-10-04 | 2012-07-17 | Mellanox Technologies Ltd. | Processing of block and transaction signatures |
US7934959B2 (en) | 2009-10-06 | 2011-05-03 | Mellanox Technologies Ltd. | Adapter for pluggable module |
CN102549555B (zh) | 2009-10-07 | 2015-04-22 | 惠普发展公司,有限责任合伙企业 | 主机存储器的基于通知协议的端点高速缓存 |
US8576715B2 (en) | 2009-10-26 | 2013-11-05 | Mellanox Technologies Ltd. | High-performance adaptive routing |
JP2013509638A (ja) | 2009-10-30 | 2013-03-14 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | ブレード・エンクロージャ用の熱バスバー |
US20120120959A1 (en) | 2009-11-02 | 2012-05-17 | Michael R Krause | Multiprocessing computing with distributed embedded switching |
US9110860B2 (en) | 2009-11-11 | 2015-08-18 | Mellanox Technologies Tlv Ltd. | Topology-aware fabric-based offloading of collective functions |
US8811417B2 (en) | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US8213315B2 (en) | 2009-11-19 | 2012-07-03 | Mellanox Technologies Ltd. | Dynamically-connected transport service |
US8743877B2 (en) * | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
US20110173352A1 (en) | 2010-01-13 | 2011-07-14 | Mellanox Technologies Ltd | Power Reduction on Idle Communication Lanes |
-
2010
- 2010-01-12 US US12/686,280 patent/US8743877B2/en active Active
- 2010-12-20 EP EP10195863.5A patent/EP2337305B1/en active Active
- 2010-12-21 CN CN201010625075.0A patent/CN102104541B/zh active Active
-
2014
- 2014-04-24 US US14/261,199 patent/US9124539B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085723A2 (en) * | 1999-09-20 | 2001-03-21 | Kabushiki Kaisha Toshiba | Fast and adaptive packet processing device and method using digest information of input packet |
EP1315357A2 (en) * | 2001-11-21 | 2003-05-28 | Alcatel Canada Inc. | Apparatus and method for header processing |
CN1695363A (zh) * | 2002-09-03 | 2005-11-09 | 英特尔公司 | 为分组处理确定时钟信号的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US8743877B2 (en) | 2014-06-03 |
CN102104541A (zh) | 2011-06-22 |
US20140233571A1 (en) | 2014-08-21 |
EP2337305B1 (en) | 2018-01-24 |
US20110149966A1 (en) | 2011-06-23 |
US9124539B2 (en) | 2015-09-01 |
EP2337305A3 (en) | 2011-11-02 |
EP2337305A2 (en) | 2011-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102104541B (zh) | 报头处理引擎 | |
US11134132B2 (en) | Accelerated network packet processing | |
EP3738277B1 (en) | Segment routing network processing of packets | |
US8792497B2 (en) | Method and apparatus for performing link aggregation | |
EP2544417B1 (en) | Communication system, path control apparatus, packet forwarding apparatus and path control method | |
US8908693B2 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
US9602428B2 (en) | Method and apparatus for locality sensitive hash-based load balancing | |
CN102377640B (zh) | 一种报文处理装置和报文处理方法、及预处理器 | |
US9154586B2 (en) | Method for parsing network packets having future defined tags | |
CN101573913A (zh) | 用于多播路由选择的方法和设备 | |
JP2022550343A (ja) | Srネットワークでパケットを転送する方法、デバイス、及びシステム | |
CN110932890B (zh) | 一种数据传输方法、服务器及计算机可读存储介质 | |
US7948979B2 (en) | Programmable network interface card | |
CN113746749A (zh) | 网络连接设备 | |
US20200267098A1 (en) | Variable-length packet header vectors | |
US20240106751A1 (en) | Method and apparatus for processing detnet data packet | |
CN103560957A (zh) | 查表键值构造方法、微码下发方法、装置及系统 | |
US20040246956A1 (en) | Parallel packet receiving, routing and forwarding | |
US10887234B1 (en) | Programmatic selection of load balancing output amongst forwarding paths | |
CN114338529B (zh) | 五元组规则匹配方法及装置 | |
CN116319535A (zh) | 路径切换方法、装置、网络设备、以及网络系统 | |
CN114422437A (zh) | 一种异构报文的转发方法及装置 | |
Wang et al. | OpenISMA: An approach of achieving a scalable OpenFlow network by identifiers separating and mapping | |
JP4443266B2 (ja) | パケット更新装置 | |
CN107659504B (zh) | 一种保障lisp通信数据完整性的首包缓冲方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191220 Address after: California, USA Patentee after: XILINX INC Address before: California, USA Patentee before: Solarflare Comm Inc. |