深入淺齣DPDK

深入淺齣DPDK pdf epub mobi txt 電子書 下載 2025

硃河清 等 著
圖書標籤:
  • DPDK
  • 網絡編程
  • 高性能
  • Linux
  • 數據平麵
  • 網絡加速
  • 包處理
  • 內核旁路
  • 網絡協議
  • 開發實踐
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111537830
版次:1
商品編碼:11937100
品牌:機工齣版
包裝:平裝
開本:16開
齣版時間:2016-05-01
用紙:膠版紙
頁數:267

具體描述

編輯推薦

  

挑戰網絡性能極限 ,資深開發者伴你在DPDK的世界中成長。展現軟件優化的極*魅力,百萬兆高性能網絡就在身邊。剖析數據麵軟件中的核心算法和關鍵技術 全麵展示DPDK與 NFV的深度融閤

難得的NFV數據麵軟件書籍,
  全麵係統地闡述硬件平颱和數據麵軟件中一係列關鍵技術。
  權*的數據麵軟件開發指南,
  深入剖析核心算法的原理及詳盡的DPDK編程實踐。
  前沿的數據麵産業應用和動嚮
  全麵介紹DPDK與 NFV、軟件存儲等領域的深度融閤的案例。

內容簡介

  

近年來,隨著網絡技術的不斷創新和市場的發展,越來越多的網絡設備基礎架構開始嚮基於通用處理器平颱的架構方嚮融閤,期望用更低的成本和更短的産品開發周期來提供多樣的網絡單元和豐富的功能,如應用處理、控製處理、包處理、信號處理等。為瞭適應這一新的産業趨勢, 英特爾公司聯閤第三方軟件開發公司及時推齣瞭基於Intel® x86架構的DPDK (Data Plane Development Kit,數據平麵開發套件),實現瞭高效靈活的包處理解決方案。經過近6年的發展DPDK已經發展成支持多種高性能網卡和多通用處理器平颱的開源軟件工具包,並已成為通用處理器平颱上影響力*大的數據平麵解決方案。
  本書匯聚瞭資深的DPDK技術專傢的精闢見解和實戰體驗,詳細介紹瞭DPDK技術發展趨勢、數據包處理、硬件加速技術、包處理和虛擬化 ,以及DPDK 技術在SDN、NFV、網絡存儲等領域的實際應用。書中還使用大量的篇幅講解各種核心軟件算法、先進的數據優化思想、大量詳盡的實戰心得和使用指南。作為國內*一本全麵闡述網絡數據麵的核心技術的書籍,本書主要麵嚮IT、網絡通訊行業的從業人員,以及大專院校的學生,用通俗易懂的文字打開瞭一扇通嚮新一代網絡處理架構的大門。

作者簡介

硃河清 現為英特爾DPDK與Hyperscan軟件經理,在Intel、Alcatel、Huawei、Lucent有15年通信網絡設備研發與開源軟件開發經驗。
梁存銘 英特爾資深軟件工程師,在計算機網絡領域具有豐富的實踐開發經驗,提交多項美國專利。作為DPDK早期貢獻者之一,在PCIe 高性能加速、I/O虛擬化、IA指令優化、協議棧優化等方麵有較深入的研究。
鬍雪焜 現為英特爾網絡通訊平颱部門應用工程師,主要研究底層虛擬化技術和基於IA架構的數據麵性能優化, 以及對網絡演進的影響,具有豐富的SDN/NFV商業實踐。
曹水 現為英特爾軟件經理,從事嵌入式開發和軟件行業超過15年,主要負責DPDK軟件測試工作。


精彩書評

  

當前,一場全新的網絡技術革新正在如火如荼地展開,其焦點在於如何給通信企業、雲服務商提供更具性價*的方案和更靈活的服務,而軟件的創新正是推動這場革新的核心動力。經過多年的發展,DPDK已經成為事實上的數據麵軟件的標準,支持多個主流處理器架構,並已經擁有上百個成功的商業部署。英特爾公司非常榮幸能夠作為這次網絡技術變革的領導者,幫助用戶打造具備高性能和靈活功能的産品。
  ——Sandra Rivera,英特爾數據中心網絡平颱事業部總裁
  
  英特爾平颱在軟件優化方麵擁有巨大的潛力,DPDK是一個非常齣色的例子。過去10年是我人生中尤為珍貴的旅程,我有幸主持DPDK開發計劃,親眼見證DPDK從最初一個很小的軟件庫起步,逐步完善原型設計,獲得客戶認可。伴隨著多核時代和高速以太網時代的到來,DPDK在電信業、雲計算和企業服務中掀起瞭一股網絡技術革新的浪潮。在未來幾年,我們即將看到全行業開源步伐加快,最近思科公司VPP在www.fd.io發布是一個優秀的實踐。我們很幸運,能夠成為網絡技術革新的領導者。
  ——St Leger Jim,英特爾網絡事業部軟件産品總監
  
  軟件正在改變世界,DPDK這樣的開源軟件展示瞭軟件在高速的網絡報文處理中的魅力。本書能夠幫助廣大學生在係統地學習理論知識的同時緊密聯係實際工程和應用,具有相當不錯的參考價值。
  ——金耀輝教授,上海交通大學網絡中心

目錄

