使用赛灵思FPGA加速包处理
时间:10-18
来源:互联网
点击:
随着 10Gb 以太网发展趋于成熟,且业界甚至已开始期待 40GbE 和 100GbE 以太网的出现,新一代网络基础架构方兴未艾。融合型网络在流量处理方面向可扩展开放式平台提出了全新的挑战。新一代融合型基础设施底板通常由高性能兆兆位 (TB) 交换结构和可编程内容处理器构成,能够在复杂性不断增长且层出不穷的各类应用中处理应用层高达数 10 Gb 的流量。CloudShield 已创建了一系列全新的可编程包处理器,能够对包进行检测、分类、修改以及复制,融合与应用层的动态交互。
我们的流程加速子系统 (FAST) 采用 Xilinx? Virtex?-class FPGA 来完成为 CloudShield 深度包处理与修改 (CloudShield Deep Packet Processing and Modification) 刀片的包预处理。这些 FPGA 包含 10Gb 以太网 MAC,并为每个端口配备了用于分类及密钥提取的入口处理器 (ingress processor)、用于包修改的出口处理器 (egress processor)、使用四倍数据速率 (QDR) SRAM的包队列、基于赛灵思 Aurora 的消息传输通道以及基于三态内容可寻址存储器 (TCAM) 的搜索引擎。我们的 FPGA 芯片组能够以最少的 CPU 参与来完成包的高速缓存及处理,可实现每秒高达 40Gb 的高性能处理能力。其采用 2 至 7 层字段查询法,能够根据动态可重配置规则在线速条件下以灵活和可确定的方式进行包修改。
FAST 包处理器的核心功能
我们当前部署的深度包处理刀片采用两个刀片存取控制器 FPGA 和一个包交换 FPGA,所有这些都通过 LX110T Virtex-5 FPGA 来实施。每个刀片存取控制器都具备使用两个赛灵思10GbE MAC/PHY 内核实现的数据层连接功能、基于赛灵思 ChipSyncTM 技术的芯片间接口以及使用赛灵思 IP 核的包处理功能。包交换 PFGA 使用标准的赛灵思 SPI-4.2 IP 核来实现与我们的网络处理器 (NPU) 及我们的 IP 核搜索引擎接口相连。
为了将片上系统的设计重点集中在包处理功能上,我们尽可能使用标准的赛灵思 IP 核。我们选用赛灵思 10Gb 以太网 MAC 内核配合双 GTP 收发器来实施 4 x 3.125-Gbps 的 XAUI 物理层接口。针对 NPU 接口,我们使用了带动态相位对准与 ChipSync 技术且支持每 LVDS 差分对高达 1Gbps 速率的赛灵思 SPI-4 Phase 2 内核。我们主要的包处理 IP 核如下:
? FAST 包处理器:FPP 的入口包处理器 (FIPP) 负责第一层包解析、密钥与数据流 ID 的散列生成以及按端口进行的第 3 层至第 4 层校验和验证。FPP 的出口包处理器 (FEPP) 可执行出口包修改并重新计算第 3 层至第 4 层的校验和。
? FAST 搜索引擎:我们 FSE 在 TCAM 和 QDR SRAM 中维护着一个流数据库,可用于决定需要在入口包上执行的处理任务。该 FSE 可从每个端口的 FIPP 处接受密钥消息,决定针对该包需要执行的处理任务,然后将结果消息返还给原始发出消息的队列。
? FAST 数据队列:我们的数据队列 (FDQ) 可在“无序”保持缓冲器中存储传送进来的包。当入口包被写入到 QDR SRAM 时,该队列将密钥消息从 FIPP 发送至 FAST 搜索引擎。该 FSE 将使用这一密钥来决定如何处理此包,然后将结果消息返还给 FDQ。根据该结果消息,队列可对每个缓冲的包进行转发、复制或丢弃处理。此外,该队列还可对已转发或已复制的包独立进行包修改。
数据流的输入与输出
图 1 显示了流经我们流量加速子系统的数据流。核心 FPGA 功能以绿色表示,包数据流为黄色,控制消息为蓝色,外部器件则为灰色。
首先,我们可从 10GbE 网络端口所接收到的包来识别客户数据流的开始。每个端口上的包都会进入 FAST 入口包处理器进行包解析与分析(图中的 1 号)。在对协议和封包进行分类之后,FIPP 可定位第 2、3 以及 4 层的报头偏移量。接下来是数据流散列与密钥抽取(数据流选择查找规则,如使用源 IP 地址、目的地 IP 地址、源和目的地端口和协议的五元组法 (5-tuple))。
此时,我们的队列管理器缓冲器负责接收包,以释放外部 QDR SRAM 的存储器页面。在此阶段接收到的包都被认为是无序的。在等待 FAST 调度的同时,我们将它们置于外部 QDR SRAM 中。FAST 数据队列(图中的 2 号)分配包 ID,并向 FAST 搜索引擎(图中的 3 号)分派密钥消息。FAST 搜索引擎使用该密钥来识别数据流。外部 TCAM 中匹配的数据流条目可在关联的 SRAM 中向数据流任务表 (Flow Action Table) 提供索引。匹配的数据流任务根据客户配置的应用订阅进行确定。
FAST 搜索引擎向 FDQ(图中的 4 号)发送结果消息进行回复,然后由任务调度程序根据其指定的任务将包分配给某个输出队列。然后我们从包队列中将包解至专用的目的地输出端口(图中的 5 号),其中我们的 FAST 出口包处理器(图中的 6 号)可根据指定任务的要求按数据流修改表 (Flow Modification Table) 中的规则处理包修改。
如果我们的 FAST 搜索引擎能够与客户数据流的匹配,则会执行指定的任务,如果不能,就执行默认的规则(丢弃或发送至 NPU)。我们允许的基本任务包括:丢弃包、将包直接转发至网络端口、将包转发给异常包处理 NPU 或复制包并依据独立规则转发包。我们的扩展任务包括包塌缩 (Packet collapse)(删除包的一部分)、包扩展/写入(在包中插入一系列字节)、包覆盖 (packet overwrite)(修改一系列字节)及其组合。以包覆盖规则为例,可以是修改MAC 源地址或目的地地址、修改 VLAN 的内或外部标记 (tag),或更改第 4 层报头标记。插入/删除的例子可以是简单到删除现有的 EtherType、插入 MPLS 标签或者 VLAN Q-in-Q 标记,也可以是复杂到需要先插入一个作为 GRE 交付报头的 IP 报头,接着紧随一个 GRE 报头(通用路由协议封装 (GRE) 是一种隧道协议,具体参阅因特网 RFC 1702 号文件)。

