DPDK应用基础

DPDK应用基础
作 者: 唐宏 柴卓原 任平 王勇
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  唐宏,男,中国电信股份有限公司广州研究院数据通信研究所所长,主要从事IP承载网、下一代互联网、网络新技术方面的研发与管理工作。

内容简介

本书不仅深入浅出地介绍了DPDK的基础原理和安装调试方法,还详细介绍了DPDK在NFV中的应用场景和测试方法,并叙述了DPDK应用开发的技术细节和实践经验,是DPDK的入门必读,是了解NFV加速转发技术的**指南。

图书目录

目录

第一部分 基础原理

第 1 章 背景概述........................................................................................................ 3

1.1 产业背景.................................................................................................................. 3

1.1.1 x86 架构性能分析..............................................................................................4

1.1.2 NFV 中的网络转发性能分析..............................................................................5

1.1.3 DPDK 的引入.......................................................................................................7

1.1.4 本书范围............................................................................................................... 8

1.2 DPDK 开源社区.................................................................................................. 9

1.2.1 社区起源............................................................................................................... 9

1.2.2 社区网站............................................................................................................. 10

1.3 DPDK 源代码...................................................................................................... 11

1.3.1 版本总述............................................................................................................. 11

1.3.2 最新版本特性介绍.............................................................................................12

参考文献........................................................................................................................... 13

第 2 章 DPDK 技术简介.............................................................................................. 14

2.1 软件架构................................................................................................................. 14

2.2 巨页技术.................................................................................................................. 16

2.3 轮询技术.................................................................................................................. 16

2.4 CPU 亲和技术........................................................................................................ 16

2.5 DPDK 性能影响因素........................................................................................ 17

2.5.1 硬件结构............................................................................................................. 17

2.5.2 OS 版本及其内核...............................................................................................18

2.5.3 OVS 性能问题.................................................................................................... 20

2.5.4 内存管理............................................................................................................. 20

2.5.5 CPU 核间无锁通信 ............................................................................................22

2.5.6 目标 CPU 类型的正确设置 ...............................................................................22

第 3 章 DPDK 库函数.................................................................................................. 23

3.1 EAL 库................................................................................................................. 24

3.1.1 内核初始化与启动.............................................................................................24

3.1.2 内存..................................................................................................................... 25

3.1.3 多线程与亲和性.................................................................................................25

3.2 Ring 库.................................................................................................................. 26

3.2.1 单消费者入队..................................................................................................... 26

3.2.2 单消费者出队..................................................................................................... 28

3.3 Mempool 库 ......................................................................................................... 29

3.4 mbuf 库 .................................................................................................................. 30

3.4.1 数据存储............................................................................................................. 30

3.4.2 缓冲区分配与释放.............................................................................................31

3.4.3 相关操作............................................................................................................. 31

3.5 PMD 驱动........................................................................................................... 31

3.5.1 需求与设计......................................................................................................... 31

3.5.2 配置..................................................................................................................... 32

3.6 IVSHMEM 库........................................................................................................ 32

3.6.1 API 概述 ............................................................................................................. 33

3.6.2 环境配置............................................................................................................. 34

3.7 Timer 库.................................................................................................................... 34

3.8 LPM 库..................................................................................................................... 34

3.8.1 API 概述 ............................................................................................................. 35

3.8.2 实现说明............................................................................................................. 35

3.9 Hash 库................................................................................................................. 36

3.9.1 API 概述 ............................................................................................................. 36

3.9.2 实现说明............................................................................................................. 36

3.10 多进程支持....................................................................................................... 37

3.10.1 内存共享............................................................................................................. 38

3.10.2 局限性................................................................................................................. 38

参考文献........................................................................................................................... 39

第 4 章 DPDK 安装与部署.................................................................................... 40

4.1 系统要求.............................................................................................................. 40

4.1.1 BIOS 设置要求................................................................................................... 40

4.1.2 DPDK 编译要求................................................................................................. 40

4.1.3 运行 DPDK 应用程序要求................................................................................41

4.2 使用源代码编译 DPDK............................................................................................. 43

4.2.1 安装 DPDK 安装包............................................................................................43

4.2.2 安装 DPDK 目标环境........................................................................................43

4.2.3 查看已安装的 DPDK 环境................................................................................44

4.2.4 启用 DPDK 用户空间 I/O 的模块.....................................................................44

4.2.5 加载 VFIO 模块.................................................................................................. 45

4.2.6 在内核模块绑定/解除网络端口........................................................................45

4.3 编译和运行示例应用程序...............................................................................46

4.3.1 编译示例应用程序.............................................................................................46

4.3.2 运行示例应用程序.............................................................................................47

4.3.3 应用程序的逻辑核使用.....................................................................................47

4.3.4 应用程序巨页内存使用.....................................................................................48

4.3.5 其他应用示例程序.............................................................................................48

4.3.6 测试应用程序..................................................................................................... 48

4.4 启用其他功能...................................................................................................... 49

4.4.1 高精度事件计时器(HPET)功能...................................................................49

4.4.2 无权限运行 DPDK 应用程序............................................................................49

4.4.3 电源管理和节能功能.........................................................................................50

4.4.4 核隔离功能......................................................................................................... 50

4.4.5 加载 DPDK KNI 内核模块................................................................................50

4.4.6 IOMMU 功能...................................................................................................... 51

4.4.7 小数据分组高速转发功能.................................................................................51

4.5 快速启动设置脚本............................................................................................ 52

4.5.1 脚本组织结构..................................................................................................... 52

4.5.2 使用场景............................................................................................................. 53

第 5 章 DPDK 自带应用软件调试..............................................................................54

5.1 命令行应用例....................................................................................................... 54