序  言
引  言
作者介紹
第一部分 DPDK基礎篇
第1章 認識DPDK 3
1.1 主流包處理硬件平颱 3
1.1.1 硬件加速器 4
1.1.2 網絡處理器 4
1.1.3 多核處理器 5
1.2 初識DPDK 7
1.2.1 IA不適閤進行數據包處理嗎 7
1.2.2 DPDK最佳實踐 9
1.2.3 DPDK框架簡介 10
1.2.4 尋找性能優化的天花闆 11
1.3 解讀數據包處理能力 12
1.4 探索IA處理器上最艱巨的任務 13
1.5 軟件包處理的潛力——再識DPDK 14
1.5.1 DPDK加速網絡節點 14
1.5.2 DPDK加速計算節點 15
1.5.3 DPDK加速存儲節點 15
1.5.4 DPDK的方法論 16
1.6 從融閤的角度看DPDK 16
1.7 實例 17
1.7.1 HelloWorld 17
1.7.2 Skeleton 19
1.7.3 L3fwd 22
1.8 小結 25
第2章 Cache和內存 26
2.1 存儲係統簡介 26
2.1.1 係統架構的演進 26
2.1.2 內存子係統 28
2.2 Cache係統簡介 29
2.2.1 Cache的種類 29
2.2.2 TLB Cache 30
2.3 Cache地址映射和變換 31
2.3.1 全關聯型Cache 32
2.3.2 直接關聯型Cache 32
2.3.3 組關聯型Cache 33
2.4 Cache的寫策略 34
2.5 Cache預取 35
2.5.1 Cache的預取原理 35
2.5.2 NetBurst架構處理器上的預取 36
2.5.3 兩個執行效率迥異的程序 37
2.5.4 軟件預取 38
2.6 Cache一緻性 41
2.6.1 Cache Line對齊 41
2.6.2 Cache一緻性問題的由來 42
2.6.3 一緻性協議 43
2.6.4 MESI協議 44
2.6.5 DPDK如何保證Cache一緻性 45
2.7 TLB和大頁 47
2.7.1 邏輯地址到物理地址的轉換 47
2.7.2 TLB 48
2.7.3 使用大頁 49
2.7.4 如何激活大頁 49
2.8 DDIO 50
2.8.1 時代背景 50
2.8.2 網卡的讀數據操作 51
2.8.3 網卡的寫數據操作 53
2.9 NUMA係統 54
第3章 並行計算 57
3.1 多核性能和可擴展性 57
3.1.1 追求性能水平擴展 57
3.1.2 多核處理器 58
3.1.3 親和性 61
3.1.4 DPDK的多綫程 63
3.2 指令並發與數據並行 66
3.2.1 指令並發 67
3.2.2 單指令多數據 68
3.3 小結 70
第4章 同步互斥機製 71
4.1 原子操作 71
4.1.1 處理器上的原子操作 71
4.1.2 Linux內核原子操作 72
4.1.3 DPDK原子操作實現和應用 74
4.2 讀寫鎖 76
4.2.1 Linux讀寫鎖主要API 77
4.2.2 DPDK讀寫鎖實現和應用 78
4.3 自鏇鎖 79
4.3.1 自鏇鎖的缺點 79
4.3.2 Linux自鏇鎖API 79
4.3.3 DPDK自鏇鎖實現和應用 80
4.4 無鎖機製 81
4.4.1 Linux內核無鎖環形緩衝 81
4.4.2 DPDK無鎖環形緩衝 82
4.5 小結 89
第5章 報文轉發 90
5.1 網絡處理模塊劃分 90
5.2 轉發框架介紹 91
5.2.1 DPDK run to completion模型 94
5.2.2 DPDK pipeline模型 95
5.3 轉發算法 97
5.3.1 精確匹配算法 97
5.3.2 最長前綴匹配算法 100
5.3.3 ACL算法 102
5.3.4 報文分發 103
5.4 小結 104
第6章 PCIe與包處理I/O 105
6.1 從PCIe事務的角度看包處理 105
6.1.1 PCIe概覽 105
6.1.2 PCIe事務傳輸 105
6.1.3 PCIe帶寬 107
6.2 PCIe上的數據傳輸能力 108
6.3 網卡DMA描述符環形隊列 109
6.4 數據包收發——CPU和I/O的協奏 111
6.4.1 全景分析 111
6.4.2 優化的考慮 113
6.5 PCIe的淨荷轉發帶寬 113
6.6 Mbuf與Mempool 114
6.6.1 Mbuf 114
6.6.2 Mempool 117
6.7 小結 117
第7章 網卡性能優化 118
7.1 DPDK的輪詢模式 118
7.1.1 異步中斷模式 118
7.1.2 輪詢模式 119
7.1.3 混和中斷輪詢模式 120
7.2 網卡I/O性能優化 121
7.2.1 Burst收發包的優點 121
7.2.2 批處理和時延隱藏 124
7.2.3 利用Intel SIMD指令進一步並行化包收發 127
7.3 平颱優化及其配置調優 128
7.3.1 硬件平颱對包處理性能的影響 129
7.3.2 軟件平颱對包處理性能的影響 133
7.4 隊列長度及各種閾值的設置 136
7.4.1 收包隊列長度 136
7.4.2 發包隊列長度 137
7.4.3 收包隊列可釋放描述符數量閾值(rx_free_thresh) 137
7.4.4 發包隊列發送結果報告閾值(tx_rs_thresh) 137
7.4.5 發包描述符釋放閾值(tx_free_thresh) 138
7.5 小結 138
第8章 流分類與多隊列 139
8.1 多隊列 139
8.1.1 網卡多隊列的由來 139
8.1.2 Linux內核對多隊列的支持 140
8.1.3 DPDK與多隊列 142
8.1.4 隊列分配 144
8.2 流分類 144
8.2.1 包的類型 144
8.2.2 RSS 145
8.2.3 Flow Director 146
8.2.4 服務質量 148
8.2.5 虛擬化流分類方式 150
8.2.6 流過濾 150
8.3 流分類技術的使用 151
8.3.1 DPDK結閤網卡Flow Director功能 152
8.3.2 DPDK結閤網卡虛擬化及Cloud Filter功能 155
8.4 可重構匹配錶 156
8.5 小結 157
第9章 硬件加速與功能卸載 158
9.1 硬件卸載簡介 158
9.2 網卡硬件卸載功能 159
9.3 DPDK軟件接口 160
9.4 硬件與軟件功能實現 161
9.5 計算及更新功能卸載 162
9.5.1 VLAN硬件卸載 162
9.5.2 IEEE1588硬件卸載功能 165
9.5.3 IP TCP/UDP/SCTP checksum硬件卸載功能 167
9.5.4 Tunnel硬件卸載功能 168
9.6 分片功能卸載 169
9.7 組包功能卸載 170
9.8 小結 172
第二部分 DPDK虛擬化技術篇
第10章 X86平颱上的I/O虛擬化 175
10.1 X86平颱虛擬化概述 176
10.1.1 CPU虛擬化 176
10.1.2 內存虛擬化 177
10.1.3 I/O虛擬化 178
10.2 I/O透傳虛擬化 180
10.2.1 Intel? VT-d簡介 180
10.2.2 PCIe SR-IOV概述 181
10.3 PCIe網卡透傳下的收發包流程 183
10.4 I/O透傳虛擬化配置的常見問題 184
10.5 小結 184
第11章 半虛擬化Virtio 185
11.1 Virtio使用場景 185
11.2 Virtio規範和原理 186
11.2.1 設備的配置 187
11.2.2 虛擬隊列的配置 190
11.2.3 設備的使用 192
11.3 Virtio網絡設備驅動設計 193
11.3.1 Virtio網絡設備Linux內核驅動設計 193
11.3.2 基於DPDK用戶空間的Virtio網絡設備驅動設計以及性能優化 196
11.4 小結 198
第12章 加速包處理的vhost優化方案 199
12.1 vhost的演進和原理 199
12.1.1 Qemu與virtio-net 199
12.1.2 Linux內核態vhost-net 200
12.1.3 用戶態vhost 201
12.2 基於DPDK的用戶態vhost設計 201
12.2.1 消息機製 202
12.2.2 地址轉換和映射虛擬機內存 203
12.2.3 vhost特性協商 204
......











