计算机科学丛书计算机网络问题与解决方案:一种构建弹性现代网络的创新方法 本书特色
本书第壹部分讲解了数据传输(数据平面)。第二部分介绍了用于发现和使用拓扑与可达性信息(控制平面)的协议。第三部分讨论了几种常见的网络设计和架构,包括数据中心Fabric、MPLS核心和现代软件定义广域网(SD-WAN)。作为所有网络技术所面临问题的解决方案,软件定义网络等技术的基础原理贯穿全书。书中揭示了现代计算机网络和协议被设计成现在这样的原因,解释这些协议或系统必须克服哪些问题,通用的解决方案是什么,并展示了这些解决方案在新的和成熟的协议中是如何实现的。
计算机科学丛书计算机网络问题与解决方案:一种构建弹性现代网络的创新方法 内容简介
本书第壹部分讲解了数据传输(数据平面)。第二部分介绍了用于发现和使用拓扑与可达性信息(控制平面)的协议。第三部分讨论了几种常见的网络设计和架构,包括数据中心Fabric、MPLS核心和现代软件定义广域网(SD-WAN)。作为所有网络技术所面临问题的解决方案,软件定义网络等技术的基础原理贯穿全书。书中揭示了现代计算机网络和协议被设计成现在这样的原因,解释这些协议或系统必须克服哪些问题,通用的解决方案是什么,并展示了这些解决方案在新的和成熟的协议中是如何实现的。
计算机科学丛书计算机网络问题与解决方案:一种构建弹性现代网络的创新方法 目录
出版者的话
译者序
前言
作者简介
译者简介
**部分 数据平面
第1章 基本概念 4
1.1 是艺术还是工程 4
1.2 电路交换 6
1.3 分组交换 8
1.3.1 分组交换操作 8
1.3.2 分组交换网络中的流量控制 10
1.4 固定与可变长度数据帧 11
1.5 无环路径计算 13
1.6 服务质量 14
1.7 集中式控制平面的反击 15
1.8 复杂性 16
1.8.1 为什么如此复杂 16
1.8.2 定义复杂性 18
1.8.3 通过细腰模型管理复杂性 19
1.9 总结思考 21
1.10 拓展阅读 21
1.11 复习题 21
第2章 数据传输中的问题与解决方案 23
2.1 数字语法和数据列集 24
2.1.1 数字语法和字典 25
2.1.2 固定长度字段 27
2.1.3 类型长度值 28
2.1.4 共享对象字典 29
2.2 差错 30
2.2.1 差错检测 30
2.2.2 纠错 33
2.3 多路复用 35
2.3.1 设备与应用程序的寻址 35
2.3.2 多播 37
2.3.3 选播 38
2.4 流量控制 39
2.4.1 窗口机制 40
2.4.2 协商比特率 42
2.5 总结思考 43
2.6 拓展阅读 43
2.7 复习题 44
第3章 网络传输建模 46
3.1 美国国防部模型 46
3.2 开放系统互连模型 48
3.3 递归互联网架构模型 51
3.4 面向连接与无连接 52
3.5 总结思考 52
3.6 拓展阅读 53
3.7 复习题 53
第4章 底层传输 54
4.1 以太网 54
4.1.1 多路复用 55
4.1.2 差错控制 59
4.1.3 数据列集 59
4.1.4 流量控制 60
4.2 无线802.11协议 60
4.2.1 多路复用 60
4.2.2 数据列集、差错控制和流量控制 64
4.3 总结思考 65
4.4 拓展阅读 65
4.5 复习题 66
第5章 高层数据传输 67
5.1 IP 68
5.1.1 传输与列集 69
5.1.2 多路复用 72
5.2 TCP 75
5.2.1 流量控制 75
5.2.2 差错控制 78
5.2.3 TCP端口号 78
5.2.4 TCP会话的建立 79
5.3 QUIC 79
5.4 ICMP 83
5.5 总结思考 83
5.6 拓展阅读 84
5.7 复习题 85
第6章 层间发现 87
6.1 层间发现的解决方案 87
6.1.1 众所周知和手动配置的标识符 88
6.1.2 映射数据库和协议 89
6.1.3 协议中的通告标识符映射 89
6.1.4 从一个标识符计算另一个标识符 89
6.2 层间发现示例 89
6.2.1 DNS 90
6.2.2 DHCP 91
6.2.3 IPv4地址解析协议 92
6.2.4 IPv6邻居发现 93
6.3 默认网关问题 95
6.4 总结思考 97
6.5 拓展阅读 97
6.6 复习题 98
第7章 分组交换 99
7.1 从物理介质到内存 100
7.2 数据包处理 101
7.2.1 交换 101
7.2.2 路由 101
7.2.3 为什么需要路由 102
7.2.4 等价多路径 103
7.2.5 数据包处理引擎 106
7.3 跨越总线 107
7.4 从内存到物理介质 110
7.5 总结思考 110
7.6 拓展阅读 111
7.7 复习题 112
第8章 服务质量 113
8.1 定义问题空间 113
8.2 分级 115
8.2.1 分级保持 118
8.2.2 无标记的互联网 119
8.3 拥塞管理 120
8.3.1 及时性:低延迟队列 120
8.3.2 公平性:基于分级的加权公平队列 123
8.3.3 过度拥塞 124
8.3.4 其他QoS拥塞管理工具 124
8.4 队列管理 125
8.4.1 管理一个满载缓冲区:加权随机早期检测 125
8.4.2 管理缓冲延迟、缓冲膨胀和延迟控制 126
8.5 总结思考 127
8.6 拓展阅读 127
8.7 复习题 128
第9章 网络虚拟化 129
9.1 理解虚拟网络 129
9.1.1 在IP网络上提供以太网服务 131
9.1.2 一个公司网络的虚拟私有访问 133
9.1.3 虚拟化问题和解决方案总结 133
9.2 分段路由 134
9.2.1 多协议标签交换的分段路由 135
9.2.2 IPv6的分段路由 138
9.2.3 信令分段路由标签 139
9.3 软件定义广域网 140
9.4 复杂性和虚拟化 141
9.4.1 交互表面和共享风险链路组 141
9.4.2 交互表面和覆盖控制平面 142
9.5 总结思考 144
9.6 拓展阅读 144
9.7 复习题 145
第10章 传输安全 146
10.1 问题空间 146
10.1.1 验证数据 146
10.1.2 保护数据不被窃取 147
10.1.3 保护用户隐私 147
10.2 解决方案空间 148
10.2.1 加密 148
10.2.2 密钥交换 152
10.2.3 加密散列 154
10.2.4 隐藏用户信息 154
10.3 传输层安全 157
10.4 总结思考 159
10.5 拓展阅读 159
10.6 复习题 161
第二部分 控制平面
第11章 拓扑发现 165
11.1 节点、边和可达目的地 166
11.1.1 节点 166
11.1.2 边 167
11.1.3 可达目的地 167
11.1.4 拓扑结构 168
11.2 学习网络拓扑 168
11.2.1 检测其他网络设备 169
11.2.2 检测双向连接性 170
11.2.3 检测*大传输单元 171
11.3 学习可达目的地 172
11.3.1 响应式学习 173
11.3.2 主动式学习 173
11.4 通告可达性和拓扑 174
11.4.1 决定何时通告可达性及拓扑结构 174
11.4.2 可达性的响应式分发 175
11.4.3 可达性的主动式分发 177
11.5 在控制平面之间重新分发 178
11.5.1 重新分发与度量 179
11.5.2 重新分发与路由循环 180
11.6 总结思考 182
11.7 拓展阅读 182
11.8 复习题 183
第12章 单播无环路径(1) 184
12.1 哪条路径是无环路径 184
12.2 树 186
12.3 无环备选路径 188
12.3.1 瀑布(或分水岭)模型 189
12.3.2 P/Q空间 190
12.3.3 远程无环备选路径 191
12.4 Bellman-Ford无环路径计算 191
12.5 Garcia扩散更新算法 196
12.6 总结思考 200
12.7 拓展阅读 200
12.8 复习题 201
第13章 单播无环路径(2) 202
13.1 Dijkstra *短路径优先 202
13.1.1 部分和增量SPF 207
13.1.2 计算LFA和rLFA 208
13.2 路径向量 209
13.3 非相交路径算法 211
13.3.1 双连接网络 212
13.3.2 Suurballe 非相交路径算法 212
13.3.3 *大冗余树 215
13.4 双向连接性 218
13.5 总结思考 218
13.6 拓展阅读 218
13.7 复习题 220
第14章 对拓扑变化的响应 221
14.1 检测拓扑变化 222
14.1.1 通过轮询来检测故障 222
14.1.2 事件驱动的故障检测 223
14.1.3 比较事件驱动和基于轮询的检测 224
14.1.4 示例:双向转发检测 225
14.2 变更分发 226
14.2.1 洪泛 227
14.2.2 逐跳 229
14.2.3 集中式存储 230
14.3 一致性、可用性和分区 232
14.4 总结思考 234
14.5 拓展阅读 234
14.6 复习题 235
第15章 距离向量控制平面 236
15.1 控制平面分类 236
15.2 生成树协议 239
15.2.1 构建一棵无环树 239
15.2.2 学习可达目的地址 242
15.2.3 生成树协议的总结思考 243
15.3 路由信息协议 244
15.3.1 绑定Bellman-Ford算法到RIP 245
15.3.2 对拓扑变化的响应 247
15.3.3 RIP的总结思考 248
15.4 增强内部网关路由协议 248
15.4.1 对拓扑变化的响应 250
15.4.2 邻居发现与可靠传输 252
15.4.3 EIGRP的总结思考 252
15.5 拓展阅读 253
15.6 复习题 254
第16章 链路状态与路径向量控制平面 255
16.1 OSPF和IS-IS简史 255
16.2 IS-IS协议 256
16.2.1 OSI寻址 256
16.2.2 IS-IS中的数据列集 257
16.2.3 邻居发现和拓扑发现 258
16.2.4 可靠的洪泛 259
16.2.5 IS-IS 的总结思考 261
16.3 OSPF 261
16.3.1 OSPF中的数据列集 261
16.3.2 邻居发现和拓扑发现 262
16.3.3 可靠的洪泛 264
16.3.4 OSPF的总结思考 265
16.4 OSPF和IS-IS中的通用元素 265
16.4.1 多址链路 265
16.4.2 链路状态协议中概念化链路、节点和可达性 267
16.4.3 验证SPF中的双向连接性 268
16.5 边界网关协议 269
16.5.1 BGP 对等操作 269
16.5.2 BGP的*佳路径决策过程 271
16.5.3 BGP的通告规则 272
16.5.4 BGP的总结思考 273
16.6 总结思考 274
16.7 拓展阅读 274
16.8 复习题 276
第17章 控制平面中的策略 277
17.1 控制平面策略用例 277
17.1.1 冷/热土豆路由 277
17.1.2 资源分割 279
17.1.3 应用优化的流量固定 280
17.2 定义控制平面策略 283
17.3 控制平面策略与复杂性 284
17.3.1 再谈冷/热土豆路由 284
17.3.2 资源分割 285
17.3.3 应用的流量固定 286
17.4 总结思考 287
17.5 拓展阅读 287
17.6 复习题 288
第18章 集中式控制平面 289
18.1 讨论“软件定义”的定义 289
18.1.1 接口分类 290
18.1.2 功能分层 290
18.2 BGP作为SDN 291
18.3 Fibbing 292
18.4 I2RS 294
18.5 PCEP 298
18.6 OpenFlow 299
18.7 CAP定理和辅助性 301
18.8 总结思考 303
18.9 拓展阅读 303
18.10 复习题 304
第19章 故障域与信息隐藏 305
19.1 问题空间 305
19.1.1 定义控制平面状态范围 305
19.1.2 正反馈环路 306
19.2 解决方案空间 309
19.2.1 拓扑信息汇总 309
19.2.2 可达性信息聚合 310
19.2.3 可达性信息过滤 312
19.2.4 控制平面分层 312
19.2.5 缓存 313
19.2.6 减速 316
19.3 总结思考 317
19.4 拓展阅读 318
19.5 复习题 318
第20章 信息隐藏示例 319
20.1 拓扑信息汇总 319
20.1.1 IS-IS 319
20.1.2 OSPF 323
20.2 聚合 327
20.3 分层 328
20.3.1 BGP作为一个可达性覆盖层 328
20.3.2 带有控制器覆盖层的分段路由 329
20.4 减慢状态速度 330
20.4.1 指数退避 331
20.4.2 链路状态的洪泛缩减 333
20.5 总结思考 334
20.6 拓展阅读 334
20.7 复习题 335
第三部分 网络设计
第21章 安全性的宽泛讨论 339
21.1 问题的范围 339
21.1.1 生物特征识别难题 339
21.1.2 定义 340
21.1.3 问题空间 341
21.2 解决方案空间 341
21.2.1 深度防御 342
21.2.2 访问控制 342
21.2.3 数据保护 343
21.2.4 服务可用性保证 346
21.3 作为安全模型的OODA循环 352
21.3.1 观察 352
21.3.2 调整 352
21.3.3 决策 353
21.3.4 行动 354
21.4 总结思考 354
21.5 拓展阅读 354
21.6 复习题 356
第22章 网络设计模式 357
22.1 问题空间 357
22.1.1 解决业务问题 358
22.1.2 将业务需求转换为技术需求 360
22.1.3 什么是好的网络设计 361
22.2 分层设计 362
22.3 常见拓扑结构 364
22.3.1 环形拓扑 364
22.3.2 网格拓扑 366
22.3.3 星形拓扑 367
22.3.4 平面、非平面和规则化 368
22.4 总结思考 369
22.5 拓展阅读 369
22.6 复习题 369
第23章 冗余与弹性 370
23.1 问题空间:网络故障对应用程序的影响 370
23.2 弹性的定义 371
23.3 创建弹性的工具—冗余 372
23.3.1 共享风险链路组 374
23.3.2 在线软件升级和优雅重启 374
23.3.3 双平面与多平面核心 375
23.4 模块化和弹性 376
23.5 总结思考 377
23.6 拓展阅读 377
23.7 复习题 377
第24章 故障排除 378
24.1 目的是什么 378
24.2 组件是什么 379
24.3 模型和故障排除 380
24.3.1 构建How模型 380
24.3.2 构建What模型 381
24.3.3 建立精准模型 382
24.3.4 模型之间的切换 383
24.4 二分法和移动 385
24.4.1 使用可操控性 386
24.4.2 在测试之前简化 387
24.5 解决问题 387
24.6 总结思考 388
24.7 拓展阅读 389
24.8 复习题 389
第四部分 当前热门话题
第25章 分解、超融合及不断变化的网络 393
25.1 计算资源和应用程序的变化 393
25.1.1 汇聚、分解、超融合和可合成 394
25.1.2 应用程序的虚拟化和分解 396
25.2 网络设计的影响 397
25.2.1 东西网络流量的兴起 397
25.2.2 抖动和延迟的兴起 398
25.3 分组交换Fabric 398
25.3.1 一个Fabric的特性 398
25.3.2 骨干和叶子节点 401
25.3.3 骨干和叶子节点上的流量工程 403
25.3.4 大规模的骨干和叶子节点 404
25.4 网络中的分解 404
25.5 总结思考 407
25.6 拓展阅读 408
25.7 复习题 408
第26章 网络自动化案例 409
26.1 自动化的概念 410
26.2 现代自动化方法 412
26.2.1 NETCONF 412
26.2.2 RESTCONF 415
26.3 具有可编程接口的自动化 415
26.4 on-box自动化 418
26.5 基于基础设施自动化工具的网络自动化 418
26.6 网络控制器与自动化 419
26.7 用于部署的网络自动化 419
26.8 对未来网络自动化的总结思考:自动化到全自动 420
26.9 拓展阅读 420
26.10 复习题 421
第27章 网络功能虚拟化 422
27.1 网络设计的灵活性 423
27.2 水平扩展 428
27.3 通过自动化减少服务时间 429
27.3.1 中心化策略管理 429
27.3.2 基于意图的网络 430
27.3.3 VNF自动化的好处 430
27.4 计算优势与架构 430
27.5 考虑权衡 431
27.5.1 状态 432
27.5.2 优化 432
27.5.3 表面 432
27.5.4 其他需要考虑的因素 432
27.6 总结思考 433
27.7 拓展阅读 433
27.8 复习题 434
第28章 云计算的概念和挑战 435
28.1 公有云的业务驱动 436
28.1.1 从资本支出转向运营支出 436
28.1.2 上市时间和业务敏捷性 437
28.2 非技术性的公有云权衡 437
28.2.1 运营权衡 438
28.2.2 业务权衡 439
28.3 云计算的技术挑战 440
28.3.1 延迟 440
28.3.2 填充远程存储 441
28.3.3 数据重力 442
28.3.4 选择到公有云的多个路径 442
28.4 云的安全性 443
28.4.1 在公共传输网上保护数据 443
28.4.2 管理安全连接 444
28.4.3 多租户云 444
28.4.4 基于角色的访问控制 444
28.5 监控云网络 445
28.6 总结思考 445
28.7 拓展阅读 445
28.8 复习题 446
第29章 物联网 447
29.1 IoT介绍 447
29.2 IoT安全 448
29.3 IoT的连接性 451
29.3.1 低功耗蓝牙 452
29.3.2 LoRaWAN 453
29.3.3 IoT的IPv6 454
29.4 IoT数据 455
29.5 总结思考 456
29.6 拓展阅读 456
29.7 复习题 457
第30章 展望未来 458
30.1 普遍开放的自动化 459
30.1.1 建模语言和模型 459
30.1.2 YANG简介 459
30.1.3 普遍自动化的展望 460
30.2 超融合网络 460
30.3 基于意图的网络 461
30.4 机器学习和狭义人工智能 463
30.5 命名数据网络和区块链 464
30.5.1 命名数据网络的操作 465
30.5.2 区块链 466
30.6 互联网的重塑 468
30.7 对网络工程未来的总结思考 469
30.8 拓展阅读 470
30.9 复习题 470
计算机科学丛书计算机网络问题与解决方案:一种构建弹性现代网络的创新方法 作者简介
作者简介
Russ White CCIE No. 2635, CCDE 2007::1, CCAr,在大型网络设计、部署、分解和故障排除方面有30多年的经验。他与人合作完成了40多项软件专利,在世界各地发表演讲,参与了多项互联网标准的开发,帮助设计了CCDE和CCAr,并与互联网社区一起从事互联网治理工作。Russ目前是LinkedIn架构团队的一员,从事下一代数据中心设计、复杂性、安全性和隐私保护等方面的工作。他目前也是IETF的路由领域理事会成员,并担任IETF I2RS和BABEL工作组的联合主席。他的*新著作有《网络架构的艺术》(The Art of Network Architecture)和《网络复杂性导航》(Navigating Network Complexity)。
Russ拥有卡佩拉(Capella)大学的硕士(MSIT)学位、牧羊人神学院的硕士学位,以及东南神学院的博士学位。
作者简介
Russ White CCIE No. 2635, CCDE 2007::1, CCAr,在大型网络设计、部署、分解和故障排除方面有30多年的经验。他与人合作完成了40多项软件专利,在世界各地发表演讲,参与了多项互联网标准的开发,帮助设计了CCDE和CCAr,并与互联网社区一起从事互联网治理工作。Russ目前是LinkedIn架构团队的一员,从事下一代数据中心设计、复杂性、安全性和隐私保护等方面的工作。他目前也是IETF的路由领域理事会成员,并担任IETF I2RS和BABEL工作组的联合主席。他的*新著作有《网络架构的艺术》(The Art of Network Architecture)和《网络复杂性导航》(Navigating Network Complexity)。
Russ拥有卡佩拉(Capella)大学的硕士(MSIT)学位、牧羊人神学院的硕士学位,以及东南神学院的博士学位。
Ethan Banks CCIE No. 20655,路由与交换领域。自1995年以来一直从事IT工作,早期是Novell、Windows和Linux环境的系统工程师。后来,他成为一名互联网服务工程师,在一家区域ISP从事DNS、SMTP、HTTP和相关应用程序的工作。他主要从事垂直领域的网络工程师和架构师工作,包括高等教育、咨询、金融和技术等领域。曾任高级网络工程师、网络运营经理、技术服务经理、网络架构经理、高级网络架构师等职。
2010年,Ethan与人共同创办了Packet Pushers Interactive公司,这是一家媒体公司,其主要产品是每周播放的播客,在全世界拥有1万多名网络工程师听众。
Ethan是一个作家,他的文章可以在《Network World》《Network Computing》《Infor-mation Week》《Modern Infrastructure》和《TechTarget》等上找到。Ethan还在自己的技术博客ethancbanks.com上撰写科技方面的文章,他为SolarWinds、Nuage Networks、Cloud-Genix和NetBrain Technologies编写或编辑过白皮书。Ethan现在是Interop 的未来网络化联合主席。
Ethan于1993年以优异成绩毕业于佛罗里达彭萨科拉基督教学院(Pensacola Christian College),获得了计算机科学与工商管理学士学位。目前,Ethan拥有Netware认证工程师、微软认证系统工程师、思科认证网络专业资格、认证道德黑客(Certified Ethical Hacker)和思科认证安全专业资格等证书。
译者简介
曹洪伟,1995年毕业于北京邮电大学无线通信专业,2007年获中央财经大学的MBA。在互联网应用、嵌入式系统等软硬件开发方面有超过20年的经验。曾工作于加拿大北方电讯、法国斯伦贝谢、美国高通公司等世界500强企业,从事接入网络、TMN、智能卡、芯片集成应用、手机操作系统、移动增值业务的研发和技术管理工作。在多家创业公司担任研发总监和CTO,现聚焦在智能硬件、物联网及人工智能领域,任百度DuerOS首席布道师,从事构建对话式人工智能操作系统生态的相关工作。在此期间,他参与合著了10多项国内外专利,著有《BREW进阶与精通》,最近参与合著了《深入分布式缓存》。
石涛声,分布式系统研究员、区块链技术爱好者,在分布式系统基础软件领域有超过10年的研发经验。2007年毕业于遵义师范学院计算机科学与技术专业,之后工作于电子科技大学宽带网络与分布式处理实验室,师从分布式系统领域泰斗刘心松教授,从事大规模分布式文件系统和分布式数据库的研发工作。曾就职于诺基亚通信,从事数据仓库和无线云平台的研发工作。目前专注于区块链存储和区块链基础设施的研究与开发。