第1篇 初識Neutron
第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篇 初識Neutron
第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進階
第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 Service Type框架 81
6.2.1 Service Type種類 81
6.2.2 如何配置Service Type使用高級網絡服務 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 計算節點及l3-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實戰
第8章 Neutron實戰開發 165
8.1 Neutron的數據模型介紹 166
8.1.1 核心實體(L2) 167
8.1.2 L3層的實體 167
8.1.3 高層服務實體 168
8.2 Neutron的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雜談與展望
第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前綴代理(Prefix Delegation,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
附 錄
附錄A Openstack網絡的故障排除 256
A.1 虛擬機獲取不到IP的問題 256
A.2 虛擬機無法訪問外網的問題 256
A.3 無法重建GRE隧道的問題 257
附錄B 調試代碼時可能遇到的問題 258
B1 服務狀態不一緻的問題 258
B2 在eclipse中調試OpenStack代碼時,模塊動態替換的問題 258
B3 Devstack環境中切換代碼分支的問題 259
附錄C Devstack環境代碼升級的問題 260
參考鏈接 264
· · · · · · (
收起)