HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

时间:2023-03-08 23:48:08
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

摘要

本文介绍了一种新的工具链,它将一门称为 PX 的专门用于包处理的编程语言运用到基于 FPGA 技术的高性能可重构计算架构(HIGH-PERFORMANCE RECONFIGURABLECOMPUTING ARCHITECTURES BASED ON FPGA TECHNOLOGY)。PX 是一门面向对象的声明式语言。一个用 PX 描述表达的自定义的运算架构用于满足特定的要求。这样的架构可以在包处理系统运行的过程中通过自定义固件升级来动态调整。

正文

随着互联网的发展,在网络基础设施的各个方面对高效的包处理的需求日益增长。传统互联网只需要根据包的目的地址在一个个中间结点之间进行转发单独的一个包。然而现代网络在包的传输过程中则需要做更多的事情,例如对复杂的包的解析、包的分类、满足服务质量以及安全方面的保证。更复杂的是,因为网络路由拓扑的变化和协议的变化,对于网络的要求变化的十分频繁。这样的需求使得网络设备必须十分灵活。

在这种情况下,可重构计算自然成为了最好的选择。虽然专用的定制芯片可以满足性能需求但是不够灵活。相反的,传统的处理器虽然足够灵活但是性能不令人满意。更多的专用多核处理器虽然兼顾了性能和灵活性两个方面,但是依然存在架构过于固定以及程序模型过于复杂的问题。而可重构计算则提供了可选的解决方法。它允许创建能够满足性能要求的自定义硬件,同时也允许随时更改硬件。换句话说,硬件其实很“软”,提供了十分理想的折中解决方法。

Field-programmable gate arrays (FPGAs) 是可重构计算的基础技术。一个现代的FPGA包括了数百万个逻辑门以及之间的连接网络。最大的挑战是如何让这样原始的底层计算院检能够为网络系统设计师简单的使用。

这篇文章提出了如何让那些希望解决包处理要求而不必知道底层硬件如何实现的网络专家能够使用 FPGA。这个研究的主要贡献有以下五点:

  • PX,一门全新的高级语言,可以指定包处理的要求
  • 一个将 PX 映射到可重构计算的编译器
  • 用于包处理的高性能可重构计算架构
  • 在包处理过程中动态的对系统进行编程
  • 演示在 100 Gbps以及更高速率下运行

文章写了 PX 以及它的编译器的综述。通过两个例子说明编译器生成的可重构计算架构.第一个例子是包的解析和编辑(packet parsing and editing),第二个例子是查找。
(接下来文章介绍了 PX,这里不再赘述,可以看我上一篇博客:SDNnet PX Programmming Language

图一展示了一个执行按照 OpenFlow 协议格式对基础包分类的系统对象类和一个现代 SDN 使用的包处理模型。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

图二展示了基本的 PX 编译流程。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

包的解析以及编辑

传统的包有一个包含控制信息的头部,一个携带实际数据的负载,有时候还有包含更多控制信息的尾部。当然,负载也可以是一个密封的包。

解析和编辑是包处理的两个基本操作。解析包括寻找和提取包字段。编辑包括更新包字段或者修改包结构。在 PX 中,包被模式化成一系列的切片(section),切片可以是一个头部、一个尾部或者是一个内置的负载。解析和编辑都包括遍历整个包的切片。在之前两个早期的工作(一是 G 包处理器,可以以 10 Gbps 的速率进行编辑,二是 PP 包处理器,可以以 400 Gbps 的速率进行解析)的基础上 PX 能够以 100 Gbps 的速率进行解析和编辑。

图三展示了一个执行从包中查找并提取 11 个用于 openflow 的分布在四个头部的字段的包解析过程。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

图四展示了一个由分成三个阶段的由 PX 生成的架构的例子
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

图五展示了由图三生成的架构在不同数据宽度下的性能表现。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

包数据的查找

包处理过程中基于包字段采用不同的查找方式,例如最长前缀匹配和多字段包分类等。最常见的是 TCAM (ternary content addressable memory)。现在大部分 TCAM 作为一个独立的 ASSP(application-specific standard product)运行,但是 ASSP 十分昂贵和耗能。并且不够灵活无法满足新兴的网络应用。PX 提供将软件的灵活性与接近 ASSP 的性能相结合的可能性。

图六展示了执行查找 openflow 的包的 PX 程序。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

编译器会从 PX 程序生成一个 TCAM 架构。这个架构使用小的可配置单元组成一个块,排列成二维数组。每个单元包括多个流水线,每条流水线根据几个 TCAM 单词检查输入的关键词的一部分并且输出匹配结果的部分向量。

图七展示了一个2*2数组的例子。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

在 TCAM 架构中有6个参数可以配置。TCAM 的深度(N)、宽度以及结果的宽度,这四个参数是在 PX 程序中指定的。剩下三个参数是 TCAM 的三个操作参数:有最小单元共排列为多少行(R)、每行多少个最小单元(L)、每个最小单元内有多少条流水线(H)。

图八展示了不同参数生成的 TCAM 可重构计算架构的性能。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

结语

这个研究论证了日益成熟的可重构计算。在将来,这个研究将会扩展至更高的速度(例如 1 Tbps),另外包处理的功能也会更加丰富(例如安全方面的要求)。在灵活性和适应性方面的需求会使得可重构计算技术更加引人注目。