第1章 可編程交換芯片概述1
11 可編程交換芯片產生的背景1
111 可編程交換芯片是SDN發(fā)展過程的自然產物 1
112 可編程交換芯片的發(fā)展是學界與業(yè)界互相促進的結果 3
12 可編程交換芯片的實現(xiàn)原理4
121 傳統(tǒng)交換芯片存在的問題 4
122 可編程交換芯片的設計目標 6
123 可編程交換芯片的參考實現(xiàn)——RMT架構 7
124 可編程交換芯片與傳統(tǒng)交換芯片的比較 13
13 可編程交換芯片的應用場景14
131 傳統(tǒng)交換設備功能的增強 14
132 網關類應用 15
133 新型網絡應用 16
14 本章小結16
第2章 P4語言概述17
21 P4語言的特點17
22 P4語言規(guī)范19
23 P4編程架構19
24 P4報文路徑22
25 P4 “hello, world” 實例程序24
26 P4學習資料30
27 P4語言的發(fā)展前景31
28 本章小結31
第3章 P4語言詳解32
31 P4語言概述32
311 P4語言的關鍵字 32
312 P4語言的數(shù)據(jù)類型 32
32 P4語言基本數(shù)據(jù)類型及其表達式33
321 無符號整型 33
322 有符號整型 36
323 整型常量 38
324 varbit類型 38
325 布爾類型 39
326 error類型 40
33 復合數(shù)據(jù)類型及其表達式40
331 枚舉類型 41
332 結構類型 44
333 元組類型 45
334 header類型 46
335 header stack類型 49
336 header union類型 50
337 集合類型 51
338 extern類型 53
34 有關數(shù)據(jù)類型的其他主題53
341 類型默認值 53
342 未初始化的值 54
343 類型轉換 54
344 類型別名 55
345 類型嵌套規(guī)則 56
346 運算符的優(yōu)先級 56
347 表達式的求值順序 58
348 P4中非法算術表達式舉例 58
35 函數(shù)59
36 語句60
361 賦值語句 60
362 條件語句 60
363 switch語句 61
前言
V
364 return語句 62
365 exit語句 62
37 control62
371 control的定義 63
372 action 64
373 table 65
374 control調用的方法 69
38 parser70
381 parser的定義 70
382 parser中的語句 71
383 parser value set 73
39 deparser74
391 將數(shù)據(jù)插入報文 74
392 計算checksum 75
310 package76
311 本章小結76
第4章 P4開發(fā)環(huán)境搭建77
41 使用虛擬機搭建P4開發(fā)環(huán)境78
411 安裝Ubuntu 2004 78
412 安裝P4開發(fā)環(huán)境 78
42 BMv2網絡拓撲的搭建79
43 P4程序的編譯和運行80
431 編譯P4“hello,world”實例程序 80
432 運行P4“hello,world”實例程序 80
44 simple_switch_CLI使用方法介紹84
441 simple_switch_CLI命令概覽 84
442 通過simple_switch_CLI進行表項配置 85
45 本章小結87
第5章 P4編程實例88
51 可編程parser實例88
511 parser實例的主要功能 89
512 parser實例的代碼清單 89
513 parser實例代碼的詳細解釋 93
514 parser實例的運行 101
515 parser實例小結 104
52 最長前綴匹配算法lpm實例104
521 lpm實例的主要功能 104
522 lpm實例的代碼清單 105
523 lpm實例代碼的詳細解釋 108
524 lpm實例的運行 109
525 lpm實例小結 112
53 三態(tài)匹配ternary實例112
531 ternary實例的主要功能 113
532 ternary實例的代碼清單 113
533 ternary實例代碼的詳細解釋 116
534 ternary實例的運行 117
535 ternary實例小結 120
54 范圍匹配range實例120
541 range實例的主要功能 120
542 range實例的代碼清單 121
543 range實例代碼的詳細解釋 123
544 range實例的運行 124
545 range實例小結 126
55 可編程deparser實例127
551 deparser實例的主要功能 127
552 deparser實例的代碼清單 127
553 deparser實例代碼的詳細解釋 131
554 deparser實例的運行 133
555 deparser實例小結 135
56 selector實例135
561 selector實例的主要功能 137
562 selector實例的代碼清單 137
563 selector實例代碼的詳細解釋 138
564 selector實例的運行 140
565 selector實例小結 142
57 register實例143
571 register實例的主要功能 143
572 register實例的代碼清單 144
573 register實例代碼的詳細解釋 147
574 register實例的運行 150
575 register實例小結 153
58 counter實例154
581 counter實例的主要功能 154
582 counter實例的代碼清單 154
583 counter實例代碼的詳細解釋 156
584 counter實例的運行 158
585 counter實例小結 161
59 meter實例161
591 meter實例的主要功能 161
592 meter實例的代碼清單 161
593 meter實例代碼的詳細解釋 162
594 meter實例的運行 164
595 meter實例小結 166
510 resubmit/recirculate實例167
5101 resubmit實例的主要功能 168
5102 resubmit實例的代碼清單 168
5103 resubmit實例代碼的詳細解釋 169
5104 resubmit實例的運行 172
5105 resubmit實例小結 175
511 clone實例175
5111 clone實例的主要功能 176
5112 clone實例的代碼清單 176
5113 clone實例代碼的詳細解釋 177
5114 clone實例的運行 178
5115 clone實例小結 181
512 vnic實例181
5121 vnic實例的主要功能 183
5122 vnic實例的代碼清單 183
5123 vnic實例代碼的詳細解釋 185
5124 vnic實例的運行 186
5125 vnic實例小結 189
513 P4Runtime實例189
5131 P4Runtime實例的主要功能 191
5132 P4Runtime實例的代碼清單 192
5133 P4Runtime實例代碼的詳細解釋 194
5134 P4Runtime控制面代碼 197
5135 P4Runtime實例的運行 200
5136 P4Runtime實例小結 203
第6章 P4項目實戰(zhàn)204
61 P4項目立項與軟硬件平臺選型204
611 P4項目立項需要考慮的問題 204
612 P4硬件平臺選型 205
613 P4軟件平臺選型 205
62 基于P4和可編程芯片的虛擬路由器206
621 虛擬路由器的功能 207
622 虛擬路由器適合用P4和可編程芯片實現(xiàn)嗎 212
623 基于P4和可編程芯片的虛擬路由器的需求定義 214
624 基于P4和可編程芯片的虛擬路由器的概要設計 214
63 基于P4和可編程芯片的分流器218
631 網關設備的部署模式 218
632 網關集群化部署模式的缺點和問題 222
633 分流器設計 223
64 本章小結230
參考文獻231