ODL技術內幕:架構設計與實現原理

ODL技術內幕:架構設計與實現原理
定價:474
NT $ 474
  • 作者:耿興元
  • 出版社:機械工業出版社
  • 出版日期:2019-09-01
  • 語言:簡體中文
  • ISBN10:7111635094
  • ISBN13:9787111635093
  • 裝訂:平裝 / 256頁 / 16k / 19 x 26 x 1.28 cm / 普通級 / 單色印刷 / 初版
 

內容簡介

這是一本從原始程式碼層面深入剖析ODL的著作,旨在幫助讀者在透徹理解ODL的先進架構、設計思想和實現原理後,能更有高效地進行SDN開發。

作者是的ODL專家,是SDN領域的佈道者,有在通訊類軟體研發和系統設計領域有超過15年的經驗對ODL及其源碼有深入的研究和理解。ODL架構演進極快,核心模組和介面變動頻繁,ODL子專案眾多,功能和介面碎片化嚴重,學習門檻很高,面對數百萬行的原始程式碼更是無從下手。

作者根據自己的經驗,對ODL的核心功能及其原始程式碼(氟版本和氖版本)進行反復提煉、抽絲剝繭,不僅讓讀者理解ODL的系統架構、設計思想、實現原理,而其能讓讀者領略ODL實現源碼中的代碼和設計模式,*終實現讓讀者更高效地使用SDN的目的,掌握SDL的精髓。

全書13章,分為三個部分:

第一部分基礎環境篇(第1-2章)
主要介紹了ODL的核心概念、架構、設計目標、編譯構建環境的搭建、源碼閱讀的方法,以及ODL社區對眾多子專案的管理實踐。


第二部分核心架構篇(第3-10章)
從原始程式碼的角度詳細分析了ODL的基本物件、資料樹、MD-SAL DataStore、MD-SALRPC、MD-SAL Notification、MD-SAL Mount、MD-SAL Cluster Service的工作機制與實現原理;


第三部分公共元件篇(第11-13章)
從原始程式碼角度詳細分析了ODL的AAA、RESTCONF、Blueprint等公共組件的設計、實現與擴展。
 

作者介紹

耿興元
ODL技術專家,目前就職於中興通訊,是作業系統及支撐平臺的軟體專家級工程師,在通訊類軟體研發及系統設計領域已有超過15年的工作經驗。2015~2017年期間,負責基於ODL的商用SDN控制器平臺的設計和研發管理工作。

在ODL領域有多年的研究和實踐經驗,曾與SDNLAB一起創建了開源專案Jaguar(基於ODL的Kubernetes網路解決方案),是該開源專案的主要管理者與貢獻者。在SDNLAB上錄製了ODL的系列課程,深受讀者歡迎。
 

目錄

前言
第一部分 基礎環境篇
第1章 閱讀原始程式碼前的準備  2
1.1 ODL項目介紹  2
1.1.1 ODL框架之爭  3
1.1.2 SAL的演進  3
1.1.3 ODL的子專案及分類  4
1.1.4 ODL專案的管理  6
1.2 搭建ODL編譯構建環境  6
1.2.1 安裝JDK  6
1.2.2 安裝及配置Maven  8
1.3 閱讀和調試ODL原始程式碼  9
1.3.1 ODL項目源碼下載  9
1.3.2 IntelliJ IDEA安裝  10
1.3.3 IntelliJ IDEA調試ODL的項目源碼  11
1.4 ODL設計目標  12
1.5 ODL總體架構  13
1.6 本章小結  15

第2章 ODL專案管理設計詳解  16
2.1 問題的提出  16
2.2 解決思路  17
2.3 實現詳解  20
2.3.1 基礎parent設計  20
2.3.2 模組構建  23
2.3.3 feature組織  24
2.3.4 版本打包  25
2.4 專案範本  26
2.4.1 專案目錄佈局設計  26
2.4.2 ODL範本專案  27
2.5 本章小結  28

