P4可编程技术解析:理论和硬件架构设计

参考

  1. P4: Programming Protocol-Independent Packet Processors
  2. Design Principles for Packet Parsers
  3. Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN
  4. Compiling Packet Programs to Reconfigurable Switches

P4可编程技术是一种专为数据平面设计的领域特定语言(DSL),由斯坦福大学研究团队于2014年提出,旨在打破传统固定封装模式,释放数据平面的编程能力。以下是P4可编程技术的一些关键特性和应用:

1. P4的诞生:

P4语言的提出是为了在网卡、交换机、路由器等网络设备上实现包括VXLAN、MPLS等在内的各种网络协议。

2. P4语言特性:

  • 协议无关性:P4语言不与特定网络协议绑定,允许用户根据现网协议支持情况和P4语法要素来实现转发逻辑自定义,可按需加入新协议,也可删去冗余协议。
  • 平台无关性:P4语言无需关注底层平台细节,用户能够独立于底层硬件对报文处理功能编程。前端编译器将P4高级语言程序转换成中间表示IR,后端编译器再将IR编译成目标设备配置。
  • 可重构性:P4语言支持在不更换硬件的情况下动态修改数据包处理方式,允许同一台设备根据现网需求随时重新配置。

3. P4转发模型:

P4语言定义了抽象转发模型,主要包括解析器、多级流水线和缓冲区三部分。


The abstract forwarding model.png

4. P4技术的应用:

  • 数据中心互联的云边界网关:云边界网关作为连接云内外网络的桥梁,需要处理大量的数据流量,且云服务场景丰富,设计时需要考虑灵活可扩展,充分利用了P4语言的高度灵活性和可编程性。
  • 分布式的带内网络遥测:分布式带内网络遥测允许网络中的多个节点协同工作,实时收集和报告网络状态信息,而无需控制平面的干预。这就需要定义数据包INT头部,用于携带遥测指令和元数据,再利用P4程序定义数据包的解析逻辑,以识别和提取INT头部。

5. P4的硬件实现:

P4语言在设计之初就是以硬件的网络可编程为目标。在其平台无关性中提到在前后端编译器的共同工作下,P4语言程序最终会被编译成目标设备配置。这个过程实际上是P4的硬件下发。P4通过硬件相关的编译器编译成硬件机器码或汇编代码,下发到硬件中,真正实现硬件的网络可编程。

5.1 Parser部分实现

以往Parser部分的设计采用固化Pipeline设计,如下图所示,该架构只能解析固定的报文头,不具有扩展性。

image.png

P4采用可编程parser设计,如下图所示。区别于Fixed parser,programmable parser添加了TCAM和RAM,TCAM存储报文头的type,RAM存储下一个状态信息,要提取的域段和其他需要的数据。

image.png

5.2 Match-Action部分实现

将查表拆分为多级。

image.png

P4可编程技术因其灵活性和可编程性,在网络领域中扮演着越来越重要的角色,特别是在软件定义网络(SDN)、网络函数虚拟化(NFV)以及网络研究和实验中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容