具体描述
近年来,随着网络技术的不断创新和市场的发展,越来越多的网络设备基础架构开始向基于通用处理器平台的架构方向融合,期望用更低的成本和更短的产品开发周期来提供多样的网络单元和丰富的功能,如应用处理、控制处理、包处理、信号处理等。为了适应这一新的产业趋势, 英特尔公司联合第三方软件开发公司及时推出了基于Intel® x86架构DPDK (Data Plane Development Kit,数据平面开发套件) 实现了高效灵活的包处理解决方案。经过近6年的发展,DPDK已经发展成支持多种高性能网卡和多通用处理器平台的开源软件工具包,并在成为通用处理器平台上影响力最大的数据平面解决方案。
本书汇聚了最资深的DPDK技术专家精辟见解和实战体验,详细介绍了DPDK技术发展趋势,数据包处理,硬件加速技术,包处理和虚拟化 ,以及DPDK 技术在SDN,NFV ,网络存储等领域的实际应用。文中还使用大量的篇幅讲解各种核心软件算法,最先进的数据优化思想,大量详尽的实战心得和使用指南。作为国内第一本全面的阐述网络数据面的核心技术的书籍,本书主要面向IT 网络通讯行业的从业人员,以及大专院校的学生,用通俗易懂的文字打开了一扇通向新一代网络处理架构的大门。
作者简介
目录信息
1 认识DPDK
1.1 主流包处理硬件平台
1.2 初识DPDK
1.3 解读数据包处理能力
1.4 探索IA处理器上最艰巨的任务
1.5 软件包处理的潜力– 再识DPDK
1.6 从融合的角度看DPDK
1.7 实例
2 Cache和内存
2.1 存储系统简介
2.2 Cache系统简介
2.3 Cache地址映象和变换
2.4 Cache的写策略
2.5 Cache预取
2.6 Cache一致性
2.7 TLB和大页
2.8 DDIO
2.9 NUMA系统
3 并行计算
3.1 多核性能和可扩展性
3.2 指令并发与数据并行
4 同步互斥机制
4.1 原子操作
4.2 读写锁
4.3 自旋锁
4.4 无锁机制
5 报文转发
5.1 网络处理模块划分
5.2 转发框架介绍
5.3 转发算法
6 PCIe与包处理I/O
6.1 从PCIe事务的角度看包处理
6.2 PCIe上的数据传输的能力
6.3 网卡DMA描述符环形队列
6.4 数据包收发— CPU和IO的协奏
6.5 PCIe的净荷转发带宽
6.6 Mbuf 与Mempool
7 网卡性能优化
7.1 DPDK的轮询模式
7.2 网卡I/O性能优化
7.3 平台优化及其配置调优
7.4 队列长度及各种阈值的设置
8 流分类与多队列
8.1 多队列
8.2 流分类
8.3 流分类技术的使用
8.4 可重构匹配表
9 硬件加速与功能卸载
9.1 硬件卸载简介
9.2 网卡硬件卸载功能
9.3 DPDK软件接口
9.4 硬件与软件功能实现
9.5 计算及更新功能卸载
9.6 分片功能卸载
9.7 组包功能卸载
DPDK 虚拟化技术篇
10 X86平台上的I/O虚拟化
10.1 X86平台虚拟化概述
10.2 I/O透传虚拟化
10.3 PCI-e网卡透传下的收发包流程
10.4 I/O透传虚拟化配置的常见问题
11 半虚拟化Virtio
11.1 Virtio使用场景
11.2 Virtio规范和原理
11.3 Virtio网络设备驱动设计
12 加速包处理的vhost优化方案
12.1 vHOST的演进和原理
12.2 基于DPDK的用户态vHOST设计
12.3 DPDK vHost编程实例
13 DPDK与网络功能虚拟化
13.1 NFV网络功能虚拟化
13.2 OPNFV与DPDK
13.3 NFV的部署
13.4 VNF部署的形态
13.5 VNF自身特性的评估
13.6 VNF的设计
13.7 实例解析和商业案例
14 Open vSwitch (OVS)中的DPDK性能加速
14.1 虚拟交换机简介
14.2 OVS简介
14.3 DPDK加速的OVS
15 基于DPDK的存储软件优化
15.1 基于以太网的存储系统
15.2 以太网存储系统的优化
15.3 SPDK 介绍
· · · · · · (收起)
读后感
其实就是由各种网络资料抄袭、拼凑而成(如 IBM developerWorks 中国),随便举一个栗子,第61页介绍 cpu 亲和性的文字,完全抄袭自《管理处理器的亲和性(affinity)》:http://www.ibm.com/developerworks/cn/linux/l-affinity.html 给原作者付费了吗?
DPDK的全称就是Data Plane Develop Kit。最早是英特尔公司为了多卖自己的几块CPU而完成的一个软件包,其目的是使用通用的x86架构CPU完成网络处理功能,以和专用的网络处理CPU,FPGA,ASIC等方案进行竞争。现在应该是开源了,而且不仅仅是X86使用,arm平台也在采用。 对于一个像...
其实就是由各种网络资料抄袭、拼凑而成(如 IBM developerWorks 中国),随便举一个栗子,第61页介绍 cpu 亲和性的文字,完全抄袭自《管理处理器的亲和性(affinity)》:http://www.ibm.com/developerworks/cn/linux/l-affinity.html 给原作者付费了吗?
DPDK的全称就是Data Plane Develop Kit。最早是英特尔公司为了多卖自己的几块CPU而完成的一个软件包,其目的是使用通用的x86架构CPU完成网络处理功能,以和专用的网络处理CPU,FPGA,ASIC等方案进行竞争。现在应该是开源了,而且不仅仅是X86使用,arm平台也在采用。 对于一个像...
DPDK的全称就是Data Plane Develop Kit。最早是英特尔公司为了多卖自己的几块CPU而完成的一个软件包,其目的是使用通用的x86架构CPU完成网络处理功能,以和专用的网络处理CPU,FPGA,ASIC等方案进行竞争。现在应该是开源了,而且不仅仅是X86使用,arm平台也在采用。 对于一个像...
用户评价
这本书的封面设计非常吸引人,那种蓝色的渐变和现代感的字体,一看就知道是本技术硬核的力作。我是在一个技术交流会上偶然看到这本书的,当时手里正好拿着几本其他网络技术方面的书,但这本书的标题——“深入浅出DPDK”——立刻抓住了我的眼球。作为一个长期在网络开发领域摸爬滚打的老兵,我深知DPDK的强大与复杂性,它就像一把双刃剑,用得好能带来极致的性能,但入门的门槛确实不低。我翻开扉页,发现作者的介绍里提到了他在业界多年的实践经验,这让我对这本书的实用性有了极大的信心。我立刻决定把它加入我的书单,期待能从中找到系统梳理知识的捷径,而不是像以前那样,靠碎片化的博客和官方文档拼凑知识体系。特别是书中对一些底层概念,比如内存管理和无锁队列的讲解,我非常期待能看到作者独特的、更易于理解的阐述方式。这本书的出现,感觉就像是在一个迷雾重重的技术丛林里,突然出现了一盏指路的明灯,让人对未来的学习之路充满了期待和希望。
这本书的深度和广度都拿捏得恰到好处,显示了作者对整个DPDK生态系统的全面掌控。它不像某些书籍只侧重于数据平面(Data Plane)的加速,而是也深入探讨了控制平面的一些管理机制,比如如何在运行时动态地配置端口或队列,这对构建生产环境中的可靠服务至关重要。我记得有一章专门讨论了与虚拟化环境(如VFIO/SR-IOV)的集成,这部分内容在国内的中文技术书籍中相对少见。作者不仅提供了理论讲解,还给出了实战中可能遇到的陷阱和优化点,比如NUMA架构下的内存对齐问题,这些都是实战经验的结晶,书本价值远超其售价。对于那些希望从实验环境迈向真实生产环境的工程师来说,这本书提供的这些“避坑指南”是无价之宝,它节省了大量宝贵的调试时间。
这本书的排版和章节结构简直是教科书级别的典范,这对于深度学习技术书籍来说至关重要。我通常阅读技术书籍时,会习惯性地用荧光笔标记重点,并习惯性地在空白处做笔记,但这本书的逻辑流淌得非常自然,几乎每一个段落都承接着前文,自然而然地引出了下一个更深入的概念。比如,在介绍PMD(Poll Mode Driver)原理的时候,作者并没有急于展示代码,而是先用生动的比喻解释了中断与轮询的性能差异,这种由宏观到微观的递进方式,极大地降低了初学者的理解压力。我尤其欣赏作者在关键函数调用链上所做的注释和图示,清晰到不需要频繁地来回翻阅其他章节来确认上下文关系。拿到这本书的当天晚上,我就被它吸引住了,一直读到深夜,那种沉浸式的阅读体验,很少有技术书能给我带来。它不是那种堆砌API和参数的工具手册,而更像一位经验丰富的导师,耐心地为你解构一个庞大而复杂的系统。
从我个人的使用经验来看,这本书最大的价值在于它对“为什么”的深入挖掘,而不仅仅是“怎么做”。很多市面上的DPDK教程会直接给出配置和编译的步骤,但这对于理解其核心设计哲学帮助不大。这本书在讲解数据包处理流程时,花了大量的篇幅去探讨DPDK为何要采用特定的内存池设计,以及这种设计如何规避Linux内核网络栈的性能瓶颈。读完相关章节,我才真正理解了“零拷贝”的真正含义及其在DPDK生态中的重要性。作者没有回避那些晦涩难懂的底层细节,而是用非常精炼的语言将其提炼出来,并辅以架构图,使得原本需要花费数周时间才能搞懂的原理,在几个小时内便豁然开朗。这种对设计思想的尊重和阐释,让读者不仅学会了使用DPDK,更重要的是,学会了像DPDK的设计者一样去思考问题。
坦率地说,这本书的阅读过程并非全程无阻,它确实需要读者具备一定的C语言基础和对操作系统内核基础概念的了解,这从某种角度也说明了它定位的专业性。但正因为如此,当你攻克下其中一个难点时,那种成就感是无与伦比的。我特别喜欢其中穿插的那些小贴士(Tips),它们通常隐藏在某个代码片段的旁边,用一种轻松的语气提醒你注意一个容易被忽略的细节。例如,关于如何优化CPU亲和性设置的那个小技巧,我就在自己的项目中尝试并获得了显著的性能提升。这本书真正做到了“深入”与“浅出”的完美结合,它没有降低技术门槛,而是通过优化的叙事方式,帮助有志于此的读者跨越了那道原本看似难以逾越的鸿沟。读完之后,我感觉自己对高性能网络编程的理解上了一个全新的台阶。
如果能力足够的话,还是推荐读DPDK官网资料
不如看官方文档.
很多内容都能在官方文档上找到,但没官方文档的详细。考虑到相关中文资料较少,对于英文阅读有障碍的学习者还是有一定价值的。
很多内容都能在官方文档上找到,但没官方文档的详细。考虑到相关中文资料较少,对于英文阅读有障碍的学习者还是有一定价值的。
深入浅出***系列.....