第1章 云数据中心网络演进 1
1.1传统的3-Tier架构 1
1.2设备“多虚一”——虚拟机框 2
1.2.1 Cisco VSS 2
1.2.2 Juniper VC与H3C IRF 4
1.3高级STP欺骗——跨设备链路聚合 4
1.3.1 Cisco vPC 4
1.3.2 Juniper MC-LAG和AristaM-LAG 6
1.4变革3-Tie——向Leaf-Spine演进 6
1.5初识大二层 9
1.6插叙——虚拟机的接入 10
1.6.1 VEB 10
1.6.2 Cisco VN-TAG 11
1.6.3 VEPA 12
1.6.4 VEB性能优化 13
1.7消除STP—— Underlay L2MP 14
1.7.1 TRILL 15
1.7.2 SPB 17
1.8 Cisco私有的大二层——FabricPath 19
1.8.1整体设计 19
1.8.2控制与转发过程分析 21
1.8.3其他技术细节 25
1.9 Juniper私有的大二层——QFabric 25
1.9.1整体设计 26
1.9.2集中式的控制机制 29
1.9.3控制与转发过程分析 30
1.10 Brocade私有的大二层——VCS 32
1.10.1整体设计 33
1.10.2控制与转发过程分析 33
1.10.3其他技术细节 35
1.11跨越数据中心的二层——DCI优化 36
1.11.1 Cisco OTV 36
1.11.2 HUAWEI EVN与H3C EVI 38
1.12端到端的二层——NVo3的崛起 39
1.12.1 VxLAN 39
1.12.2 NvGRE 41
1.12.3 STT 42
1.12.4 Geneve 43
1.13新时代的开启——SDN入场 45
1.14 Overlay最新技术——EVPN 46
1.14.1传统网络对SDN的反击 46
1.14.2组网与数据模型 47
1.14.3控制信令的设计 48
1.15 Underlay最新技术——Segment Routing 55
1.15.1 SID与Label 56
1.15.2控制与转发机制 57
1.15.3 SDN 2.0? 60
1.16本章小结 62
第2章 杂谈SDN 63
2.1 SDN与传统网络——新概念下的老问题 63
2.2转控分离——白盒的曙光 66
2.2.1芯片级开放 68
2.2.2操作系统级开放 71
2.2.3应用级开放 75
2.2.4机箱级开放 76
2.2.5白盒的“通”与“痛” 77
2.3网络可编程——百家争鸣 78
2.3.1芯片可编程 78
2.3.2 FIB可编程 80
2.3.3 RIB可编程 83
2.3.4设备配置可编程 85
2.3.5设备OS和控制器可编程 88
2.3.6业务可编程 88
2.4集中式控制——与分布式的哲学之争 89
2.4.1在功能上找到平衡点 90
2.4.2在扩展性和可用性上找到平衡点 91
2.5回归软件本源——从N到D再到S 94
2.5.1模块管理 94
2.5.2模块间通信 95
2.5.3接口协议适配 96
2.5.4数据库 97
2.5.5集群与分布式 98
2.5.6容器与微服务 99
2.6本章小结 100
第3章 SDDCN概述 101
3.1需求 101
3.1.1自动化与集中式控制 101
3.1.2应用感知 103
3.2整体架构 105
3.2.1实现形态 105
3.2.2功能设计 107
3.3关键技术 107
3.3.1网络边缘 107
3.3.2网络传输 110
3.3.3服务链 112
3.3.4可视化 115
3.3.5安全 117
3.3.6高可用 120
3.4本章小结 122
第4章 商用SDDCN解决方案 123
4.1 VMware NSX 123
4.1.1从NVP到NSX 124
4.1.2 NVP控制平面设计 125
4.1.3 NVP数据平面设计 125
4.1.4 NVP转发过程分析 126
4.1.5 NSX-V整体架构 128
4.1.6 NSX-V管理平面设计 129
4.1.7 NSX-V控制平面设计 130
4.1.8 NSX-V数据平面设计 132
4.1.9 NSX-V转发过程分析 132
4.1.10 NSX-MH与NSX-T 139
4.2 Cisco ACI 140
4.2.1整体架构 141
4.2.2管理与控制平面设计 142
4.2.3数据平面设计 145
4.2.4转发过程分析 152
4.2.5议ACI与SDN 154
4.3 Cisco VTS 155
4.3.1整体架构 156
4.3.2管理与控制平面设计 158
4.3.3数据平面设计 159
4.4 Juniper Contrail 162
4.4.1整体架构 164
4.4.2管理与控制平面设计 167
4.4.3数据平面设计 173
4.4.4转发过程分析 175
4.5 Nuage VCS 176
4.5.1整体架构 178
4.5.2管理平面设计 179
4.5.3控制平面设计 179
4.5.4数据平面设计 180
4.6 Arista EOS与CloudVison 181
4.6.1整体架构 183
4.6.2管理与控制平面设计 185
4.6.3数据平面设计 187
4.7 HUAWEI AC-DCN 187
4.7.1整体架构 187
4.7.2管理平面设计 189
4.7.3控制平面设计 189
4.7.4数据平面设计 193
4.8 Bigswitch BCF与BMF 194
4.8.1整体架构 195
4.8.2 BCF控制平面设计 196
4.8.3 BMF控制平面设计 201
4.8.4数据平面设计 205
4.9 Midokura Midonet 207
4.9.1整体架构 207
4.9.2控制平面设计 210
4.9.3数据平面设计 213
4.10 PLUMgrid ONS 217
4.10.1整体架构 217
4.10.2数据平面设计 219
4.10.3控制平面设计 221
4.10.4转发过程分析 222
4.11 Plexxi Switch与Control 225
4.11.1整体架构 225
4.11.2数据平面设计 227
4.11.3控制平面设计 229
4.12 Pluribus 230
4.12.1 Server Switch设计 231
4.12.2 Netvisor设计 232
4.12.3再议数据中心SDN 235
4.13本章小结 236
第5章 开源SDDCN : OpenStackNeutron的设计与实现 237
5.1网络基础 237
5.1.1网络结构与网络类型 238
5.1.2 VLAN网络类型中流量的处理 239
5.2软件架构 242
5.2.1分布式组件 242
5.2.2 Core Plugin与Service Plugin 243
5.3 WSGI与RPC的实现 245
5.3.1 Neutron Server的W SGI 245
5.3.2 Neutron Plugin与Neutron Agent间的RPC 247
5.4虚拟机启动过程中网络的相关实现 248
5.4.1虚拟机的启动流程 248
5.4.2 Nova请求Port资源 250
5.4.3 Neutron生成Port资源 250
5.4.4 Neutron将Port相关信息通知给DHCP Agent 252
5.4.5 DHCP Agent将Port相关信息通知给DHCP Server 252
5.4.6 Nova拉起虚拟机并通过相应的Port接入网络 252
5.5 OVS Agent的实现 253
5.5.1网桥的初始化 253
5.5.2使能RPC 255
5.6 OVS Agent对Overlay L2的处理 256
5.6.1标准转发机制 256
5.6.2 arp_responder 258
5.6.3 12_population 260
5.7 OVS Agent对Overlay L3的处理 261
5.7.1标准转发机制 261
5.7.2 DVR对东西向流量的处理 262
5.7.3 DVR对南北向流量的处理 267
5.8 Security-Group与FWaaS 268
5.8.1 Neutron-Securi-Group 268
5.8.2 FWaaS v1 269
5.8.3 FWaaS v2 269
5.9 LBaaS 270
5.9.1 LBaaS v1 270
5.9.2 LBaaS v2 271
5.9.3 Octavia 271
5.10 TaaS 272
5.11 SFC 274
5.12 L2-Gateway 275
5.13 Dynamic Routing 277
5.14 VPNaaS 279
5.15 Networking-BGPVPN与BagPipe 280
5.15.1 Networking-BGPVPN 280
5.15.2 BagPipe 280
5.16 DragonFlow 282
5.17 OVN 287
5.18本章小结 290
第6章 开源SDDCN: OpenDaylight相关项目的设计与实现 291
6.1架构分析 291
6.1.1 AD-SAL架构 292
6.1.2 MD-SAL架构 293
6.1.3 YANG和YANG-Tools 294
6.1.4 MD-SAL的内部设计 294
6.1.5 MD-SAL的集群机制 296
6.1.6其他 298
6.2 OpenFlow的示例实现 298
6.2.1 OF交换机的上线 299
6.2.2 12switch获得PacketIn 301
6.2.3 12switch下发PacketOut和FlowMod 302
6.3 OpenStack Networking-ODL 303
6.3.1 v1 303
6.3.2 v2 304
6.4 Neutron-Northbound的实现 306
6.4.1对接Networking-ODL 306
6.4.2 RESTful请求的处理示例 306
6.5 Netvirt简介 307
6.5.1 OVSDB-Netvirt和VPNService的合并 307
6.5.2 Genius 309
6.6 Netvirt-OVSDB-Neutron的实现 311
6.6.1 net-virt分支 311
6.6.2 net-virt-providers分支 317
6.7 Netvirt-VPNService的实现 321
6.7.1 elanmanager 323
6.7.2 vpnmanager 326
6.8 SFC的实现 328
6.8.1 sfc-openflow-renderer分支 328
6.8.2 sfc-scf-openflow分支 335
6.9 VTN Manager的实现 336
6.9.1 neutron分支 337
6.9.2 implementation分支 339
6.10本章小结 342
第7章 开源SDDCN: ONOS相关项目的设计与实现 343
7.1架构分析 343
7.1.1分层架构 344
7.1.2分层架构的实现 345
7.1.3模块的开发 347
7.1.4分层架构存在的问题 347
7.1.5数据存储与集群 348
7.1.6其他 349
7.2 Openflow的示例实现 349
7.2.1 OF交换机的上线 350
7.2.2 fwd获得PacketIn 352
7.2.3 fwd下发PacketOut和FlowMod 356
7.3 ONOSFW的实现 359
7.3.1 vtnmgr分支 359
7.3.2 sfcmgr分支 363
7.4 SONA的实现 365
7.4.1 openstacknode分支 366
7.4.2 openstacknetworking分支 368
7.5 CORD简介 371
7.5.1 R-CORD的架构 372
7.5.2 R-CORD的控制与转发机制 373
7.6本章小结 376
第8章 学术界相关研究 377
8.1拓扑 377
8.1.1 FatTree 377
8.1.2 VL2 379
8.1.3 DCell 380
8.1.4 FiConn 382
8.1.5 BCube 384
8.1.6 MDCube 385
8.1.7 CamCube 387
8.2路由 388
8.2.1 Seattle 388
8.2.2 FatTree 391
8.2.3 VL2 393
8.2.4 PortLand 396
8.2.5 SecondNet 400
8.2.6 SiBF 401
8.2.7 SPAIN 402
8.2.8 WCMP 404
8.2.9 OF-based DLB 406
8.2.10 Flowlet与CONGA 406
8.2.11 Hedera 408
8.2.12 DevoFlow 409
8.2.13 MicroTE 409
8.2.14 Mahout 410
8.2.15 F10 410
8.2.16 DDC 411
8.2.17 SlickFlow 412
8.2.18 COXCast 413
8.2.19 Avalanche 415
8.3虚拟化 416
8.3.1 NetLord 416
8.3.2 FlowN 418
8.3.3 FlowVisor 420
8.3.4 ADVisor 421
8.3.5 VeRTIGO 423
8.3.6 OpenVirteX 424
8.3.7 CoVisor 426
8.4服务链 427
8.4.1 pSwitch 427
8.4.2 FlowTags 428
8.4.3 Simple 430
8.4.4 StEERING 432
8.4.5 OpenSCaaS 434
8.4.6 SPFRI 435
8.5服务质量 437
8.5.1 NetShare 437
8.5.2 Seawall 438
8.5.3 GateKeeper 439
8.5.4 ElasticSwitch 440
8.5.5 SecondNet 441
8.5.6 Oktopus 441
8.6传输层优化 443
8.6.1 MPTCP 443
8.6.2 DCTCP 446
8.6.3 D3 447
8.6.4 pFabric 449
8.6.5 Fastpass 450
8.6.6 OpenTCP 451
8.6.7 vCC 452
8.7测量与分析 453
8.7.1 Pingmesh 453
8.7.2 OpenNetMon 454
8.7.3 FlowSense 455
8.7.4 Dream 455
8.7.5 OpenSample 457
8.7.6 Planck 458
8.7.7 OpenSketch 458
8.8安全 460
8.8.1 SOM 460
8.8.2 FloodGuard 462
8.8.3 TopoGuard 463
8.8.4 FortNox 464
8.8.5 AVANT GUARD 466
8.8.6 OF-RHM 468
8.8.7 Fresco 470
8.9高可用 471
8.9.1 ElastiCon 471
8.9.2 Ravana 473
8.9.3 BFD for OpenFlow 474
8.9.4 In-Band Control Recovery 476
8.9.5 OF-based SLB 477
8.9.6 Anata 478
8.9.7 Duet 480
8.10大数据优化 482
8.10.1 BASS 482
8.10.2 OFScheduler 482
8.10.3 Phurti 483
8.10.4 Application-Aware Networking 484
8.10.5 CoFlow 485
8.11本章小结 486
第9章 番外——容器网络 487
9.1容器网络概述 487
9.2容器网络模型 488
9.2.1接入方式 488
9.2.2跨主机通信 491
9.2.3通用数据模型 492
9.3 Docker网络 494
9.3.1 docker() 495
9.3.2 pipework 496
9.3.3 libnetwork 496
9.4 Kubemetes网络 498
9.4.1基于POD的组网模型 498
9.4.2 Service VIP机制 499
9.5第三方组网方案 501
9.5.1 Flannel 501
9.5.2 Weave 502
9.5.3 Calico 504
9.5.4 Romana 506
9.5.5 Contiv 507
9.6 Neutron网络与容器的对接 508
9.7本章小结 510
第10章 番外——异构网络与融合 511
10.1融合以太网基础 511
10.1.1 PFC 512
10.1.2 ETS 513
10.1.3 QCN 513
10.1.4 DCBX 514
10.2存储网络及其融合 514
10.2.1 FC的协议栈 515
10.2.2 FC的控制与转发机制 516
10.2.3 FCoE的控制与转发机制 517
10.2.4昙花一现的SDSAN 520
10.3高性能计算网络及其融合 524
10.3.1 InfiniBand的协议栈 525
10.3.2 InfiniBand的控制与转发机制 526
10.3.3 RoCE与RoCEv2 528
10.4本章小结 530