首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

智能网卡系列一:P4语言学习笔记一

什么是P4语言

P4 是一种声明性语言,用于告诉转发平面设备(交换机、NIC、防火墙、过滤器等)如何处理数据包。这真的很酷,他摆脱了传统网络硬件的束缚,我们认为它将永远改变网络设备的设计方式,业界通常称这个技术为可编程交换机。

为什么选择P4?

今天,设计一个高性能的网络设备真的很痛苦。首先,您决定需要哪些功能。然后,您尝试找到具有大致所需功能的固定功能的交换芯片。您签署保密协议以访问软件开发工具包 (SDK),并开始爬上学习曲线。使用封闭的专有API,您可以尝试将系统要求强制适应芯片的固定功能。这通常需要一些不自然的行为。归根结底,你有一个自上而下的愿望系统,但真正自下而上地定义(并以特殊的方式约束)。你被锁定在那个芯片组中,因为你的系统和你的专业知识取决于那个SDK。

P4旨在从根本上改变我们设计网络系统的方式。使用P4语言,您可以从系统设计要求开始,编写一个 P4 程序来描述系统需要如何处理数据包,然后编译程序以告诉转发元素要做什么。从本质上讲,P4 使我们能够从软件工程中带来我们熟悉的所有好处(编写程序、调试、代码覆盖率、 可证明的行为、模型检查等)到网络系统的设计。

您可以编写P4 程序来添加自定义数据包处理或分析作为网络的增值,或者,您可以使用它来减少网络必须支持的协议数量。您可以在几天内快速部署新的协议和报头格式,而无需等待数年时间让交换芯片供应商支持新功能。您可以自定义数据平面以匹配网络规模。您可以发布您的 P4 程序或将其保密,这意味着您保留 IP 的所有权,不再需要与您的芯片供应商及其所有客户共享新功能。简而言之,您可以获得(并保持)领先于业界水平。

在过去的几年中,很明显,“匹配+操作”抽象对于数据包转发非常强大。芯片正在以这种方式制造,我们预计未来会有更多。这些芯片与协议无关(它们的硬件规格没有提到任何协议,并且它们具有可编程的数据包解析器),但它们具有非常高的转发性能。独立于协议的NIC和交换机芯片需要一种语言来指定其行为,那么需要一种可以编译为各种目标转发设备(硬件和软件)的语言,P4就是这种语言。

有许多有趣的研究问题需要解决与P4有关的问题:

P4应该如何进化?

编写任意 P4 程序的最佳方法是什么?

我们如何测试两个 P4 程序(编译前和编译后)的等效性?

如何证明P4程序的正确性?

如何从更高级别的网络策略生成 P4?

P4与软件定义网络(SDN)和OpenFlow有何关系?

P4 允许您告诉交换机如何处理数据包,并自动生成连接控制平面和转发平面的 API。因此,P4程序可以将交换机配置为看起来像OpenFlow 1.0交换机,OpenFlow 1.4交换机或其他完全不同的东西。在运行时填充匹配操作规则的控制平面可以是集中式的,也可以是分布式的,在单独的控制器上运行或直接在交换机上运行。P4 的要点是将网络从低级专有接口解放到固定功能芯片组,以实现跨一系列目标平台的独立于协议的数据包处理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230613A0A9EV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券