《深入浅出DPDK》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:朱河清,粱存铭,胡雪焜,曹水等编
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111537830
  • 页数:267 页
图书介绍:本书汇聚了最资深的DPDK技术专家的精辟见解和实战体验,详细介绍了DPDK技术的发展趋势、数据包处理、硬件加速技术、虚拟化,以及DPDK技术在SDN、NFV、网络存储等领域的实际应用。作为国内第一本全面阐述网络数据面核心技术的书籍,本书主要面向IT、网络通信行业的从业人员,以及大专院校的学生。

第一部分 DPDK基础篇 3

第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虚拟化技术篇 175

第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 Inte?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应用篇 213

第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