基本介紹
- 中文名:SDN環境部署與OpenDaylight開發入門
- 作者:程麗明
- 出版社:清華大學出版社
- 出版時間:2018年3月
- 定價:128 元
- ISBN:9787302493471
內容簡介,圖書目錄,
內容簡介
本書主要介紹SDN的基礎原理,包括SDN的定義、架構、套用,涵蓋SDN主流控制器的基礎知識,包括概念、架構、主要模組說明;介紹虛擬交換機OVS、SDN仿真環境、SDN主流控制器的安裝指南、操作指南、開發環境準備;介紹OpenDaylight的MD-SAL開發流程,以示例詳解的方式使用YANG建模語言和Java語言進行MD-SAL相關開發;介紹使用OpenDaylight北向API接口進行北向開發的過程。書中利用大量的具體示例和實際案例來說明OpenDaylight的開發步驟,讀者在閱讀學習後既能夠掌握基本的開發流程,又能夠理解其框架原理。
圖書目錄
第一篇 理論篇——SDN概述、OpenDaylight簡介、Controller項目總述
第1章 什麼是SDN 3
1.1 SDN的誕生 3
1.2 SDN的標準及組織機構 5
1.3 SDN的一些典型套用場景 6
1.3.1 SDN在數據中心的套用:Cisco的ACI和VMware的NSX 7
1.3.2 SDN在廣域網的套用(SD-WAN):谷歌的B4 9
1.3.3 SDN與安全——一種基於SDN的雲計算安全保護系統及方法 10
1.4 SDN的一些重要學習資源 12
1.5 本章總結 15
第2章 SDN架構簡析 16
2.1 SDN架構總述 17
2.2 SDN控制器 18
2.3 SDN交換機 20
2.4 南向接口協定 21
2.4.1 OpenFlow 1.0 22
2.4.2 OpenFlow 1.3 27
2.5 北向接口協定 32
2.6 本章總結 32
第3章 現有SDN交換機簡介 33
3.1 OVS簡介 33
3.1.1 認識OVS 33
3.1.2 OVS常用的命令 35
3.1.3 OVS的學習參考 49
3.2 SDN硬體交換機簡介 50
3.2.1 思科 50
3.2.2 博科 51
3.2.3 華為 51
3.2.4 瞻博網路 52
3.2.5 NEC 52
3.2.6 戴爾 53
3.2.7 Arista 53
3.2.8 新華三 54
3.2.9 銳捷網路 54
3.2.10 xNET網銳科技 55
3.2.11 盛科網路 55
3.3 本章總結 56
第4章 現有SDN控制器簡述 57
4.1 OpenDaylight控制器 58
4.2 ONOS控制器 59
4.3 Floodlight控制器 63
4.4 Ryu控制器 65
4.5 思科的APIC控制器和Open SDN控制器 66
4.5.1 思科APIC控制器 66
4.5.2 思科Open SDN控制器 67
4.5.3 思科SDN控制器的學習參考資源 67
4.6 OpenContrail控制器 67
4.7 NOX控制器 69
4.8 POX控制器 70
4.9 Beacon控制器 70
4.10 Big Network控制器 71
4.11 博科的Brocade SDN控制器 72
4.12 Maestro控制器 73
4.13 IRIS控制器 74
4.14 Extreme公司的OneController控制器 75
4.15 本章總結 76
第5章 OpenDaylight綜述 77
5.1 OpenDaylight項目介紹 77
5.2 OpenDaylight版本介紹 80
5.2.1 氫版本簡介 80
5.2.2 氦版本簡介 82
5.2.3 鋰版本簡介 83
5.2.4 鈹版本簡介 85
5.2.5 硼版本簡介 85
5.3 OpenDaylight的子項目簡介 89
5.3.1 子項目AAA(認證、授權、審計項目)簡介 93
5.3.2 子項目Federation(聯合體項目)簡介 94
5.3.3 子項目Infrastructure Utilities(基礎設施項目)簡介 94
5.3.4 子項目MD-SAL(模組驅動項目)簡介 95
5.3.5 子項目ODL Root Parent(父項目)簡介 97
5.3.6 子項目OpenDaylight Controller(控制器項目)簡介 97
5.3.7 子項目YANG Tools(YANG工具項目)簡介 98
5.3.8 子項目BGP LS PCEP(BGP和PCEP項目)簡介 99
5.3.9 NETCONF(NETCONF項目)子項目簡介 100
5.3.10 子項目ODL Lisp Flow Mapping(LISP流映射項目)簡介 100
5.3.11 子項目ODL OpenFlow Plugin(OpenFlow外掛程式項目)簡介 101
5.3.12 子項目OpenFlow Protocol Library(OpenFlow協定庫項目)簡介 101
5.3.13 子項目OVSDB Integration(OVSDB集成項目)簡介 101
5.3.14 子項目USC(統一安全通道項目)簡介 101
5.3.15 子項目FaaS(網路構造即服務項目)簡介 102
5.3.16 子項目NeutronNorthbound(Neutron北向項目)簡介 102
5.3.17 子項目ALTO(套用層流量最佳化項目)簡介 103
5.3.18 子項目CAPWAP(無線接入點的控制和提供)簡介 103
5.3.19 子項目Controller Core Functionality Tutorials(控制器核心功能嚮導項目)簡介 104
5.3.20 子項目Controller Shield(控制器盾項目)簡介 104
5.3.21 子項目DIDM(設備認證和驅動管理項目)簡介 104
5.3.22 子項目Group Based Policy(GBP)/Project Facts(GBP項目)簡介 105
5.3.23 子項目L2 Switch(L2層交換機項目)簡介 106
5.3.24 子項目LACP(連結聚合控制協定項目)簡介 106
5.3.25 子項目OF-CONFIG(OF-CONFIG項目)簡介 106
5.3.26 子項目OpenDaylight DLUX(ODL的DLUX項目)簡介 107
5.3.27 子項目Service Function Chaining(服務功能鏈項目)簡介 107
5.3.28 子項目VTN(VTN項目)簡介 108
5.4 OpenDaylight學習參考 108
5.5 本章總結 109
第6章 OpenDaylight的Controller項目綜述 110
6.1 Controller簡介 110
6.1.1 OpenDaylight項目的控制器能滿足當今網路發展的需求 110
6.1.2 OpenDaylight項目的控制器及技術關鍵組成介紹 111
6.2 Controller架構 113
6.3 Controller項目的服務抽象層SAL 114
6.3.1 MD-SAL 119
6.3.2 AD-SAL 120
6.4 Controller項目的學習參考 121
6.5 本章總結 121
第二篇 實操篇——控制器的安裝指南、操作指南、開發環境準備
第7章 SDN底層架構的搭建指南 124
7.1 OVS安裝指南 125
7.1.1 使用系統內置命令直接安裝OVS 125
7.1.2 下載包並手動安裝OVS 126
7.2 仿真環境Mininet安裝指南 129
7.2.1 Mininet的介紹 129
7.2.2 下載Mininet虛擬機檔案進行安裝 131
7.2.3 在本地下載原始碼以安裝Mininet 133
7.2.4 使用包安裝Mininet 135
7.2.5 Mininet的升級 136
7.2.6 升級Mininet的OVS版本 137
7.2.7 Mininet常用命令 140
7.3 Xen環境部署SDN網路的安裝指南 147
7.3.1 安裝Xen 147
7.3.2 安裝OVS 149
7.3.3 創建虛擬機 151
7.3.4 對虛擬機檔案進行修改 151
7.3.5 啟動虛擬機 153
7.4 KVM環境部署SDN網路的安裝指南 153
7.4.1 安裝KVM 153
7.4.2 安裝OVS 154
7.4.3 在KVM上進行相關的配置 156
7.4.4 創建虛擬機並將其連線到OVS網橋上 157
7.5 OpenStack環境部署SDN網路的安裝指南 157
7.5.1 在現有的OpenStack的基礎上安裝OpenDaylight 158
7.5.2 使用DevStack以同時安裝OpenStack和OpenDaylight 164
7.6 硬體環境部署SDN網路的安裝指南 165
7.6.1 配置硬體交換機 165
7.6.2 配置硬體交換機所連線的控制器 166
7.7 本章總結 167
第8章 控制器OpenDaylight安裝指南、操作指南和開發環境準備 169
8.1 Controller項目的源碼安裝指南 169
8.1.1 基礎安裝環境要求 170
8.1.2 項目編譯和運行的軟體環境要求 170
8.1.3 下載Controller項目的源碼 173
8.1.4 編譯Controller子項目的源碼 174
8.1.5 Controller項目更新 176
8.1.6 啟動運行Controller項目 176
8.1.7 安裝參考 177
8.2 Controller項目的快速安裝指南 177
8.3 OpenDaylight的Controller項目的開發環境準備 179
8.3.1 設定Gerrit賬戶 179
8.3.2 Eclipse的安裝和設定 183
8.3.3 參考連結 184
8.4 OpenDaylight的Controller項目的使用指南 185
8.4.1 使用Controller和Mininet搭建一個簡單的SDN環境 185
8.4.2 控制器OpenDaylight之Controller控制台界面介紹 186
8.4.3 通過Postman下發、刪除、更新流表的操作 189
8.4.4 相關參考 200
8.5 OpenDaylight的通用項目源碼安裝指南 200
8.5.1 下載OpenDaylight子項目的源碼 201
8.5.2 編譯OpenDaylight子項目的源碼 202
8.5.3 編譯OpenDaylight子項目更新 203
8.5.4 啟動運行OpenDaylight子項目 203
8.5.5 安裝參考 204
8.6 OpenDaylight的通用項目快速安裝指南 204
8.7 OpenDaylight的通用開發環境準備 206
8.8 控制器OpenDaylight的學習參考 206
8.9 本章總結 206
第9章 控制器ONOS安裝指南 208
9.1 控制器ONOS簡介 208
9.1.1 ONOS簡述 208
9.1.2 ONOS的使命 210
9.1.3 ONOS創建組織簡介 211
9.2 控制器ONOS源碼安裝指南 212
9.2.1 安裝前提環境的準備 212
9.2.2 ONOS源碼的下載和安裝 216
9.2.3 在本地的開發機器上運行控制器ONOS 219
9.2.4 安裝參考 220
9.3 控制器ONOS下載包的安裝指南 221
9.4 控制器ONOS通過下載虛擬機進行部署的安裝指南 222
9.5 控制器ONOS的使用指南 225
9.5.1 控制器ONOS的控制台界面介紹 225
9.5.2 使用ONOS和Mininet搭建一個簡單的SDN環境 227
9.6 控制器ONOS的學習參考 228
9.7 本章總結 229
第10章 控制器Floodlight安裝指南 230
10.1 控制器Floodlight源碼安裝指南 230
10.1.1 安裝前提環境的準備 230
10.1.2 安裝Floodlight 231
10.1.3 Floodlight的更新升級 231
10.2 控制器Floodlight通過下載虛擬機進行部署的安裝指南 232
10.3 控制器Floodlight的使用指南 233
10.3.1 控制器Floodlight的常用命令介紹 233
10.3.2 控制器Floodlight的啟動 235
10.3.3 控制器Floodlight的界面介紹 237
10.3.4 使用Floodlight和Mininet搭建一個簡單的SDN環境 240
10.3.5 使用Floodlight和硬體交換機連線以搭建一個簡單的SDN環境 245
10.4 控制器Floodlight的學習參考 245
10.5 本章總結 246
第11章 控制器Ryu安裝指南 247
11.1 控制器Ryu源碼安裝指南 247
11.1.1 安裝前提環境的準備 247
11.1.2 安裝Ryu 248
11.1.3 安裝參考 248
11.2 使用系統內置命令直接安裝控制器的安裝指南 249
11.2.1 安裝前提環境的準備 249
11.2.2 使用系統內置命令直接安裝Ryu 249
11.2.3 安裝參考 249
11.3 控制器Ryu通過下載虛擬機進行部署的安裝指南 249
11.4 控制器Ryu連線Mininet的實驗 250
11.4.1 實驗環境設計 250
11.4.2 控制器Ryu的啟動 251
11.4.3 啟動Mininet創建仿真網路 251
11.5 控制器Ryu的學習參考 254
11.6 本章總結 254
第三篇 實操篇——OpenDaylight之MD-SAL開發指南
第12章 MD-SAL開發的一些必備知識 256
12.1 OSGi 257
12.2 Karaf 259
12.3 Maven 260
12.3.1 Maven的安裝和配置 261
12.3.2 Maven常用的命令 261
12.3.3 POM及pom.xml檔案的簡要介紹 263
12.3.4 Maven項目的配置檔案settings.xml介紹 283
12.3.5 Maven的學習參考 291
12.4 MD-SAL 291
12.4.1 MD-SAL的基本概念 292
12.4.2 MD-SAL的訊息類型 292
12.4.3 MD-SAL的數據事務 293
12.4.4 MD-SAL的RPC路由 297
12.4.5 OpenDaylight控制器MD-SAL:RESTCONF 299
12.4.6 WebSocket變化事件通知訂閱 300
12.4.7 配置子系統 302
12.4.8 MD-SAL的學習參考 305
12.5 YANG 305
12.5.1 YANG的重要術語說明 307
12.5.2 YANG的語法規則 308
12.5.3 YANG的聲明介紹 309
12.5.4 YANG Java Binding:映射規則 345
12.5.5 YANG的學習參考 363
12.6 本章總結 364
第13章 從簡單的Hello World開始 366
13.1 項目開發環境準備 366
13.2 使用Maven原型opendaylight-startup-archetype 創建項目 367
13.3 實現Hello World功能 374
13.3.1 在API下編寫YANG模型 374
13.3.2 在impl下寫實現功能代碼——實現HelloService接口 375
13.3.3 註冊RPC 376
13.4 項目hello的測試 378
13.4.1 使用HTTP協定通過API瀏覽器進行測試 379
13.4.2 使用OpenDaylight自帶的YANG UI工具進行測試 380
13.4.3 使用REST客戶端工具Postman進行測試 382
13.4.4 使用REST客戶端curl命令行工具進行測試 382
13.5 本章總結 384
第14章 創建一個簡單的項目:myproject 385
14.1 創建項目 385
14.1.1 使用Maven原型創建項目 385
14.1.2 編譯項目 387
14.1.3 將項目導入IDE中 387
14.2 項目創建的關鍵和檔案介紹 388
14.2.1 子項目myproject-api介紹 390
14.2.2 子項目myproject-artifacts介紹 391
14.2.3 子項目myproject-features介紹 392
14.2.4 子項目myproject-impl介紹 394
14.2.5 子項目myproject-it介紹 395
14.2.6 子項目myproject-karaf介紹 395
14.3 YANG常用的定義及其自動轉化的Java代碼 396
14.3.1 identity聲明實例及其生成的Java檔案 396
14.3.2 container聲明實例及其生成的Java檔案 399
14.3.3 typedef聲明實例及其生成的Java檔案 412
14.3.4 leaf聲明實例及其生成的Java檔案 415
14.3.5 leaf-list聲明實例及其生成的Java檔案 419
14.3.6 list聲明實例及其生成的Java檔案 423
14.3.7 choice聲明和case聲明實例及它們生成的Java檔案 437
14.3.8 grouping聲明實例及其生成的Java檔案 450
14.3.9 uses聲明實例及其生成的Java檔案 454
14.3.10 augment聲明實例及其生成的Java檔案 464
14.3.11 YANG創建模型的一些實驗 475
14.4 本章總結 481
第15章 RPC的開發 482
15.1 RPC開發過程的簡要說明 482
15.2 RPC的YANG檔案定義 483
15.2.1 RPC的YANG檔案示例 483
15.2.2 RPC的YANG檔案映射的包和Java檔案 487
15.2.3 運行測試 517
15.3 RPC的實現 519
15.4 註冊RPC並處理相應的關閉工作 526
15.4.1 MyprojectProvider.java的初始代碼 526
15.4.2 在MyprojectProvider類中完成註冊工作 527
15.4.3 編譯 528
15.5 項目測試 528
15.5.1 啟動myproject項目測試 528
15.5.2 my-rpc0功能測試 529
15.5.3 my-rpc1功能測試 530
15.5.4 my-rpc2功能測試 531
15.5.5 my-rpc3功能測試 532
15.5.6 my-rpc4功能測試 533
15.6 本章總結 535
第16章 DataStore相關的開發 536
16.1 DataStore相關開發過程的簡要說明 536
16.1.1 使用DataBroker實現對DataStore的操作 537
16.1.2 完成Data Change事件的實現 539
16.2 利用DataBroker實現對DataStore的操作 540
16.2.1 實現對DataStore的異步讀寫操作 540
16.2.2 傳遞DataBroker參數 543
16.2.3 測試驗證 544
16.3 Data Change事件的實現 546
16.3.1 實現DataChangeListener接口完成onDataChange函式 546
16.3.2 將數據樹變動的監聽註冊到MD-SAL 547
16.3.3 測試驗證 548
16.4 本章總結 550
第17章 Notification的開發 551
17.1 Notification開發過程的簡要說明 551
17.1.1 通知提供的實現 552
17.1.2 通知接收處理的實現 552
17.2 在Yang Model中實現定義 553
17.2.1 notification的YANG檔案示例 553
17.2.2 notification的YANG檔案映射的包和Java檔案 555
17.3 通知提供的實現 577
17.3.1 實現通知的提供 577
17.3.2 註冊提供通知並傳遞NotificationProviderService參數 579
17.4 通知接收處理的實現 580
17.4.1 實現通知的接收 580
17.4.2 註冊接收通知 584
17.5 項目測試 584
17.6 本章總結 587
第18章 使用Eclipse進行項目開發的介紹 588
18.1 使用Eclipse創建項目 588
18.2 使用Eclipse導入項目 594
18.3 使用Eclipse編輯項目 598
18.3.1 使用Eclipse編輯YANG檔案 598
18.3.2 使用Eclipse編輯其他普通檔案 600
18.3.3 在Eclipse工具之外對項目進行修改後的處理 600
18.4 使用Eclipse調試運行項目 601
18.4.1 使用Eclipse調試在其中編輯的項目 601
18.4.2 使用其他工具調試在Eclipse中編輯的項目 607
18.5 一些可能出現的錯誤及其解決方法 609
18.5.1 新建項目中出現mavenarchiver相關錯誤及解決方法 609
18.5.2 Maven的Lifecycle Mapping相關問題的解決方法 611
18.5.3 項目導入Eclipse後無法顯示的解決方案 616
18.4.4 其他的一些錯誤和解決方法 617
18.6 本章總結 618
第四篇 實操篇——OpenDaylight之北向開發指南
第19章 OpenDaylight北向開發的基礎知識 620
19.1 RestConf協定簡介 621
19.1.1 RestConf的HTTP方法 623
19.1.2 RestConf的工作原理 625
19.2 NetConf協定簡介 627
19.2.1 NetConf的協定層 627
19.2.2 NetConf的內容層 627
19.2.3 NetConf的操作層 627
19.2.4 NetConf的訊息層 628
19.2.5 NetConf的安全傳輸層 628
19.2.6 NetConf的參考資料 629
19.3 OpenDaylight主要的北向接口 630
19.4 北向開發的官方參考資料 631
19.5 本章總結 631
第20章 利用Java實現 OpenDaylight北向下發流表的功能 632
20.1 OpenDaylight北向下發流表開發的基礎依據 632
20.1.1 模組opendaylight-action-types介紹 632
20.1.2 模組opendaylight-match-types介紹 639
20.2 獲取流表的功能實現 646
20.2.1 代碼展示 646
20.2.2 實驗驗證 648
20.3 添加流表的功能實現 652
20.3.1 代碼展示 652
20.3.2 實驗驗證 662
20.4 刪除流表的功能實現 666
20.4.1 代碼展示 666
20.4.2 實驗驗證 668
20.5 本章總結 670
第21章 使用OpenDaylight北向接口的通用套用 671
21.1 獲取北向接口的信息並進行開發 671
21.2 使用API進行北向編程 674
21.3 本章總結 676
參考資料 677