首页>参考读物>计算机科学与技术>计算机网络

深入浅出DPDK
作者 : 朱河清 梁存铭 胡雪焜 曹水 等编著
出版日期 : 2016-05-11
ISBN : 978-7-111-53783-0
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 285
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书汇聚了最资深的DPDK技术专家精辟见解和实战体验,详细介绍了DPDK技术发展趋势,数据包处理,硬件加速技术,包处理和虚拟化 ,以及DPDK 技术在SDN,NFV ,网络存储等领域的实际应用。文中还使用大量的篇幅讲解各种核心软件算法,最先进的数据优化思想,大量详尽的实战心得和使用指南。

图书特色

难得的NFV数据面软件书籍,
全面系统地阐述硬件平台和数据面软件中一系列关键技术。
权威的数据面软件开发指南,
深入剖析核心算法的原理及详尽的DPDK编程实践。
最前沿的数据面产业应用和动向,
全面介绍DPDK与 NFV、软件存储等领域的深度融合的案例。
当前,一场全新的网络技术革新正在如火如荼地展开,其焦点在于如何给通信企业、云服务商提供更具性价比的方案和更灵活的服务,而软件的创新正是推动这场革新的核心动力。经过多年的发展,DPDK已经成为事实上的数据面软件的标准,支持多个主流处理器架构,并已经拥有上百个成功的商业部署。英特尔公司非常荣幸能够作为这次网络技术变革的领导者,帮助用户打造具备高性能和灵活功能的产品。
——Sandra Rivera,英特尔数据中心网络平台事业部总裁

英特尔平台在软件优化方面拥有巨大的潜力,DPDK是一个非常出色的例子。过去10年是我人生中尤为珍贵的旅程,我有幸主持DPDK开发计划,亲眼见证DPDK从最初一个很小的软件库起步,逐步完善原型设计,获得客户认可。伴随着多核时代和高速以太网时代的到来,DPDK在电信业、云计算和企业服务中掀起了一股网络技术革新的浪潮。在未来几年,我们即将看到全行业开源步伐加快,最近思科公司VPP在www.fd.io发布是一个优秀的实践。我们很幸运,能够成为网络技术革新的领导者。
——St Leger, Jim,英特尔网络事业部软件产品总监

软件正在改变世界,DPDK这样的开源软件展示了软件在高速的网络报文处理中的魅力。本书能够帮助广大学生在系统地学习理论知识的同时紧密联系实际工程和应用,具有相当不错的参考价值。
——金耀辉教授,上海交通大学网络中心

上架指导

计算机\网络

封底文字

难得的NFV数据面软件书籍,全面系统地阐述硬件平台和数据面软件中一系列关键技术。
权威的数据面软件开发指南,深入剖析核心算法的原理及详尽的DPDK编程实践。
最前沿的数据面产业应用和动向, 全面介绍PDK与 NFV、软件存储等领域的深度融合的案例。


当前,一场全新的网络技术革新正在如火如荼地展开,其焦点在于如何给通信企业、云服务商提供更具性价比的方案和更灵活的服务,而软件的创新正是推动这场革新的核心动力。经过多年的发展,DPDK已经成为事实上的软件数据处理的标准,支持多个主流处理器架构,并已经拥有上百个成功的商业部署。英特尔公司非常荣幸能够作为这次网络技术变革的领导者,帮助用户打造具备高性能和灵活功能的产品。
——Sandra Rivera,英特尔数据中心网络平台事业部总裁

英特尔平台在软件优化方面拥有巨大的潜力,DPDK是一个非常出色的例子。过去10年是我人生中尤为珍贵的旅程,我有幸主持DPDK开发计划,亲眼见证DPDK从最初一个很小的软件库起步,逐步完善原型设计,获得客户认可。伴随着多核时代和高速以太网时代的到来,DPDK在电信业、云计算和企业服务中掀起了一股网络技术革新的浪潮。在未来几年,我们即将看到全行业开源步伐加快,最近思科公司VPP在www.fd.io发布是一个优秀的实践。我们很幸运,能够成为网络技术革新的领导者。
——St Leger, Jim,英特尔网络事业部软件产品总监

软件正在改变世界,DPDK这样的开源原件展示了软件在高性能运算中的魅力,帮助广大学生在系统地学习理论知识的同时能够紧密联系实际工程和应用,具有相当不错的参考价值。 ——金耀辉教授,上海交通大学网络中心

