P4:编程网络的转发平面

随着物联网设备、数据流量、新协议以及私有云和公共云的巨大增长,网络世界的创新速度也在不断加快。网络的未来已经超越了SDN的数据和控制平面分离,而是在ASIC中深入编写转发逻辑。技术现在正从传统的固定架构转向灵活的可编程交换机。新的可编程ASIC支持自定义协议,以及当前和未来的协议。

P4:编程网络的转发平面

要充分利用这种灵活性,需要使用新的、更高级别的、特定于域的语言来简化转发平面的编写。每个ASIC制造商都必须提供自己的定制语言,这更多地取决于硬件架构。将转发平面逻辑从一个网络ASIC制造商移植到另一个制造商需要付出很多努力。这就产生了对独立于底层硬件和协议的标准语言的需求。

这就是P4(独立于编程协议的数据包处理器)的用武之地。P4是一种开源的、特定于域的编程语言,专为编程可重构网络而设计。 P4语言是公开的,由p4.org联盟开发,该联盟包括网络、云系统和学术机构领域的各种公司。最初,P4针对的是网络交换机的数据平面编程。现在,它的范围已扩展到包括硬件或软件、网络接口卡和其他数据包处理系统在内的可编程网络元素。

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

从过去几年来看,很明显,在任何网络设备中由数据平面处理的数据包大致可以分为三个基本阶段。 1)Parser block:负责分组识别和提取,2)Control block:负责匹配+动作,3)DeParser:负责形成所需的出口包。

网络芯片正在以这种方式构建,并且与协议无关。 P4是可以为任何目标设备编译的语言,用于指定如何在数据平面中处理数据包。 P4编译器的体系结构有助于通过分离语言和目标模型使其独立于目标。每个芯片供应商都可以实现自己的编译器后端以映射到他们的硬件架构。 P4的体系架构(见图)还允许芯片公司定义自己的模型,然后编写P4后端来支持相同的内容,从而有助于隔离硬件细节。

P4:编程网络的转发平面

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

P4:编程网络的转发平面

P4如何有益?

P4带来了许多好处,包括:

 ●  所有可编程网络设备的开源语言。易于移植。
 ●  由于P4程序可以由用户编写,因此有助于保留新IP的所有权。现在,不再需要与芯片厂商或他们的客户共享新的功能规范,从而保留知识产权保护。
 ●  P4使新协议的部署更加简单,消耗的时间更少。
 ●  在不同应用程序中使用的网络设备需要不同的协议集。使用P4,用户可以根据应用程序仅实现所需的协议,并删除其应用程序不需要的协议。因此,可以有效地利用现有资源。
 ●  编程数据平面现在使用软件编写程序,使用P4编译和加载硬件,从而提供软件重用、数据隐藏、库创建、硬件和软件组件分离、软件升级和调试方便等优点。

但是,实现这些好处也面临着一些挑战。需要记住的一点是,定制专有语言可以更好地控制可编程网络硬件。 P416是P4语言的2016版本,它确实支持外部方法以满足此类自定义硬件的特定要求,但会削弱P4的易于移植性。

此外,Hash、ECMP、多播、广播、镜像、排队、调度和校验等功能非常依赖于硬件。很难用Generic P4解决所有目标并获得对硬件的完全访问权限。

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

也就是说,P4开辟了许多机会并改变了网络芯片的设计方式。 P4架构提供了一个设计完全可编程芯片的样本模型和思路。未来所有传统交换机将很快转换为可编程交换机,具有完全软件定义的数据和控制平面。


原文发布时间为:2018-09-17

本文来自云栖社区合作伙伴“SDNLAB”,了解相关信息可以关注“SDNLAB”。

上一篇:Linux查看CPU和内存使用情况【转】


下一篇:c语言结构体使用方法