网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 P4编程入门
分类 教育考试-考试-计算机类
作者 潘卫平、龚志敏
出版社 清华大学出版社
下载
简介
内容推荐
"网络技术是云计算的关键技术之一,可编程交换芯片技术是网络领域近年来比较有影响力的新技术,是
软件定义网络(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
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/4/1 2:54:05