
朱河清等
本書匯聚了資深的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 相對其他市面上的書來講,還是不錯的。