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

文档序号:8543492阅读:224来源:国知局
用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置的制造方法
【技术领域】
[0001]本发明涉及软件定义网络处理引擎中的多个数据流的操作。更具体地,本发明涉及用于软件定义网络处理引擎中的并行和条件数据操作的方法和装置。
【背景技术】
[0002]软件定义网络(SDN)技术允许网络对新标准、协议和服务快速且容易的适应。SDN将网络抽象分离成两个单独的面:控制面和数据传输面。该分离允许网络操作者通过配置/编程控制面而同时重复使用昂贵的现有数据传输面来快速地更改网络的功能(feature)和/或添加新的功能到网络。SDN能够降低部署新的功能和服务的成本和时间。面分离的网络基础设施也能够简化网络操作者的管理任务。
[0003]每个SDN设备经常被要求并行地处理多个高吞吐量的数据流。在这种SDN设备中,存在一个或者多个对操作数据负责的处理引擎。在这些处理引擎中的数据操作依赖于数据的内容本身以及被配置用于SDN设备的网络功能。这些处理引擎处理的数据可以是大型的,每个可以多达数百字节。
[0004]现有技术基于ASIC的设计并不像SDN处理引擎中所期待的,提供足够的灵活性用于重新编程和/或重新配置以执行不同的网络功能。否则,为实现这些引擎使用现有技术水平的64位通用CPU不能满足SDN设备的网络带宽和延迟的需要,而SDN设备被要求每周期处理数百数据字节。由于它们在逻辑单元能力方面的限制和在它们的内部互连接线的高复杂性(内部互连接线的高复杂性使FPGA芯片以高延迟运行在低频下),使用FPGA的其它现有技术实现对于执行高吞吐量的复杂的网络协议也不合适。

【发明内容】

