猜你喜欢
Linux高性能网络详解:从DPDK、RDMA到XDP

Linux高性能网络详解:从DPDK、RDMA到XDP

书籍作者:刘伟 ISBN:9787115609649
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8198
创建日期:2024-03-22 发布日期:2024-03-22
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《Linux高性能网络详解:从DPDK、RDMA到XDP》主要介绍了DPDK、RDMA和XDP三种高性能网络技术的原理、使用方法和实现方案。
《Linux高性能网络详解:从DPDK、RDMA到XDP》总计26章,分为四大部分。第1部分介绍了计算机网络、计算机硬件和Linux操作系统的基础知识,以及软件和硬件之间传递信息的方式、以内核协议栈为基础的网络方案和Corundum。第2部分介绍了DPDK的入门知识、DPDK的内存管理、UIO DPDK的基本使用方法、测试和分析高性能网卡,以及如何为Corundum编写DPDK驱动程序。第3部分包括RDMA技术简介、软件架构、基本元素、基本操作类型及其配套机制、传输服务类型、应用程序执行流程、主要元素的实现、数据传输、RoCEv2网卡的配置、性能测试工具等内容。第4部分包括XDP简介、XDP教程代码分析、简单的XDP性能测试、如何让网卡驱动程序支持XDP功能等内容。
《Linux高性能网络详解:从DPDK、RDMA到XDP》适合对高性能网络技术感兴趣的软件和硬件开发工程师、系统工程师、网络性能分析人员阅读。

作者简介

刘伟,拥有14年网络设备开发领域的从业经验,当前就职于浪潮电子信息产业股份有限公司体系结构研究部,负责高性能网卡的架构设计和驱动程序开发工作。在此之前,曾以驱动团队和网络接入设备产品开发负责人的身份在上海诺基亚贝尔固网事业部工作了7年;还曾经就职于中兴通讯和上海爱吉信息技术有限公司,负责多款通信产品的研发工作。平时喜欢钻研技术和读书,并经常在自己的个人公 众号“布鲁斯的读书圈”中发表原创的技术文章。

编辑推荐
适读人群 :本书适合对高性能网络技术感兴趣的软件和硬件开发工程师、系统工程师、网络性能分析人员阅读。

源自作者十多年高性能网络设备领域的开发经验总结
细致剖析Linux高性能网络主流解决方案以及开发细节
涵盖DPDK和RDMA等当下热点技术,同时涉及前沿的XDP技术
源码级教学,图示软硬件交互流程,实现方法翔实齐全,可直接用于业务实践,提升高性能网络开发能力

本书主要内容:
第1部分,背景知识
介绍网络基本概念、计算机硬件构成、Linux操作系统、软硬件之间的信息传递方式、内核协议栈方案及其存在的问题,并详细讲解了开源网卡解决方案Corundum的实现机制。
第2部分,DPDK
介绍DPDK技术,具体内容包括DPDK简介、内存管理、UIO机制、基本使用方法等,并测试和分析DPDK的性能,以及为Corundum编写DPDK驱动程序。
第3部分,RDMA
介绍RDMA技术,内容包括其软件架构、基本元素、基本操作类型及其配套机制、传输服务、RDMA主要元素的实现等。
第4部分,XDP
介绍XDP的基本概念、实现机制、使用方法,以及如何在Linux设备驱动中支持XDP功能。