图书序言

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虚拟化的原理与技术发展史,在这个“道用”的基础上,另一方面也清晰地介绍了DPDK细节性的“器用”知识,包括并行处理、队列调度、I/O调优、VNF加速等大量方法与应用,两方面相得益彰。结合DPDK社区的开源代码和动手实践,相信读者仔细学习完本书,必能加快对NFV性能关键技术的领悟。本书的受益对象首先是那些立志跨界转型的NFV研发工程师,也面向高等院校计算机专业希望在体系架构方面有更深发展的在校生,更包括像我们这样关注DPDK应用场景、NFVI集成和测试技术的最终用户。我们衷心感谢作者为业界带来的全新技术指引。这本书就像一粒种子,其中蕴含的知识未来定会在NFV这片沃土上枝繁叶茂,开花结果。
严格地讲,我们的团队只是DPDK用户的用户,我们研究DPDK的目的并非针对DPDK本身,而是为NFV的集成和开发提供一个准确的、可供评估的NFVI性能基准,减少各类网络功能组件在私有的优化过程中存在的不稳定风险。从对DPDK的初步评测来看,结果令人满意甚至超出预期,但我们仍应清醒地认识到,DPDK作为NFV加速技术架构仍有很长的路要走,打造成熟、规范和完善的产业链是近期要解决的重要课题。我们呼吁也乐见有更多的朋友加入DPDK应用推广的行列,众志成城,汇聚成一股SDN时代的创新洪流。

欧亮博士 中国电信广州研究院

作者简介

朱河清 梁存铭 胡雪焜 曹水 等编著:朱河清 现为英特尔DPDK与Hyperscan软件经理,在Intel、Alcatel、Huawei、Lucent有15年通信网络设备研发与开源软件开发经验。
梁存铭 英特尔资深软件工程师,在计算机网络领域具有丰富的实践开发经验,提交多项美国专利。作为DPDK早期贡献者之一,在PCIe 高性能加速、I/O虚拟化、IA指令优化、协议栈优化等方面有较深入的研究。
胡雪焜 现为英特尔网络通讯平台部门应用工程师,主要研究底层虚拟化技术和基于IA架构的数据面性能优化, 以及对网络演进的影响,具有丰富的SDN/NFV商业实践。
曹水 现为英特尔软件经理,从事嵌入式开发和软件行业超过15年,主要负责DPDK软件测试工作。

图书目录

