1 背景
数据平面开发工具包 Data Plane Development Kit(DPDK) 由一组库和用户空间驱动组成的,用来加速包处理和转发的速度并降低延时,它支持多种不同的处理器架构和操作系统。DPDK 被设计运行在用户空间,这样,基于 DPDK 的应用程序可以直接与网卡交互收发数据包,对于某些网络性能密集型场景下的应用有着现实的意义。
具体来说,DPDK 所带来的主要的优势在于:通过用户空间的驱动,旁路 kernel 和 TCP 协议栈,规避了过多的内存拷贝和系统调用;通过轮询的方式,避免传统包处理时的中断和上下文切换;通过 hugepage 降低 TLB miss,同时利用多通道内存,避免了过多访存开销;最后,还可以设置亲和性和独占,避免了不同核心的线程切换。除此之外,DPDK 还在管理上提供了更多的包处理的可控制性。
进一步,在容器环境下,无论是原生的 Docker 还是平台化的 kubernetes,不同的网络插件也提供了对于 DPDK 的支持,使得在容器环境中也可以利用到 DPDK 所提供的优势和性能提升。
2 DPDK 对 AWS 的支持
在 AWS 平台上,DPDK 可以支持具有增强网络(Enhanced Networking)的实例,包括了基于 intel 的 82599(ixgbevf)和基于 AWS 的 Elastic Network Adapter(ena)。具体来说,基于 Nitro 的实例,例如 C5,M5,I3 和 T3 以及上一代基于 intel 的 C4,M4 和 T2 等具备增强网络的实例都可以支持 DPDK。在使用 DPDK 时,需要选用 16.04 之后的版本,DPDK 在该版本之后才提供了对 AWS EC2 的支持。
下图示意了 non-DPDK 和 DPDK 优化的应用之间的区别。
本文使用 AWS EC2 C5.2xlarge 实例,说明了如何在 AWS EC2 中安装和部署 DPDK 环境。
在后续的文章中,会进一步针对 AWS 上的容器平台如何和 DPDK 集成给出说明。
本文转载自 AWS 技术博客。
评论