CN103415836B - 加速数据包解析的网络处理器及方法 - Google Patents
加速数据包解析的网络处理器及方法 Download PDFInfo
- Publication number
- CN103415836B CN103415836B CN201180060182.6A CN201180060182A CN103415836B CN 103415836 B CN103415836 B CN 103415836B CN 201180060182 A CN201180060182 A CN 201180060182A CN 103415836 B CN103415836 B CN 103415836B
- Authority
- CN
- China
- Prior art keywords
- rule
- packet
- data
- resolver
- parser
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种包括解析器的网络处理器,解析器可操作为工作在正常操作状态或重复操作状态,正常操作状态的解析器分别在第一和第二工作周期中加载和执行至少一个规则,重复操作状态的解析器可操作为重复地执行重复指令,每个重复的执行对应于一个工作周期。
Description
技术领域
本发明一般涉及网络处的领域,且更特别地涉及通过利用解析器而加速数据包解析的网络处理器及方法。
背景技术
由于数据密集应用的增加使用(例如经由互联网的网络电话(Voice-over-IP)或视频流),可操作以在不到一秒的时间内传送与处理大量数据包的通信链路(例如光学或铜缆线)与数据处理单元是需要的。支持该数据密集应用的数据包处理需要巨大的运算电力,且对于处理电力的需求对于管理因特网流量来说持续成长。开发了新型的专用处理器(所谓的“网络处理器”),其特别适于管理与处理将经由网络(特别是因特网)传送的数据包。
在过去,网络处理器被建构为通用处理器(GPP)或专用集成电路(ASIC)。尽管GPP提供高灵活性,但是它们尚未针对关于网络处理的需求而被特殊地设计,且因此通常太慢。相反的,ASIC是已经针对处理将经由网络被传送的数据包的特殊需求被设计的集成电路(IC)。ASIC因此能够非常快速且有效率地解决它们的特殊工作,但它们是昂贵且不灵活的。
通过网络处理器处理数据包通常包括解析步骤,其中网络处理器的解析器提取与分析包报头与字段的内容,且传送已解析的包或其部分至其它网络处理器部件。可编程解析器的速度通常由解析器加载指令且执行该指令所需的时间来决定。通过增加逻辑储存及/或执行解析指令的时钟频率,解析性能通常可被增加。前述方法需要更强大且昂贵的硬件,且导致增加的功率消耗,在经济与生态学方面是不受欢迎的结果。
发明内容
本发明的具体实施例的目的是提供改善的网络处理器与方法,其通过网络处理器的解析器来增加解析数据包的性能,特别是在数吉比特(gigabit)网络的背景中。
本发明的具体实施例根据该观察:解析步骤通常可归类为两个种类,也即,a)分析数据包的字段且根据该分析结果而作出解析判断的步骤,及b)没有作出任何解析判断而执行功能的步骤;种类a)的步骤可包括分析数据包的IP报头字段,且在该解析器判定该所分析字段的值等于“06”(其表示TCP协议)的情况下跳至TCP解析。种类b)的步骤可包括例如步骤:累加IP报头的源地址(SA)或目的地地址(DA)字段上的校验和(checksum)、转送数据包或它的一部分至目的地网络处理器部件等等。
种类b)的步骤可被执行单次或者可重复地被执行。“重复”的数量(也即,执行该功能的数量)被动态地决定。取决于具体实施例,重复的数量可被判定为由该解析器执行种类a)的步骤的结果。在某些情况下,该解析器可判定出根本没有重复要被执行。
计算机实施的指令(其可(但不为必须)被该解析器重复地执行)在下文中称为“重复指令”。通过再次使用重复指令(其已经被加载至执行解析器指令的处理单元的一个或多个寄存器),需要用于加载所述重复指令的时钟周期可被避免。
本发明的具体实施例根据如下观察:将被执行的重复周期的数量的判定(当由现存网络处理器结构施行时)可能消耗额外的时钟周期。在本发明的具体实施例的有利态样中,解决方案(其不会消耗额外的时钟周期)被提供用于该任务,藉此进一步减少需要用于解析与处理一组数据包的时钟周期的数量。
在有利态样中,本发明的具体实施例提供网络处理器与用于操作该网络处理器的方法,其增加数据包解析的速度而不需使用具有增加的时钟周期频率的更昂贵的硬件。
在本发明的具体实施例的另一有利态样中,网络处理器与用于操作该网络处理器的方法被提供,其灵活地适用于许多不同的数据包协议与格式,且适用于许多不同的网络处理器硬件架构。
在本发明的具体实施例的另一有利态样中,网络处理器与用于操作该网络处理器的方法被提供,其通过解析器来补充硬件层级的性能而且同时是高度灵活且快速的,该解析器可操作执行灵活的、适应性强的计算机可解译的指令,所述指令为软件的形式(也即,用程序语言所写的指令的形式)。
定义
在此所用的“网络处理器”为集成电路,其具有特别着眼于网络应用领域的特征组。网络处理器通常由多个不同的、相连的处理与存储器单元组成。网络处理器为许多不同类型的网络设备(例如路由器、交换机、防火墙、会话边界控制器等等)的部件。
如在此所用的“规则”为一组计算机可解译指令,其规定了一个或多个数据包如何被处理。根据本发明的具体实施例的规则为具有至少两个逻辑部分(if子句与then子句)的计算机可解译声明,其中,该then子句仅在该if子句传回布尔值为“真”的情况中被执行。
在此所用的“规则储存库(rulesrepository)”为已储存多个规则的任何易失性或非易失性计算机可读取的数据储存介质。
在此所用的术语“动作机(actionmachine)”指硬件加速器,其为该网络处理器的一部分。动作机处理数据包的已选择部分,且支持多个功能(例如包解析与分类、高速模式搜寻、校验和计算等等)。
在此所用的术语“网络处理器单元(picoprocessor)”指尺寸缩小的RISC处理器。根据一些具体实施例的网络处理器单元包括每一线程十六个32位或三十二个16位的通用寄存器及一个周期算术逻辑单元(one-cyclearithmetic-logicalunit,ALU),该算术逻辑单元支持指令集(其包括例如二进制加与减、逐位逻辑AND、OR与NOT操作、比较操作、计数功能、逻辑或算术向左与向右移位、位操作命令等等)。
在此所用的“重复指令(repeat-instruction)”为任何种类的计算机可解译指令,其可由网络处理器的解析器重复地执行。取决于硬件环境,该重复指令可以任何种类的程序语言(像是例如ASSEMBLER或C)及以任何种类的较高阶数据结构来实施,例如以规则的形式。
在此所用的“包指针(packetpointer)”为存储器地址,该存储器地址指向包的特定位或字节。
在此所用的术语“工作周期(workingcycle)”指工作的逻辑单位。取决于具体实施例且特别是取决于用于具体实施例中的网络处理器的硬件架构,每个工作周期可恰好地对应于一个时钟周期或对应于n个时钟周期,其中n为大于1的整数。
在此所用的措辞“已加载数据(loadeddata)”指处理器可取得且不任何额外的时钟周期来加载该数据的任何数据(包括计算机可解译指令)。“已加载数据”可被储存于例如处理器的一个或多个寄存器中,或可为处理器的内建指令集的一部分。
在一种态样中,本发明的具体实施例包括网络处理器,该网络处理器包括规则储存库与解析器。该规则储存库可为任何种类的数据储存器(例如暂态或非暂态的储存介质),其为该网络处理器的一部分或操作性地耦合至该网络处理器。根据多个具体实施例,该规则储存库可为该解析器的一部分或操作性地耦合至该解析器。规则储存库可被实施为例如关系数据库、数据储存器(包括一个或多个文件,所述文件包括一个或多个规则)、数据储存器(包括串联化数据格式的多个规则)等等。该规则储存库可包括多个规则。该解析器包括一个或多个处理单元,所述处理单元执行已由该解析器从该规则储存库加载的一个或多个规则。取决于该具体实施例,该一个或多个处理单元可被具体实施例如为网络处理器单元。
该解析器可操作以至少工作在“正常操作模式”中与在“重复操作模式”中。在正常操作模式中,该解析器可操作以在第一工作周期中从该规则储存库加载至少一个规则。在正常操作模式中,该解析器也可操作以在第二工作周期中对数据包执行该至少一个已加载规则,藉此分析该数据包,其中,由该解析器产生分析结果。
在重复操作模式中,该解析器可操作以在一个或多个重复的每一个中再应用重复指令于该数据包。每个重复由该解析器在一个第二工作周期中执行。执行用于加载该重复指令的该第一工作周期在重复操作模式中是不必要的,且因此在该解析器的重复操作模式中不执行。该解析器可操作以根据该分析结果而从正常操作模式动态地切换至重复操作模式。取决于该分析结果,该解析器也可类似地留在正常操作模式中。
该解析器通过评估已加载数据而动态地判定在该重复操作模式中将被执行的多个重复的数量。该已加载数据是任何数据或指令(在进入重复操作模式的时点,其立即可用于该一个或多个处理单元的执行,所述处理单元执行该解析器的指令)。该术语“立即”藉此暗示:不需要额外的时钟周期来加载该数据或指令。
根据具体实施例,该分析结果为比较该数据包的一个或多个位或字节与该至少一个已加载规则的一个或多个位或字节的结果。
该解析器根据具体实施例包括一组一个或多个可程式网络处理器单元,其可操作以执行已从该规则储存库加载的一个或多个规则。所述规则包括用于解析数据包的计算机可解译指令。在此所用的解析是判定数据包的结构及处理其内容的过程。该解析器是“可编程的”,因为所述规则可容易地适应于所处理的数据包类型的任何改变或适应于根据关于处理工作流程的新需求的任何改变。包括所述网络处理器单元(执行所述规则)的该解析器可被叙述为有限状态机。根据一些具体实施例,该解析器的所述网络处理器单元进一步包括指令集(其是所述网络处理器单元的集成部分,且立即可用于所述网络处理器单元的执行而不需要任何额外的加载步骤)。
根据具体实施例,“工作周期”为步骤序列,当被执行时,可导致该解析器的状态转变,该解析器被叙述为有限状态机。根据本发明的具体实施例,该解析器被实施为有限状态机,其可操作以动态地切换于“重复操作模式”(其中,状态转变在每个单个工作周期的执行之后完成)与“正常操作模式”(其中,状态转变发生于每个第二工作周期)之间。
根据本发明的一些具体实施例,该解析器用以判定重复的数量的该已加载数据可为下面的至少至少一个:a)包括在规则中的数据,其在第一区段中包括所述重复指令且其在该规则的另一区段中包括将由所述重复指令执行的重复的数量;b)包括在数据包的区段中的数据(例如在该数据包的报头中),其指示了例如该数据包的载荷区段的长度,其可由该解析器用于判定将被执行的重复的数量。
根据本发明的多个具体实施例,通过执行下面步骤,解析器动态地判定在重复操作模式中将被执行的该一个或多个重复的数量:
-读取以已加载规则编码的重复数量,例如在该规则的特定“RC”字段中;
-调用在已加载规则中所确定的例程,该所调用例程动态地计算将被执行的重复的数量(例如通过分析该数据包)。根据优选具体实施例,该所调用例程为执行解析器指令的一个或多个处理单元的指令集的一部分,或
-从该数据包读取该重复计数。
所述步骤可由该解析器的特定重复控制单元软件模块执行。所述术语“程序例程”与“程序代码”在此同义地使用。
根据本发明的具体实施例,用于动态地判定重复的数量的例程为一个或多个处理单元(其执行该解析器的指令)的指令集的一部分,例如为加载至该解析器的一个或多个规则的一部分的指令。因为该例程是所述处理单元的指令集的一部分,它不需要被加载;该例程立即可用而不需要加载步骤。根据优选具体实施例,该一个或多个处理单元为网络处理器单元。
根据优选具体实施例,在已经在重复操作模式中执行了针对该重复指令将被执行的所有重复之后,该解析器自动切换回正常操作模式。
根据优选具体实施例,在该解析器进入重复操作模式之前,在重复操作模式中所执行的所述重复指令已被加载至一个或多个处理单元的寄存器。例如,所述重复指令可被实施为规则的一部分或扩展,该规则在该解析器的正常操作模式中所执行的工作周期中已经被加载。
本发明的具体实施例的高度有利特征在于:该解析器不需要额外的工作周期来判定在重复操作模式中被执行的重复的数量,因为在该解析器进入重复操作模式的时点,用于动态地判定该数量的指令或重复的数量已经可用(也即,已被加载至执行该解析器指令的处理单元的寄存器中,或者为所述处理单元的指令集的一部分)。
根据本发明的进一步具体实施例,该网络处理器另包括一个或多个动作机,用于在重复操作模式中执行所述重复指令及处理数据包,包括将该数据包的一个或多个部分推送一个或多个动作机。
根据本发明的进一步的具体实施例,在正常操作模式中执行该至少一个已加载规则也可包括:将数据包的一个或多个部分推送该一个或多个动作机,或执行任何其它需要被重复执行的数据处理步骤。
根据进一步的具体实施例,将由该解析器执行的所述重复操作模式指令被实施为该已加载的至少一个规则的一部分,或被实施为该至少一个规则的扩展。根据具体实施例,该解析器加载多个第一规则,且所述重复指令被实施为所述已加载的第一规则中的一个的一部分,其中,该一个第一规则为包括与该数据包的被选择组的多个位或字节相同的多个位或字节的规则。根据具体实施例,该一个第一规则的所述位或字节与该数据包的所述位或字节相同被返回为该分析结果或该分析结果的一部分。
根据进一步的具体实施例,该规则储存库的规则包括至少第一及第二规则类型的规则。
各规则类型由该规则中所包括的一个或多个数据值所指示及规定。属于该第一规则类型(也即,该“正常规则类型”)的各规则由该解析器在正常操作模式中执行。当属于该第二规则类型(也即,该“重复规则类型”)的各规则在一组一个或多个重复的第一个重复中被执行时,该规则由该解析器在正常操作模式中执行,或者该规则是在该一个或多个重复的第m个重复中在重复操作模式中被执行(m为大于1的整数)。
根据进一步的具体实施例,将由该解析器执行的重复指令被实施为规则的一部分或规则的扩展,其包括重复规则类型识别符,该规则类型识别符指示是否该规则包括或指示将可由该解析器在重复操作模式中重复执行的重复指令。当分析数据包且判定要加载哪组规则以用于该后续的工作周期时,该重复操作模式识别符可被该解析器使用。
根据进一步的具体实施例,至少一些规则包括用于该数据包的分析中的输入向量及输出向量,其中,输出向量为占位符(placeholder),用于根据该分析结果而储存该已分析的数据包的一部分。该输入向量为用于数据的占位符,且包括“相等比较屏蔽”字段及“相等比较值”字段,该“相等比较值”字段包括将与该数据包的特定位置处的数据的多个位相比较的数据的多个位,其中,如果该“相等比较屏蔽”字段指定包括于该“相等比较值”字段中的数据的一个或多个位的屏蔽,包括于该“相等比较值”字段中的数据的一个或多个位就被排除于比较。例如,如果该相等比较屏蔽字段在该字段的第9位位置处包括“1”位,则该相等比较值字段的第9位可被屏蔽且不被用于比较。
根据进一步的具体实施例,在该解析器开始在重复操作模式中执行该重复指令之前或的时候,计算重复的数量的例程(将由该解析器在重复操作模式中执行)被执行。
根据进一步的具体实施例,通过比较包括于该数据包的报头字段中的数据与包括于该已加载的规则的该相等比较值字段中的数据,用以转送或处理该数据包的至少一个协议被识别。
根据进一步的具体实施例,该数据包包括封套区段与载荷区段。第一组的规则被该解析器加载且使用,以在第一工作周期中分析该数据包的该封套区段。作为对该数据包执行所述规则(其为用于执行分析步骤以传回解析判断的一个范例)的结果,第二组的规则被该解析器判定将由该解析器在后续的工作周期中加载。该第二组的规则将被用于处理该数据包的该载荷区段,其中,该处理可包括一个或多个重复,各重复将在对应的工作周期中被执行。根据具体实施例,该第二组的规则的至少一个规则为重复规则,其包括重复指令或重复指令的识别符(其为所述网络处理器单元的指令集的集成部分),该重复指令将被该解析器重复地在该数据包上执行。
在此所用的“解析判断”为处理操作,其由该解析器通过评估数据包的一个或多个字节(特别是包括于该数据包的一报头字段中的多个位与字节)来执行,以判定该数据包在后续的解析步骤中将如何被处理。通常,该解析判断包括复杂的操作,且在运算能力方面可能是高要求的。
根据进一步的具体实施例,该数据包包括两个或更多嵌套数据层,各数据层由封套与载荷区段组成,其中,第一数据层的载荷区段包括第二数据层的封套与载荷区段。通过该至少一个第一规则来分析被包括于该第一数据层的封套中的数据值,判定加载一个或多个第二规则(其可操作以处理包括于该第二数据层中的数据)的步骤。
在此所用的在数据包中的“层”可能相关于数据通信的不同层,特别是根据该OSI概要所分类的特定层,例如L2-L4OSI层。不同的数据传输协议与数据格式可用于储存将经由网络而传送至其它应用的数据包中的数据。各个层可包括两类型的数据:“封套”数据与“载荷”数据。在此所用的封套数据包括元信息(meta-information),其可被网络装置(例如路由器或交换机等)用来管理数据包且将数据包再导向合适的接收方。数据包的“封套”区段通常(但不必须)为包括于数据包中且包括元信息的数据的线性同调区段,该元信息指示了:包括于该载荷区段中的数据应该如何被处理,且该数据包应该被送往哪个目的地。通常,该元数据以数据包的数据层的报头区段的形式被储存。
例如,数据包的第一层的载荷区段包括第一数据层的第一载荷数据。该第一载荷数据可由第二数据层的封套区段与载荷区段组成。该第二载荷区段可由第三数据层的封套区段与载荷区段组成,以此类推。根据各层的特定数据格式,可组织包括于各数据层中的数据。
根据本发明的具体实施例,根据不同组的规则串,可能处理包括多个嵌套数据层的数据包,其中,各组规则可操作以分析及处理一个对应数据层的至少封套区段。第一组的规则可适于分析第一数据层的封套,且可允许该解析器决定可操作以分析第二数据层的至少封套区段的第二组规则,该第二数据层的封套区段与载荷区段被包括在第一数据层的载荷区段中。分析第三数据层的封套可能需要第三组规则的加载..等等。
根据又进一步的具体实施例,重复的数量由该解析器执行程序例程来决定,该程序例程选自如下组,该组包括:
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到解析器到达该数据包的预定区段的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到解析器到达IPv4报头的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到解析器到达IPv6扩展报头(410)的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到解析器到达TCP报头(405)的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到解析器到达层4载荷的最后字节位置;及
程序代码,其使处于重复操作模式的解析器执行该重复指令,直到该已分析的数据包(401)的最后字节位置。
该最后选项可作用为“退路解析策略”:在该数据包的格式不能被检测的情况下,此程序代码确保该数据包仍然被处理。
通过执行该重复指令而判定由该解析器所执行的重复的数量不被认为是“解析判断”。根据本发明的具体实施例,被执行的重复的数量的判定在运算上并不昂贵,因为规定了如下的程序代码,其使处于重复操作模式中的该解析器执行该重复指令,直到到达该数据包的特定区段的最后字节位置,上述程序代码是根据具体实施例被作为所述处理单元(例如所述网络处理器单元)的该指令集的集成部分的程序代码规定的,且因此立即可用于执行。通常,判定重复的数量在运算上需要低廉,因为将被处理的数据包区段的长度是固定的(取决于该区段的类型)、已知长度或可被容易地判定。给定在一个重复中所处理的特定组的位或字节,根据每个重复指令所处理的位或字节的数量且给定在重复操作模式中所处理的数据包的区段长度,将被执行的重复的数量通常可容易且快速地被计算。
根据具体实施例,该程序代码(其使处于重复操作模式中的该解析器执行重复指令,直到该解析器到达该数据包中的特定位置)可为该解析器的处理单元的指令集的一部分或可为该解析器已经加载的一个或多个规则的一部分。
根据具体实施例,该程序代码包括该重复指令本身与用于判定重复的数量的指令。例如,该程序代码可包括该重复指令的一个副本与终止条件。该程序代码需要的话也可包括该重复指令的许多副本,以处理预定的、已知大小的数据包字段。根据又进一步的具体实施例,该重复指令可被储存于一个或多个已加载的规则上,所述规则进一步包括用于程序代码的识别符,当该程序代码被执行时会传回数值且该程序代码仅用于判定将被执行的重复的数量。根据本发明的具体实施例,解析器可使用一个或多个的该实施变型,例如通过组合地使用不同规则与不同种类的程序代码(该程序代码为所述处理单元的指令集的一部分)。
根据进一步的具体实施例,解析器在重复操作模式中执行重复指令期间可操作以读取及使用包指针,所述包指针在所述重复指令的执行期间动态地更新。该包指针指向该数据包的数据的区段的起始,该数据包将由该解析器根据所述重复指令在一个重复中处理。
根据具体实施例,该解析器包括至少一个包指针,其指示该解析器目前正在工作的第1位或字节的位置。通过动态地更新至少一个包指针,该解析器总是可以判定出在下个工作周期中将被处理的数据包的数据区段的起始位置。例如,该解析器可重复地推送数据包的多个4字节块至网络处理器的其它硬件部件,例如至动作机。在推送4字节块至该动作机的每个步骤时,该包指针增加4字节,且因此指向在下个工作周期中将被推送至该动作机的4字节块的起始。
根据进一步的具体实施例,解析器所加载的各规则对应于至少一个包指针中的一个。根据进一步的具体实施例,各包指针指向在该数据包中的一组相邻位的第一位。在解析器的重复操作模式中所执行的各工作周期中,该一组或多组相邻位中的一个被传输至所述动作机。
在进一步态样中,本发明的具体实施例关于由网络处理器执行的用于加速数据包解析的方法,该方法包括:
通过解析器在第一工作周期中从规则储存库加载至少一个规则,该规则储存库包括多个规则,该解析器操作于正常操作模式;
在正常操作模式中,在第二工作周期中对数据包执行该至少一个已加载规则以分析该数据包,由此产生分析结果;
在解析器的正常操作模式和重复操作模式之间动态地切换,该切换根据该分析结果而执行;
在解析器切换至重复操作模式的情况中,在一个或多个重复的每一个中对该数据包再次应用重复指令,每个重复在一个第二工作周期中执行,其中,不需要并跳过在重复操作模式中用于加载所述重复指令的第一工作周期的执行,且其中,解析器通过评估已加载数据而动态地判定在该重复操作模式中将被执行的重复的数量,该已加载数据是下面的至少一个:
作为该已加载的至少一个规则的一部分的数据,以及
■作为该数据包的一部分的数据。
之前已经针对该网络处理器的各种具体实施例叙述了用于加速数据包解析的该方法的具体实施例。
在进一步态样中,本发明关于计算机可读取的非暂态储存介质,其包括多个指令,当所述指令由处理装置执行时,所述指令执行操作根据任何上述具体实施例的网络处理器的该方法的步骤。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。
本发明的态样参照根据本发明的具体实施例的方法、设备(系统)、与计算机程序产品的方块图及/或流程图图标而在下面叙述。将了解到,所述流程图图标及/或方块图的各方块及在所述流程图图标及/或方块图中的方块的组合可通过计算机程序指令来实施,且可通过处理器(例如一个或多个网络处理器单元)来处理。这些计算机程序指令可被实施为规则储存库的规则,且实施为界定该解析器的所述功能单元的程序指令。所述计算机程序指令可被储存在计算机可读取介质中,其指示网络处理器、其它可程序数据处理设备以特定方式作用,使得储存在该计算机可读取介质中的所述指令产生件包括指令的产品,其实施了界定在该流程图及/或方块图方块或多个方块中的该功能/动作。
所述计算机程序指令也可被加载于网络处理器、其它可程序数据处理设备、或其它装置上,以使列的操作步骤被执行在该网络处理器、其它可程序设备、或其它装置上,以产生计算机实施的程序,使得所述指令(其在该计算机或其它可程序设备上执行)提供用于实施界定在该流程图及/或方块图方块或多个方块中的所述功能/动作的程序。
根据本发明,提供了如同在所述所附申请专利范围独立项中所述的一网络处理器、用于操作该网络处理器的方法与计算机可读取介质。本发明的具体实施例叙述在所述所附申请专利范围附属项中。本发明的进一步态样现在将参照所述所附图式通过优选实施与范例的方式被叙述。
附图说明
通过阅读本发明的上述更多特定的具体实施例叙述以及图标,将更佳理解本发明的上述及其它项目、特征与优点,其中:
图1示出了高阶网络处理器结构;
图2更详细地示出了该主机以太网络适配器,其为网络处理器的一部分;
图3示出了规则及其对于解析器的功能单元的用途;
图4示出了IPv6数据包的结构;
图5为在正常操作模式与重复操作模式中的8个工作周期的示图;
图6为操作网络处理器的方法的流程图;及
图7为包括网络处理器的装置的方块图。
具体实施方式
在此参照所附图标与图式通过范例的方式叙述本发明的具体实施例。
图1示出了“棱柱(Prism)”结构类型的网络处理器101。该网络处理器包括多个部件,用于接收、缓冲、处理与转送数据包。一些核心部件(其可在高阶图上被识别)例如:
处理器102-105根据优选具体实施例为通用处理器。各处理器可包括L2高速缓存且可被实施为执行逐位串行处理的微引擎与执行包/单元队列的RISC处理器的组合。所述信道处理器可被分成例如四个信道处理器的群集,以提供用于高速接口(例如千兆以太网络)的结合处理。
存储器存取单元106负责在系统存储器上执行I/O操作。该系统存储器为包括该网络处理器的装置的主存储器。该装置可为例如路由器或交换器;
数个网络处理器模块107-110执行额外的功能,例如安全性功能(例如加密、认证、防火墙、及/或入侵检测);模式匹配;压缩和解压缩..等等;
主机以太网络适配器(HEA)116为用于该网络处理器的处理器102-105的实体以太网络适配器。HEA提供高通量、低延迟、与虚拟化支持以用于以太网络连接。HEA也被熟知为集成虚拟以太网络适配器(IVE适配器)。根据具体实施例,HEA支持例如4x10GB/s的网络流量速度。HEA的核心功能可被视为为网络处理工作提供硬件加速的模块。HEA包括主机以太网络控制器与媒体存取控制单元(MAC单元)。MAC为分配给网络接口以用于在实体网络区段上的通信的唯一标识符。MAC地址最通常是由网络接口卡的制造商分配,且被储存在例如它的硬件、该卡的只读存储器、或一些其它固件机构中。
PBIC115单元为总线113与该网络处理器的其它部件之间的接口。
总线113将该网络处理器的多个组件互连。
包处理器单元117包括数个模块(用于服务品质QoS功能与数据包调度)。它包括DMA模块(用于直接系统存储器存取)。包处理器单元117执行将由交换接口119传输的数据包的数据包处理。交换接口119用作包处理器单元117、HEA与数个I/O通道(标示在图1的底部处)的接口。
另外的模块121-125被用于各种I/O相关功能。
在下面图标中,将更详细地叙述由HEA所执行的方法步骤及/或功能性模块。
图2示出了主机以太网络适配器116,其更详细地包括多个用于接收、处理与传送数据包的模块。图2中仅示出了HEA的部件与模块一个小的子集。用于处理数据包的模块210、212与用于传送该数据包的模块211、213可(取决于HEA的实施)基于多个不同硬件及/或软件部件(例如存储器、IC、软件模块..等等)。
数据包接收自RxXGMAC/RxXGXSPCS部件209与RxGMAC/RxSGMIIPCS部件216。所述部件209、216为硬件部件,提供用于低阶硬件操作(包括例如接收数据包、分类所接收的数据包与转送所述数据包至RBB单元214)。RBB可操作以在所述数据包上执行复杂的、高阶的操作(其可能需要大量的处理时间)。因为RBB每时间单位自所述模块209、216接收的数据包的数量可能超过RBB单元可操作以处理的数据包的数量,因此已接收的数据包被储存在线缓冲器205中。线缓冲器为数据结构,其以连续顺序来保持住固定数量的数据,例如根据由线缓冲器接收数据包的顺序;线缓冲器205与RBB单元214一起构成了临时数据包缓冲器,有助于消除RBB单元接收与处理数据包的速度的差异。在此所用的术语“低阶”与“高阶”表示:“高阶”操作通常(但不必须)是属于复杂结构、需要运算量且由软件模块实施,而“低阶”操作通常(但不必须)是具有较简单的性质且通常由硬件模块(例如ASIC)实施。
在已经被RBB单元处理之后,所述数据包从RBB单元被转送至BPFC模块201。BPFC(BFSM解析器过滤器校验和)模块从RBB单元接收数据包、处理所接收的数据包且将它们传回给RBB单元(箭头219)。BPFC单元201所执行的主要功能之一为:判定多个包队列的哪一个应实际接收特定的已处理的数据包,且检查所述判定的包队列是否可用且准备好接收包。可用队列的列表可储存在QPN表中。BPFC单元或其部件进一步负责追踪被接收及处理的包与字节,以用于分类已接收的包、用于校验和计算与其它工作。
BPFC模块201包括三个主要实体及/或功能单元:数据路径单元217、解析器207与动作机组208。
在此所用的术语“单元”或“模块”同义且表示网络处理器的软件或硬件部件的功能单元。取决于具体实施例,“单元”可对应于实体单元(例如特定硬件部件或程序模块),但它同样地可为用于单片硬件块或软件模块的多功能单元或者功能单元的多个功能分布在数个不同软件或硬件模块中。
数据路径单元的主要功能为:将从RBB单元接收的数据包暴露于解析器207。许可单元204(其为数据路径单元的部件)控制了从RBB单元接收的哪个数据包被允许进入该数据路径以及以什么速度进入。该数据路径确保进入该数据路径的数据包的速度与解析器207的数据包处理速度一致。
解析器207的主要功能为:处理(例如分析、检查与管理)从数据路径单元接收的数据包。该解析器译码所述包的一个或多个字段,以判定包格式(也即,用于储存与传送包括于数据包中的数据的协议)。根据优选具体实施例,该解析器被实施为软件模块且由一个或多个网络处理器单元(picoprocessor)218执行。根据本发明的具体实施例的该解析器的主要目的为:分析该包且将所述数据包馈入其它网络处理器部件(特别是包队列与动作机),由此该馈入取决于该数据包分析的结果。解析器207可操作以读取储存在规则储存库215中的一个或多个规则、将所述规则加载至执行该解析器的指令的处理器的一个或多个寄存器中、及在该数据包上执行该已加载的一个或多个规则。根据所述的具体实施例,该一个或多个寄存器可为网络处理器单元218的寄存器。
根据本发明的具体实施例,该解析器可被视为有限状态机,且被该解析器用来分析数据包的所述规则可被视为判定该有限状态机的状态转变如何且何时发生的多个指令。所述规则(当由该解析器执行时)描述且决定该解析器如何进行通过一组不同的状态。根据本发明的具体实施例的所述规则允许基于软件的该解析器在网络处理器单元218上运行得更有效率。
BPFC单元的第三主要部件为一组动作机208。所述动作机为硬件部件(例如作为网络处理器芯片的一部分的逻辑块)。根据一些具体实施例,所述逻辑块可被实施为ASIC。所述动作机负责典型的网络工作,例如提供MAC过滤器或VLAN过滤器、或用于计算IP/TCP校验和。
图3更详细地示出了该解析器207与其功能单元330、331、332、333如何使用已加载的规则R1、R2、R3、R4,以处理数据包。规则R1301的范例更详细地示出于图3的顶部。
“相等比较值”(ECV)字段305包括将与将被分析的数据包的数据值相比较的数据值。相等比较屏蔽(ECM)字段306规定了储存在ECV字段中的数据值的哪些部分被屏蔽,且因此从与将被分析的该数据包的数据值的比较被排除。例如,包括于规则R1的ECM字段的位位置3中的位值可判定:该规则的ECV字段的位位置3处的该位值在由比较FU330执行的比较期间被忽略。将与各已加载规则的各(被屏蔽的)ECV字段相比较的该数据包的数据值由该解析器加载至寄存器区段328中,根据具体实施例,寄存器区段328包括恰好3个字节。读取该数据包的所述字节或位进入寄存器区段328中由虚线箭头317表示。
根据一些具体实施例,储存在规则储存库中的规则包括规则类型(RT)307字段。该字段指示了规则的类型。“0”位可表示该规则是属于“正常规则类型”且包括将在正常操作模式中被该解析器执行的复杂指令314,而RT字段的“1”位值表示该规则是属于“重复规则类型”且该规则包括或指示了将被重复执行的指令。在RT字段中包括“1”位的“重复规则类型”的规则可能被该解析器在正常操作模式中第一次执行。在该解析器在此第一步骤中判定一些重复指令(其可为该规则的字段314的一部分)需要被重复执行的情况下,该解析器切换至重复操作模式且(再)执行所述重复指令。
根据具体实施例,重复规则与正常规则之间的主要差别在于:重复规则包括重复计数(RC)字段303,而正常规则没有。取决于本发明的具体实施例及/或取决于各特定重复规则,重复计数字段包括:
●数字数据值,指示了当该重复规则被加载时,该解析器必须执行重复的数量,
●计算机可解译码,其可操作以动态地判定由该解析器所执行的重复的数量(例如,该解析器可动态地判定必须被推送至所述动作机中的数据包的4字节块的数量),或
●识别符,用于硬件例程(其是所述网络处理器单元218的指令集的一部分),其中,该硬件例程可操作以动态地判定将由该解析器执行的重复的数量。根据具体实施例,在RC字段中包括该识别符的规则被加载的情况中,识别符(例如“3FFB”、“3FFC”、“3FFD”、“3FFE”、“3FFF”)可各指示将被执行的该网络处理器单元的指令。所述指令“3FFB”-“3FFF”将在图4的叙述中更详细地被描述。根据一些具体实施例,该硬件例程也可包括与用于判定将被执行的重复的数量的指令相结合执行的重复指令,例如,用于评估终止状况的指令。
所述网络处理器单元为处理单元,根据所述的具体实施例,其执行该解析器的基于规则的包处理指令。
“字段”为包括数据及/或指令的数据包或规则的一个区段。通过该解析器的解析概要、该数据包或规则的格式或其组合,可判定字段的边界。
该规则301的包指针增量字段308与偏移字段309、310、与311规定了在已分析的数据包中的位与字节的位置,其将由该解析器提取,且在目前已加载规则的ECV字段数据值被判定等于该数据包的已分析的一组位和字节中的位或字节情况中,被加载至寄存器区段328中,以在后续的工作周期中用于比较。例如,在已加载逻辑槽335的位及字节的数据值与规则R1301的ECV字段数据值305之间的比较相等的情况中,在已经执行了比较操作(其传回正的结果)之后,规定在该规则的字段308-311中的位与字节可被该解析器从该数据包中选出。所述被选择的位与字节可被该解析器推送例如至所述动作机208,及/或可被该解析器用来在后续的工作周期中通过另一组规则在所述被选择的位或字节上执行进一步的处理步骤。
槽335-338为该解析器的比较FU的逻辑槽,其将指示:该比较FU可操作以并行地比较四个已加载规则R1-R4的每个规则的ECV字段内容与被储存在寄存器区段328中的一个数据值VP。该数据值VP已在该解析器的先前工作周期中从数据包被加载,由此,将被提取的数据值VP的位及字节位置规定在另一规则的字段308-311中,所述字段308-311在先前的工作周期中已被成功地与该数据包的其它位及字节相比较。该术语“成功地比较”藉此暗示:规则的ECV字段的比较(根据具体实施例:屏蔽)与已加载至寄存器区段328中的数据值VP相同。
根据具体实施例,寄存器区段328为寄存器行321的一部分。该寄存器行是一个或多个处理单元218的寄存器316的组件。根据具体实施例,一个这样的寄存器可包括例如256个寄存器行。所述处理单元218可存取被储存在一个或多个寄存器316中的数据值而不执行另一时钟周期。
各个槽335-338对应于一个被并行执行的比较操作。该数据包的被比较的“数据值”可能(但不必须)需要是代表同调信息的特定片段的数据值。该数据包的被比较的数据值VP可为一组数个位及字节,其选自数据包的一系列相邻的位或字节,或选自已从数据包的不同区段选择出的一组位及字节。
根据本发明的具体实施例,该数据值VP在先前执行的工作周期中通过解析器的执行FU从数据包选出,且被加载至寄存器区段328中。ECV字段内容VR1-VR4取得自四个不同规则R1-R4,且被加载至寄存器316的寄存器区段340-343中。所述ECV字段内容用于与该VP数据值的比较(由该解析器的比较FU330执行)。针对各个已加载规则R1-R4,所述ECV字段值VR1-VR4通常(但不必须)不同于彼此。
当该规则被执行时,规则指令字段314包括计算机可解译的指令,所述计算机可解译的指令由一个或多个处理单元(例如网络处理器单元218)执行。所述指令规定了哪个数据包处理及/或推送步骤必须被该解析器执行。
一个或多个目的地字段315规定了已从数据包提取的位或字节(作为执行该规则及成功地比较该规则的ECV字段内容与VP值的结果)将被该解析器推送至哪个动作机或哪种类型的动作机。
根据具体实施例,被该解析器从该规则储存库加载的规则可被储存在所述处理单元(其执行该解析器的指令)的高速缓存中。
根据本发明的具体实施例,网络处理器单元218的寄存器316(储存该规则储存库215的规则R1-R4的全部或子集)可被实施为静态随机存取存储器(SRAM)储存模块。SRAM为快速且可靠的存储器类型,其特征在于短的存取与循环时间,且其特别适于使用作为所述网络处理器单元218的寄存器,所述网络处理器单元执行该解析器207的指令。
所述网络处理器单元218的一个寄存器(处理器内部存储器)以一组寄存器行的形式来描述。一个寄存器行316更详细地被显示为有画影线的框321。框340-343为寄存器区段,包括已从一个或多个规则R1-R4读取的位及字节VR1-VR4。逻辑槽335-338表示了比较FU330并行地执行数据值VR1-VR4(已取得自一组目前已加载的规则R1-R4)与寄存器区段328中的位及字节VP的四个比较操作的能力。数据值VR1取得自规则R1,且由该解析器的比较FU330与读取自数据包的VP值相比较。四个VR1-VR4数据值与VP数据值的比较在图3中以8个双箭头的形式来表示。
根据一些具体实施例,VR1数据值仅包括对应的规则R1的ECV305字段的未被该规则的ECM306字段屏蔽的位及字节。
对于特定组的规则R1-R4,寄存器区段325包括需要被解析器执行的重复的数量。重复的数量已由解析器判定,例如通过从规则的RC字段303读取该重复计数、通过读取储存在该数据包中的信息、或通过执行可操作动态地判定重复计数的指令。该指令可以是一个或多个已加载规则的一部分或可以是所述网络处理器单元的指令集的一部分。
寄存器区段327包括包指针值,其指示了需要在后续的工作周期中被处理的该数据包的第一位或字节数据。该处理可包括推送起始于该第一位或字节的数据块至一组动作机。储存在寄存器行区段327中的包指针值的更新在图3中以虚线箭头318来表示。
根据具体实施例,包指针为存储器地址,其指示了该数据包中的一组位或字节的确切起始位或起始字节位置。所述位或字节将被解析器分析或另外处理。当该数据包在数据路径217中传送至解析器207时或当该数据包已到达解析器时,该包指针允许解析器从该数据包读取特定组的位或字节。根据具体实施例,网络处理器的其它部件(未示)使得已分析的数据包目前是包括在该数据路径中或在解析器中的信息对解析器可用,因此该包指针本身可能仅包括被用于分析及/或处理的该数据包的目前被检查的数据的相关位或字节位置的指示符,例如相关于该数据包的起始位或起始字节的位置信息。处理操作会例如把该组位或字节推送至一个或多个动作机。
寄存器区段328包括预定长度(例如3字节)的一组位或字节,所述位或字节根据比较FU330所提供的比较结果而从数据包提取。所述被提取出的数据值被使用作为比较FU330在该后续的工作周期中的输入。
解析器的所述槽335-338各对应于已加载规则,各规则包括指令314。所述网络处理器单元218将对数据包执行所述指令。根据所述的具体实施例,网络处理器单元可以并行地执行4个指令,也即,规则R1-R4的4个区段或扩展。
根据优选具体实施例,只有包括在成功地匹配了VP数据值的那个已加载规则中的指令314被执行。包括在所有其它已加载规则中的指令不对该数据包执行。该被执行指令可包括例如:触发新的一组规则的加载以用于后续的工作周期的比较步骤中的指令。对应地,只有那些动作机在例如块的推送期间被使用(那些动作机被规定在已成功地匹配了VP数据值的那个规则的区段315中),且只有那些位及字节从该数据包被读取以用于后续工作周期中的比较(那些位及字节被规定在成功匹配规则的字段308-311中)。
功能单元330、331、332、与333都可被实施为解析器的硬件或软件部件或其任何组合。所述部件330-333可为实体上分开或可为软件的一个单片区块的一部分。
根据优选具体实施例,然而,解析器的所有功能单元与解析器本身完全地或至少部分地以硬件的形式实施,也即,被实施为网络处理器单元218所规定的处理逻辑,而解析器的灵活性由加载至解析器的所述规则中所包括的所述指令来提供。根据优选具体实施例,所述规则的指令是以程序语言所写的计算机可解译的指令。所述指令可根据新需求而容易地被改变且提供高灵活性的解析器。
比较功能单元(FU)330可操作以并行地执行多个比较操作(“相等性比较”)。在所述的具体实施例中,比较FU并行地执行4个比较操作。规则R1-R4可不同于彼此。
首先,解析器从已分析的数据包提取一组位或字节。根据优选具体实施例,该被提取的位或字节的大小与位置被规定在已加载且事先成功地匹配的规则(在区段308-311中)中。被提取的位或字节VP被储存至数据寄存器区域328。比较单元330将所述已加载规则R1-R4的ECV值VR1-VR4加载至寄存器区段340-343,且将在解析器的各个逻辑槽335-338中的所述值VR1-VR4中的每一个与数据值VP相比较。根据优选具体实施例,各个规则另外包括相等比较屏蔽字段ECM306。该ECM指示了:在数据包的分析期间,将与该数据包的已加载数据值VP相比较的四个规则R1-R4(已加载至寄存器区域340-343)的每个规则的哪个位及字节-VR4应被忽略(“屏蔽”)。例如,规则R1可使解析器加载3个特定字节的数据至寄存器区域340,以用于相等性比较。R1的ECM字段可规定:该3个字节中只有两个确实将用于比较,而其它位被屏蔽。
根据优选具体实施例,该比较被实施为“对于相等性的比较”。针对解析器的比较FU的四个逻辑比较槽的每个槽,该比较将传回二进制结果值,其中,第一结果类型确认所比较位或字节的相等性,而第二结果类型代表不相等的数据值。
在所述的具体实施例中,分析信息由4位数据值组成。针对解析器的比较FU330的四个比较槽的每个槽,传回一个位(“相等”或“不相等”)。例如,通过加载数据包的NH报头字段至网络处理器单元218的寄存器行321的寄存器区段328中,通过比较该已加载字段的数据内容VP与规则R1(在其ECV字段中包括数据值“06”),比较结果(也称为“分析结果”,其指示了:“06”值与NH包报头字段之间的相等性)指示了:所分析的包根据TCP协议而被格式化。
取决于该分析结果(也即,规则R1的ECM字段内容相对于所分析的数据包的所选择位或字节的相等性),评估FU332从所分析的数据包提取执行FU333在目前的工作周期中所需要的信息,及/或从所分析的数据包提取比较FU330在后续的工作周期中所需要的信息。
根据所述的范例,评估FU从比较FU接收4位的分析结果值,且处理该分析结果,以判定是否位或字节需要从所分析的数据包被提取出和哪些位或字节需要从所分析的数据包被提取出及/或哪些规则需要被加载,以用于进一步处理或分析该数据包。根据给定的范例,在评估FU判定所分析的数据包为TCP包(也即,包括至少TCP报头区段的数据包)的情况下,评估FU可开始加载特别适于分析及/或处理TCP数据包的新的一组规则。根据所述的具体实施例,新的一组规则包括用于解析器的比较FU的比较槽的每个槽的一个规则。
在规则包括与该分析结果不相关的指令(其需要对数据包执行)的情况下,根据具体实施例,解析器执行所述指令并行于该比较FU330执行数据包分析。例如,在包报头的一些位或字节需要被解析器推送到所述动作机而与比较FU所产生的分析结果不相关(例如,与该数据包是根据哪种格式或协议的问题无关)的情况下,解析器可并行地推送所述位或字节至所述动作机且执行所述的分析。取决于所分析的数据包与所加载的规则,解析器可并行地执行数据包分析步骤(涉及比较FU)与推送步骤(涉及执行FU333)。在一些具体实施例与一些处理方案中,解析器可执行纯粹分析步骤或执行纯粹推送步骤。实现纯粹推送目的的规则可不包括ECV与ECM字段,或可包括完全屏蔽ECV字段的数据值的ECM字段。
重复控制单元331负责判定被解析器执行的重复的数量。该判定根据包括于已加载规则中及/或已处理的数据包中的数据。评估功能单元332可操作以评估比较FU所提供的比较结果(也即,施用在该数据包上的规则的分析结果)。根据该结果,评估FU判定在未来工作周期中需要被加载的一组规则、判定数据包的哪些位或字节的数据需要被读取以用于在该后续的工作周期分析/比较、及判定在该目前的工作周期中有哪些动作需要被施行在数据包上。这种动作可例如为:推送字节块至所述动作机。
执行功能单元(FU)333可操作以执行动作,例如,推送已分析数据包的字节块至动作机。取决于具体实施例,在目前的工作周期中可能需要判定:需要执行某一动作(例如,推送数据块至所述动作机)。
图4示出了符合IPv6协议的数据包401。该数据包包括IPv6报头402。IPv6报头包括第一区段408,其包括数个字段,例如“IP版本”、“服务”、“数据流种类(trafficclass)”、“数据流标记”、“载荷长度”、“跳数限制(HL)”、与“下个报头(NH)”字段(未显示)。IPv6报头另外包括16字节(128位)的源地址字段SA403与16字节(128位)的目的地地址字段DA404。数据包401可包括0、1或数个IPv6扩展报头410(图4显示了具有一个IPv6扩展报头的数据包)。该数据包另外包括20-60字节的TCP报头405和L5(“level5”)区段406(其为L4载荷区段)。
NH字段表示了数据包401中接下来的下个报头的类型。在接下来的报头是属于TCP格式的情况下,该NH字段具有值“06”。该NH数据字段可被解析器的一个或多个规则评估,且可用于计算分析结果及作出解析判断。
网络层(L3)定义了与特定的协议相关的逻辑地址,以判定如何在网络装置之间传送数据。用于此层中的协议组包括IP、ICMP、ARP、RIP、OSI、IPX与OSPF。
“L4”为OSI模型的第四层,且也称为“传输层”。此层主要提供用于上层数据的数据传输与分割的服务。传输层(L4)的L4数据传输可根据例如TCP或UDP协议。存在有另外的L4协议,例如SPX、NETBIOS、ATP与NWLINK。根据本发明的其它具体实施例,解析器可操作以执行可以评估与处理数据包(其包括根据该L4协议所格式化的数据)的规则。
会话层(L5)管理及处理那两个主机之间的通信的产生、维持与切断。
IPv6报头402与可选的IPv6扩展报头(一个或多个)410因此对应于OSI模型的第三层。TCP报头405与L4载荷区段406属于第四OSI层。载荷区段406包括属于第五OSI层的数据,其可包括L5报头区段与L5载荷区段(未显示)。所述数据包为包括多个嵌套数据层的数据包的范例,其中,第一数据层的载荷区段包括第二数据层的封套区段(例如报头区段)与载荷区段。
SA字段指示了源地址(也即,包的发送者的地址),而DA字段指示了包的目的地(也即,包的提出的接收者)。
在解析器需要推送SA字段的数据内容至动作机的情况中,存在有限制:所述动作机每个时刻的时间所能接收的字节数量是有限的。根据所述的具体实施例,动作机每次交换所能接收的字节的最大数量是5字节。因为SA字段包括16字节,该SA字段太大以致于无法在一个交换中被推送至动作机。反而,SA字段需要被分割成至少4个字节块407S1-S4。各字节块为4字节长,且可分别在一个交换中被推送至动作机。
将包括于数据包中的字节块推送至动作机是网络处理器需要重复地执行的任务的典型但非限制性的范例。
假设一个交换对应于网络处理器的一个工作周期,现有的网络处理器状态将需要8个工作周期来将所述4字节块推送至所述动作机:针对各个4字节块的推送,将需要两个工作周期:将需要一个第一工作周期用于加载指令(例如以规则的形式)至网络处理器单元218的寄存器中,和第二工作周期,用于执行被加载的指令(例如推送数据组块。根据本发明,第一周期(对应于推送指令的加载)仅需要被执行一次,藉此避免重复地加载推送指令。根据本发明,将需要一个第一工作周期用于加载推送指令和4个额外的工作周期用于针对四字节块中的每一个执行已加载的推送指令。8:5工作周期的比率(在超过4字节块将被推送至所述动作机的情况中,该比率甚至将更令人印象深刻)清楚地显示:本发明的具体实施例显著地加速了网络处理器而不需要具有较高时钟周期的硬件。因此,本发明所述的具体实施例之后的构想同样地可被叙述为:提供一种解析器,其可操作以执行重复任务(例如推送数据块至动作机),而不改变解析器的状态且每个重复执行的操作仅消耗一个工作周期。
根据优选具体实施例,解析器处理该数据包从左至右进行。在解析器执行包括重复计数字段的规则的情况中,该重复计数字段可包括下述识别符:
●识别符“3FFB”表示:网络处理器单元的指令应被执行;其可另述为:推送已分析数据包的IPv6扩展报头410的字节块,直到到达该包的该IPv6扩展报头410的最后字节位置;
●识别符“3FFC”表示:网络处理器单元的指令应被执行;其可另述为:推送已分析数据包的TCP报头的字节块,直到到达该包的该TCP报头405的最后字节位置;
●识别符“3FFD”表示:网络处理器单元的指令应被执行;其可另述为:推送已分析数据包的层4载荷的字节块,直到到达该包的该层4载荷的最后字节位置;
●识别符“3FFE”表示:网络处理器单元的指令应被执行;其可另述为:推送已分析数据包的IPv4报头的字节块,直到到达该包的该IPv4报头的最后字节位置;
●识别符“3FFF”表示:网络处理器单元的指令应被执行;其可另述为:推送已分析数据包的字节块,直到到达该包的最后字节位置;该指令作用为“退路”指令,甚至在该包的格式(例如协议)未被解析器识别出的情况下,该指令也可被执行。解析器从左至右前进通过该数据包,且推送字节块至所述动作机直到到达该数据包的末端。
根据优选具体实施例,一些规则的重复计数字段的识别符所指示的指令属于解析器正在其上操作的网络处理器单元的指令集。这是高度有利的,因为所述指令是网络处理器单元的集成部分,且在解析器的操作期间不需要读取或加载步骤来使所述指示成为可用。通过避免用于加载所述指示的另外的工作周期,增加了速度。
规则的重复计数字段可包括指令的识别符,以动态地判定重复计数,其中,该指令为解析器正在其上操作的处理器(例如网络处理器单元)的指令集的一部分。根据具体实施例,解析器具有不同的选项来判定将被执行的重复的数量。根据其它规则或其它具体实施例,该数量读取自规则的重复计数字段、读取自已分析数据包的字段、或通过执行程序例程(其被实施为已加载规则的扩展或一部分)来动态地判定。在所述指令被实施为已加载规则的扩展或一部分的情况中,可避免加载指令以判定该重复计数的另外步骤。此特征由于相同的理由而加速了解析器速度:因为包括RC字段(具有指令的识别符)的规则属于处理器的指令集:不需要加载指令以判定该重复计数的额外加载步骤。
图5a示出了根据本发明的具体实施例的解析器在正常操作模式中所操作的8个工作周期。“4规则”线表示目前已加载且执行的规则组。对解析器的数据包的数据区段执行比较操作的比较FU单元的每个槽对应于一个规则。根据所述的具体实施例,每个规则组包括4个规则。PP1、PP2、PP3与PP4(图5b)条表示包指针的改变。PP1表示指向数据包的第一数据区段的包指针;PP2表示该包指针已改变其值且现在指向该数据包的第二数据区段..等等。
在第一工作周期中(例如w3),解析器可执行多个任务,例如比较包的数据区段与每个目前已加载规则的ECV字段中的数据、选择数据包的其它数据区段以在未来的工作周期中用于分析或其它处理、及/或执行(重复)指令(例如推送字节块至动作机)。在下一个工作周期中(例如w4),解析器从规则储存库读取规则。对于很多目前的网络处理器来说,通常需要至少两个不同的工作周期(一个用于加载指令且一个用于执行已加载的指令)。
根据具体实施例,工作周期为步骤的序列,当所述步骤被执行时,所述步骤可导致有限状态机(例如解析器)的状态转变。根据图5a中所示出了的具体实施例,解析器需要2个工作周期(例如w3与w4),以执行状态转变。
在图5a中,示出了工作在正常操作模式中的解析器。图标的顶部上的阿拉伯数字1-8表示目前的工作周期,每个工作周期包括第一时钟周期c0与第二时钟周期c1,各时钟周期的长度由网络处理器的时钟120的类型所决定。
在第二工作周期w2中,包括规则1、2、3与4的第一规则组在步骤501被解析器读取且加载至网络处理器单元的一个或多个寄存器316中。该已加载的规则组被解析器使用于第三工作周期w3中,以执行比较操作、从数据包选择数据区段以用于未来的处理步骤及/或用于执行重复工作(例如推送字节块至动作机)。所述比较操作被表示为四个Cp框,其对应于由根据图3的解析器的比较单元330所执行的四个并行的比较操作。根据该比较结果而选择用于进一步处理的数据区段在图5a中通过椭圆“Eval”505来表示。该“Eval”操作是由图3的功能单元332来执行的。执行指令(例如重复指令(例如推送数据块至动作机))在“Exec”步骤506中在第三工作周期中被施行。该“Exec”步骤506是由图3的执行FU333来执行的。根据所述的具体实施例,“Exec”步骤506包括推送字节块至动作机(如同框506的底部处的箭头所示)。在已推送该字节块至动作机之后,包指针改变其值(转变:PP1→PP2)。
步骤505及/或步骤506包括解析判断,因为取决于数据包的分析结果(在此情况中:取决于数据包的数据值与规则的数据值的比较结果),不同的操作可由解析器在步骤506中施行,且不同的规则组可被判定将在未来的工作周期(w5)中需要用于执行。
在步骤507,在第四工作周期w4的第一时钟周期中,将被加载的下一组规则的位置(也即,存储器地址)在“Addr”中决定,且该组规则在步骤502中被从规则储存库读取。
在工作周期w5中,比较操作、位或字节选择操作与进一步的操作508、509根据新的一组规则5、6、7与8而被施行,如同针对工作周期w3所叙述的。在工作周期4的cl中所加载且在w5中所使用的该规则组为“正常规则”,其可操作以根据所分析的数据包及/或其它因素而作出解析判断。
在工作周期w6、步骤510中,新的一组规则9、10、11与12的地址被判定,且所述规则在工作周期6的第二时钟周期中被读取至一个或多个寄存器316中。在已经执行步骤509之后,包指针改变其值(如同新符号PP3所表示的)。在第七工作周期w7中,已加载的规则9-12被用于执行比较、评估及/或数据区段操作任务(如同前述)。在工作周期w7中,根据数据包的分析而作出解析判断,其中,该解析判断包括如下判断:规则13-16需要用于未来的工作周期(未显示)。所述已判定规则在工作周期8中被读取。
在图5a的顶部示出了8个工作周期w1-w8被处于正常操作模式中的解析器执行。在正常操作模式中,第一工作周期w2、w4、w6、w8需要用于读取规则至一个或多个寄存器316中。第二工作周期w3、w5、w7需要用于执行已读取及加载规则,藉此,作出解析判断(例如,关于如何处理已分析数据包的数据,及/或关于哪组规则要在后续的工作周期中加载与使用的问题)。
示出于图5b中的工作周期显示了解析器从工作在正常操作模式中(在工作周期w1-w4中)“转换”或“切换”至工作在重复操作模式中(在工作周期w5-w7中)。在图5b的工作周期w8中,解析器再次操作在正常操作模式中。
在图5b的w3中所执行的规则组21、22、23、24为重复规则类型且包括重复计数字段。在工作周期w3中,根据分析结果,在步骤523、524之一中作出解析判断,且在步骤524中施行动作。在图5b的工作周期w4中,解析器判定:必须执行重复指令。因为该重复指令已加载至一个或多个寄存器(例如作为已加载规则21-24的扩展或一部分)或为网络处理器单元指令集的一部分,因此不需要加载重复指令,且在工作周期w4中不需做任何动作。反而,解析器切换至重复操作模式,其中,相较于在正常操作模式的情况中只有每两个工作周期w3、w5、与w7有执行(见图5a),重复指令如同“Exec”框所指示地可在每个后续的工作周期中在步骤525、526与527中被执行。因此,示出于图5b中的每个单工作周期w5、w6、与w7在重复操作模式中执行重复指令(例如,推送字节块至动作机(如同“Exec.”框的底部处的箭头所示)),藉此,相较于正常操作模式而将网络处理器的速度翻倍。当所有重复指令已被执行时(重复的数量直接或间接规定在例如重复规则的重复计数字段中或在已分析/处理的数据包中),解析器切换回正常操作模式,且在工作周期w8的步骤528与522中加载新的一组规则。所述新加载的规则在工作周期w9(未显示)中被使用。
在此将清楚地提到:时钟周期相对于工作周期的比率取决于在各个个别具体实施例中所使用的网络处理器硬件。在图5a、图5b中所述的具体实施例(其中,一个工作周期对应于两个时钟周期)应因此被视为仅仅是设计选择,且应不被视为限制本发明为在本发明的各种具体实施例中所述的工作周期相对于时钟周期的定量。
图6示出了用于操作根据本发明的具体实施例的网络处理器的方法的流程图。在步骤601中,工作于正常操作模式中的解析器在第一工作周期中从规则储存库加载至少一个规则。在步骤602中,该至少一个已加载规则于正常操作模式中在第二工作周期中被执行,以分析该数据包且产生分析结果。根据该分析结果,解析器可在步骤603中从正常操作模式动态地切换至重复操作模式。在解析器在步骤603中切换至重复操作模式的情况中,在一个或多个重复的每一个中,对数据包应用重复指令。所述重复的每一个在一个第二工作周期中被执行,其中,在重复操作模式中不需要执行用于在重复操作模式中加载该重复指令的第一工作周期。通过评估已加载数据,解析器动态地判定在该重复操作模式中将被执行的重复的数量。该“已加载数据”为:解析器在进入重复操作模式的时间点已经被加载的数据。在解析器切换至重复模式的情况中,解析器在步骤604中在一个或多个重复的每一个中(再次)应用重复指令于该数据包。每个重复在一个第二工作周期中被执行,其中,不需要执行用于在重复模式中加载该重复指令的第一工作周期且不被执行。通过评估已加载数据(例如,通过评估一个或多个已加载规则、通过评估已分析的数据包或其组合),解析器动态地判定在该重复模式中将被执行的重复的数量。
图7示出了装置700(例如网络路由器或交换机)的方块图,装置700包括根据本发明的具体实施例的网络处理器101。网络处理器包括非暂态的计算机可读取储存介质701与一个或多个处理单元218。储存介质701包括计算机可解译的指令,当所述指令由该一个或多个处理单元218执行时,所述指令提供用于操作根据先前所述的本发明的任何具体实施例的网络处理器的方法。
虽然计算机可读取的非暂态储存介质701在示范具体实施例中显示为单介质,术语“机器可读取介质”应被认为包括储存一组或多组指令的单个介质或多个介质(例如,中心化的或分布型的数据库、及/或相关的高速缓存与服务器)。术语“计算机可读取的非暂态储存介质”也应被认为包括可以储存或编码指令集(由解析器执行而导致解析器施行本发明的任何一个或多个方法)的任何介质,或可以储存或编码由解析器所使用的规则的任何介质。术语“计算机可读取的非暂态储存介质”应因此被认为包括(但不限于)固态存储器、光学和磁性介质等(例如(但不限于)任何类型的盘(包括软盘、光盘、CD-ROMs、与磁性光盘))、只读存储器(ROM)、随机存取存储器(RAM)、磁性或光学卡、或适于储存电子指令的任何类型的介质。
附图标记列表
101网络处理器
102-105处理器
106存储器存取单元
107-108网络处理器部件
113网络处理器总线
115总线接口(一个或多个)
116主机以太网络适配器HEA
117包处理器单元
119交换接口(用于包处理器单元)
120时钟
121-125网络处理器模块
204许可单元
205线缓冲器
207解析器
208动作机
209RxXGMAC/RxXGXSPCS
210、212HEA部件(用于管理数据包)
211、213HEA部件(用于传输数据包)
214RBB单元
215规则储存库
216RxGMAC/RxSGMIIPCS
217数据路径
218网络处理器单元
219数据包传输至RBB单元
301规则RI
303重复计数字段(在重复规则类型的规则中)
305相等比较值字段(ECV)
306相等比较屏蔽字段(ECM)
307规则类型字段
308包指针增加字段
309-311包指针偏移字段
314指令/重复指令
315目的地动作机
316处理单元的寄存器
317加载数据包的位或字节
318更新包指针
321寄存器行
325寄存器区段(包括重复计数值)
327寄存器区段(包括包指针值)
328寄存器区段(包括3字节的数据包)
330比较功能单元
331重复控制单元
332评估功能单元
333执行功能单元
335槽(用于比较规则R1的ECV字段)
336槽(用于比较规则R2的ECV字段)
337槽(用于比较规则R3的ECV字段)
338槽(用于比较规则R4的ECV字段)
401数据包
402IPv6报头
403源地址字段
404目的地地址字段
405TCP报头字段
406层4(L4)载荷区段
4074x4字节块S1、S2、S3、S4
408IPv6报头区段
410IPv6扩展报头
501-504读取操作
505评估/分析步骤
506执行步骤
507规则(一个或多个)的存储器地址
508评估/分析步骤
509执行步骤
510规则(一个或多个)的存储器地址
511评估/分析步骤
512执行步骤
513规则(一个或多个)的存储器地址
520读取操作
522读取操作
523评估/分析步骤
524执行步骤
525执行步骤
526执行步骤
527执行步骤
528规则(一个或多个)的存储器地址
601-604步骤
700网络装置
701计算机可读取的储存介质
Claims (13)
1.一种网络处理器(101),包括:
规则储存库(215),该规则储存库包括多个规则,所述多个规则的每个规则包括多个字段;
解析器(207),能够操作以至少工作在正常操作模式和重复操作模式中;
其中,处于正常操作模式的解析器在第一工作周期中从该规则储存库加载至少一个第一规则(301),且在第二工作周期中对数据包(401)执行已加载的至少一个第一规则的指令,该至少一个第一规则由解析器执行以分析该数据包,由此产生分析结果;
其中,处于重复操作模式的解析器在一个或多个重复的后续工作周期的每一个中再次重复施加所述指令(314)于该数据包;
其中,该解析器能够操作以根据该分析结果而动态地从正常操作模式切换至重复操作模式;以及
其中,解析器从所述多个规则的每个规则的多个字段中的重复计数字段动态地判定该一个或多个重复的数量。
2.如权利要求1的网络处理器,进一步包括一个或多个动作机(208),用于处理该数据包,由此在重复操作模式中执行所述指令包括将该数据包的一个或多个部分推送至所述一个或多个动作机。
3.如权利要求1的网络处理器,其中,所述重复操作模式的所述指令被实施为已加载的至少一个第一规则的一部分或被实施为该已加载的至少一个第一规则的扩展。
4.如权利要求3的网络处理器,其中,该已加载的至少一个第一规则的多个域中包括重复规则类型识别符(307)。
5.如权利要求1的网络处理器,其中,该规则储存库的规则包括至少第一及第二规则类型的规则,各规则的规则类型由该各规则的一个或多个数据值指示,其中
第一规则类型的各规则由处于正常操作模式的解析器执行;且
在第二规则类型的各规则已被加载至执行解析器的一个或多个处理单元(218)的一个或多个寄存器(316)之后,当第二规则类型的某规则被第一次执行时,该第二规则类型的某规则由处于正常操作模式的解析器执行,且当该第二规则类型的某规则在第m个重复中被执行时,在重复操作模式中执行该第二规则类型的某规则,m为大于1的整数。
6.如权利要求1的网络处理器,其中,至少一个第一规则中的至少一个包括用于该数据包的分析中的输入向量及用于根据该分析结果而储存部分已分析数据包的输出向量,其中,该输入向量包括相等比较屏蔽字段(306)及相等比较值字段(305),该相等比较值字段包括将与数据的各第二位相比较的数据的各第一位,所述数据的各第二位读取自该数据包的特定位置,其中,如果在该相等比较屏蔽字段中的对应位置的第三位指定包括在该相等比较值字段中的数据的第一位的屏蔽,则包括在该相等比较值字段中的数据的第一位从比较中被排除。
7.如权利要求1的网络处理器,其中,在解析器开始在重复操作模式中执行所述指令之前或当时,执行判定将由解析器执行的重复的数量。
8.如权利要求1的网络处理器,其中,重复的数量由执行程序例程的解析器来决定,该程序例程选自如下组,该组包括:
程序代码,其使处于重复操作模式的解析器执行所述指令,直到解析器到达该数据包的预定区段的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行所述指令,直到解析器到达IPv4报头的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行所述指令,直到解析器到达IPv6扩展报头(410)的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行所述指令,直到解析器到达TCP报头(405)的最后字节位置;
程序代码,其使处于重复操作模式的解析器执行所述指令,直到解析器到达层4载荷的最后字节位置;及
程序代码,其使处于重复操作模式的解析器执行所述指令,直到已分析的数据包(401)的最后字节位置。
9.如权利要求7的网络处理器,其中,通过比较包括在该数据包的报头字段中的数据与包括在已加载的至少一个第一规则的相等比较值字段(305)中的数据,识别用以转送或处理该数据包的至少一个协议。
10.如权利要求1的网络处理器,其中,该数据包包括两个或更多个嵌套数据层,各数据层由封套与载荷区段组成,其中,第一数据层的载荷区段包括第二数据层的封套与载荷区段,且其中,通过对包括在该第一数据层的封套中的数据值执行该至少一个第一规则,该解析器判定将被加载且能够操作以处理包括在该第二数据层中的数据的至少一个第二规则。
11.如权利要求1的网络处理器,其中,解析器在重复操作模式中执行所述指令期间能够操作以读取及使用包指针(327),所述包指针在所述指令的执行期间动态地更新,且其中,各包指针指向由所述指令在一个重复中处理的该数据包的数据区段的起始。
12.如权利要求11的网络处理器,其中,各包指针指向该数据包中的一组相邻位的第一位,其中,针对解析器所执行的各个重复,所述相邻位组中的一个被传输至动作机。
13.一种由网络处理器(101)执行用于加速数据包解析的方法,该方法包括:
通过解析器在第一工作周期中从规则储存库(215)加载(601)至少一个规则(301),该规则储存库包括多个规则,所述多个规则的每个规则包括多个字段;
通过解析器在第二工作周期中对数据包(401)执行(602)至少一个已加载规则的指令,所述解析器操作于正常操作模式中,解析器藉此分析该数据包且计算分析结果;
通过解析器从该正常操作模式动态地切换(603)至重复操作模式,该切换根据该分析结果而执行;
在解析器切换至重复操作模式的情况中,在一个或多个重复的后续工作周期的每一个中对该数据包再次重复应用(604)所述指令,其中,解析器从所述多个规则的每个规则的多个字段中的重复计数字段动态地判定在该重复操作模式中将被执行的重复的数量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10306437.4 | 2010-12-16 | ||
EP10306437 | 2010-12-16 | ||
PCT/EP2011/072452 WO2012080170A1 (en) | 2010-12-16 | 2011-12-12 | Network processor and method for accelerating data packet parsing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103415836A CN103415836A (zh) | 2013-11-27 |
CN103415836B true CN103415836B (zh) | 2015-12-16 |
Family
ID=45346475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180060182.6A Expired - Fee Related CN103415836B (zh) | 2010-12-16 | 2011-12-12 | 加速数据包解析的网络处理器及方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8854996B2 (zh) |
CN (1) | CN103415836B (zh) |
DE (1) | DE112011103561T5 (zh) |
GB (1) | GB2502455B (zh) |
TW (1) | TWI505185B (zh) |
WO (1) | WO2012080170A1 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8804764B2 (en) | 2010-12-21 | 2014-08-12 | International Business Machines Corporation | Data path for data extraction from streaming data |
US20120198213A1 (en) * | 2011-01-31 | 2012-08-02 | International Business Machines Corporation | Packet handler including plurality of parallel action machines |
FR2973188B1 (fr) * | 2011-03-25 | 2013-04-19 | Qosmos | Procede et dispositif d'extraction de donnees |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
EP2915287B1 (en) * | 2012-10-30 | 2018-12-05 | Viavi Solutions Inc. | Method and system for identifying matching packets |
US20140160954A1 (en) | 2012-12-12 | 2014-06-12 | International Business Machines Corporation | Host ethernet adapter frame forwarding |
US9560661B2 (en) | 2013-05-22 | 2017-01-31 | Microsoft Technology Licensing, Llc | Allocation of shared resources for virtualized networking |
US9426081B2 (en) * | 2013-06-01 | 2016-08-23 | Microsoft Technology Licensing, Llc | Management of multilevel queues for shared network adapters |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US10447823B2 (en) * | 2014-01-08 | 2019-10-15 | Marvell Semiconductor, Inc. | Packet parsing engine |
US10110712B2 (en) | 2014-06-04 | 2018-10-23 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US9774707B2 (en) | 2014-06-04 | 2017-09-26 | Nicira, Inc. | Efficient packet classification for dynamic containers |
WO2015187200A1 (en) * | 2014-06-04 | 2015-12-10 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US9742694B2 (en) | 2014-06-19 | 2017-08-22 | Cavium, Inc. | Method of dynamically renumbering ports 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 |
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 |
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 |
US9560136B2 (en) * | 2014-08-07 | 2017-01-31 | Sap Se | High speed communication protocol |
GB2530513B (en) | 2014-09-24 | 2016-08-24 | Ibm | Assembling response packets |
GB2549442A (en) * | 2014-09-24 | 2017-10-25 | Ibm | Data packet processing |
GB2532208A (en) * | 2014-11-07 | 2016-05-18 | Ibm | Host network controller |
GB2532055B (en) * | 2014-11-07 | 2016-12-14 | Ibm | Sticky and transient markers for a packet parser |
US20160179538A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor |
CN107592287A (zh) * | 2016-07-07 | 2018-01-16 | 深圳市中兴微电子技术有限公司 | 一种报文加速方法及装置 |
US10091137B2 (en) * | 2017-01-30 | 2018-10-02 | Cavium, Inc. | Apparatus and method for scalable and flexible wildcard matching in a network switch |
CN109995659B (zh) | 2017-12-29 | 2022-03-01 | 阿里巴巴集团控股有限公司 | 一种网络通信方法及装置 |
CN111324382B (zh) * | 2018-12-13 | 2023-03-03 | 华为技术有限公司 | 指令处理方法和芯片 |
CN109474641B (zh) * | 2019-01-03 | 2020-05-12 | 清华大学 | 一种可破坏硬件木马的可重构交换机转发引擎解析器 |
CN110177083B (zh) * | 2019-04-26 | 2021-07-06 | 创新先进技术有限公司 | 一种网卡、数据发送/接收方法及设备 |
US11082410B2 (en) | 2019-04-26 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Data transceiving operations and devices |
US11088784B1 (en) | 2020-12-24 | 2021-08-10 | Aira Technologies, Inc. | Systems and methods for utilizing dynamic codes with neural networks |
US11368250B1 (en) | 2020-12-28 | 2022-06-21 | Aira Technologies, Inc. | Adaptive payload extraction and retransmission in wireless data communications with error aggregations |
US11477308B2 (en) | 2020-12-28 | 2022-10-18 | Aira Technologies, Inc. | Adaptive payload extraction in wireless communications involving multi-access address packets |
US11483109B2 (en) | 2020-12-28 | 2022-10-25 | Aira Technologies, Inc. | Systems and methods for multi-device communication |
US11575469B2 (en) | 2020-12-28 | 2023-02-07 | Aira Technologies, Inc. | Multi-bit feedback protocol systems and methods |
US11489624B2 (en) | 2021-03-09 | 2022-11-01 | Aira Technologies, Inc. | Error correction in network packets using lookup tables |
US11496242B2 (en) | 2021-03-15 | 2022-11-08 | Aira Technologies, Inc. | Fast cyclic redundancy check: utilizing linearity of cyclic redundancy check for accelerating correction of corrupted network packets |
US11489623B2 (en) | 2021-03-15 | 2022-11-01 | Aira Technologies, Inc. | Error correction in network packets |
CN113055081B (zh) * | 2021-04-06 | 2022-09-27 | 北京控制工程研究所 | 一种高可靠低开销的跨周期数据处理方法 |
US11711453B2 (en) * | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
CN114356827B (zh) * | 2021-12-23 | 2024-03-22 | 海光信息技术股份有限公司 | 数据解析方法、装置、设备及介质 |
US12224945B2 (en) | 2023-04-24 | 2025-02-11 | Microsoft Technology Licensing, Llc | Accelerated network packet classifier |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1336915A1 (en) * | 2002-02-19 | 2003-08-20 | Broadcom Corporation | Method and apparatus for flexible frame processing and classification engine |
EP1345362A2 (en) * | 2002-03-15 | 2003-09-17 | Broadcom Corporation | Fast flexible filter processor architecture for a network device |
CN1606291A (zh) * | 2003-10-06 | 2005-04-13 | 株式会社日立制作所 | 网络处理加速器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339421A (en) * | 1991-03-22 | 1994-08-16 | International Business Machines Corporation | General data stream parser for encoding and decoding data and program interface for same |
US6393551B1 (en) | 1999-05-26 | 2002-05-21 | Infineon Technologies North America Corp. | Reducing instruction transactions in a microprocessor |
US6598034B1 (en) | 1999-09-21 | 2003-07-22 | Infineon Technologies North America Corp. | Rule based IP data processing |
US7178013B1 (en) * | 2000-06-30 | 2007-02-13 | Cisco Technology, Inc. | Repeat function for processing of repetitive instruction streams |
US20050100019A1 (en) * | 2003-11-10 | 2005-05-12 | Sahita Ravi L. | Rule based packet processing engine |
US7463630B2 (en) | 2005-02-18 | 2008-12-09 | Broadcom Corporation | Multi-part parsing in a network device |
US8179896B2 (en) * | 2006-11-09 | 2012-05-15 | Justin Mark Sobaje | Network processors and pipeline optimization methods |
US7813337B2 (en) | 2007-01-19 | 2010-10-12 | Broadcom Corporation | Network packet processing using multi-stage classification |
US8126014B2 (en) * | 2008-04-09 | 2012-02-28 | Qualcomm Incorporated | Methods and apparatus for improved decoding of hybrid automatic repeat request transmissions |
CN101656634B (zh) * | 2008-12-31 | 2012-06-06 | 暨南大学 | 基于IPv6网络环境的入侵检测方法 |
-
2011
- 2011-07-15 US US13/183,953 patent/US8854996B2/en not_active Expired - Fee Related
- 2011-12-07 TW TW100145005A patent/TWI505185B/zh active
- 2011-12-12 CN CN201180060182.6A patent/CN103415836B/zh not_active Expired - Fee Related
- 2011-12-12 WO PCT/EP2011/072452 patent/WO2012080170A1/en active Application Filing
- 2011-12-12 GB GB1312415.1A patent/GB2502455B/en active Active
- 2011-12-12 DE DE112011103561T patent/DE112011103561T5/de not_active Ceased
-
2012
- 2012-08-09 US US13/570,343 patent/US8867395B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1336915A1 (en) * | 2002-02-19 | 2003-08-20 | Broadcom Corporation | Method and apparatus for flexible frame processing and classification engine |
EP1345362A2 (en) * | 2002-03-15 | 2003-09-17 | Broadcom Corporation | Fast flexible filter processor architecture for a network device |
CN1606291A (zh) * | 2003-10-06 | 2005-04-13 | 株式会社日立制作所 | 网络处理加速器 |
Also Published As
Publication number | Publication date |
---|---|
GB2502455A (en) | 2013-11-27 |
CN103415836A (zh) | 2013-11-27 |
TW201241746A (en) | 2012-10-16 |
US20120300642A1 (en) | 2012-11-29 |
US8867395B2 (en) | 2014-10-21 |
US8854996B2 (en) | 2014-10-07 |
TWI505185B (zh) | 2015-10-21 |
US20120159132A1 (en) | 2012-06-21 |
DE112011103561T5 (de) | 2013-08-08 |
GB2502455B (en) | 2015-09-16 |
GB201312415D0 (en) | 2013-08-28 |
WO2012080170A1 (en) | 2012-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103415836B (zh) | 加速数据包解析的网络处理器及方法 | |
US9652505B2 (en) | Content search pattern matching using deterministic finite automata (DFA) graphs | |
US8819217B2 (en) | Intelligent graph walking | |
KR101615915B1 (ko) | 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성 | |
US9787693B2 (en) | Graph caching | |
US8176300B2 (en) | Method and apparatus for content based searching | |
CN101095310B (zh) | 分组解析处理器及在处理器中解析分组的方法 | |
US9495479B2 (en) | Traversal with arc configuration information | |
US8180803B2 (en) | Deterministic finite automata (DFA) graph compression | |
US7949683B2 (en) | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph | |
US20110016154A1 (en) | Profile-based and dictionary based graph caching | |
US12058231B2 (en) | Hybrid fixed/programmable header parser for network devices | |
US20190052553A1 (en) | Architectures and methods for deep packet inspection using alphabet and bitmap-based compression | |
US11258707B1 (en) | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation | |
Fiessler et al. | Hypafilter+: Enhanced hybrid packet filtering using hardware assisted classification and header space analysis | |
WO2005109788A2 (en) | Programmable packet parsing processor | |
CN109150584B (zh) | 一种基于simd指令的为网络分组分类提供加速支持的方法 | |
CN105763296A (zh) | 用于在处理资源之间调度网络帧的方法 | |
KR20150041460A (ko) | 패킷 파싱 프로세서와 시스템 및 그 방법 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151216 |