P4:网络转发平面编程

描述

随着物联网设备的巨大增长、数据流量的增加、新协议以及私有云和公共云的不断增长,网络世界的创新步伐正在加快。网络的未来已经超越了分离SDN的数据和控制平面,而是在ASIC深处对转发逻辑进行编程。现在,技术正在从传统的固定架构硅开关转向灵活的可编程开关。新的可编程ASIC允许支持自定义协议以及现在和未来的协议。这需要新的更高级别的域特定语言来简化转发平面的写入。每个ASIC制造商都必须提出自己的自定义语言,这更多地依赖于硬件架构。将转发平面逻辑从一个网络ASIC制造商移植到另一个制造商将需要大量的努力,而且非常痛苦。这产生了对独立于底层硬件和协议的标准语言的需求。

什么是P4?

P4(独立于编程协议的数据包处理器)是一种特定于域的开源编程语言,专为编程可重新配置的网络管道而设计。P4语言是公共语言,由 p4.org 联盟开发,该联盟包括网络,云系统和学术机构领域的各种公司。最初,P4是为网络交换机的数据平面编程而设计的,但其范围已扩大到涵盖可编程网络元素,例如硬件或软件交换机,网络接口卡,路由器或其他数据包处理系统。

P4 编译器:P4 如何独立于目标?

从过去几年来看,很明显,任何网络设备中数据平面处理的数据包大致可以分为三个基本阶段。1)解析器块:负责数据包识别和提取,2)控制块:负责匹配+操作,3)解析器:负责形成所需的出口数据包。网络芯片就是以这种方式构建的,并且是独立于协议的。P4 是可以为任何目标设备编译以指定如何在数据平面中处理数据包的语言。P4 编译器的体系结构通过分离语言和目标模型来帮助使其独立于目标。P4 具有前端开源和后端松散,使其独立于目标。每个芯片供应商都可以实现自己的编译器后端以映射到其硬件架构。P4 的架构还有助于通过定义自己的模型,然后编写 p4 后端来支持相同的硬件细节。

编译器

图 1:P4 编译器体系结构

每个芯片制造商只需要拥有与其硬件兼容的P4编译器工具链,用户可以独立于供应商的依赖编写自己的P4程序,在不影响速度的情况下进行编译和运行。用户只需要专注于实际的数据包处理逻辑,而无需担心底层硬件。编译器将为硬件生成运行时代码。图 2 显示了 P4 为数据平面编程提供的核心组件。

编译器

图 2:P4 组件

P4 有何益处?

适用于所有可编程网络设备的开源语言。易于携带

由于P4程序可以由用户编写,因此有助于保留新IP的所有权。现在不再需要与芯片供应商或有时他们的客户共享新功能规范,从而保留知识产权保护

P4 使新协议的部署变得更加简单,消耗的时间更少

在不同应用程序中使用的网络设备需要不同的协议集。使用 P4,用户可以根据其应用程序仅实现所需的协议,并删除其应用程序不需要的协议。因此,可用资源可以得到有效利用

编程数据平面现在使用软件,您可以使用P4编写程序,在硬件上进行编译和加载,从而提供诸如软件重用,数据隐藏,库创建,硬件和软件组件分离,轻松软件升级和轻松调试等好处

使用 P4 的挑战

自定义专有语言可以更好地控制可编程网络硬件,因为它仅为此而设计。P416 确实支持 extern 方法以满足此类自定义硬件特定要求,但在 P4 中使用 extern 使其不那么便携

哈希、ECMP、组播、广播、镜像、排队、调度和校验和等功能很少非常依赖于硬件。使用通用 P4 解决所有目标并完全访问硬件很困难

P4 中控制平面和数据平面之间的通信方式有限。不支持生成新数据包

P4开辟了很多机会,并改变了网络芯片的设计方式。P4架构给出了设计完全可编程芯片的示例模型和想法。展望未来,所有传统交换机将很快转换为具有完全软件定义数据和控制平面的可编程交换机。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分