DPDK 基本技术指标准的 DPDK 数据平面开发包和 I/O 转发实现技术,本次将概述该部分的主要技术原理。
1 技术原理与架构
由于采用软件转发和软件交换技术,单服务器内部的转发能力是 NFV 系统的主要性能瓶颈。在各类高速转发的 NFV 应用中,数据报文从网卡中接收,再传送到虚拟化的用户态应用程序(VNF)处理,整个过程要经历 CPU 中断处理、虚拟化 I/O 与地址映射转换、虚拟交换层、网络协议栈、内核上下文切换、内存拷贝等多个费时的 CPU 操作和 I/O 处理环节。
业内通常采用消除海量中断、旁路内核协议栈、减少内存拷贝、CPU 多核任务分担、Intel VT 等技术来综合提升服务器数据平面的报文处理性能,普通用户较难掌握。业界迫切需要一种综合的性能优化方案,同时提供良好的用户开发和商业集成环境,DPDK 加速技术方案成为其中的典型代表。
DPDK 是一个开源的数据平面开发工具集,提供了一个用户空间下的高效数据包处理库函数,它通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/ 队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在 x86 处理器架构下的高性能报文转发能力,用户可以在 Linux 用户态空间开发各类高速转发应用,也适合与各类商业化的数据平面加速解决方案进行集成。
英特尔在 2010 年启动了对 DPDK 技术的开源化进程,于当年 9 月通过 BSD 开源许可协议正式发布源代码软件包,为开发者提供支持。开源社区的参与者们大幅推进了 DPDK 的技术创新和快速演进, 而今它已发展成为 SDN 和 NFV 的一项关键技术。
2 软件架构
DPDK 的组成架构如下图所示,相关技术原理概述如下: