DPDK的全称为Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于 应用中数据包的高性能处理。目前已经验证可以运行在大多数Linux操作系统上,包括FreeBSD 9.2、Fedora release18、Ubuntu 12.04 LTS、RedHat Enterprise Linux 6.3等。DPDK使用了BSDLicense,极大的方便了企业在其基础上来实现自己的协议栈或者应用。
DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。Linux内核将DPDK应用程序看作是一个普通的用户态进程,包括它的编译、连接和加载方式和普通程序没有什么两样。
随着芯片技术与高速 接口技术的日新月异的发展,报文吞吐处理能力需要达到10Gbps,市面上大量的25G、40G甚至100G的高速端口已经出现,主流处理器的主频仍停留在3GHz以下。如今IO超越了CPU的运行速率,迎来了前所未有的技术挑战。2009年开始,以Venky Venkastraen,Walter Gilmore,Mike Lynch为核心的Intel团队,开始了可行性研究,希望借助软件技术来实现突破,很快他们取得了一定的技术突破,设计了运行在Linux用户态的网卡程序架构。随后,Intel与6wind进行了更进一步的合作,共同交付了早期的DPDK软件开发包。Intel起初只是将DPDK以源代码方式分享给少量客户,作为评估IA平台和硬件性能的软件服务模块,随着时间推移与行业的大幅度接受,2013年Intel将DPDK这一软件以BSD开源方式,分享在Intel的网站上,供开发者免费下载,同年4月, 6wind联合其他开发者成立了www.dpdk.org的开源社区,DPDK走上了开源之路。DPDK在代码开源后,开发者被允许通过www.dpdk.org提交代码,随着开发者社区进一步扩大,Intel持续加大了在开源社区的投入,同时在NFV浪潮下,越来越多的公司和个人开发者加入了这一社区,比如IBM,Brocade,Cisco,RedHat, VMWARE,他们不再只是DPDK的消费者,他们开始提供代码,对DPDK的代码进行优化与整理。起初DPDK完全专注于Intel的服务器平台技术,专注于利用处理器与芯片组高级特性,支持Intel的网卡产品线系列。DPDK 2.1版本在2015年8月发布,几乎所有行业主流的网卡设备商都已经加入了DPDK社区,提供源代码级别支持。例如Emulex收购的Broadcom网卡,Mellanox,Chelsio以及Cisco等等。另外除了支持通用网卡之外,能否将DPDK应用在特别的加速芯片上,是一个有趣的话题。
在多架构支持方面,DPDK社区也取得了很大的进展,很快DPDK从单一的基于Intel平台为基石的软件,逐步演变成一个相对完整的生态系统,覆盖了多个处理器,多个以太网和硬件加速技术。
在Linux社区融合方面,DPDK也开始和一些主流的Linux社区合作,并得到了越来越多的响应。作为Linux 社区最主要的贡献者之一RedHat,尝试了在Fedora Linux集成了DPDK;接着Redhat Enterprise Linux 在安装库里也加入DPDK支持,用户可以自动下载安装DPDK扩展库。Redhat工程师还尝试了将DPDK与Container集成测试,公开发布了运行结果。传统虚拟化的领导者VMWARE的工程师也加入了DPDK社区,负责VMXNET3-PMD模块的维护。Canonical在Ubuntu 15中加入了DPDK的支持。如今DPDK已经发展到了20.08。
腾讯云团队研发的F-Stack是基于DPDK的高性能通用 框架,可以支持各种高层 业务快速接入,实现高性能的 服务器。F-Stack 已于 2017.4 发布v1.0版本,移植FreeBSD 11.01 协议栈到用户态并与DPDK对接。当时我们应用F-Stack的时候,尚未支持IPV6,去年8月份已经支持了。