內容簡介
本書共8章。第1章講解Neutron概況。第2章介紹瞭Linux的虛擬網絡知識。第3章講述瞭Neutron的實現模型。第4章講述的Neutron的資源模型。第5章講述瞭Neutron的基本架構,以及架構中所涉及的Web機製、通信機製、並發機製等。第6章深入介紹Neutron啓動服務的流程、通信機製與實現等。第7章深入分析瞭Neutron插件的驅動、消息處理機製。第8章詳細講解瞭Neutron代理(OVS與L3)的實現。
作者簡介
李宗標,華為研發工程師,業界第壹個 SDN+NFV Orchestrator 開源架構師(OPEN-O),對SDN/NFV 頗有研究,並且有豐富的市場項目經驗。
目錄
目 錄?Contents
序
前 言
第1章 Neutron概述 1
1.1 Neutron的由來 1
1.2 Neutron的特性與應用 3
1.2.1 基於OpenStack的應用 4
1.2.2 基於SDN的應用 6
1.3 Neutron的擴展能力 8
1.4 本章小結 9
第2章 Linux虛擬網絡基礎 11
2.1 tap 11
2.2 namespace 13
2.3 veth pair 16
2.4 Bridge 17
2.5 Router 19
2.6 tun 21
2.7 iptables 24
2.7.1 NAT 27
2.7.2 Firewall 30
2.7.3 mangle 32
2.8 本章小結 32
第3章 Neutron的網絡實現模型 34
3.1 Neutron的三類節點 34
3.2 計算節點的實現模型 35
3.2.1 VLAN實現模型 37
3.2.2 VXLAN實現模型 41
3.2.3 GRE實現模型 44
3.2.4 計算節點的實現模型小結 45
3.3 網絡節點的實現模型 46
3.4 控製節點的實現模型 49
3.5 本章小結 49
第4章 Neutron的資源模型 51
4.1 Neutron資源的租戶隔離 51
4.1.1 Neutron語境下租戶隔離的
含義 52
4.1.2 Neutron在租戶隔離中的無限
責任和有限責任 53
4.1.3 Neutron的租戶隔離實現方案 54
4.1.4 租戶隔離小結 56
4.2 Network 57
4.2.1 運營商網絡和租戶網絡 58
4.2.2 物理網絡 61
4.2.3 Network小結 64
4.3 Trunk Networking 65
4.3.1 Bridge的VLAN接口模式 65
4.3.2 VLAN aware VM與Trunk
Networking 69
4.3.3 Trunk Networking小結 78
4.4 Subnet 79
4.4.1 IP核心網絡服務 80
4.4.2 Subnet資源池 81
4.5 Port 83
4.6 Router 86
4.6.1 Router的外部網關 88
4.6.2 增加Router接口 89
4.6.3 Router的路由錶 91
4.6.4 Floating IP 92
4.6.5 Router小結 94
4.7 Multi-Segments 95
4.7.1 Multi-Segments的睏惑 96
4.7.2 Multi-Segments的幾個應用
場景 98
4.8 BGP VPN 102
4.8.1 BGP VPN的使用場景 103
4.8.2 BGP VPN的實現模型 104
4.8.3 BGP VPN的資源模型 105
4.9 本章小結 109
第5章 Neutron架構分析 112
5.1 Neutron的Web框架與規範 115
5.2 Neutron的消息通信機製 117
5.2.1 AMQP基本概念 118
5.2.2 AMQP的消息轉發 118
5.3 Neutron的並發機製 122
5.3.1 協程概述 122
5.3.2 Neutron中的協程 124
5.4 通用庫Oslo 131
5.5 本章小結 131
第6章 Neutron的服務 132
6.1 Neutron啓動一個Web Server 133
6.1.1 Web Server的啓動過程 133
6.1.2 Web Server啓動過程中的
關鍵參數 135
6.1.3 Web Server的進程與協程 138
6.1.4 小結 142
6.2 加載WSGI Application 142
6.2.1 api-paste.ini對應的WSGI
Application 144
6.2.2 neutronapi_v2_0 section 146
6.3 Core Service API(RESTful)的
處理流程 148
6.3.1 Core Service的WSGI
Application 149
6.3.2 Core Service處理HTPP Request的基本流程 149
6.3.3 Core Service處理HTTP Request的函數映射 153
6.3.4 小結 162
6.4 Extension Service API(RESTful)的處理流程 164
6.4.1 Extension Service的類圖與加載 164
6.4.2 Extension Service的WSGI Application 167
6.4.3 Extension Service處理HTTP Request的基本流程 169
6.4.4 Extension Service處理HTTP Request的函數映射 171
6.4.5 小結 176
6.5 Plugin的加載 178
6.5.1 Core Service Plugin的加載 179
6.5.2 Extension Services Plugin的加載 180
6.6 RPC Consumer的創建 181
6.6.1 Neutron Plugin創建RPC Consumer的接口 182
6.6.2 Neutron Server啓動RPC Consumer 183
6.7 本章小結 187
第7章 Neutron的插件 190
7.1 核心插件 191
7.1.1 ML2插件簡介 193
7.1.2 類型驅動 193
7.1.3 機製驅動 202
7.1.4 ML2插件create_network函數剖析 224
7.1.5 ML2插件create_subnet函數剖析 229
7.1.6 ML2插件create_port函數剖析 240
7.2 業務插件 249
7.2.1 Router Plugin的create_router函數分析 250
7.2.2 Router Plugin的add_router_interface代碼分析 257
7.3 Neutron Plugin的消息發布和訂閱 260
7.3.1 Neutron Plugin中的Callbacks Module機製 261
7.3.2 Neutron Plugin中的RPC機製 265
7.4 本章小結 266
第8章 Neutron的代理 268
8.1 OVS Agent 270
8.1.1 三類關鍵的Bridge 270
8.1.2 內外VID的轉換 288
8.1.3 OVS Agent代碼分析 295
8.1.4 OVS Agent小結 309
8.2 L3 Agent 311
8.2.1 class OVSInterfaceDriver分析 312
8.2.2 class RouterInfo分析 317
8.2.3 L3 Agent代碼分析 326
8.2.4 L3 Agent小結 351
8.3 本章小結 352
前言/序言
Preface?前 言為什麼寫作本書2016年1月16號,我在微信公眾號(標哥說天下)發錶瞭Neutron係列的第壹篇文章,當時計劃是半年寫完,沒想到寫瞭一年半。也許是由於衝動吧,那天我決定寫一係列有關Neutron的文章。
手裏拎個錘子,認為滿世界都是釘子,這是一種要命的思維邏輯。寫Neutron係列,最初的原因,不是因為需要用它做什麼,而是想要說明它不能做什麼。這對於從事雲計算的人來說,可能根本就不是問題,因為Neutron的適用範圍也恰好在他們的工作範圍之內,沒有逾越半步。
對於那些從事非雲計算行業,卻又與Neutron有著韆絲萬縷的聯係的人來說,這可能也不是問題。但是如果領導與“專傢”太多,這可能就是問題瞭。
然而在寫作的過程中,我逐步放棄瞭想說明“Neutron能做什麼,不能做什麼”的想法,慢慢改變為現在的思路:努力描述Neutron原本是什麼!
本書首先從Linux虛擬網絡知識講起,步步推進,最後深入到Neutron的代碼。當剝開Neutron代碼的麵紗以後,Linux虛擬網絡既是構建Neutron網絡的基礎,也是構建Neutron代碼的基礎。Neutron的代碼寫到最後,不過是調用Linux的命令行而已(也包括調用OVS的命令行)。
這麼說,當然對Neutron不公平,調用命令行隻是Neutron代碼的最後一步,在這之前,Neutron還需知道調用什麼命令行。這不是是否熟練掌握各種命令行的問題,而是能否正確分配邏輯資源的問題。舉個最簡單的例子,為一個端口配置一個IP地址,在調用命令行之前,Neutron需要通過各種機製和算法為這個端口分配一個正確的IP地址。
Neutron不僅需要具備分配邏輯資源的機製,還需要創建相應的虛擬網元(物理資源),並將這些虛擬網元正確地連接和配置,構建成正確的網絡。Neutron所能支持的二、三層網絡特性,不僅體現在它的代碼中,也體現在它的資源模型中,並且以RESTful接口的形式對外提供服務。
如何閱讀本書總體來說,Neutron並不神秘,也不深奧,卻比較龐大。如果你對Neutron的代碼細節比較感興趣,本書會有大量的篇幅進行代碼剖析。如果你僅僅想瞭解Neutron的基本原理,本書的前幾章也正是這個目的,希望能對你有些幫助。
Neutron是一個關於網絡的係統,本書第1章介紹瞭一些背景知識。在閱讀本書之前,讀者首先得具備一定的網絡知識,也正是齣於這樣的目的,第2章介紹瞭Linux的虛擬網絡知識。限於主題和篇幅的原因,本書沒法再過多介紹其他內容。本書假設你對基本的TCP/IP協議、VXLAN、OVS等有一定的瞭解。當然,如果要閱讀代碼剖析那些章節,那麼還需要對Python有一定的瞭解,因為Python的編程語言就是Python。第3章講述瞭Neutron的實現模型。第4章講述的是Neutron的資源模型。第5章講述瞭Neutron的基本架構,以及架構中所涉及的Web機製、通信機製、並發機製等,這些都是Neutron的基本原理。第6章主要講述Neutron如何啓動Web Server,並通過WSGI Pipeline機製調用閤適的 WSGI Application,以及WSGI Application如何巧妙地尋址到正確的Plugin。第7章主要講述Plugin 如何如何處理Neutron的RESTful請求,如何進行邏輯資源分配,如何調用Agent。第8章主要講述Agent如何配置(虛擬)網元,以構建Neutron網絡。
但是無論多麼細節的代碼剖析,也沒法做到將Neutron的每一行代碼都講述到。所以本書在每一個代碼剖析的章節,盡可能地給齣相關的類圖和順序圖。如果你對Neutron代碼還不是很熟悉,筆者強烈建議,你一邊看著代碼,一邊看著本書,兩相對照閱讀,並且自己嘗試著畫齣這些類圖和順序圖,這將起到事半功倍的作用。
Neutron代碼下載的網址是:https://releases.openstack.org/,截至筆者定稿時的最新版本是Ocata。筆者還建議你閱讀這個網址的內容:https://developer.openstack.org/api-ref/networking/v2/index.html,它講述瞭Neutron的RESTful API,是非常重要的參考資料。
緻謝在寫作的過程中,遇到瞭很多難題,幸虧得到陳蒼老師許多熱情而又無私的幫助,我纔能越過一道道坎。陳蒼老師是我的同事,安靜、幽默、智慧。
風河的楊斌先生同樣給予瞭我很多無私的幫助,他糾正瞭我原稿中的很多錯誤。
黃朝義、鬍玉剛兩位先生也很耐心地解答瞭我很多問題。我還嚮Oslo項目的PTL郭先生請教瞭有關Oslo的問題。
OpenStack資深專傢(人稱大師兄)、九州雲CTO龔永生先生犧牲寶貴的國慶中鞦雙節假期,為本書審稿並作序,深感榮幸和不安。
感謝機械工業齣版社華章公司的高婧雅的指導與幫助,我纔能將這一係列文章集結付梓。
這一路走來,我自己受益良多,學習瞭很多知識,認識瞭很多朋友!微信裏,大傢給我留言,跟我交流,給我信心。歡迎大傢與我交流或者指正我的錯誤,可以關注我的微信公眾號“標哥說天下”(bgstx001)。
感謝你的支持、幫助和鼓勵,我纔能堅持到今天!
深入理解OpenStack Neutron epub pdf mobi txt 電子書 下載 2024
深入理解OpenStack Neutron 下載 epub mobi pdf txt 電子書