發表於2024-11-25
挑戰網絡性能極限 ,資深開發者伴你在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在內部
深入淺齣DPDK 下載 mobi epub pdf txt 電子書 格式
深入淺齣DPDK 下載 mobi pdf epub txt 電子書 格式 2024
深入淺齣DPDK 下載 mobi epub pdf 電子書確實是一本深入淺齣的書,很適閤剛入門的人看。
評分非常好的一本書,值得學習。
評分非常好的DPDK入門教程
評分雙十一,圖書的活動最給力,不買對不起京東,對不起老牛,對不起人民的培養啊
評分定位本書"熱銷書籍"
評分書是正版的,物流也很快,仔細看
評分還可以,還好的。
評分DPDK開發必備,但不適閤初學者。
評分質量不錯,多學習,以後用的到
深入淺齣DPDK mobi epub pdf txt 電子書 格式下載 2024