前言/序言

  引言
  動機
  2015年4月,第一屆DPDK中國峰會在北京成功召開。來自中國移動、中國電信、阿裏巴巴、IBM、Intel、華為以及中興的專傢朋友登颱演講,一起分享瞭以DPDK為中心的技術主題。錶1列齣瞭2015DPDK中國峰會的主題及演講者。
  錶12015DPDK中國峰會主題及演講者主題演講者公司利用DPDK加速NFV鄧輝中國移動利用DPDK優化雲基礎設施孫成浩阿裏巴巴構建core以及高能效應用的最佳實踐梁存銘Intel基於英特爾ONP構建虛擬化的IP接入方案歐亮中國電信DPDK加速無綫數據核心網絡陳東華中興電信業務場景下的數據麵挑戰劉郡華為運行於Power架構下的DPDK和數據轉發祝超IBM這次會議吸引瞭來自各行業、科研單位與高校的200多名開發人員、專傢和企業代錶參會。會上問答交流非常熱烈,會後我們就想,也許是時間寫一本介紹DPDK、探討NFV數據麵的技術書籍。現在,很多公司在招聘網絡和係統軟件人纔時,甚至會將DPDK作為一項技能羅列在招聘要求中。DPDK從一個最初的小眾技術,經過10年的孕育,慢慢走來,直至今日已經逐漸被越來越多的通信、雲基礎架構廠商接受。同時,互聯網上也齣現不少介紹DPDK基礎理論的文章和博客,從不同的角度對DPDK技術進行剖析和應用,其中很多觀點非常新穎。作為DPDK的中國開發團隊人員,我們意識到如果能夠提供一本DPDK的書籍,進行一些係統性的梳理,將核心的原理進行深入分析,可以更好地加速DPDK技術的普及,觸發更多的軟件創新,促進行業的新技術發展。於是,就萌發瞭寫這本書的初衷。當然,我們心裏既有創作的激動驕傲,也有些猶豫忐忑,寫書不是一件簡單的事情,但經過討論和考量,我們逐漸變得堅定,這是一本集結團隊智慧的嘗試。我們希望能夠把DPDK的技術深入淺齣地解釋清楚,讓更多的從業人員和高校師生瞭解並使用DPDK,促進DPDK發展日新月異,興起百傢爭鳴的局麵,這是我們最大的願景。
  多核2005年的夏天,剛加入Intel的我們暢想著CPU多核時代的到來給軟件業帶來的挑戰與機會。如果要充分利用多核處理器,需要軟件針對並行化做大量改進,傳統軟件的並行化程度不高,在多核以前,軟件依靠CPU頻率提升自動獲得更高性能。並行化改進不是一件簡單的工作,許多軟件需要重新設計,基本很難在短期實現,整個計算機行業都對此糾結瞭很久。2005年以前,整個CPU的發展曆史,是不斷提升芯片運算頻率核心的做法,軟件性能會隨著處理器的頻率升高,即使軟件不做改動,性能也會跟著上一個颱階。但這樣的邏輯進入多核時代已無法實現。首先我們來看看錶2所示的Intel?多核處理器演進。
  錶2Intel?多核處理器演進的曆史圖錶Xeon處理器代碼製造工藝最大核心數量發布時間超綫程雙路服務器可使用核心數量WoodCrest65nm??22006年6月否??4Nehalem-EP45nm??42009年7月是16Westmere-EP32nm??62010年2月是24SandyBridge-EP32nm??82012年3月是32IvyBridge-EP22nm122013年9月是48Haswell-EP22nm182014年9月是72在過去10年裏,服務器平颱的處理器核心數目擴展瞭很多。錶2參考瞭英特爾至強係列的處理器的核心技術演進曆史,這個係列的處理器主要麵嚮雙通道(雙路)服務器和相應的硬件平颱。與此同時,基於MIPS、Power、ARM架構的處理器也經曆著類似或者更加激進的並行化計算的路綫圖。在處理器飛速發展的同時,服務器平颱在硬件技術上提供瞭支撐。基於PCIExpress的高速IO設備、內存訪問與帶寬的上升相輔相成。此外,價格和經濟性優勢越發突齣,今天一颱雙路服務器的價格可能和10年前一颱高端筆記本電腦的價格類似,但計算能力達到甚至超越瞭當年的超級計算機。強大的硬件平颱為軟件優化技術創新蘊蓄瞭溫床。
  以太網接口技術也經曆瞭飛速發展。從早期主流的10Mbit/s與100Mbit/s,發展到韆兆網(1Gbit/s)。到如今,萬兆(10Gbit/s)網卡技術成為數據中心服務器的主流接口技術,近年來,Intel等公司還推齣瞭40Gbit/s、100Gbit/s的超高速網絡接口技術。而CPU的運行頻率基本停留在10年前的水平,為瞭迎接超高速網絡技術的挑戰,軟件也需要大幅度創新。
  結閤硬件技術的發展,DPDK(DataPlaneDevelopmentKit),一個以軟件優化為主的數據麵技術應時而生,它為今天NFV技術的發展提供瞭絕佳的平颱可行性。
  IXP提到硬件平颱和數據麵技術,網絡處理器是無法繞過的話題。電信行業通常使用網絡處理器或類似芯片技術作為數據麵開發平颱首選。Intel此前也曾專注此領域,2002年收購瞭DEC下屬的研究部門,在美國馬薩諸塞州哈德遜開發瞭這一係列芯片,誕生瞭行業聞名的IntelExchangeArchitectureNetworkProcessor(IXP4xx、IXP12xx、IXP24xx、IXP28xx)産品綫,曾取得行業市場占有率第一的成績。即使今日,相信很多通信業的朋友,還對這些處理器芯片有些熟悉或者非常瞭解。IXP內部擁有大量的微引擎(MicroEngine),同時結閤瞭XSCALE作為控製麵處理器,眾所周知,XSCALE是以ARM芯片為核心技術的一種擴展。
  2006年,AMD嚮Intel發起瞭一場大戰,時至今日結局已然明瞭,Intel依賴麾下的以色列團隊,打齣瞭新一代Core架構,迅速在能效比上完成超車。公司高層同時確立瞭Tick-Tock的研發節奏,每隔兩年推齣新一代體係結構,每隔兩年推齣基於新一代製造工藝的芯片。這一戰略基本保證瞭每年都會推齣新産品。當時AMD的處理器技術一度具有領先地位,並觸發瞭Intel在內部研發架構城門失火的狀況下不得不進行重組,就在那時Intel的網絡處理器業務被進行重估,由於IXP芯片係列的市場容量不夠大,Intel的架構師也開始預測,通用處理器多核路綫有取代IXP專用處理芯片的潛力。自此,IXP的研發體係開始調整,逐步轉嚮使用IntelCPU多核的硬件平颱,客觀上講,這一轉型為DPDK的産生創造瞭機會。時至今日,Intel還保留並發展瞭基於硬件加速的QuickAssist技術,這和當日的IXP息息相關。由此看來,DPDK算是生於亂世。
  DPDK的曆史網絡處理器能夠迅速將數據報文接收入係統,比如將64字節的報文以10Gbit/s的綫速也就是14.88Mp/s(百萬報文每秒)收入係統,並且交由CPU處理,這在早期Linux和服務器平颱上無法實現。以VenkyVenkastraen、WalterGilmore、MikeLynch為核心的Intel團隊開始瞭可行性研究,並希望藉助軟件技術來實現,很快他們取得瞭一定的技術突破,設計瞭運行在Linux用戶態的網卡程序架構。傳統上,網卡驅動程序運行在Linux的內核態,以中斷方式來喚醒係統處理,這和曆史形成有關。早期CPU運行速度遠高於外設訪問,所以中斷處理方式十分有效,但隨著芯片技術與高速網絡接口技術的一日韆裏式發展,報文吞吐需要高達10Gbit/s的端口處理能力,市麵上已經齣現大量的25Gbit/s、40Gbit/s甚至100Gbit/s高速端口,主流處理器的主頻仍停留在3GHz以下。高端遊戲玩傢可以將CPU超頻到5GHz,但網絡和通信節點的設計基於能效比經濟性的考量,網絡設備需要日以繼夜地運行,運行成本(包含耗電量)在總成本中需要重點考量,係統選型時大多選取2.5GHz以下的芯片,保證閤適的性價比。I/O超越CPU的運行速率,是橫在行業麵前的技術挑戰。用輪詢來處理高速端口開始成為必然,這構成瞭DPDK運行的基礎。
  在理論框架和核心技術取得一定突破後,Intel與6wind進行瞭閤作,交由在法國的軟件公司進行部分軟件開發和測試,6wind嚮Intel交付瞭早期的DPDK軟件開發包。2011年開始,6wind、Windriver、Tieto、Radisys先後宣布瞭對IntelDPDK的商業服務支持。Intel起初隻是將DPDK以源代碼方式分享給少量客戶,作為評估IA平颱和硬件性能的軟件服務模塊,隨著時間推移與行業的大幅度接受,2013年Intel將DPDK這一軟件以BSD開源方式分享在Intel的網站上,供開發者免費下載。2013年4月,6wind聯閤其他開發者成立www.dpdk.org的開源社區,DPDK開始走上開源的大道。
  開源DPDK在代碼開源後,任何開發者都被允許通過www.dpdk.org提交代碼。隨著開發者社區進一步擴大,Intel持續加大瞭在開源社區的投入,同時在NFV浪潮下,越來越多的公司和個人開發者加入這一社區,比如Brocade、Cisco、RedHat、VMware、IBM,他們不再隻是DPDK的消費者,角色嚮生産者轉變,開始提供代碼,對DPDK的代碼進行優化和整理。起初DPDK完全專注於Intel的服務器平颱技術,專注於利用處理器與芯片組高級特性,支持Intel的網卡産品綫係列。
  DPDK2.1版本在2015年8月發布,幾乎所有行業主流的網卡設備商都已經加入DPDK社區,提供源代碼級彆支持。另外,除瞭支持通用網卡之外,能否將DPDK應用在特彆的加速芯片上是一個有趣的話題,有很多工作在進行中,Intel最新提交瞭用於Crypto設備的接口設計,可以利用類似Intel的QuickAssit的硬件加速單元,實現一個針對數據包加解密與壓縮處理的軟件接口。
  在多架構支持方麵,DPDK社區也取得瞭很大的進展,IBM中國研究院的祝超博士啓動瞭將DPDK移植到Power體係架構的工作,Freescale的中國開發者也參與修改,Tilera與Ezchip的工程師也花瞭不少精力將DPDK運行在Tile架構下。很快,DPDK從單一的基於Intel平颱的軟件,逐步演變成一個相對完整的生態係統,覆蓋瞭多個處理器、以太網和硬件加速技術。
  在Linux社區融閤方麵,DPDK也開始和一些主流的Linux社區閤作,並得到瞭越來越多的響應。作為Linux社區最主要的貢獻者之一的RedHat嘗試在FedoraLinux集成DPDK;接著RedHatEnterpriseLinux在安裝庫裏也加入DPDK支持,用戶可以自動下載安裝DPDK擴展庫。RedHat工程師還嘗試將DPDK與Container集成測試,並公開發布瞭運行結果。傳統虛擬化的領導者VMware的工程師也加入DPDK社區,負責VMXNET3-PMD模塊的維護。Canonical在Ubuntu15中加入瞭DPDK的支持。
  延伸由於DPDK主體運行在用戶態,這種設計理念給Linux或者FreeBSD這類操作係統帶來很多創新思路,也在Linux社區引發一些討論。
  DPDK的齣現使人們開始思考,Linux的用戶態和內核態,誰更適閤進行高速網絡數據報文處理。從簡單數據對比來看,在Intel的通用服務器上,使用單核處理小包收發,純粹的報文收發,理想模型下能達到大約57Mp/s(每秒百萬包)。盡管在真實應用中,不會隻收發報文不處理,但這樣的性能相對Linux的普通網卡驅動來說已經是遙不可及的高性能。OpenVSwitch是一個很好的例子,作為主流的虛擬交換開源軟件,也嘗試用DPDK來構建和加速虛擬交換技術,DPDK的支持在OVS2.4中被發布,開闢瞭在內核態數據通道之外一條新的用戶態數據通道。目前,經過20多年的發展,Linux已經纍積大量的開源軟件,具備豐富的協議和應用支持,無所不能,而數據報文進齣Linux係統,基本都是在Linux內核態來完成處理。因為Linux係統豐富強大的功能,相當多的生産係統(現有軟件)運行在Linux內核態,這樣的好處是大量軟件可以重用,研發成本低。但也正因為內核功能強大豐富,其處理效率和性能就必然要做齣一些犧牲。
  使用在專業的通信網絡係統中,高速數據進齣速率是衡量係統性能的關鍵指標之一。大多通信係統是基於Linux的定製係統,在保證實時性的嵌入式開發環境中開發齣用戶態下的程序完成係統功能。利用DPDK的高速報文吞吐優勢,對接運行在Linux用戶態的程序,對成本降低和硬件通用化有很大的好處,使得以軟件為主體的網絡設備成為可能。對Intel?x86通用處理器而言,這是一個巨大的市場機會。
  對於通信設備廠商,通用平颱和軟件驅動的開發方式具有易采購、易升級、穩定性、節約成本的優點。
  易采購:通用服務器作為主流的基礎硬件,擁有豐富的采購渠道和供應商,供貨量巨大。
  易升級:軟件開發模式簡單,工具豐富,最大程度上避免係統升級中對硬件的依賴和更新,實現低成本的及時升級。
  穩定性:通用服務器平颱已經通過大量功能的驗證,産品穩定性毋庸置疑。而且,對於專用的設計平颱,係統穩定需要時間纍積和大量測試,尤其是當采用新一代平颱設計時可能需要硬件更新,這就會帶來穩定性的風險。
  節約研發成本和降低復雜性:傳統的網絡設備因為功能復雜和高可靠性需求,係統切分為多個子係統,每個子係統需要單獨設計和選型,獨立開發,甚至選用單獨的芯片。這樣的係統需要構建復雜的開發團隊、完善的係統規劃、有效的項目管理和組織協調,來確保係統開發進度。而且,由於開發的範圍大,各項目之間會産生路徑依賴。而基於通用服務器搭建的網絡設備可以很好地避免這些問題。
  版權DPDK全稱是DataPlaneDevelopmentKit,從字麵解釋上看,這是專注於數據麵軟件開發的套件。本質上,它由一些底層的軟件庫組成。目前,DPDK使用BSDlicense,絕大多數軟件代碼都運行在用戶態。少量代碼運行在內核態,涉及UIO、VFIO以及XenDom0,KNI這類內核模塊隻能以GPL發布。BSD給瞭DPDK的開發者和消費者很大的自由,大傢可以自由地修改源代碼,並且廣泛應用於商業場景。這和GPL對商業應用的限製有很大區彆。作為開發者,嚮DPDK社區提交貢獻代碼時,需要特彆注意license的定義,開發者需要明確license並且申明來源的閤法性。
  ......



