CN114342343B - 一种用于处理数据包的网络数据包处理器 - Google Patents
一种用于处理数据包的网络数据包处理器 Download PDFInfo
- Publication number
- CN114342343B CN114342343B CN201980098739.1A CN201980098739A CN114342343B CN 114342343 B CN114342343 B CN 114342343B CN 201980098739 A CN201980098739 A CN 201980098739A CN 114342343 B CN114342343 B CN 114342343B
- Authority
- CN
- China
- Prior art keywords
- packet
- packet context
- context
- partial
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- 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
- H04L49/3063—Pipelined operation
-
- 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/12—Protocol engines
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种用于处理数据包的网络数据包处理器(100)。数据包上下文与所述数据包相关联。所述网络数据包处理器(100)包括匹配单元(101)和动作单元(103)。所述匹配单元(101)用于在所述数据包内执行模式匹配以提供响应。所述动作单元(103)包括部分数据包上下文生成器,用于根据所述数据包上下文确定与所述数据包相关联的部分数据包上下文。所述动作单元(103)还包括ALU的脉动阵列,用于处理所述部分数据包上下文,以提供处理后的部分数据包上下文。所述动作单元(103)还包括数据包上下文生成器,用于合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。本发明还涉及一种网络交换机、相应的方法以及相应的计算机程序产品。
Description
技术领域
本发明涉及网络数据包处理领域,尤其涉及对匹配动作流水线内数据包的改进处理。
背景技术
通常,网络数据包处理器内的数据包处理由设置在匹配动作流水线中的若干匹配动作(match-action,MA)单元执行。示例性匹配动作流水线如图4所示。示例性动作单元架构如图5所示。
在动作单元内,数据包处理通常由算术逻辑单元(arithmetic-logical unit,ALU)的脉动阵列,即M个阶段内的N个ALU的矩阵执行,这些ALU对与待处理数据包相关联的数据包上下文执行操作。通常,脉动阵列中的每个ALU必须通过输入交叉开关元件从数据包上下文中读取,并且必须通过输出交叉开关元件将结果写回数据包上下文。由于通常采用几百字节的数据包上下文大小,因此需要在数据包上下文与ALU之间使用大量交叉开关元件。
然而,需要使用大量交叉开关元件会导致占用较大芯片面积,同时可能导致较高的网络数据包处理器功耗。此外,需要使用大量交叉开关元件通常还会导致芯片出现时序收敛问题。
发明内容
本发明的目的是提供一种经过改进的用于处理数据包的网络数据包处理器。
该目的通过独立权利要求的特征来实现。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
本发明基于以下事实,即匹配动作流水线内的每个匹配动作单元仅处理有限的功能,例如隧道终结、转发、遥测等。因此,在特定匹配动作单元内,脉动阵列中的ALU仅需访问数据包上下文的一部分,无论是关于输入交叉元素还是输出交叉元素。在所述ALU的脉动阵列开始处理之前,仅将使用的字段提取到相应动作单元中的部分数据包上下文中。然后,每个ALU只能从所述部分数据包上下文中读取并写入其中。因此,减少了需要使用的交叉开关元件数量和相应的芯片面积和时序要求。在脉动阵列处理结束时,将处理后的部分数据包上下文合并(即写回)到所述数据包上下文中。先入先出缓冲区将并行缓冲原始数据包上下文,直到与所述处理后的部分数据包上下文合并。
根据第一方面,本发明涉及一种用于处理数据包的网络数据包处理器。数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段。所述网络数据包处理器包括动作单元。所述动作单元包括部分数据包上下文生成器,用于根据所述数据包上下文确定与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段。所述动作单元还包括ALU的脉动阵列,用于处理所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段。所述动作单元还包括数据包上下文生成器,用于合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。由于所述部分数据包上下文字段是部分地从所述数据包上下文字段中提取的,因此所述部分数据包上下文字段的数量小于所述数据包上下文字段的数量。
根据所述第一方面,在所述网络数据包处理器的第一种实现方式中,所述网络数据包处理器还包括匹配单元,用于在所述数据包内执行模式匹配以提供响应,其中,所述动作单元用于合并所述响应与所述数据包上下文。因此,更新了所述数据包上下文。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第二种实现方式中,所述部分数据包上下文生成器用于将所述多个数据包上下文字段中的至少一个数据包上下文字段传输到所述部分数据包上下文中。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第三种实现方式中,所述数据包上下文生成器用于将所述多个处理后的部分数据包上下文字段中的至少一个处理后的部分数据包上下文字段传输到所述处理后的数据包上下文中。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第四种实现方式中,所述ALU的脉动阵列中的每个ALU用于仅访问所述多个部分数据包上下文字段和所述多个处理后的部分数据包上下文字段。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第五种实现方式中,所述部分数据包上下文的大小小于所述数据包上下文的大小。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第六种实现方式中,所述ALU的脉动阵列可在多个后续ALU阶段内操作,其中,所述ALU的脉动阵列用于处理所述部分数据包上下文,以在第一ALU阶段内提供所述处理后的部分数据包上下文,所述ALU的脉动阵列用于重新处理所述第一ALU阶段内的所述处理后的部分数据包上下文作为第二ALU阶段内的部分数据包上下文。类似地,可以在后续ALU阶段内执行进一步的重新处理。
根据所述第一方面的第六种实现方式,在所述网络数据包处理器的第七种实现方式中,在所述网络数据包处理器的单个处理时钟周期内遍历所述多个后续ALU阶段中的每个后续ALU阶段。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第八种实现方式中,所述ALU的脉动阵列中的每个ALU实现为硬连线电路。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第九种实现方式中,所述ALU的脉动阵列中的每个ALU用于对至少一个部分数据包上下文字段执行至少一个算术运算和/或至少一个逻辑运算和/或至少一个数据操作运算。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第十种实现方式中,所述动作单元还包括多个交叉开关元件,用于将所述多个部分数据包上下文字段与所述ALU的脉动阵列互连,和/或将所述ALU的脉动阵列与所述多个处理后的部分数据包上下文字段互连。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第十一种实现方式中,所述动作单元还包括先入先出缓冲区,用于在所述动作单元内缓冲所述数据包上下文,并将所述数据包上下文提供给所述数据包上下文生成器。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第十二种实现方式中,所述部分数据包上下文生成器、所述ALU的脉动阵列和/或所述数据包上下文生成器均可使用微代码编程。
根据所述第一方面或其任何实现方式,在所述网络数据包处理器的第十三种实现方式中,所述匹配单元和/或所述动作单元构成匹配动作流水线的一部分,用于在所述网络数据包处理器内处理所述数据包。
根据第二方面,本发明涉及一种用于在通信网络中交换数据包的网络交换机。所述网络交换机包括通信接口,用于接收所述数据包。所述网络交换机还包括根据所述第一方面或其任何实现方式所述的网络数据包处理器,用于处理所述数据包。
根据第三方面,本发明涉及一种操作用于处理数据包的网络数据包处理器的方法。所述网络数据包处理器包括动作单元。所述动作单元包括部分数据包上下文生成器、ALU的脉动阵列和数据包上下文生成器。数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段。所述方法包括:所述部分数据包上下文生成器基于所述数据包上下文确定与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段;所述ALU的脉动阵列处理所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段;所述数据包上下文生成器合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。
所述方法可以由所述网络数据包处理器和/或所述网络交换机执行。所述方法的其它特征可以直接从所述网络数据包处理器和/或所述网络交换机的特征和/或功能中得到。
根据第四方面,本发明涉及一种计算机程序产品,包括用于执行根据所述第三方面所述的方法的机器可读代码,特别是微代码。
本发明可以通过硬件和软件实现。
本发明实施例将结合以下附图进行描述,其中:
图1示出了用于处理数据包的网络数据包处理器的示意图;
图2示出了用于交换数据包的网络交换机的示意图;
图3示出了操作网络数据包处理器的方法的示意图;
图4示出了现有技术的匹配动作流水线的示意图;
图5示出了现有技术的动作单元架构的示意图;
图6示出了用于处理数据包的网络数据包处理器的示意图;
图7示出了包括部分数据包上下文生成器、ALU的脉动阵列、数据包上下文生成器和先入先出缓冲区的动作单元的示意图;
图8示出了包括部分数据包上下文生成器、ALU的脉动阵列、数据包上下文生成器和先入先出缓冲区的动作单元的示意图。
在以下附图中,使用相同的附图标记表示相同的或至少功能等同的特征。
具体实施方式
在下面的描述中,参考附图,这些附图构成本发明的一部分,并通过说明的方式示出了本发明可以适用的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其它方面,并可以做出结构上或逻辑上的改变。因此,以下详细描述不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。
例如,可以理解的是,关于所描述方法的公开对于与用于执行所述方法对应的网络数据包处理器和/或网络交换机也同样适用,反之亦然。例如,如果描述了具体的方法步骤,则对应的网络数据包处理器和/或网络交换机可以包括用于执行所描述方法步骤的单元,即使图中未明确描述或示出此类单元。此外,应理解,除非另外明确说明,否则本文中描述的各种示例性方面的特征可以相互组合。
图1示出了用于处理数据包的网络数据包处理器100的示意图。数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段。所述网络数据包处理器100包括匹配单元101和动作单元103。
所述匹配单元101用于在所述数据包内执行模式匹配以提供响应,其中,所述动作单元103用于合并所述响应与所述数据包上下文。所述动作单元103包括部分数据包上下文生成器,用于根据所述数据包上下文确定与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段。所述动作单元103还包括ALU的脉动阵列,用于处理所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段。所述动作单元103还包括数据包上下文生成器,用于合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。
图2示出了用于在通信网络中交换数据包的网络交换机200的示意图。
所述网络交换机200包括通信接口201,用于接收所述数据包。所述网络交换机200还包括网络数据包处理器100,用于处理结合图1描述的数据包。
图3示出了操作用于处理数据包的网络数据包处理器的方法300的示意图。所述网络数据包处理器包括动作单元。所述动作单元包括部分数据包上下文生成器、ALU的脉动阵列和数据包上下文生成器。数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段。
所述方法300包括:所述部分数据包上下文生成器基于所述数据包上下文确定(301)与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段;所述ALU的脉动阵列处理(303)所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段;所述数据包上下文生成器合并(305)所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。
所述方法300可以使用计算机程序产品来执行,所述计算机程序产品包括机器可读代码,特别是微代码。
图4示出了现有技术的匹配动作流水线的示意图。程序员可以定义所需的一组匹配和动作,以便处理数据包。然后,将相应的定义转换为相应的配置、微代码(uCode)和检索表配置集合。所述检索表可以由所述微代码配置,并且所述匹配单元可以访问所述检索表。所述微代码还可以在所述动作单元中使用。
所述匹配动作流水线通常可以在每个处理时钟周期处理新的数据包。在所述匹配单元中,所述匹配动作流水线可以构建不同查找类型和表的检索键,并且可以构建可以执行if-else条件的分支主键。
图5示出了现有技术的动作单元架构的示意图。在所述动作单元中,提供可以对所述数据包上下文执行操作的算术逻辑单元(arithmetic-logical-unit,ALU)。特别地,可以存在ALU的流水线,其处理所述程序员可能已经定义的微代码。所述ALU排列成脉动阵列,即M个阶段内的N个ALU的矩阵。
每个ALU可以基于到达所述MA单元的数据包以及从所述检索表中返回的检索响应从所述数据包上下文中读取,并且可以写回,以更新所述数据包上下文。在所述脉动阵列的每个阶段内,对于每个ALU,所述数据包上下文与所述ALU之间存在大量交叉开关元件。每个ALU通常执行(i)源读取:通过输入交叉开关元件从所述数据包上下文中读取源操作数;(ii)操作数运算(逻辑运算、算术运算或数据操作运算);(iii)写回ALU输出:通过输出交叉开关元件,将结果写入所述数据包上下文中的正确目的地。通常采用几百字节的数据包上下文大小,因此需要在所述数据包上下文与所述ALU之间使用大量交叉开关元件。
图6示出了用于处理数据包的网络数据包处理器100的示意图。数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段。所述网络数据包处理器100包括匹配单元101和动作单元103,所述匹配单元101和动作单元103构成匹配动作流水线的一部分,用于在所述网络数据包处理器100内处理所述数据包。
所述匹配单元101用于在所述数据包内执行模式匹配以提供响应,其中,所述动作单元103用于合并所述响应与所述数据包上下文。
所述动作单元103包括部分数据包上下文生成器601,用于根据所述数据包上下文确定与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段。所述动作单元103还包括ALU的脉动阵列603,用于处理所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段。所述动作单元103还包括数据包上下文生成器605,用于合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。所述部分数据包上下文生成器601、所述ALU的脉动阵列603和/或所述数据包上下文生成器605均可使用微代码编程。所述动作单元103还包括多个交叉开关元件,用于将所述多个部分数据包上下文字段与所述ALU的脉动阵列603互连,和/或将所述ALU的脉动阵列603与所述多个处理后的部分数据包上下文字段互连。所述动作单元103还包括先入先出缓冲区607,用于在所述动作单元103内缓冲所述数据包上下文,并将所述数据包上下文提供给所述数据包上下文生成器605。
所述部分数据包上下文生成器601用于将所述多个数据包上下文字段中的至少一个数据包上下文字段传输到所述部分数据包上下文中。所述数据包上下文生成器605用于将所述多个处理后的部分数据包上下文字段中的至少一个处理后的部分数据包上下文字段传输到所述处理后的数据包上下文中。
所述ALU的脉动阵列603中的每个ALU用于仅访问所述多个部分数据包上下文字段和所述多个处理后的部分数据包上下文字段。因此,所述部分数据包上下文的大小小于所述数据包上下文的大小。
所述ALU的脉动阵列603可在多个后续ALU阶段内操作,其中,所述ALU的脉动阵列603用于处理所述部分数据包上下文,以在第一ALU阶段内提供所述处理后的部分数据包上下文,所述ALU的脉动阵列603用于重新处理所述第一ALU阶段内的所述处理后的部分数据包上下文作为第二ALU阶段内的部分数据包上下文。类似地,可以在后续ALU阶段内执行进一步的重新处理。例如,第三ALU阶段可以重新处理所述第二ALU阶段内的所述处理后的部分数据包上下文,以此类推。在所述网络数据包处理器100的单个处理时钟周期内遍历所述多个后续ALU阶段中的每个后续ALU阶段。所述ALU的脉动阵列603中的每个ALU用于对至少一个部分数据包上下文字段执行至少一个算术运算和/或至少一个逻辑运算和/或至少一个数据操作运算。所述ALU的脉动阵列603中的每个ALU实现为硬连线电路。
图7示出了包括部分数据包上下文生成器601、ALU的脉动阵列603、数据包上下文生成器605和先入先出缓冲区607的动作单元103的示意图。所述动作单元103具有与结合图6描述的动作单元103相同的特征和/或功能。
在所述动作单元103内,所述ALU的脉动阵列603仅需要访问所述数据包上下文的一部分。在每个匹配动作单元内,所述部分数据包上下文可以根据各自的要求而有所不同。对于每个匹配动作单元,可以定义所需的数据包上下文,用于读取或修改。仅被覆盖的字段不需要复制到所述部分数据包上下文中。这些字段可以在所述数据包上下文生成器605处被覆盖。
换言之,所述部分数据包上下文可以从完整数据包上下文构建。原始数据包上下文可以并行存储在所述先入先出缓冲区607中。所述脉动阵列603中的ALU可以根据需要仅访问所述部分数据包上下文。在所述脉动阵列603处理结束时,所述数据包上下文生成器605可以基于更新后的部分数据包上下文更新所述数据包上下文。
例如,该方法的效率可以取决于以下方面的效率:所述脉动阵列603之前的所述部分数据包上下文生成器601、所述脉动阵列603之后的所述数据包上下文生成器605、所述脉动阵列603内的所述ALU的数量以及所述部分数据包上下文大小与所述完整数据包上下文大小的比较。
例如,所述数据包上下文大小可以为~512B,所述部分数据包上下文大小可以为~128-192B,所述ALU的访问字解析数可以为4B。因此,来自所述完整数据包上下文的每个ALU的所述输入交叉开关元件将需要128x1个交叉开关,而来自所述部分数据包上下文的每个ALU的所述输入交叉开关元件将需要32-48个交叉开关。
图8示出了包括部分数据包上下文生成器601、ALU的脉动阵列603、数据包上下文生成器605和先入先出缓冲区607的动作单元103的示意图。所述动作单元103具有与结合图6和图7描述的动作单元103相同的特征和/或功能。
例如,完整数据包上下文可以包括输入匹配动作单元的数据包上下文和查找响应数据。基于所述完整数据包上下文,需要或可以读取的所有字段在所述匹配动作单元中被复制或修改到所述部分数据包上下文中。对执行读取、修改和写入操作的字段进行修改。例如:A=A+1;A=A|B。可能不需要将字段复制到仅被覆盖的所述部分上下文字段。例如,在所需操作为A=B的情况下,仅需将B复制到所述部分数据包上下文中即可。所述数据包上下文存储在所述先入先出缓冲区607中,不含响应数据。执行所需动作。从所述先入先出缓冲区607中提取所述数据包上下文。写回被修改或需要写回到原始数据包上下文的所有字段。
下面提供了所述处理的示例性伪代码。在此方面,使用以下命名惯例:Pck.Cntx.A–数据包上下文中的字段A;Rsp.A–来自响应的字段A;Tmp.A–时间变量A;Partial.A–部分数据包上下文中的字段A。
在该示例中,到达的数据包上下文包括字段B、字段E和字段F至字段Z。所述响应包括字段A、字段D和字段E。所述数据包上下文由所述数据包上下文先入先出缓冲区607存储。字段C由操作Pck.Cntx.C=Tmp.B+1提供,示例如下所示;该字段在所述输入数据包上下文中尚不存在。此外,字段A在输入数据包上下文中也尚不存在,在所述响应中提供。
编译器可以提供以下微代码(uCode):
·Pck.Cntx.A=Rsp.A;
·Tmp.B=Pck.Cntx.B&Rsp.A;
·Pck.Cntx.C=Tmp.B+1;
·Pck.Cntx.D=Rsp.D+1;
·Pck.Cntx.E=Tmp.B>4?Rsp.E:Pck.Cntx.E;
所述部分数据包上下文生成器601从所述数据包上下文和所述响应中复制如下字段:
·Partial.Rsp.A=Rsp.A;
·Partial.Cntx.B=Pck.Cntx.B;
·Partial.Rsp.D=Rsp.D;
·Partial.Rsp.E=Rsp.E;
·Partial.Cntx.E=Pck.Cntx.E;
所述ALU的脉动阵列603可以执行以下微代码(uCode)操作,从而按所述N个ALU阶段执行:
·Partial.Pck.Cntx.A=Paritial.Rsp.A;
·Partial.Tmp.B=Partial.Cntx.B&Partial.Rsp.D;
·Partial.Pck.Cntx.C=Partial.Tmp.B+1;
·Partial.Pck.Cntx.D=Partial.Rsp.D+1;
·Partial.Pck.Cntx.E=Partial.Tmp.B>4?Partial.Rsp.E:Partial.Rsp.D;
所述数据包上下文生成器605可以执行以下操作:
·Pck.Cntx.A=Partial.Pck.Cntx.A;
·Pck.Cntx.C=Partial.Pck.Cntx.C;
·Pck.Cntx.D=Partial.Pck.Cntx.D;
·Pck.Cntx.E=Partial.Pck.Cntx.E;
在该示例中,所有其它字段保持不变。
尽管本发明的特定特征或方面可能已经仅结合几种实现方式或实施例中的一种进行公开,但此类特征或方面可以和其它实现方式或实施例中的一个或多个特征或方面相结合,只要对任何给定或特定的应用有需要或有利即可。此外,在一定程度上,术语“包括”、“有”、“具有”或这些术语的其它变形在具体实施例或权利要求书中使用,此类术语和所述术语“包含”是类似的,都是表示包括的含义。同样,术语“示例性的”、“例如”仅表示为示例,而不是最好或最佳的。可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可以用于指示两个元件彼此协作或交互,而不管它们是直接物理接触还是电接触,或者它们彼此不直接接触。
尽管本文中已说明和描述特定方面,但本领域普通技术人员应了解,多种替代和/或等效实现方式可在不脱离本发明的范围的情况下替代所示和描述的特定方面。该申请旨在覆盖本文论述的特定方面的任何修改或变更。尽管以上权利要求书中的元件是利用对应的标签按照特定顺序列举的,但是除非对权利要求的阐述另有暗示用于实现部分或所有这些元件的特定顺序,否则这些元件不必限于以所述特定顺序来实现。
通过以上启示,对于本领域技术人员来说,许多替代、修改和变化是显而易见的。当然,本领域技术人员容易认识到除本文所述的应用之外,还存在本发明的众多其它应用。虽然已参考一个或多个特定实施例描述了本发明,但本领域技术人员将认识到,在不脱离本发明的范围的情况下,仍可对所述实施例进行许多改变。因此,应当理解,只要是在所附权利要求书及其等效物的范围内,可以用不同于本文具体描述的方式来实施本发明。
Claims (15)
1.一种用于处理数据包的网络数据包处理器(100),其特征在于,数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段,所述网络数据包处理器(100)包括:
动作单元(103),包括:
部分数据包上下文生成器(601),用于根据所述数据包上下文确定与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段;
算术逻辑单元(arithmetic-logical unit,ALU)的脉动阵列(603),用于处理所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段;
数据包上下文生成器(605),用于合并所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。
2.根据权利要求1所述的网络数据包处理器(100),其特征在于,还包括:
匹配单元(101),用于在所述数据包内执行模式匹配以提供响应;
其中,所述动作单元(103)用于合并所述响应与所述数据包上下文。
3.根据上述权利要求1或2所述的网络数据包处理器(100),其特征在于,所述部分数据包上下文生成器(601)用于将所述多个数据包上下文字段中的至少一个数据包上下文字段传输到所述部分数据包上下文中。
4.根据上述权利要求1或2所述的网络数据包处理器(100),其特征在于,所述数据包上下文生成器(605)用于将所述多个处理后的部分数据包上下文字段中的至少一个处理后的部分数据包上下文字段传输到所述处理后的数据包上下文中。
5.根据上述权利要求1或2所述的网络数据包处理器(100),其特征在于,所述ALU的脉动阵列(603)中的每个ALU用于仅访问所述多个部分数据包上下文字段和所述多个处理后的部分数据包上下文字段。
6.根据上述权利要求1或2所述的网络数据包处理器(100),其特征在于,所述部分数据包上下文的大小小于所述数据包上下文的大小。
7.根据上述权利要求1或2所述的网络数据包处理器(100),其特征在于,所述ALU的脉动阵列(603)在多个后续ALU阶段内操作,其中,所述ALU的脉动阵列(603)用于处理所述部分数据包上下文,以在第一ALU阶段内提供所述处理后的部分数据包上下文,所述ALU的脉动阵列(603)用于重新处理所述第一ALU阶段内的所述处理后的部分数据包上下文作为第二ALU阶段内的部分数据包上下文。
8.根据权利要求7所述的网络数据包处理器(100),其特征在于,在所述网络数据包处理器(100)的单个处理时钟周期内遍历所述多个后续ALU阶段中的每个后续ALU阶段。
9.根据上述权利要求1所述的网络数据包处理器(100),其特征在于,所述ALU的脉动阵列(603)中的每个ALU实现为硬连线电路。
10.根据上述权利要求1所述的网络数据包处理器(100),其特征在于,所述动作单元(103)还包括:
多个交叉开关元件,用于将所述多个部分数据包上下文字段与所述ALU的脉动阵列(603)互连,和/或将所述ALU的脉动阵列(603)与所述多个处理后的部分数据包上下文字段互连。
11.根据上述权利要求1所述的网络数据包处理器(100),其特征在于,所述动作单元(103)还包括:
先入先出缓冲区(607),用于在所述动作单元(103)内缓冲所述数据包上下文,并将所述数据包上下文提供给所述数据包上下文生成器(605)。
12.根据上述权利要求1所述的网络数据包处理器(100),其特征在于,所述部分数据包上下文生成器(601)、所述ALU的脉动阵列(603)和/或所述数据包上下文生成器(605)使用微代码编程。
13.一种用于在通信网络中交换数据包的网络交换机(200),其特征在于,所述网络交换机(200)包括:
通信接口(201),用于接收所述数据包;
根据上述权利要求中任一项所述的网络数据包处理器(100),用于处理所述数据包。
14.一种操作用于处理数据包的网络数据包处理器(100)的方法(300),其特征在于,所述网络数据包处理器(100)包括动作单元(103),所述动作单元(103)包括部分数据包上下文生成器(601)、算术逻辑单元(arithmetic-logical unit,ALU)的脉动阵列(603)和数据包上下文生成器(605),数据包上下文与所述数据包相关联,所述数据包上下文包括多个数据包上下文字段,所述方法(300)包括:
所述部分数据包上下文生成器(601)基于所述数据包上下文确定(301)与所述数据包相关联的部分数据包上下文,所述部分数据包上下文包括多个部分数据包上下文字段;
所述ALU的脉动阵列(603)处理(303)所述部分数据包上下文,以提供处理后的部分数据包上下文,所述处理后的部分数据包上下文包括多个处理后的部分数据包上下文字段;
所述数据包上下文生成器(605)合并(305)所述处理后的部分数据包上下文与所述数据包上下文,以提供处理后的数据包上下文。
15.一种计算机可读存储介质,其特征在于,存储用于执行根据权利要求14所述的方法(300)的机器可读代码。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2019/071748 WO2021028029A1 (en) | 2019-08-13 | 2019-08-13 | A network packet processor for processing a data packet |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114342343A CN114342343A (zh) | 2022-04-12 |
CN114342343B true CN114342343B (zh) | 2024-11-15 |
Family
ID=67620495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980098739.1A Active CN114342343B (zh) | 2019-08-13 | 2019-08-13 | 一种用于处理数据包的网络数据包处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12255975B2 (zh) |
EP (1) | EP4011051B1 (zh) |
CN (1) | CN114342343B (zh) |
WO (1) | WO2021028029A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095310A (zh) * | 2004-04-26 | 2007-12-26 | 思科技术公司 | 可编程分组解析处理器 |
CN101227493A (zh) * | 2006-11-30 | 2008-07-23 | 捷讯研究有限公司 | 用于维持分组协议上下文的系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4811210A (en) * | 1985-11-27 | 1989-03-07 | Texas Instruments Incorporated | A plurality of optical crossbar switches and exchange switches for parallel processor computer |
US7069372B1 (en) * | 2001-07-30 | 2006-06-27 | Cisco Technology, Inc. | Processor having systolic array pipeline for processing data packets |
US7382787B1 (en) * | 2001-07-30 | 2008-06-03 | Cisco Technology, Inc. | Packet routing and switching device |
US20050165985A1 (en) * | 2003-12-29 | 2005-07-28 | Vangal Sriram R. | Network protocol processor |
US9525760B1 (en) * | 2013-10-02 | 2016-12-20 | Marvell International Ltd. | Dynamic processing context |
US10218730B2 (en) * | 2016-07-29 | 2019-02-26 | ShieldX Networks, Inc. | Systems and methods of stateless processing in a fault-tolerant microservice environment |
US10423446B2 (en) * | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
-
2019
- 2019-08-13 WO PCT/EP2019/071748 patent/WO2021028029A1/en unknown
- 2019-08-13 EP EP19753088.4A patent/EP4011051B1/en active Active
- 2019-08-13 CN CN201980098739.1A patent/CN114342343B/zh active Active
-
2022
- 2022-02-10 US US17/668,843 patent/US12255975B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095310A (zh) * | 2004-04-26 | 2007-12-26 | 思科技术公司 | 可编程分组解析处理器 |
CN101227493A (zh) * | 2006-11-30 | 2008-07-23 | 捷讯研究有限公司 | 用于维持分组协议上下文的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4011051A1 (en) | 2022-06-15 |
CN114342343A (zh) | 2022-04-12 |
US12255975B2 (en) | 2025-03-18 |
US20220166859A1 (en) | 2022-05-26 |
WO2021028029A1 (en) | 2021-02-18 |
EP4011051B1 (en) | 2024-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
JP3547139B2 (ja) | プロセッサ | |
TW202125287A (zh) | 用於矩陣運算加速器之指令的裝置,方法和系統 | |
JP6498226B2 (ja) | プロセッサおよび方法 | |
TWI517039B (zh) | 用以對緊縮資料執行差異解碼之系統,設備,及方法 | |
JP6082116B2 (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
TW201820125A (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
KR101851439B1 (ko) | 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들 | |
EP2668577A2 (en) | Unrolling quantifications to control in-degree and/or out degree of automaton | |
JPH0816391A (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
JP2017538213A (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
TW201732734A (zh) | 用於加速圖形分析的設備及方法 | |
US7139899B2 (en) | Selected register decode values for pipeline stage register addressing | |
JP2003044273A (ja) | データ処理装置及びデータ処理方法 | |
JPH0248732A (ja) | 命令パイプライン方式のマイクロプロセッサ | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
TW201810034A (zh) | 用於累和的系統、設備及方法 | |
CN114342343B (zh) | 一种用于处理数据包的网络数据包处理器 | |
US7047396B1 (en) | Fixed length memory to memory arithmetic and architecture for a communications embedded processor system | |
TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 | |
US7401328B2 (en) | Software-implemented grouping techniques for use in a superscalar data processing system | |
TWI544408B (zh) | 用於滑動視窗資料收集之設備及方法 | |
TWI339354B (en) | Microcontroller instruction set | |
EP1132813A2 (en) | Computer with high-speed context switching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |