CN102104541A - 报头处理引擎 - Google Patents
报头处理引擎 Download PDFInfo
- Publication number
- CN102104541A CN102104541A CN2010106250750A CN201010625075A CN102104541A CN 102104541 A CN102104541 A CN 102104541A CN 2010106250750 A CN2010106250750 A CN 2010106250750A CN 201010625075 A CN201010625075 A CN 201010625075A CN 102104541 A CN102104541 A CN 102104541A
- Authority
- CN
- China
- Prior art keywords
- header
- packet
- processor
- processing engine
- data
- 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.)
- Granted
Links
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种报头处理引擎,用于具有保存各自包括一个或更多个报头的一个或更多个数据分组的缓存的网络接口设备,该报头处理引擎包括:命令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组中各报头的类型和位置;构造器单元,具有对数据分组的报头读取访问权;以及处理器,包括一个执行流水线;该报头识别器进一步被配置为对每个报头:(a)根据报头的类型选择存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行为数据分组的报头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单元被配置为接收消息并执行从中识别的命令。
Description
技术领域
本发明涉及一种处理分组报头的报头处理引擎。
背景技术
现代数据分组网络中的计算机***通常根据在网络的全部层中运行的多个不同的协议,从管理数据流业务质量的协议,到确定数据分组逻辑结构的协议,再到确定网络结构上的全形式数据分组的物理信令的协议,来交换数据。因此一个典型的网络数据分组在计算机***中形成数据分组时会具有嵌套式的多个报头。通常数据分组在开放***互联(OSI)模型的第2至5层的每一层包括一个或更多个报头。
例如,通过建立了逻辑VLAN的以太网传输的TCP/IP数据分组会具有与以下所示相近的嵌套报头结构:
以太网/VLAN/IP/TCP
另外,分组可在以上结构中包括第5层报头,例如NetBIOS报头。
数据分组的报头把处理该数据分组的计算机***需要的全部信息告诉该计算机***,以便计算机***将数据分组中的有效载荷数据正确地路由到其目的地,并且对数据分组的发送方进行适当的响应。没有了分组报头,有效载荷数据就单单是一串没有任何上下文的比特序列,计算机***不知道怎样处理数据。因此,计算机***接收数据分组时,必须处理数据分组的报头以便确定对数据分组做何处理。
通常,一些报头处理在终端***的软件中完成,一些报头处理在硬件中完成。软件处理通常遵循分层协议栈模型,连续的报头被依次剥离和处理。相反的,硬件处理只处理一部分报头,或者将报头的组合作为单独的实体来处理,以便执行要求的操作。硬件中的报头处理对于路由分组数据、加快分组传递或者操纵分组报头特别有用。
硬件中的报头处理通常在网络接口设备中进行。各个数据分组被接收后,网络接口设备解析数据分组的报头并执行以下操作:执行校验和,取出数据并使用报头中的地址数据查找数据分组的期望目的地。所执行的操作通常取决于数据分组中出现的报头的类型。因为通常要求对各个数据分组执行多个操作,并且每秒钟有数以百万计的数据分组通过网络到达计算机***,所以确保报头能被高效地、尽可能快地处理是非常重要的。
常规的报头处理硬件使用专用处理器来解析数据分组中的报头并执行各个报头被识别出时所需的处理。这样的处理器在硬件需要执行大量操作时是高效的,但是在相同处理器按需要的顺序执行各个操作时经常浪费处理器周期。例如,处理器必须从分组缓存中读取报头数据,识别各个数据分组中的报头,在网络接口设备处的转发表中请求查找操作,并调用网络接口设备中的哈希计算单元。更进一步,处理器的指令集必须足够大以便支持处理器预期执行的操作的范围。这将导致使用复杂的处理器来执行实质上一连串的重复的简单操作。这样的处理器能量利用率低,这是用在刀锋式服务器(blade servers)和数据存储场(data farms)中的网络接口设备的焦点问题。
更进一步,使用典型的分层协议栈模型将报头处理实现在硬件或固件中效率非常低下,要求硬件被配置为恒定地处理一系列报头的一连串若-则-否则逻辑。
因此,需要用于解决上述问题的网络接口设备的改进的报头处理引擎。
发明内容
根据本发明的一个方面,提供了一个报头处理引擎,用于具有存储各自包括一个或更多个报头的一个或更多个数据分组的缓存的网络接口设备。该报头处理引擎包括:命令存储器;报头识别器,被配置为解析存储在缓存中的数据分组的报头,以便识别数据分组中每个报头的类型和位置;构造器单元,具有对数据分组的报头读取权;以及包括一个执行流水线的处理器;该报头识别器进一步被配置为对每个报头:(a)根据报头的类型选择存储在命令存储器中的一个或更多个命令;并且(b)为构造器单元形成一个或更多个标识被选择的命令和数据分组中报头的位置的消息;如果构造器单元执行这些为数据分组的报头选择的命令,将共同地使得构造器单元产生一个数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;并且构造器单元被配置为接收消息并执行从中识别的命令。
优选地,报头处理引擎进一步包括一个处理器可访问的共享存储器,构造器单元被配置为将数据结构写入该共享存储器。优选地,数据结构识别处理器要执行的指令集,处理器被配置为访问数据结构并执行从中识别出的指令以便对数据分组报头实施处理。相适应的,数据结构包括报头的一个或更多个部分。优选地,数据结构只包括执行一个或更多个所述指令所需要的那些报头部分。
优选地,数据结构包括一个用于唯一地表示数据分组报头次序的分组分类标识符,该分组分类标识符识别被处理器执行的所述指令集。优选地,分组分类标识符表示处理器的指令存储器中的一个存储器地址,并且处理器被配置为,当读取分组分类标识符时访问该存储器地址并开始执行存储在该存储器地址上的指令。优选地,构造器单元被配置为通过形成对数据分组报头的特定次序的表示并将该表示传递给一个仅其可用输出对应有效的报头次序的压缩引擎来产生分组分类标识符,该压缩引擎的输出即为分组分类标识符。
优选地,共享存储器被配置为保存多个数据结构,每个数据结构对应于不同数据分组。优选地,共享存储器被配置为允许构造器单元和处理器对不同数据结构进行并发访问,处理器对构造器单元完成的数据结构进行专有访问。
优选地,处理器被配置为,在开始执行一个或更多个使得处理器调用不共享处理器的执行流水线的功能单元的预定指令时,通过以下步骤切换执行线程:在与进行调用有关的数据分组对应的数据结构中存储该处理器的执行流水线的状态;将共享存储器中存储的不同数据结构的状态加载到该处理器的执行流水线;以及执行在不同数据结构识别出的指令集。
优选地,处理器被配置为将响应于对功能单元的调用而返回的数据写入处理器的一个选定寄存器中,使得处理器下一次加载与进行调用有关的数据分组对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。优选地,处理器被配置为,在调用一个功能单元时,为响应于该调用而返回的数据所写入的选定寄存器设置一个标记,此标记防止处理器在此标记被清除之前将该寄存器用于另一个调用。合适的是,处理器被配置为,从选定的寄存器读取数据时,清除所述标记以便处理器能够选择该寄存器用于后续的调用。合适的是,至少一个预定指令的执行会使得处理器调用查找引擎或哈希引擎。优选地,处理器被配置为响应于所述指令将处理器各自的输出写入各个数据结构中。
数据分组可以是通过网络接收的数据分组,网络接口设备被支持一个或更多个操作***的数据处理***所支持,处理器被配置为响应于所述指令,将标识数据处理***的接收顺序的数据提供给网络接口设备,所述数据处理***至少写入了一部分接收到的数据分组。
网络接口设备可以包括一个在此描述的报头处理引擎,该报头处理引擎被配置为,在处理器完成对数据分组报头的处理时,使得处理器的至少一部分输出对于被配置为至少部分依赖处理器的输出来处理保存在缓存中的数据分组的分组处理引擎是可用的。
数据分组可以是通过网络传输的部分地形成的数据分组,网络接口设备被支持一个或更多个操作***的数据处理***所支持,处理器被配置为响应于所述指令处理该部分地形成的数据分组以便完成该数据分组。
合适的是,处理器被配置为通过执行一个或更多个以下操作来完成数据分组:如果数据分组属于需要按照预定的服务质量协议级别进行传输的数据流,则将合适的服务质量参数写入数据分组中以便数据分组能够被按照预定水平来处理;如果数据分组将通过虚拟LAN来传输,则将合适的虚拟LAN参数写入数据分组中以便数据分组能够在虚拟LAN中被路由;以及如果数据分组从网络接口设备的虚拟接口始发,则进行分组过滤以确保数据分组只在数据分组的目的地址是虚拟接口允许访问的网络端点时被传输到网络中。
优选地,数据分组的每个报头包括遵照网络数据协议格式化的数据比特集,各数据比特集位于数据分组的嵌套报头、数据分组的页脚或者数据分组的其它任意点处。
根据本发明的第二方面,提供了一种报头处理引擎,用于对各自具有多个报头的一系列数据分组进行报头处理,该报头处理引擎包括:报头识别器,被配置为解析数据分组序列中各个数据分组的报头,并且为每个数据分组形成一个或更多个指示数据分组中每个报头的类型和位置的消息,该报头识别器被配置为依次解析数据分组;以及处理器,被配置为按照为数据分组形成的一个或更多个消息来处理序列中每个数据分组的报头,并依次输出处理后的数据分组;其中报头识别器和处理器被配置为并行操作以便允许处理器对不在该序列中的数据分组进行报头处理。
优选地,报头识别器和处理器这样操作:在处理器处理数据分组序列的一个数据分组时,报头识别器解析序列中的另一个数据分组。优选地,报头识别器被配置为依次解析数据分组的报头,并在识别数据分组的每个报头的类型和位置时为处理器形成包括数据分组的报头类型和位置的消息。
优选地,报头识别器被配置为通过检测数据分组报头中的一个或更多个预定的比特序列来识别数据分组中每个报头的位置。合适的是,该预定的比特序列指示报头的开始或结尾。合适的是,报头识别器可操作用于通过检测表示报头类型的一个或更多个预定值来识别数据分组中的报头的类型。合适的是,报头识别器可操作用于使用数据分组报头的位置来识别数据分组报头的类型。
处理器可被配置为,根据由为一个特定数据分组而形成的一个或更多个消息识别出的报头类型,选择存储在处理器的指令存储器中的指令集并且使用选定的指令集来处理该数据分组。另选的是,报头识别器被配置为根据由为一个特定数据分组而形成的一个或更多个消息识别出的报头类型,选择存储在处理器的指令存储器中的指令集并且使得处理器使用选定的指令集来处理该数据分组。
根据本发明的第三个方面,提供一种报头处理引擎,用于对存储在缓存中的数据分组的序列进行报头处理,每个数据分组都具有多个报头,并且该报头处理引擎包括:包括一个执行流水线的处理器;预处理器单元,被配置为解析存储在缓存中的数据分组的报头,并且根据数据分组的报头类型形成标识指令集的数据结构,该数据结构可操作用于使得处理器在无需访问缓存中的数据分组的情况下对数据分组的报头实施处理;其中处理器被配置为访问该数据结构并执行所述指令集以便处理数据分组的报头。
优选地,报头处理引擎进一步包括处理器可访问的共享存储器,预处理器单元被配置为将数据结构写入该共享存储器。合适的是,该数据结构包括数据分组报头的一个或更多个部分。优选地,该数据结构只包括一个或更多个所述指令需要的报头部分。
优选地,预处理器单元被配置为根据数据分组报头的类型选择指令集。优选地,处理器支持指令存储器并且所述指令集被存储在该指令存储器中由数据结构标识的位置。
优选地,预处理器单元被配置为产生用于唯一表示数据分组报头的类型的分组分类标识符,该分组分类标识符被包含在数据结构中并且识别被处理器执行的所述指令集。优选地,分组分类标识符表示处理器的指令存储器中的存储器地址,处理器被配置为通过读取分组分类标识符来访问该存储器地址并开始执行存储在该存储器地址上的指令。优选地,预处理器单元被配置为通过形成对数据分组报头的特定次序的表示并将该表示传递给一个仅其可用输出对应于有效的报头次序的压缩引擎来产生分组分类标识符,该压缩引擎的输出即为分组分类标识符。
优选地,共享存储器被配置为保存多个数据结构,每个数据结构对应于不同数据分组的报头。优选地,共享存储器被配置为允许预处理器单元和处理器对不同数据结构进行并发访问,处理器对预处理器单元完成的数据结构具有专有访问权。
优选地,处理器被配置为,在开始执行一个或更多个使得处理器调用不共享处理器的执行流水线的功能单元的预定指令时,在与进行调用有关的数据分组对应的数据结构中存储该处理器的执行流水线的状态,将共享存储器中存储的不同数据结构的状态加载到该处理器的执行流水线。
优选地,处理器被配置为将响应于对功能单元的调用而返回的数据写入处理器的一个选定的寄存器中,使得处理器下一次加载与进行调用有关的数据分组对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。优选地,处理器被配置为,在调用功能单元时,为响应于调用而返回的数据所写入的选定寄存器设置一个标记,此标记防止处理器将该寄存器用于另一个调用。优选地,处理器被配置为,从选定的寄存器读取数据时,清除所述标记以便处理器能够选择该寄存器用于后续调用。
合适的是,至少一个预定指令的执行会使得处理器调用一个查找引擎、哈希引擎、校验和或CRC计算引擎、加密引擎或者以上提到的各种引擎的任意组合。
优选地,处理器被配置为响应于所述指令将处理器执行的处理的各个输出写入每个数据结构中。
根据本发明的第四个方面,提供了一种被配置为处理网络数据分组的处理器,该处理器包括:存储多个指令序列的指令存储器;用于存储多个指令索引和处理器的状态集的处理器存储器,每个指令索引标识存储在指令存储器中的一个指令序列,每个状态集对应于一个指令索引;执行流水线,该执行流水线可操作用于执行由使用存储在处理器存储器中的对应状态集的指令索引标识的指令序列,一个指令序列和其对应的状态限定用于处理特定网络数据分组的执行线程;处理器被配置为可操作用于在通过执行由第一指令索引标识的一个指令序列来处理第一网络数据分组时,切换执行线程以便处理第二网络数据分组,具体步骤为:将执行流水线的状态写入处理器存储器的第一状态集中;将第二状态集从处理器存储器加载到执行流水线中;执行由第二状态集对应的指令索引标识的第二指令序列;其中处理器被配置为在按照指令顺序开始执行一个或更多个预定指令时执行线程切换。
优选地,第一状态集包括一个指示,用于指示第一指令序列中执行开始的位置。
优选地,预定指令的执行使得处理器调用一个不能共享处理器的执行流水线的功能单元,在处理器中该功能单元是可被支持的。
优选地,处理器进一步包括多个寄存器,处理器被配置为将响应于对功能单元的调用而返回的数据写入选定的寄存器中。
优选地,处理器被配置为在处理器存储器中限定的多个执行线程之间循环切换,并依次切换回由第一状态集和第一指令序列所限定的执行线程:将执行流水线的状态写入处理器存储器中与正在执行流水线中执行的指令序列相对应的状态集中;将第一状态集加载到执行流水线中;继续执行第一指令序列。
根据本发明的第五个方面,提供了一种在被配置用于处理网络数据分组的处理器的执行线程之间进行切换的方法,该处理器包括执行流水线,存储多个指令序列的指令存储器,存储第一和第二指令索引和对应的第一和第二处理器状态集的处理器存储器,每个指令索引标识一个存储在指令存储器中的指令序列,每个指令序列和其对应的状态限定用于处理特定网络数据分组的执行线程;该方法包括:在通过在执行流水线中执行由第一指令索引标识的一个指令序列来处理第一网络数据分组时,暂停执行流水线的执行;将执行流水线的状态写入处理器存储器的第一状态集中;将第二状态集从处理器存储器加载到执行流水线中;在执行流水线中执行由第二指令索引标识的指令序列以便实施对第二网络数据分组的处理。
附图说明
现在通过举例方式参照附图来描述本发明,附图中:
图1是根据本发明配置的报头处理引擎的示意图。
图2是报头处理引擎在网络接口设备中的布置的概况。
具体实施方式
以下描述用于使本领域的任何技术人员能实现和使用本发明,并提供于一个特定应用环境中。对所公开的实施方式的各种修改对于本领域技术人员是很显而易见的。
在此限定的基本原理可以应用于其它实施方式和应用而不脱离本发明的精神和范围。因此,本发明不局限于展示的实施方式,而是达到与在此公开的原理和特征相一致的最大范围。
本发明旨在提供一种具有流水线结构(pipelined architecture)的改进的报头处理引擎。在此描述的报头处理引擎提供了一种结构装置,该结构装置用于使用一个单独的标识符来标识数据分组的多种报头层,并且该报头处理引擎提供了一个具有对该数据分组报头进行处理所需要的全部数据的数据结构。报头处理引擎可用于处理通过网络在网络接口设备上接收到的数据分组的报头,以便允许到来的数据分组被解构。报头处理引擎可用于处理网络接口设备准备通过网络进行传输的数据分组的报头,以便允许发出的数据分组被适当地构造。典型地,报头处理引擎可被配置为对与开放***互联(OSI)模型的第2至5层中的任意层的网络协议相关的分组报头执行处理。
注意术语“报头”在此用于指嵌入数据分组中的网络或应用协议数据结构。报头可以是由数据分组中任意点的一组或一串特定比特表示的任何信息——例如,在此提及的“报头”可以是数据分组的嵌套报头、数据分组的页脚(例如,表示CRC)、或者处于数据分组中的任意其它点(例如,嵌入的http URL)中的数据比特集(可以表示OSI层,例如TCP协议数据)。因此,数据分组的各个报头是按照数据分组所遵循的特定网络数据协议而格式化的数据比特集。本领域技术人员可以认识到,本发明不限于数据在数据分组中出现的位置,本发明的原理可被应用于网路数据分组中的任何数据以便实施必要的报头处理(例如,分组路由,协议执行等)。
根据本发明配置的报头处理引擎(HPE)112的概况如图1所示。HPE包括报头识别器(HR)101、报头分割器(HS)103和调度器(dispatcher)107。报头识别器和报头分割器被设置为读取将被HPE处理的数据分组的报头。HPE不需要数据分组的有效载荷数据,因为与分组报头处理有关的全部信息都能在报头中找到。根据有效载荷数据而计算的校验和以及其它参数不由HPE处理——这些由网络控制器内的其它专用引擎来执行。
报头识别器、报头分割器和调度器由它们实现的功能来限定。HPE的各个组件可实现为离散集成电路,或者两个或更多个组件可以实现为单独的集成电路。HPE可以实现为大型集成电路的一部分,例如网路接口设备的控制器。报头识别器和报头分割器对需要被HPE处理的部分或全部形成的数据分组的报头进行读取访问。这些数据分组通常是在网络接口设备的缓存器中通过网络被接收,或者在准备通过网络传输的过程中。根据本发明配置的HPE可被用于网络接口设备的发送和接收路径之一或全部两者。
图2示出了根据本发明配置的报头处理引擎在网络接口设备中的布置。网络接口设备202被设置为在网络201和数据处理***203(例如服务器或桌面计算机)之间传送数据分组。
在第一个例子中,设想情景为HPE实现在NIC 202的接收路径上。这种情况下,NIC包括接收缓存205,从网络接收的数据分组在传送给数据处理***之前被存储在该接收缓存205中。为使接收到的数据分组能被正确地处理,网络接口设备必须处理数据分组的报头。报头携带着网络接口设备需要以便了解如何处理各个分组的信息,包括,例如:分发给特定虚拟接口必需的路由信息、分组遵循的多种协议的参数、校验和等。
接收缓存205中的分组可以被报头处理引擎112访问,以便HPE的报头识别器101和分割器103读取已接收的数据分组的报头(可能通过一个中间缓存)。控制器204表示NIC的处理功能并被配置为根据HPE的输出来处理接收到的数据分组——例如,将有效载荷数据写入数据处理***的存储器中的特定位置并将事件写入事件队列中。
HPE可被配置为执行对接收到的网络数据分组进行适当处理所需要的多种报头处理。例如,HPE对报头进行的处理可以提供网络接口设备需要的信息以便实施将接收到的数据分组(或者至少是它们的有效载荷数据)分发到合适的接收队列中。通常这要求HPE在指示IP地址和端口组合之间的对应关系(以IP数据分组为例)的转发表和接收队列中进行一个或更多个查找。
HPE进行的处理也可以用于增强网络协议。例如,实施防火墙或者防止拒绝服务攻击。
HPE进行的处理也可以包括修改接收到的数据分组的内容,以便进行例如网络地址转换(NAT)的操作,从网络地址到支持多访客操作***的虚拟***所支持的地址空间的转换,或者用作网络之间的交换机或桥接设备的网络接口设备的网络地址转换,会要求这样的操作。
在第二个例子中,设想情景为HPE实现在NIC 202的发送路径中。这种情况下,NIC包括发送缓存205,从数据处理***接收的数据分组在传送给网络之前被存储在该发送缓存205中。NIC可以被配置为执行在将数据分组传送到网络上之前需要进行的任何报头处理。例如,NIC可以被配置为使用HPE 112对数据分组进行过滤和协调以便传输到网络上。只具有部分形成的报头的任何数据分组在被传输到网络上之前必须由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”),将是有利的。随着HR 101解析报头,parser_info字可以逐比特地建立起来。通过将此字提供给FIFO消息缓存,接收/发送(视情况而定)数据路径上的其它处理实体可以使用报头识别器生成的信息。例如,支持HRE的网络接口设备中的校验和卸载引擎可使用由报头识别器解析并形成parser_info字的信息。
报头分割器103通过链路108(可以是简单的FIFO缓存)从报头识别器101接收命令。分割器是具有存储在存储器115中的专用指令集的微处理器,分割器指令由从报头识别器接收到的命令中的跳转矢量指向。响应于各个命令,报头分割器通过使用与命令一起传送的参数来执行与该命令中的指令跳转矢量对应的指令集。分割器执行的指令构成寄存器文件104,该寄存器文件104包括调度器107处理分组报头所需的全部数据。
寄存器文件包括分割器从数据分组报头中读取的数据和分割器根据数据分组报头的内容产生的信息。为了处理数据分组报头的特定层,调度器至少需要报头数据的一部分;对于这些层,来自报头识别器的命令使得分割器对链路109上的数据分组执行指令,该指令读取需要的数据并将其写入寄存器文件。调度器还需要知道数据分组的结构;分割器通过为数据分组在寄存器文件中写入唯一地标识数据分组的成分的分组分类标识符来将结构信息传递给调度器。
分割器生成唯一地标识报头类型和其在数据分组报头中的次序的分组分类标识符。优选地,分割器在保存分割器执行的指令结果的多个寄存器中,形成分组分类标识符。例如,以太网网卡的报头处理引擎具有以下子类寄存器:
mac_class 1比特 在分组具有多播目的MAC地址时设置
eth_base_class 4比特 标识基本以太网报头,例如以太网,LLC
eth_tag_class 4比特 标识任何标记的存在,例如VLAN,VNTag
I3_class 4比特 标识基本以太网之后的下面的协议,例如IPv4,IPv6,
IPv4-fragment,IPv6-fragment,FCoE,ARP
I4_class 4比特 标识第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 (54)
1.一种用于网络接口设备的报头处理引擎,所述网络接口设备具有用于保存各具有一个或更多个报头的一个或更多个数据分组的缓存,所述报头处理引擎包括:
命令存储器;
报头识别器,其被配置为解析存储在所述缓存中的数据分组的报头,以识别所述数据分组中各个报头的类型和位置;
构造器单元,其对所述数据分组的报头进行读取访问;以及
处理器,其包括执行流水线;
所述报头识别器进一步被配置为对各个报头进行以下操作:
(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中的任意一项所述的报头处理引擎,其中所述报头识别器能够操作用于通过检测表示报头类型的一个或更多个预定值来识别所述数据分组中的报头的类型。
28.根据权利要求22-27中的任意一项所述的报头处理引擎,其中所述报头识别器能够操作用于使用所述报头在所述数据分组中的位置来识别所述数据分组中的报头的类型。
29.根据权利要求22-28中的任意一项所述的报头处理引擎,其中所述处理器被配置为,根据为特定数据分组而形成的一个或更多个消息中识别的报头类型,选择存储在所述处理器的指令存储器中的指令集并且使用选定的指令集来处理该数据分组。
30.根据权利要求22-28中的任意一项所述的报头处理引擎,其中所述报头识别器被配置为,根据为特定数据分组而形成的一个或更多个消息中识别的报头类型,选择存储在所述处理器的指令存储器中的指令集并且使得所述处理器使用选定的指令集来处理该数据分组。
31.一种报头处理引擎,用于对存储在缓存中的数据分组的序列进行报头处理,各个所述数据分组具有多个报头,所述报头处理引擎包括:
处理器,其具有执行流水线;以及
预处理器单元,其被配置为解析存储在所述缓存中的数据分组的报头,并且根据所述数据分组中的报头的类型形成标识指令集的数据结构,该数据结构能够操作以使得所述处理器在无需访问存储在所述缓存中的数据分组的情况下对所述数据分组的报头实施处理;其中所述处理器被配置为访问所述数据结构并执行所述指令集以处理所述数据分组的报头。
32.根据权利要求31所述的报头处理引擎,该报头处理引擎进一步包括所述处理器可访问的共享存储器,所述预处理器单元被配置为将所述数据结构写入该共享存储器。
33.根据权利要求31或32所述的报头处理引擎,其中所述数据结构包括所述数据分组的报头的一个或更多个部分。
34.根据权利要求33所述的报头处理引擎,其中所述数据结构只包括一个或更多个所述指令所需要的那些报头部分。
35.根据权利要求31-34中的任意一项所述的报头处理引擎,其中所述预处理器单元被配置为根据所述数据分组中的报头的类型来选择指令集。
36.根据权利要求31-35中的任意一项所述的报头处理引擎,其中所述处理器支持指令存储器并且所述指令集被存储在所述指令存储器中的所述数据结构中标识的位置。
37.根据权利要求31-36中的任意一项所述的报头处理引擎,其中所述预处理器单元被配置为产生分组分类标识符,所述分组分类标识符唯一地表示所述数据分组的报头的类型,所述分组分类标识符被包括在所述数据结构中并且标识供所述处理器执行的所述指令集。
38.根据权利要求37所述的报头处理引擎,其中所述分组分类标识符表示所述处理器的指令存储器中的存储器地址,并且所述处理器被配置为在读取所述分组分类标识符时访问所述存储器地址并开始执行存储在所述存储器地址处的指令。
39.根据权利要求37或38所述的报头处理引擎,其中所述预处理器单元被配置为通过形成对所述数据分组的报头的特定序列的表示并将该表示传递到仅其可用输出对应于有效的报头序列的压缩引擎,来产生所述分组分类标识符,所述压缩引擎的输出是所述分组分类标识符。
40.根据引用权利要求32时的权利要求33-39中的任意一项所述的报头处理引擎,其中所述共享存储器被配置为保存多个数据结构,各个数据结构对应于不同的数据分组的报头。
41.根据权利要求40所述的报头处理引擎,其中所述共享存储器被配置为使得所述预处理器单元和所述处理器能够同时访问不同的数据结构,所述处理器对由所述预处理器单元完成的数据结构进行排他的访问。
42.根据权利要求40或41所述的报头处理引擎,其中所述处理器被配置为,在开始执行一个或更多个使得所述处理器调用不共享所述处理器的执行流水线的功能单元的预定指令时,在与进行调用有关的数据分组相对应的数据结构中存储所述处理器的执行流水线的状态,并且将所述共享存储器中存储的不同数据结构的状态加载到所述处理器的执行流水线中。
43.根据权利要求42所述的报头处理引擎,其中所述处理器被配置为使得响应于对功能单元的调用而返回的数据被写入所述处理器的选定的寄存器中,使得当所述处理器下一次加载与进行调用有关的数据分组相对应的数据结构中存储的状态时,所述数据对执行流水线是可用的。
44.根据权利要求43所述的报头处理引擎,其中所述处理器被配置为,在调用功能单元时,为选定的寄存器设置标记,响应于该调用而返回的数据要写入到所述选定的寄存器中,所述标记防止所述处理器选择该寄存器用于另一个调用。
45.根据权利要求44所述的报头处理引擎,其中所述处理器被配置为,在从选定的寄存器读取数据时,清除所述标记以使得所述处理器能够选择该寄存器用于后续调用。
46.根据权利要求42-45中的任意一项所述的报头处理引擎,其中所述预定指令中的至少一个当被执行时使得所述处理器调用查找引擎、哈希引擎、校验和或CRC计算引擎、加密引擎或者以任意顺序设置的上述引擎的任意组合。
47.根据权利要求40-46中的任意一项所述的报头处理引擎,其中所述处理器被配置为响应于所述指令将由所述处理器执行的处理的相应输出写入各个数据结构中。
48.一种被配置为处理网络数据分组的处理器,该处理器包括:
指令存储器,其存储多个指令序列;
处理器存储器,其用于存储多个指令索引和处理器状态集,各个指令索引标识存储在所述指令存储器中的指令序列,各个状态集对应于指令索引;以及
执行流水线,其能够操作用于使用存储在所述处理器存储器中的对应状态集米执行由指令索引标识的指令序列,指令序列及其对应的状态限定了用于处理特定网络数据分组的执行线程;
所述处理器被配置为能够操作用于在通过执行由第一指令索引标识的指令序列来处理第一网络数据分组时,通过以下步骤来切换执行线程以处理第二网络数据分组:
将所述执行流水线的状态写入所述处理器存储器的第一状态集中;
将第二状态集从所述处理器存储器加载到所述执行流水线中;以及
执行由与所述第二状态集对应的指令索引标识的第二指令序列;
其中所述处理器被配置为在开始执行指令序列中的一个或更多个预定指令时切换执行线程。
49.根据权利要求48所述的处理器,其中所述第一状态集包括第一指令序列中直到已进行了执行的位置的指示。
50.根据权利要求48或49所述的处理器,其中所述预定指令当被执行时使得所述处理器调用不共享所述处理器的执行流水线的功能单元。
51.根据权利要求50所述的处理器,其中在所述处理器中支持所述功能单元。
52.根据权利要求50或51所述的处理器,该处理器进一步包括多个寄存器并被配置为将使得响应于对所述功能单元的调用而返回的数据被写入选定的一个寄存器中。
53.根据权利要求48-52中的任意一项所述的处理器,该处理器被配置为以循环的方式在所述处理器存储器中限定的多个执行线程之间进行切换,并且所述处理器在随后切换回由所述第一状态集和所述第一指令序列所限定的执行线程时,进行以下操作:
将所述执行流水线的状态写入所述处理器存储器中与在所述执行流水线中被执行的指令序列相对应的状态集中;
将所述第一状态集加载到所述执行流水线中;以及
继续执行所述第一指令序列。
54.一种在处理器的执行线程之间进行切换的方法,所述处理器被配置用于处理网络数据分组并且具有执行流水线、存储多个指令序列的指令存储器、以及存储第一指令索引和第二指令索引以及所述处理器的对应的第一状态集和第二状态集的处理器存储器,其中各个指令索引标识存储在所述指令存储器中的指令序列,各个指令序列及其对应的状态限定了用于处理特定网络数据分组的执行线程,所述方法包括以下步骤:
在通过在所述执行流水线上执行由所述第一指令索引标识的指令序列来处理第一网络数据分组期间,暂停所述执行流水线上的执行;
将所述执行流水线的状态写入所述处理器存储器的第一状态集中;
将第二状态集从所述处理器存储器加载到所述执行流水线中;以及
在所述执行流水线上执行由所述第二指令索引标识的指令序列以对第二网络数据分组实施处理。
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 true CN102104541A (zh) | 2011-06-22 |
CN102104541B 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) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973581A (zh) * | 2014-05-08 | 2014-08-06 | 华为技术有限公司 | 一种报文数据处理方法、装置及*** |
CN104184645A (zh) * | 2013-05-27 | 2014-12-03 | 华为技术有限公司 | 一种生成操作请求的方法、设备及*** |
CN105282055A (zh) * | 2014-06-19 | 2016-01-27 | 凯为公司 | 识别网络分组的内部目的地的方法及其装置 |
CN105323164A (zh) * | 2014-06-19 | 2016-02-10 | 凯为公司 | 减少灵活的解析器中的延迟的方法及其装置 |
CN105721356A (zh) * | 2016-02-03 | 2016-06-29 | 华为技术有限公司 | 存储协议头的方法和网络设备 |
WO2017128299A1 (zh) * | 2016-01-29 | 2017-08-03 | 瑞斯康微电子(深圳)有限公司 | 一种基于文件方式的多协议报文解析方法与*** |
CN107534616A (zh) * | 2015-05-20 | 2018-01-02 | 英特尔Ip公司 | 通用串行总线的服务质量 |
CN110113403A (zh) * | 2019-04-28 | 2019-08-09 | 深圳市创维群欣安防科技股份有限公司 | 一种at指令的处理方法、装置和计算机设备 |
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 |
CN111490969A (zh) * | 2019-01-29 | 2020-08-04 | 马维尔以色列(M.I.S.L.)有限公司 | 网络设备中的灵活报头变更 |
CN111684769A (zh) * | 2017-11-06 | 2020-09-18 | 思想***公司 | 包括基于表的动作的匹配处理单元的网络*** |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
CN111771358A (zh) * | 2018-03-01 | 2020-10-13 | 华为技术有限公司 | 包可编程状态集 |
CN112953829A (zh) * | 2019-12-10 | 2021-06-11 | 迈络思科技有限公司 | 网络设备中的灵活解析器 |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US11263158B2 (en) | 2018-02-22 | 2022-03-01 | Pensando Systems Inc. | Programmable computer IO device interface |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8743877B2 (en) * | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
US8634415B2 (en) | 2011-02-16 | 2014-01-21 | Oracle International Corporation | Method and system for routing network traffic for a blade server |
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 |
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 |
US9584424B2 (en) * | 2012-06-29 | 2017-02-28 | Nec Corporation | QOS control system, QOS control method, and program |
US9164771B2 (en) * | 2012-06-29 | 2015-10-20 | Avaya Inc. | Method for thread reduction in a multi-thread packet processor |
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 |
EP2915287B1 (en) | 2012-10-30 | 2018-12-05 | Viavi Solutions Inc. | Method and system for identifying matching packets |
WO2014113055A1 (en) * | 2013-01-17 | 2014-07-24 | Xockets IP, LLC | Offload processor modules for connection to system memory |
US9444914B2 (en) | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
CN105794172B (zh) * | 2013-10-17 | 2019-02-15 | 马维尔国际贸易有限公司 | 网络设备和用于在网络设备中处理报文的方法 |
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 |
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 |
US10609592B2 (en) | 2015-08-20 | 2020-03-31 | Arris Enterprises Llc | Virtual-machine dataplane having fixed interpacket time |
CA3064945C (en) | 2016-08-30 | 2023-03-28 | Arris Enterprises Llc | Virtual-machine dataplane with dhcp-server functionality |
CN110383777B (zh) | 2017-03-28 | 2022-04-08 | 马维尔亚洲私人有限公司 | 端口扩展器设备的灵活处理器 |
US10999303B2 (en) | 2017-03-31 | 2021-05-04 | Xilinx, Inc. | Capturing data |
US10868893B2 (en) | 2017-03-31 | 2020-12-15 | Xilinx, Inc. | Network interface device |
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 |
US11537541B2 (en) | 2018-09-28 | 2022-12-27 | Xilinx, Inc. | Network interface device and host processing device |
US11570045B2 (en) * | 2018-09-28 | 2023-01-31 | Xilinx, Inc. | Network interface device |
US11012411B2 (en) | 2018-11-05 | 2021-05-18 | Xilinx, Inc. | Network interface device |
US11792686B2 (en) * | 2019-06-19 | 2023-10-17 | Qualcomm Incorporated | High bandwidth low latency cellular traffic awareness |
US11550715B2 (en) * | 2020-08-16 | 2023-01-10 | Mellanox Technologies, Ltd. | Virtual splitting of memories |
Citations (5)
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 |
US20030007489A1 (en) * | 2001-07-09 | 2003-01-09 | Ram Krishnan | Data extraction system for packet analysis |
EP1315357A2 (en) * | 2001-11-21 | 2003-05-28 | Alcatel Canada Inc. | Apparatus and method for header processing |
US20050165985A1 (en) * | 2003-12-29 | 2005-07-28 | Vangal Sriram R. | Network protocol processor |
CN1695363A (zh) * | 2002-09-03 | 2005-11-09 | 英特尔公司 | 为分组处理确定时钟信号的方法和*** |
Family Cites Families (148)
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 |
CA2356947A1 (en) | 1998-12-23 | 2000-07-06 | 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 |
AU7036400A (en) | 1999-09-08 | 2001-04-10 | Mellanox Technologies Ltd. | Synchronization of interrupts with data packets |
WO2001048919A1 (en) | 1999-12-28 | 2001-07-05 | Mellanox Technologies Ltd. | Variable delay generator |
US8300534B2 (en) * | 2000-05-24 | 2012-10-30 | Alcatel Lucent | Programmable packet processor with flow resolution logic |
US7103626B1 (en) | 2000-05-24 | 2006-09-05 | Hewlett-Packard Development, L.P. | Partitioning in distributed computer system |
US7216225B2 (en) | 2000-05-24 | 2007-05-08 | Voltaire Ltd. | Filtered application-to-application communication |
AU6420001A (en) | 2000-06-02 | 2001-12-11 | 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 |
JP2004526218A (ja) | 2000-08-24 | 2004-08-26 | ボルテール アドバンスト データ セキュリティ リミテッド | 相互接続されたファブリックにおける高度にスケーラブルで高速のコンテンツ・ベース・フィルタリング及び負荷均衡化システム及び方法 |
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 |
US7290162B2 (en) * | 2001-02-14 | 2007-10-30 | Clearspeed Solutions Limited | Clock distribution system |
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 |
US7543290B2 (en) | 2001-04-11 | 2009-06-02 | Mellanox Technologies Ltd. | Multiple queue pair access with single doorbell |
US20020152328A1 (en) | 2001-04-11 | 2002-10-17 | Mellanox Technologies, Ltd. | Network adapter with shared database for message context information |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US6901052B2 (en) | 2001-05-04 | 2005-05-31 | Slt Logic Llc | System and method for policing multiple data flows and multi-protocol data flows |
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 |
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 |
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 |
US7228550B1 (en) | 2002-01-07 | 2007-06-05 | Slt Logic, Llc | System and method for making communication streams available to processes executing under control of an operating system but without the intervention of the operating system |
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 |
US7386619B1 (en) | 2003-01-06 | 2008-06-10 | Slt Logic, Llc | System and method for allocating communications to processors in a multiprocessor system |
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 |
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 |
US7502826B2 (en) | 2003-03-27 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Atomic operations |
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 |
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 |
US7496903B2 (en) | 2003-08-12 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Synthesizing application response measurement (ARM) instrumentation |
US7484209B2 (en) | 2003-08-12 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Instrumenting java code by modifying bytecodes |
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 |
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 |
US20050219278A1 (en) | 2004-03-30 | 2005-10-06 | Hudson Kevin R | Image formation with a flexible number of passes |
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 |
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 |
EP3217285B1 (en) | 2005-03-10 | 2021-04-28 | Xilinx, Inc. | Transmitting data |
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 |
US7285996B2 (en) | 2005-09-30 | 2007-10-23 | Slt Logic, Llc | Delay-locked loop |
US7813460B2 (en) | 2005-09-30 | 2010-10-12 | Slt Logic, Llc | High-speed data sampler with input threshold adjustment |
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 |
US8948199B2 (en) | 2006-08-30 | 2015-02-03 | Mellanox Technologies Ltd. | Fibre channel processing by a host channel adapter |
US7801027B2 (en) | 2006-08-30 | 2010-09-21 | Mellanox Technologies Ltd. | Auto-negotiation by nodes on an infiniband fabric |
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 |
US7848322B2 (en) | 2007-03-26 | 2010-12-07 | Voltaire Ltd. | Device, system and method of UDP communication |
US7864787B2 (en) | 2007-03-26 | 2011-01-04 | Voltaire Ltd. | Device, system and method of multicast communication |
US7856488B2 (en) | 2007-03-30 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Electronic device profile migration |
WO2008127672A2 (en) | 2007-04-11 | 2008-10-23 | Slt Logic Llc | Modular blade for providing scalable mechanical, electrical and environmental functionality in the enterprise using advanced tca 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 | 日本電気株式会社 | 通信システム、中継伝送装置、ルータ装置及び通信方法 |
KR101408390B1 (ko) | 2008-04-28 | 2014-06-17 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 데이터 전송 레이트 모니터 및 최대 데이터 전송 레이트 제어 방법 |
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 |
CN102369697B (zh) | 2009-01-29 | 2016-03-16 | 惠普开发有限公司 | 基于不同的操作模式把一个或多个电子装置的端口连接到网络的不同子集 |
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 |
WO2011043769A1 (en) | 2009-10-07 | 2011-04-14 | Hewlett-Packard Development Company, L.P. | Notification protocol based endpoint caching of host memory |
US8576715B2 (en) | 2009-10-26 | 2013-11-05 | Mellanox Technologies Ltd. | High-performance adaptive routing |
US20120039036A1 (en) | 2009-10-30 | 2012-02-16 | Krause Michael R | Thermal bus bar for a blade enclosure |
CN102576313A (zh) | 2009-11-02 | 2012-07-11 | 惠普发展公司,有限责任合伙企业 | 采用分布式嵌入式切换的多处理计算 |
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 (5)
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 |
US20030007489A1 (en) * | 2001-07-09 | 2003-01-09 | Ram Krishnan | Data extraction system for packet analysis |
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 | 英特尔公司 | 为分组处理确定时钟信号的方法和*** |
US20050165985A1 (en) * | 2003-12-29 | 2005-07-28 | Vangal Sriram R. | Network protocol processor |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184645B (zh) * | 2013-05-27 | 2018-05-04 | 华为技术有限公司 | 一种生成操作请求的方法、设备及*** |
CN104184645A (zh) * | 2013-05-27 | 2014-12-03 | 华为技术有限公司 | 一种生成操作请求的方法、设备及*** |
WO2014190869A1 (zh) * | 2013-05-27 | 2014-12-04 | 华为技术有限公司 | 一种生成操作请求的方法、设备及*** |
US11337211B2 (en) | 2013-05-27 | 2022-05-17 | Huawei Technologies Co., Ltd. | Operation request generating method, device, and system |
US10484987B2 (en) | 2013-05-27 | 2019-11-19 | Huawei Technologies Co., Ltd. | Operation request generating method, device, and system |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
CN103973581B (zh) * | 2014-05-08 | 2017-04-12 | 华为技术有限公司 | 一种报文数据处理方法、装置及*** |
US10339091B2 (en) | 2014-05-08 | 2019-07-02 | Huawei Technologies Co., Ltd. | Packet data processing method, apparatus, and system |
CN103973581A (zh) * | 2014-05-08 | 2014-08-06 | 华为技术有限公司 | 一种报文数据处理方法、装置及*** |
WO2015169053A1 (zh) * | 2014-05-08 | 2015-11-12 | 华为技术有限公司 | 一种报文数据处理方法、装置及*** |
CN105282055A (zh) * | 2014-06-19 | 2016-01-27 | 凯为公司 | 识别网络分组的内部目的地的方法及其装置 |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN105282055B (zh) * | 2014-06-19 | 2020-10-23 | 马维尔亚洲私人有限公司 | 识别网络分组的内部目的地的方法及其装置 |
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 |
CN105323164B (zh) * | 2014-06-19 | 2020-09-08 | 马维尔亚洲私人有限公司 | 减少灵活的解析器中的延迟的方法及其装置 |
CN105323164A (zh) * | 2014-06-19 | 2016-02-10 | 凯为公司 | 减少灵活的解析器中的延迟的方法及其装置 |
US11799989B2 (en) | 2014-06-19 | 2023-10-24 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN107534616B (zh) * | 2015-05-20 | 2022-02-22 | 英特尔公司 | 通用串行总线的服务质量 |
CN107534616A (zh) * | 2015-05-20 | 2018-01-02 | 英特尔Ip公司 | 通用串行总线的服务质量 |
WO2017128299A1 (zh) * | 2016-01-29 | 2017-08-03 | 瑞斯康微电子(深圳)有限公司 | 一种基于文件方式的多协议报文解析方法与*** |
CN105721356B (zh) * | 2016-02-03 | 2019-05-10 | 华为技术有限公司 | 存储协议头的方法和网络设备 |
CN105721356A (zh) * | 2016-02-03 | 2016-06-29 | 华为技术有限公司 | 存储协议头的方法和网络设备 |
CN111684769A (zh) * | 2017-11-06 | 2020-09-18 | 思想***公司 | 包括基于表的动作的匹配处理单元的网络*** |
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 |
CN111771358A (zh) * | 2018-03-01 | 2020-10-13 | 华为技术有限公司 | 包可编程状态集 |
CN111771358B (zh) * | 2018-03-01 | 2022-01-11 | 华为技术有限公司 | 包可编程状态集 |
US12047477B2 (en) | 2018-03-01 | 2024-07-23 | Huawei Technologies Co., Ltd. | Packet-programmable statelets |
CN111490969A (zh) * | 2019-01-29 | 2020-08-04 | 马维尔以色列(M.I.S.L.)有限公司 | 网络设备中的灵活报头变更 |
CN110113403B (zh) * | 2019-04-28 | 2021-12-28 | 深圳创维数字技术有限公司 | 一种at指令的处理方法、装置和计算机设备 |
CN110113403A (zh) * | 2019-04-28 | 2019-08-09 | 深圳市创维群欣安防科技股份有限公司 | 一种at指令的处理方法、装置和计算机设备 |
CN112953829B (zh) * | 2019-12-10 | 2022-09-13 | 迈络思科技有限公司 | 网络设备中的灵活解析器 |
CN112953829A (zh) * | 2019-12-10 | 2021-06-11 | 迈络思科技有限公司 | 网络设备中的灵活解析器 |
Also Published As
Publication number | Publication date |
---|---|
US20110149966A1 (en) | 2011-06-23 |
US20140233571A1 (en) | 2014-08-21 |
US8743877B2 (en) | 2014-06-03 |
CN102104541B (zh) | 2016-04-13 |
EP2337305B1 (en) | 2018-01-24 |
US9124539B2 (en) | 2015-09-01 |
EP2337305A2 (en) | 2011-06-22 |
EP2337305A3 (en) | 2011-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102104541A (zh) | 报头处理引擎 | |
US9385957B1 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
US7885260B2 (en) | Determining packet forwarding information for packets sent from a protocol offload engine in a packet switching device | |
US8713169B2 (en) | Distributed IPv6 neighbor discovery for large datacenter switching systems | |
US10673756B2 (en) | Method and network device for handling packets in a network by means of forwarding tables | |
CN102377640B (zh) | 一种报文处理装置和报文处理方法、及预处理器 | |
CN101573913A (zh) | 用于多播路由选择的方法和设备 | |
US10122735B1 (en) | Switch having dynamic bypass per flow | |
TWI360978B (en) | Network message processing using inverse pattern m | |
CN103685058B (zh) | 控制流数据的服务质量的方法和OpenFlow控制器 | |
EP2924929A1 (en) | Processing packets by generating machine code from pre-compiled code fragments | |
US20040246956A1 (en) | Parallel packet receiving, routing and forwarding | |
WO2014057977A1 (ja) | 通信ノード、通信システム、制御装置、パケット転送方法及びプログラム | |
CN101577680B (zh) | 一种隧道路由信息的更新方法、装置及*** | |
JP2006295550A (ja) | パケット転送装置 | |
CN105450527B (zh) | 处理报文、发送信息、接收信息的方法及装置 | |
US20190044808A1 (en) | Configuration templates based switch | |
US11314711B2 (en) | Network switch with network analysis data producer-consumer shared memory | |
US8139583B1 (en) | Command selection in a packet forwarding device | |
JP5359357B2 (ja) | パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム | |
JP4443266B2 (ja) | パケット更新装置 | |
JP6018872B2 (ja) | 通信装置、及び、通信装置における転送情報管理方法 | |
CN117376232A (zh) | 报文传输方法、装置及*** | |
CN102130836A (zh) | 一种报文转发反向通知三层协议的方法及*** | |
CN109729026A (zh) | 一种sdn网络的控制方法和sdn控制器 |
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 |
Effective date of registration: 20191220 Address after: California, USA Patentee after: XILINX INC Address before: California, USA Patentee before: Solarflare Comm Inc. |
|
TR01 | Transfer of patent right |