零声dpdk 网络协议栈
dpdk/网络协议栈/vpp/OvS/DDos/SDN/NFV/虚拟化/高性能专家之路
什么是dpdk?
对于用户来说(已报名零声dpdk底部评),它可能是一个性能出色的包数据处 理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创 新工场;对于性能调优者来说,它可能又是一个绝佳的平台
二、DPDK 原理
网络设备(路由器、交换机、媒体网关、SBC、PS 网关等)需要在瞬间进行大量的报文收发,因此在传统的网络设备上,往往能够看到专门的 NP(Network Process)处理器,有的用 FPGA,有的用 ASIC。这些专用器件通过内置的硬件电路(或通过编程形成的硬件电路)高效转发报文,只有需要对报文进行深度处理的时候才需要 CPU 干涉。
但在公有云、NFV 等应用场景下,基础设施以 CPU 为运算核心,往往不具备专用的 NP 处理器,操作系统也以通用 Linux 为主,网络数据包的收发处理路径如下图所示:

在虚拟化环境中,路径则会更长:

由于包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以 CPU 为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel 推出了服务于 IA(Intel Architecture)系统的 DPDK 技术。
DPDK 是 Data Plane Development Kit 的缩写。简单说,DPDK 应用程序运行在操作系统的 User Space,利用自身提供的数据面库进行收发包处理,绕过了 Linux 内核态协议栈,以提升报文处理效率。