第二部分 核心原理篇
第3章 ODL基本物件的設計與實現  30
3.1 QName  30
3.1.1 QName定義  30
3.1.2 QName物件比較  36
3.1.3 QName對象創建  37
3.2 YangInstanceIdentifier  38
3.2.1 Path介面定義  38
3.2.2 YangInstanceIdentifier的類定義  39
3.2.3 YangInstanceIdentifier的比較42
3.2.4 InstanceIdentifier類  44
3.3 NomalizedNode  44
3.3.1 NormalizedNode類的定義  45
3.3.2 NormalizedNode實例的創建48
3.4 本章小結  49

第4章 資料樹的設計與實現  50
4.1 基本概念  50
4.1.1 配置樹與狀態樹  51
4.1.2 標識與定位  51
4.1.3 快照與MVCC  52
4.2 資料樹的設計與實現  52
4.2.1 Tree結構的設計  52
4.2.2 DataTree相關介面定義  55
4.2.3 DataTree的創建  57
4.3 資料樹的讀寫過程  59
4.3.1 快照實現原理  61
4.3.2 資料校驗的實現  61
4.4 MVCC機制與實現  63
4.4.1 版本號變更規則  63
4.4.2 併發控制  65
4.5 本章小結  67

第5章 MD-SAL DataStore介面設計  68
5.1 基本概念  69
5.1.1 事務和事務鏈  70
5.1.2 數據分片  70
5.1.3 三階段提交  71
5.2 DataStore SPI設計  72
5.2.1 DOMStore  73
5.2.2 DOMStoreThreePhase-CommitCohort  75
5.2.3 DOMStoreTreePublisher  76
5.3 DataStore DOM API設計  77
5.3.1 DOMDataBroker  77
5.3.2 DOMDataTreeSharding-Service  78
5.3.3 DOMDataTreeChange-Service  80
5.4 DataStore Binding API設計  82
5.4.1 Binding基本物件介面  82
5.4.2 DataBroker  84
5.4.3 DataTreeChangeService  87
5.5 本章小結  87

第6章 MD-SAL DataStore的實現原理  88
6.1 概述  89
6.1.1 背景知識  89
6.1.2 實現原理  91
6.2 Raft演算法及其實現  92
6.2.1 Raft演算法介紹  93
6.2.2 RaftActor設計與實現  98
6.3 DataStore後端實現詳解  106
6.3.1 Shard的實現  106
6.3.2 ShardManager  110
6.3.3 ShardStrategy及實現  112
6.4 DataStore前端實現詳解  113
6.4.1 DOMStore的實現  113
6.4.2 DOMDataBroker的實現  121
6.4.3 事務鏈實現  124
6.5 Binding DataBroker的實現  125
6.5.1 Adapter設計  125
6.5.2 BindingDOMDataBroker-Adapter的初始化  126
6.6 本章小結  130

第7章 MD-SAL RPC的設計與實現  131
7.1 一個實例  131
7.1.1 RPC的YANG模型定義  131
7.1.2 RPC的生成介面  133
7.1.3 RPC的實現與調用  135
7.2 RPC機制的總體設計  136
7.2.1 Binding介面設計  136
7.2.2 DOM介面設計  137
7.2.3 總體實現流程  139
7.3 RPC機制實現詳解  141
7.3.1 DOMBroker實現詳解  141
7.3.2 BindingBroker實現詳解  144
7.4 Remote RPC實現詳解  149
7.4.1 Gossip協議的實現  150
7.4.2 遠程RPC註冊及調用  152
7.4.3 Actor設計實現總結  154
7.5 本章小結  155

第8章 MD-SAL Notification的設計與實現  156
8.1 一個實例  156
8.1.1 YANG模型定義  156
8.1.2 生成的介面  157
8.1.3 消息發佈  157
8.1.4 消息訂閱  158
8.2 MD-SAL Notification介面設計  158
8.2.1 DOM介面  159
8.2.2 Binding介面  160
8.3 MD-SAL Notification實現剖析  161
8.3.1 DOM層實現詳解  161
8.3.2 Binding適配實現  169
8.4 本章小結  171

