为了支持网络设备的可编程性,P4(www.p4.org) 已按照新的编程语言开发,可用于描述应如何在各种目标(从通用 CPU 到 NPU、FPGA 及定制 ASIC)上处理网络数据包。 P4 的设计有三个目的:
- 协议的独立性:设备不应该在特定的协议中进行烘焙
- 现场可重配置性:部署后,程序员应该能够修改设备的行为
- 可移植性:程序不应该与特定的硬件目标绑定
P4 是第一个被广泛采用的特定域数据包处理语言。 Xilinx 已将 P4 用作 Xilinx SDNet 开发环境的标准编程语言。 SDNet 使用 2017 年 5 月发布的最新 P4_16 语言规范。 此外,它还包括一些早期访问的语言概括,希望将来标准化,允许优化数据包处理并允许数据包处理架构的定义。 P4-SDNet 的早期使用案例包括带内网络遥测 (INT) 及线路速率下 NFV 服务功能链接 (SFC) 中的加速数据中心 SmartNIC 应用。
P4 社区已经创建语言规范并将继续维护和发展该语言规范。这包括一系列开源工具(编译器、调试器、代码分析仪、库和软件 P4 转换开关等)以及示例 P4 程序等,不仅可帮助 P4 用户快速准确地编写新的数据层行为代码,而且还可针对网络应用的新构想创建原型设计。 Xilinx 是该社区的创始成员,在 P4 语言规范开发中担任领导角色,不仅演示了 P4 程序最早的高性能实现方案,而且还将 P4 带到了 Xilinx SDNet 开发环境中。