P4 vs. DPDK

1. 二者的定义

DPDK(数据平面开发工具包):用于更快数据包处理的一组库和驱动程序。

P4:一种高级别的可编程语言,它支持独立于转发平面的协议编程。

2. DPDK 的优势

  • DPDK 可以实现 L4和 L7 的处理。DPDK的工作原理是为在接口上捕获的整个数据包缓冲区上应用规则提供机会。基于P4的应用仅支持 L4级别的处理;
  • 只要物理部署有DPDK兼容的网络控制器,那么DPDK的方案即可在物理和虚拟环境中都能运行;
  • DPDK在内部维护负载平衡组会话,从而避免外部应用程序。P4需要额外的控制器支持来记录会话信息;
  • DPDK中应用可以轻松的支持组监控并实现自动缩放功能。使用基于P4的交换机实现同样的功能很复杂,因为需要实现L2或控制器级别的附加逻辑来捕获服务器组的运行状况信息。

3. P4 的优势

  • 基于P4的负载平衡器在可编程交换机中运行,因此无需部署实际的负载平衡器。这大大减少了部署占用空间,并与基于DPDK的解决方案相比有了显著的改进。
  • 基于可编程ASIC的实现速度更快,支持管道的动态配置,无需重新启动。在DPDK中,性能将受到限制,具体取决于部署解决方案的基础架构。
  • 同一个基于P4的负载平衡器可以安装在多个可编程ASIC上,只需对其进行最小的修改即可支持P4。

4. 总结

  • 基于DPDK和P4的解决方案都支持具有线速率性能的快速数据包处理。但是,P4具有动态管道配置,与基于DPDK的实现相比,它可以减少部署占用空间。
  • P4运行时库通过SDN控制器提供了高效的编排,因此我们建议在组配置可以保持静态且服务提供仅为L4的部署中使用基于P4的负载平衡器。
  • 考虑到为水平和垂直扩展场景配置DPDK负载平衡器的方便性,DPDK负载平衡器将是云部署的合适选择。在未来,我们预计P4将随着ASIC程序性能的提高而获得突出地位,支持自动缩放、服务监控和L7支持等急需的功能。

​​