深入浅出 DPDK
朱河清 梁存铭 胡雪焜 曹水 等编著
图书在版编目(CIP)数据
深入浅出 DPDK / 朱河清等编著 . —北京:机械工业出版社,2016.5
ISBN 978-7-111-53783-0
I. 深… II. 朱… III. 应用软件-软件包 IV. TP317
中国版本图书馆 CIP 数据核字(2016)第 097359 号
近年来,随着半导体和多核计算机体系结构技术的不断创新和市场的发展,越来越多的网络设备基础架构开始向
基于通用处理器平台的架构方向融合,期望用更低的成本和更短的产品开发周期来提供多样的网络单元和丰富的功能,
如应用处理、控制处理、包处理、信号处理等。为了适应这一新的产业趋势,英特尔公司十年磨一剑,联合第三方软
件开发公司及时推出了基于 Intel® x86 的架构 DPDK(Data Plane Development Kit,数据平面开发套件),实现了
高效灵活的包处理解决方案。经过近 3 年的开源与飞速发展,DPDK 已经发展成业界公认的高性能网卡和多通用处理
器平台的开源软件工具包,并已成为通用处理器平台上影响力最大的数据平面解决方案。主流的 Linux 发行版都已经
将 DPDK 纳入,DPDK 引发了基于 Linux 的高速网络技术的创新热潮,除了在传统的通信网络、安全设施领域应用
之外,还被广泛应用于云计算、虚拟交换、存储网络甚至数据库、金融交易系统。
本书汇聚了最资深的 DPDK 技术专家的精辟见解和实战体验,详细介绍了 DPDK 技术的发展趋势、数据包处理、
硬件加速技术、虚拟化以及 DPDK 技术在 SDN、NFV、网络存储等领域的实际应用。书中还使用大量的篇幅讲解各
种核心软件算法、数据优化思想,并包括大量详尽的实战心得和使用指南。
作为国内第一本全面阐述网络数据面的核心技术的书籍,本书主要面向 IT、网络通信行业的从业人员,以及大专
院校的师生,用通俗易懂的文字打开了一扇通向新一代网络处理架构的大门。DPDK 完全依赖软件,对 Linux 的报文
处理能力做了重大革新,它的发展历程是一个不可多得的理论联系实际的教科书般的实例。
深入浅出 DPDK
出版发行:机械工业出版社(北京市西城区百万庄大街 22 号 邮政编码:100037)
责任编辑:姚 蕾
印 刷:北京诚信伟业印刷有限公司
开 本:186mm×240mm 1/16
书 号:ISBN 978-7-111-53783-0
责任校对:殷 虹
版 次:2016 年 5 月第 1 版第 1 次印刷
印 张:18
定 价:69.00 元
凡购本书,如有缺页、倒页、脱页,由本社发行部调换
客服热线:(010)88379426 88361066
购书热线:(010)68326294 88379649 68995259
投稿热线:(010)88379604
读者信箱:hzit@hzbook.com
版权所有 • 侵权必究
封底无防伪标均为盗版
本书法律顾问:北京大成律师事务所 韩光 / 邹晓东
Prologue 序 言
2015 年的春天,在北京参加 DPDK 研讨大会时,有幸结识了本书的部分作者和众多
DPDK 研发的专业人士。这使我对这个专题的感召力深感诧异。DPDK 就像一块磁铁,可以
把这么多不同行业的专业人士吸引在一起。同时,大家会上也相约来年的春天,国内的同仁
们能在 DPDK 技术进步中展现出自己独到的贡献。
作为运营商研发队伍的一员,我们无时不刻都能感受到 NFV 这个话题的灼热度。作为网
络演进的大趋势,NFV 将在未来为运营商实现网络重构扮演重要的角色。然而,大家都知道,
NFV 技术的发展之路存在各种屏障,性能问题是一道迈不过去的坎。这个问题的复杂性在于,
它涉及 I/O、操作系统内核、协议栈和虚拟化等多个层面对网络报文的优化处理技术。虽然 IT
界已发展出多类小众技术来应对,但这些技术对于普通应用技术人员而言比较陌生,即使对
于传统网络的开发者而言,全面掌握这些技术也存在巨大的挑战。长久以来,用户更希望在
这个领域有系统性的解决方案,能把相关的技术融会贯通,并系统性地组织在一起,同时也
需要更为深入的细节技术支持工作。
DPDK 的到来正逢其时,它之所以能脱颖而出,并迅速发展为业界在 NFV 加速领域的
一种标杆技术,在于它不仅是上述技术的集大成者,更重要的是它的开放性和持续迭代能力,
这些都得益于 DPDK 背后这支强大的专业研发团队,而本书的专业功力也可见一斑。
作为运营商的网络研发队伍,我们已关注 DPDK 近 3 年,尽管学习过 DPDK 部分源码和
大量社区文档,也组织通过大量的 DPDK 相关 NFV 测试验证,但我们仍然觉得迫切需要系统
性地介绍现代服务器体系架构,以及虚拟化环境下 I/O 优化的最新技术。令人倍感欣慰的是,
本书作者对 DPDK 的讲解游刃有余,系统全面的同时又不乏敏锐的产业视角。可以说,深入
浅出是本书最大的特点。
形而上者谓之道,形而下者谓之器。书中一方面透彻地讲解了现代处理器体系架构、网
络 I/O、内核优化和 I/O 虚拟化的原理与技术发展史,在这个“道用”的基础上,另一方面也
IV
清晰地介绍了 DPDK 细节性的“器用”知识,包括并行处理、队列调度、I/O 调优、VNF 加
速等大量方法与应用,两方面相得益彰。结合 DPDK 社区的开源代码和动手实践,相信读者
仔细学习完本书,必能加快对 NFV 性能关键技术的领悟。本书的受益对象首先是那些立志跨
界转型的 NFV 研发工程师,也面向高等院校计算机专业希望在体系架构方面有更深发展的在
校生,更包括像我们这样关注 DPDK 应用场景、NFVI 集成和测试技术的最终用户。我们衷
心感谢作者为业界带来的全新技术指引。这本书就像一粒种子,其中蕴含的知识未来定会在
NFV 这片沃土上枝繁叶茂,开花结果。
严格地讲,我们的团队只是 DPDK 用户的用户,我们研究 DPDK 的目的并非针对 DPDK
本身,而是为 NFV 的集成和开发提供一个准确的、可供评估的 NFVI 性能基准,减少各类网
络功能组件在私有的优化过程中存在的不稳定风险。从对 DPDK 的初步评测来看,结果令人
满意甚至超出预期,但我们仍应清醒地认识到,DPDK 作为 NFV 加速技术架构仍有很长的路
要走,打造成熟、规范和完善的产业链是近期要解决的重要课题。我们呼吁也乐见有更多的
朋友加入 DPDK 应用推广的行列,众志成城,汇聚成一股 SDN 时代的创新洪流。
欧亮博士 中国电信广州研究院
Introduction 引 言
动机
2015 年 4 月,第一届 DPDK 中国峰会在北京成功召开。来自中国移动、中国电信、阿里
巴巴、IBM、Intel、华为以及中兴的专家朋友登台演讲,一起分享了以 DPDK 为中心的技术
主题。表 1 列出了 2015 DPDK 中国峰会的主题及演讲者。
表 1 2015 DPDK 中国峰会主题及演讲者
主 题
利用 DPDK 加速 NFV
利用 DPDK 优化云基础设施
构建 core 以及高能效应用的最佳实践
基于英特尔 ONP 构建虚拟化的 IP 接入方案
DPDK 加速无线数据核心网络
电信业务场景下的数据面挑战
运行于 Power 架构下的 DPDK 和数据转发
演讲者
邓辉
孙成浩
梁存铭
欧亮
陈东华
刘郡
祝超
公 司
中国移动
阿里巴巴
Intel
中国电信
中兴
华为
IBM
这次会议吸引了来自各行业、科研单位与高校的 200 多名开发人员、专家和企业代表参
会。会上问答交流非常热烈,会后我们就想,也许是时间写一本介绍 DPDK、探讨 NFV 数
据面的技术书籍。现在,很多公司在招聘网络和系统软件人才时,甚至会将 DPDK 作为一项
技能罗列在招聘要求中。DPDK 从一个最初的小众技术,经过 10 年的孕育,慢慢走来,直
至今日已经逐渐被越来越多的通信、云基础架构厂商接受。同时,互联网上也出现不少介绍
DPDK 基础理论的文章和博客,从不同的角度对 DPDK 技术进行剖析和应用,其中很多观点
非常新颖。作为 DPDK 的中国开发团队人员,我们意识到如果能够提供一本 DPDK 的书籍,
进行一些系统性的梳理,将核心的原理进行深入分析,可以更好地加速 DPDK 技术的普及,
触发更多的软件创新,促进行业的新技术发展。于是,就萌发了写这本书的初衷。当然,我
VI
们心里既有创作的激动骄傲,也有些犹豫忐忑,写书不是一件简单的事情,但经过讨论和考
量,我们逐渐变得坚定,这是一本集结团队智慧的尝试。我们希望能够把 DPDK 的技术深入
浅出地解释清楚,让更多的从业人员和高校师生了解并使用 DPDK,促进 DPDK 发展日新月
异,兴起百家争鸣的局面,这是我们最大的愿景。
多核
2005 年的夏天,刚加入 Intel 的我们畅想着 CPU 多核时代的到来给软件业带来的挑战与
机会。如果要充分利用多核处理器,需要软件针对并行化做大量改进,传统软件的并行化程
度不高,在多核以前,软件依靠 CPU 频率提升自动获得更高性能。并行化改进不是一件简单
的工作,许多软件需要重新设计,基本很难在短期实现,整个计算机行业都对此纠结了很久。
2005 年以前,整个 CPU 的发展历史,是不断提升芯片运算频率核心的做法,软件性能会随着
处理器的频率升高,即使软件不做改动,性能也会跟着上一个台阶。但这样的逻辑进入多核
时代已无法实现。首先我们来看看表 2 所示的 Intel® 多核处理器演进。
表 2 Intel® 多核处理器演进的历史图表
Xeon 处理器代码
制造工艺
最大核心数量
发布时间
超线程
WoodCrest
Nehalem-EP
Westmere-EP
SandyBridge-EP
IvyBridge-EP
Haswell-EP
65nm
45nm
32nm
32nm
22nm
22nm
2
4
6
8
12
18
2006 年 6 月
2009 年 7 月
2010 年 2 月
2012 年 3 月
2013 年 9 月
2014 年 9 月
否
是
是
是
是
是
双路服务器可
使用核心数量
4
16
24
32
48
72
在过去 10 年里,服务器平台的处理器核心数目扩展了很多。表 2 参考了英特尔至强系列
的处理器的核心技术演进历史,这个系列的处理器主要面向双通道(双路)服务器和相应的硬
件平台。与此同时,基于 MIPS、Power、ARM 架构的处理器也经历着类似或者更加激进的并
行化计算的路线图。在处理器飞速发展的同时,服务器平台在硬件技术上提供了支撑。基于
PCI Express 的高速 IO 设备、内存访问与带宽的上升相辅相成。此外,价格和经济性优势越发
突出,今天一台双路服务器的价格可能和 10 年前一台高端笔记本电脑的价格类似,但计算能
力达到甚至超越了当年的超级计算机。强大的硬件平台为软件优化技术创新蕴蓄了温床。
以太网接口技术也经历了飞速发展。从早期主流的 10Mbit/s 与 100Mbit/s,发展到千兆网
(1Gbit/s)。到如今,万兆(10Gbit/s)网卡技术成为数据中心服务器的主流接口技术,近年来,
Intel 等公司还推出了 40Gbit/s、100Gbit/s 的超高速网络接口技术。而 CPU 的运行频率基本停
VII
留在 10 年前的水平,为了迎接超高速网络技术的挑战,软件也需要大幅度创新。
结合硬件技术的发展,DPDK(Data Plane Development Kit),一个以软件优化为主的数据
面技术应时而生,它为今天 NFV 技术的发展提供了绝佳的平台可行性。
IXP
提到硬件平台和数据面技术,网络处理器是无法绕过的话题。电信行业通常使用网络处
理器或类似芯片技术作为数据面开发平台首选。Intel 此前也曾专注此领域,2002 年收购了
DEC 下属的研究部门,在美国马萨诸塞州哈德逊开发了这一系列芯片,诞生了行业闻名的
Intel Exchange Architecture Network Processor(IXP4xx、IXP12xx、IXP24xx、IXP28xx)产品线,
曾取得行业市场占有率第一的成绩。即使今日,相信很多通信业的朋友,还对这些处理器芯
片有些熟悉或者非常了解。IXP 内部拥有大量的微引擎(MicroEngine),同时结合了 XSCALE
作为控制面处理器,众所周知,XSCALE 是以 ARM 芯片为核心技术的一种扩展。
2006 年,AMD 向 Intel 发起了一场大战,时至今日结局已然明了,Intel 依赖麾下的以色
列团队,打出了新一代 Core 架构,迅速在能效比上完成超车。公司高层同时确立了 Tick-Tock
的研发节奏,每隔两年推出新一代体系结构,每隔两年推出基于新一代制造工艺的芯片。这
一战略基本保证了每年都会推出新产品。当时 AMD 的处理器技术一度具有领先地位,并触
发了 Intel 在内部研发架构城门失火的状况下不得不进行重组,就在那时 Intel 的网络处理器业
务被进行重估,由于 IXP 芯片系列的市场容量不够大,Intel 的架构师也开始预测,通用处理
器多核路线有取代 IXP 专用处理芯片的潜力。自此,IXP 的研发体系开始调整,逐步转向使
用 Intel CPU 多核的硬件平台,客观上讲,这一转型为 DPDK 的产生创造了机会。时至今日,
Intel 还保留并发展了基于硬件加速的 QuickAssist 技术,这和当日的 IXP 息息相关。由此看
来,DPDK 算是生于乱世。
DPDK 的历史
网络处理器能够迅速将数据报文接收入系统,比如将 64 字节的报文以 10Gbit/s 的线速也
就是 14.88Mp/s(百万报文每秒)收入系统,并且交由 CPU 处理,这在早期 Linux 和服务器
平台上无法实现。以 Venky Venkastraen、Walter Gilmore、Mike Lynch 为核心的 Intel 团队开始
了可行性研究,并希望借助软件技术来实现,很快他们取得了一定的技术突破,设计了运行
在 Linux 用户态的网卡程序架构。传统上,网卡驱动程序运行在 Linux 的内核态,以中断方
式来唤醒系统处理,这和历史形成有关。早期 CPU 运行速度远高于外设访问,所以中断处理
方式十分有效,但随着芯片技术与高速网络接口技术的一日千里式发展,报文吞吐需要高达
VIII
10Gbit/s 的端口处理能力,市面上已经出现大量的 25Gbit/s、40Gbit/s 甚至 100Gbit/s 高速端口,
主流处理器的主频仍停留在 3GHz 以下。高端游戏玩家可以将 CPU 超频到 5GHz,但网络和
通信节点的设计基于能效比经济性的考量,网络设备需要日以继夜地运行,运行成本(包含耗
电量)在总成本中需要重点考量,系统选型时大多选取 2.5GHz 以下的芯片,保证合适的性价
比。I/O 超越 CPU 的运行速率,是横在行业面前的技术挑战。用轮询来处理高速端口开始成
为必然,这构成了 DPDK 运行的基础。
在理论框架和核心技术取得一定突破后,Intel 与 6wind 进行了合作,交由在法国的软件
公司进行部分软件开发和测试,6wind 向 Intel 交付了早期的 DPDK 软件开发包。2011 年开始,
6wind、Windriver、Tieto、Radisys 先后宣布了对 Intel DPDK 的商业服务支持。Intel 起初只是
将 DPDK 以源代码方式分享给少量客户,作为评估 IA 平台和硬件性能的软件服务模块,随着
时间推移与行业的大幅度接受,2013 年 Intel 将 DPDK 这一软件以 BSD 开源方式分享在 Intel
的网站上,供开发者免费下载。2013 年 4 月,6wind 联合其他开发者成立 www.dpdk.org 的开
源社区,DPDK 开始走上开源的大道。
开源
DPDK 在代码开源后,任何开发者都被允许通过 www.dpdk.org 提交代码。随着开发者社
区进一步扩大,Intel 持续加大了在开源社区的投入,同时在 NFV 浪潮下,越来越多的公司
和个人开发者加入这一社区,比如 Brocade、Cisco、RedHat、VMware、IBM,他们不再只是
DPDK 的消费者,角色向生产者转变,开始提供代码,对 DPDK 的代码进行优化和整理。起
初 DPDK 完全专注于 Intel 的服务器平台技术,专注于利用处理器与芯片组高级特性,支持
Intel 的网卡产品线系列。
DPDK 2.1 版本在 2015 年 8 月发布,几乎所有行业主流的网卡设备商都已经加入 DPDK
社区,提供源代码级别支持。另外,除了支持通用网卡之外,能否将 DPDK 应用在特别的加
速芯片上是一个有趣的话题,有很多工作在进行中,Intel 最新提交了用于 Crypto 设备的接口
设计,可以利用类似 Intel 的 QuickAssit 的硬件加速单元,实现一个针对数据包加解密与压缩
处理的软件接口。
在多架构支持方面,DPDK 社区也取得了很大的进展,IBM 中国研究院的祝超博士启
动了将 DPDK 移植到 Power 体系架构的工作,Freescale 的中国开发者也参与修改,Tilera 与
Ezchip 的工程师也花了不少精力将 DPDK 运行在 Tile 架构下。很快,DPDK 从单一的基于
Intel 平台的软件,逐步演变成一个相对完整的生态系统,覆盖了多个处理器、以太网和硬件
加速技术。