P4編程入門

潘衛平、龔志敏

  • 出版商: 清華大學
  • 出版日期: 2024-12-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 244
  • ISBN: 7302677557
  • ISBN-13: 9787302677550
  • 立即出貨 (庫存 < 3)

  • P4編程入門-preview-1
  • P4編程入門-preview-2
  • P4編程入門-preview-3
P4編程入門-preview-1

相關主題

商品描述

"網絡技術是雲計算的關鍵技術之一,可編程交換芯片技術是網絡領域近年來比較有影響力的新技術,是 軟件定義網絡(Software Defined Network,SDN)理念的進一步發展,也是走向網絡全組件可編程的必由之路。 P4語言是可編程交換芯片的標準編程語言,風格類似於C語言。借著可編程交換芯片的發展契 機,P4語言從可編程交換芯片、可編程網卡逐漸擴展到FPGA(現場可編程門陣列)、DPDK(Data Plane Development Kit)、eBPF(擴展伯克利包過濾器)等,初步展現成為網絡數據面統一編程語言的潛質。 本書共分為6章。第1章介紹可編程交換芯片的產生背景、實現原理、特點和優勢;第2章概述P4 語言的特點,介紹P4編程架構,並以一個P4版“hello,world”程序展示P4語言的各個編程要素;第3章 詳細介紹P4語言,包括數據類型、表達式、語句等,並重點介紹與可編程交換芯片相關的重要組件;第 4章介紹P4編程環境的搭建,方便讀者進行實踐操作;第5章通過13個精心設計的P4編程實例,幫助 讀者掌握P4編程的核心概念和技術;第6章介紹可編程交換芯片的實戰項目,幫助讀者在實際的學習工 作中靈活應用可編程交換芯片技術。 本書面向高等學校電腦網絡方向的本科生、研究生,以及雲計算、互聯網企業中的網絡研發工程 師、架構師,也可供對可編程交換芯片、P4語言感興趣的讀者學習參考。 "

目錄大綱

目 錄

 

第1章 可編程交換芯片概述..........................................................1

 

1.1 可編程交換芯片產生的背景...............................................................................1

 

1.1.1 可編程交換芯片是SDN發展過程的自然產物 ............................................1

 

1.1.2 可編程交換芯片的發展是學界與業界互相促進的結果 ..............................3

 

1.2 可編程交換芯片的實現原理...............................................................................4

 

1.2.1 傳統交換芯片存在的問題 ..............................................................................4

 

1.2.2 可編程交換芯片的設計目標 ..........................................................................6

 

1.2.3 可編程交換芯片的參考實現——RMT架構 ................................................7

 

1.2.4 可編程交換芯片與傳統交換芯片的比較 ....................................................13

 

1.3 可編程交換芯片的應用場景.............................................................................14

 

1.3.1 傳統交換設備功能的增強 ............................................................................14

 

1.3.2 網關類應用 ....................................................................................................15

 

1.3.3 新型網絡應用 ................................................................................................16

 

1.4 本章小結..........................................................................................................16

 

第2章 P4語言概述.................................................................17

 

2.1 P4語言的特點.................................................................................................17

 

2.2 P4語言規範....................................................................................................19

 

2.3 P4編程架構....................................................................................................19

 

2.4 P4報文路徑....................................................................................................22

 

2.5 P4 “hello, world” 實例程序..............................................................................24

 

2.6 P4學習資料....................................................................................................30

 

2.7 P4語言的發展前景..........................................................................................31

 

2.8 本章小結..........................................................................................................31

 

第3章 P4語言詳解.................................................................32

 

3.1 P4語言概述....................................................................................................32

 

 

 

3.1.1 P4語言的關鍵字 ...........................................................................................32

 

3.1.2 P4語言的數據類型 .......................................................................................32

 

3.2 P4語言基本數據類型及其表達式....................................................................33

 

3.2.1 無符號整型 ....................................................................................................33

 

3.2.2 有符號整型 ....................................................................................................36

 

3.2.3 整型常量 ........................................................................................................38

 

3.2.4 varbit類型 ......................................................................................................38

 

3.2.5 布爾類型 ........................................................................................................39

 

3.2.6 error類型 .......................................................................................................40

 

3.3 復合數據類型及其表達式................................................................................40

 

3.3.1 枚舉類型 ........................................................................................................41

 

3.3.2 結構類型 ........................................................................................................44

 

3.3.3 元組類型 ........................................................................................................45

 

3.3.4 header類型 ....................................................................................................46

 

3.3.5 header stack類型 ...........................................................................................49

 

3.3.6 header union類型 ..........................................................................................50

 