第9章 MD-SAL Mount機制與NETCONF  172
9.1 Mount服務介面設計  172
9.1.1 DOM介面  173
9.1.2 Binding介面  174
9.2 Mount機制的實現  175
9.2.1 DOM介面實現  176
9.2.2 NETCONF南向外掛程式的實現  178
9.3 本章小結  186

第10章 MD-SAL Cluster Service  187
10.1 EntityOwnershipService  187
10.1.1 基本概念  187
10.1.2 介面設計  188
10.1.3 實現說明  192
10.2 ClusterSingletonService  195
10.2.1 介面設計  195
10.2.2 實現說明  196
10.3 本章小結  198

第三部分 公共元件篇
第11章 AAA  200
11.1 Shiro框架介紹  201
11.1.1 Shiro是什麼  201
11.1.2 Shiro的架構  202
11.1.3 Shiro核心處理流程  204
11.2 AAA實現原理  210
11.2.1 Shiro配置優化  210
11.2.2 Realm的8個實現  212
11.2.3 Filter的實現  214
11.2.4 加解密服務  216
11.2.5 數位憑證管理  218
11.3 本章小結  219

第12章 RESTCONF  220
12.1 RFC 8040解讀  220
12.1.1 操作  221
12.1.2 消息  222
12.1.3 資源  223
12.2 RESTCONF的實現  226
12.2.1 Jersey框架簡介  226
12.2.2 RESTCONF資源介面定義  228
12.2.3 Wrapper設計模式  231
12.2.4 初始化過程  233
12.2.5 用戶端訪問  235
12.3 本章小結  236

第13章 Blueprint及其擴展  237
13.1 Blueprint  238
13.1.1 基礎知識  238
13.1.2 運行原理  240
13.1.3 命名空間擴展  241
13.2 Blueprint的使用  244
13.3 本章小結  247
 
 

Open Daylight(簡稱ODL)專案是Linux基金會旗下的一個 開源合作專案,致力於推進軟體定義網路(SDN)和網路功能虛擬化(NFV)的發展,目的是尋求以一種更透明的方式促進該領域的創新。該組織由行業領先者建立,旨在制定一個統一、開放的平臺,駕馭合作開發的力量,以驅動產業和生態圈的創新。ODL是針對企業、服務提供者、資料中心、WAN的模組化的開放的SDN平臺,其基於OSGi的微服務架構讓使用者能夠按需部署網路服務、應用、協定和外掛程式。ODL平臺基本每半年發佈一次大版本,從2013年開始,項目經曆了多個版本的反覆運算已趨於成熟和穩定,幾乎成為網路創新應用場景的預設選擇。

ODL把被控制的網路看作是一個消息驅動的巨大狀態機,因此該平臺核心架構即其模型驅動的狀態保存機制與消息轉發機制,稱為模型驅動的業務抽象層(MD-SAL)。該架構的魅力源於其架構的前瞻性、可塑性和長期演進能力。

ODL 在架構設計上的先進性和靈活性,使其成為SDN領域最有影響力的開源平臺。靈活的外掛程式機制與在規模上的彈性可擴展,使ODL可應用於智慧城市和其他IoT應用等涉及多種設備類型以及多種網路技術的場景,包括光交換、IP/MPLS、LTE或5G無線網路。ODL對這些技術的可程式設計性可以做到設備無關。如今,ODL在各場景的網路創新中的應用越來越廣泛,利用和貢獻ODL項目的中國公司數量也在不斷增長,包括華為、聯想、瑞斯康達、騰訊、Zen player、中興、阿裡巴巴和百度等。2017年3月,中興通訊成為國內首家ODL白金會員。

為什麼寫這本書
ODL不僅僅是一個SDN控制器平臺,它還是一個優秀的模型驅動架構實現,以及一個典型的分散式系統設計範例。通過ODL,我們能學習的不僅僅是SDN,也能學到其通用的程式設計技術及軟體架構設計,其分散式系統設計實現也非常值得我們借鑒。

