第1章 绪言 1
1.1 分组交换的基本术语 2
1.2 历史背景 4
1.3 现代数据中心 5
1.4 传统交换机体系结构 7
1.4.1 数据、控制和管理平面 7
1.4.2 基于软件的路由选择和桥接 8
1.4.3 转发表的硬件查找 9
1.4.4 通用可编程的转发规则 9
1.5 自治和动态转发表 10
1.5.1 二层控制 11
1.5.2 三层控制 12
1.5.3 是协议大杂烩还是一碗交换机粥 13
1.6 我们能提高分组转发的IQ值吗 16
1.7 开源和技术转变 17
1.8 本书的组织结构 18
参考文献 18
第2章 为什么是SDN 20
2.1 交换机及控制平面的发展历程 20
2.1.1 用软件实现的简单的分组转发和路由选择 21
2.1.2 早期设备的独立性和自治性 21
2.1.3 从软件走向硬件 23
2.1.4 硬件转发以及用软件实现的控制 23
2.1.5 简化设备的需求越来越强烈 23
2.1.6 控制从设备上的移除 24
2.2 成本 24
2.2.1 开发成本不断增加 25
2.2.2 封闭的环境鼓励供应商的市场圈定 25
2.2.3 变革的复杂性与阻力 26
2.2.4 网络运营成本的上升 26
2.3 SDN意味着不断的探索和革新 26
2.3.1 现状对目前主流供应商有利 27
2.3.2 SDN对科研创新的促进作用 27
2.4 数据中心的创新 28
2.4.1 计算和存储虚拟化 28
2.4.2 当前网络的不足之处 29
2.5 数据中心的要求 30
2.5.1 自动化 30
2.5.2 可扩展性 30
2.5.3 多路径 31
2.5.4 多租户 31
2.5.5 网络虚拟化 31
2.6 小结 32
参考文献 32
第3章 SDN的起源 34
3.1 网络技术的发展历程 34
3.1.1 大型机网络:远程终端 34
3.1.2 点对点对等连接 35
3.1.3 局域网 35
3.1.4 桥接网络 35
3.1.5 路由选择网络 36
3.2 SDN的前身 37
3.2.1 早期的尝试 37
3.2.2 网络接入控制 38
3.2.3 编排 39
3.2.4 虚拟管理器网络插件 40
3.2.5 ForCES:转发和控制平面的分离 41
3.2.6 4D:集中的网络控制 42
3.2.7 Ethane:基于控制器的网络策略 44
3.3 软件定义网络的诞生 45
3.3.1 OpenFlow的出现 45
3.3.2 开放网络基金会 46
3.4 维护SDN的互操作性 47
3.5 开放源代码的积极作用 48
3.5.1 集体的力量 48
3.5.2 集体的危险性 49
3.5.3 SDN开源代码 49
3.6 传统机器向SDN的演化 50
3.7 网络虚拟化 50
3.8 我可以把自己的网络称为SDN吗 51
3.9 小结 51
参考文献 51
第4章 SDN的工作原理 53
4.1 SDN的基本特点 53
4.1.1 平面分离 53
4.1.2 简化的设备和集中的控制器 54
4.1.3 网络自动化和虚拟化 54
4.1.4 开放性 55
4.2 SDN的工作原理 55
4.3 SDN网络设备 57
4.3.1 流表 58
4.3.2 软件SDN交换机 59
4.3.3 硬件SDN设备 59
4.3.4 SDN设备的现有实现 61
4.3.5 流的数量调整 61
4.4 SDN控制器 61
4.4.1 SDN控制器的核心模块 62
4.4.2 SDN控制器接口 63
4.4.3 目前SDN控制器的实现 63
4.4.4 SDN控制器的潜在问题 64
4.5 SDN应用 65
4.5.1 SDN应用的职责 65
4.6 替代的SDN方法 66
4.6.1 利用现有API的SDN 66
4.6.2 利用基于虚拟机管理程序的覆盖网络的SDN 68
4.7 小结 70
参考文献 71
第5章 OpenFlow规范 72
5.1 本章使用的术语 73
5.2 OpenFlow概述 73
5.2.1 OpenFlow交换机 74
5.2.2 OpenFlow控制器 75
5.2.3 OpenFlow协议 76
5.2.4 控制器与交换机之间的安全通道 76
5.3 OpenFlow 1.0和OpenFlow的基本概念 77
5.3.1 端口和端口队列 78
5.3.2 流表 78
5.3.3 分组匹配 79
5.3.4 动作与分组转发 80
5.3.5 控制器和交换机之间的消息 82
5.3.6 举例:控制器对流表的编程 84
5.3.7 举例:基本的分组转发 86
5.3.8 举例:交换机向控制器转发分组 86
5.4 OpenFlow 1.1新增功能 88
5.4.1 多级流表 88
5.4.2 群组 90
5.4.3 MPLS和VLAN标签的支持 91
5.4.4 虚拟端口 91
5.4.5 控制器连接失效 92
5.4.6 举例:使用多级流表的转发 92
5.4.7 举例:使用V.1.1 的群组多播 94
5.5 OpenFlow 1.2 的新增功能 94
5.5.1 支持可扩展匹配 95
5.5.2 支持可扩展的SET_FIELD分组重写 95
5.5.3 PACKET IN中可扩展的上下文表达式 95
5.5.4 多控制器 96
5.5.5 举例:经过SP网络的桥接VLAN 96
5.6 OpenFlow 1.3 的新增功能 97
5.6.1 功能协商的重构 98
5.6.2 支持更灵活的表失配 98
5.6.3 每流计量 99
5.6.4 每连接的事件过滤 100
5.6.5 辅助连接 100
5.6.6 PACKET_IN消息中的Cookie 101
5.6.7 运营商骨干网桥接的标签处理 102
5.6.8 举例:利用计量段强制实施的QoS 102
5.7 OpenFlow的局限性 103
5.8 小结 103
参考文献 104
第6章 SDN的替代定义 105
6.1 OpenFlow潜在的缺点 105
6.1.1 变化太大、太快 106
6.1.2 单点故障 107
6.1.3 性能和规模 110
6.1.4 深度分组检测 112
6.1.5 状态流意识 114
6.1.6 结论 115
6.2 SDN-via-API 115
6.2.1 网络设备中的传统API 116
6.2.2 适用于SDN-via-API的API 117
6.2.3 REST:一种不同的API协议 117
6.2.4 SDN-via-API举例 118
6.2.5 SDN-via-API的评估 119
6.3 基于虚拟机管理程序的覆盖网络SDN 120
6.3.1 覆盖网络中的控制器 120
6.3.2 覆盖网络的操作过程 121
6.3.3 SDN-via-overlayl举例 122
6.3.4 SDN-via-overlay的评估 123
6.4 利用开放设备的SDN 124
6.5 网络功能虚拟化 125
6.6 各种替代方法之间的重叠与比较 126
6.7 小结 127
参考文献 128
第7章 数据中心的SDN 129
7.1 数据中心的定义 129
7.2 数据中心的需求 131
7.2.1 克服当前网络的限制 131
7.2.2 增加、移动和删除资源 134
7.2.3 故障恢复 134
7.2.4 多租户 134
7.2.5 流量工程和路径效率 135
7.3 数据中心的隧道技术 135
7.3.1 虚拟扩展局域网 136
7.3.2 使用通用路由封装的网络虚拟化 137
7.3.3 无状态传输隧道 138
7.4 数据中心的路径技术 138
7.4.1 通用多路径路由选择 139
7.4.2 多生成树协议 139
7.4.3 最短路径桥接 139
7.4.4 等价多路径 140
7.4.5 SDN和最短路径的复杂性 141
7.5 数据中心的以太网矩阵 141
7.6 数据中心的SDN应用场景 142
7.6.1 克服当前网络的限制 143
7.6.2 增加、移动和改变网络资源 144
7.6.3 故障恢复 145
7.6.4 多租户 146
7.6.5 流量工程和路径有效性 146
7.7 比较开放SDN与SDN-via-overlay在数据中心的表现 148
7.7.1 SDN-via-overlay 148
7.7.2 开放SDN 148
7.8 现实世界的数据中心实现 149
7.9 小结 149
参考文献 150
第8章 非数据中心环境下的SDN 151
8.1 广域网 153
8.1.1 SDN在广域网中的应用 154
8.1.2 举例:谷歌广域网的MPLS LSP 155
8.2 服务提供商和电信运营商网络 156
8.2.1 SDN在服务提供商和电信运营商网络中的应用 158
8.2.2 举例:MPLS-TE和MPLS VPN 159
8.2.3 举例:服务提供商的云爆发 159
8.3 园区网 160
8.3.1 园区网中的SDN:策略的应用 161
8.3.2 园区网中的SDN:设备与用户安全 161
8.3.3 园区网中的SDN:流量抑制 163
8.4 酒店网 165
8.5 移动网络 165
8.5.1 SDN应用于移动网络 166
8.6 在线网络功能 168
8.6.1 NFV与SDN的比较 168
8.6.2 SDN应用于服务器负载均衡 169
8.6.3 SDN用于防火墙 170
8.6.4 SDN应用于入侵检测 171
8.7 光传输网络 172
8.7.1 SDN应用于光网络 172
8.8 SDN与P2P/覆盖网络的比较 174
8.9 小结 174
参考文献 175
第9章 SDN生态圈合作伙伴 176
9.1 学术研究机构 177
9.1.1 学术界对SDN的主要贡献 178
9.2 产业研究实验室 178
9.3 网络设备制造商 179
9.4 软件供应商 181
9.5 白盒交换机 183
9.6 商用芯片生产商 184
9.7 原始设备制造商 185
9.8 企业 185
9.9 标准机构和产业联盟 186
9.9.1 开放网络基金 187
9.9.2 OpenDaylight 187
9.9.3 OpenStack 188
9.9.4 IETF和IEEE 189
9.10 小结 189
参考文献 190
第10章 SDN的应用 192
10.1 前期工作 192
10.2 反应式应用和先应式应用的比较 193
10.2.1 术语 194
10.2.2 反应式SDN应用 194
10.2.3 先应式SDN应用 196
10.3 一些简单SDN应用的分析 198
10.4 一个简单的Java反应式应用 198
10.4.1 主机名黑名单 199
10.4.2 IP地址的黑名单处理 199
10.4.3 黑名单:监听器 201
10.4.4 黑名单:分组处理器 202
10.4.5 黑名单:流管理器 204
10.5 控制器的背景 207
10.6 使用Floodlight控制器 207
10.6.1 Java API 208
10.6.2 RESTful API 208
10.7 使用OpenDaylight控制器 209
10.7.1 Java API 209
10.7.2 RESTful API 209
10.8 使用思科的XNC控制器 210
10.8.1 RESTful API 210
10.9 使用惠普控制器 210
10.9.1 Java API 210
10.9.2 RESTful API 211
10.10 关于交换机的考虑 211
10.11 创建网络虚拟隧道 212
10.12 数据中心的流卸载 213
10.13 用于园区网的接入控制 215
10.14 服务提供商的流量工程 216
10.15 小结 217
参考文献 218
第11章 SDN开源代码 219
11.1 本章特定术语 220
11.2 开源许可证相关事宜 221
11.3 SDN开源代码用户的特征 223
11.4 OpenFlow的源代码 224
11.5 交换机实现 225
11.6 控制器实现 226
11.7 SDN应用 229
11.8 编排和网络虚拟化 230
11.9 仿真、测试和工具 231
11.10 OpenStack 231
11.11 举例:SDN开源代码的应用 233
11.12 小结 235
参考文献 236
第12章 商业影响 237
12.1 一切皆服务 237
12.2 市场规模 238
12.3 SDN厂商分类 238
12.3.1 服务器虚拟化传统运营商和SDN 239
12.3.2 增值经销商 239
12.4 对传统网络设备制造商的影响 240
12.4.1 保护市场份额 240
12.4.2 适度创新 240
12.5 对企业客户的影响 241
12.5.1 降低设备成本 242
12.5.2 避免混乱 242
12.6 在网络行业中引发的风暴 243
12.6.1 大型网络设备制造商变得越来越少 243
12.6.2 迁移到云计算 243
12.6.3 渠道变化 244
12.7 风险投资 244
12.8 重要的SDN收购案 245
12.8.1 VMware 246
12.8.2 Juniper 246
12.8.3 Brocade 247
12.8.4 思科 247
12.9 SDN初创公司 248
12.9.1 OpenFlow中坚力量 249
12.9.2 非OpenFlow的白盒企业 250
12.9.3 OpenFlow ASIC? 250
12.9.4 数据中心网络虚拟化 251
12.9.5 WAN网络虚拟化 252
12.9.6 网络功能的虚拟化 252
12.9.7 光交换 252
12.9.8 网络边缘的移动功能和SDN 253
12.10 职业影响 253
12.11 小结 254
参考文献 255
第13章 SDN的未来 257
13.1 现状 257
13.2 开放SDN潜在的创新应用 259
13.2.1 管理非传统的物理层链路 260
13.2.2 对网络应用编程技术 261
13.2.3 安全应用 262
13.2.4 移动网络中的漫游 263
13.2.5 移动网络中的流量工程 264
13.2.6 节能 265
13.2.7 支持SDN的交换机芯片 266
13.3 小结 267
参考文献 268
附录 缩略语 270