[0005]软件定义网络(SDN)处理引擎被提出用于并行和条件数据操作。用户能够根据他们想要SDN处理引擎支持的功能和协议编程用于数据处理的条件和规则。SDN处理引擎可以并行地处理满吞吐量的多个输入和输出。SDN处理引擎包括两个路径:控制路径和数据路径。控制路径包括控制位提取器、字比较锥、多级MUX/LUT逻辑锥和指令表。控制路径被配置用来检测输入是否满足经配置的网络功能的特定条件。基于检测结果,控制路径生成用于修改输入和/或生成新输出的指令。数据路径包括延时匹配队列和指令执行块。数据路径执行控制路径生成的指令。所有指令被并行地执行,用于同步操作多个数据流。由于所提出的处理引擎是可编程的,它比硬件专用的ASIC设计更加灵活,并且因此可以在SDN设备中米用。
[0006]在一方面,提供了软件定义网络(SDN)处理引擎。SDN处理引擎包括用于可编程指令的条件生成的控制路径和用于执行由控制路径生成的指令的数据路径。处理引擎通常被配置以并行地接收N个输入并生成M个输出。在一些实施例中,M输出中每个的内容或是被修改的输入内容,或是新生成的内容。
[0007]在一些实施例中,控制路径包括用于从N个输入提取控制位的控制位提取器、用于比较N个输入的字的字比较锥、用于对字比较锥的控制位和结果位执行复杂表达式和条件的多级MUX/LUT逻辑锥、和包含用于数据操作的指令的多个指令表。控制位提取器、字比较锥、多级MUX/LUT逻辑锥、和/或多个指令表是基于用户想要处理引擎执行的网络功能和协议而可重新配置的和可编程的。
[0008]在一些实施例中,控制位提取器基于输入的预定义格式从N个输入提取控制位。
[0009]在一些实施例中,字比较锥包括K个可重新配置的MUX/CMP逻辑单元。MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元能够用于比较来自N个输入的两个W字节的字。MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元可以被配置成允许仅比较W字节字中的每个W字节的字的W字节中的特定位和/或允许将来自输入之一的W字节的字与常数值进行比较。在一些实施例中,MUX/CMP逻辑单元中的每个MUX/CMP逻辑单元支持至少三个操作,包括等于(==)、大于O)和小于(O。
[0010]在一些实施例中,MUX/LUT逻辑锥包括S级。S级的第一级具有包括处理引擎的N个输入的控制位和字比较锥的输出位的输入位。级i的所有输出位是用于级i+Ι的输入位。MUX/LUT逻辑锥的最后一级的输出位形成用于读取多个指令表的索引。
[0011]在一些实施例中,级i包括PiA可重新配置的MUX/LUT单元。MUX/CMP逻辑单元中的每个MUX/LUT单元包括用于从输入位选择到MUX/LUT单元的L个任意位的L个多路复用器。L个被选择的位被配置作为用于具有21位的查询表cfg_LUT的指针。cfg_LUT的输出是I位的。在一些实施例中,cfg_LUT是由触发器构建的。
[0012]在一些实施例中,使用合成工具将复杂逻辑表达式和条件映射到MUX/LUT逻辑锥。该合成工具的一示例是加州大学伯克利分校的ABC工具。
[0013]在一些实施例中,多个指令表包括T个可编程指令表。MUX/LUT逻辑锥的输出形成索引,该索引是用于T可编程指令表的读取地址。T至少等于处理引擎的M个输出,使得M个输出中每个与至少一个可编程指令表相关联。在一些实施例中,T个可编程指令表中的表i具有^位的地址,其中表i具有多达2 41的条目。表i的每个条目包含Q ,个指令。在一些实施例中,T个可编程指令表中每个可编程指令表都是从SRAM或从触发器的阵列中构建的。
[0014]在一些实施例中,处理引擎支持包括复制指令和ALU指令的至少两种指令。每个复制指令将多达C个字节从输入复制到输出。备选地,每个复制指令将常数值复制到输出。每个ALU指令将2W字节的字的ALU操作的结果从输入复制到输出。ALU操作的输入可以是常数值。ALU操作可以是加(+)、减(_)、按位与(&)、按位或(|)、按位异或Γ)、按位左移?O、或者按位右移(>>)。在一些实施例中,复制或ALU指令中每个都通过在该指令中使用位掩码字段来支持位或字节操作。
[0015]在一些实施例中,数据路径包括用于将数据路径的延迟匹配到控制路径的延迟,以使得数据在正确的时机被处理的延时匹配队列,和用于执行由控制路径产生的、用于修改特定输入和/或生成新输出的所有指令的指令执行块。
[0016]延时匹配队列可以是具有等于控制路径延迟的深度、以使得处理引擎实现具有背靠背数据处理的满吞吐量的FIFO或移位寄存器。
[0017]在一些实施例中,指令执行块包括用于并行地执行由控制路径产生的所有指令的硬件模块。每个硬件模块执行指令之一。
[0018]在一些实施例中,当输出的初始内容在所有指令被执行前是特定输入的内容时,处理引擎的输出是特定输入的修改。备选地,当输出的初始内容在所有指令被执行前是全零时,处理引擎的输出是新生成的。
[0019]在另一方面,提供了在软件定义网络(SDN)处理引擎中的并行和条件数据操作的方法。在一些实施例中,处理引擎是可编程的。
[0020]该方法包括接收N个输入和通过控制路径和数据路径将N个输入流经处理引擎。该方法也包括从N个输入中同时提取控制位、比较N个输入的字、并且通过延时队列发送N个输入。该方法也包括对控制位和来自比较的结果位执行复杂的表达式和条件,由此返回索引。该方法也包括基于索引取回被配置为引导如何修改N个输入和如何生成M个输出的指令。该方法也包括对N个输入并行地执行指令,由此生成M输出。
[0021]在一些实施例中,M个输出中每个的内容是新生成的和/或是N个输入之一的修改的内容。
[0022]在一些实施例中,提取、比较、复杂表达式和条件及指令表被在处理引擎的控制路径中实现,并且延时队列和指令的执行是在处理引擎的数据路径中实现的。
[0023]在一些实施例中,处理引擎的N个输入和M个输出中每个的数据格式包括用于标识数据大小的“长度”字段、用于标识有效载荷的第一字解的位置的“偏移”字段、用于标识数据类型的“控制”字段、和用于包括有效载荷的“体”字段。
【附图说明】
[0024]图1图示了根据本发明的一个实施例的用于在SDN系统中的并行和条件数据操作的SDN处理引擎的框图。
[0025]图2图示了根据本发明的一个实施例的图1的SDN处理引擎的每个数据输入和输出的格式。
[0026]图3图示了根据本发明的一个实施例的字比较锥的框图。
[0027]图4图示了根据本发明的一个实施例的MUX/CMP逻辑单元的示意图。
[0028]图5图示了根据本发明的一个实施例的MUX/LUT逻辑锥的框图。
[0029]图6图示了根据本发明的一个实施例的MUX/LUT单元的示意图。
[0030]图7图示了根据本发明的一个实施例的指令表的框图。
[0031]图8A图示了根据本发明的一个实施例的复制指令的格式。
[0032]图8B图示了根据本发明的一个实施例的实现图8A的复制指令的示意图。
[0033]图9A图示了根据本发明的一个实施例的ALU指令的格式。
[0034]图9B图示了根据本发明的一个实施例的实现图9A的ALU指令的示意图。
[0035]如附图所图示的,从本发明的示例实施例的下面的更具体的描述中,上文将显而易见。在附图中,相同的附图标记贯穿不同的视图指相同的部件。图不一定成比例,相反重点应该放在图示本发明的实施例上。
【具体实施方式】
[0036]在下面的详细描述中,为了解释的原因阐明各种细节。然而,一个本领域的普通技术人员
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1