但是,ODL作為一個開源項目,也有令人詬病的地方,主要有兩點:一是雖然ODL架構設計比較先進,代碼實現也比較優秀,但ODL缺乏較為系統性的文檔,而且僅有的一些文檔更新也較為滯後,內容陳舊,容易誤導新手;再加上語言和文化背景的差異,足以讓大量國內ODL初級玩家望而卻步。二是ODL的架構演進非常快,核心模組和介面變動頻繁,再加上ODL子項目眾多,導致ODL功能和介面碎片化嚴重,開發者一開始面對幾百萬行代碼,確實有點“老虎吃天,無從下口”的感覺。

我作為一個一直從事軟體研發工作的工程師,深知學習與應用ODL的不易,所以我想是不是可以把我之前學習ODL的筆記—對ODL源碼 的分析和對ODL架構設計的理解整理成書,進而幫助大家深入理解ODL設計原理和思想,把握其核心源碼實現,以不變應萬變。這對大家基於ODL平臺進行業 務研發及應用都能有所裨益。

本書的讀者對象
本書適合所有有志于解決現有網路問題並促進網路變革的通信、網路及電腦行業相關從業者,特別是希望掌握軟體定義網路熱門技術的開發人員,還適合具有一定工作經驗、關注網路熱門技術並希望查漏補缺繼續成長的程式師,以及具備一定軟體發展能力的網路技術領域從業者。

具備一定的Java語言開發基礎,瞭解網路基礎知識及分散式系統基礎知識將有助於讀者更好地理解本書中的內容。

本書的主要內容
對于廣大有志於投身網路變革大潮的從業者而言,ODL依然具有很高的門檻—100多個子項目,幾百萬行原始程式碼,OSGi、Maven、Akka、YANG等背景知識,都成了相關從業者應用ODL平臺的“攔路虎”。面對這些障礙,我們需要抓住ODL平臺框架的本質與核心—MD-SAL,只有真正理解ODL的這個核心框架設計,理解MD-SAL的核心源碼實現及其設計思想,才能基於ODL進行高效的SDN開發實戰,就如同習武練功,招式是外殼,內功心法是核心,二者要相輔相成。本書結合作者15年的通信軟體研發從業經驗,從ODL核心框架MD-SAL的實現源碼入手進行解構,剖析代碼中的設計模式,總結ODL中的軟體架構設計思想。本書可謂一本重在講授內功心法,並指導內功和招式結合的“武功秘笈”。

本書能幫助入門級程式師深入、直觀地理解ODL技術原 理,構建精准的知識框架;幫助有一定工作經驗的程式師填補知識漏洞,打通知識體系;説明正在應用ODL構建商用產品和應用的同仁們客觀認識並分析ODL中 現存的問題。本書還分享了作者在基於ODL進行商用開發時總結的若干實戰經驗。

勘誤與支持
本書主要內容來源於本人研究學習ODL源碼的筆 記和在應用ODL開發專案過程中的實踐經驗。我們知道ODL社區非常活躍,版本發佈頻繁,架構調整及源碼變動也比較大,這不可避免地會導致書中引用的源代 碼與ODL社區最新原始程式碼有一定出入,請讀者在閱讀過程中務必注意。同時,由於作者寫作和認知水準有限,問題在所難免,歡迎讀者朋友們通過電子郵箱 [email protected]進行指正。

致謝
ODL官方社區的原始程式碼是創作本書的原始素材,因此我首先感謝 ODL官方社區。

其次,我要感謝未來網路學院給予我與大家分享ODL技術的平臺,以及在開源專案Jaguar的成立、運作管理和基礎設施資源上的支援。

最後,感謝中興通訊IT學院的閆林老師的鼓勵和巨大幫助。

耿興元
2019年
網路書店 類別 折扣 價格
  1. 新書
    $474