《深入浅出Neutron OpenStack网络技术》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:张华,向辉,刘艳凯编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302417385
  • 页数:265 页
图书介绍:本书是介绍OpenStack网络的专著,本书将会从传统的网络技术开始,让读者建立传统网络与Neutron网络的一一对应关系,建立大的picture, 然后会深入讲解Neutron一些重要特性背后的网络背景知识,以及它在Neutron中是如何实现的。本书还会介绍一些我们对大规模高性能网络调优的一些经验与看法。本书强调系统性,强调理论指导实践的前瞻性,很多网络原理我们会用简单有效的小试验来证明,而Neutron背后的原理和它恰好是一模一样的。

第1篇 初识Neutron 2

第1章 Neutron是什么 2

1.1 什么是云 2

1.2 什么是OpenStack 3

1.3 Neutron的发展与介绍 4

1.4 分层思想与Neutron组件架构 5

1.5 Neutron 中的服务 7

1.5.1 Neutron二层网络服务 7

1.5.2 Neutron三层网络服务 9

1.5.3 Neutron高级网络服务 9

1.5.4 其他服务 10

1.6 Neutron支持的部署拓扑 12

1.6.1 单一平面网络 12

1.6.2 多平面网络 13

1.6.3 混合平面私有网络 13

1.6.4 通过私有网络实现运营商路由功能 14

1.6.5 通过私有网络实现每个租户创建自己专属的网络区段 14

1.7 爱上Neutron的理由 15

1.7.1 北向API,框架结构与微内核 15

1.7.2 大规模高性能,L2的控制平面L2 population(L2pop) 15

1.7.3 大规模高性能,改善东西南北向流量之分布式虚拟路由(DVR) 16

1.7.4 大规模高性能,L3高可用VRRP(Virtual Router Redundancy Protocol) 17

1.8 小结 17

第2章 Neutron二层网络服务实现原理 18

2.1 二层网络基本原理 18

2.2 大二层变革综述 19

2.2.1 大二层多路径技术 20

2.2.2 大二层互联技术 20

2.3 二层网络的实现——ML2插件 21

2.4 二层网络在Linux中的实现 22

2.4.1 veth path演示用例 23

2.4.2 Linux网桥演示用例 24

2.5 Openvswitch中二层网络的实现 26

2.6 虚拟机部署与二层网络的绑定(Port Binding) 28

2.7 小结 30

第3章 Neutron三层网络服务实现原理 31

3.1 路由原理 31

3.2 三层路由在Linux中的实现 32

3.3 Neutron的三层网络实现 33

3.4 通过实验夯实路由基础 33

3.4.1 环境准备 33

3.4.2 同一节 点上的两台虚拟机如何互访 35

3.4.3 不同节点上的两台虚拟机如何互访 36

3.4.4 虚拟机如何访问外网(SNAT) 36

3.4.5 外网如何访问虚拟机(DNAT) 36

3.4.6 VLAN 36

3.4.7 VxLAN 40

3.4.8 GRE 40

3.5 FLAT、VLAN、GRE、VxLAN 网络拓扑 41

3.6 小结 43

第4章 OpenStack的部署与Neutron之Hello World 44

4.1 OpenStack部署方式简介 44

4.2 使用Devstack部署OpenStack开发环境 44

4.2.1 系统环境 45

4.2.2 部署Devstack环境 45

4.2.3 自动化脚本一键自动部署OpenStack 47

4.3 创建第一个网络 49

4.4 小结 59

第2篇 Neutron进阶 61

第5章 Neutron中的网络安全 61

5.1 iptables基础 61

5.2 Neutron中的安全组 66

5.2.1 Neutron中的自定义链 67

5.2.2 每个虚拟机的链和规则 68

5.2.3 配置使用Neutron 中的Security Group 69

5.2.4 Allowed Address Pairs扩展 69

5.3 Neutron中的防火墙 69

5.4 有状态的防火墙和基于OVS流规则的防火墙 71

5.4.1 什么是有状态的防火墙 71

5.4.2 有状态防火墙在iptables中的实现 72

5.4.3 从数据流向看iptables对TCP、UDP及ICMP报文的支持 73

5.4.4 Openvswitch中对有状态防火墙的支持 73

5.5 多层防火墙应用实例 74

5.6 Group Based Policy 75

5.7 小结 76

第6章 高级网络服务 77

6.1 网络服务模型与用例 77

6.1.1 Routed/Embedded网络服务 78

6.1.2 Floating/In-Path网络服务 78

6.1.3 Out-of-Path网络服务 78

6.1.4 网络服务插入点 79

6.1.5 L3层的网络服务用例 79

6.1.6 L2层的网络服务用例 80

6.1.7 Bump-in-the-Wire网络服务用例 80

6.1.8 TAPaaS网络服务用例 81

6.2 ServiceType框架 81

6.2.1 ServiceType种类 81

6.2.2 如何配置ServiceType使用高级网络服务 82

6.2.3 重构后的高级服务代码实现 83

6.3 其他高级网络服务特性 84

6.3.1 Neutron Flavor框架 84