《高性能網絡加速器:原理、實踐與優化》 內容簡介: 在當今數據驅動的時代,網絡性能已成為衡量信息技術效率的關鍵指標。從大規模數據中心到邊緣計算節點,再到物聯網設備,高速、低延遲的網絡通信需求正以前所未有的速度增長。傳統網絡棧的處理能力在麵對海量數據流和高並發請求時,常常捉襟見肘,成為係統性能的瓶頸。本書旨在深入剖析現代高性能網絡加速技術的底層原理,並通過大量的實踐案例和優化策略,為讀者構建一套完整的技術知識體係,使其能夠自信地設計、實現和優化麵嚮未來的網絡應用。 本書並非局限於單一的技術框架,而是著眼於整個高性能網絡生態。我們將從數據包在網絡硬件和軟件棧中的旅程齣發,逐步揭示導緻性能損耗的根源。從網卡硬件的 DMA(Direct Memory Access)機製,到中斷處理的效率,再到操作係統內核協議棧的開銷,每一個環節都可能成為性能的“阿喀琉斯之踵”。理解這些瓶頸,是實現突破性性能提升的第一步。 第一部分:高性能網絡架構基礎 在深入具體的技術實現之前,本書將首先奠定堅實的理論基礎。我們將詳細講解網絡協議棧的演進曆程,重點闡述 TCP/IP 協議族的內在機製,以及在現代高並發環境下,傳統內核協議棧所麵臨的挑戰。這包括對網絡設備中斷模型的分析,緩衝區管理的效率問題,以及上下文切換帶來的開銷。 我們將深入探討高性能網絡設計的核心思想,例如: 零拷貝(Zero-Copy): 減少數據在用戶態和內核態之間不必要的拷貝,直接在內存或硬件中進行數據傳輸,從而顯著降低 CPU 開銷和內存帶寬占用。我們會分析不同零拷貝技術的實現原理,如 `sendfile`、`splice` 等,並探討其適用場景和局限性。 用戶態網絡棧(Userspace Networking): 繞過操作係統內核,直接在用戶態處理網絡數據包。這極大地減少瞭內核協議棧帶來的延遲和開銷,為應用程序提供瞭前所未有的網絡控製權和性能。我們將詳細介紹用戶態網絡棧的典型架構,包括其與應用程序的交互方式,以及如何管理網絡設備。 多隊列(Multi-Queue)與無鎖(Lock-Free)設計: 針對多核 CPU 的並行處理能力,探討如何將網絡接收和發送隊列分布到不同的 CPU 核心,避免鎖競爭,實現真正的並行數據處理。我們將深入講解多隊列網卡的工作原理,以及無鎖數據結構的設計和應用,以實現高效的並發訪問。 CPU 親和性(CPU Affinity)與 NUMA(Non-Uniform Memory Access)優化: 如何將網絡處理綫程綁定到特定的 CPU 核心,並考慮 CPU 和內存的拓撲結構,以最大程度地提高緩存命中率和內存訪問效率,減少跨節點內存訪問的延遲。 第二部分:核心技術與實現原理 在掌握瞭基礎理論後,本書將帶領讀者深入到高性能網絡加速的核心技術實現。我們將聚焦於幾個關鍵的技術領域,並提供詳實的原理剖析和代碼示例。 現代網卡(NIC)硬件加速: 深入解析網卡硬件提供的各種加速功能,如 TSO (TCP Segmentation Offload)、LRO (Large Receive Offload)、Checksum Offload、RSS (Receive Side Scaling) 等。我們將講解這些功能的原理,以及它們如何減輕 CPU 的負擔。 中斷與輪詢(Polling): 對比中斷驅動和輪詢驅動的網絡數據接收模式。分析中斷模式下的延遲瓶頸,以及在高性能場景下,為何輪詢模式成為主流。我們將深入講解如何實現高效的輪詢模型,包括忙碌等待、事件通知與輪詢的結閤等。 內存管理與大頁(Huge Pages): 高性能網絡應用對內存管理提齣瞭極高的要求。我們將詳細講解如何通過內存池、內存預分配等技術來減少內存分配和釋放的開銷。同時,我們將重點介紹大頁(Huge Pages)的使用,以及它如何提高 TLB(Translation Lookaside Buffer)的命中率,減少頁錶查找的開銷,從而提升內存訪問性能。 原子操作與鎖機製: 在多核並發環境下,數據的同步和一緻性至關重要。我們將詳細講解各種原子操作(如 Compare-and-Swap)和鎖機製(如自鏇鎖、互斥鎖)在網絡數據處理中的應用,並重點探討無鎖(Lock-Free)數據結構的實現,以避免鎖競爭帶來的性能瓶頸。 數據包解析與轉發: 從接收到的原始數據包開始,我們將逐步講解如何進行高效的數據包解析,包括 MAC 地址、IP 地址、TCP/UDP 頭部等字段的提取。然後,我們將探討不同場景下的數據包轉發策略,包括基於查找錶的轉發、基於規則的轉發等。 第三部分:實踐案例與性能優化 理論結閤實踐是本書的另一大亮點。在這一部分,我們將通過一係列精心設計的實踐案例,引導讀者將所學知識應用於實際場景,並掌握係統性的性能優化方法。 構建高性能網絡應用: 我們將演示如何從零開始構建一個高性能的網絡服務器或客戶端,例如一個高性能的 HTTP 服務器、一個低延遲的消息隊列代理,或者一個高吞吐量的網絡代理。在這些案例中,我們將逐步引入前麵講解的各種高性能網絡技術。 性能瓶頸分析與診斷: 掌握高性能網絡技術後,識彆和解決性能瓶頸同樣重要。我們將介紹多種性能分析工具和方法,如 `perf`、`strace`、`tcpdump` 等,並指導讀者如何使用它們來定位 CPU 占用過高、內存泄漏、網絡擁塞等問題。 網絡協議棧調優: 除瞭應用程序層麵的優化,操作係統網絡協議棧的調優也不可或缺。我們將講解如何調整 TCP 參數(如 `net.ipv4.tcp_rmem`、`net.ipv4.tcp_wmem`、`net.ipv4.tcp_congestion_control` 等),以及如何優化網絡設備驅動參數,以適應不同的網絡環境和應用需求。 緩存一緻性與僞共享(False Sharing): 在多核環境下,CPU 緩存的一緻性問題以及僞共享現象會嚴重影響性能。我們將深入講解緩存一緻性協議,並提供避免僞共享的技巧,如數據結構對齊、填充字節等。 負載均衡與流量控製: 在大規模部署時,負載均衡和流量控製是保證係統穩定性和可用性的關鍵。我們將介紹多種負載均衡算法,以及如何實現公平的流量控製,避免“壞鄰居”效應。 第四部分:高級主題與未來展望 為瞭讓讀者對高性能網絡技術有更全麵的認知,本書的最後一部分將探討一些高級主題,並對未來的發展趨勢進行展望。 RDMA(Remote Direct Memory Access): 深入講解 RDMA 技術,包括其工作原理、不同實現(如 InfiniBand、RoCE)的特點,以及如何在分布式係統中實現低延遲、高吞吐量的數據傳輸,例如在高性能計算和分布式存儲係統中。 DPDK(Data Plane Development Kit)深度剖析(非本書核心內容,但可作為延伸參考): 雖然本書不直接以 DPDK 為核心,但為瞭提供更廣泛的視野,我們將簡要介紹 DPDK 的設計理念、核心組件(如 PMD、MBUF、Ring Buffer)以及其在用戶態網絡處理中的重要地位。我們將分析 DPDK 如何通過繞過內核、使用輪詢等方式實現高性能,並與其他技術結閤的可能性。 網絡功能虛擬化(NFV)與 SDN(Software-Defined Networking): 探討高性能網絡技術在 NFV 和 SDN 架構中的應用,以及如何通過軟件定義網絡來實現更靈活、更智能的網絡管理和流量調度。 AI 與網絡: 展望人工智能技術在網絡領域的應用,例如智能流量預測、異常檢測、自動化網絡優化等,以及高性能網絡技術如何為這些 AI 應用提供底層支持。 目標讀者: 本書適閤以下人群閱讀: 網絡工程師: 希望深入理解網絡底層機製,提升網絡設備和係統的性能。 係統架構師: 設計和構建高性能、可擴展的網絡服務的技術負責人。 軟件開發者: 需要開發高性能網絡應用(如數據庫、消息隊列、Web服務器、遊戲服務器等)的程序員。 嵌入式開發工程師: 在資源受限的設備上實現高效網絡通信的開發者。 對網絡性能優化感興趣的研究人員和學生。 通過本書的學習,讀者將能夠深刻理解現代高性能網絡技術的核心原理,掌握解決網絡性能瓶頸的有效方法,並能夠自信地設計和實現滿足嚴苛性能要求的網絡解決方案。本書將成為您在高性能網絡領域探索和創新的有力助手。

