一、FAST是什么
FAST是FPGA加速的交换平台(FPGA Accelerated Switching plaTform)英文的简写,其诞生与发展深受斯坦福大学Nick Mckeown教授在十多年前主持的NetFPGA项目影响,目标是为计算机网络的科研与教学提供一个开源和开放的FPGA交换平台。
FAST代表的4个单词反映了项目的内容和特点:
802.1Q规范没有明确定义流量测量的粒度,无法对进入网络的流量进行细粒度的测量和管控。虽然支持多种输出调度算法,但更多是保证输出调度的优先级,或者按照预先确定的权值分配不同优先级队列占用的输出带宽,在调度中没有利用全局时间信息,无法实现确定性的延时控制。软件定义网络技术的应用可以简化交换流程,将生成树管理以及地址学习功能上载到控制器上实现,可以针对每条细粒度的流定义交换行为,但也难以实现确定性的延时控制。
FAST实现的核心载体是可编程FPGA,是用Verilog语言编程实现的硬件功能。FPGA的现场可编程特性为实现用户创新的网络架构、算法、实现机制提供了极大的灵活性,而且可以获得较高的性能,支持在实际网络中部署运行。
FPGA实现的不是网络处理的全部功能,而是部分需要硬件加速的分组处理功能。FAST的核心是一套软硬件协同的分组处理模型,用户可以通过Verilog编程实现的硬件功能的加速,也可以在现有的FAST硬件平台的CPU上编程实现特定的分组处理功能。
FAST面向的领域是网络交换领域,支持各种新型交换技术,如软件定义网络(SDN)、时间敏感网络(TSN)、网络安全一体化网络甚至是智能网卡的实现研究,而不是支持以人工智能(AI)为代表的应用加速。
与目前其他开源项目一样,FAST提供的是一个硬件平台无关的,支持用户通过软硬件编程实现其特定分组处理功能的环境。FAST通过提供标准的规范、开源的平台软硬件实现代码和demo应用,支持用户基于平台进行创新的应用开发和设备原型的快速实现。

图1 NetFPGA平台

图2 一款支持FAST的可编程设备(Openbox S4z)
FAST的logo是一只快速奔跑的豹子,预示着借助FAST平台,用户的新想法可快速的实现和验证。

图3 FAST LOGO
二、FAST项目的意义
当前,工业界已经给我们提供了太多优秀的开源交换项目和实现平台。例如基于至强处理器实现T比特级转发性能的fd.io项目,在云数据中心中得到大量应用检验的OVS,硅谷新贵barefoot公司推出的集美貌(性能)与才华(可编程性)一身的Tofino芯片等等。

图3 2016年10月,FAST开源项目正式成立
与上述工业界力推的项目和平台相比,FAST只能说是十分小众的开源项目。虽然FAST没有蹭到AI热点,而且还不支持类似P4的高级语言对FPGA编程,其存在对未来网络技术的发展,提升网络系统创新的能力仍具有重要意义。主要表现在三方面:
一是在科研中,为系统级的创新提供参考架构和样机平台;
二是在教学中,为培养学生系统级的设计思维提供实验平台和案例;
三是对于中小企业,为新型网络系统的快速实现提供参考平台,缩短上市时间。
在软件定义一切的年代,基于工业界相对成熟的开源平台(如fd.io和OVS),通过软件开发实现网络功能创新是目前主流。然而,软硬件协同的系统级创新仍然是计算机网络人才培养和科学研究中不可缺少的内容。
随着工业互联网和5G的发展,特别是自主可控逐渐发展成为国家战略的时代背景下,系统级设计思想和设计人才将会变的更加重要,FAST开源项目的愿景就是为软硬件协同的系统级网络设备开发和人才培养提供高效,低成本,易于获取的平台和技术支撑。