基於 YANG 的可編程網絡:用 YANG、NETCONF、RESTCONF 和 gNMI 實現網絡自動化架構 Network Programmability with YANG: The Structure of Network Automation with YANG, NETCONF, RESTCONF, and gNMI

Benoit Claise,Joe Clarke , Jan Lindblad 譯者:閆林//王衛斌//張茂鵬//毛磊//胡捷等

買這商品的人也買了...

商品描述

整個網絡行業正面臨著自動化的壓力,以實現規模化和更快的發展,本書介紹如何利用YANG來釋放網絡自動化的力量,
提供了通用的術語、模型,以及對用例和工具的認識,以便能夠進行有效地交流。
通過提供豐富的背景、案例以及解釋“為什麼”和提供大量動手實踐的機會,
本書旨在為網絡專業人士以及整個行業的發展提供幫助。

目錄大綱

推薦序
譯者序
前言
致謝
作者簡介
技術審校者簡介
1章 網絡管理世界必須改變:
你為什麼要關心這件事1
1.1 導言1
1.2 行業發生了變化:趨勢是什麼4
1.2.1 縮短部署時間4
1.2.2 CLI不再是標準(無法自動化的功能不應存在)5
1.2.3 硬件商品化和解耦7
1.2.4 DevOps時代9
1.2.5 軟件定義網絡11
1.2.6 網絡功能虛擬化12
1.2.7 彈性雲:按需付費13
1.2.8 數據模型驅動的管理14
1.2.9 數據模型驅動的遙測16
1.2.10 基於意圖的網絡17
1.2.11 軟件正在吞噬世界19
1.3 現有網絡管理實踐和相關限制19
1.3.1 CLI:這是API嗎19
1.3.2 SNMP:用於監控但不用於配置21
1.3.3 NetFlow和IPFIX:主要用於流記錄27
1.3.4 syslog:無結構化數據30
1.4 數據模型是自動化的關鍵32
1.4.1 信息模型與數據模型的差異32
1.4.2 用不同的數據模型管理網絡的挑戰33
專家訪談40
與Victor Kuarsing的問答40
與Russ White的問答42
小結43
參考資料44
註釋44
2章 數據模型驅動的管理46
2.1 起因:一套新的要求46
2.2 網絡管理已死,網絡管理萬歲49
2.3 YANG:數據建模語言50
2.4 自動化的關鍵?數據模型52
2.4.1 YANG和運維人員的需求53
2.4.2 良好數據模型的屬性54
2.4.3 不同類型的YANG模塊55
2.4.4 從MIB模塊映YANG對象56
2.5 管理架構57
2.6 數據模型驅動的管理組件58
2.7 編碼(協議綁定和序列化)61
2.7.1 XML62
2.7.2 JSON62
2.7.3 Google protobuf63
2.7.4 CBOR63
2.8 服務器架構:數據存儲64
2.9 協議65
2.9.1 NETCONF65
2.9.2 RESTCONF68
2.9.3 gNMI(gRPC)69
2.9.4 CoMI70
2.10 編程語言70
2.11 遙測71
2.12 使用NETCONF管理網絡72
專家訪談76
與Jürgen Schnwlder的問答76
小結77
參考資料77
註釋78
3章 對YANG的闡釋80
3.1 導言80
3.2 描述數據世界81
3.2.1 準確描述數據84
3.2.2 將數據歸類89
3.3 描述可能的事件95
3.3.1 動作和RPC95
3.3.2 通知98
3.4 區分狀態數據與配置數據99
3.5 約束使事情有意義104
3.5.1 強制性和默認數據107
3.5.2 條件內容108
3.5.3 正確跟隨指針109
3.5.4 不考慮模式節點112
3.6 增擴、擴展和可能的偏離122
3.6.1 擴展YANG126
3.6.2 偏離127
3.7 網絡管理數據存儲架構129
專家訪談132
與Martin Bjrklund的問答132
小結134
參考資料135
4章 對NETCONF、RESTCONF和gNMI的闡釋137
4.1 導言137
4.2 NETCONF138
4.2.1 基本原理138
4.2.2 XML標籤、屬性和命名空間140
4.2.3 RPC機制144
4.2.4 消息框架146
4.2.5 消息概述149
4.2.6 hello消息149
4.2.7 get-config消息151
4.2.8 edit-config消息153
4.2.9 get消息157
4.2.10 RPC和動作160
4.2.11 通知161
4.2.12 更多NETCONF作164
4.2.13 NMDA作get-data和edit-data164
4.3 RESTCONF165
4.3.1 REST原則165
4.3.2 RESTCONF與NETCONF對比166
4.3.3 查找RESTCONF服務器URL168
4.3.4 閱讀和導航RESTCONF資源169
4.3.5 使用RESTCONF創建和更新配置175
4.3.6 動作183
4.3.7 通知184
4.4 OpenConfig和gNMI186
4.4.1 gRPC187
4.4.2 gNMI CapabilityRequest187
4.4.3 gNMI GetRequest188
4.4.4 gNMI SetRequest191
4.4.5 gNMI SubscribeRequest和遙測195
4.4.6 YANG RPC、動作和通知196
專家訪談196
與Kent Watsen的問答196
小結197
參考資料198
5章 對遙測的闡釋200
5.1 導言200
5.2 數據模型驅動的遙測200
5.3 從SNMP轉向遙測202
5.4 遙測的使用案例205
5.5 遙測組件205
5.5.1 架構206
5.5.2 傳輸討論:監控與事件207
5.5.3 訂閱類型:變動與定期208
5.5.4 撥入模式和撥出模式210
5.6 遙測標準機制210
5.6.1 NETCONF事件通知211
5.6.2 IETF YANG訂閱212
5.6.3 IETF YANG Push與OpenConfig:一些歷史215
5.6.4 OpenConfig流式遙測216
專家訪談216
與Ale Clemm的問答216
小結219
參考資料219
註釋220
6章 YANG數據模型在行業中的發展221
6.1 導言221
6.2 起點:IETF221
6.3 在整個行業中擁抱YANG227
6.4 OpenConfig YANG模型231
6.5 需要行業協調234
6.6 互作性測試235
6.7 為特定功能實現一個以上的YANG模型236
專家訪談238
與Carl Moberg的問答238
小結240
參考資料240
註釋240
7章 自動化與數據模型、相關元數據及工具一樣好:面向網絡架構師和運維人員242
7.1 導言242
7.2 了解YANG模塊的結構243
7.3 使用YANG Catalog查找合適的模塊246
7.3.1 YANG Search247
7.3.2 模塊樹248
7.3.3 模塊(元數據)詳細信息249
7.3.4 使用YANG Suite從節點遷移到RPC和腳本252
7.4 與設備交互256
7.4.1 NETCONF工具256
7.4.2 RESTCONF工具274
7.4.3 遙測工具279
7.4.4 商業產品284
專家訪談285
與Einar Nilsen-Nygaard的問答285
小結288
註釋288
8章 自動化與數據模型、相關元數據及工具一樣好:面向模塊作者290
8.1 導言290
8.2 設計模塊290
8.2.1 向他人學習291
8.2.2 編譯和驗證模塊293
8.2.3 測試模塊294
8.2.4 共享模塊的元數據300
8.3 理解模塊的影響302
專家訪談303
與William Lupton的問答303
小結304
註釋305
9章 自動化與數據模型、相關元數據及工具一樣好:面向應用開發人員306
9.1 導言306
9.2 與YANG模塊合作307
9.2.1 集成YANG Catalog元數據307
9.2.2 嵌入pyang310
9.2.3 pyang插件312
9.2.4 利用libyang解析YANG315
9.3 與網絡互動317
9.3.1 使用ncclient的NETCONF317
9.3.2 使用libnetconf2的NETCONF客戶端和服務器321
9.3.3 與RESTCONF服務器交互322
9.4 YANG語言的原生化323
9.4.1 YDK323
9.4.2 pyangbind327
專家訪談330
與Radek Krejí的問答330
小結330
註釋331
10章 使用NETCONF和YANG332
10.1 導言332
10.2 故事情節333
10.3 自上而下的服務模型334
10.4 自下而上的設備模板340
10.5 連接點的服務邏輯342
10.6 在設備上設置NETCONF345
10.7 發現設備上的內容347
10.8 管理服務352
10.9 管理器與設備的同步358
10.10 全網範圍事務362
專家訪談369
與Kristian Larsson的問答369
小結372
11章 YANG模型設計373
11.1 導言373
11.2 建模策略373
11.2.1 入門373
11.2.2 你就是星級將軍374
11.3 YANG建模技巧375
11.3.1 命名模塊375
11.3.2 發布模塊376
11.3.3 選擇YANG標識符377
11.3.4 接受空配置377
11.3.5 使用leafref378
11.3.6 注意XPath特性379
11.3.7 枚舉和其他379
11.3.8 選擇主鍵380
11.3.9 空類型和布爾類型382
11.3.10 重用分組382
11.3.11 偏離標準YANG模塊382
11.3.12 瞬態配置和其他依賴項383
11.3.13 增強YANG模型383
11.3.14 anyml和anydata類型384
11.4 常見的YANG錯誤384
11.4.1 不明確的optional leaf384
11.4.2 缺失範圍385
11.4.3 過度使用字符串385
11.4.4 錯誤的字符串模式386
11.4.5 無效的空配置387
11.4.6 使用約束時出現的誤解388
11.4.7 缺少簡單的約束389
11.4.8 誤入歧途390
11.4.9 斷開連接的多鍵leafref391
11.4.10 一個/任何一個/所有混合在一起394
11.4.11 XPath表達式的性能395
11.5 向後兼容性396
11.5.1 規則與保持相關性397
11.5.2 工具399
專家訪談399
與Andy Bierman的問答399
小結401
參考資料402