用戶評價

評分

我一直對網絡數據包的處理流程和底層優化技術充滿好奇,尤其是在看到一些驚人的網絡性能測試數據時,總想知道那背後究竟隱藏著怎樣的技術玄機。《深入淺齣DPDK》這本書,徹底滿足瞭我的這份好奇心。它不僅僅是一本關於DPDK API的參考手冊,更像是一本關於高性能網絡編程的“武林秘籍”。書中的內容,對於理解網絡包在硬件層麵和軟件層麵是如何被高效處理的,有著極其深刻的洞察。我特彆喜歡它對網卡驅動模型和中斷處理的講解。以往我總是覺得網卡驅動是一個黑盒子,但這本書通過細緻的分析,讓我瞭解瞭DPDK是如何通過輪詢模式,跳過傳統中斷模式的開銷,直接從網卡隊列中拉取數據包。這種對底層機製的深入剖析,讓我豁然開朗。同時,書中對於緩存一緻性、CPU流水綫等 CPU 體係結構方麵的知識與 DPDK 的結閤也講得非常到位,讓我明白瞭為什麼有時候簡單的代碼調整能帶來巨大的性能飛躍。它不僅僅是告訴你 DPDK 能做什麼,更是教會你如何思考,如何從根本上理解和優化網絡性能。

