CN104866284A - 用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置 - Google Patents

用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置 Download PDF

Info

Publication number
CN104866284A
CN104866284A CN201410843199.4A CN201410843199A CN104866284A CN 104866284 A CN104866284 A CN 104866284A CN 201410843199 A CN201410843199 A CN 201410843199A CN 104866284 A CN104866284 A CN 104866284A
Authority
CN
China
Prior art keywords
processing engine
sdn
input
defined network
software defined
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
Application number
CN201410843199.4A
Other languages
English (en)
Other versions
CN104866284B (zh
Inventor
A·T·特兰
G·施密特
T·丹尼尔
M·巴兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of CN104866284A publication Critical patent/CN104866284A/zh
Application granted granted Critical
Publication of CN104866284B publication Critical patent/CN104866284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1013Network architectures, gateways, control or user entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Abstract

本发明的实施例涉及在软件定义网络(SDN)处理引擎中快速和条件的数据修改和生成。多个输入的修改和多个输出的生成可以并行地执行。每个输入或输出数据的大小可以是大量的,诸如数百字节。处理引擎包括控制路径和数据路径。控制路径生成用于修改输入和生成新输出的指令。数据路径执行所有由控制路径生成的指令。处理引擎通常是可编程的,使得用于数据处理和生成的条件和规则可以被重新配置,依赖于处理引擎所支持的网络功能和协议。SDN处理引擎允许用于处理多个大尺寸的数据流,并且在操作该数据上是有效的。SDN处理引擎实现具有多个背靠背输入和输出数据流的满吞吐量。

Description

用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置
技术领域
本发明涉及软件定义网络处理引擎中的多个数据流的操作。更具体地,本发明涉及用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置。
背景技术
软件定义网络(SDN)技术允许网络对新标准、协议和服务快速且容易的适应。SDN将网络抽象分离成两个单独的面:控制面和数据传输面。该分离允许网络操作者通过配置/编程控制面而同时重复使用昂贵的现有数据传输面来快速地更改网络的功能(feature)和/或添加新的功能到网络。SDN能够降低部署新的功能和服务的成本和时间。面分离的网络基础设施也能够简化网络操作者的管理任务。
每个SDN设备经常被要求并行地处理多个高吞吐量的数据流。在这种SDN设备中,存在一个或者多个对操作数据负责的处理引擎。在这些处理引擎中的数据操作依赖于数据的内容本身以及被配置用于SDN设备的网络功能。这些处理引擎处理的数据可以是大型的,每个可以多达数百字节。
现有技术基于ASIC的设计并不像SDN处理引擎中所期待的,提供足够的灵活性用于重新编程和/或重新配置以执行不同的网络功能。否则,为实现这些引擎使用现有技术水平的64位通用CPU不能满足SDN设备的网络带宽和延迟的需要,而SDN设备被要求每周期处理数百数据字节。由于它们在逻辑单元能力方面的限制和在它们的内部互连接线的高复杂性(内部互连接线的高复杂性使FPGA芯片以高延迟运行在低频下),使用FPGA的其它现有技术实现对于执行高吞吐量的复杂的网络协议也不合适。
发明内容
软件定义网络(SDN)处理引擎被提出用于并行和条件数据操作。用户能够根据他们想要SDN处理引擎支持的功能和协议编程用于数据处理的条件和规则。SDN处理引擎可以并行地处理满吞吐量的多个输入和输出。SDN处理引擎包括两个路径:控制路径和数据路径。控制路径包括控制位提取器、字比较锥、多级MUX/LUT逻辑锥和指令表。控制路径被配置用来检测输入是否满足经配置的网络功能的特定条件。基于检测结果,控制路径生成用于修改输入和/或生成新输出的指令。数据路径包括延时匹配队列和指令执行块。数据路径执行控制路径生成的指令。所有指令被并行地执行,用于同步操作多个数据流。由于所提出的处理引擎是可编程的,它比硬件专用的ASIC设计更加灵活,并且因此可以在SDN设备中采用。
在一方面,提供了软件定义网络(SDN)处理引擎。SDN处理引擎包括用于可编程指令的条件生成的控制路径和用于执行由控制路径生成的指令的数据路径。处理引擎通常被配置以并行地接收N个输入并生成M个输出。在一些实施例中,M输出中每个的内容或是被修改的输入内容,或是新生成的内容。
在一些实施例中,控制路径包括用于从N个输入提取控制位的控制位提取器、用于比较N个输入的字的字比较锥、用于对字比较锥的控制位和结果位执行复杂表达式和条件的多级MUX/LUT逻辑锥、和包含用于数据操作的指令的多个指令表。控制位提取器、字比较锥、多级MUX/LUT逻辑锥、和/或多个指令表是基于用户想要处理引擎执行的网络功能和协议而可重新配置的和可编程的。
在一些实施例中,控制位提取器基于输入的预定义格式从N个输入提取控制位。
在一些实施例中,字比较锥包括K个可重新配置的MUX/CMP逻辑单元。MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元能够用于比较来自N个输入的两个W字节的字。MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元可以被配置成允许仅比较W字节字中的每个W字节的字的W字节中的特定位和/或允许将来自输入之一的W字节的字与常数值进行比较。在一些实施例中,MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元支持至少三个操作,包括等于(==)、大于(>)和小于(<)。
在一些实施例中,MUX/LUT逻辑锥包括S级。S级的第一级具有包括处理引擎的N个输入的控制位和字比较锥的输出位的输入位。级i的所有输出位是用于级i+1的输入位。MUX/LUT逻辑锥的最后一级的输出位形成用于读取多个指令表的索引。
在一些实施例中,级i包括Pi个可重新配置的MUX/LUT单元。MUX/CMP逻辑单元中的每个MUX/LUT单元包括用于从输入位选择到MUX/LUT单元的L个任意位的L个多路复用器。L个被选择的位被配置作为用于具有2L位的查询表cfg_LUT的指针。cfg_LUT的输出是1位的。在一些实施例中,cfg_LUT是由触发器构建的。
在一些实施例中,使用合成工具将复杂逻辑表达式和条件映射到MUX/LUT逻辑锥。该合成工具的一示例是加州大学伯克利分校的ABC工具。
在一些实施例中,多个指令表包括T个可编程指令表。MUX/LUT逻辑锥的输出形成索引,该索引是用于T可编程指令表的读取地址。T至少等于处理引擎的M个输出,使得M个输出中每个与至少一个可编程指令表相关联。在一些实施例中,T个可编程指令表中的表i具有Ai位的地址,其中表i具有多达2Ai的条目。表i的每个条目包含Qi个指令。在一些实施例中,T个可编程指令表中每个可编程指令表都是从SRAM或从触发器的阵列中构建的。
在一些实施例中,处理引擎支持包括复制指令和ALU指令的至少两种指令。每个复制指令将多达C个字节从输入复制到输出。备选地,每个复制指令将常数值复制到输出。每个ALU指令将2W字节的字的ALU操作的结果从输入复制到输出。ALU操作的输入可以是常数值。ALU操作可以是加(+)、减(-)、按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、或者按位右移(>>)。在一些实施例中,复制或ALU指令中每个都通过在该指令中使用位掩码字段来支持位或字节操作。
在一些实施例中,数据路径包括用于将数据路径的延迟匹配到控制路径的延迟,以使得数据在正确的时机被处理的延时匹配队列,和用于执行由控制路径产生的、用于修改特定输入和/或生成新输出的所有指令的指令执行块。
延时匹配队列可以是具有等于控制路径延迟的深度、以使得处理引擎实现具有背靠背数据处理的满吞吐量的FIFO或移位寄存器。
在一些实施例中,指令执行块包括用于并行地执行由控制路径产生的所有指令的硬件模块。每个硬件模块执行指令之一。
在一些实施例中,当输出的初始内容在所有指令被执行前是特定输入的内容时,处理引擎的输出是特定输入的修改。备选地,当输出的初始内容在所有指令被执行前是全零时,处理引擎的输出是新生成的。
在另一方面,提供了在软件定义网络(SDN)处理引擎中的并行和条件数据操作的方法。在一些实施例中,处理引擎是可编程的。
该方法包括接收N个输入和通过控制路径和数据路径将N个输入流经处理引擎。该方法也包括从N个输入中同时提取控制位、比较N个输入的字、并且通过延时队列发送N个输入。该方法也包括对控制位和来自比较的结果位执行复杂的表达式和条件,由此返回索引。该方法也包括基于索引取回被配置为引导如何修改N个输入和如何生成M个输出的指令。该方法也包括对N个输入并行地执行指令,由此生成M输出。
在一些实施例中,M个输出中每个的内容是新生成的和/或是N个输入之一的修改的内容。
在一些实施例中,提取、比较、复杂表达式和条件及指令表被在处理引擎的控制路径中实现,并且延时队列和指令的执行是在处理引擎的数据路径中实现的。
在一些实施例中,处理引擎的N个输入和M个输出中每个的数据格式包括用于标识数据大小的“长度”字段、用于标识有效载荷的第一字解的位置的“偏移”字段、用于标识数据类型的“控制”字段、和用于包括有效载荷的“体”字段。
附图说明
图1图示了根据本发明的一个实施例的用于在SDN系统中的并行和条件数据操作的SDN处理引擎的框图。
图2图示了根据本发明的一个实施例的图1的SDN处理引擎的每个数据输入和输出的格式。
图3图示了根据本发明的一个实施例的字比较锥的框图。
图4图示了根据本发明的一个实施例的MUX/CMP逻辑单元的示意图。
图5图示了根据本发明的一个实施例的MUX/LUT逻辑锥的框图。
图6图示了根据本发明的一个实施例的MUX/LUT单元的示意图。
图7图示了根据本发明的一个实施例的指令表的框图。
图8A图示了根据本发明的一个实施例的复制指令的格式。
图8B图示了根据本发明的一个实施例的实现图8A的复制指令的示意图。
图9A图示了根据本发明的一个实施例的ALU指令的格式。
图9B图示了根据本发明的一个实施例的实现图9A的ALU指令的示意图。
如附图所图示的,从本发明的示例实施例的下面的更具体的描述中,上文将显而易见。在附图中,相同的附图标记贯穿不同的视图指相同的部件。图不一定成比例,相反重点应该放在图示本发明的实施例上。
具体实施方式
在下面的详细描述中,为了解释的原因阐明各种细节。然而,一个本领域的普通技术人员将意识到本发明可以在不使用这些特定细节的情况下被实施。因此,本发明并不旨在被限制到所示出的实施例,而是被给予与本文所描述的原理和特征相一致的最宽广的范围。
软件定义网络(SDN)处理引擎被提出用于并行和条件数据操作。用户能够根据他们想要SDN处理引擎支持的功能和协议来编程用于数据处理的条件和规则。SDN处理引擎可以并行地处理满吞吐量的多个输入和输出。SDN处理引擎包括两个路径:控制路径和数据路径。控制路径包括控制位提取器、字比较锥、多级MUX/LUT逻辑锥和指令表。控制路径被配置用来检查输入是否满足经配置的网络功能的特定条件。基于检查结果,控制路径生成用于修改输入和/或生成新输出的指令。数据路径包括延时匹配队列和指令执行块。数据路径被配置以执行控制路径生成的指令。所有指令被并行地执行,用于同时操作多个数据流。由于所提出的处理引擎是可编程的,它比硬件专用的ASIC设计更加灵活,并且因此可以在SDN设备中采用。
图1图示了根据本发明的一个实施例的用于在SDN系统的并行和条件数据操作的SDN处理引擎100的框图。数据通常通过两个路径流过SDN处理引擎100:控制路径105和数据路径110。
控制路径105包括控制位提取器(CBE)115、字比较锥(WCC)120、MUX/LUT逻辑锥(MLLC)125、和指令表130。控制路径105负责根据在锥中编程的条件生成指令。术语“锥”在这里指一组级联的逻辑元件,它们可重新配置用于执行各种复杂的逻辑表达式和条件检查。在一些方面,术语“锥”可以被指为逻辑“云”。在控制路径105中的所有模块115至130优选地是可编程的。
数据路径110包括延时匹配队列135和指令执行块140。数据路径110负责执行由控制路径105产生的用于修改输入数据和/或用于生成新输出数据的指令。
SDN处理引擎110接收N个输入并生成M个输出。SDN处理引擎100的M个输出中每个输出都可以是新生成的数据,或者可以是SDN处理引擎100的N个输入之一的修改的版本。这些M个输出的内容完全依赖于用户如何配置和编程SDN处理引擎100的控制路径105中的模块115至130。
由于N个输入和M个输出中的每个可以具有不同的大小,因此所述大小以一种数据格式被标识使得N个输入和M个输出可以被SDN处理引擎100正确地处理。图2图示了根据本发明的一个实施例的SDN处理引擎100的每个输入和输出数据200的数据格式。每个输入和输出数据200通常包括四个字段:“长度”字段205、“偏移”字段210、“控制”字段215和“体”字段220。
“长度”字段205标识相应数据的长度或大小。大小通常以字节数计。“偏移”字段210标识数据中“体”字段220的第一字节的位置。换句话说,“偏移”字段210标识“控制”字段215的大小。“控制”字段215包括标识包封在数据中的主要特征的最重要的位。例如,“控制”字段215被配置以标识数据类型,诸如以太网帧、IP包、TCP应用数据、或查询数据结果,或标识数据的优先级。“体”字段220包括数据的体或有效载荷。
重新参考图1,SDN处理引擎100通常等待直到所有N个输入在处理之前是可用的,从而SDN处理引擎100具有N个输入之间的所有共同的信息。所有N个输入在被SDN处理引擎100处理之前被结合在一起,成为很大的数据块。
输入的“控制”字段通常包括输入的最重要的位。同样地,这些控制位被CBE 115提取。所有提取的控制位被控制路径105中的MLLC 125进一步处理,使得SDN处理引擎100将能够决定怎么处理输入和如何生成输出。
同时,所有N个输入也被发送到WCC 120。SDN处理引擎100在WCC 120处检查输入中的特定字是否等于(匹配)、大于、或小于输入中的其它特定字。字检查结果指明输入的对SDN处理引擎100有用的关系和特点,为进一步处理这些输入做决定。
图3图示了根据本发明的一个实施例的字比较锥(WCC)300的框图。在一些实施例中,图1的WCC 120被如WCC 200类似地配置。WCC 300包括K个可重新配置的多路复用/比较(MUX/CMP)逻辑单元305、其中所有N个输入被发送到MUX/CMP逻辑单元305。每个MUX/CMP逻辑单元305被配置以执行字比较。WCC 300允许SDN处理引擎100为N个输入并行地执行K个字比较并且返回K个字比较结果位。
图4图示了根据本发明的一个实施例的MUX/CMP逻辑单元400的示意图。在一些实施例中,图3的MUX/CMP逻辑单元305被如MUX/CMP逻辑单元400类似地配置。MUX/CMP逻辑单元400被配置以比较N个输入中的两个特定的W字节的字。MUX/CMP逻辑单元400的配置优选地是由软件通过其寄存器的。在一些实施例中,MUX/CMP逻辑单元400的设计使用多个寄存器和多个多路复用器。“cfg_muxA_SrcID”寄存器指明N个输入中哪个输入被MuxA405选择。“cfg_muxA_ByteOffset”寄存器指明从中抓取字节的选择的输入中的起始字节。从该起始字节位置,从用于MuxA 405的选择的输入中抓取W个连续的字节。类似地,使用“cfg_muxB_SrcID”寄存器和“cfg_muxB_ByteOffset”寄存器从用于MuxB 410的选择的输入抓取W个字节。W通常是2字节(16位)或4字节(32位)。然而,W可以是另一值。在一些实施例中,W代表从输入抓取的字节的最大数目,并且被引擎的设计者选择。
通常,MuxA 405和MuxB 410的两个选择的W字节的字被一起比较。然而,在一些示例中,在MuxA 405和MuxB 410的两个选择的W字节的字中只有特定的位需要被比较。如果用户想要只比较两个选择的字中的特定的位,则可以和选择的字一起使用两个位掩码寄存器,即“cfg_muxA_BitMask”和“cfg_muxB_BitMask”。这两个位掩码寄存器也可以用于比较具有少于W个字节的两个字的情况。例如,如果W是4,位掩码寄存器可以被设置以比较来自N个输入的两个4字节的字、或两个3字节的字、或两个2字节的字、或两个1字节的字。
然而,在一些示例中,从N个输入选择的字需要与常数值比较。如果用户想要将两个选择的字之一与常数值比较,可以与位掩码寄存器一起使用两个寄存器,即“cfg_muxA_IsConst”和“cfg_muxB_IsConst”。具体地,如果“cfg_muxA_IsConst”是1,则“cfg_muxA_BitMask”寄存器变成MuxA 405的常数值。类似地,如果“cfg_muxB_IsConst”是1,则“cfg_muxA_BitMask”寄存器变成MuxB 410的常数值。重复使用位掩码寄存器用于常数值有利地降低了MUX/CMP逻辑单元的硬件成本。
通过使用“cfg_CompareCode”寄存器选择MUX/CMP逻辑单元400的期望的比较操作。在一些实施例中,支持三个比较操作:等于(==)、大于(>)和小于(<)。MUX/CMP逻辑单元400返回1位输出,该输出指明比较结果是真还是假。
虽然可以支持或多或少的比较操作,但是可以简单地使用两个MUX/CMP逻辑单元来执行不同的操作。例如,如果需要大于或等于(>=)操作,可以使用第一MUX/CMP逻辑单元来执行大于操作,以及可以使用第二MUX/CMP逻辑单元来执行等于操作。从这两个MUX/CMP逻辑单元产生的两个位表明比较是真还是假(即,11表示真,而10和01都表示假)。
重新参考图3,WCC 300中的K个MUX/CMP逻辑单元305返回K个字比较结果位,每个结果位来自K个MUX/CMP逻辑单元305之一。应当明白,在字比较锥中存在越多的MUX/CMP逻辑单元,就可以并行地执行越多的字比较操作,但是以硬件为代价。K通常在8到32之间。然而,K可以是另一值,只要不小于SDN处理引擎中的输入的数目(例如N)。
重新参考图1,所有从CBE 115提取出的控制位和来自WCC 120的K个结果位被结合到一起并且发送到MLLC 125。MLLC 125优选地是可配置的。MLLC 125检查控制比特和K个结果比特中的特定位是否满足用户配置用于SDN处理引擎100的网络功能的一些条件。基于检查结果,MLLC 125被配置以驱动用于读取指令表130的索引,指令表130生成用于修改输入和/或生成新输出的指令。
图5图示了根据本发明的一个实施例的MUX/LUT逻辑锥(MLLC)500的框图。在一些实施例中,图1的MLLC 125被如MLLC 500类似地配置。MLLC 500包括S级,其中级i包括Pi个多路复用/查找(MUX/LUT)单元505。用于级0的输入位是来自诸如CBE 115的控制位提取器的全部的控制位和来自字比较锥120的K个结果位。用于级0的输出位是用于级1的输入位。通常,级i中的所有MUX/LUT单元的输出位是级i+1中的MUX/LUT单元的输入位。最后一级的输出位形成用于读取图1的指令表130的地址的索引。
图6图示了根据本发明的一个实施例的MUX/LUT单元600的示意图。在一些实施例中,图5的MUX/LUT单元505被如MUX/LUT单元600类似地配置。MUX/LUT单元600包括L个允许从其输入位中选择L个特定位的多路复用器(MUX)605。这些L个MUX 605优选地是通过L个寄存器可重新配置的。来自这些L个MUX 605的L个选择的位形成指向可重新配置的查找表(cfg_LUT)610的索引。cfg_LUT 610具有对应于其L位索引的2L位。对于进入MUX/LUT单元600的每个输入,只有一个结果位被cfg_LUT 610返回。在一些实施例中,cfg_LUT 610是由触发器构建,因为cfg_LUT 610通常具有很小数目的条目,并且每个条目是仅仅1位的。
MUX/LUT单元600被配置以执行从其输入位选择的L位的任何布尔表达式。例如,假定(1)L是3,(2)三个选择的位是a、b和c,以及(3)布尔表达式X=(a&b|c)被检查。如果a和b都是1或者如果c是1,则X是1。如果a、b和c是索引I的三个位,则如果I等于110(2)=6、111(2)=7、001(2)=1、011(2)=3或101(2)=5,则X是1。因此,8位cfg_LUT被编程为11101010(2)
重新参考图5,由于MLLC 500中每级都包括多个MUX/LUT单元505,每级都能够并行地执行检查输入位的几个布尔表达式。而且,由于MLLC 500包括多级,MLLC 500能够并行地检查复杂的表达式。MLLC 500中的每级可以包括相同或者不同数目的MUX/LUT单元505。
应当明白的是MUX/LUT单元中有越多的MUX,在一级中就有越多的MUX/LUT单元,和/或在MLLC中有越多的级,SDN处理引擎的检查能力就越强,但是以硬件为代价。MUX/LUT单元通常具有四至六个MUX,一级通常具有32至128个MUX/LUT单元,以及MLLC 500通常具有三至六级。然而,在MUX/LUT单元中或多或少的MUX是可能的。在一级中或多或少的MUX/LUT也是可能的。类似地,在MLLC中或多或少的级是可能的。
为了编程图1的MLLC 125以执行特定表达式和条件,可以使用合成工具将这些表达式映射到逻辑锥结构中。例如,可以使用由加州大学伯克利分校的科学家开发的名为ABC的开源软件将代表几种网络配置和协议(诸如以太网、VLAN、路由、桥连、iVIF、ACL查找)的表达式和条件映射到MLLC 125。
MLLC 125返回用于读取指令表130的指令表索引。这些表索引是在每组输入的逻辑锥中编程的条件和表达式的结果。对于不同的输入,由MLLC 125输出的表索引可以是不同的。因此,不同的指令将被指令表130返回。这些指令被配置以引导如何修改SDN处理引擎100的输入以及在SDN处理引擎100的数据路径110中如何生成输出。
SDN处理引擎100装备有T个指令表。由于SDN处理引擎100具有M个输出,T必须至少等于M从而M输出中每个都与至少一个表关联。SDN处理引擎100的输出可以与多个指令表关联,但是没有单独的表可以属于两个或者更多的输出。将指令表分配给SDN处理引擎中的每个输出端口是由SDN处理引擎的设计者所选择的设计选项。
图7图示了根据本发明的一个实施例的指令表700的框图。在一些实施例中,图1的指令表130如指令表700类似地配置。每个表705的读取地址是从诸如MLLC 125的MLLC的输出位抓取。表i具有Ai位地址,这意味着表i具有多达2Ai的条目。应当明白的是,表705中条目越多,引擎操作响应输出数据的灵活性就越大,但是以硬件为代价。表705的条目的数目通常在16至256之间,这意味着表705的地址宽度是在4至8位之间。然而,在表705中或多或少的条目是可能的。在一些实施例中,表705是从SRAM存储器或从触发器的阵列中构建。
表i的每个条目包括Qi个指令。因此,表i将返回Qi个指令用于其中输入数据是可用的每个循环。所有这些Qi个指令被在SDN处理引擎的数据路径中并行地执行以生成与表i相关的输出j。
所有指令被在数据路径中并行地执行。应当明白的是,在一个表中每个条目有越多的指令,对于每个输出就有越多的数据操作可以被并行地执行,但是以硬件为代价。对于从输入被修改的输出,其相应表的每个条目的指令的数目通常在4至8之间。对于新生成的输出,其相应的表的每个条目的指令的数目通常在8至16之间。
重新参考图1,由指令表130返回的所有指令被发送到数据路径140中的指令执行块140。指令执行块140并行地执行所有这些指令。在指令被在数据路径110中执行之前,至SDN处理引擎100的所有N个输入穿过用于与控制路径105的延迟匹配的延时匹配队列135。延时匹配队列135可以是具有等于控制路径105的延迟的深度的FIFO或移位寄存器,使得来自控制路径105的指令在正确的时间与相应的延时的输入一起被接收。此外,延时匹配队列135保证SDN处理引擎100实现在输入端口具有背靠背数据的满吞吐量。
在一些实施例中,SDN处理引擎100支持两种指令:复制指令和ALU指令。复制指令执行从输入复制特定字节并且将它们粘贴到输出的特定位置。ALU指令从输入抓取两个特定字,然后执行ALU操作,并且最终将ALU结果复制到输出的特定位置。虽然SDN处理引擎100支持两种指令,但是SDN处理引擎100可以支持或多或少的指令。
图8A图示了根据本发明的一个实施例的复制指令800的格式。图8B图示了根据本发明的一个实施例的实现复制指令800的示意图。通常,硬件设计850在SDN处理引擎的数据路径110中执行复制指令800。
“En”字段805指明该指令是否被执行。如果指令被激活(位“En”是1),则“Src_ID”字段810用于在输入中选择一个输入。“Src_Byteoffset”字段815指向在其中最多复制C个字节的选择的输入中的第一字节位置。在一些实施例中,C在4字节与8字节之间。“BitMask”字段820用于掩码复制字节中的特定位。这允许用户执行复制少于C字节或者除了复制整个C字节之外复制位。复制指令800通过将“IsConst”字段805设置为1也允许复制常数值。在这种情况下,常数值由“BitMask”字段820给出。最终,复制和掩码字节或者常数字节被复制到目的地输出。它们在由“Dst_ByteOffset”字段830给出的起始位置处重写在相应输出中的字节。
图9A图示了根据本发明的一个实施例的ALU指令900的格式。图9B图示了根据本发明的一个实施例的实现ALU指令900的示意图。通常硬件设计960在SDN处理引擎的数据路径110中执行ALU指令900。
“En”字段905指明该指令是否被执行。类似于复制指令800,“SrcA_ID”字段915、“SrcA_ByteOffset”字段920和“SrcA_BitMask”字段925被用于从srcA的输入复制和掩码多达W个字节。“SrcB_ID”字段935、“SrcB_ByteOffset”字段940和“SrcB_BitMask”字段945被用于从srcB的输入复制和掩码多达W个字节。用户也可以为srcA或srcB赋常数值。如果“SrcA_IsConst”字段930被设置为1,srcA具有等于在“SrcA_BitMask”字段925中设置的值的常数值。如果“SrcB_IsConst”字段950被设置为1,srcB具有等于在“SrcB_BitMask”字段945中设置的值的常数值。复制的字节W的数目是依赖于ALU支持的位宽而预定义的。W通常是2字节(16位)或者4字节(32位)。然而,W可以是另一值。
用于srcA和srcB的复制的字节和常数值成为ALU的两个操作数。ALU的操作是由“OpCode”字段910选择的。用于SDN处理引擎的最有用的操作是:加(+)、减(-)、按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、和按位右移(>>)。通过将操作配置为源与零加或按位或,ALU指令也用作复制指令。然后ALU结果在“Dst_ByteOffset”字段955给出的起始字节位置处被复制到目的地输出。
如果初始内容在所有指令被执行之前是输入的内容,则输出是特定输入的修改。如果初始内容在所有指令被执行之前是全零,则输出被新生成。
每个输出具有它自己的指令表,并且每个指令表返回多个指令。所有这些指令被并行地执行以构建相应的输出。在SDN系统中,复制操作比ALU操作更加频繁地使用。此外,ALU指令更加复杂,因此具有比复制指令更多的硬件成本。因此,每个表条目通常只具有一至二个ALU指令,而剩余的是复制指令以实现最成本有效的设计。
本发明的实施例涉及在软件定义网络(SDN)处理引擎中快速和条件的数据修改和生成。多个输入的修改和多个输出的生成可以并行地执行。每个输入或输出数据的大小可以是大量的,诸如数百字节。处理引擎包括控制路径和数据路径。控制路径生成用于修改输入和生成新输出的指令。数据路径执行所有由控制路径生成的指令。处理引擎通常是可编程的,使得用于数据处理和生成的条件和规则可以依赖于处理引擎所支持的网络功能和协议而被重新配置。SDN处理引擎允许用于处理多个大尺寸的数据流,并且在操作该数据上是有效的。SDN处理引擎实现具有多个背靠背输入和输出数据流的满吞吐量。
一个本领域普通技术人员将意识到也存在其它用法和优点。虽然已经参考多个特定细节描述本发明,但是一个本领域普通技术人员将认识到在不偏离本发明的精神的前提下本发明可以以其它特定形式实施。因此,一个本领域普通技术人员将理解本发明不受前文示例性的细节限制,而是由所附的权利要求限定。

Claims (36)

1.一种软件定义网络(SDN)处理引擎,包括:
控制路径,用于可编程指令的条件生成;以及
数据路径,用于执行由所述控制路径生成的所述指令,
其中所述处理引擎被配置以并行地接收N个输入并生成M个输出。
2.根据权利要求1所述的软件定义网络(SDN)处理引擎,其中所述M个输出中每个输出的内容是修改的输入内容之一或者是新生成的内容。
3.根据权利要求1所述的软件定义网络(SDN)处理引擎,其中所述控制路径包括:
控制位提取器,用于从所述N个输入提取控制位;
字比较锥,用于比较所述N个输入的字;
多级MUX/LUT逻辑锥,用于对所述控制位和所述字比较锥的结果位执行复杂表达式和条件;以及
多个指令表,包含用于数据操作的指令。
4.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中所述控制位提取器、所述字比较锥、所述多级MUX/LUT逻辑锥和所述多个指令表中至少一个是基于用户想要所述处理引擎执行的网络功能和协议而可重新配置的和可编程的。
5.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中所述控制位提取器基于输入的预定义格式而从所述N个输入提取所述控制位。
6.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中所述字比较锥包括K个可配置的MUX/CMP逻辑单元。
7.根据权利要求6所述的软件定义网络(SDN)处理引擎,其中所述MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元用于比较来自所述N个输入的两个W字节的字。
8.根据权利要求7所述的软件定义网络(SDN)处理引擎,其中仅比较所述W字节字中的每个W字节字的所述W个字节中的特定位。
9.根据权利要求6所述的软件定义网络(SDN)处理引擎,其中所述MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元用于将来自所述输入之一的一个W字节字与常数值进行比较。
10.根据权利要求6所述的软件定义网络(SDN)处理引擎,其中所述MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元支持至少三个操作,其中所述三个操作是等于(==)、大于(>)和小于(<)。
11.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中所述MUX/LUT逻辑锥包括S级,其中:
所述S级的第一级具有输入位,所述输入位包括所述处理引擎的所述N个输入的所述控制位和所述字比较锥的所述输出位,
级i的所有输出位是用于级i+1的输入位,以及
所述S级的最后一级的输出位形成用于读取所述多个指令表的索引。
12.根据权利要求11所述的软件定义网络(SDN)处理引擎,其中所述级i包括Pi个可配置的MUX/LUT单元。
13.根据权利要求12所述的软件定义网络(SDN)处理引擎,其中所述MUX/CMP逻辑单元中的每个MUX/LUT单元包括用于从输入位中选择到所述MUX/LUT单元的L个任意位的L个多路复用器。
14.根据权利要求13所述的软件定义网络(SDN)处理引擎,其中所述L个选择的位被配置作为用于具有2L位的查询表cfg_LUT的指针,并且其中所述cfg_LUT的输出是1位的。
15.根据权利要求14所述的软件定义网络(SDN)处理引擎,其中所述cfg_LUT是由触发器构建。
16.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中合成工具被用于将复杂的逻辑表达式和条件映射到所述MUX/LUT逻辑锥。
17.根据权利要求3所述的软件定义网络(SDN)处理引擎,其中所述多个指令表包括T个可编程指令表,并且其中所述MUX/LUT逻辑锥的输出形成作为用于所述T个可编程指令表的读取地址的索引,并且其中T至少等于所述处理引擎的所述M个输出,以使得所述M个输出中的每个输出与所述T个可编程指令表中至少一个可编程指令表相关联。
18.根据权利要求17所述的软件定义网络(SDN)处理引擎,其中所述T个可编程指令表的表i具有Ai位地址,其中所述表i具有多达2Ai的条目。
19.根据权利要求18所述的软件定义网络(SDN)处理引擎,其中表i的每个条目包含Qi个指令。
20.根据权利要求17所述的软件定义网络(SDN)处理引擎,其中所述T个可编程指令表中每个可编程指令表是从SRAM或者从触发器阵列构建的。
21.根据权利要求1所述的软件定义网络(SDN)处理引擎,其中所述处理引擎支持包括复制指令和ALU指令的至少两种指令。
22.根据权利要求21所述的软件定义网络(SDN)处理引擎,其中所述复制指令将多达C个字节从输入复制到输出。
23.根据权利要求21所述的软件定义网络(SDN)处理引擎,其中所述复制指令将常数值复制到输出。
24.根据权利要求21所述的软件定义网络(SDN)处理引擎,其中所述ALU指令将2W字节字的ALU操作的结果从输入复制到输出。
25.根据权利要求24所述的软件定义网络(SDN)处理引擎,其中所述ALU操作的输入是常数值。
26.根据权利要求25所述的软件定义网络(SDN)处理引擎,其中所述ALU操作是加(+)、减(-)、按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、和按位右移(>>)之一。
27.根据权利要求21所述的软件定义网络(SDN)处理引擎,其中所述复制或ALU指令中每个通过使用在该指令中的位掩码字段来支持位或字节操作。
28.根据权利要求1所述的软件定义网络(SDN)处理引擎,其中所述数据路径包括:
延时匹配队列,用于将所述数据路径的延迟匹配到所述控制路径的延迟,以使得数据在正确的时机被处理;以及
指令执行块,用于执行由所述控制路径产生的、用于修改特定输入或者生成新输出的所有指令。
29.根据权利要求28所述的软件定义网络(SDN)处理引擎,其中所述延时匹配队列是具有等于所述控制路径的所述延迟的深度的FIFO和移位寄存器之一,以使得所述处理引擎利用背靠背数据处理实现满吞吐量。
30.根据权利要求28所述的软件定义网络(SDN)处理引擎,其中所述指令执行块包括用于并行地执行由所述控制路径产生的所有指令的硬件模块,其中所述硬件模块中每个都执行所述指令之一。
31.根据权利要求28所述的软件定义网络(SDN)处理引擎,其中当输出的初始内容在所有指令被执行之前是特定输入的所述内容时,所述输出是所述特定输入的修改,并且其中当所述输出的所述初始内容在所有指令被执行之前是全零时,所述输出是新生成的。
32.一种在软件定义网络(SDN)处理引擎中的并行和条件数据操作的方法,所述方法包括:
接收N个输入;
通过控制路径和数据路径将所述N个输入流经所述处理引擎;
从所述N个输入中同时提取控制位,比较所述N个输入的字,并且通过延时队列发送所述N个输入;
对所述控制位和来自所述比较的输出位执行复杂表达式和条件,由此返回索引;
基于所述索引,取回被配置为引导如何修改所述N个输入和如何生成M个输出的指令;以及
对所述N个输入并行地执行所述指令,由此生成所述M个输出。
33.根据权利要求32所述的方法,其中所述提取、所述比较、所述复制表达式和条件及指令表是在所述控制引擎的所述控制路径中实现的,并且所述延时队列和所述指令的所述执行是在所述处理引擎的所述数据路径中实现的。
34.根据权利要求32所述的方法,其中所述M个输出中每个输出的内容是新生成的和/或是所述N个输入之一的修改的内容。
35.根据权利要求32所述的方法,其中所述处理引擎的所述N个输入和所述M个输出中的每个的数据格式包括:
用于标识数据大小的“长度”字段;
用于标识有效载荷的第一字节的位置的“偏移”字段;
用于标识数据类型的“控制”字段;和
用于包括所述有效载荷的“体”字段。
36.根据权利要求32所述的方法,其中所述处理引擎是可编程的。
CN201410843199.4A 2013-12-30 2014-12-30 用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置 Active CN104866284B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/144,260 2013-12-30
US14/144,260 US9880844B2 (en) 2013-12-30 2013-12-30 Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine

Publications (2)

Publication Number Publication Date
CN104866284A true CN104866284A (zh) 2015-08-26
CN104866284B CN104866284B (zh) 2019-05-28

Family

ID=53481841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410843199.4A Active CN104866284B (zh) 2013-12-30 2014-12-30 用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置

Country Status (6)

Country Link
US (1) US9880844B2 (zh)
JP (1) JP6537823B2 (zh)
KR (1) KR20150079475A (zh)
CN (1) CN104866284B (zh)
HK (1) HK1208943A1 (zh)
TW (1) TW201543359A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308114B1 (en) * 2013-12-23 2022-04-19 Cazena, Inc. Platform for provisioning a data analytics environment
US10003676B2 (en) * 2015-02-20 2018-06-19 Cavium, Inc. Method and apparatus for generating parallel lookup requests utilizing a super key
CN106095360B (zh) * 2016-05-31 2018-11-27 福州瑞芯微电子股份有限公司 基于调色板的图像处理方法和图像处理装置
CN109818762B (zh) * 2017-11-20 2022-03-08 中国电信股份有限公司 用于实现sdn控制器自动注册的方法、适配器和系统
KR101858957B1 (ko) * 2017-12-12 2018-05-17 주식회사 위더스플래닛 Sdn 기반 중앙 집중식 wlan 네트워크 구축을 위한 제어 시스템
US11146506B2 (en) 2018-12-14 2021-10-12 At&T Intellectual Property I, L.P. Parallel data processing for service function chains spanning multiple servers
US10805164B2 (en) 2018-12-14 2020-10-13 At&T Intellectual Property I, L.P. Controlling parallel data processing for service function chains

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050240911A1 (en) * 2004-04-26 2005-10-27 Douglas Hundley System and method for tokening documents
WO2007085949A2 (en) * 2006-01-26 2007-08-02 Nokia Siemens Networks Oy Apparatus, method and computer program product providing radio network controller internal dynamic hsdpa flow control using one of fixed or calculated scaling factors
US20090323383A1 (en) * 2007-04-23 2009-12-31 Maxim Mondaeev Comparing data representations to stored patterns
CN102314345A (zh) * 2010-07-07 2012-01-11 Arm有限公司 在专用功能硬件和使用软件例程间切换以生成结果数据
CN103270467A (zh) * 2010-12-22 2013-08-28 英特尔公司 用于软件定义指令的可重配置感测平台

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) * 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) * 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
US6667984B1 (en) 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
DE60026229T2 (de) 2000-01-27 2006-12-14 International Business Machines Corp. Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
US6831917B1 (en) 2000-05-10 2004-12-14 Cisco Technology, Inc. Network address translation for multicast virtual sourcing
US7075926B2 (en) * 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
EP1553738A1 (en) * 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
US8259715B2 (en) 2007-07-25 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for traffic load balancing to multiple processors
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
US9159420B1 (en) 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) * 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9973599B2 (en) * 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050240911A1 (en) * 2004-04-26 2005-10-27 Douglas Hundley System and method for tokening documents
WO2007085949A2 (en) * 2006-01-26 2007-08-02 Nokia Siemens Networks Oy Apparatus, method and computer program product providing radio network controller internal dynamic hsdpa flow control using one of fixed or calculated scaling factors
US20090323383A1 (en) * 2007-04-23 2009-12-31 Maxim Mondaeev Comparing data representations to stored patterns
CN102314345A (zh) * 2010-07-07 2012-01-11 Arm有限公司 在专用功能硬件和使用软件例程间切换以生成结果数据
CN103270467A (zh) * 2010-12-22 2013-08-28 英特尔公司 用于软件定义指令的可重配置感测平台

Also Published As

Publication number Publication date
JP2015165649A (ja) 2015-09-17
CN104866284B (zh) 2019-05-28
KR20150079475A (ko) 2015-07-08
JP6537823B2 (ja) 2019-07-03
US9880844B2 (en) 2018-01-30
TW201543359A (zh) 2015-11-16
US20150186143A1 (en) 2015-07-02
HK1208943A1 (zh) 2016-03-18

Similar Documents

Publication Publication Date Title
US20230275835A1 (en) Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
CN104866284A (zh) 用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置
US11789965B2 (en) Method and apparatus for accelerated format translation of data in a delimited data format
US10902013B2 (en) Method and apparatus for accelerated record layout detection
US9633097B2 (en) Method and apparatus for record pivoting to accelerate processing of data fields
US20190108177A1 (en) Method and Apparatus for Accelerated Format Translation of Data in a Delimited Data Format
US10313495B1 (en) Compiler and hardware interactions to remove action dependencies in the data plane of a network forwarding element
US10003676B2 (en) Method and apparatus for generating parallel lookup requests utilizing a super key

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1208943

Country of ref document: HK

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California, USA

Applicant before: Cavium, Inc.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200427

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: California, USA

Patentee before: Cavium, Inc.