前言
第一部分 基礎環境篇
第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
· · · · · · (
收起)