FAST简介

一、FAST 简介

针对近年来关于工业控制网络创新技术、创新网络结构、时间敏感网络、SDN 网络、FPGA 硬件加速技术及下一代网络技术的研究需求,由国防科大与湖南新实共同发起的开源项目——FAST(FPGA Accelerated Switcing plaTform)于 2016 年创建。截止到目前,该开源项目已经服务全国多所高校和科研院所的网络教学实验建设和科研项目。

FAST 开源项目的诞生与发展深受斯坦福大学 Nick Mckeown 教授在 NetFPGA 项目、OpenFlow项目和 P4 等项目的影响,其目标是为计算机网络的科研与教学提供一个开源和开放的软硬件全功能可编程交换平台。其主要特点如下:

  1. FPGA:FAST 实现的核心载体是可编程 FPGA,是用 Verilog 语言编程实现的硬件功能。FPGA的现场可编程特性为实现用户创新的网络架构、算法、实现机制提供了极大的灵活性,而且可以获得较高的性能,支持在实际网络中部署运行;

  2. Accelerated:FPGA 实现的不是网络处理的全部功能,而是部分需要硬件加速的分组处理功能。FAST 的核心是一套软硬件协同的分组处理模型,用户可以通过 Verilog 编程实现的硬件功能的加速,也可以在现有的 FAST 硬件平台的 CPU 上编程实现特定的分组处理功能;

  3. Switching:FAST面向的领域是网络交换领域,支持各种新型交换技术,如软件定义网络(SDN)、时间敏感网络(TSN)、网络安全一体化网络甚至是智能网卡的实现研究,而不是支持以人工智能(AI)为代表的应用加速;

  4. plaTform:与目前其他开源项目一样,FAST提供的是一个硬件平台无关的,支持用户通过软硬件编程实现其特定分组处理功能的环境。FAST 通过提供标准的规范、开源的平台软硬件实现代码和 demo 应用,支持用户基于平台进行创新的应用开发和设备原型的快速实现。

二、FAST 架构

FAST 平台的架构是一种通用多核 CPU 加 FPGA 形态的网络处理架构。通常对处理性能要求较高的分组处理功能由 FPGA 实现,对处理性能要求较低,实现复杂的功能可由 CPU 实现。用户既可通过扩展 FPGA 硬件流水线功能也可以通过 CPU 上编程实现对分组交换功能的扩充。该平台架构主要由硬件逻辑和软件逻辑两部分组成,实现软硬件耦合通信与支持软硬件可编程的网络创新实验系统。其中硬件包括平台相关的数据 IO 和 FAST 硬件逻辑。软件部分包括通用操作系统与 FAST 软件逻辑。FAST 软件逻辑包括软件开发环境和 UA 程序。该平台不仅支持 FAST 的 UA 编程开发,同时也支持通用 Socket APP 的开发与运行。

FAST交换平台的实现不依赖特定的 CPU 与 FPGA 型号,但为了更好地提供交换功能扩充能力,保证软硬件协同分组处理的基本性能,FAST 的交换平台必须具有如下两个特点:

  1. 所有网络接口均与 FPGA 相连;
    进入交换平台的分组首先送 FPGA 处理,离开交换平台的分组最后由 FPGA 发出。这样有两个优点。一是交换平台可精确获取分组接收时间以及控制发送时间,实现类似 1588 透明时钟的控制,支持时间敏感交换;二是平台可以支持各种新型的分组格式,支持内容中心网络等非 IP 交换。

  2. FPGA 通过高带宽总线与 CPU 连接。
    与传统交换芯片通过低带宽的 SPI 总线、以太网或是单 Lane 的 PCIE 总线与控制 CPU 连接不同,FAST 平台中 FPGA 通过高带宽的总线与 CPU 连接,提升软硬件协同分组处理的性能,支持通过 CPU 软件对数据平面处理功能进行扩展。

FAST 交换平台的实现架构如图1所示。

FAST简介_第1张图片 图1-FAST交换平台实现架构

 

平台硬件逻辑分为两部分:一部分是平台相关的外围接口和与平台 CPU 互联的高速总线接口逻辑,统称为 FPGA OS。其主要实现平台相关, 交换功能无关的分组处理,如网络接口的接收与发送、CPU 的 DMA 引擎以及 FPGA 片外或片内实现的 TCAM 查表功能等;另一部分是用户模块逻辑 UM,其主要实现交换相关的网络功能,每一个小的流水线模块称为硬件应用(HA),如分组解析、关键字提取、转发查表、动作执行和输出控制等。用户可在 UM 模块中扩展 HA 流水线实现不同的分组处理功能。

平台软件逻辑分为三部分:一是平台相关驱动,由厂商实现其具体平台的硬件数据 IO 驱动,一般包含 PCIe 驱动、DMA 驱动和以太网驱动;二是 FAST 分组分派模块,主要实现内核应用模块、协议栈模块和用户应用(UA)和底层驱动的数据分派功能;三是 FAST 分组应用,主要包括在通过标准内核协议栈支持的通用 SOCKET 应用(CA)、内核编程开发的内核应用(KA)和基于 FAST 快速IO 编程开发的用户应用。

FAST 平台的分组处理功能分布在硬件 HA 和软件的 KA、CA 及 UA,各功能模块之间的转发和连接关系可由模块的 ID 号与下一组模块 ID 号关联配置,实现分组数据在 FAST 平台的处理流水线模块排列如图2所示效果。

图片 图2-FAST分组处理流水线排列图标题

三、平台应用

由于 FAST 平台架构的特征,其应用开发可以是软件开发、硬件开发或软硬件结合开发,具体根据平台应用场景和用户具体需求而定。FAST 项目自创立至今,已经在传统网络应用、工业互联网和创新网络架构设计等方面得到了广泛应用。通过在不同领域的应用积累了大量网络教学实验案例,如网络协议分析与编程、协议攻击与防护、路由器系统设计与实现、SDN交换机设计与实现、网络高精度测量、时间敏感网络设计与实现、高性能网络 IO 和网络应用的硬件卸载加速等。

四、加入平台

FAST官网:www.fastswitch.org

FAST微信公众号:

FAST简介_第2张图片 FAST公众号

 

你可能感兴趣的:(FAST,网络,编程语言,linux,c语言)