評分

這本《深入淺齣DPDK》簡直是我近期技術閱讀中最具顛覆性的一本!我一直對高性能網絡處理有著濃厚的興趣,但常常在各種零散的資料和官方文檔之間迷失方嚮,感覺像是隔著一層紗,看不真切背後的機製。這本書的齣現,如同一束強光,瞬間驅散瞭我所有的睏惑。從一開始,作者就以一種極其耐心且循序漸進的方式,將DPDK復雜的架構展現在讀者麵前。我尤其喜歡它在講解內存管理和輪詢模式時,那種抽絲剝繭般的敘述。它不僅僅告訴你“怎麼做”,更重要的是解釋瞭“為什麼這樣做”。比如,關於大頁內存的優勢,書裏通過生動的比喻和清晰的圖示,讓我徹底理解瞭它如何減少TLB miss,從而帶來的巨大性能提升。然後是CPU親和性、NUMA架構對網絡性能的影響,這些理論性的知識在實踐中往往被忽視,但這本書卻將其提升到瞭核心地位,並且詳細闡述瞭DPDK如何利用這些特性進行優化。每一次閱讀,我都感覺自己對網絡數據包的生命周期有瞭更深刻的認知,不再是簡單的“收發”,而是能夠想象它在CPU流水綫中穿梭的每一個細節。它讓我明白瞭,高性能不是靠“魔法”,而是源於對底層硬件原理的深刻理解和精妙的軟件設計。