序  言
引  言
作者介绍
第一部分 DPDK基础篇
第1章 认识DPDK 3
1.1 主流包处理硬件平台 3
1.1.1 硬件加速器 4
1.1.2 网络处理器 4
1.1.3 多核处理器 5
1.2 初识DPDK 7
1.2.1 IA不适合进行数据包处理吗 7
1.2.2 DPDK最佳实践 9
1.2.3 DPDK框架简介 10
1.2.4 寻找性能优化的天花板 11
1.3 解读数据包处理能力 12
1.4 探索IA处理器上最艰巨的任务 13
1.5 软件包处理的潜力——再识DPDK 14
1.5.1 DPDK加速网络节点 14
1.5.2 DPDK加速计算节点 15
1.5.3 DPDK加速存储节点 15
1.5.4 DPDK的方法论 16
1.6 从融合的角度看DPDK 16
1.7 实例 17
1.7.1 HelloWorld 17
1.7.2 Skeleton 19
1.7.3 L3fwd 22
1.8 小结 25
第2章 Cache和内存 26
2.1 存储系统简介 26
2.1.1 系统架构的演进 26
2.1.2 内存子系统 28
2.2 Cache系统简介 29
2.2.1 Cache的种类 29
2.2.2 TLB Cache 30
2.3 Cache地址映射和变换 31
2.3.1 全关联型Cache 32
2.3.2 直接关联型Cache 32
2.3.3 组关联型Cache 33
2.4 Cache的写策略 34
2.5 Cache预取 35
2.5.1 Cache的预取原理 35
2.5.2 NetBurst架构处理器上的预取 36
2.5.3 两个执行效率迥异的程序 37
2.5.4 软件预取 38
2.6 Cache一致性 41
2.6.1 Cache Line对齐 41
2.6.2 Cache一致性问题的由来 42
2.6.3 一致性协议 43
2.6.4 MESI协议 44
2.6.5 DPDK如何保证Cache一致性 45
2.7 TLB和大页 47
2.7.1 逻辑地址到物理地址的转换 47
2.7.2 TLB 48
2.7.3 使用大页 49
2.7.4 如何激活大页 49
2.8 DDIO 50
2.8.1 时代背景 50
2.8.2 网卡的读数据操作 51
2.8.3 网卡的写数据操作 53
2.9 NUMA系统 54
第3章 并行计算 57
3.1 多核性能和可扩展性 57
3.1.1 追求性能水平扩展 57
3.1.2 多核处理器 58
3.1.3 亲和性 61
3.1.4 DPDK的多线程 63
3.2 指令并发与数据并行 66
3.2.1 指令并发 67
3.2.2 单指令多数据 68
3.3 小结 70
第4章 同步互斥机制 71
4.1 原子操作 71
4.1.1 处理器上的原子操作 71
4.1.2 Linux内核原子操作 72
4.1.3 DPDK原子操作实现和应用 74
4.2 读写锁 76
4.2.1 Linux读写锁主要API 77
4.2.2 DPDK读写锁实现和应用 78
4.3 自旋锁 79
4.3.1 自旋锁的缺点 79
4.3.2 Linux自旋锁API 79
4.3.3 DPDK自旋锁实现和应用 80
4.4 无锁机制 81
4.4.1 Linux内核无锁环形缓冲 81
4.4.2 DPDK无锁环形缓冲 82
4.5 小结 89
第5章 报文转发 90
5.1 网络处理模块划分 90
5.2 转发框架介绍 91
5.2.1 DPDK run to completion模型 94
5.2.2 DPDK pipeline模型 95
5.3 转发算法 97
5.3.1 精确匹配算法 97
5.3.2 最长前缀匹配算法 100
5.3.3 ACL算法 102
5.3.4 报文分发 103
5.4 小结 104
第6章 PCIe与包处理I/O 105
6.1 从PCIe事务的角度看包处理 105
6.1.1 PCIe概览 105
6.1.2 PCIe事务传输 105
6.1.3 PCIe带宽 107
6.2 PCIe上的数据传输能力 108
6.3 网卡DMA描述符环形队列 109
6.4 数据包收发——CPU和I/O的协奏 111
6.4.1 全景分析 111
6.4.2 优化的考虑 113
6.5 PCIe的净荷转发带宽 113
6.6 Mbuf与Mempool 114
6.6.1 Mbuf 114
6.6.2 Mempool 117
6.7 小结 117
第7章 网卡性能优化 118
7.1 DPDK的轮询模式 118
7.1.1 异步中断模式 118
7.1.2 轮询模式 119
7.1.3 混和中断轮询模式 120
7.2 网卡I/O性能优化 121
7.2.1 Burst收发包的优点 121
7.2.2 批处理和时延隐藏 124
7.2.3 利用Intel SIMD指令进一步并行化包收发 127
7.3 平台优化及其配置调优 128
7.3.1 硬件平台对包处理性能的影响 129
7.3.2 软件平台对包处理性能的影响 133
7.4 队列长度及各种阈值的设置 136
7.4.1 收包队列长度 136
7.4.2 发包队列长度 137
7.4.3 收包队列可释放描述符数量阈值(rx_free_thresh) 137
7.4.4 发包队列发送结果报告阈值(tx_rs_thresh) 137
7.4.5 发包描述符释放阈值(tx_free_thresh) 138
7.5 小结 138
第8章 流分类与多队列 139
8.1 多队列 139
8.1.1 网卡多队列的由来 139
8.1.2 Linux内核对多队列的支持 140
8.1.3 DPDK与多队列 142
8.1.4 队列分配 144
8.2 流分类 144
8.2.1 包的类型 144
8.2.2 RSS 145
8.2.3 Flow Director 146
8.2.4 服务质量 148
8.2.5 虚拟化流分类方式 150
8.2.6 流过滤 150
8.3 流分类技术的使用 151
8.3.1 DPDK结合网卡Flow Director功能 152
8.3.2 DPDK结合网卡虚拟化及Cloud Filter功能 155
8.4 可重构匹配表 156
8.5 小结 157
第9章 硬件加速与功能卸载 158
9.1 硬件卸载简介 158
9.2 网卡硬件卸载功能 159
9.3 DPDK软件接口 160
9.4 硬件与软件功能实现 161
9.5 计算及更新功能卸载 162
9.5.1 VLAN硬件卸载 162
9.5.2 IEEE1588硬件卸载功能 165
9.5.3 IP TCP/UDP/SCTP checksum硬件卸载功能 167
9.5.4 Tunnel硬件卸载功能 168
9.6 分片功能卸载 169
9.7 组包功能卸载 170
9.8 小结 172
第二部分 DPDK虚拟化技术篇
第10章 X86平台上的I/O虚拟化 175
10.1 X86平台虚拟化概述 176
10.1.1 CPU虚拟化 176
10.1.2 内存虚拟化 177
10.1.3 I/O虚拟化 178
10.2 I/O透传虚拟化 180
10.2.1 Intel VT-d简介 180
10.2.2 PCIe SR-IOV概述 181
10.3 PCIe网卡透传下的收发包流程 183
10.4 I/O透传虚拟化配置的常见问题 184
10.5 小结 184
第11章 半虚拟化Virtio 185
11.1 Virtio使用场景 185
11.2 Virtio规范和原理 186
11.2.1 设备的配置 187
11.2.2 虚拟队列的配置 190
11.2.3 设备的使用 192
11.3 Virtio网络设备驱动设计 193
11.3.1 Virtio网络设备Linux内核驱动设计 193
11.3.2 基于DPDK用户空间的Virtio网络设备驱动设计以及性能优化 196
11.4 小结 198
第12章 加速包处理的vhost优化方案 199
12.1 vhost的演进和原理 199
12.1.1 Qemu与virtio-net 199
12.1.2 Linux内核态vhost-net 200
12.1.3 用户态vhost 201
12.2 基于DPDK的用户态vhost设计 201
12.2.1 消息机制 202
12.2.2 地址转换和映射虚拟机内存 203
12.2.3 vhost特性协商 204
12.2.4 virtio-net设备管理 205
12.2.5 vhost中的Checksum和TSO功能卸载 205
12.3 DPDK vhost编程实例 206
12.3.1 报文收发接口介绍 206
12.3.2 使用DPDK vhost lib进行编程 207
12.3.3 使用DPDK vhost PMD进行编程 209
12.4 小结 210
第三部分 DPDK应用篇
第13章 DPDK与网络功能虚拟化 213
13.1 网络功能虚拟化 213
13.1.1 起源 213
13.1.2 发展 215
13.2 OPNFV与DPDK 217
13.3 NFV的部署 219
13.4 VNF部署的形态 221
13.5 VNF自身特性的评估 222
13.5.1 性能分析方法论 223
13.5.2 性能优化思路 224
13.6 VNF的设计 225
13.6.1 VNF虚拟网络接口的选择 225
13.6.2 IVSHMEM共享内存的PCI设备 226
13.6.3 网卡轮询和混合中断轮询模式的选择 228
13.6.4 硬件加速功能的考虑 228
13.6.5 服务质量的保证 229
13.7 实例解析和商业案例 231
13.7.1 Virtual BRAS 231
13.7.2 Brocade vRouter 5600 235
13.8 小结 235
第14章 Open vSwitch(OVS)中的DPDK性能加速 236
14.1 虚拟交换机简介 236
14.2 OVS简介 237
14.3 DPDK加速的OVS 239
14.3.1 OVS的数据通路 239
14.3.2 DPDK加速的数据通路 240
14.3.3 DPDK加速的OVS性能比较 242
14.4 小结 244
第15章 基于DPDK的存储软件优化 245
15.1 基于以太网的存储系统 246
15.2 以太网存储系统的优化 247
15.3 SPDK介绍 249
15.3.1 基于DPDK的用户态TCP/IP栈 249
15.3.2 用户态存储驱动 254
15.3.3 SPDK中iSCSI target实现与性能 257
15.4 小结 261
附录A 缩略词 262
附录B 推荐阅读 265

教学资源推荐
作者: 蔡开裕 范金鹏
作者: (美)Ed Tittel
作者: [美]拉里·L. 彼得森(Larry L. Peterson),[美]布鲁斯·S. 戴维(Bruce S. Davie) 著
参考读物推荐
作者: 杜金房 张令考 著