內容簡介
本書是一本介紹 OpenStack網路的專著,本書將會從傳統的網路技術開始,讓讀者在大腦中建立傳統網路與 Neutron網路的一一對應關係,然後介紹了深入講解 Neutron一些重要特性背後的網路背景知識,以及它在 Neutron中是如何實現的。本文還對大規模高性能網路調優的一些經驗與看法,目的是讓讀者昀終從本質上把握雲計算時代的網路,知道如何去獲取與此相關的知識。
本書強調系統性和理論指導實踐的前瞻性,很多網路原理會用簡單有效的小試驗來證明,而 Neutron背後的原理和它恰好是一模一樣的,這便於讀者的深入理解。本書適合 OpenStack愛好者和有一定基礎的技術工程師以及想要深入理解 OpenStack 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 VxLAN40
3.4.8 GRE .40
3.5 FLAT、VLAN、GRE、VxLAN網路拓撲 ..41
3.6 小結.43
第 4章 OpenStack的部署與 Neutron之 Hello World44
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
第 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 DVR126
7.8.4 環境演示 ...127
7.8.5 內幕分析 ...128
7.8.6 DVR定製 OVS Flow138
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
第 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
11.1軟體定義網路( SDN)簡介.219
11.2 OpenFlow中的 L3層路由與跨數據中心的 SDN221
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.4 IPv6地址類型.228
2.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 配置 Nova239
12.3.5 配置 neutron-server .242
12.3.6 配置 swift ..244
12.3.7 配置 swift-storage245
12.3.8 配置 corosync..246
12.3.9 配置 cinder ..247
12.3.10 配置 RabbitMQ .249
12.3.11 IPv6 novarc250
12.3.12 實驗結果驗證 ...251
12.4小結.254
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