評分

讀完《深入淺齣DPDK》,我感覺自己像是經曆瞭一次“內功心法”的深度訓練。這本書沒有炫技,沒有花哨的辭藻,而是用一種樸實而嚴謹的態度,將DPDK的精髓展現在我麵前。從最初的內存管理策略,到各種高效的數據結構設計,再到復雜的協議卸載和流分類,每一部分都充滿瞭作者的匠心獨運。我尤其對書中關於“零拷貝”和“內存池”的講解印象深刻。它們不僅僅是技術名詞,更是DPDK性能優化的基石。書裏通過清晰的圖示和邏輯嚴密的解釋,讓我理解瞭為什麼這些技術能夠如此有效地減少數據復製和內存分配的開銷,從而將吞吐量推嚮新的高度。此外,這本書還非常注重將理論與實踐相結閤。它提供的代碼示例,不僅僅是為瞭演示某個功能,更是為瞭幫助讀者理解DPDK在實際場景中的應用。這種“學以緻用”的設計理念,讓我覺得這本書的價值不僅僅體現在理論知識的傳授,更在於它能夠賦能讀者去解決實際問題。它讓我看到瞭高性能網絡編程的“道”,而不僅僅是“術”。

評分

作為一名在網絡領域摸爬滾打多年的開發者,我一直覺得,理論知識的深度直接決定瞭你解決問題的能力上限。而《深入淺齣DPDK》這本書,完美地契閤瞭我的這一認知。它並沒有停留在API的羅列和簡單功能的介紹上,而是深挖瞭DPDK背後的設計哲學和工程實踐。書中的每一個章節,都像是在為我揭示一個隱藏的“寶藏”。比如說,它在講解 rte_mbuf 的設計時,不僅僅是描述瞭其結構,更是深入分析瞭為什麼它被設計成這樣,以及它如何高效地管理和傳遞網絡數據。這種“為什麼”的視角,對於我這種希望知其然更要知其所以然的技術人員來說,簡直是福音。更讓我印象深刻的是,書中對多核並發模型和鎖機製的闡述。在實際項目中,並發問題往往是性能瓶頸的根源,而DPDK在這方麵的處理方式,確實是業界標杆。這本書的講解,讓我理解瞭DPDK是如何通過無鎖隊列、內存池等機製,最大程度地避免瞭鎖競爭,從而實現瞭極緻的吞吐量。讀完之後,我感覺自己對如何構建高性能、高並發的網絡應用有瞭全新的認識,不再是從前那種“頭痛醫頭,腳痛醫腳”的粗淺理解,而是能夠從宏觀上把握整個係統的性能脈絡。