5.1.1 概述..................................................................................................................... 54

5.1.2 应用例编译......................................................................................................... 55

5.1.3 应用例运行......................................................................................................... 55

5.1.4 代码说明............................................................................................................. 55

5.2 HelloWorld 应用例............................................................................................. 56

5.2.1 应用例编译......................................................................................................... 57

5.2.2 运行应用例......................................................................................................... 57

5.2.3 代码说明............................................................................................................. 57

5.3 L2 转发应用例 .................................................................................................... 58

5.3.1 概述..................................................................................................................... 58

5.3.2 编译..................................................................................................................... 59

5.3.3 运行..................................................................................................................... 59

5.3.4 代码说明............................................................................................................. 60

5.4 L3 转发应用例 .................................................................................................... 65

5.4.1 概述..................................................................................................................... 65

5.4.2 L3 转发应用例编译............................................................................................65

5.4.3 L3 转发应用例运行............................................................................................65

5.4.4 代码说明............................................................................................................. 66

5.5 负载均衡应用例................................................................................................. 69

5.5.1 概述..................................................................................................................... 69

5.5.2 编译与运行......................................................................................................... 70

5.5.3 代码说明............................................................................................................. 70

5.6 QoS 调度应用例................................................................................................... 72

5.6.1 QoS 调度应用例概述.........................................................................................72

5.6.2 QoS 调度应用例编译.........................................................................................72

5.6.3 QoS 调度应用例运行.........................................................................................73

5.6.4 应用例代码说明................................................................................................. 75

5.7 定时器应用例....................................................................................................... 76

5.7.1 应用例编译与运行.............................................................................................76

5.7.2 应用例代码说明................................................................................................. 76

5.8 分发器应用例..................................................................................................... 78

5.8.1 概述..................................................................................................................... 78

5.8.2 分发器应用例编译.............................................................................................79

5.8.3 分发器应用例运行.............................................................................................79

5.8.4 分发器应用例代码说明.....................................................................................79

5.8.5 调试与统计信息................................................................................................. 80

参考文献........................................................................................................................... 80

第二部分 DPDK 应用与测试

第 6 章 DPDK 在 NFV 的应用和相关测试方法......................................................... 83

6.1 DPDK 在 NFV 中的应用场景.............................................................................. 83

6.1.1 x86 服务器上的应用..........................................................................................83

6.1.2 虚拟机+OVS 的应用..........................................................................................84

6.1.3 虚拟机+SR-IOV 技术的应用.............................................................................86

6.2 NFV 场景下的测试方法................................................................................ .... ..87

6.2.1 测试拓扑............................................................................................................. 87

6.2.2 测试标准............................................................................................................. 88

6.2.3 测试平台说明..................................................................................................... 89

第 7 章 DPDK 专项测试与结论.................................................................................. 92

7.1 测试用例介绍............................................................................................................. 92

7.2 专项测试详情.......................................................................................................... 93

7.2.1 x86 服务器三层转发测试..................................................................................93

7.2.2 SR-IOV 测试..................................................................................................... 108

7.2.3 OVS 测试.......................................................................................................... 126

第三部分 DPDK 应用开发及实例解析

第 8 章 DPDK 应用开发基础....................................................................................... 135

8.1 网卡设备................................................................................................................ 135

8.1.1 设备驱动........................................................................................................... 135

8.1.2 应用接口........................................................................................................... 136

8.1.3 设备接口........................................................................................................... 137

8.2 进程..................................................................................................................... 145

8.2.1 线程................................................................................................................... 145

8.2.2 单进程............................................................................................................... 146

8.2.3 多进程............................................................................................................... 147

参考文献............................................................................................................................... 149

第 9 章 vDPI 应用实例.................................................................................................. 150

9.1 DPI 简介 ................................................................................................................... 150

9.2 总体设计.................................................................................................................... 151

9.2.1 模型设计........................................................................................................... 151

9.2.2 组件设计...........................................................................................................151

9.3 实现方案设计.............................................................................................................. 152

9.4 基于 l3fwd 的实现方案.......................................................................................... 153

9.4.1 DPDK 以太网接口........................................................................................... 153

9.4.2 DPI 以太网接口................................................................................................ 154

9.4.3 DPDK 与 DPI 的数据接口转换.......................................................................155

9.4.4 代码解析........................................................................................................... 155

9.5 基于 pipeline 的实现方案.................................................................................... 157

9.6 实例运行及性能测试.................................................................................................. 158

参考文献............................................................................................................................... 159

第 10 章 mTCP 和 BRAS 应用实例.................................................................................. 160

10.1 mTCP 案例解析 ...................................................................................................160

10.1.1 mTCP 简介 ..................................................................................................... 160

10.1.2 mTCP 应用解析.............................................................................................. 161

10.2 BRAS 案例解析 ........................................................................................................ 165 10.2.1 BRAS 简介 ..................................................................................................... 165

10.2.2 BRAS 应用解析.............................................................................................. 166

参考文献............................................................................................................................... 168

附录

附录一 操作系统服务关闭说明......................................................................................... 171 附录二 操作系统安装......................................................................................................... 172 附录三 DPDK 编译................

附录四 操作系统启动参数................................................................................................ 174

附录五 l3fwd 程序编译 ................................................................................................... 175

附录六 l3fwd 启动配置 ................................................................................................... 178

附录七 SR-IOV 测试配置........................................................................................................ 181

附录八 OVS 安装.................................................................................................................. 183

附录九 OVS 测试配置...................................................................................................... 184

附录十 l3fwd 在不同流量下启动配置 .............................................................................187

附录十一 大流表测试 l3fwd 启动配置 ............................................................................. 190