图 1 – 流加速子系统中的数据流

图 2 – 针对 Type II 以太网 TCP/IP 包的 5 元组密钥提取
我们的流程加速子系统 (FAST) 采用 Xilinx? Virtex?-class FPGA 来完成为 CloudShield 深度包处理与修改 (CloudShield Deep Packet Processing and Modification) 刀片的包预处理。这些 FPGA 包含 10Gb 以太网 MAC,并为每个端口配备了用于分类及密钥提取的入口处理器 (ingress processor)、用于包修改的出口处理器 (egress processor)、使用四倍数据速率 (QDR) SRAM的包队列、基于赛灵思 Aurora 的消息传输通道以及基于三态内容可寻址存储器 (TCAM) 的搜索引擎。我们的 FPGA 芯片组能够以最少的 CPU 参与来完成包的高速缓存及处理,可实现每秒高达 40Gb 的高性能处理能力。其采用 2 至 7 层字段查询法,能够根据动态可重配置规则在线速条件下以灵活和可确定的方式进行包修改。
FAST 包处理器的核心功能
我们当前部署的深度包处理刀片采用两个刀片存取控制器 FPGA 和一个包交换 FPGA,所有这些都通过 LX110T Virtex-5 FPGA 来实施。每个刀片存取控制器都具备使用两个赛灵思10GbE MAC/PHY 内核实现的数据层连接功能、基于赛灵思 ChipSyncTM 技术的芯片间接口以及使用赛灵思 IP 核的包处理功能。包交换 PFGA 使用标准的赛灵思 SPI-4.2 IP 核来实现与我们的网络处理器 (NPU) 及我们的 IP 核搜索引擎接口相连。
为了将片上系统的设计重点集中在包处理功能上,我们尽可能使用标准的赛灵思 IP 核。我们选用赛灵思 10Gb 以太网 MAC 内核配合双 GTP 收发器来实施 4 x 3.125-Gbps 的 XAUI 物理层接口。针对 NPU 接口,我们使用了带动态相位对准与 ChipSync 技术且支持每 LVDS 差分对高达 1Gbps 速率的赛灵思 SPI-4 Phase 2 内核。我们主要的包处理 IP 核如下:
? FAST 包处理器:FPP 的入口包处理器 (FIPP) 负责第一层包解析、密钥与数据流 ID 的散列生成以及按端口进行的第 3 层至第 4 层校验和验证。FPP 的出口包处理器 (FEPP) 可执行出口包修改并重新计算第 3 层至第 4 层的校验和。
? FAST 搜索引擎:我们 FSE 在 TCAM 和 QDR SRAM 中维护着一个流数据库,可用于决定需要在入口包上执行的处理任务。该 FSE 可从每个端口的 FIPP 处接受密钥消息,决定针对该包需要执行的处理任务,然后将结果消息返还给原始发出消息的队列。
? FAST 数据队列:我们的数据队列 (FDQ) 可在“无序”保持缓冲器中存储传送进来的包。当入口包被写入到 QDR SRAM 时,该队列将密钥消息从 FIPP 发送至 FAST 搜索引擎。该 FSE 将使用这一密钥来决定如何处理此包,然后将结果消息返还给 FDQ。根据该结果消息,队列可对每个缓冲的包进行转发、复制或丢弃处理。此外,该队列还可对已转发或已复制的包独立进行包修改。
数据流的输入与输出
图 1 显示了流经我们流量加速子系统的数据流。核心 FPGA 功能以绿色表示,包数据流为黄色,控制消息为蓝色,外部器件则为灰色。
首先,我们可从 10GbE 网络端口所接收到的包来识别客户数据流的开始。每个端口上的包都会进入 FAST 入口包处理器进行包解析与分析(图中的 1 号)。在对协议和封包进行分类之后,FIPP 可定位第 2、3 以及 4 层的报头偏移量。接下来是数据流散列与密钥抽取(数据流选择查找规则,如使用源 IP 地址、目的地 IP 地址、源和目的地端口和协议的五元组法 (5-tuple))。
此时,我们的队列管理器缓冲器负责接收包,以释放外部 QDR SRAM 的存储器页面。在此阶段接收到的包都被认为是无序的。在等待 FAST 调度的同时,我们将它们置于外部 QDR SRAM 中。FAST 数据队列(图中的 2 号)分配包 ID,并向 FAST 搜索引擎(图中的 3 号)分派密钥消息。FAST 搜索引擎使用该密钥来识别数据流。外部 TCAM 中匹配的数据流条目可在关联的 SRAM 中向数据流任务表 (Flow Action Table) 提供索引。匹配的数据流任务根据客户配置的应用订阅进行确定。
FAST 搜索引擎向 FDQ(图中的 4 号)发送结果消息进行回复,然后由任务调度程序根据其指定的任务将包分配给某个输出队列。然后我们从包队列中将包解至专用的目的地输出端口(图中的 5 号),其中我们的 FAST 出口包处理器(图中的 6 号)可根据指定任务的要求按数据流修改表 (Flow Modification Table) 中的规则处理包修改。
如果我们的 FAST 搜索引擎能够与客户数据流的匹配,则会执行指定的任务,如果不能,就执行默认的规则(丢弃或发送至 NPU)。我们允许的基本任务包括:丢弃包、将包直接转发至网络端口、将包转发给异常包处理 NPU 或复制包并依据独立规则转发包。我们的扩展任务包括包塌缩 (Packet collapse)(删除包的一部分)、包扩展/写入(在包中插入一系列字节)、包覆盖 (packet overwrite)(修改一系列字节)及其组合。以包覆盖规则为例,可以是修改MAC 源地址或目的地地址、修改 VLAN 的内或外部标记 (tag),或更改第 4 层报头标记。插入/删除的例子可以是简单到删除现有的 EtherType、插入 MPLS 标签或者 VLAN Q-in-Q 标记,也可以是复杂到需要先插入一个作为 GRE 交付报头的 IP 报头,接着紧随一个 GRE 报头(通用路由协议封装 (GRE) 是一种隧道协议,具体参阅因特网 RFC 1702 号文件)。

图 1 – 流加速子系统中的数据流

图 2 – 针对 Type II 以太网 TCP/IP 包的 5 元组密钥提取
Xilinx FPGA 赛灵思 收发器 DSP 电路 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- 迄今为止最牛的ASIC验证平台(05-22)
- 验证FPGA设计:模拟,仿真,还是碰运气?(08-04)