評分

說實話,一開始拿到《深入淺齣DPDK》,我心裏是有點忐忑的。DPDK的名聲在外,但其復雜度和學習麯綫也是齣瞭名的陡峭。我擔心這本書會不會像很多技術書籍一樣,隻是流於錶麵,或者過於晦澀難懂,最終讓我望而卻步。然而,事實證明我的擔憂是多餘的。這本書的作者,真的做到瞭“深入淺齣”。它就像一位經驗豐富的導師,耐心地引導著我一步步走進DPDK的世界。從最基礎的環境搭建,到核心的數據結構,再到復雜的網絡協議棧加速,每一個環節都講解得條理清晰,重點突齣。我特彆欣賞書中對於代碼示例的運用。它不是簡單地丟幾個代碼片段,而是會詳細解釋每一行代碼的作用,以及它在整個DPDK框架中扮演的角色。這對於我這種喜歡通過動手實踐來學習的人來說,簡直太友好瞭。讀到關於報文解析的部分,書裏將不同協議的解析邏輯娓娓道來,並且結閤瞭DPDK的優化技巧,讓我明白瞭為什麼DPDK能夠如此快速地處理各種網絡流量。這本書讓我覺得,掌握DPDK並非遙不可及,而是通過正確的學習方法和優質的教材,完全可以實現。

評分

想通過快速學習瞭解下dpdk

評分

內容看著高大上,需要好好學習一下

評分

物流很快,買迴來翻看瞭下,正版書籍,質量很好

評分

還行不錯的書籍

評分

雙十一,圖書的活動最給力,不買對不起京東,對不起老牛,對不起人民的培養啊

評分

給自己充電用,真心寫得還不錯

評分

還可以

評分

非常好的一本書,值得學習。

評分

?還沒看,本來以為雙11打摺的,買完纔發現根本沒啥打摺?

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有