3.3.7 集合類型 ........................................................................................................51

 

3.3.8 extern類型 .....................................................................................................53

 

3.4 有關數據類型的其他主題................................................................................53

 

3.4.1 類型默認值 ....................................................................................................53

 

3.4.2 未初始化的值 ................................................................................................54

 

3.4.3 類型轉換 ........................................................................................................54

 

3.4.4 類型別名 ........................................................................................................55

 

3.4.5 類型嵌套規則 ................................................................................................56

 

3.4.6 運算符的優先級 ............................................................................................56

 

3.4.7 表達式的求值順序 ........................................................................................58

 

3.4.8 P4中非法算術表達式舉例 ...........................................................................58

 

3.5 函數.................................................................................................................59

 

3.6 語句.................................................................................................................60

 

3.6.1 賦值語句 ........................................................................................................60

 

3.6.2 條件語句 ........................................................................................................60

 

3.6.3 switch語句 .....................................................................................................61

 

 

 

前言

 

V

 

3.6.4 return語句 ......................................................................................................62

 

3.6.5 exit語句 .........................................................................................................62

 

3.7 control.............................................................................................................62

 

3.7.1 control的定義 ................................................................................................63

 

3.7.2 action ..............................................................................................................64

 

3.7.3 table ................................................................................................................65

 

3.7.4 control調用的方法 ........................................................................................69

 

3.8 parser..............................................................................................................70

 

3.8.1 parser的定義 .................................................................................................70

 

3.8.2 parser中的語句 .............................................................................................71

 

3.8.3 parser value set ...............................................................................................73

 

3.9 deparser..........................................................................................................74

 

3.9.1 將數據插入報文 ............................................................................................74

 

3.9.2 計算checksum ...............................................................................................75

 

3.10 package..........................................................................................................76

 

3.11 本章小結..........................................................................................................76

 

第4章 P4開發環境搭建............................................................77

 

4.1 使用虛擬機搭建P4開發環境..........................................................................78

 

4.1.1 安裝Ubuntu 20.04 .........................................................................................78

 

4.1.2 安裝P4開發環境 ..........................................................................................78

 

4.2 BMv2網絡拓撲的搭建.....................................................................................79

 

4.3 P4程序的編譯和運行......................................................................................80

 

4.3.1 編譯P4“hello,world”實例程序 .................................................................80

 

4.3.2 運行P4“hello,world”實例程序 .................................................................80

 

4.4 simple_switch_CLI使用方法介紹....................................................................84

 

4.4.1 simple_switch_CLI命令概覽 ........................................................................84

 

4.4.2 通過simple_switch_CLI進行表項配置 .......................................................85

 

4.5 本章小結..........................................................................................................87

 

第5章 P4編程實例.................................................................88

 

5.1 可編程parser實例..........................................................................................88

 

5.1.1 parser實例的主要功能 .................................................................................89

 

 

 

5.1.2 parser實例的代碼清單 .................................................................................89

 

5.1.3 parser實例代碼的詳細解釋 .........................................................................93

 

5.1.4 parser實例的運行 .......................................................................................101

 

5.1.5 parser實例小結 ...........................................................................................104

 

5.2 最長前綴匹配算法lpm實例..........................................................................104

 

5.2.1 lpm實例的主要功能 ...................................................................................104

 

5.2.2 lpm實例的代碼清單 ...................................................................................105

 

5.2.3 lpm實例代碼的詳細解釋 ...........................................................................108

 

5.2.4 lpm實例的運行 ...........................................................................................109

 

5.2.5 lpm實例小結 ...............................................................................................112

 

5.3 三態匹配ternary實例....................................................................................112

 

5.3.1 ternary實例的主要功能 ..............................................................................113

 

5.3.2 ternary實例的代碼清單 ..............................................................................113

 

5.3.3 ternary實例代碼的詳細解釋 ......................................................................116

 

5.3.4 ternary實例的運行 ......................................................................................117

 

5.3.5 ternary實例小結 ..........................................................................................120

 

5.4 範圍匹配range實例......................................................................................120

 

5.4.1 range實例的主要功能 ................................................................................120

 

5.4.2 range實例的代碼清單 ................................................................................121

 

5.4.3 range實例代碼的詳細解釋 ........................................................................123

 

5.4.4 range實例的運行 ........................................................................................124

 

5.4.5 range實例小結 ............................................................................................126

 

5.5 可編程deparser實例....................................................................................127

 

5.5.1 deparser實例的主要功能 ............................................................................127

 

5.5.2 deparser實例的代碼清單 ............................................................................127

 

5.5.3 deparser實例代碼的詳細解釋 ....................................................................131

 

