
朱河清等
本书汇聚了资深的dpdk技术专家的精辟见解和实战体验,详细介绍了dpdk技术的发展趋势、数据包处理、硬件加速技术、虚拟化,以及dpdk技术在sdn、nfv、网络存储等领域的实际应用。作为国内第一本全面阐述网络数据面核心技术的书籍,本书主要面向it、网络通信行业的从业人员,以及大专院校的学生。
如果你的工作涉及报文转发,那无需多言: 你的案头应该出现这本书, 你应该读它,并且 应该反复读它。
基本上对DPDK有所了解,部分内容需要长期关注,DPDK在高速网络上的应用以及在Iscsi上的前景。
粗粗看完了这本书,对DPDK有了一个较完整的体系框架,适合入门选手,推荐!
virtio/vhost 那两章很好… 可惜没讲 SR-IOV…
帮我复习了下计算机组成原理!太棒啦
个人理解书大致分为了几个部分: 1: 高性能计算,包括cache 内存架构 多核体系numa 无锁计算等 2: 高性能网络,包括硬件卸载,多队列网卡,mapi轮训和基于中断的网络模式之间的差别等。 3: dpdk在1和2上面的思考,做的一些性能方面的优化,比如批量处理优化cache,使用用户态驱动减少内核和用户态频繁切换导致的性能损耗等 4: dpdk在虚拟化方面的应用 5: dpdk在网络存储方面的应用,比如将文件驱动做到用户态以及mtcp等的落地 总得来说是一本好书,虽然中间有一些错误。。个人在看的时候跳过了虚拟化方面的内容,一个原因是虚拟化方面的确很复杂涉及到软硬件虚拟化,而本书的重点又不在这,看起来比较费力。
“你以为你读的是dpdk,其实你读的是体系结构。” dpdk可谓是intel对于使用通用cpu实现网络数据面的一项大胆且成功的尝试,距离成书的2016年,现在已经7年了,再来看这本书,哪怕中间有大量代码依然被重构,依然是收获颇多~ 本书前半本从cpu的cache原理开始说起,把多核并行,numa,pcie,网卡和硬件卸载的原理娓娓道来,中间穿插着介绍了一些相关的api和使用实例,但是重心仍然是在原理和设计时的考虑,读起来非常有意思~ 后半本主要关注在虚拟化和应用上,并把各种类型的虚拟化方法和原理都讲述了一遍,虚拟化本身比较复杂,所以最好是对着其他文档一起看,比如intel的指令集手册,至于应用,现在看起来确实比较有年代感了,但是并无伤大雅~ 最后可能唯一的遗憾可能就是让这本书在书架上吃灰吃了这么久,没有早点把这本书读完了~
作为入门书籍,讲解的很全面,从问世的原因讲起,到为了提高转发性能而从各个方面做出的优化努力,最终有了集大成的dpdk:包括提高cache命中,使用大页内存,网卡收包模式中断改轮询,处理器亲和性绑定核心,内存架构改进NUMA,DMA,虚拟化IO透传,用户态vhost 等各个方面的优化与新技术实现。 后面又介绍了dpdk带来的行业应用和机会前景,一概而全。特别要说明的一点是基于dpdk的ovs的应用实现,dpdk收包后可以直接将数据提供给用户态访问,直接提高了11倍。试想如果收包后继续有流量处理需求,如传统dpi,防火墙等处理,则用户态报文可以直接给上层vnf实例,相对于传统报文路径的多次拷贝收发传递,将有极大的效率提升,这是文章中所没有提及的。
近年来,随着网络技术的不断创新和市场的发展,越来越多的网络设备基础架构开始向基于通用处理器平台的架构方向融合,期望用更低的成本和更短的产品开发周期来提供多样的网络单元和丰富的功能,如应用处理、控制处理、包处理、信号处理等。为了适应这一新的产业趋势, 英特尔公司联合第三方软件开发公司及时推出了基于Intel® x86架构的DPDK (Data Plane Development Kit,数据平面开发套件),实现了高效灵活的包处理解决方案。经过近6年的发展DPDK已经发展成支持多种高性能网卡和多通用处理器平台的开源软件工具包,并已成为通用处理器平台上影响力最大的数据平面解决方案。 本书汇聚了资深的DPDK技术专家的精辟见解和实战体验,详细介绍了DPDK技术发展趋势、数据包处理、硬件加速技术、包处理和虚拟化 ,以及DPDK 技术在SDN、NFV、网络存储等领域的实际应用。书中还使用大量的篇幅讲解各种核心软件算法、先进的数据优化思想、大量详尽的实战心得和使用指南。作为国内唯一本全面阐述网络数据面的核心技术的书籍,本书主要面向IT、网络通讯行业的从业人员,以及大专院校的学生,用通俗易懂的文字打开了一扇通向新一代网络处理架构的大门。
这本书应该是目前对 DPDK 讲解的最为系统的一本书了,据我所知本书的很多作者还是在担任 maintainer 经常 review 代码,总体质量还是相当不错。 前面关于体系结构(DMA,MMIO,catch架构和一致性问题,还有 NUMA)以及操作系统(多核操作,三种lock 机制)的基础内容算是给大家复习一下大学的课程。 后面讲了几个方面的优化,在网卡设计方面:using batch process to avoid memory overhead (tx, rx shresh, burst) in ring buffer, hardware offloading. 多核方面:multiple ingress/egress queues, core affixing. 虚拟化方面:VFIO,还有利用硬件创建一个虚拟内存映射。 但其实看到后面我觉得很艰难,没什么趣味,都是很干的技术细节,很像大学教材的感觉。如果是我的话,我会把 DPDK example 拿出几个有代表性的,然后讲一下这些 example 在干嘛,用到了哪些 DPDK 特有的技术,然后这些技术是怎么实现的。这样会直观以及有意思很多。 overall 相对其他市面上的书来讲,还是不错的。