第一部分 基础概述
第1章 SDN/NFV概述 3
1.1 SDN/NFV介绍 3
1.1.1 SDN架构和技术特点 3
1.1.2 NFV架构和技术优势 5
1.1.3 对SDN与NFV关系的理解 6
1.2 控制器概述 7
1.2.1 商用控制器 8
1.2.2 开源控制器 8
1.2.3 OpenDaylight控制器概述 10
第2章 OpenDaylight社区 11
2.1 OpenDaylight社区介绍 11
2.1.1 OpenDaylight开源社区 11
2.1.2 OpenDaylight社区管理 12
2.1.3 OpenDaylight社区运营 12
2.2 OpenDaylight版本介绍 14
2.2.1 Hydrogen版本简介 14
2.2.2 Helium版本简介 15
2.2.3 Lithium版本简介 16
2.3 OpenDaylight项目简介 17
第二部分 OpenDaylight重点项目介绍
第3章 OpenDaylight Controller项目 25
3.1 项目介绍 25
3.1.1 基础框架 25
3.1.2 OSGi 26
3.1.3 Karaf 27
3.1.4 Maven 28
3.1.5 SAL 29
3.1.6 RESTCONF 34
3.2 安装与配置 34
3.2.1 安装运行 34
3.2.2 Mininet安装 38
3.3 开发指南 38
3.3.1 环境准备 38
3.3.2 创建项目 41
3.3.3 加载组件 43
3.3.4 定义启动配置 46
3.3.5 定义数据模型 51
3.3.6 实现自定义RPC 55
3.3.7 数据读写 58
3.3.8 通知事件 60
3.3.9 总结 61
第4章 YANG Tools项目 62
4.1 YANG 语言介绍 62
4.1.1 NETCONF中的YANG 62
4.1.2 OpenDaylight中的YANG 63
4.1.3 YANG语法 64
4.2 项目介绍 70
4.2.1 YANG Tools项目结构 71
4.2.2 YANG Tools 的Java映射介绍 71
4.3 安装与运行 84
4.3.1 安装 84
4.3.2 配置 85
4.3.3 运行 86
4.4 开发指南 86
第5章 OpenFlow项目 88
5.1 项目介绍 88
5.1.1 总体框架 88
5.1.2 OpenFlow协议简介 89
5.1.3 OpenFlow协议库 91
5.1.4 OpenFlowPlugin 91
5.2 安装与使用 92
5.2.1 安装 92
5.2.2 配置 93
5.2.3 使用 94
5.3 开发指南 97
5.3.1 环境准备 97
5.3.2 编译项目 97
5.3.3 代码分析 98
第6章 L2Switch项目 101
6.1 传统L2Switch简介 101
6.2 L2Switch项目介绍 101
6.2.1 L2Switch项目架构 102
6.2.2 L2Switch工作流程 103
6.3 安装与使用 104
6.3.1 安装L2Switch项目 104
6.3.2 L2Switch的功能验证 105
6.3.3 配置文件说明 108
6.4 开发指南 110
6.4.1 包处理服务代码说明 111
6.4.2 环路消除服务代码说明 111
6.4.3 ARP处理服务代码说明 111
6.4.4 地址跟踪服务代码说明 112
6.4.5 主机跟踪服务代码说明 113
6.4.6 L2Switch主服务代码说明 113
第7章 Topology Processing Framework项目 114
7.1 项目简介 114
7.1.1 项目架构 115
7.1.2 工作原理 115
7.1.3 处理流程 118
7.2 安装使用 119
7.2.1 安装Topoprocessing项目 119
7.2.2 添加拓扑处理规则 120
7.2.3 添加underlay拓扑 120
7.2.4 添加underlay节点 121
7.2.5 删除underlay节点方法 121
7.2.6 查看拓扑的方法 121
7.2.7 删除拓扑的方法 122
7.3 拓扑聚合和拓扑过滤示例 122
7.3.1 拓扑聚合示例——equality 122
7.3.2 拓扑聚合示例——unification 124
7.3.3 拓扑过滤示例——filtration 126
第8章 BGPCEP项目(BGP插件) 129
8.1 BGPCEP项目简介 129
8.1.1 项目间依赖关系 130
8.1.2 项目组件结构 130
8.2 BGP介绍 131
8.2.1 BGP消息 132
8.2.2 BGP路径属性 132
8.2.3 BGP Linkstate 133
8.3 BGP和PCEP协议消息处理过程 135
8.3.1 消息生命周期 135
8.3.2 通道处理器 136
8.3.3 注册 136
8.3.4 解析 137
8.3.5 序列化 137
8.4 开发指南 138
8.4.1 BGP插件实现 138
8.4.2 BGP消息处理 141
8.5 安装与使用指南 142
8.5.1 安装 142
8.5.2 配置与使用 143
8.6 BGP插件在ODL-SDNi项目中的应用 156
第9章 BGPCEP项目(PCEP插件) 158
9.1 PCEP协议介绍 158
9.1.1 PCE产生原因 158
9.1.2 PCEP介绍 159
9.1.3 Segment Routing 160
9.2 开发指南 161
9.2.1 PCEP插件实现 161
9.2.2 PCEP消息处理 164
9.3 安装与使用指南 165
9.3.1 安装 165
9.3.2 配置与使用 166
第10章 OVSDB Plugin项目 180
10.1 项目介绍 180
10.1.1 OVS 180
10.1.2 OVSDB 181
10.1.3 OVSDB管理协议 183
10.1.4 OVSDB Plugin架构 184
10.1.5 OVSDB Plugin的北向接口 184
10.2 安装与使用 186
10.2.1 安装 186
10.2.2 使用 186
第11章 Virtual Tenant Network项目 188
11.1 VTN概述 188
11.2 VTN项目介绍 188
11.2.1 虚拟网络层 188
11.2.2 虚拟网络结构 189
11.2.3 物理网络资源映射 190
11.2.4 vBridge功能 191
11.2.5 vRouter功能 191
11.2.6 流过滤器功能 192
11.2.7 多控制节点间的协作 193
11.2.8 OpenFlow网络与传统L2/L3网络间的协作 193
11.2.9 VTN接口介绍 193
11.3 VTN项目架构介绍 194
11.3.1 软件功能架构 194
11.3.2 VTN协调器架构 195
11.3.3 VTN管理器架构 196
11.4 安装与使用 197
11.4.1 总览 197
11.4.2 安装VTN协调器 197
11.4.3 安装VTN管理器 201
11.5 应用案例 202
11.5.1 单控制器场景下的配置示例 202
11.5.2 多控制器场景下的配置示例 204
第12章 业务链项目 206
12.1 概述 206
12.1.1 业务链技术概述 206
12.1.2 业务链结构 207
12.2 SFC项目介绍及使用 210
12.2.1 SFC-UI模块 210
12.2.2 SFC南向REST插件 212
12.2.3 SFC-OVS插件 213
12.2.4 SFC分类器 217
12.2.5 SFC OpenFlow二层映射器插件 217
12.2.6 SF选择算法 220
12.3 SFCOFL2使用案例介绍 221
第13章 Group Based Poliy项目 226
13.1 技术背景 226
13.1.1 策略模型 227
13.1.2 策略管理技术与平台 228
13.1.3 策略一致性问题 229
13.1.4 承诺理论 230
13.2 GBP项目与基本架构 231
13.2.1 项目概况 231
13.2.2 GBP策略模型 232
13.2.3 GBP策略解析过程 234
13.2.4 GBP总体架构 238
13.3 GBP用户配置界面 240
13.3.1 Policy Expression视图 241
13.3.2 Governance视图 242
13.3.3 Renderer Configuration视图 243
13.3.4 使用Access Model Wizard 244
13.4 GBP安装与测试 245
13.4.1 Karaf集成安装 245
13.4.2 编译安装 245
13.4.3 Demo安装与测试 245
第三部分 开发实践
第14章 IP网络边缘业务链技术方案 253
14.1 方案背景 253
14.1.1 SDN控制器应用场景 253
14.1.2 项目提出背景 254
14.2 IP网络边缘业务链总体方案 256
14.2.1 总体思路与功能架构 256
14.2.2 业务编排器功能 258
14.2.3 ODL控制器及其业务链相关插件功能 259
14.2.4 BRAS与NFV业务链设备功能 259
14.3 IP网络边缘业务链主要功能 259
14.3.1 业务控制策略管理 260
14.3.2 可编程转发功能 260
14.3.3 业务链管理与调度 262
第15章 SCP架构和实现 264
15.1 总体方案 264
15.1.1 SCP架构 264
15.1.2 业务编排流程 265
15.1.3 系统接口 266
15.2 项目管理模块 269
15.2.1 实现思路 269
15.2.2 模块结构 269
15.2.3 处理流程 270
15.2.4 主要数据结构 270
15.3 策略管理模块 271
15.3.1 实现思路 271
15.3.2 模块结构 272
15.3.3 处理流程 273
15.3.4 主要数据结构 274
15.4 资源监控模块 275
15.4.1 实现思路 275
15.4.2 模块结构 276
15.4.3 处理流程 276
15.4.4 主要数据结构 278
15.5 用户管理模块 279
15.5.1 实现思路 279
15.5.2 模块结构 279
15.5.3 处理流程 280
15.5.4 主要数据结构 281
第16章 ODL控制器实现 282
16.1 策略管理插件 283
16.1.1 策略管理插件功能 283
16.1.2 策略管理插件实现 283
16.2 业务链管理插件 288
16.2.1 业务链管理插件功能 288
16.2.2 业务链管理插件实现 289
16.3 NETCONF插件 294
16.3.1 NETCONF插件功能及二次开发 294
16.3.2 NETCONF插件使用 295
16.4 SFC项目路径选择算法增强 298
16.4.1 SFC项目路径选择算法模块介绍 298
16.4.2 新增路径算法介绍 299
16.4.3 在SFC项目中添加TLO算法 300
第17章 软件转发层功能增强 305
17.1 转发面背景技术 305
17.1.1 DPDK技术 305
17.1.2 OVS介绍 310
17.1.3 OVDK介绍 312
17.2 PF方案与实现 314
17.2.1 PF功能架构 314
17.2.2 可编程交换机的实现 319
17.3 软件转发层性能监控 321
17.3.1 NETCONF协议介绍 321
17.3.2 LibNetConf介绍 323
17.3.3 Netopeer介绍 323
17.3.4 采集程序介绍 324
第18章 应用案例 334
18.1 基于PF的SDN协议网关 334
18.1.1 场景与需求描述 334
18.1.2 部署与配置 335
18.1.3 验证业务流程 341
18.2 IP边缘业务链部署 343
18.2.1 功能要求 343
18.2.2 安装部署 344
18.2.3 测试验证 347
参考文献 358
缩略语 361
展开