6.3.2 Service Insertion 84

6.3.3 Service Chain(服务链) 86

6.3.4 Traffic Steering特性 87

6.3.5 Huawei Service Chain特性 87

6.4 LBaaS服务原理与实现 88

6.4.1 LBaaS代码结构 88

6.4.2 LBaaS应用场景及实现要点 89

6.4.3 LBaaS示例 90

6.5 IPSec VPNaaS服务原理与实现 91

6.5.1 隧道协议的本质与分类 91

6.5.2 VPN的本质与分类 92

6.5.3 IPSec理论 93

6.5.4 Neutron openSwan/strongSwan VPNaaS驱动架构 95

6.5.5 运行Neutron strongSwan VPNaaS 96

6.5.6 Neutron strongSwan VPNaaS配置与排错 102

6.6 基于MPLS的VPNaaS服务原理与实现 106

6.6.1 MPLS原理与路由信息传递 106

6.6.2 Neutron VPNaaS数据模型演进 109

6.6.3 Neutron MPLS VPN实现原理 110

6.7 小结 111

第7章 网络性能调优 112

7.1 通用操作系统与传统Hypervisor的网络性能瓶颈 112

7.1.1 网络性能瓶颈在哪儿 112

7.1.2 virtio 113

7.1.3 vhost 115

7.1.4 vhost-user与snabbswitch 115

7.1.5 openonload 116

7.2 Neutron性能的评价指数 117

7.3 API Server的调优 118

7.4 MySQL、Rabbitmq调优 119

7.5 计算节点及13-agent的调优 119

7.6 网络中的MTU问题对性能的影响 120

7.7 启用L2pop特性提高性能 121

7.8 通过分布式虚拟路由器改善网络节点性能 122

7.8.1 实例分析 123

7.8.2 命名空间 126

7.8.3 配置使用Neutron DVR 126

7.8.4 环境演示 127

7.8.5 内幕分析 128

7.8.6 DVR定制OVS Flow 138

7.9 网络节点的高可用性 139

7.9.1 通过pacemaker/corosync实现的Neutron L3 高可用性 140

7.9.2 支持Neutron L3高可用性和扩展性 145

7.9.3 VRRP高可用性 156

7.10 小结 163

第3篇 Neutron实战 165

第8章 Neutron实战开发 165

8.1 Neutron的数据模型介绍 166

8.1.1 核心实体(L2) 167

8.1.2 L3层的实体 167

8.1.3 高层服务实体 168

8.2 Neuron的API及其实现机制介绍 168

8.3 使用eclipse+pydev插件建立开发环境 170

8.4 如何开发新的Plugin 173

8.5 为新二层设备开发MechanismDriver实战 179

8.6 小结 183

第9章 贡献Neutron社区 184

9.1 加入OpenStack社区 184

9.2 注册BP与neutron-spec 185

9.3 如何提交代码 191

9.4 Neutron CI测试 195

9.5 代码及代码风格 198

9.6 小结 199

第10章 Neutron中的测试 200

10.1 单元测试 201

10.1.1 assert_has_calls实例 203

10.1.2 assert_called_once_with实例 204

10.2 功能测试 205

10.3 Tempest集成测试 208

10.4 小结 217

第4篇 Neutron杂谈与展望 219

第11章 软件定义网络(SDN) 219

11.1 软件定义网络(SDN)简介 219

11.2 OpenFlow 中的L3层路由与跨数据中心的SDN 221

11.3 RouteFlow 222

11.4 SDN Neutron的集成 223

11.5 NFV 224

11.6 小结 226

第12章 IPv6与Neutron 227

12.1 基础知识 227

12.1.1 IPv6地址的3种配置方式 227

12.1.2 IPv6 Privacy Extensions 228

12.1.3 Radvd软件路由器 228

12.1.4 IPv6地址类型 228

12.2 IPv6在Neutron 中的实现 229

12.2.1 Neutron中的IPv6地址支持 229

12.2.2 Neutron 中的IPv6前缀代理(PrefixDelegation,PD)机制 233

12.2.3 Neutron网络中的IPv6路由 233

12.3 IPv6在管理网络中的实现 233

12.3.1 配置Radvd 234

12.3.2 配置Keystone 234

12.3.3 配置glance 238

12.3.4 配置Nova 239

12.3.5 配置neutron-server 242

12.3.6 配置swift 244

12.3.7 配置swift-storage 245

12.3.8 配置corosync 246

12.3.9 配置cinder 247

12.3.10 配置RabbitMQ 249

12.3.11 IPv6 novarc 250

12.3.12 实验结果验证 251

12.4 小结 254

附录 256

附录A Openstack网络的故障排除 256

A.1 虚拟机获取不到IP的问题 256

A.2 虚拟机无法访问外网的问题 256

A.3 无法重建GRE隧道的问题 257

附录B 调试代码时可能遇到的问题 258

B.1 服务状态不一致的问题 258

B.2 在eclipse 中调试OpenStack代码时,模块动态替换的问题 258

B.3 Devstack环境中切换代码分支的问题 259

附录C Devstack环境代码升级的问题 260

参考链接 264