5.5.4 deparser實例的運行 ....................................................................................133

 

5.5.5 deparser實例小結 ........................................................................................135

 

5.6 selector實例.................................................................................................135

 

5.6.1 selector實例的主要功能 .............................................................................137

 

5.6.2 selector實例的代碼清單 .............................................................................137

 

5.6.3 selector實例代碼的詳細解釋 .....................................................................138

 

 

 

5.6.4 selector實例的運行 .....................................................................................140

 

5.6.5 selector實例小結 .........................................................................................142

 

5.7 register實例..................................................................................................143

 

5.7.1 register實例的主要功能 .............................................................................143

 

5.7.2 register實例的代碼清單 .............................................................................144

 

5.7.3 register實例代碼的詳細解釋 .....................................................................147

 

5.7.4 register實例的運行 .....................................................................................150

 

5.7.5 register實例小結 .........................................................................................153

 

5.8 counter實例..................................................................................................154

 

5.8.1 counter實例的主要功能 .............................................................................154

 

5.8.2 counter實例的代碼清單 .............................................................................154

 

5.8.3 counter實例代碼的詳細解釋 .....................................................................156

 

5.8.4 counter實例的運行 .....................................................................................158

 

5.8.5 counter實例小結 .........................................................................................161

 

5.9 meter實例.....................................................................................................161

 

5.9.1 meter實例的主要功能 ................................................................................161

 

5.9.2 meter實例的代碼清單 ................................................................................161

 

5.9.3 meter實例代碼的詳細解釋 ........................................................................162

 

5.9.4 meter實例的運行 ........................................................................................164

 

5.9.5 meter實例小結 ............................................................................................166

 

5.10 resubmit/recirculate實例.............................................................................167

 

 5.10.1 resubmit實例的主要功能 .......................................................................168

 

 5.10.2 resubmit實例的代碼清單 .......................................................................168

 

 5.10.3 resubmit實例代碼的詳細解釋 ...............................................................169

 

 5.10.4 resubmit實例的運行 ...............................................................................172

 

 5.10.5 resubmit實例小結 ...................................................................................175

 

5.11 clone實例...................................................................................................175

 

 5.11.1 clone實例的主要功能 .............................................................................176

 

 5.11.2 clone實例的代碼清單 .............................................................................176

 

 5.11.3 clone實例代碼的詳細解釋 .....................................................................177

 

 5.11.4 clone實例的運行 .....................................................................................178

 

 5.11.5 clone實例小結 .........................................................................................181

 

 

 

5.12 vnic實例......................................................................................................181

 

 5.12.1 vnic實例的主要功能 ..............................................................................183

 

 5.12.2 vnic實例的代碼清單 ..............................................................................183

 

 5.12.3 vnic實例代碼的詳細解釋 ......................................................................185

 

 5.12.4 vnic實例的運行 ......................................................................................186

 

 5.12.5 vnic實例小結 ..........................................................................................189

 

5.13 P4Runtime實例..........................................................................................189

 

 5.13.1 P4Runtime實例的主要功能 ...................................................................191

 

 5.13.2 P4Runtime實例的代碼清單 ...................................................................192

 

 5.13.3 P4Runtime實例代碼的詳細解釋 ...........................................................194

 

 5.13.4 P4Runtime控制面代碼 ...........................................................................197

 

 5.13.5 P4Runtime實例的運行 ...........................................................................200

 

 5.13.6 P4Runtime實例小結 ...............................................................................203

 

第6章 P4項目實戰...............................................................204

 

6.1 P4項目立項與軟硬件平臺選型......................................................................204

 

6.1.1 P4項目立項需要考慮的問題 .....................................................................204

 

6.1.2 P4硬件平臺選型 .........................................................................................205

 

6.1.3 P4軟件平臺選型 .........................................................................................205

 

6.2 基於P4和可編程芯片的虛擬路由器.............................................................206

 

6.2.1 虛擬路由器的功能 ......................................................................................207

 

6.2.2 虛擬路由器適合用P4和可編程芯片實現嗎 ............................................212

 

6.2.3 基於P4和可編程芯片的虛擬路由器的需求定義 ....................................214

 

6.2.4 基於P4和可編程芯片的虛擬路由器的概要設計 ....................................214

 

6.3 基於P4和可編程芯片的分流器.....................................................................218

 

6.3.1 網關設備的部署模式 ..................................................................................218

 

6.3.2 網關集群化部署模式的缺點和問題 ..........................................................222

 

6.3.3 分流器設計 ..................................................................................................223

 

6.4 本章小結........................................................................................................230

 

參考文獻................................................................................231