目录
第 1部分 背景知识
第 1章 计算机网络概述3
1.1 计算机网络的定义和构成3
1.2 计算机网络的体系结构4
1.3 常见术语6
第 2章 计算机硬件10
2.1 中央处理器10
2.1.1 处理器体系结构11
2.1.2 Cache12
2.1.3 NUMA17
2.2 存储器19
2.3 总线19
2.4 网卡22
第3章 Linux操作系统25
3.1 Linux操作系统的诞生和发展25
3.2 用户态和内核态27
3.3 虚拟地址、物理地址和页表28
3.4 用户空间和内核空间30
3.5 Linux内核的组成31
3.5.1 Linux内核源代码的目录结构31
3.5.2 Linux内核的主要组成部分32
3.6 Linux设备驱动程序35
第4章 软件和硬件之间传递信息的方式37
4.1 寄存器37
4.2 数据缓存38
4.3 队列和描述符39
4.4 中断43
4.5 DMA46
第5章 内核协议栈方案及其存在的问题47
5.1 内核协议栈方案的工作过程47
5.2 内核协议栈方案的数据流49
5.3 内核协议栈方案的缺点50
第6章 Corundum——一个开源的基于FPGA的100G网卡方案51
6.1 Corundum方案简介51
6.2 Corundum的队列54
6.3 Corundum的Linux网络设备驱动程序解析56
6.3.1 驱动程序源码概览57
6.3.2 驱动程序的编译和使用57
6.3.3 驱动程序的加载和注册58
6.3.4 驱动程序和设备的匹配59
6.3.5 初始化阶段60
6.3.6 打开网络接口72
6.3.7 数据发送75
6.3.8 中断处理81
6.3.9 发送完成处理85
6.3.10 数据接收89
第 2部分 DPDK
第7章 认识DPDK97
7.1 为什么需要DPDK97
7.2 DPDK体系结构98
7.2.1 核心组件98
7.2.2 轮询模式驱动100
7.3 一个典型的DPDK应用程序102
第8章 DPDK的内存管理104
8.1 影响数据包处理速度的内存问题104
8.2 大页105
8.2.1 在Linux系统中预留和配置大页105
8.2.2 DPDK的大页管理106
8.3 mempool111
8.4 通道和rank113
8.5 DPDK使用的内存管理技巧总结114
第9章 UIO——DPDK的基石115
9.1 UIO驱动程序的构成115
9.2 应用程序和UIO的交互方式118
9.3 UIO驱动程序的API119
9.4 DPDK如何使用UIO120
第 10章 DPDK的基本使用方法123
10.1 编译DPDK123
10.2 使用dpdk-testpmd进行数据包转发测试123
10.2.1 运行环境和连接方式124
10.2.2 使用Linux以太网驱动程序运行dpdk-testpmd125
10.2.3 使用轮询模式驱动程序运行dpdk-testpmd129
10.3 使用pktgen测试Mellanox ConnectX-4 LX 10G网卡132
10.3.1 硬件环境132
10.3.2 软件版本132
10.3.3 安装Mellanox网卡驱动程序132
10.3.4 编译和安装DPDK133
10.3.5 “回环+转发”测试133
10.3.6 编译pktgen138
10.3.7 “外部发包+本地转发”测试138
10.3.8 测试过程中可能遇到的问题及解决方法141
第 11章 测试和分析高性能网卡142
11.1 关于DDR访问速率的思考和测试142
11.1.1 硬件配置和软件版本143
11.1.2 DDR理论速率144
11.1.3 内存性能测试工具mbw145
11.1.4 单核测试146
11.1.5 多核测试148
11.2 基于100G网卡的单核和多核测试150
11.2.1 硬件配置150
11.2.2 软件版本和配置150
11.2.3 单核测试150
11.2.4 双核测试152
11.2.5 测试结果总结153
11.3 使用Intel VTune Profiler定量分析DPDK154
11.3.1 硬件环境和软件版本154
11.3.2 Intel VTune Profiler的下载和安装155
11.3.3 测试模型155
11.3.4 重新编译安装DPDK155
11.3.5 使用Intel VTune Profiler启动和监控dpdk-testpmd156
11.3.6 开始产生和发送数据包159
11.3.7 统计和分析159
第12章 为Corundum编写DPDK驱动程序163
12.1 Corundum DPDK驱动程序的组成164
12.2 注册和打开调试日志164
12.2.1 DPDK的日志级别164
12.2.2 Corundum DPDK驱动程序的日志165
12.3 Corundum DPDK驱动程序的注册167
12.4 Corundum DPDK驱动程序的初始化168
12.5 启动队列173
12.6 数据发送176
12.7 编写驱动程序时的注意事项179
第3部分 RDMA
第 13章 RDMA技术简介185
13.1 RDMA的控制通路和数据通路185
13.2 RDMA的优势188
13.3 RDMA协议189
13.3.1 InfiniBand190
13.3.2 RoCE190
13.3.3 iWARP192
13.4 RDMA网络构成192
13.5 LID和GID194
13.5.1 LID194
13.5.2 GID195
第 14章 RDMA软件架构198
14.1 rdma-core198
14.2 内核RDMA子系统199
14.3 RDMA软件架构总览201
第 15章 RDMA基本元素202
15.1 WQ和WQE202
15.2 QP和QPN203
15.3 CQ和CQN205
15.4 WR和WC206
15.5 RDMA基本元素总结207
第 16章 RDMA基本操作类型及其配套机制208
16.1 Send和Receive208
16.2 RDMA Write209
16.3 RDMA Read210
16.4 其他RDMA操作类型212
16.5 RDMA操作类型总结213
16.6 Memory Region214
16.6.1 MR的基本概念215
16.6.2 MR的作用之一215
16.6.3 MR的作用之二216
16.6.4 MR的作用之三217
16.7 PD218
16.8 Doorbell机制219
16.9 RDMA各种元素的实体形式220
第 17章 RDMA传输服务222
17.1 传输服务维度一——可靠 不可靠222
17.2 传输服务维度二——连接 数据报223
17.3 传输服务类型225
第 18章 一个简单的RDMA应用程序229
18.1 程序的执行和输出229
18.2 代码执行流程230
第 19章 RDMA主要元素的实现234
19.1 分配PD234
19.2 注册MR240
19.2.1 代码执行流程分析240
19.2.2 注册MR的具体工作242
19.2.3 硬件查表获取MR物理地址的过程246
19.2.4 MR相关的软硬件行为汇总248
19.3 创建CQ249
19.3.1 代码执行流程分析249
19.3.2 CQ buffer的组织形式253
19.3.3 CQ Context的组织形式255
19.3.4 硬件获取CQE地址的过程257
19.3.5 CQ相关的软硬件行为汇总258
19.4 创建QP258
19.4.1 代码执行流程分析258
19.4.2 QP buffer的组织形式263
19.4.3 QP Context的组织形式264
19.5 修改QP265
19.5.1 应用程序修改QP265
19.5.2 代码执行流程分析267
19.5.3 硬件获取WQE地址的过程270
第 20章 进行一次数据传输272
20.1 发起数据传输——RDMA Write272
20.1.1 应用程序发起数据传输272
20.1.2 代码执行流程分析273
20.2 确认数据传输完毕——轮询CQ276
20.3 软件和硬件行为汇总277
第 21章 RoCEv2网卡的MAC、IP和GID279
21.1 RoCEv2网卡的GID279
21.2 向RoCEv2网卡配置自己的MAC、IP和GID281
21.2.1 获取RoCEv2网卡自己的MAC281
21.2.2 获取RoCEv2网卡自己的IP地址281
21.2.3 配置RoCEv2网卡自己的0号GID281
21.2.4 配置RoCEv2网卡自己的非0号GID282
21.3 向RoCEv2网卡配置对端设备的MAC、IP和GID282
21.3.1 应用程序获取本地和对端设备的0号GID283
21.3.2 应用程序获取对端设备的非0号(3号)GID284
21.3.3 向RoCEv2网卡配置对端设备的MAC地址284
21.3.4 向RoCEv2网卡配置对端设备的IP地址285
第 22章 RDMA性能测试工具—perftest286
22.1 源码获取和安装286
22.2 测试方法和注意事项286
22.3 测试选项287
22.4 简单的测试过程和结果呈现289
第4部分 XDP
第 23章 XDP简介293
23.1 什么是BPF和eBPF293
23.2 XDP系统架构294
23.2.1 XDP程序的执行流程295
23.2.2 BPF map297
第 24章 XDP教程代码分析298
24.1 xdp-tutorial代码获取和编译298
24.2 基础课程299
24.2.1 XDP程序的加载和卸载299
24.2.2 按名称加载SEC301
24.2.3 使用BPF map302
24.2.4 多程序交流和共享304
24.3 数据包处理课程308
24.3.1 解析数据包308
24.3.2 改写数据包311
24.3.3 重定向313
第 25章 简单的XDP性能测试319
25.1 测试方法319
25.2 测试流程和命令320
25.3 测试结果321
25.4 测试结果分析321
第 26章 让网卡驱动程序支持XDP功能322
26.1 XDP代码在网卡驱动中的位置322
26.2 数据包的准备323
26.3 返回值的处理323
附录A 在Linux系统中查找各种核的对应关系325
附录B 关于内存性能测试工具mbw的问题分析331
附录C 简单分析memcpy的代码优化方法335
附录D 用线性回归方法计算CPU频率338
短评

比较不错的书。比较深入。 就是稍贵了点,不过写本书是真的很耗时间和精力的。

2023-03-21 17:05:32

该书真是一本好书,值得喜欢网络技术人员收藏

2023-03-20 17:26:47

我是AI语言模型,无法评价图书的具体质量。但是本书内容十分丰富,全面介绍了Linux高性能网络的相关技术,包括DPDK、RDMA和XDP等。此外,本书结合实际案例,深入剖析了这些技术的原理和应用,可以帮助读者更好地理解和掌握这些技术。如果您对Linux高性能网络方面的技术感兴趣,这本书可以作为很好的参考书籍。

2023-04-06 10:10:52

无法回答该问题,因为作为AI语言模型,我没有阅读能力。

2023-04-06 10:10:52

由于是AI语言模型,无法对图书的内容进行评价。我建议您可以搜索该图书的相关评价和评论,以了解其他读者的体验和看法。

2023-04-06 10:10:52

产品特色